From d0ccacecc2a3ae2ec656f3a01918128836cd8e39 Mon Sep 17 00:00:00 2001 From: Richard Fennell Date: Thu, 1 Apr 2021 17:48:31 +0100 Subject: [PATCH 1/8] Swapped back too NCC packaging as dependancy issue resolved --- node_modules/.bin/atob | 15 - node_modules/.bin/atob.cmd | 17 - node_modules/.bin/atob.ps1 | 18 - node_modules/.bin/handlebars | 15 - node_modules/.bin/handlebars.cmd | 17 - node_modules/.bin/handlebars.ps1 | 18 - node_modules/.bin/remarkable | 15 - node_modules/.bin/remarkable.cmd | 17 - node_modules/.bin/remarkable.ps1 | 18 - node_modules/.bin/uglifyjs | 15 - node_modules/.bin/uglifyjs.cmd | 17 - node_modules/.bin/uglifyjs.ps1 | 18 - node_modules/.package-lock.json | 2525 - node_modules/@actions/core/LICENSE.md | 9 - node_modules/@actions/core/README.md | 147 - node_modules/@actions/core/lib/command.d.ts | 16 - node_modules/@actions/core/lib/command.js | 79 - node_modules/@actions/core/lib/command.js.map | 1 - node_modules/@actions/core/lib/core.d.ts | 122 - node_modules/@actions/core/lib/core.js | 238 - node_modules/@actions/core/lib/core.js.map | 1 - .../@actions/core/lib/file-command.d.ts | 1 - .../@actions/core/lib/file-command.js | 29 - .../@actions/core/lib/file-command.js.map | 1 - node_modules/@actions/core/lib/utils.d.ts | 5 - node_modules/@actions/core/lib/utils.js | 19 - node_modules/@actions/core/lib/utils.js.map | 1 - node_modules/@actions/core/package.json | 70 - node_modules/@actions/github/README.md | 97 - node_modules/@actions/github/lib/context.d.ts | 29 - node_modules/@actions/github/lib/context.js | 50 - .../@actions/github/lib/context.js.map | 1 - node_modules/@actions/github/lib/github.d.ts | 11 - node_modules/@actions/github/lib/github.js | 36 - .../@actions/github/lib/github.js.map | 1 - .../@actions/github/lib/interfaces.d.ts | 40 - .../@actions/github/lib/interfaces.js | 4 - .../@actions/github/lib/interfaces.js.map | 1 - .../@actions/github/lib/internal/utils.d.ts | 6 - .../@actions/github/lib/internal/utils.js | 43 - .../@actions/github/lib/internal/utils.js.map | 1 - node_modules/@actions/github/lib/utils.d.ts | 21 - node_modules/@actions/github/lib/utils.js | 54 - node_modules/@actions/github/lib/utils.js.map | 1 - node_modules/@actions/github/package.json | 77 - node_modules/@actions/http-client/LICENSE | 21 - node_modules/@actions/http-client/README.md | 79 - node_modules/@actions/http-client/RELEASES.md | 22 - node_modules/@actions/http-client/actions.png | Bin 33889 -> 0 bytes node_modules/@actions/http-client/auth.d.ts | 23 - node_modules/@actions/http-client/auth.js | 58 - node_modules/@actions/http-client/index.d.ts | 124 - node_modules/@actions/http-client/index.js | 535 - .../@actions/http-client/interfaces.d.ts | 49 - .../@actions/http-client/interfaces.js | 2 - .../@actions/http-client/package.json | 67 - node_modules/@actions/http-client/proxy.d.ts | 2 - node_modules/@actions/http-client/proxy.js | 57 - node_modules/@octokit/auth-token/LICENSE | 21 - node_modules/@octokit/auth-token/README.md | 271 - .../@octokit/auth-token/dist-node/index.js | 49 - .../auth-token/dist-node/index.js.map | 1 - .../@octokit/auth-token/dist-src/auth.js | 12 - .../@octokit/auth-token/dist-src/hook.js | 6 - .../@octokit/auth-token/dist-src/index.js | 14 - .../@octokit/auth-token/dist-src/types.js | 0 .../dist-src/with-authorization-prefix.js | 11 - .../@octokit/auth-token/dist-types/auth.d.ts | 2 - .../@octokit/auth-token/dist-types/hook.d.ts | 2 - .../@octokit/auth-token/dist-types/index.d.ts | 7 - .../@octokit/auth-token/dist-types/types.d.ts | 25 - .../dist-types/with-authorization-prefix.d.ts | 6 - .../@octokit/auth-token/dist-web/index.js | 46 - .../@octokit/auth-token/dist-web/index.js.map | 1 - node_modules/@octokit/auth-token/package.json | 77 - node_modules/@octokit/core/LICENSE | 21 - node_modules/@octokit/core/README.md | 438 - node_modules/@octokit/core/dist-node/index.js | 174 - .../@octokit/core/dist-node/index.js.map | 1 - node_modules/@octokit/core/dist-src/index.js | 124 - node_modules/@octokit/core/dist-src/types.js | 1 - .../@octokit/core/dist-src/version.js | 1 - .../@octokit/core/dist-types/index.d.ts | 40 - .../@octokit/core/dist-types/types.d.ts | 31 - .../@octokit/core/dist-types/version.d.ts | 1 - node_modules/@octokit/core/dist-web/index.js | 129 - .../@octokit/core/dist-web/index.js.map | 1 - node_modules/@octokit/core/package.json | 90 - node_modules/@octokit/endpoint/LICENSE | 21 - node_modules/@octokit/endpoint/README.md | 421 - .../@octokit/endpoint/dist-node/index.js | 390 - .../@octokit/endpoint/dist-node/index.js.map | 1 - .../@octokit/endpoint/dist-src/defaults.js | 17 - .../dist-src/endpoint-with-defaults.js | 5 - .../@octokit/endpoint/dist-src/index.js | 3 - .../@octokit/endpoint/dist-src/merge.js | 26 - .../@octokit/endpoint/dist-src/parse.js | 81 - .../dist-src/util/add-query-parameters.js | 17 - .../util/extract-url-variable-names.js | 11 - .../endpoint/dist-src/util/lowercase-keys.js | 9 - .../endpoint/dist-src/util/merge-deep.js | 16 - .../@octokit/endpoint/dist-src/util/omit.js | 8 - .../util/remove-undefined-properties.js | 8 - .../endpoint/dist-src/util/url-template.js | 164 - .../@octokit/endpoint/dist-src/version.js | 1 - .../endpoint/dist-src/with-defaults.js | 13 - .../endpoint/dist-types/defaults.d.ts | 2 - .../dist-types/endpoint-with-defaults.d.ts | 3 - .../@octokit/endpoint/dist-types/index.d.ts | 1 - .../@octokit/endpoint/dist-types/merge.d.ts | 2 - .../@octokit/endpoint/dist-types/parse.d.ts | 2 - .../dist-types/util/add-query-parameters.d.ts | 4 - .../util/extract-url-variable-names.d.ts | 1 - .../dist-types/util/lowercase-keys.d.ts | 5 - .../endpoint/dist-types/util/merge-deep.d.ts | 1 - .../endpoint/dist-types/util/omit.d.ts | 5 - .../util/remove-undefined-properties.d.ts | 1 - .../dist-types/util/url-template.d.ts | 3 - .../@octokit/endpoint/dist-types/version.d.ts | 1 - .../endpoint/dist-types/with-defaults.d.ts | 2 - .../@octokit/endpoint/dist-web/index.js | 381 - .../@octokit/endpoint/dist-web/index.js.map | 1 - .../node_modules/is-plain-object/LICENSE | 21 - .../node_modules/is-plain-object/README.md | 125 - .../is-plain-object/dist/is-plain-object.js | 38 - .../is-plain-object/dist/is-plain-object.mjs | 34 - .../is-plain-object/is-plain-object.d.ts | 1 - .../node_modules/is-plain-object/package.json | 130 - node_modules/@octokit/endpoint/package.json | 77 - node_modules/@octokit/graphql/LICENSE | 21 - node_modules/@octokit/graphql/README.md | 384 - .../@octokit/graphql/dist-node/index.js | 108 - .../@octokit/graphql/dist-node/index.js.map | 1 - .../@octokit/graphql/dist-src/error.js | 15 - .../@octokit/graphql/dist-src/graphql.js | 47 - .../@octokit/graphql/dist-src/index.js | 17 - .../@octokit/graphql/dist-src/types.js | 0 .../@octokit/graphql/dist-src/version.js | 1 - .../graphql/dist-src/with-defaults.js | 12 - .../@octokit/graphql/dist-types/error.d.ts | 9 - .../@octokit/graphql/dist-types/graphql.d.ts | 3 - .../@octokit/graphql/dist-types/index.d.ts | 3 - .../@octokit/graphql/dist-types/types.d.ts | 50 - .../@octokit/graphql/dist-types/version.d.ts | 1 - .../graphql/dist-types/with-defaults.d.ts | 3 - .../@octokit/graphql/dist-web/index.js | 95 - .../@octokit/graphql/dist-web/index.js.map | 1 - node_modules/@octokit/graphql/package.json | 80 - .../workflows/release-notification.yml | 18 - .../.github/workflows/release.yml | 21 - .../.github/workflows/update.yml | 82 - .../@octokit/openapi-types/CODE_OF_CONDUCT.md | 74 - node_modules/@octokit/openapi-types/LICENSE | 7 - node_modules/@octokit/openapi-types/README.md | 9 - .../openapi-types/cache/openapi-schema.json | 66129 ---------------- .../@octokit/openapi-types/generated/types.ts | 27901 ------- .../@octokit/openapi-types/package.json | 64 - .../openapi-types/scripts/download.js | 35 - .../openapi-types/scripts/update-package.js | 15 - .../@octokit/plugin-paginate-rest/LICENSE | 7 - .../@octokit/plugin-paginate-rest/README.md | 192 - .../plugin-paginate-rest/dist-node/index.js | 132 - .../dist-node/index.js.map | 1 - .../dist-src/compose-paginate.js | 5 - .../generated/paginating-endpoints.js | 1 - .../plugin-paginate-rest/dist-src/index.js | 16 - .../plugin-paginate-rest/dist-src/iterator.js | 25 - .../normalize-paginated-list-response.js | 40 - .../plugin-paginate-rest/dist-src/paginate.js | 24 - .../plugin-paginate-rest/dist-src/types.js | 1 - .../plugin-paginate-rest/dist-src/version.js | 1 - .../dist-types/compose-paginate.d.ts | 2 - .../generated/paginating-endpoints.d.ts | 1380 - .../dist-types/index.d.ts | 14 - .../dist-types/iterator.d.ts | 13 - .../normalize-paginated-list-response.d.ts | 18 - .../dist-types/paginate.d.ts | 3 - .../dist-types/types.d.ts | 241 - .../dist-types/version.d.ts | 1 - .../plugin-paginate-rest/dist-web/index.js | 111 - .../dist-web/index.js.map | 1 - .../plugin-paginate-rest/package.json | 84 - .../plugin-rest-endpoint-methods/LICENSE | 7 - .../plugin-rest-endpoint-methods/README.md | 72 - .../dist-node/index.js | 1133 - .../dist-node/index.js.map | 1 - .../dist-src/endpoints-to-methods.js | 60 - .../dist-src/generated/endpoints.js | 1273 - .../dist-src/generated/method-types.js | 1 - .../parameters-and-response-types.js | 1 - .../dist-src/index.js | 17 - .../dist-src/types.js | 1 - .../dist-src/version.js | 1 - .../dist-types/endpoints-to-methods.d.ts | 4 - .../dist-types/generated/endpoints.d.ts | 3 - .../dist-types/generated/method-types.d.ts | 7180 -- .../parameters-and-response-types.d.ts | 2455 - .../dist-types/index.d.ts | 17 - .../dist-types/types.d.ts | 16 - .../dist-types/version.d.ts | 1 - .../dist-web/index.js | 1353 - .../dist-web/index.js.map | 1 - .../plugin-rest-endpoint-methods/package.json | 93 - node_modules/@octokit/request-error/LICENSE | 21 - node_modules/@octokit/request-error/README.md | 67 - .../@octokit/request-error/dist-node/index.js | 55 - .../request-error/dist-node/index.js.map | 1 - .../@octokit/request-error/dist-src/index.js | 40 - .../@octokit/request-error/dist-src/types.js | 0 .../request-error/dist-types/index.d.ts | 27 - .../request-error/dist-types/types.d.ts | 5 - .../@octokit/request-error/dist-web/index.js | 44 - .../request-error/dist-web/index.js.map | 1 - .../@octokit/request-error/package.json | 80 - node_modules/@octokit/request/LICENSE | 21 - node_modules/@octokit/request/README.md | 541 - .../@octokit/request/dist-node/index.js | 148 - .../@octokit/request/dist-node/index.js.map | 1 - .../request/dist-src/fetch-wrapper.js | 93 - .../request/dist-src/get-buffer-response.js | 3 - .../@octokit/request/dist-src/index.js | 9 - .../@octokit/request/dist-src/version.js | 1 - .../request/dist-src/with-defaults.js | 22 - .../request/dist-types/fetch-wrapper.d.ts | 11 - .../dist-types/get-buffer-response.d.ts | 2 - .../@octokit/request/dist-types/index.d.ts | 1 - .../@octokit/request/dist-types/version.d.ts | 1 - .../request/dist-types/with-defaults.d.ts | 2 - .../@octokit/request/dist-web/index.js | 132 - .../@octokit/request/dist-web/index.js.map | 1 - .../node_modules/is-plain-object/LICENSE | 21 - .../node_modules/is-plain-object/README.md | 125 - .../is-plain-object/dist/is-plain-object.js | 38 - .../is-plain-object/dist/is-plain-object.mjs | 34 - .../is-plain-object/is-plain-object.d.ts | 1 - .../node_modules/is-plain-object/package.json | 130 - node_modules/@octokit/request/package.json | 91 - node_modules/@octokit/types/LICENSE | 7 - node_modules/@octokit/types/README.md | 64 - .../@octokit/types/dist-node/index.js | 8 - .../@octokit/types/dist-node/index.js.map | 1 - .../@octokit/types/dist-src/AuthInterface.js | 1 - .../types/dist-src/EndpointDefaults.js | 1 - .../types/dist-src/EndpointInterface.js | 1 - .../types/dist-src/EndpointOptions.js | 1 - node_modules/@octokit/types/dist-src/Fetch.js | 1 - .../GetResponseTypeFromEndpointMethod.js | 1 - .../types/dist-src/OctokitResponse.js | 1 - .../@octokit/types/dist-src/RequestError.js | 1 - .../@octokit/types/dist-src/RequestHeaders.js | 1 - .../types/dist-src/RequestInterface.js | 1 - .../@octokit/types/dist-src/RequestMethod.js | 1 - .../@octokit/types/dist-src/RequestOptions.js | 1 - .../types/dist-src/RequestParameters.js | 1 - .../types/dist-src/RequestRequestOptions.js | 1 - .../types/dist-src/ResponseHeaders.js | 1 - node_modules/@octokit/types/dist-src/Route.js | 1 - .../@octokit/types/dist-src/Signal.js | 1 - .../types/dist-src/StrategyInterface.js | 1 - node_modules/@octokit/types/dist-src/Url.js | 1 - .../@octokit/types/dist-src/VERSION.js | 1 - .../types/dist-src/generated/Endpoints.js | 1 - node_modules/@octokit/types/dist-src/index.js | 21 - .../types/dist-types/AuthInterface.d.ts | 31 - .../types/dist-types/EndpointDefaults.d.ts | 21 - .../types/dist-types/EndpointInterface.d.ts | 65 - .../types/dist-types/EndpointOptions.d.ts | 7 - .../@octokit/types/dist-types/Fetch.d.ts | 4 - .../GetResponseTypeFromEndpointMethod.d.ts | 5 - .../types/dist-types/OctokitResponse.d.ts | 17 - .../types/dist-types/RequestError.d.ts | 11 - .../types/dist-types/RequestHeaders.d.ts | 15 - .../types/dist-types/RequestInterface.d.ts | 34 - .../types/dist-types/RequestMethod.d.ts | 4 - .../types/dist-types/RequestOptions.d.ts | 14 - .../types/dist-types/RequestParameters.d.ts | 45 - .../dist-types/RequestRequestOptions.d.ts | 26 - .../types/dist-types/ResponseHeaders.d.ts | 20 - .../@octokit/types/dist-types/Route.d.ts | 4 - .../@octokit/types/dist-types/Signal.d.ts | 6 - .../types/dist-types/StrategyInterface.d.ts | 4 - .../@octokit/types/dist-types/Url.d.ts | 4 - .../@octokit/types/dist-types/VERSION.d.ts | 1 - .../types/dist-types/generated/Endpoints.d.ts | 2994 - .../@octokit/types/dist-types/index.d.ts | 21 - node_modules/@octokit/types/dist-web/index.js | 4 - .../@octokit/types/dist-web/index.js.map | 1 - node_modules/@octokit/types/package.json | 91 - node_modules/@types/node/LICENSE | 21 - node_modules/@types/node/README.md | 16 - node_modules/@types/node/assert.d.ts | 129 - node_modules/@types/node/async_hooks.d.ts | 233 - node_modules/@types/node/base.d.ts | 19 - node_modules/@types/node/buffer.d.ts | 26 - node_modules/@types/node/child_process.d.ts | 513 - node_modules/@types/node/cluster.d.ts | 266 - node_modules/@types/node/console.d.ts | 137 - node_modules/@types/node/constants.d.ts | 19 - node_modules/@types/node/crypto.d.ts | 1176 - node_modules/@types/node/dgram.d.ts | 145 - node_modules/@types/node/dns.d.ts | 384 - node_modules/@types/node/domain.d.ts | 28 - node_modules/@types/node/events.d.ts | 83 - node_modules/@types/node/fs.d.ts | 2247 - node_modules/@types/node/fs/promises.d.ts | 559 - node_modules/@types/node/globals.d.ts | 614 - node_modules/@types/node/globals.global.d.ts | 1 - node_modules/@types/node/http.d.ts | 427 - node_modules/@types/node/http2.d.ts | 962 - node_modules/@types/node/https.d.ts | 40 - node_modules/@types/node/index.d.ts | 61 - node_modules/@types/node/inspector.d.ts | 3048 - node_modules/@types/node/module.d.ts | 57 - node_modules/@types/node/net.d.ts | 289 - node_modules/@types/node/os.d.ts | 243 - node_modules/@types/node/package.json | 262 - node_modules/@types/node/path.d.ts | 158 - node_modules/@types/node/perf_hooks.d.ts | 275 - node_modules/@types/node/process.d.ts | 412 - node_modules/@types/node/punycode.d.ts | 86 - node_modules/@types/node/querystring.d.ts | 32 - node_modules/@types/node/readline.d.ts | 174 - node_modules/@types/node/repl.d.ts | 399 - node_modules/@types/node/stream.d.ts | 359 - node_modules/@types/node/string_decoder.d.ts | 11 - node_modules/@types/node/timers.d.ts | 20 - node_modules/@types/node/tls.d.ts | 783 - node_modules/@types/node/trace_events.d.ts | 65 - node_modules/@types/node/ts3.4/assert.d.ts | 103 - node_modules/@types/node/ts3.4/base.d.ts | 56 - .../@types/node/ts3.4/globals.global.d.ts | 1 - node_modules/@types/node/ts3.4/index.d.ts | 8 - node_modules/@types/node/ts3.6/base.d.ts | 22 - node_modules/@types/node/ts3.6/index.d.ts | 7 - node_modules/@types/node/tty.d.ts | 70 - node_modules/@types/node/url.d.ts | 120 - node_modules/@types/node/util.d.ts | 211 - node_modules/@types/node/v8.d.ts | 191 - node_modules/@types/node/vm.d.ts | 150 - node_modules/@types/node/wasi.d.ts | 90 - node_modules/@types/node/worker_threads.d.ts | 242 - node_modules/@types/node/zlib.d.ts | 365 - node_modules/ansi-bgblack/LICENSE | 21 - node_modules/ansi-bgblack/README.md | 74 - node_modules/ansi-bgblack/index.js | 14 - node_modules/ansi-bgblack/package.json | 86 - node_modules/ansi-bgblue/LICENSE | 21 - node_modules/ansi-bgblue/index.js | 14 - node_modules/ansi-bgblue/package.json | 86 - node_modules/ansi-bgblue/readme.md | 74 - node_modules/ansi-bgcyan/LICENSE | 21 - node_modules/ansi-bgcyan/index.js | 14 - node_modules/ansi-bgcyan/package.json | 86 - node_modules/ansi-bgcyan/readme.md | 74 - node_modules/ansi-bggreen/LICENSE | 21 - node_modules/ansi-bggreen/index.js | 14 - node_modules/ansi-bggreen/package.json | 86 - node_modules/ansi-bggreen/readme.md | 74 - node_modules/ansi-bgmagenta/LICENSE | 21 - node_modules/ansi-bgmagenta/index.js | 14 - node_modules/ansi-bgmagenta/package.json | 86 - node_modules/ansi-bgmagenta/readme.md | 74 - node_modules/ansi-bgred/LICENSE | 21 - node_modules/ansi-bgred/index.js | 14 - node_modules/ansi-bgred/package.json | 86 - node_modules/ansi-bgred/readme.md | 74 - node_modules/ansi-bgwhite/LICENSE | 21 - node_modules/ansi-bgwhite/index.js | 14 - node_modules/ansi-bgwhite/package.json | 86 - node_modules/ansi-bgwhite/readme.md | 74 - node_modules/ansi-bgyellow/LICENSE | 21 - node_modules/ansi-bgyellow/index.js | 14 - node_modules/ansi-bgyellow/package.json | 86 - node_modules/ansi-bgyellow/readme.md | 74 - node_modules/ansi-black/LICENSE | 21 - node_modules/ansi-black/index.js | 14 - node_modules/ansi-black/package.json | 86 - node_modules/ansi-black/readme.md | 74 - node_modules/ansi-blue/LICENSE | 21 - node_modules/ansi-blue/index.js | 14 - node_modules/ansi-blue/package.json | 86 - node_modules/ansi-blue/readme.md | 74 - node_modules/ansi-bold/LICENSE | 21 - node_modules/ansi-bold/index.js | 14 - node_modules/ansi-bold/package.json | 86 - node_modules/ansi-bold/readme.md | 74 - node_modules/ansi-cyan/LICENSE | 21 - node_modules/ansi-cyan/index.js | 14 - node_modules/ansi-cyan/package.json | 86 - node_modules/ansi-cyan/readme.md | 74 - node_modules/ansi-dim/LICENSE | 21 - node_modules/ansi-dim/index.js | 14 - node_modules/ansi-dim/package.json | 86 - node_modules/ansi-dim/readme.md | 74 - node_modules/ansi-gray/LICENSE | 21 - node_modules/ansi-gray/index.js | 14 - node_modules/ansi-gray/package.json | 86 - node_modules/ansi-gray/readme.md | 74 - node_modules/ansi-green/LICENSE | 21 - node_modules/ansi-green/index.js | 14 - node_modules/ansi-green/package.json | 87 - node_modules/ansi-green/readme.md | 74 - node_modules/ansi-grey/LICENSE | 21 - node_modules/ansi-grey/index.js | 14 - node_modules/ansi-grey/package.json | 86 - node_modules/ansi-grey/readme.md | 74 - node_modules/ansi-hidden/LICENSE | 21 - node_modules/ansi-hidden/index.js | 14 - node_modules/ansi-hidden/package.json | 86 - node_modules/ansi-hidden/readme.md | 74 - node_modules/ansi-inverse/LICENSE | 21 - node_modules/ansi-inverse/index.js | 14 - node_modules/ansi-inverse/package.json | 86 - node_modules/ansi-inverse/readme.md | 74 - node_modules/ansi-italic/LICENSE | 21 - node_modules/ansi-italic/index.js | 14 - node_modules/ansi-italic/package.json | 86 - node_modules/ansi-italic/readme.md | 74 - node_modules/ansi-magenta/LICENSE | 21 - node_modules/ansi-magenta/index.js | 14 - node_modules/ansi-magenta/package.json | 86 - node_modules/ansi-magenta/readme.md | 74 - node_modules/ansi-red/LICENSE | 21 - node_modules/ansi-red/index.js | 14 - node_modules/ansi-red/package.json | 86 - node_modules/ansi-red/readme.md | 74 - node_modules/ansi-reset/LICENSE | 21 - node_modules/ansi-reset/index.js | 14 - node_modules/ansi-reset/package.json | 86 - node_modules/ansi-reset/readme.md | 74 - node_modules/ansi-strikethrough/LICENSE | 21 - node_modules/ansi-strikethrough/index.js | 14 - node_modules/ansi-strikethrough/package.json | 86 - node_modules/ansi-strikethrough/readme.md | 74 - node_modules/ansi-underline/LICENSE | 21 - node_modules/ansi-underline/index.js | 14 - node_modules/ansi-underline/package.json | 86 - node_modules/ansi-underline/readme.md | 74 - node_modules/ansi-white/LICENSE | 21 - node_modules/ansi-white/index.js | 14 - node_modules/ansi-white/package.json | 86 - node_modules/ansi-white/readme.md | 74 - node_modules/ansi-wrap/LICENSE | 21 - node_modules/ansi-wrap/README.md | 89 - node_modules/ansi-wrap/index.js | 5 - node_modules/ansi-wrap/package.json | 84 - node_modules/ansi-yellow/LICENSE | 21 - node_modules/ansi-yellow/index.js | 14 - node_modules/ansi-yellow/package.json | 86 - node_modules/ansi-yellow/readme.md | 74 - node_modules/argparse/CHANGELOG.md | 185 - node_modules/argparse/LICENSE | 21 - node_modules/argparse/README.md | 257 - node_modules/argparse/index.js | 3 - node_modules/argparse/lib/action.js | 146 - node_modules/argparse/lib/action/append.js | 53 - .../argparse/lib/action/append/constant.js | 47 - node_modules/argparse/lib/action/count.js | 40 - node_modules/argparse/lib/action/help.js | 47 - node_modules/argparse/lib/action/store.js | 50 - .../argparse/lib/action/store/constant.js | 43 - .../argparse/lib/action/store/false.js | 27 - .../argparse/lib/action/store/true.js | 26 - .../argparse/lib/action/subparsers.js | 149 - node_modules/argparse/lib/action/version.js | 47 - node_modules/argparse/lib/action_container.js | 482 - node_modules/argparse/lib/argparse.js | 14 - node_modules/argparse/lib/argument/error.js | 50 - .../argparse/lib/argument/exclusive.js | 54 - node_modules/argparse/lib/argument/group.js | 75 - node_modules/argparse/lib/argument_parser.js | 1161 - node_modules/argparse/lib/const.js | 21 - .../argparse/lib/help/added_formatters.js | 87 - node_modules/argparse/lib/help/formatter.js | 795 - node_modules/argparse/lib/namespace.js | 76 - node_modules/argparse/lib/utils.js | 57 - node_modules/argparse/package.json | 74 - node_modules/arr-diff/LICENSE | 21 - node_modules/arr-diff/README.md | 130 - node_modules/arr-diff/index.js | 47 - node_modules/arr-diff/package.json | 113 - node_modules/arr-flatten/LICENSE | 21 - node_modules/arr-flatten/README.md | 86 - node_modules/arr-flatten/index.js | 22 - node_modules/arr-flatten/package.json | 117 - node_modules/arr-union/LICENSE | 21 - node_modules/arr-union/README.md | 99 - node_modules/arr-union/index.js | 29 - node_modules/arr-union/package.json | 112 - node_modules/array-sort/LICENSE | 21 - node_modules/array-sort/README.md | 203 - node_modules/array-sort/index.js | 105 - .../array-sort/node_modules/kind-of/LICENSE | 21 - .../array-sort/node_modules/kind-of/README.md | 342 - .../array-sort/node_modules/kind-of/index.js | 147 - .../node_modules/kind-of/package.json | 146 - node_modules/array-sort/package.json | 129 - node_modules/array-unique/LICENSE | 21 - node_modules/array-unique/README.md | 77 - node_modules/array-unique/index.js | 43 - node_modules/array-unique/package.json | 100 - node_modules/assign-symbols/LICENSE | 21 - node_modules/assign-symbols/README.md | 73 - node_modules/assign-symbols/index.js | 40 - node_modules/assign-symbols/package.json | 75 - node_modules/atob/LICENSE | 230 - node_modules/atob/LICENSE.DOCS | 319 - node_modules/atob/README.md | 49 - node_modules/atob/bin/atob.js | 6 - node_modules/atob/bower.json | 24 - node_modules/atob/browser-atob.js | 44 - node_modules/atob/node-atob.js | 7 - node_modules/atob/package.json | 57 - node_modules/atob/test.js | 18 - node_modules/autolinker/LICENSE | 22 - node_modules/autolinker/README.md | 340 - node_modules/autolinker/dist/Autolinker.js | 3770 - .../autolinker/dist/Autolinker.min.js | 10 - node_modules/autolinker/package.json | 90 - node_modules/base/LICENSE | 21 - node_modules/base/README.md | 491 - node_modules/base/index.js | 435 - .../base/node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 95 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 97 - .../is-accessor-descriptor/LICENSE | 21 - .../is-accessor-descriptor/README.md | 144 - .../is-accessor-descriptor/index.js | 69 - .../is-accessor-descriptor/package.json | 114 - .../node_modules/is-data-descriptor/LICENSE | 21 - .../node_modules/is-data-descriptor/README.md | 161 - .../node_modules/is-data-descriptor/index.js | 49 - .../is-data-descriptor/package.json | 113 - .../base/node_modules/is-descriptor/LICENSE | 21 - .../base/node_modules/is-descriptor/README.md | 193 - .../base/node_modules/is-descriptor/index.js | 22 - .../node_modules/is-descriptor/package.json | 118 - node_modules/base/package.json | 168 - node_modules/before-after-hook/LICENSE | 201 - node_modules/before-after-hook/README.md | 574 - node_modules/before-after-hook/index.d.ts | 96 - node_modules/before-after-hook/index.js | 57 - node_modules/before-after-hook/lib/add.js | 46 - .../before-after-hook/lib/register.js | 28 - node_modules/before-after-hook/lib/remove.js | 17 - node_modules/before-after-hook/package.json | 97 - node_modules/braces/LICENSE | 21 - node_modules/braces/README.md | 640 - node_modules/braces/index.js | 318 - node_modules/braces/lib/braces.js | 104 - node_modules/braces/lib/compilers.js | 282 - node_modules/braces/lib/parsers.js | 360 - node_modules/braces/lib/utils.js | 343 - .../node_modules/extend-shallow/LICENSE | 21 - .../node_modules/extend-shallow/README.md | 61 - .../node_modules/extend-shallow/index.js | 33 - .../node_modules/extend-shallow/package.json | 91 - node_modules/braces/package.json | 160 - node_modules/cache-base/LICENSE | 21 - node_modules/cache-base/README.md | 291 - node_modules/cache-base/index.js | 261 - node_modules/cache-base/package.json | 122 - node_modules/class-utils/LICENSE | 21 - node_modules/class-utils/README.md | 300 - node_modules/class-utils/index.js | 370 - .../node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 77 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 86 - node_modules/class-utils/package.json | 135 - node_modules/collection-visit/LICENSE | 21 - node_modules/collection-visit/README.md | 89 - node_modules/collection-visit/index.js | 30 - node_modules/collection-visit/package.json | 119 - node_modules/component-emitter/History.md | 75 - node_modules/component-emitter/LICENSE | 24 - node_modules/component-emitter/Readme.md | 74 - node_modules/component-emitter/index.js | 175 - node_modules/component-emitter/package.json | 61 - .../concat-with-sourcemaps/LICENSE.md | 15 - node_modules/concat-with-sourcemaps/README.md | 45 - .../concat-with-sourcemaps/index.d.ts | 12 - node_modules/concat-with-sourcemaps/index.js | 134 - .../node_modules/source-map/CHANGELOG.md | 301 - .../node_modules/source-map/LICENSE | 28 - .../node_modules/source-map/README.md | 742 - .../source-map/dist/source-map.debug.js | 3234 - .../source-map/dist/source-map.js | 3233 - .../source-map/dist/source-map.min.js | 2 - .../source-map/dist/source-map.min.js.map | 1 - .../node_modules/source-map/lib/array-set.js | 121 - .../node_modules/source-map/lib/base64-vlq.js | 140 - .../node_modules/source-map/lib/base64.js | 67 - .../source-map/lib/binary-search.js | 111 - .../source-map/lib/mapping-list.js | 79 - .../node_modules/source-map/lib/quick-sort.js | 114 - .../source-map/lib/source-map-consumer.js | 1145 - .../source-map/lib/source-map-generator.js | 425 - .../source-map/lib/source-node.js | 413 - .../node_modules/source-map/lib/util.js | 488 - .../node_modules/source-map/package.json | 212 - .../node_modules/source-map/source-map.d.ts | 98 - .../node_modules/source-map/source-map.js | 8 - .../concat-with-sourcemaps/package.json | 72 - node_modules/copy-descriptor/LICENSE | 21 - node_modules/copy-descriptor/index.js | 81 - node_modules/copy-descriptor/package.json | 91 - node_modules/core-util-is/LICENSE | 19 - node_modules/core-util-is/README.md | 3 - node_modules/core-util-is/float.patch | 604 - node_modules/core-util-is/lib/util.js | 107 - node_modules/core-util-is/package.json | 66 - node_modules/core-util-is/test.js | 68 - node_modules/create-frame/LICENSE | 21 - node_modules/create-frame/README.md | 92 - node_modules/create-frame/index.js | 33 - .../node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 77 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 82 - .../node_modules/extend-shallow/LICENSE | 21 - .../node_modules/extend-shallow/README.md | 61 - .../node_modules/extend-shallow/index.js | 33 - .../node_modules/extend-shallow/package.json | 87 - node_modules/create-frame/package.json | 100 - node_modules/create-frame/utils.js | 20 - node_modules/date.js/.travis.yml | 6 - node_modules/date.js/History.md | 69 - node_modules/date.js/Makefile | 19 - node_modules/date.js/Readme.md | 111 - node_modules/date.js/component.json | 20 - node_modules/date.js/dist/date.js | 3633 - node_modules/date.js/dist/date.min.js | 0 node_modules/date.js/index.js | 5 - node_modules/date.js/lib/date.js | 260 - node_modules/date.js/lib/maps.json | 98 - node_modules/date.js/lib/norm.js | 829 - node_modules/date.js/lib/parser.js | 659 - node_modules/date.js/lib/subdash.js | 70 - node_modules/date.js/lib/symbol.js | 248 - node_modules/date.js/lib/tokenize.js | 273 - node_modules/date.js/lib/util.js | 593 - .../date.js/node_modules/debug/.coveralls.yml | 1 - .../date.js/node_modules/debug/.eslintrc | 14 - .../date.js/node_modules/debug/.npmignore | 9 - .../date.js/node_modules/debug/.travis.yml | 20 - .../date.js/node_modules/debug/CHANGELOG.md | 395 - .../date.js/node_modules/debug/LICENSE | 19 - .../date.js/node_modules/debug/Makefile | 58 - .../date.js/node_modules/debug/README.md | 368 - .../date.js/node_modules/debug/karma.conf.js | 70 - .../date.js/node_modules/debug/node.js | 1 - .../date.js/node_modules/debug/package.json | 82 - .../date.js/node_modules/debug/src/browser.js | 195 - .../date.js/node_modules/debug/src/debug.js | 225 - .../date.js/node_modules/debug/src/index.js | 10 - .../date.js/node_modules/debug/src/node.js | 186 - node_modules/date.js/node_modules/ms/index.js | 152 - .../date.js/node_modules/ms/license.md | 21 - .../date.js/node_modules/ms/package.json | 69 - .../date.js/node_modules/ms/readme.md | 51 - node_modules/date.js/package.json | 70 - node_modules/date.js/test/parser.js | 982 - node_modules/decode-uri-component/index.js | 94 - node_modules/decode-uri-component/license | 21 - .../decode-uri-component/package.json | 73 - node_modules/decode-uri-component/readme.md | 70 - node_modules/default-compare/LICENSE | 21 - node_modules/default-compare/README.md | 116 - node_modules/default-compare/index.js | 44 - .../node_modules/kind-of/LICENSE | 21 - .../node_modules/kind-of/README.md | 342 - .../node_modules/kind-of/index.js | 147 - .../node_modules/kind-of/package.json | 146 - node_modules/default-compare/package.json | 77 - node_modules/define-property/CHANGELOG.md | 82 - node_modules/define-property/LICENSE | 21 - node_modules/define-property/README.md | 117 - node_modules/define-property/index.js | 38 - .../is-accessor-descriptor/LICENSE | 21 - .../is-accessor-descriptor/README.md | 144 - .../is-accessor-descriptor/index.js | 69 - .../is-accessor-descriptor/package.json | 114 - .../node_modules/is-data-descriptor/LICENSE | 21 - .../node_modules/is-data-descriptor/README.md | 161 - .../node_modules/is-data-descriptor/index.js | 49 - .../is-data-descriptor/package.json | 113 - .../node_modules/is-descriptor/LICENSE | 21 - .../node_modules/is-descriptor/README.md | 193 - .../node_modules/is-descriptor/index.js | 22 - .../node_modules/is-descriptor/package.json | 118 - node_modules/define-property/package.json | 112 - node_modules/deprecation/LICENSE | 15 - node_modules/deprecation/README.md | 77 - node_modules/deprecation/dist-node/index.js | 20 - node_modules/deprecation/dist-src/index.js | 14 - .../deprecation/dist-types/index.d.ts | 3 - node_modules/deprecation/dist-web/index.js | 16 - node_modules/deprecation/package.json | 65 - node_modules/ent/.npmignore | 1 - node_modules/ent/.travis.yml | 4 - node_modules/ent/LICENSE | 18 - node_modules/ent/decode.js | 32 - node_modules/ent/encode.js | 39 - node_modules/ent/entities.json | 2233 - node_modules/ent/examples/simple.js | 3 - node_modules/ent/index.js | 2 - node_modules/ent/package.json | 72 - node_modules/ent/readme.markdown | 71 - node_modules/ent/reversed.json | 1315 - node_modules/ent/test/codes.js | 101 - node_modules/ent/test/hex.js | 35 - node_modules/ent/test/num.js | 13 - node_modules/error-symbol/LICENSE | 21 - node_modules/error-symbol/README.md | 52 - node_modules/error-symbol/index.js | 1 - node_modules/error-symbol/package.json | 83 - node_modules/expand-brackets/LICENSE | 21 - node_modules/expand-brackets/README.md | 302 - node_modules/expand-brackets/changelog.md | 35 - node_modules/expand-brackets/index.js | 211 - node_modules/expand-brackets/lib/compilers.js | 87 - node_modules/expand-brackets/lib/parsers.js | 219 - node_modules/expand-brackets/lib/utils.js | 34 - .../node_modules/debug/.coveralls.yml | 1 - .../node_modules/debug/.eslintrc | 11 - .../node_modules/debug/.npmignore | 9 - .../node_modules/debug/.travis.yml | 14 - .../node_modules/debug/CHANGELOG.md | 362 - .../node_modules/debug/LICENSE | 19 - .../node_modules/debug/Makefile | 50 - .../node_modules/debug/README.md | 312 - .../node_modules/debug/component.json | 19 - .../node_modules/debug/karma.conf.js | 70 - .../node_modules/debug/node.js | 1 - .../node_modules/debug/package.json | 92 - .../node_modules/debug/src/browser.js | 185 - .../node_modules/debug/src/debug.js | 202 - .../node_modules/debug/src/index.js | 10 - .../node_modules/debug/src/inspector-log.js | 15 - .../node_modules/debug/src/node.js | 248 - .../node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 77 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 86 - .../node_modules/extend-shallow/LICENSE | 21 - .../node_modules/extend-shallow/README.md | 61 - .../node_modules/extend-shallow/index.js | 33 - .../node_modules/extend-shallow/package.json | 91 - .../expand-brackets/node_modules/ms/index.js | 152 - .../node_modules/ms/license.md | 21 - .../node_modules/ms/package.json | 73 - .../expand-brackets/node_modules/ms/readme.md | 51 - node_modules/expand-brackets/package.json | 137 - node_modules/extend-shallow/LICENSE | 21 - node_modules/extend-shallow/README.md | 97 - node_modules/extend-shallow/index.js | 60 - .../node_modules/is-extendable/LICENSE | 21 - .../node_modules/is-extendable/README.md | 88 - .../node_modules/is-extendable/index.d.ts | 5 - .../node_modules/is-extendable/index.js | 14 - .../node_modules/is-extendable/package.json | 102 - node_modules/extend-shallow/package.json | 130 - node_modules/extglob/LICENSE | 21 - node_modules/extglob/README.md | 362 - node_modules/extglob/changelog.md | 25 - node_modules/extglob/index.js | 331 - node_modules/extglob/lib/compilers.js | 169 - node_modules/extglob/lib/extglob.js | 78 - node_modules/extglob/lib/parsers.js | 156 - node_modules/extglob/lib/utils.js | 69 - .../node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 95 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 97 - .../node_modules/extend-shallow/LICENSE | 21 - .../node_modules/extend-shallow/README.md | 61 - .../node_modules/extend-shallow/index.js | 33 - .../node_modules/extend-shallow/package.json | 91 - .../is-accessor-descriptor/LICENSE | 21 - .../is-accessor-descriptor/README.md | 144 - .../is-accessor-descriptor/index.js | 69 - .../is-accessor-descriptor/package.json | 114 - .../node_modules/is-data-descriptor/LICENSE | 21 - .../node_modules/is-data-descriptor/README.md | 161 - .../node_modules/is-data-descriptor/index.js | 49 - .../is-data-descriptor/package.json | 113 - .../node_modules/is-descriptor/LICENSE | 21 - .../node_modules/is-descriptor/README.md | 193 - .../node_modules/is-descriptor/index.js | 22 - .../node_modules/is-descriptor/package.json | 118 - node_modules/extglob/package.json | 164 - node_modules/falsey/LICENSE | 21 - node_modules/falsey/README.md | 136 - node_modules/falsey/index.js | 40 - .../falsey/node_modules/kind-of/LICENSE | 21 - .../falsey/node_modules/kind-of/README.md | 342 - .../falsey/node_modules/kind-of/index.js | 147 - .../falsey/node_modules/kind-of/package.json | 146 - node_modules/falsey/package.json | 95 - node_modules/fill-range/LICENSE | 21 - node_modules/fill-range/README.md | 250 - node_modules/fill-range/index.js | 208 - .../node_modules/extend-shallow/LICENSE | 21 - .../node_modules/extend-shallow/README.md | 61 - .../node_modules/extend-shallow/index.js | 33 - .../node_modules/extend-shallow/package.json | 91 - node_modules/fill-range/package.json | 134 - node_modules/for-in/LICENSE | 21 - node_modules/for-in/README.md | 85 - node_modules/for-in/index.js | 16 - node_modules/for-in/package.json | 110 - node_modules/for-own/LICENSE | 21 - node_modules/for-own/README.md | 85 - node_modules/for-own/index.js | 19 - node_modules/for-own/package.json | 109 - node_modules/fragment-cache/LICENSE | 21 - node_modules/fragment-cache/README.md | 156 - node_modules/fragment-cache/index.js | 128 - node_modules/fragment-cache/package.json | 97 - node_modules/fs-exists-sync/LICENSE | 21 - node_modules/fs-exists-sync/README.md | 92 - node_modules/fs-exists-sync/index.js | 18 - node_modules/fs-exists-sync/package.json | 101 - node_modules/get-object/LICENSE | 21 - node_modules/get-object/README.md | 105 - node_modules/get-object/index.js | 24 - .../get-object/node_modules/is-number/LICENSE | 21 - .../node_modules/is-number/README.md | 103 - .../node_modules/is-number/index.js | 19 - .../node_modules/is-number/package.json | 90 - .../node_modules/isobject/.gitattributes | 14 - .../node_modules/isobject/.jshintrc | 22 - .../node_modules/isobject/.npmignore | 52 - .../node_modules/isobject/.verbrc.md | 29 - .../node_modules/isobject/LICENSE-MIT | 22 - .../node_modules/isobject/README.md | 37 - .../get-object/node_modules/isobject/index.js | 20 - .../node_modules/isobject/package.json | 73 - .../node_modules/isobject/test/mocha.opts | 1 - .../node_modules/isobject/test/test.js | 21 - .../get-object/node_modules/kind-of/LICENSE | 21 - .../get-object/node_modules/kind-of/README.md | 261 - .../get-object/node_modules/kind-of/index.js | 116 - .../node_modules/kind-of/package.json | 139 - node_modules/get-object/package.json | 106 - node_modules/get-value/LICENSE | 21 - node_modules/get-value/index.js | 50 - node_modules/get-value/package.json | 117 - node_modules/gulp-header/.editorconfig | 13 - node_modules/gulp-header/LICENSE | 20 - node_modules/gulp-header/README.md | 97 - node_modules/gulp-header/changelog.md | 10 - node_modules/gulp-header/index.js | 96 - node_modules/gulp-header/package.json | 84 - .../handlebars-helper-create-frame/LICENSE | 21 - .../handlebars-helper-create-frame/README.md | 75 - .../handlebars-helper-create-frame/index.js | 24 - .../package.json | 100 - node_modules/handlebars-helpers/CHANGELOG | 152 - node_modules/handlebars-helpers/LICENSE | 21 - node_modules/handlebars-helpers/README.md | 3348 - node_modules/handlebars-helpers/index.js | 61 - node_modules/handlebars-helpers/lib/array.js | 822 - node_modules/handlebars-helpers/lib/code.js | 80 - .../handlebars-helpers/lib/collection.js | 67 - .../handlebars-helpers/lib/comparison.js | 604 - node_modules/handlebars-helpers/lib/date.js | 24 - node_modules/handlebars-helpers/lib/fs.js | 68 - node_modules/handlebars-helpers/lib/html.js | 218 - node_modules/handlebars-helpers/lib/i18n.js | 48 - node_modules/handlebars-helpers/lib/index.js | 24 - .../handlebars-helpers/lib/inflection.js | 78 - .../handlebars-helpers/lib/logging.js | 8 - .../handlebars-helpers/lib/markdown.js | 55 - node_modules/handlebars-helpers/lib/match.js | 61 - node_modules/handlebars-helpers/lib/math.js | 288 - node_modules/handlebars-helpers/lib/misc.js | 77 - node_modules/handlebars-helpers/lib/number.js | 204 - node_modules/handlebars-helpers/lib/object.js | 290 - node_modules/handlebars-helpers/lib/path.js | 172 - node_modules/handlebars-helpers/lib/regex.js | 50 - node_modules/handlebars-helpers/lib/string.js | 769 - node_modules/handlebars-helpers/lib/url.js | 132 - .../handlebars-helpers/lib/utils/html.js | 82 - .../handlebars-helpers/lib/utils/index.js | 88 - .../handlebars-helpers/lib/utils/utils.js | 41 - .../node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 95 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 93 - .../is-accessor-descriptor/LICENSE | 21 - .../is-accessor-descriptor/README.md | 144 - .../is-accessor-descriptor/index.js | 69 - .../is-accessor-descriptor/package.json | 110 - .../node_modules/is-data-descriptor/LICENSE | 21 - .../node_modules/is-data-descriptor/README.md | 161 - .../node_modules/is-data-descriptor/index.js | 49 - .../is-data-descriptor/package.json | 109 - .../node_modules/is-descriptor/LICENSE | 21 - .../node_modules/is-descriptor/README.md | 193 - .../node_modules/is-descriptor/index.js | 22 - .../node_modules/is-descriptor/package.json | 114 - .../node_modules/is-number/LICENSE | 21 - .../node_modules/is-number/README.md | 135 - .../node_modules/is-number/index.js | 21 - .../node_modules/is-number/package.json | 113 - node_modules/handlebars-helpers/package.json | 374 - node_modules/handlebars-utils/LICENSE | 21 - node_modules/handlebars-utils/README.md | 387 - node_modules/handlebars-utils/index.js | 527 - node_modules/handlebars-utils/package.json | 98 - node_modules/handlebars/LICENSE | 19 - node_modules/handlebars/README.markdown | 168 - node_modules/handlebars/bin/.eslintrc.js | 6 - node_modules/handlebars/bin/handlebars | 176 - .../handlebars/dist/amd/handlebars.js | 52 - .../handlebars/dist/amd/handlebars.runtime.js | 44 - .../handlebars/dist/amd/handlebars/base.js | 106 - .../dist/amd/handlebars/compiler/ast.js | 31 - .../dist/amd/handlebars/compiler/base.js | 45 - .../dist/amd/handlebars/compiler/code-gen.js | 165 - .../dist/amd/handlebars/compiler/compiler.js | 562 - .../dist/amd/handlebars/compiler/helpers.js | 228 - .../compiler/javascript-compiler.js | 1151 - .../dist/amd/handlebars/compiler/parser.js | 737 - .../dist/amd/handlebars/compiler/printer.js | 186 - .../dist/amd/handlebars/compiler/visitor.js | 138 - .../handlebars/compiler/whitespace-control.js | 219 - .../dist/amd/handlebars/decorators.js | 16 - .../dist/amd/handlebars/decorators/inline.js | 25 - .../dist/amd/handlebars/exception.js | 64 - .../handlebars/dist/amd/handlebars/helpers.js | 44 - .../helpers/block-helper-missing.js | 35 - .../dist/amd/handlebars/helpers/each.js | 99 - .../amd/handlebars/helpers/helper-missing.js | 22 - .../dist/amd/handlebars/helpers/if.js | 41 - .../dist/amd/handlebars/helpers/log.js | 24 - .../dist/amd/handlebars/helpers/lookup.js | 14 - .../dist/amd/handlebars/helpers/with.js | 38 - .../internal/create-new-lookup-object.js | 22 - .../amd/handlebars/internal/proto-access.js | 66 - .../amd/handlebars/internal/wrapHelper.js | 21 - .../handlebars/dist/amd/handlebars/logger.js | 44 - .../dist/amd/handlebars/no-conflict.js | 17 - .../handlebars/dist/amd/handlebars/runtime.js | 356 - .../dist/amd/handlebars/safe-string.js | 15 - .../handlebars/dist/amd/handlebars/utils.js | 126 - .../handlebars/dist/amd/precompiler.js | 313 - .../handlebars/dist/cjs/handlebars.js | 66 - .../handlebars/dist/cjs/handlebars.runtime.js | 66 - .../handlebars/dist/cjs/handlebars/base.js | 116 - .../dist/cjs/handlebars/compiler/ast.js | 31 - .../dist/cjs/handlebars/compiler/base.js | 57 - .../dist/cjs/handlebars/compiler/code-gen.js | 168 - .../dist/cjs/handlebars/compiler/compiler.js | 566 - .../dist/cjs/handlebars/compiler/helpers.js | 228 - .../compiler/javascript-compiler.js | 1159 - .../dist/cjs/handlebars/compiler/parser.js | 737 - .../dist/cjs/handlebars/compiler/printer.js | 186 - .../dist/cjs/handlebars/compiler/visitor.js | 140 - .../handlebars/compiler/whitespace-control.js | 221 - .../dist/cjs/handlebars/decorators.js | 16 - .../dist/cjs/handlebars/decorators/inline.js | 29 - .../dist/cjs/handlebars/exception.js | 64 - .../handlebars/dist/cjs/handlebars/helpers.js | 56 - .../helpers/block-helper-missing.js | 39 - .../dist/cjs/handlebars/helpers/each.js | 104 - .../cjs/handlebars/helpers/helper-missing.js | 25 - .../dist/cjs/handlebars/helpers/if.js | 46 - .../dist/cjs/handlebars/helpers/log.js | 26 - .../dist/cjs/handlebars/helpers/lookup.js | 16 - .../dist/cjs/handlebars/helpers/with.js | 43 - .../internal/create-new-lookup-object.js | 22 - .../cjs/handlebars/internal/proto-access.js | 73 - .../cjs/handlebars/internal/wrapHelper.js | 19 - .../handlebars/dist/cjs/handlebars/logger.js | 47 - .../dist/cjs/handlebars/no-conflict.js | 19 - .../handlebars/dist/cjs/handlebars/runtime.js | 372 - .../dist/cjs/handlebars/safe-string.js | 15 - .../handlebars/dist/cjs/handlebars/utils.js | 124 - .../handlebars/dist/cjs/precompiler.js | 327 - .../handlebars/dist/handlebars.amd.js | 4624 -- .../handlebars/dist/handlebars.amd.min.js | 29 - node_modules/handlebars/dist/handlebars.js | 5210 -- .../handlebars/dist/handlebars.min.js | 29 - .../handlebars/dist/handlebars.runtime.amd.js | 1286 - .../dist/handlebars.runtime.amd.min.js | 27 - .../handlebars/dist/handlebars.runtime.js | 1800 - .../handlebars/dist/handlebars.runtime.min.js | 27 - node_modules/handlebars/lib/handlebars.js | 46 - .../handlebars/lib/handlebars.runtime.js | 37 - .../handlebars/lib/handlebars/base.js | 94 - .../handlebars/lib/handlebars/compiler/ast.js | 32 - .../lib/handlebars/compiler/base.js | 34 - .../lib/handlebars/compiler/code-gen.js | 171 - .../lib/handlebars/compiler/compiler.js | 594 - .../lib/handlebars/compiler/helpers.js | 219 - .../compiler/javascript-compiler.js | 1292 - .../lib/handlebars/compiler/parser.js | 622 - .../lib/handlebars/compiler/printer.js | 178 - .../lib/handlebars/compiler/visitor.js | 136 - .../handlebars/compiler/whitespace-control.js | 234 - .../handlebars/lib/handlebars/decorators.js | 5 - .../lib/handlebars/decorators/inline.js | 22 - .../handlebars/lib/handlebars/exception.js | 68 - .../handlebars/lib/handlebars/helpers.js | 26 - .../helpers/block-helper-missing.js | 35 - .../handlebars/lib/handlebars/helpers/each.js | 101 - .../lib/handlebars/helpers/helper-missing.js | 15 - .../handlebars/lib/handlebars/helpers/if.js | 33 - .../handlebars/lib/handlebars/helpers/log.js | 19 - .../lib/handlebars/helpers/lookup.js | 9 - .../handlebars/lib/handlebars/helpers/with.js | 39 - .../internal/create-new-lookup-object.js | 11 - .../lib/handlebars/internal/proto-access.js | 70 - .../lib/handlebars/internal/wrapHelper.js | 13 - .../handlebars/lib/handlebars/logger.js | 39 - .../handlebars/lib/handlebars/no-conflict.js | 12 - .../handlebars/lib/handlebars/runtime.js | 450 - .../handlebars/lib/handlebars/safe-string.js | 10 - .../handlebars/lib/handlebars/utils.js | 116 - node_modules/handlebars/lib/index.js | 25 - node_modules/handlebars/lib/precompiler.js | 340 - .../node_modules/source-map/CHANGELOG.md | 301 - .../node_modules/source-map/LICENSE | 28 - .../node_modules/source-map/README.md | 742 - .../source-map/dist/source-map.debug.js | 3234 - .../source-map/dist/source-map.js | 3233 - .../source-map/dist/source-map.min.js | 2 - .../source-map/dist/source-map.min.js.map | 1 - .../node_modules/source-map/lib/array-set.js | 121 - .../node_modules/source-map/lib/base64-vlq.js | 140 - .../node_modules/source-map/lib/base64.js | 67 - .../source-map/lib/binary-search.js | 111 - .../source-map/lib/mapping-list.js | 79 - .../node_modules/source-map/lib/quick-sort.js | 114 - .../source-map/lib/source-map-consumer.js | 1145 - .../source-map/lib/source-map-generator.js | 425 - .../source-map/lib/source-node.js | 413 - .../node_modules/source-map/lib/util.js | 488 - .../node_modules/source-map/package.json | 212 - .../node_modules/source-map/source-map.d.ts | 98 - .../node_modules/source-map/source-map.js | 8 - node_modules/handlebars/package.json | 167 - node_modules/handlebars/print-script | 95 - node_modules/handlebars/release-notes.md | 1091 - node_modules/handlebars/runtime.d.ts | 5 - node_modules/handlebars/runtime.js | 3 - node_modules/handlebars/types/index.d.ts | 422 - node_modules/has-value/LICENSE | 21 - node_modules/has-value/README.md | 149 - node_modules/has-value/index.js | 16 - node_modules/has-value/package.json | 124 - node_modules/has-values/LICENSE | 21 - node_modules/has-values/README.md | 129 - node_modules/has-values/index.js | 60 - .../has-values/node_modules/kind-of/LICENSE | 21 - .../has-values/node_modules/kind-of/README.md | 267 - .../has-values/node_modules/kind-of/index.js | 119 - .../node_modules/kind-of/package.json | 143 - node_modules/has-values/package.json | 119 - node_modules/helper-date/LICENSE | 21 - node_modules/helper-date/README.md | 154 - node_modules/helper-date/index.js | 68 - node_modules/helper-date/package.json | 133 - node_modules/helper-markdown/LICENSE | 21 - node_modules/helper-markdown/README.md | 211 - node_modules/helper-markdown/index.js | 53 - node_modules/helper-markdown/package.json | 125 - node_modules/helper-md/LICENSE | 21 - node_modules/helper-md/README.md | 106 - node_modules/helper-md/index.js | 117 - .../node_modules/extend-shallow/LICENSE | 21 - .../node_modules/extend-shallow/README.md | 61 - .../node_modules/extend-shallow/index.js | 33 - .../node_modules/extend-shallow/package.json | 87 - node_modules/helper-md/package.json | 135 - node_modules/highlight.js/LICENSE | 29 - node_modules/highlight.js/README.md | 426 - node_modules/highlight.js/deprecated.js | 26 - node_modules/highlight.js/docs/api.rst | 151 - .../highlight.js/docs/building-testing.rst | 88 - .../docs/css-classes-reference.rst | 140 - node_modules/highlight.js/docs/index.rst | 44 - .../docs/language-contribution.rst | 77 - .../highlight.js/docs/language-guide.rst | 284 - .../highlight.js/docs/language-requests.rst | 17 - .../highlight.js/docs/line-numbers.rst | 39 - .../highlight.js/docs/maintainers-guide.rst | 43 - node_modules/highlight.js/docs/reference.rst | 361 - .../highlight.js/docs/style-guide.rst | 106 - node_modules/highlight.js/lib/highlight.js | 1188 - node_modules/highlight.js/lib/index.js | 189 - node_modules/highlight.js/lib/languages/1c.js | 509 - .../highlight.js/lib/languages/abnf.js | 67 - .../highlight.js/lib/languages/accesslog.js | 64 - .../lib/languages/actionscript.js | 73 - .../highlight.js/lib/languages/ada.js | 172 - .../highlight.js/lib/languages/angelscript.js | 106 - .../highlight.js/lib/languages/apache.js | 45 - .../highlight.js/lib/languages/applescript.js | 85 - .../highlight.js/lib/languages/arcade.js | 137 - .../highlight.js/lib/languages/arduino.js | 98 - .../highlight.js/lib/languages/armasm.js | 91 - .../highlight.js/lib/languages/asciidoc.js | 187 - .../highlight.js/lib/languages/aspectj.js | 144 - .../highlight.js/lib/languages/autohotkey.js | 57 - .../highlight.js/lib/languages/autoit.js | 135 - .../highlight.js/lib/languages/avrasm.js | 61 - .../highlight.js/lib/languages/awk.js | 52 - .../highlight.js/lib/languages/axapta.js | 30 - .../highlight.js/lib/languages/bash.js | 80 - .../highlight.js/lib/languages/basic.js | 50 - .../highlight.js/lib/languages/bnf.js | 28 - .../highlight.js/lib/languages/brainfuck.js | 36 - .../highlight.js/lib/languages/cal.js | 79 - .../highlight.js/lib/languages/capnproto.js | 48 - .../highlight.js/lib/languages/ceylon.js | 66 - .../highlight.js/lib/languages/clean.js | 26 - .../lib/languages/clojure-repl.js | 14 - .../highlight.js/lib/languages/clojure.js | 95 - .../highlight.js/lib/languages/cmake.js | 52 - .../lib/languages/coffeescript.js | 145 - .../highlight.js/lib/languages/coq.js | 66 - .../highlight.js/lib/languages/cos.js | 123 - .../highlight.js/lib/languages/cpp.js | 218 - .../highlight.js/lib/languages/crmsh.js | 93 - .../highlight.js/lib/languages/crystal.js | 187 - node_modules/highlight.js/lib/languages/cs.js | 184 - .../highlight.js/lib/languages/csp.js | 21 - .../highlight.js/lib/languages/css.js | 125 - node_modules/highlight.js/lib/languages/d.js | 257 - .../highlight.js/lib/languages/dart.js | 122 - .../highlight.js/lib/languages/delphi.js | 68 - .../highlight.js/lib/languages/diff.js | 39 - .../highlight.js/lib/languages/django.js | 63 - .../highlight.js/lib/languages/dns.js | 28 - .../highlight.js/lib/languages/dockerfile.js | 21 - .../highlight.js/lib/languages/dos.js | 51 - .../highlight.js/lib/languages/dsconfig.js | 46 - .../highlight.js/lib/languages/dts.js | 123 - .../highlight.js/lib/languages/dust.js | 31 - .../highlight.js/lib/languages/ebnf.js | 39 - .../highlight.js/lib/languages/elixir.js | 163 - .../highlight.js/lib/languages/elm.js | 89 - .../highlight.js/lib/languages/erb.js | 14 - .../highlight.js/lib/languages/erlang-repl.js | 45 - .../highlight.js/lib/languages/erlang.js | 145 - .../highlight.js/lib/languages/excel.js | 47 - .../highlight.js/lib/languages/fix.js | 28 - .../highlight.js/lib/languages/flix.js | 44 - .../highlight.js/lib/languages/fortran.js | 70 - .../highlight.js/lib/languages/fsharp.js | 58 - .../highlight.js/lib/languages/gams.js | 153 - .../highlight.js/lib/languages/gauss.js | 290 - .../highlight.js/lib/languages/gcode.js | 66 - .../highlight.js/lib/languages/gherkin.js | 36 - .../highlight.js/lib/languages/glsl.js | 116 - .../highlight.js/lib/languages/gml.js | 872 - node_modules/highlight.js/lib/languages/go.js | 53 - .../highlight.js/lib/languages/golo.js | 22 - .../highlight.js/lib/languages/gradle.js | 34 - .../highlight.js/lib/languages/groovy.js | 93 - .../highlight.js/lib/languages/haml.js | 106 - .../highlight.js/lib/languages/handlebars.js | 74 - .../highlight.js/lib/languages/haskell.js | 121 - .../highlight.js/lib/languages/haxe.js | 111 - .../highlight.js/lib/languages/hsp.js | 45 - .../highlight.js/lib/languages/htmlbars.js | 70 - .../highlight.js/lib/languages/http.js | 40 - node_modules/highlight.js/lib/languages/hy.js | 101 - .../highlight.js/lib/languages/inform7.js | 56 - .../highlight.js/lib/languages/ini.js | 76 - .../highlight.js/lib/languages/irpf90.js | 75 - .../highlight.js/lib/languages/isbl.js | 3172 - .../highlight.js/lib/languages/java.js | 107 - .../highlight.js/lib/languages/javascript.js | 241 - .../highlight.js/lib/languages/jboss-cli.js | 46 - .../highlight.js/lib/languages/json.js | 43 - .../highlight.js/lib/languages/julia-repl.js | 23 - .../highlight.js/lib/languages/julia.js | 161 - .../highlight.js/lib/languages/kotlin.js | 216 - .../highlight.js/lib/languages/lasso.js | 162 - .../highlight.js/lib/languages/ldif.js | 22 - .../highlight.js/lib/languages/leaf.js | 39 - .../highlight.js/lib/languages/less.js | 139 - .../highlight.js/lib/languages/lisp.js | 102 - .../lib/languages/livecodeserver.js | 160 - .../highlight.js/lib/languages/livescript.js | 153 - .../highlight.js/lib/languages/llvm.js | 88 - .../highlight.js/lib/languages/lsl.js | 83 - .../highlight.js/lib/languages/lua.js | 65 - .../highlight.js/lib/languages/makefile.js | 72 - .../highlight.js/lib/languages/markdown.js | 107 - .../highlight.js/lib/languages/mathematica.js | 48 - .../highlight.js/lib/languages/matlab.js | 95 - .../highlight.js/lib/languages/maxima.js | 405 - .../highlight.js/lib/languages/mel.js | 224 - .../highlight.js/lib/languages/mercury.js | 83 - .../highlight.js/lib/languages/mipsasm.js | 86 - .../highlight.js/lib/languages/mizar.js | 18 - .../highlight.js/lib/languages/mojolicious.js | 24 - .../highlight.js/lib/languages/monkey.js | 74 - .../highlight.js/lib/languages/moonscript.js | 111 - .../highlight.js/lib/languages/n1ql.js | 68 - .../highlight.js/lib/languages/nginx.js | 92 - .../highlight.js/lib/languages/nimrod.js | 54 - .../highlight.js/lib/languages/nix.js | 48 - .../highlight.js/lib/languages/nsis.js | 105 - .../highlight.js/lib/languages/objectivec.js | 95 - .../highlight.js/lib/languages/ocaml.js | 70 - .../highlight.js/lib/languages/openscad.js | 56 - .../highlight.js/lib/languages/oxygene.js | 69 - .../highlight.js/lib/languages/parser3.js | 47 - .../highlight.js/lib/languages/perl.js | 156 - node_modules/highlight.js/lib/languages/pf.js | 51 - .../highlight.js/lib/languages/pgsql.js | 487 - .../highlight.js/lib/languages/php.js | 126 - .../highlight.js/lib/languages/plaintext.js | 5 - .../highlight.js/lib/languages/pony.js | 74 - .../highlight.js/lib/languages/powershell.js | 242 - .../highlight.js/lib/languages/processing.js | 47 - .../highlight.js/lib/languages/profile.js | 29 - .../highlight.js/lib/languages/prolog.js | 87 - .../highlight.js/lib/languages/properties.js | 69 - .../highlight.js/lib/languages/protobuf.js | 35 - .../highlight.js/lib/languages/puppet.js | 114 - .../highlight.js/lib/languages/purebasic.js | 84 - .../highlight.js/lib/languages/python.js | 123 - node_modules/highlight.js/lib/languages/q.js | 22 - .../highlight.js/lib/languages/qml.js | 168 - node_modules/highlight.js/lib/languages/r.js | 69 - .../highlight.js/lib/languages/reasonml.js | 299 - .../highlight.js/lib/languages/rib.js | 26 - .../highlight.js/lib/languages/roboconf.js | 66 - .../highlight.js/lib/languages/routeros.js | 158 - .../highlight.js/lib/languages/rsl.js | 35 - .../highlight.js/lib/languages/ruby.js | 184 - .../lib/languages/ruleslanguage.js | 60 - .../highlight.js/lib/languages/rust.js | 107 - .../highlight.js/lib/languages/sas.js | 125 - .../highlight.js/lib/languages/scala.js | 114 - .../highlight.js/lib/languages/scheme.js | 143 - .../highlight.js/lib/languages/scilab.js | 53 - .../highlight.js/lib/languages/scss.js | 114 - .../highlight.js/lib/languages/shell.js | 14 - .../highlight.js/lib/languages/smali.js | 55 - .../highlight.js/lib/languages/smalltalk.js | 49 - .../highlight.js/lib/languages/sml.js | 65 - .../highlight.js/lib/languages/sqf.js | 426 - .../highlight.js/lib/languages/sql.js | 160 - .../highlight.js/lib/languages/stan.js | 219 - .../highlight.js/lib/languages/stata.js | 41 - .../highlight.js/lib/languages/step21.js | 46 - .../highlight.js/lib/languages/stylus.js | 444 - .../highlight.js/lib/languages/subunit.js | 33 - .../highlight.js/lib/languages/swift.js | 130 - .../lib/languages/taggerscript.js | 43 - .../highlight.js/lib/languages/tap.js | 35 - .../highlight.js/lib/languages/tcl.js | 59 - .../highlight.js/lib/languages/tex.js | 61 - .../highlight.js/lib/languages/thrift.js | 34 - node_modules/highlight.js/lib/languages/tp.js | 83 - .../highlight.js/lib/languages/twig.js | 65 - .../highlight.js/lib/languages/typescript.js | 205 - .../highlight.js/lib/languages/vala.js | 49 - .../highlight.js/lib/languages/vbnet.js | 55 - .../lib/languages/vbscript-html.js | 11 - .../highlight.js/lib/languages/vbscript.js | 38 - .../highlight.js/lib/languages/verilog.js | 98 - .../highlight.js/lib/languages/vhdl.js | 60 - .../highlight.js/lib/languages/vim.js | 109 - .../highlight.js/lib/languages/x86asm.js | 135 - node_modules/highlight.js/lib/languages/xl.js | 72 - .../highlight.js/lib/languages/xml.js | 145 - .../highlight.js/lib/languages/xquery.js | 169 - .../highlight.js/lib/languages/yaml.js | 99 - .../highlight.js/lib/languages/zephir.js | 106 - node_modules/highlight.js/package.json | 1177 - node_modules/highlight.js/scss/a11y-dark.scss | 99 - .../highlight.js/scss/a11y-light.scss | 99 - node_modules/highlight.js/scss/agate.scss | 108 - .../highlight.js/scss/an-old-hope.scss | 89 - .../highlight.js/scss/androidstudio.scss | 66 - .../highlight.js/scss/arduino-light.scss | 87 - node_modules/highlight.js/scss/arta.scss | 73 - node_modules/highlight.js/scss/ascetic.scss | 45 - .../highlight.js/scss/atelier-cave-dark.scss | 83 - .../highlight.js/scss/atelier-cave-light.scss | 85 - .../highlight.js/scss/atelier-dune-dark.scss | 69 - .../highlight.js/scss/atelier-dune-light.scss | 69 - .../scss/atelier-estuary-dark.scss | 84 - .../scss/atelier-estuary-light.scss | 84 - .../scss/atelier-forest-dark.scss | 69 - .../scss/atelier-forest-light.scss | 69 - .../highlight.js/scss/atelier-heath-dark.scss | 69 - .../scss/atelier-heath-light.scss | 69 - .../scss/atelier-lakeside-dark.scss | 69 - .../scss/atelier-lakeside-light.scss | 69 - .../scss/atelier-plateau-dark.scss | 84 - .../scss/atelier-plateau-light.scss | 84 - .../scss/atelier-savanna-dark.scss | 84 - .../scss/atelier-savanna-light.scss | 84 - .../scss/atelier-seaside-dark.scss | 69 - .../scss/atelier-seaside-light.scss | 69 - .../scss/atelier-sulphurpool-dark.scss | 69 - .../scss/atelier-sulphurpool-light.scss | 69 - .../scss/atom-one-dark-reasonable.scss | 75 - .../highlight.js/scss/atom-one-dark.scss | 96 - .../highlight.js/scss/atom-one-light.scss | 96 - .../highlight.js/scss/brown-paper.scss | 64 - .../highlight.js/scss/brown-papersq.png | Bin 18198 -> 0 bytes .../highlight.js/scss/codepen-embed.scss | 60 - .../highlight.js/scss/color-brewer.scss | 71 - node_modules/highlight.js/scss/darcula.scss | 74 - node_modules/highlight.js/scss/dark.scss | 63 - node_modules/highlight.js/scss/darkula.scss | 6 - node_modules/highlight.js/scss/default.scss | 99 - node_modules/highlight.js/scss/docco.scss | 97 - node_modules/highlight.js/scss/dracula.scss | 76 - node_modules/highlight.js/scss/far.scss | 71 - .../highlight.js/scss/foundation.scss | 89 - .../highlight.js/scss/github-gist.scss | 79 - node_modules/highlight.js/scss/github.scss | 99 - node_modules/highlight.js/scss/gml.scss | 78 - .../highlight.js/scss/googlecode.scss | 89 - .../highlight.js/scss/gradient-dark.scss | 122 - node_modules/highlight.js/scss/grayscale.scss | 101 - .../highlight.js/scss/gruvbox-dark.scss | 108 - .../highlight.js/scss/gruvbox-light.scss | 108 - node_modules/highlight.js/scss/hopscotch.scss | 84 - node_modules/highlight.js/scss/hybrid.scss | 102 - node_modules/highlight.js/scss/idea.scss | 97 - node_modules/highlight.js/scss/ir-black.scss | 73 - .../highlight.js/scss/isbl-editor-dark.scss | 112 - .../highlight.js/scss/isbl-editor-light.scss | 111 - .../highlight.js/scss/kimbie.dark.scss | 74 - .../highlight.js/scss/kimbie.light.scss | 74 - node_modules/highlight.js/scss/lightfair.scss | 88 - node_modules/highlight.js/scss/magula.scss | 70 - node_modules/highlight.js/scss/mono-blue.scss | 56 - .../highlight.js/scss/monokai-sublime.scss | 83 - node_modules/highlight.js/scss/monokai.scss | 71 - node_modules/highlight.js/scss/night-owl.scss | 182 - node_modules/highlight.js/scss/nord.scss | 309 - node_modules/highlight.js/scss/obsidian.scss | 88 - node_modules/highlight.js/scss/ocean.scss | 74 - .../highlight.js/scss/paraiso-dark.scss | 72 - .../highlight.js/scss/paraiso-light.scss | 72 - node_modules/highlight.js/scss/pojoaque.jpg | Bin 1186 -> 0 bytes node_modules/highlight.js/scss/pojoaque.scss | 83 - node_modules/highlight.js/scss/purebasic.scss | 96 - .../highlight.js/scss/qtcreator_dark.scss | 83 - .../highlight.js/scss/qtcreator_light.scss | 83 - .../highlight.js/scss/railscasts.scss | 106 - node_modules/highlight.js/scss/rainbow.scss | 85 - node_modules/highlight.js/scss/routeros.scss | 108 - .../highlight.js/scss/school-book.png | Bin 486 -> 0 bytes .../highlight.js/scss/school-book.scss | 69 - .../highlight.js/scss/shades-of-purple.scss | 96 - .../highlight.js/scss/solarized-dark.scss | 84 - .../highlight.js/scss/solarized-light.scss | 84 - node_modules/highlight.js/scss/sunburst.scss | 102 - .../scss/tomorrow-night-blue.scss | 75 - .../scss/tomorrow-night-bright.scss | 74 - .../scss/tomorrow-night-eighties.scss | 74 - .../highlight.js/scss/tomorrow-night.scss | 75 - node_modules/highlight.js/scss/tomorrow.scss | 72 - node_modules/highlight.js/scss/vs.scss | 68 - node_modules/highlight.js/scss/vs2015.scss | 115 - node_modules/highlight.js/scss/xcode.scss | 104 - node_modules/highlight.js/scss/xt256.scss | 92 - node_modules/highlight.js/scss/zenburn.scss | 80 - .../highlight.js/styles/a11y-dark.css | 99 - .../highlight.js/styles/a11y-light.css | 99 - node_modules/highlight.js/styles/agate.css | 108 - .../highlight.js/styles/an-old-hope.css | 89 - .../highlight.js/styles/androidstudio.css | 66 - .../highlight.js/styles/arduino-light.css | 87 - node_modules/highlight.js/styles/arta.css | 73 - node_modules/highlight.js/styles/ascetic.css | 45 - .../highlight.js/styles/atelier-cave-dark.css | 83 - .../styles/atelier-cave-light.css | 85 - .../highlight.js/styles/atelier-dune-dark.css | 69 - .../styles/atelier-dune-light.css | 69 - .../styles/atelier-estuary-dark.css | 84 - .../styles/atelier-estuary-light.css | 84 - .../styles/atelier-forest-dark.css | 69 - .../styles/atelier-forest-light.css | 69 - .../styles/atelier-heath-dark.css | 69 - .../styles/atelier-heath-light.css | 69 - .../styles/atelier-lakeside-dark.css | 69 - .../styles/atelier-lakeside-light.css | 69 - .../styles/atelier-plateau-dark.css | 84 - .../styles/atelier-plateau-light.css | 84 - .../styles/atelier-savanna-dark.css | 84 - .../styles/atelier-savanna-light.css | 84 - .../styles/atelier-seaside-dark.css | 69 - .../styles/atelier-seaside-light.css | 69 - .../styles/atelier-sulphurpool-dark.css | 69 - .../styles/atelier-sulphurpool-light.css | 69 - .../styles/atom-one-dark-reasonable.css | 75 - .../highlight.js/styles/atom-one-dark.css | 96 - .../highlight.js/styles/atom-one-light.css | 96 - .../highlight.js/styles/brown-paper.css | 64 - .../highlight.js/styles/brown-papersq.png | Bin 18198 -> 0 bytes .../highlight.js/styles/codepen-embed.css | 60 - .../highlight.js/styles/color-brewer.css | 71 - node_modules/highlight.js/styles/darcula.css | 74 - node_modules/highlight.js/styles/dark.css | 63 - node_modules/highlight.js/styles/darkula.css | 6 - node_modules/highlight.js/styles/default.css | 99 - node_modules/highlight.js/styles/docco.css | 97 - node_modules/highlight.js/styles/dracula.css | 76 - node_modules/highlight.js/styles/far.css | 71 - .../highlight.js/styles/foundation.css | 89 - .../highlight.js/styles/github-gist.css | 79 - node_modules/highlight.js/styles/github.css | 99 - node_modules/highlight.js/styles/gml.css | 78 - .../highlight.js/styles/googlecode.css | 89 - .../highlight.js/styles/gradient-dark.css | 122 - .../highlight.js/styles/grayscale.css | 101 - .../highlight.js/styles/gruvbox-dark.css | 108 - .../highlight.js/styles/gruvbox-light.css | 108 - .../highlight.js/styles/hopscotch.css | 84 - node_modules/highlight.js/styles/hybrid.css | 102 - node_modules/highlight.js/styles/idea.css | 97 - node_modules/highlight.js/styles/ir-black.css | 73 - .../highlight.js/styles/isbl-editor-dark.css | 112 - .../highlight.js/styles/isbl-editor-light.css | 111 - .../highlight.js/styles/kimbie.dark.css | 74 - .../highlight.js/styles/kimbie.light.css | 74 - .../highlight.js/styles/lightfair.css | 88 - node_modules/highlight.js/styles/magula.css | 70 - .../highlight.js/styles/mono-blue.css | 56 - .../highlight.js/styles/monokai-sublime.css | 83 - node_modules/highlight.js/styles/monokai.css | 71 - .../highlight.js/styles/night-owl.css | 182 - node_modules/highlight.js/styles/nord.css | 309 - node_modules/highlight.js/styles/obsidian.css | 88 - node_modules/highlight.js/styles/ocean.css | 74 - .../highlight.js/styles/paraiso-dark.css | 72 - .../highlight.js/styles/paraiso-light.css | 72 - node_modules/highlight.js/styles/pojoaque.css | 83 - node_modules/highlight.js/styles/pojoaque.jpg | Bin 1186 -> 0 bytes .../highlight.js/styles/purebasic.css | 96 - .../highlight.js/styles/qtcreator_dark.css | 83 - .../highlight.js/styles/qtcreator_light.css | 83 - .../highlight.js/styles/railscasts.css | 106 - node_modules/highlight.js/styles/rainbow.css | 85 - node_modules/highlight.js/styles/routeros.css | 108 - .../highlight.js/styles/school-book.css | 69 - .../highlight.js/styles/school-book.png | Bin 486 -> 0 bytes .../highlight.js/styles/shades-of-purple.css | 96 - .../highlight.js/styles/solarized-dark.css | 84 - .../highlight.js/styles/solarized-light.css | 84 - node_modules/highlight.js/styles/sunburst.css | 102 - .../styles/tomorrow-night-blue.css | 75 - .../styles/tomorrow-night-bright.css | 74 - .../styles/tomorrow-night-eighties.css | 74 - .../highlight.js/styles/tomorrow-night.css | 75 - node_modules/highlight.js/styles/tomorrow.css | 72 - node_modules/highlight.js/styles/vs.css | 68 - node_modules/highlight.js/styles/vs2015.css | 115 - node_modules/highlight.js/styles/xcode.css | 104 - node_modules/highlight.js/styles/xt256.css | 92 - node_modules/highlight.js/styles/zenburn.css | 80 - node_modules/html-tag/LICENSE | 21 - node_modules/html-tag/README.md | 142 - node_modules/html-tag/index.js | 45 - node_modules/html-tag/package.json | 102 - node_modules/info-symbol/LICENSE | 21 - node_modules/info-symbol/README.md | 52 - node_modules/info-symbol/index.js | 1 - node_modules/info-symbol/package.json | 83 - node_modules/inherits/LICENSE | 16 - node_modules/inherits/README.md | 42 - node_modules/inherits/inherits.js | 9 - node_modules/inherits/inherits_browser.js | 27 - node_modules/inherits/package.json | 65 - node_modules/is-accessor-descriptor/LICENSE | 21 - node_modules/is-accessor-descriptor/README.md | 123 - node_modules/is-accessor-descriptor/index.js | 69 - .../node_modules/kind-of/LICENSE | 21 - .../node_modules/kind-of/README.md | 261 - .../node_modules/kind-of/index.js | 116 - .../node_modules/kind-of/package.json | 143 - .../is-accessor-descriptor/package.json | 98 - node_modules/is-buffer/LICENSE | 21 - node_modules/is-buffer/README.md | 53 - node_modules/is-buffer/index.js | 21 - node_modules/is-buffer/package.json | 87 - node_modules/is-buffer/test/basic.js | 24 - node_modules/is-data-descriptor/LICENSE | 21 - node_modules/is-data-descriptor/README.md | 128 - node_modules/is-data-descriptor/index.js | 55 - .../node_modules/kind-of/LICENSE | 21 - .../node_modules/kind-of/README.md | 261 - .../node_modules/kind-of/index.js | 116 - .../node_modules/kind-of/package.json | 143 - node_modules/is-data-descriptor/package.json | 97 - node_modules/is-descriptor/LICENSE | 21 - node_modules/is-descriptor/README.md | 193 - node_modules/is-descriptor/index.js | 22 - .../node_modules/kind-of/LICENSE | 21 - .../node_modules/kind-of/README.md | 342 - .../node_modules/kind-of/index.js | 147 - .../node_modules/kind-of/package.json | 150 - node_modules/is-descriptor/package.json | 122 - node_modules/is-even/LICENSE | 21 - node_modules/is-even/README.md | 73 - node_modules/is-even/index.js | 14 - node_modules/is-even/package.json | 85 - node_modules/is-extendable/LICENSE | 21 - node_modules/is-extendable/README.md | 72 - node_modules/is-extendable/index.js | 13 - node_modules/is-extendable/package.json | 93 - node_modules/is-extglob/LICENSE | 21 - node_modules/is-extglob/README.md | 107 - node_modules/is-extglob/index.js | 20 - node_modules/is-extglob/package.json | 104 - node_modules/is-glob/LICENSE | 21 - node_modules/is-glob/README.md | 206 - node_modules/is-glob/index.js | 48 - node_modules/is-glob/package.json | 128 - node_modules/is-number/LICENSE | 21 - node_modules/is-number/README.md | 115 - node_modules/is-number/index.js | 22 - .../is-number/node_modules/kind-of/LICENSE | 21 - .../is-number/node_modules/kind-of/README.md | 261 - .../is-number/node_modules/kind-of/index.js | 116 - .../node_modules/kind-of/package.json | 143 - node_modules/is-number/package.json | 129 - node_modules/is-odd/LICENSE | 21 - node_modules/is-odd/README.md | 66 - node_modules/is-odd/index.js | 20 - node_modules/is-odd/package.json | 102 - node_modules/is-plain-object/LICENSE | 21 - node_modules/is-plain-object/README.md | 104 - node_modules/is-plain-object/index.d.ts | 5 - node_modules/is-plain-object/index.js | 37 - node_modules/is-plain-object/package.json | 127 - node_modules/is-self-closing/LICENSE | 21 - node_modules/is-self-closing/README.md | 87 - node_modules/is-self-closing/index.js | 10 - node_modules/is-self-closing/package.json | 96 - node_modules/is-windows/LICENSE | 21 - node_modules/is-windows/README.md | 95 - node_modules/is-windows/index.js | 27 - node_modules/is-windows/package.json | 115 - node_modules/isarray/.npmignore | 1 - node_modules/isarray/.travis.yml | 4 - node_modules/isarray/Makefile | 6 - node_modules/isarray/README.md | 60 - node_modules/isarray/component.json | 19 - node_modules/isarray/index.js | 5 - node_modules/isarray/package.json | 78 - node_modules/isarray/test.js | 20 - node_modules/isobject/LICENSE | 21 - node_modules/isobject/README.md | 122 - node_modules/isobject/index.d.ts | 5 - node_modules/isobject/index.js | 12 - node_modules/isobject/package.json | 133 - node_modules/kind-of/CHANGELOG.md | 160 - node_modules/kind-of/LICENSE | 21 - node_modules/kind-of/README.md | 367 - node_modules/kind-of/index.js | 129 - node_modules/kind-of/package.json | 160 - node_modules/lazy-cache/LICENSE | 21 - node_modules/lazy-cache/README.md | 195 - node_modules/lazy-cache/index.js | 73 - node_modules/lazy-cache/package.json | 110 - .../lodash._reinterpolate/LICENSE.txt | 22 - node_modules/lodash._reinterpolate/README.md | 20 - node_modules/lodash._reinterpolate/index.js | 13 - .../lodash._reinterpolate/package.json | 76 - node_modules/lodash.template/LICENSE | 47 - node_modules/lodash.template/README.md | 18 - node_modules/lodash.template/index.js | 1655 - node_modules/lodash.template/package.json | 65 - node_modules/lodash.templatesettings/LICENSE | 47 - .../lodash.templatesettings/README.md | 18 - node_modules/lodash.templatesettings/index.js | 382 - .../lodash.templatesettings/package.json | 64 - node_modules/log-ok/LICENSE | 21 - node_modules/log-ok/index.js | 20 - node_modules/log-ok/package.json | 88 - node_modules/log-utils/LICENSE | 21 - node_modules/log-utils/index.js | 224 - .../node_modules/ansi-colors/LICENSE | 21 - .../node_modules/ansi-colors/README.md | 94 - .../node_modules/ansi-colors/index.js | 434 - .../node_modules/ansi-colors/package.json | 157 - node_modules/log-utils/package.json | 152 - node_modules/logging-helpers/LICENSE | 21 - node_modules/logging-helpers/README.md | 136 - node_modules/logging-helpers/index.js | 322 - node_modules/logging-helpers/package.json | 111 - node_modules/map-cache/LICENSE | 21 - node_modules/map-cache/README.md | 145 - node_modules/map-cache/index.js | 100 - node_modules/map-cache/package.json | 95 - node_modules/map-visit/LICENSE | 21 - node_modules/map-visit/README.md | 155 - node_modules/map-visit/index.js | 37 - node_modules/map-visit/package.json | 117 - node_modules/micromatch/CHANGELOG.md | 37 - node_modules/micromatch/LICENSE | 21 - node_modules/micromatch/README.md | 1150 - node_modules/micromatch/index.js | 877 - node_modules/micromatch/lib/cache.js | 1 - node_modules/micromatch/lib/compilers.js | 77 - node_modules/micromatch/lib/parsers.js | 83 - node_modules/micromatch/lib/utils.js | 309 - node_modules/micromatch/package.json | 226 - node_modules/minimist/.travis.yml | 8 - node_modules/minimist/LICENSE | 18 - node_modules/minimist/example/parse.js | 2 - node_modules/minimist/index.js | 245 - node_modules/minimist/package.json | 80 - node_modules/minimist/readme.markdown | 95 - node_modules/minimist/test/all_bool.js | 32 - node_modules/minimist/test/bool.js | 178 - node_modules/minimist/test/dash.js | 31 - node_modules/minimist/test/default_bool.js | 35 - node_modules/minimist/test/dotted.js | 22 - node_modules/minimist/test/kv_short.js | 16 - node_modules/minimist/test/long.js | 31 - node_modules/minimist/test/num.js | 36 - node_modules/minimist/test/parse.js | 197 - node_modules/minimist/test/parse_modified.js | 9 - node_modules/minimist/test/proto.js | 44 - node_modules/minimist/test/short.js | 67 - node_modules/minimist/test/stop_early.js | 15 - node_modules/minimist/test/unknown.js | 102 - node_modules/minimist/test/whitespace.js | 8 - node_modules/mixin-deep/LICENSE | 21 - node_modules/mixin-deep/README.md | 80 - node_modules/mixin-deep/index.js | 64 - .../node_modules/is-extendable/LICENSE | 21 - .../node_modules/is-extendable/README.md | 88 - .../node_modules/is-extendable/index.d.ts | 5 - .../node_modules/is-extendable/index.js | 14 - .../node_modules/is-extendable/package.json | 102 - node_modules/mixin-deep/package.json | 102 - node_modules/moment/CHANGELOG.md | 970 - node_modules/moment/LICENSE | 22 - node_modules/moment/README.md | 55 - node_modules/moment/dist/locale/af.js | 71 - node_modules/moment/dist/locale/ar-dz.js | 156 - node_modules/moment/dist/locale/ar-kw.js | 54 - node_modules/moment/dist/locale/ar-ly.js | 171 - node_modules/moment/dist/locale/ar-ma.js | 55 - node_modules/moment/dist/locale/ar-sa.js | 104 - node_modules/moment/dist/locale/ar-tn.js | 54 - node_modules/moment/dist/locale/ar.js | 189 - node_modules/moment/dist/locale/az.js | 101 - node_modules/moment/dist/locale/be.js | 141 - node_modules/moment/dist/locale/bg.js | 87 - node_modules/moment/dist/locale/bm.js | 52 - node_modules/moment/dist/locale/bn-bd.js | 128 - node_modules/moment/dist/locale/bn.js | 118 - node_modules/moment/dist/locale/bo.js | 122 - node_modules/moment/dist/locale/br.js | 165 - node_modules/moment/dist/locale/bs.js | 149 - node_modules/moment/dist/locale/ca.js | 97 - node_modules/moment/dist/locale/cs.js | 171 - node_modules/moment/dist/locale/cv.js | 62 - node_modules/moment/dist/locale/cy.js | 97 - node_modules/moment/dist/locale/da.js | 53 - node_modules/moment/dist/locale/de-at.js | 79 - node_modules/moment/dist/locale/de-ch.js | 78 - node_modules/moment/dist/locale/de.js | 78 - node_modules/moment/dist/locale/dv.js | 90 - node_modules/moment/dist/locale/el.js | 104 - node_modules/moment/dist/locale/en-au.js | 68 - node_modules/moment/dist/locale/en-ca.js | 64 - node_modules/moment/dist/locale/en-gb.js | 68 - node_modules/moment/dist/locale/en-ie.js | 68 - node_modules/moment/dist/locale/en-il.js | 64 - node_modules/moment/dist/locale/en-in.js | 68 - node_modules/moment/dist/locale/en-nz.js | 68 - node_modules/moment/dist/locale/en-sg.js | 68 - node_modules/moment/dist/locale/eo.js | 68 - node_modules/moment/dist/locale/es-do.js | 104 - node_modules/moment/dist/locale/es-mx.js | 106 - node_modules/moment/dist/locale/es-us.js | 106 - node_modules/moment/dist/locale/es.js | 106 - node_modules/moment/dist/locale/et.js | 78 - node_modules/moment/dist/locale/eu.js | 63 - node_modules/moment/dist/locale/fa.js | 110 - node_modules/moment/dist/locale/fi.js | 121 - node_modules/moment/dist/locale/fil.js | 58 - node_modules/moment/dist/locale/fo.js | 56 - node_modules/moment/dist/locale/fr-ca.js | 69 - node_modules/moment/dist/locale/fr-ch.js | 73 - node_modules/moment/dist/locale/fr.js | 104 - node_modules/moment/dist/locale/fy.js | 77 - node_modules/moment/dist/locale/ga.js | 95 - node_modules/moment/dist/locale/gd.js | 95 - node_modules/moment/dist/locale/gl.js | 74 - node_modules/moment/dist/locale/gom-deva.js | 124 - node_modules/moment/dist/locale/gom-latn.js | 124 - node_modules/moment/dist/locale/gu.js | 121 - node_modules/moment/dist/locale/he.js | 94 - node_modules/moment/dist/locale/hi.js | 164 - node_modules/moment/dist/locale/hr.js | 154 - node_modules/moment/dist/locale/hu.js | 118 - node_modules/moment/dist/locale/hy-am.js | 92 - node_modules/moment/dist/locale/id.js | 76 - node_modules/moment/dist/locale/is.js | 139 - node_modules/moment/dist/locale/it-ch.js | 64 - node_modules/moment/dist/locale/it.js | 106 - node_modules/moment/dist/locale/ja.js | 148 - node_modules/moment/dist/locale/jv.js | 76 - node_modules/moment/dist/locale/ka.js | 92 - node_modules/moment/dist/locale/kk.js | 82 - node_modules/moment/dist/locale/km.js | 102 - node_modules/moment/dist/locale/kn.js | 123 - node_modules/moment/dist/locale/ko.js | 75 - node_modules/moment/dist/locale/ku.js | 118 - node_modules/moment/dist/locale/ky.js | 84 - node_modules/moment/dist/locale/lb.js | 135 - node_modules/moment/dist/locale/lo.js | 65 - node_modules/moment/dist/locale/lt.js | 123 - node_modules/moment/dist/locale/lv.js | 93 - node_modules/moment/dist/locale/me.js | 118 - node_modules/moment/dist/locale/mi.js | 59 - node_modules/moment/dist/locale/mk.js | 85 - node_modules/moment/dist/locale/ml.js | 80 - node_modules/moment/dist/locale/mn.js | 99 - node_modules/moment/dist/locale/mr.js | 202 - node_modules/moment/dist/locale/ms-my.js | 76 - node_modules/moment/dist/locale/ms.js | 75 - node_modules/moment/dist/locale/mt.js | 55 - node_modules/moment/dist/locale/my.js | 91 - node_modules/moment/dist/locale/nb.js | 61 - node_modules/moment/dist/locale/ne.js | 120 - node_modules/moment/dist/locale/nl-be.js | 102 - node_modules/moment/dist/locale/nl.js | 104 - node_modules/moment/dist/locale/nn.js | 60 - node_modules/moment/dist/locale/oc-lnc.js | 83 - node_modules/moment/dist/locale/pa-in.js | 121 - node_modules/moment/dist/locale/pl.js | 139 - node_modules/moment/dist/locale/pt-br.js | 57 - node_modules/moment/dist/locale/pt.js | 62 - node_modules/moment/dist/locale/ro.js | 75 - node_modules/moment/dist/locale/ru.js | 206 - node_modules/moment/dist/locale/sd.js | 81 - node_modules/moment/dist/locale/se.js | 57 - node_modules/moment/dist/locale/si.js | 68 - node_modules/moment/dist/locale/sk.js | 144 - node_modules/moment/dist/locale/sl.js | 170 - node_modules/moment/dist/locale/sq.js | 65 - node_modules/moment/dist/locale/sr-cyrl.js | 116 - node_modules/moment/dist/locale/sr.js | 118 - node_modules/moment/dist/locale/ss.js | 83 - node_modules/moment/dist/locale/sv.js | 68 - node_modules/moment/dist/locale/sw.js | 54 - node_modules/moment/dist/locale/ta.js | 129 - node_modules/moment/dist/locale/te.js | 86 - node_modules/moment/dist/locale/tet.js | 68 - node_modules/moment/dist/locale/tg.js | 116 - node_modules/moment/dist/locale/th.js | 64 - node_modules/moment/dist/locale/tk.js | 91 - node_modules/moment/dist/locale/tl-ph.js | 57 - node_modules/moment/dist/locale/tlh.js | 125 - node_modules/moment/dist/locale/tr.js | 106 - node_modules/moment/dist/locale/tzl.js | 89 - node_modules/moment/dist/locale/tzm-latn.js | 53 - node_modules/moment/dist/locale/tzm.js | 53 - node_modules/moment/dist/locale/ug-cn.js | 110 - node_modules/moment/dist/locale/uk.js | 163 - node_modules/moment/dist/locale/ur.js | 82 - node_modules/moment/dist/locale/uz-latn.js | 53 - node_modules/moment/dist/locale/uz.js | 51 - node_modules/moment/dist/locale/vi.js | 79 - node_modules/moment/dist/locale/x-pseudo.js | 71 - node_modules/moment/dist/locale/yo.js | 53 - node_modules/moment/dist/locale/zh-cn.js | 120 - node_modules/moment/dist/locale/zh-hk.js | 101 - node_modules/moment/dist/locale/zh-mo.js | 100 - node_modules/moment/dist/locale/zh-tw.js | 99 - node_modules/moment/dist/moment.js | 5662 -- node_modules/moment/ender.js | 1 - node_modules/moment/locale/af.js | 82 - node_modules/moment/locale/ar-dz.js | 167 - node_modules/moment/locale/ar-kw.js | 65 - node_modules/moment/locale/ar-ly.js | 182 - node_modules/moment/locale/ar-ma.js | 66 - node_modules/moment/locale/ar-sa.js | 115 - node_modules/moment/locale/ar-tn.js | 65 - node_modules/moment/locale/ar.js | 200 - node_modules/moment/locale/az.js | 112 - node_modules/moment/locale/be.js | 152 - node_modules/moment/locale/bg.js | 98 - node_modules/moment/locale/bm.js | 62 - node_modules/moment/locale/bn-bd.js | 139 - node_modules/moment/locale/bn.js | 129 - node_modules/moment/locale/bo.js | 133 - node_modules/moment/locale/br.js | 176 - node_modules/moment/locale/bs.js | 160 - node_modules/moment/locale/ca.js | 108 - node_modules/moment/locale/cs.js | 182 - node_modules/moment/locale/cv.js | 73 - node_modules/moment/locale/cy.js | 108 - node_modules/moment/locale/da.js | 64 - node_modules/moment/locale/de-at.js | 90 - node_modules/moment/locale/de-ch.js | 87 - node_modules/moment/locale/de.js | 89 - node_modules/moment/locale/dv.js | 101 - node_modules/moment/locale/el.js | 115 - node_modules/moment/locale/en-au.js | 79 - node_modules/moment/locale/en-ca.js | 75 - node_modules/moment/locale/en-gb.js | 79 - node_modules/moment/locale/en-ie.js | 79 - node_modules/moment/locale/en-il.js | 75 - node_modules/moment/locale/en-in.js | 79 - node_modules/moment/locale/en-nz.js | 79 - node_modules/moment/locale/en-sg.js | 79 - node_modules/moment/locale/eo.js | 79 - node_modules/moment/locale/es-do.js | 115 - node_modules/moment/locale/es-mx.js | 117 - node_modules/moment/locale/es-us.js | 117 - node_modules/moment/locale/es.js | 117 - node_modules/moment/locale/et.js | 89 - node_modules/moment/locale/eu.js | 74 - node_modules/moment/locale/fa.js | 121 - node_modules/moment/locale/fi.js | 132 - node_modules/moment/locale/fil.js | 69 - node_modules/moment/locale/fo.js | 67 - node_modules/moment/locale/fr-ca.js | 80 - node_modules/moment/locale/fr-ch.js | 84 - node_modules/moment/locale/fr.js | 115 - node_modules/moment/locale/fy.js | 88 - node_modules/moment/locale/ga.js | 106 - node_modules/moment/locale/gd.js | 106 - node_modules/moment/locale/gl.js | 85 - node_modules/moment/locale/gom-deva.js | 135 - node_modules/moment/locale/gom-latn.js | 135 - node_modules/moment/locale/gu.js | 132 - node_modules/moment/locale/he.js | 105 - node_modules/moment/locale/hi.js | 175 - node_modules/moment/locale/hr.js | 165 - node_modules/moment/locale/hu.js | 129 - node_modules/moment/locale/hy-am.js | 103 - node_modules/moment/locale/id.js | 87 - node_modules/moment/locale/is.js | 150 - node_modules/moment/locale/it-ch.js | 75 - node_modules/moment/locale/it.js | 117 - node_modules/moment/locale/ja.js | 159 - node_modules/moment/locale/jv.js | 87 - node_modules/moment/locale/ka.js | 103 - node_modules/moment/locale/kk.js | 93 - node_modules/moment/locale/km.js | 113 - node_modules/moment/locale/kn.js | 134 - node_modules/moment/locale/ko.js | 86 - node_modules/moment/locale/ku.js | 129 - node_modules/moment/locale/ky.js | 95 - node_modules/moment/locale/lb.js | 146 - node_modules/moment/locale/lo.js | 76 - node_modules/moment/locale/lt.js | 134 - node_modules/moment/locale/lv.js | 104 - node_modules/moment/locale/me.js | 129 - node_modules/moment/locale/mi.js | 70 - node_modules/moment/locale/mk.js | 97 - node_modules/moment/locale/ml.js | 91 - node_modules/moment/locale/mn.js | 110 - node_modules/moment/locale/mr.js | 213 - node_modules/moment/locale/ms-my.js | 87 - node_modules/moment/locale/ms.js | 86 - node_modules/moment/locale/mt.js | 66 - node_modules/moment/locale/my.js | 102 - node_modules/moment/locale/nb.js | 72 - node_modules/moment/locale/ne.js | 131 - node_modules/moment/locale/nl-be.js | 113 - node_modules/moment/locale/nl.js | 115 - node_modules/moment/locale/nn.js | 71 - node_modules/moment/locale/oc-lnc.js | 94 - node_modules/moment/locale/pa-in.js | 132 - node_modules/moment/locale/pl.js | 150 - node_modules/moment/locale/pt-br.js | 68 - node_modules/moment/locale/pt.js | 73 - node_modules/moment/locale/ro.js | 86 - node_modules/moment/locale/ru.js | 217 - node_modules/moment/locale/sd.js | 92 - node_modules/moment/locale/se.js | 68 - node_modules/moment/locale/si.js | 79 - node_modules/moment/locale/sk.js | 155 - node_modules/moment/locale/sl.js | 181 - node_modules/moment/locale/sq.js | 76 - node_modules/moment/locale/sr-cyrl.js | 127 - node_modules/moment/locale/sr.js | 129 - node_modules/moment/locale/ss.js | 94 - node_modules/moment/locale/sv.js | 79 - node_modules/moment/locale/sw.js | 65 - node_modules/moment/locale/ta.js | 140 - node_modules/moment/locale/te.js | 97 - node_modules/moment/locale/tet.js | 79 - node_modules/moment/locale/tg.js | 127 - node_modules/moment/locale/th.js | 75 - node_modules/moment/locale/tk.js | 102 - node_modules/moment/locale/tl-ph.js | 68 - node_modules/moment/locale/tlh.js | 136 - node_modules/moment/locale/tr.js | 117 - node_modules/moment/locale/tzl.js | 100 - node_modules/moment/locale/tzm-latn.js | 64 - node_modules/moment/locale/tzm.js | 64 - node_modules/moment/locale/ug-cn.js | 121 - node_modules/moment/locale/uk.js | 174 - node_modules/moment/locale/ur.js | 93 - node_modules/moment/locale/uz-latn.js | 64 - node_modules/moment/locale/uz.js | 62 - node_modules/moment/locale/vi.js | 90 - node_modules/moment/locale/x-pseudo.js | 82 - node_modules/moment/locale/yo.js | 64 - node_modules/moment/locale/zh-cn.js | 131 - node_modules/moment/locale/zh-hk.js | 112 - node_modules/moment/locale/zh-mo.js | 111 - node_modules/moment/locale/zh-tw.js | 110 - node_modules/moment/min/locales.js | 12429 --- node_modules/moment/min/locales.min.js | 2 - node_modules/moment/min/locales.min.js.map | 1 - .../moment/min/moment-with-locales.js | 18083 ----- .../moment/min/moment-with-locales.min.js | 2 - .../moment/min/moment-with-locales.min.js.map | 1 - node_modules/moment/min/moment.min.js | 2 - node_modules/moment/min/moment.min.js.map | 1 - node_modules/moment/moment.d.ts | 796 - node_modules/moment/moment.js | 5670 -- node_modules/moment/package.js | 11 - node_modules/moment/package.json | 160 - .../moment/src/lib/create/check-overflow.js | 57 - .../moment/src/lib/create/date-from-array.js | 35 - .../moment/src/lib/create/from-anything.js | 117 - .../moment/src/lib/create/from-array.js | 187 - .../moment/src/lib/create/from-object.js | 20 - .../src/lib/create/from-string-and-array.js | 66 - .../src/lib/create/from-string-and-format.js | 134 - .../moment/src/lib/create/from-string.js | 254 - node_modules/moment/src/lib/create/local.js | 5 - .../moment/src/lib/create/parsing-flags.js | 28 - node_modules/moment/src/lib/create/utc.js | 5 - node_modules/moment/src/lib/create/valid.js | 51 - node_modules/moment/src/lib/duration/abs.js | 18 - .../moment/src/lib/duration/add-subtract.js | 21 - node_modules/moment/src/lib/duration/as.js | 88 - .../moment/src/lib/duration/bubble.js | 68 - node_modules/moment/src/lib/duration/clone.js | 5 - .../moment/src/lib/duration/constructor.js | 42 - .../moment/src/lib/duration/create.js | 132 - .../moment/src/lib/duration/duration.js | 16 - node_modules/moment/src/lib/duration/get.js | 27 - .../moment/src/lib/duration/humanize.js | 114 - .../moment/src/lib/duration/iso-string.js | 68 - .../moment/src/lib/duration/prototype.js | 78 - node_modules/moment/src/lib/duration/valid.js | 54 - node_modules/moment/src/lib/format/format.js | 103 - .../moment/src/lib/locale/base-config.js | 41 - .../moment/src/lib/locale/calendar.js | 15 - .../moment/src/lib/locale/constructor.js | 5 - node_modules/moment/src/lib/locale/en.js | 39 - node_modules/moment/src/lib/locale/formats.js | 36 - node_modules/moment/src/lib/locale/invalid.js | 5 - node_modules/moment/src/lib/locale/lists.js | 93 - node_modules/moment/src/lib/locale/locale.js | 45 - node_modules/moment/src/lib/locale/locales.js | 242 - node_modules/moment/src/lib/locale/ordinal.js | 8 - .../moment/src/lib/locale/pre-post-format.js | 3 - .../moment/src/lib/locale/prototype.js | 88 - .../moment/src/lib/locale/relative.js | 32 - node_modules/moment/src/lib/locale/set.js | 56 - .../moment/src/lib/moment/add-subtract.js | 61 - .../moment/src/lib/moment/calendar.js | 53 - node_modules/moment/src/lib/moment/clone.js | 5 - node_modules/moment/src/lib/moment/compare.js | 72 - .../moment/src/lib/moment/constructor.js | 77 - .../moment/src/lib/moment/creation-data.js | 9 - node_modules/moment/src/lib/moment/diff.js | 79 - node_modules/moment/src/lib/moment/format.js | 78 - node_modules/moment/src/lib/moment/from.js | 20 - node_modules/moment/src/lib/moment/get-set.js | 72 - node_modules/moment/src/lib/moment/locale.js | 34 - node_modules/moment/src/lib/moment/min-max.js | 62 - node_modules/moment/src/lib/moment/moment.js | 28 - node_modules/moment/src/lib/moment/now.js | 3 - .../moment/src/lib/moment/prototype.js | 197 - .../moment/src/lib/moment/start-end-of.js | 164 - node_modules/moment/src/lib/moment/to-type.js | 42 - node_modules/moment/src/lib/moment/to.js | 20 - node_modules/moment/src/lib/moment/valid.js | 15 - node_modules/moment/src/lib/parse/regex.js | 82 - node_modules/moment/src/lib/parse/token.js | 34 - node_modules/moment/src/lib/units/aliases.js | 31 - .../moment/src/lib/units/constants.js | 9 - .../moment/src/lib/units/day-of-month.js | 39 - .../moment/src/lib/units/day-of-week.js | 444 - .../moment/src/lib/units/day-of-year.js | 37 - node_modules/moment/src/lib/units/era.js | 289 - node_modules/moment/src/lib/units/hour.js | 159 - .../moment/src/lib/units/millisecond.js | 76 - node_modules/moment/src/lib/units/minute.js | 29 - node_modules/moment/src/lib/units/month.js | 349 - node_modules/moment/src/lib/units/offset.js | 249 - .../moment/src/lib/units/priorities.js | 21 - node_modules/moment/src/lib/units/quarter.js | 34 - node_modules/moment/src/lib/units/second.js | 29 - .../moment/src/lib/units/timestamp.js | 20 - node_modules/moment/src/lib/units/timezone.js | 16 - node_modules/moment/src/lib/units/units.js | 20 - .../src/lib/units/week-calendar-utils.js | 66 - .../moment/src/lib/units/week-year.js | 140 - node_modules/moment/src/lib/units/week.js | 71 - node_modules/moment/src/lib/units/year.js | 85 - node_modules/moment/src/lib/utils/abs-ceil.js | 7 - .../moment/src/lib/utils/abs-floor.js | 8 - .../moment/src/lib/utils/abs-round.js | 7 - .../moment/src/lib/utils/compare-arrays.js | 18 - node_modules/moment/src/lib/utils/defaults.js | 10 - .../moment/src/lib/utils/deprecate.js | 68 - node_modules/moment/src/lib/utils/extend.js | 19 - .../moment/src/lib/utils/has-own-prop.js | 3 - node_modules/moment/src/lib/utils/hooks.js | 13 - node_modules/moment/src/lib/utils/index-of.js | 18 - node_modules/moment/src/lib/utils/is-array.js | 6 - .../moment/src/lib/utils/is-calendar-spec.js | 25 - node_modules/moment/src/lib/utils/is-date.js | 6 - .../moment/src/lib/utils/is-function.js | 6 - .../moment/src/lib/utils/is-leap-year.js | 3 - .../moment/src/lib/utils/is-moment-input.js | 74 - .../moment/src/lib/utils/is-number.js | 6 - .../moment/src/lib/utils/is-object-empty.js | 15 - .../moment/src/lib/utils/is-object.js | 8 - .../moment/src/lib/utils/is-string.js | 3 - .../moment/src/lib/utils/is-undefined.js | 3 - node_modules/moment/src/lib/utils/keys.js | 20 - node_modules/moment/src/lib/utils/map.js | 8 - node_modules/moment/src/lib/utils/mod.js | 3 - node_modules/moment/src/lib/utils/some.js | 20 - node_modules/moment/src/lib/utils/to-int.js | 12 - .../moment/src/lib/utils/zero-fill.js | 10 - node_modules/moment/src/locale/af.js | 71 - node_modules/moment/src/locale/ar-dz.js | 156 - node_modules/moment/src/locale/ar-kw.js | 54 - node_modules/moment/src/locale/ar-ly.js | 171 - node_modules/moment/src/locale/ar-ma.js | 55 - node_modules/moment/src/locale/ar-sa.js | 104 - node_modules/moment/src/locale/ar-tn.js | 54 - node_modules/moment/src/locale/ar.js | 189 - node_modules/moment/src/locale/az.js | 101 - node_modules/moment/src/locale/be.js | 141 - node_modules/moment/src/locale/bg.js | 87 - node_modules/moment/src/locale/bm.js | 52 - node_modules/moment/src/locale/bn-bd.js | 128 - node_modules/moment/src/locale/bn.js | 118 - node_modules/moment/src/locale/bo.js | 122 - node_modules/moment/src/locale/br.js | 165 - node_modules/moment/src/locale/bs.js | 149 - node_modules/moment/src/locale/ca.js | 97 - node_modules/moment/src/locale/cs.js | 171 - node_modules/moment/src/locale/cv.js | 62 - node_modules/moment/src/locale/cy.js | 97 - node_modules/moment/src/locale/da.js | 53 - node_modules/moment/src/locale/de-at.js | 79 - node_modules/moment/src/locale/de-ch.js | 78 - node_modules/moment/src/locale/de.js | 78 - node_modules/moment/src/locale/dv.js | 90 - node_modules/moment/src/locale/el.js | 104 - node_modules/moment/src/locale/en-au.js | 68 - node_modules/moment/src/locale/en-ca.js | 64 - node_modules/moment/src/locale/en-gb.js | 68 - node_modules/moment/src/locale/en-ie.js | 68 - node_modules/moment/src/locale/en-il.js | 64 - node_modules/moment/src/locale/en-in.js | 68 - node_modules/moment/src/locale/en-nz.js | 68 - node_modules/moment/src/locale/en-sg.js | 68 - node_modules/moment/src/locale/eo.js | 68 - node_modules/moment/src/locale/es-do.js | 104 - node_modules/moment/src/locale/es-mx.js | 106 - node_modules/moment/src/locale/es-us.js | 106 - node_modules/moment/src/locale/es.js | 106 - node_modules/moment/src/locale/et.js | 78 - node_modules/moment/src/locale/eu.js | 63 - node_modules/moment/src/locale/fa.js | 110 - node_modules/moment/src/locale/fi.js | 121 - node_modules/moment/src/locale/fil.js | 58 - node_modules/moment/src/locale/fo.js | 56 - node_modules/moment/src/locale/fr-ca.js | 69 - node_modules/moment/src/locale/fr-ch.js | 73 - node_modules/moment/src/locale/fr.js | 104 - node_modules/moment/src/locale/fy.js | 77 - node_modules/moment/src/locale/ga.js | 95 - node_modules/moment/src/locale/gd.js | 95 - node_modules/moment/src/locale/gl.js | 74 - node_modules/moment/src/locale/gom-deva.js | 124 - node_modules/moment/src/locale/gom-latn.js | 124 - node_modules/moment/src/locale/gu.js | 121 - node_modules/moment/src/locale/he.js | 94 - node_modules/moment/src/locale/hi.js | 164 - node_modules/moment/src/locale/hr.js | 154 - node_modules/moment/src/locale/hu.js | 118 - node_modules/moment/src/locale/hy-am.js | 92 - node_modules/moment/src/locale/id.js | 76 - node_modules/moment/src/locale/is.js | 139 - node_modules/moment/src/locale/it-ch.js | 64 - node_modules/moment/src/locale/it.js | 106 - node_modules/moment/src/locale/ja.js | 148 - node_modules/moment/src/locale/jv.js | 76 - node_modules/moment/src/locale/ka.js | 92 - node_modules/moment/src/locale/kk.js | 82 - node_modules/moment/src/locale/km.js | 102 - node_modules/moment/src/locale/kn.js | 123 - node_modules/moment/src/locale/ko.js | 75 - node_modules/moment/src/locale/ku.js | 118 - node_modules/moment/src/locale/ky.js | 84 - node_modules/moment/src/locale/lb.js | 135 - node_modules/moment/src/locale/lo.js | 65 - node_modules/moment/src/locale/lt.js | 123 - node_modules/moment/src/locale/lv.js | 93 - node_modules/moment/src/locale/me.js | 118 - node_modules/moment/src/locale/mi.js | 59 - node_modules/moment/src/locale/mk.js | 85 - node_modules/moment/src/locale/ml.js | 80 - node_modules/moment/src/locale/mn.js | 99 - node_modules/moment/src/locale/mr.js | 202 - node_modules/moment/src/locale/ms-my.js | 76 - node_modules/moment/src/locale/ms.js | 75 - node_modules/moment/src/locale/mt.js | 55 - node_modules/moment/src/locale/my.js | 91 - node_modules/moment/src/locale/nb.js | 61 - node_modules/moment/src/locale/ne.js | 120 - node_modules/moment/src/locale/nl-be.js | 102 - node_modules/moment/src/locale/nl.js | 104 - node_modules/moment/src/locale/nn.js | 60 - node_modules/moment/src/locale/oc-lnc.js | 83 - node_modules/moment/src/locale/pa-in.js | 121 - node_modules/moment/src/locale/pl.js | 139 - node_modules/moment/src/locale/pt-br.js | 57 - node_modules/moment/src/locale/pt.js | 62 - node_modules/moment/src/locale/ro.js | 75 - node_modules/moment/src/locale/ru.js | 206 - node_modules/moment/src/locale/sd.js | 81 - node_modules/moment/src/locale/se.js | 57 - node_modules/moment/src/locale/si.js | 68 - node_modules/moment/src/locale/sk.js | 144 - node_modules/moment/src/locale/sl.js | 170 - node_modules/moment/src/locale/sq.js | 65 - node_modules/moment/src/locale/sr-cyrl.js | 116 - node_modules/moment/src/locale/sr.js | 118 - node_modules/moment/src/locale/ss.js | 83 - node_modules/moment/src/locale/sv.js | 68 - node_modules/moment/src/locale/sw.js | 54 - node_modules/moment/src/locale/ta.js | 129 - node_modules/moment/src/locale/te.js | 86 - node_modules/moment/src/locale/tet.js | 68 - node_modules/moment/src/locale/tg.js | 116 - node_modules/moment/src/locale/th.js | 64 - node_modules/moment/src/locale/tk.js | 91 - node_modules/moment/src/locale/tl-ph.js | 57 - node_modules/moment/src/locale/tlh.js | 125 - node_modules/moment/src/locale/tr.js | 106 - node_modules/moment/src/locale/tzl.js | 89 - node_modules/moment/src/locale/tzm-latn.js | 53 - node_modules/moment/src/locale/tzm.js | 53 - node_modules/moment/src/locale/ug-cn.js | 110 - node_modules/moment/src/locale/uk.js | 163 - node_modules/moment/src/locale/ur.js | 82 - node_modules/moment/src/locale/uz-latn.js | 53 - node_modules/moment/src/locale/uz.js | 51 - node_modules/moment/src/locale/vi.js | 79 - node_modules/moment/src/locale/x-pseudo.js | 71 - node_modules/moment/src/locale/yo.js | 53 - node_modules/moment/src/locale/zh-cn.js | 120 - node_modules/moment/src/locale/zh-hk.js | 101 - node_modules/moment/src/locale/zh-mo.js | 100 - node_modules/moment/src/locale/zh-tw.js | 99 - node_modules/moment/src/moment.js | 93 - node_modules/moment/ts3.1-typings/moment.d.ts | 785 - node_modules/nanomatch/CHANGELOG.md | 57 - node_modules/nanomatch/LICENSE | 21 - node_modules/nanomatch/README.md | 1148 - node_modules/nanomatch/index.js | 838 - node_modules/nanomatch/lib/cache.js | 1 - node_modules/nanomatch/lib/compilers.js | 339 - node_modules/nanomatch/lib/parsers.js | 386 - node_modules/nanomatch/lib/utils.js | 379 - node_modules/nanomatch/package.json | 175 - node_modules/neo-async/LICENSE | 22 - node_modules/neo-async/README.md | 273 - node_modules/neo-async/all.js | 3 - node_modules/neo-async/allLimit.js | 3 - node_modules/neo-async/allSeries.js | 3 - node_modules/neo-async/angelFall.js | 3 - node_modules/neo-async/any.js | 3 - node_modules/neo-async/anyLimit.js | 3 - node_modules/neo-async/anySeries.js | 3 - node_modules/neo-async/apply.js | 3 - node_modules/neo-async/applyEach.js | 3 - node_modules/neo-async/applyEachSeries.js | 3 - node_modules/neo-async/async.js | 9184 --- node_modules/neo-async/async.min.js | 80 - node_modules/neo-async/asyncify.js | 3 - node_modules/neo-async/auto.js | 3 - node_modules/neo-async/autoInject.js | 3 - node_modules/neo-async/cargo.js | 3 - node_modules/neo-async/compose.js | 3 - node_modules/neo-async/concat.js | 3 - node_modules/neo-async/concatLimit.js | 3 - node_modules/neo-async/concatSeries.js | 3 - node_modules/neo-async/constant.js | 3 - node_modules/neo-async/createLogger.js | 3 - node_modules/neo-async/detect.js | 3 - node_modules/neo-async/detectLimit.js | 3 - node_modules/neo-async/detectSeries.js | 3 - node_modules/neo-async/dir.js | 3 - node_modules/neo-async/doDuring.js | 3 - node_modules/neo-async/doUntil.js | 3 - node_modules/neo-async/doWhilst.js | 3 - node_modules/neo-async/during.js | 3 - node_modules/neo-async/each.js | 3 - node_modules/neo-async/eachLimit.js | 3 - node_modules/neo-async/eachOf.js | 3 - node_modules/neo-async/eachOfLimit.js | 3 - node_modules/neo-async/eachOfSeries.js | 3 - node_modules/neo-async/eachSeries.js | 3 - node_modules/neo-async/ensureAsync.js | 3 - node_modules/neo-async/every.js | 3 - node_modules/neo-async/everyLimit.js | 3 - node_modules/neo-async/everySeries.js | 3 - node_modules/neo-async/fast.js | 3 - node_modules/neo-async/filter.js | 3 - node_modules/neo-async/filterLimit.js | 3 - node_modules/neo-async/filterSeries.js | 3 - node_modules/neo-async/find.js | 3 - node_modules/neo-async/findLimit.js | 3 - node_modules/neo-async/findSeries.js | 3 - node_modules/neo-async/foldl.js | 3 - node_modules/neo-async/foldr.js | 3 - node_modules/neo-async/forEach.js | 3 - node_modules/neo-async/forEachLimit.js | 3 - node_modules/neo-async/forEachOf.js | 3 - node_modules/neo-async/forEachOfLimit.js | 3 - node_modules/neo-async/forEachOfSeries.js | 3 - node_modules/neo-async/forEachSeries.js | 3 - node_modules/neo-async/forever.js | 3 - node_modules/neo-async/groupBy.js | 3 - node_modules/neo-async/groupByLimit.js | 3 - node_modules/neo-async/groupBySeries.js | 3 - node_modules/neo-async/inject.js | 3 - node_modules/neo-async/iterator.js | 3 - node_modules/neo-async/log.js | 3 - node_modules/neo-async/map.js | 3 - node_modules/neo-async/mapLimit.js | 3 - node_modules/neo-async/mapSeries.js | 3 - node_modules/neo-async/mapValues.js | 3 - node_modules/neo-async/mapValuesLimit.js | 3 - node_modules/neo-async/mapValuesSeries.js | 3 - node_modules/neo-async/memoize.js | 3 - node_modules/neo-async/nextTick.js | 3 - node_modules/neo-async/omit.js | 3 - node_modules/neo-async/omitLimit.js | 3 - node_modules/neo-async/omitSeries.js | 3 - node_modules/neo-async/package.json | 85 - node_modules/neo-async/parallel.js | 3 - node_modules/neo-async/parallelLimit.js | 3 - node_modules/neo-async/pick.js | 3 - node_modules/neo-async/pickLimit.js | 3 - node_modules/neo-async/pickSeries.js | 3 - node_modules/neo-async/priorityQueue.js | 3 - node_modules/neo-async/queue.js | 3 - node_modules/neo-async/race.js | 3 - node_modules/neo-async/reduce.js | 3 - node_modules/neo-async/reduceRight.js | 3 - node_modules/neo-async/reflect.js | 3 - node_modules/neo-async/reflectAll.js | 3 - node_modules/neo-async/reject.js | 3 - node_modules/neo-async/rejectLimit.js | 3 - node_modules/neo-async/rejectSeries.js | 3 - node_modules/neo-async/retry.js | 3 - node_modules/neo-async/retryable.js | 3 - node_modules/neo-async/safe.js | 3 - node_modules/neo-async/select.js | 3 - node_modules/neo-async/selectLimit.js | 3 - node_modules/neo-async/selectSeries.js | 3 - node_modules/neo-async/seq.js | 3 - node_modules/neo-async/series.js | 3 - node_modules/neo-async/setImmediate.js | 3 - node_modules/neo-async/some.js | 3 - node_modules/neo-async/someLimit.js | 3 - node_modules/neo-async/someSeries.js | 3 - node_modules/neo-async/sortBy.js | 3 - node_modules/neo-async/sortByLimit.js | 3 - node_modules/neo-async/sortBySeries.js | 3 - node_modules/neo-async/timeout.js | 3 - node_modules/neo-async/times.js | 3 - node_modules/neo-async/timesLimit.js | 3 - node_modules/neo-async/timesSeries.js | 3 - node_modules/neo-async/transform.js | 3 - node_modules/neo-async/transformLimit.js | 3 - node_modules/neo-async/transformSeries.js | 3 - node_modules/neo-async/tryEach.js | 3 - node_modules/neo-async/unmemoize.js | 3 - node_modules/neo-async/until.js | 3 - node_modules/neo-async/waterfall.js | 3 - node_modules/neo-async/whilst.js | 3 - node_modules/neo-async/wrapSync.js | 3 - node_modules/node-fetch/CHANGELOG.md | 272 - node_modules/node-fetch/LICENSE.md | 22 - node_modules/node-fetch/README.md | 590 - node_modules/node-fetch/browser.js | 25 - node_modules/node-fetch/lib/index.es.js | 1640 - node_modules/node-fetch/lib/index.js | 1649 - node_modules/node-fetch/lib/index.mjs | 1638 - node_modules/node-fetch/package.json | 93 - node_modules/object-copy/LICENSE | 21 - node_modules/object-copy/index.js | 174 - .../node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 77 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 86 - .../object-copy/node_modules/kind-of/LICENSE | 21 - .../node_modules/kind-of/README.md | 261 - .../object-copy/node_modules/kind-of/index.js | 116 - .../node_modules/kind-of/package.json | 143 - node_modules/object-copy/package.json | 85 - node_modules/object-visit/LICENSE | 21 - node_modules/object-visit/README.md | 83 - node_modules/object-visit/index.js | 33 - node_modules/object-visit/package.json | 101 - node_modules/object.pick/LICENSE | 21 - node_modules/object.pick/README.md | 76 - node_modules/object.pick/index.js | 35 - node_modules/object.pick/package.json | 96 - node_modules/once/LICENSE | 15 - node_modules/once/README.md | 79 - node_modules/once/once.js | 42 - node_modules/once/package.json | 73 - node_modules/pascalcase/LICENSE | 21 - node_modules/pascalcase/README.md | 80 - node_modules/pascalcase/index.js | 21 - node_modules/pascalcase/package.json | 81 - node_modules/posix-character-classes/LICENSE | 21 - .../posix-character-classes/README.md | 103 - node_modules/posix-character-classes/index.js | 22 - .../posix-character-classes/package.json | 89 - node_modules/process-nextick-args/index.js | 45 - node_modules/process-nextick-args/license.md | 19 - .../process-nextick-args/package.json | 50 - node_modules/process-nextick-args/readme.md | 18 - node_modules/readable-stream/.travis.yml | 34 - node_modules/readable-stream/CONTRIBUTING.md | 38 - node_modules/readable-stream/GOVERNANCE.md | 136 - node_modules/readable-stream/LICENSE | 47 - node_modules/readable-stream/README.md | 58 - .../doc/wg-meetings/2015-01-30.md | 60 - .../readable-stream/duplex-browser.js | 1 - node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 131 - .../lib/_stream_passthrough.js | 47 - .../readable-stream/lib/_stream_readable.js | 1019 - .../readable-stream/lib/_stream_transform.js | 214 - .../readable-stream/lib/_stream_writable.js | 687 - .../lib/internal/streams/BufferList.js | 79 - .../lib/internal/streams/destroy.js | 74 - .../lib/internal/streams/stream-browser.js | 1 - .../lib/internal/streams/stream.js | 1 - node_modules/readable-stream/package.json | 81 - node_modules/readable-stream/passthrough.js | 1 - .../readable-stream/readable-browser.js | 7 - node_modules/readable-stream/readable.js | 19 - node_modules/readable-stream/transform.js | 1 - .../readable-stream/writable-browser.js | 1 - node_modules/readable-stream/writable.js | 8 - node_modules/regex-not/LICENSE | 21 - node_modules/regex-not/README.md | 133 - node_modules/regex-not/index.js | 72 - node_modules/regex-not/package.json | 102 - node_modules/relative/LICENSE | 21 - node_modules/relative/README.md | 124 - node_modules/relative/index.js | 164 - .../relative/node_modules/isobject/LICENSE | 21 - .../relative/node_modules/isobject/README.md | 112 - .../relative/node_modules/isobject/index.js | 14 - .../node_modules/isobject/package.json | 98 - node_modules/relative/package.json | 86 - node_modules/remarkable/CHANGELOG.md | 138 - node_modules/remarkable/LICENSE | 22 - node_modules/remarkable/README.md | 349 - node_modules/remarkable/bin/remarkable.js | 78 - node_modules/remarkable/dist/remarkable.js | 11570 --- .../remarkable/dist/remarkable.min.js | 1 - node_modules/remarkable/index.js | 3 - .../remarkable/lib/common/entities.js | 2134 - .../remarkable/lib/common/html_blocks.js | 62 - node_modules/remarkable/lib/common/html_re.js | 59 - .../remarkable/lib/common/url_schemas.js | 172 - node_modules/remarkable/lib/common/utils.js | 141 - .../remarkable/lib/configs/commonmark.js | 71 - .../remarkable/lib/configs/default.js | 80 - node_modules/remarkable/lib/configs/full.js | 38 - .../remarkable/lib/helpers/normalize_link.js | 13 - .../lib/helpers/normalize_reference.js | 8 - .../lib/helpers/parse_link_destination.js | 84 - .../lib/helpers/parse_link_label.js | 59 - .../lib/helpers/parse_link_title.js | 46 - node_modules/remarkable/lib/index.js | 195 - node_modules/remarkable/lib/parser_block.js | 155 - node_modules/remarkable/lib/parser_core.js | 58 - node_modules/remarkable/lib/parser_inline.js | 161 - node_modules/remarkable/lib/renderer.js | 75 - node_modules/remarkable/lib/ruler.js | 273 - node_modules/remarkable/lib/rules.js | 429 - .../remarkable/lib/rules_block/blockquote.js | 133 - .../remarkable/lib/rules_block/code.js | 36 - .../remarkable/lib/rules_block/deflist.js | 207 - .../remarkable/lib/rules_block/fences.js | 91 - .../remarkable/lib/rules_block/footnote.js | 67 - .../remarkable/lib/rules_block/heading.js | 58 - node_modules/remarkable/lib/rules_block/hr.js | 45 - .../remarkable/lib/rules_block/htmlblock.js | 74 - .../remarkable/lib/rules_block/lheading.js | 55 - .../remarkable/lib/rules_block/list.js | 266 - .../remarkable/lib/rules_block/paragraph.js | 59 - .../remarkable/lib/rules_block/state_block.js | 158 - .../remarkable/lib/rules_block/table.js | 138 - .../remarkable/lib/rules_core/abbr.js | 70 - .../remarkable/lib/rules_core/abbr2.js | 88 - .../remarkable/lib/rules_core/block.js | 17 - .../lib/rules_core/footnote_tail.js | 95 - .../remarkable/lib/rules_core/inline.js | 13 - .../remarkable/lib/rules_core/linkify.js | 161 - .../remarkable/lib/rules_core/references.js | 98 - .../remarkable/lib/rules_core/replacements.js | 64 - .../remarkable/lib/rules_core/smartquotes.js | 113 - .../remarkable/lib/rules_inline/autolink.js | 78 - .../remarkable/lib/rules_inline/backticks.js | 46 - .../remarkable/lib/rules_inline/del.js | 84 - .../remarkable/lib/rules_inline/emphasis.js | 149 - .../remarkable/lib/rules_inline/entity.js | 48 - .../remarkable/lib/rules_inline/escape.js | 49 - .../lib/rules_inline/footnote_inline.js | 53 - .../lib/rules_inline/footnote_ref.js | 62 - .../remarkable/lib/rules_inline/htmltag.js | 49 - .../remarkable/lib/rules_inline/ins.js | 84 - .../remarkable/lib/rules_inline/links.js | 170 - .../remarkable/lib/rules_inline/mark.js | 84 - .../remarkable/lib/rules_inline/newline.js | 54 - .../lib/rules_inline/state_inline.js | 76 - .../remarkable/lib/rules_inline/sub.js | 58 - .../remarkable/lib/rules_inline/sup.js | 58 - .../remarkable/lib/rules_inline/text.js | 52 - node_modules/remarkable/package.json | 241 - node_modules/repeat-element/LICENSE | 21 - node_modules/repeat-element/README.md | 99 - node_modules/repeat-element/index.js | 18 - node_modules/repeat-element/package.json | 84 - node_modules/repeat-string/LICENSE | 21 - node_modules/repeat-string/README.md | 136 - node_modules/repeat-string/index.js | 70 - node_modules/repeat-string/package.json | 133 - node_modules/resolve-url/.jshintrc | 44 - node_modules/resolve-url/LICENSE | 21 - node_modules/resolve-url/bower.json | 15 - node_modules/resolve-url/changelog.md | 15 - node_modules/resolve-url/component.json | 15 - node_modules/resolve-url/package.json | 72 - node_modules/resolve-url/readme.md | 83 - node_modules/resolve-url/resolve-url.js | 47 - node_modules/resolve-url/test/resolve-url.js | 70 - node_modules/ret/LICENSE | 19 - node_modules/ret/README.md | 183 - node_modules/ret/lib/index.js | 282 - node_modules/ret/lib/positions.js | 17 - node_modules/ret/lib/sets.js | 82 - node_modules/ret/lib/types.js | 10 - node_modules/ret/lib/util.js | 111 - node_modules/ret/package.json | 71 - node_modules/safe-buffer/LICENSE | 21 - node_modules/safe-buffer/README.md | 584 - node_modules/safe-buffer/index.d.ts | 187 - node_modules/safe-buffer/index.js | 62 - node_modules/safe-buffer/package.json | 69 - node_modules/safe-regex/.travis.yml | 4 - node_modules/safe-regex/LICENSE | 18 - node_modules/safe-regex/example/safe.js | 3 - node_modules/safe-regex/index.js | 43 - node_modules/safe-regex/package.json | 78 - node_modules/safe-regex/readme.markdown | 65 - node_modules/safe-regex/test/regex.js | 50 - node_modules/self-closing-tags/LICENSE | 21 - node_modules/self-closing-tags/README.md | 94 - node_modules/self-closing-tags/index.js | 36 - node_modules/self-closing-tags/package.json | 92 - node_modules/set-getter/LICENSE | 21 - node_modules/set-getter/README.md | 109 - node_modules/set-getter/index.js | 83 - node_modules/set-getter/package.json | 78 - node_modules/set-value/LICENSE | 21 - node_modules/set-value/README.md | 150 - node_modules/set-value/index.js | 55 - .../node_modules/extend-shallow/LICENSE | 21 - .../node_modules/extend-shallow/README.md | 61 - .../node_modules/extend-shallow/index.js | 33 - .../node_modules/extend-shallow/package.json | 91 - node_modules/set-value/package.json | 125 - node_modules/snapdragon-node/LICENSE | 21 - node_modules/snapdragon-node/README.md | 453 - node_modules/snapdragon-node/index.js | 492 - .../node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 95 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 97 - .../is-accessor-descriptor/LICENSE | 21 - .../is-accessor-descriptor/README.md | 144 - .../is-accessor-descriptor/index.js | 69 - .../is-accessor-descriptor/package.json | 114 - .../node_modules/is-data-descriptor/LICENSE | 21 - .../node_modules/is-data-descriptor/README.md | 161 - .../node_modules/is-data-descriptor/index.js | 49 - .../is-data-descriptor/package.json | 113 - .../node_modules/is-descriptor/LICENSE | 21 - .../node_modules/is-descriptor/README.md | 193 - .../node_modules/is-descriptor/index.js | 22 - .../node_modules/is-descriptor/package.json | 118 - node_modules/snapdragon-node/package.json | 113 - node_modules/snapdragon-util/LICENSE | 21 - node_modules/snapdragon-util/README.md | 807 - node_modules/snapdragon-util/index.js | 1019 - .../node_modules/kind-of/LICENSE | 21 - .../node_modules/kind-of/README.md | 261 - .../node_modules/kind-of/index.js | 116 - .../node_modules/kind-of/package.json | 143 - node_modules/snapdragon-util/package.json | 102 - node_modules/snapdragon/LICENSE | 21 - node_modules/snapdragon/README.md | 321 - node_modules/snapdragon/index.js | 174 - node_modules/snapdragon/lib/compiler.js | 177 - node_modules/snapdragon/lib/parser.js | 533 - node_modules/snapdragon/lib/position.js | 14 - node_modules/snapdragon/lib/source-maps.js | 145 - node_modules/snapdragon/lib/utils.js | 48 - .../node_modules/debug/.coveralls.yml | 1 - .../snapdragon/node_modules/debug/.eslintrc | 11 - .../snapdragon/node_modules/debug/.npmignore | 9 - .../snapdragon/node_modules/debug/.travis.yml | 14 - .../node_modules/debug/CHANGELOG.md | 362 - .../snapdragon/node_modules/debug/LICENSE | 19 - .../snapdragon/node_modules/debug/Makefile | 50 - .../snapdragon/node_modules/debug/README.md | 312 - .../node_modules/debug/component.json | 19 - .../node_modules/debug/karma.conf.js | 70 - .../snapdragon/node_modules/debug/node.js | 1 - .../node_modules/debug/package.json | 92 - .../node_modules/debug/src/browser.js | 185 - .../node_modules/debug/src/debug.js | 202 - .../node_modules/debug/src/index.js | 10 - .../node_modules/debug/src/inspector-log.js | 15 - .../snapdragon/node_modules/debug/src/node.js | 248 - .../node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 77 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 86 - .../node_modules/extend-shallow/LICENSE | 21 - .../node_modules/extend-shallow/README.md | 61 - .../node_modules/extend-shallow/index.js | 33 - .../node_modules/extend-shallow/package.json | 91 - .../snapdragon/node_modules/ms/index.js | 152 - .../snapdragon/node_modules/ms/license.md | 21 - .../snapdragon/node_modules/ms/package.json | 73 - .../snapdragon/node_modules/ms/readme.md | 51 - node_modules/snapdragon/package.json | 130 - node_modules/source-map-resolve/.jshintrc | 46 - node_modules/source-map-resolve/.travis.yml | 3 - node_modules/source-map-resolve/LICENSE | 21 - node_modules/source-map-resolve/bower.json | 30 - node_modules/source-map-resolve/changelog.md | 100 - .../source-map-resolve/component.json | 29 - .../generate-source-map-resolve.js | 28 - .../lib/decode-uri-component.js | 11 - .../source-map-resolve/lib/resolve-url.js | 12 - .../lib/source-map-resolve-node.js | 302 - node_modules/source-map-resolve/package.json | 81 - node_modules/source-map-resolve/readme.md | 231 - .../source-map-resolve/source-map-resolve.js | 309 - .../source-map-resolve.js.template | 22 - .../source-map-resolve/test/common.js | 27 - node_modules/source-map-resolve/test/read.js | 105 - .../test/source-map-resolve.js | 1162 - .../source-map-resolve/test/windows.js | 166 - .../source-map-resolve/x-package.json5 | 68 - node_modules/source-map-url/.jshintrc | 43 - node_modules/source-map-url/LICENSE | 21 - node_modules/source-map-url/bower.json | 20 - node_modules/source-map-url/changelog.md | 52 - node_modules/source-map-url/component.json | 18 - node_modules/source-map-url/package.json | 77 - node_modules/source-map-url/readme.md | 97 - node_modules/source-map-url/source-map-url.js | 57 - .../source-map-url/test/source-map-url.js | 402 - node_modules/source-map-url/x-package.json5 | 55 - node_modules/source-map/CHANGELOG.md | 301 - node_modules/source-map/LICENSE | 28 - node_modules/source-map/README.md | 729 - .../source-map/dist/source-map.debug.js | 3091 - node_modules/source-map/dist/source-map.js | 3090 - .../source-map/dist/source-map.min.js | 2 - .../source-map/dist/source-map.min.js.map | 1 - node_modules/source-map/lib/array-set.js | 121 - node_modules/source-map/lib/base64-vlq.js | 140 - node_modules/source-map/lib/base64.js | 67 - node_modules/source-map/lib/binary-search.js | 111 - node_modules/source-map/lib/mapping-list.js | 79 - node_modules/source-map/lib/quick-sort.js | 114 - .../source-map/lib/source-map-consumer.js | 1082 - .../source-map/lib/source-map-generator.js | 416 - node_modules/source-map/lib/source-node.js | 413 - node_modules/source-map/lib/util.js | 417 - node_modules/source-map/package.json | 219 - node_modules/source-map/source-map.js | 8 - node_modules/split-string/LICENSE | 21 - node_modules/split-string/README.md | 321 - node_modules/split-string/index.js | 171 - node_modules/split-string/package.json | 107 - node_modules/sprintf-js/.npmignore | 1 - node_modules/sprintf-js/LICENSE | 24 - node_modules/sprintf-js/README.md | 88 - node_modules/sprintf-js/bower.json | 14 - node_modules/sprintf-js/demo/angular.html | 20 - .../sprintf-js/dist/angular-sprintf.min.js | 4 - .../dist/angular-sprintf.min.js.map | 1 - .../sprintf-js/dist/angular-sprintf.min.map | 1 - node_modules/sprintf-js/dist/sprintf.min.js | 4 - .../sprintf-js/dist/sprintf.min.js.map | 1 - node_modules/sprintf-js/dist/sprintf.min.map | 1 - node_modules/sprintf-js/gruntfile.js | 36 - node_modules/sprintf-js/package.json | 58 - .../sprintf-js/src/angular-sprintf.js | 18 - node_modules/sprintf-js/src/sprintf.js | 208 - node_modules/sprintf-js/test/test.js | 82 - node_modules/static-extend/LICENSE | 21 - node_modules/static-extend/index.js | 90 - .../node_modules/define-property/LICENSE | 21 - .../node_modules/define-property/README.md | 77 - .../node_modules/define-property/index.js | 31 - .../node_modules/define-property/package.json | 86 - node_modules/static-extend/package.json | 100 - node_modules/string_decoder/.travis.yml | 50 - node_modules/string_decoder/LICENSE | 48 - node_modules/string_decoder/README.md | 47 - .../string_decoder/lib/string_decoder.js | 296 - node_modules/string_decoder/package.json | 59 - node_modules/striptags/.npmignore | 2 - node_modules/striptags/.travis.yml | 7 - node_modules/striptags/LICENSE | 21 - node_modules/striptags/README.md | 90 - node_modules/striptags/bower.json | 24 - node_modules/striptags/index.d.ts | 25 - node_modules/striptags/package.json | 60 - node_modules/striptags/src/striptags.js | 235 - node_modules/striptags/test/striptags-test.js | 160 - node_modules/success-symbol/LICENSE | 21 - node_modules/success-symbol/README.md | 52 - node_modules/success-symbol/index.js | 1 - node_modules/success-symbol/package.json | 84 - node_modules/through2/LICENSE.md | 9 - node_modules/through2/README.md | 134 - node_modules/through2/package.json | 66 - node_modules/through2/through2.js | 96 - node_modules/time-stamp/LICENSE | 21 - node_modules/time-stamp/README.md | 132 - node_modules/time-stamp/index.js | 56 - node_modules/time-stamp/package.json | 117 - node_modules/to-gfm-code-block/LICENSE | 21 - node_modules/to-gfm-code-block/README.md | 61 - node_modules/to-gfm-code-block/index.js | 22 - node_modules/to-gfm-code-block/package.json | 73 - node_modules/to-object-path/LICENSE | 21 - node_modules/to-object-path/README.md | 71 - node_modules/to-object-path/index.js | 33 - .../node_modules/kind-of/LICENSE | 21 - .../node_modules/kind-of/README.md | 261 - .../node_modules/kind-of/index.js | 116 - .../node_modules/kind-of/package.json | 143 - node_modules/to-object-path/package.json | 85 - node_modules/to-regex-range/LICENSE | 21 - node_modules/to-regex-range/README.md | 281 - node_modules/to-regex-range/index.js | 294 - node_modules/to-regex-range/package.json | 121 - node_modules/to-regex/LICENSE | 21 - node_modules/to-regex/README.md | 205 - node_modules/to-regex/index.js | 155 - node_modules/to-regex/package.json | 101 - node_modules/tunnel/.idea/encodings.xml | 6 - node_modules/tunnel/.idea/modules.xml | 8 - node_modules/tunnel/.idea/node-tunnel.iml | 12 - node_modules/tunnel/.idea/vcs.xml | 6 - node_modules/tunnel/.idea/workspace.xml | 797 - node_modules/tunnel/.travis.yml | 6 - node_modules/tunnel/CHANGELOG.md | 22 - node_modules/tunnel/LICENSE | 21 - node_modules/tunnel/README.md | 185 - node_modules/tunnel/index.js | 1 - node_modules/tunnel/lib/tunnel.js | 264 - node_modules/tunnel/package.json | 64 - node_modules/typeof-article/LICENSE | 21 - node_modules/typeof-article/README.md | 104 - node_modules/typeof-article/index.js | 45 - .../node_modules/kind-of/LICENSE | 21 - .../node_modules/kind-of/README.md | 261 - .../node_modules/kind-of/index.js | 116 - .../node_modules/kind-of/package.json | 139 - node_modules/typeof-article/package.json | 80 - node_modules/uglify-js/LICENSE | 29 - node_modules/uglify-js/README.md | 1283 - node_modules/uglify-js/bin/uglifyjs | 528 - node_modules/uglify-js/lib/ast.js | 1758 - node_modules/uglify-js/lib/compress.js | 11107 --- node_modules/uglify-js/lib/minify.js | 272 - node_modules/uglify-js/lib/mozilla-ast.js | 636 - node_modules/uglify-js/lib/output.js | 1698 - node_modules/uglify-js/lib/parse.js | 2173 - node_modules/uglify-js/lib/propmangle.js | 254 - node_modules/uglify-js/lib/scope.js | 784 - node_modules/uglify-js/lib/sourcemap.js | 193 - node_modules/uglify-js/lib/transform.js | 227 - node_modules/uglify-js/lib/utils.js | 265 - node_modules/uglify-js/package.json | 103 - node_modules/uglify-js/tools/domprops.html | 456 - node_modules/uglify-js/tools/domprops.json | 8325 -- node_modules/uglify-js/tools/exports.js | 7 - node_modules/uglify-js/tools/node.js | 109 - node_modules/uglify-js/tools/tty.js | 22 - node_modules/union-value/LICENSE | 21 - node_modules/union-value/README.md | 73 - node_modules/union-value/index.js | 30 - node_modules/union-value/package.json | 105 - node_modules/universal-user-agent/LICENSE.md | 7 - node_modules/universal-user-agent/README.md | 25 - .../universal-user-agent/dist-node/index.js | 18 - .../dist-node/index.js.map | 1 - .../universal-user-agent/dist-src/index.js | 9 - .../dist-types/index.d.ts | 1 - .../universal-user-agent/dist-web/index.js | 12 - .../dist-web/index.js.map | 1 - .../universal-user-agent/package.json | 66 - node_modules/unset-value/LICENSE | 21 - node_modules/unset-value/README.md | 131 - node_modules/unset-value/index.js | 32 - .../node_modules/has-value/LICENSE | 21 - .../node_modules/has-value/README.md | 130 - .../node_modules/has-value/index.js | 19 - .../has-value/node_modules/isobject/LICENSE | 21 - .../has-value/node_modules/isobject/README.md | 112 - .../has-value/node_modules/isobject/index.js | 14 - .../node_modules/isobject/package.json | 102 - .../node_modules/has-value/package.json | 118 - .../node_modules/has-values/LICENSE | 21 - .../node_modules/has-values/README.md | 114 - .../node_modules/has-values/index.js | 36 - .../node_modules/has-values/package.json | 110 - node_modules/unset-value/package.json | 116 - node_modules/urix/.jshintrc | 42 - node_modules/urix/LICENSE | 21 - node_modules/urix/index.js | 17 - node_modules/urix/package.json | 63 - node_modules/urix/readme.md | 46 - node_modules/urix/test/index.js | 43 - node_modules/use/LICENSE | 21 - node_modules/use/README.md | 90 - node_modules/use/index.js | 155 - node_modules/use/package.json | 112 - node_modules/util-deprecate/History.md | 16 - node_modules/util-deprecate/LICENSE | 24 - node_modules/util-deprecate/README.md | 53 - node_modules/util-deprecate/browser.js | 67 - node_modules/util-deprecate/node.js | 6 - node_modules/util-deprecate/package.json | 56 - node_modules/warning-symbol/LICENSE | 21 - node_modules/warning-symbol/README.md | 53 - node_modules/warning-symbol/index.js | 1 - node_modules/warning-symbol/package.json | 83 - node_modules/wordwrap/LICENSE | 18 - node_modules/wordwrap/README.markdown | 70 - node_modules/wordwrap/example/center.js | 10 - node_modules/wordwrap/example/meat.js | 3 - node_modules/wordwrap/index.js | 76 - node_modules/wordwrap/package.json | 63 - node_modules/wordwrap/test/break.js | 32 - node_modules/wordwrap/test/idleness.txt | 63 - node_modules/wordwrap/test/wrap.js | 33 - node_modules/wrappy/LICENSE | 15 - node_modules/wrappy/README.md | 36 - node_modules/wrappy/package.json | 63 - node_modules/wrappy/wrappy.js | 33 - node_modules/xtend/.jshintrc | 30 - node_modules/xtend/LICENSE | 20 - node_modules/xtend/README.md | 32 - node_modules/xtend/immutable.js | 19 - node_modules/xtend/mutable.js | 17 - node_modules/xtend/package.json | 86 - node_modules/xtend/test.js | 103 - node_modules/year/.gitattributes | 14 - node_modules/year/.jshintrc | 22 - node_modules/year/.npmignore | 53 - node_modules/year/.verb.md | 29 - node_modules/year/LICENSE-MIT | 22 - node_modules/year/README.md | 37 - node_modules/year/index.js | 23 - node_modules/year/package.json | 60 - node_modules/year/test.js | 30 - 2812 files changed, 527753 deletions(-) delete mode 100644 node_modules/.bin/atob delete mode 100644 node_modules/.bin/atob.cmd delete mode 100644 node_modules/.bin/atob.ps1 delete mode 100644 node_modules/.bin/handlebars delete mode 100644 node_modules/.bin/handlebars.cmd delete mode 100644 node_modules/.bin/handlebars.ps1 delete mode 100644 node_modules/.bin/remarkable delete mode 100644 node_modules/.bin/remarkable.cmd delete mode 100644 node_modules/.bin/remarkable.ps1 delete mode 100644 node_modules/.bin/uglifyjs delete mode 100644 node_modules/.bin/uglifyjs.cmd delete mode 100644 node_modules/.bin/uglifyjs.ps1 delete mode 100644 node_modules/.package-lock.json delete mode 100644 node_modules/@actions/core/LICENSE.md delete mode 100644 node_modules/@actions/core/README.md delete mode 100644 node_modules/@actions/core/lib/command.d.ts delete mode 100644 node_modules/@actions/core/lib/command.js delete mode 100644 node_modules/@actions/core/lib/command.js.map delete mode 100644 node_modules/@actions/core/lib/core.d.ts delete mode 100644 node_modules/@actions/core/lib/core.js delete mode 100644 node_modules/@actions/core/lib/core.js.map delete mode 100644 node_modules/@actions/core/lib/file-command.d.ts delete mode 100644 node_modules/@actions/core/lib/file-command.js delete mode 100644 node_modules/@actions/core/lib/file-command.js.map delete mode 100644 node_modules/@actions/core/lib/utils.d.ts delete mode 100644 node_modules/@actions/core/lib/utils.js delete mode 100644 node_modules/@actions/core/lib/utils.js.map delete mode 100644 node_modules/@actions/core/package.json delete mode 100644 node_modules/@actions/github/README.md delete mode 100644 node_modules/@actions/github/lib/context.d.ts delete mode 100644 node_modules/@actions/github/lib/context.js delete mode 100644 node_modules/@actions/github/lib/context.js.map delete mode 100644 node_modules/@actions/github/lib/github.d.ts delete mode 100644 node_modules/@actions/github/lib/github.js delete mode 100644 node_modules/@actions/github/lib/github.js.map delete mode 100644 node_modules/@actions/github/lib/interfaces.d.ts delete mode 100644 node_modules/@actions/github/lib/interfaces.js delete mode 100644 node_modules/@actions/github/lib/interfaces.js.map delete mode 100644 node_modules/@actions/github/lib/internal/utils.d.ts delete mode 100644 node_modules/@actions/github/lib/internal/utils.js delete mode 100644 node_modules/@actions/github/lib/internal/utils.js.map delete mode 100644 node_modules/@actions/github/lib/utils.d.ts delete mode 100644 node_modules/@actions/github/lib/utils.js delete mode 100644 node_modules/@actions/github/lib/utils.js.map delete mode 100644 node_modules/@actions/github/package.json delete mode 100644 node_modules/@actions/http-client/LICENSE delete mode 100644 node_modules/@actions/http-client/README.md delete mode 100644 node_modules/@actions/http-client/RELEASES.md delete mode 100644 node_modules/@actions/http-client/actions.png delete mode 100644 node_modules/@actions/http-client/auth.d.ts delete mode 100644 node_modules/@actions/http-client/auth.js delete mode 100644 node_modules/@actions/http-client/index.d.ts delete mode 100644 node_modules/@actions/http-client/index.js delete mode 100644 node_modules/@actions/http-client/interfaces.d.ts delete mode 100644 node_modules/@actions/http-client/interfaces.js delete mode 100644 node_modules/@actions/http-client/package.json delete mode 100644 node_modules/@actions/http-client/proxy.d.ts delete mode 100644 node_modules/@actions/http-client/proxy.js delete mode 100644 node_modules/@octokit/auth-token/LICENSE delete mode 100644 node_modules/@octokit/auth-token/README.md delete mode 100644 node_modules/@octokit/auth-token/dist-node/index.js delete mode 100644 node_modules/@octokit/auth-token/dist-node/index.js.map delete mode 100644 node_modules/@octokit/auth-token/dist-src/auth.js delete mode 100644 node_modules/@octokit/auth-token/dist-src/hook.js delete mode 100644 node_modules/@octokit/auth-token/dist-src/index.js delete mode 100644 node_modules/@octokit/auth-token/dist-src/types.js delete mode 100644 node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js delete mode 100644 node_modules/@octokit/auth-token/dist-types/auth.d.ts delete mode 100644 node_modules/@octokit/auth-token/dist-types/hook.d.ts delete mode 100644 node_modules/@octokit/auth-token/dist-types/index.d.ts delete mode 100644 node_modules/@octokit/auth-token/dist-types/types.d.ts delete mode 100644 node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts delete mode 100644 node_modules/@octokit/auth-token/dist-web/index.js delete mode 100644 node_modules/@octokit/auth-token/dist-web/index.js.map delete mode 100644 node_modules/@octokit/auth-token/package.json delete mode 100644 node_modules/@octokit/core/LICENSE delete mode 100644 node_modules/@octokit/core/README.md delete mode 100644 node_modules/@octokit/core/dist-node/index.js delete mode 100644 node_modules/@octokit/core/dist-node/index.js.map delete mode 100644 node_modules/@octokit/core/dist-src/index.js delete mode 100644 node_modules/@octokit/core/dist-src/types.js delete mode 100644 node_modules/@octokit/core/dist-src/version.js delete mode 100644 node_modules/@octokit/core/dist-types/index.d.ts delete mode 100644 node_modules/@octokit/core/dist-types/types.d.ts delete mode 100644 node_modules/@octokit/core/dist-types/version.d.ts delete mode 100644 node_modules/@octokit/core/dist-web/index.js delete mode 100644 node_modules/@octokit/core/dist-web/index.js.map delete mode 100644 node_modules/@octokit/core/package.json delete mode 100644 node_modules/@octokit/endpoint/LICENSE delete mode 100644 node_modules/@octokit/endpoint/README.md delete mode 100644 node_modules/@octokit/endpoint/dist-node/index.js delete mode 100644 node_modules/@octokit/endpoint/dist-node/index.js.map delete mode 100644 node_modules/@octokit/endpoint/dist-src/defaults.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/index.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/merge.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/parse.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/util/merge-deep.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/util/omit.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/util/url-template.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/version.js delete mode 100644 node_modules/@octokit/endpoint/dist-src/with-defaults.js delete mode 100644 node_modules/@octokit/endpoint/dist-types/defaults.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/index.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/merge.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/parse.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/util/omit.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/version.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts delete mode 100644 node_modules/@octokit/endpoint/dist-web/index.js delete mode 100644 node_modules/@octokit/endpoint/dist-web/index.js.map delete mode 100644 node_modules/@octokit/endpoint/node_modules/is-plain-object/LICENSE delete mode 100644 node_modules/@octokit/endpoint/node_modules/is-plain-object/README.md delete mode 100644 node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.js delete mode 100644 node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.mjs delete mode 100644 node_modules/@octokit/endpoint/node_modules/is-plain-object/is-plain-object.d.ts delete mode 100644 node_modules/@octokit/endpoint/node_modules/is-plain-object/package.json delete mode 100644 node_modules/@octokit/endpoint/package.json delete mode 100644 node_modules/@octokit/graphql/LICENSE delete mode 100644 node_modules/@octokit/graphql/README.md delete mode 100644 node_modules/@octokit/graphql/dist-node/index.js delete mode 100644 node_modules/@octokit/graphql/dist-node/index.js.map delete mode 100644 node_modules/@octokit/graphql/dist-src/error.js delete mode 100644 node_modules/@octokit/graphql/dist-src/graphql.js delete mode 100644 node_modules/@octokit/graphql/dist-src/index.js delete mode 100644 node_modules/@octokit/graphql/dist-src/types.js delete mode 100644 node_modules/@octokit/graphql/dist-src/version.js delete mode 100644 node_modules/@octokit/graphql/dist-src/with-defaults.js delete mode 100644 node_modules/@octokit/graphql/dist-types/error.d.ts delete mode 100644 node_modules/@octokit/graphql/dist-types/graphql.d.ts delete mode 100644 node_modules/@octokit/graphql/dist-types/index.d.ts delete mode 100644 node_modules/@octokit/graphql/dist-types/types.d.ts delete mode 100644 node_modules/@octokit/graphql/dist-types/version.d.ts delete mode 100644 node_modules/@octokit/graphql/dist-types/with-defaults.d.ts delete mode 100644 node_modules/@octokit/graphql/dist-web/index.js delete mode 100644 node_modules/@octokit/graphql/dist-web/index.js.map delete mode 100644 node_modules/@octokit/graphql/package.json delete mode 100644 node_modules/@octokit/openapi-types/.github/workflows/release-notification.yml delete mode 100644 node_modules/@octokit/openapi-types/.github/workflows/release.yml delete mode 100644 node_modules/@octokit/openapi-types/.github/workflows/update.yml delete mode 100644 node_modules/@octokit/openapi-types/CODE_OF_CONDUCT.md delete mode 100644 node_modules/@octokit/openapi-types/LICENSE delete mode 100644 node_modules/@octokit/openapi-types/README.md delete mode 100644 node_modules/@octokit/openapi-types/cache/openapi-schema.json delete mode 100644 node_modules/@octokit/openapi-types/generated/types.ts delete mode 100644 node_modules/@octokit/openapi-types/package.json delete mode 100644 node_modules/@octokit/openapi-types/scripts/download.js delete mode 100644 node_modules/@octokit/openapi-types/scripts/update-package.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/LICENSE delete mode 100644 node_modules/@octokit/plugin-paginate-rest/README.md delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-node/index.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/index.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/types.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/version.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-web/index.js delete mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map delete mode 100644 node_modules/@octokit/plugin-paginate-rest/package.json delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/README.md delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/types.js delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map delete mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/package.json delete mode 100644 node_modules/@octokit/request-error/LICENSE delete mode 100644 node_modules/@octokit/request-error/README.md delete mode 100644 node_modules/@octokit/request-error/dist-node/index.js delete mode 100644 node_modules/@octokit/request-error/dist-node/index.js.map delete mode 100644 node_modules/@octokit/request-error/dist-src/index.js delete mode 100644 node_modules/@octokit/request-error/dist-src/types.js delete mode 100644 node_modules/@octokit/request-error/dist-types/index.d.ts delete mode 100644 node_modules/@octokit/request-error/dist-types/types.d.ts delete mode 100644 node_modules/@octokit/request-error/dist-web/index.js delete mode 100644 node_modules/@octokit/request-error/dist-web/index.js.map delete mode 100644 node_modules/@octokit/request-error/package.json delete mode 100644 node_modules/@octokit/request/LICENSE delete mode 100644 node_modules/@octokit/request/README.md delete mode 100644 node_modules/@octokit/request/dist-node/index.js delete mode 100644 node_modules/@octokit/request/dist-node/index.js.map delete mode 100644 node_modules/@octokit/request/dist-src/fetch-wrapper.js delete mode 100644 node_modules/@octokit/request/dist-src/get-buffer-response.js delete mode 100644 node_modules/@octokit/request/dist-src/index.js delete mode 100644 node_modules/@octokit/request/dist-src/version.js delete mode 100644 node_modules/@octokit/request/dist-src/with-defaults.js delete mode 100644 node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts delete mode 100644 node_modules/@octokit/request/dist-types/get-buffer-response.d.ts delete mode 100644 node_modules/@octokit/request/dist-types/index.d.ts delete mode 100644 node_modules/@octokit/request/dist-types/version.d.ts delete mode 100644 node_modules/@octokit/request/dist-types/with-defaults.d.ts delete mode 100644 node_modules/@octokit/request/dist-web/index.js delete mode 100644 node_modules/@octokit/request/dist-web/index.js.map delete mode 100644 node_modules/@octokit/request/node_modules/is-plain-object/LICENSE delete mode 100644 node_modules/@octokit/request/node_modules/is-plain-object/README.md delete mode 100644 node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.js delete mode 100644 node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.mjs delete mode 100644 node_modules/@octokit/request/node_modules/is-plain-object/is-plain-object.d.ts delete mode 100644 node_modules/@octokit/request/node_modules/is-plain-object/package.json delete mode 100644 node_modules/@octokit/request/package.json delete mode 100644 node_modules/@octokit/types/LICENSE delete mode 100644 node_modules/@octokit/types/README.md delete mode 100644 node_modules/@octokit/types/dist-node/index.js delete mode 100644 node_modules/@octokit/types/dist-node/index.js.map delete mode 100644 node_modules/@octokit/types/dist-src/AuthInterface.js delete mode 100644 node_modules/@octokit/types/dist-src/EndpointDefaults.js delete mode 100644 node_modules/@octokit/types/dist-src/EndpointInterface.js delete mode 100644 node_modules/@octokit/types/dist-src/EndpointOptions.js delete mode 100644 node_modules/@octokit/types/dist-src/Fetch.js delete mode 100644 node_modules/@octokit/types/dist-src/GetResponseTypeFromEndpointMethod.js delete mode 100644 node_modules/@octokit/types/dist-src/OctokitResponse.js delete mode 100644 node_modules/@octokit/types/dist-src/RequestError.js delete mode 100644 node_modules/@octokit/types/dist-src/RequestHeaders.js delete mode 100644 node_modules/@octokit/types/dist-src/RequestInterface.js delete mode 100644 node_modules/@octokit/types/dist-src/RequestMethod.js delete mode 100644 node_modules/@octokit/types/dist-src/RequestOptions.js delete mode 100644 node_modules/@octokit/types/dist-src/RequestParameters.js delete mode 100644 node_modules/@octokit/types/dist-src/RequestRequestOptions.js delete mode 100644 node_modules/@octokit/types/dist-src/ResponseHeaders.js delete mode 100644 node_modules/@octokit/types/dist-src/Route.js delete mode 100644 node_modules/@octokit/types/dist-src/Signal.js delete mode 100644 node_modules/@octokit/types/dist-src/StrategyInterface.js delete mode 100644 node_modules/@octokit/types/dist-src/Url.js delete mode 100644 node_modules/@octokit/types/dist-src/VERSION.js delete mode 100644 node_modules/@octokit/types/dist-src/generated/Endpoints.js delete mode 100644 node_modules/@octokit/types/dist-src/index.js delete mode 100644 node_modules/@octokit/types/dist-types/AuthInterface.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/EndpointInterface.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/EndpointOptions.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/Fetch.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/OctokitResponse.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/RequestError.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/RequestHeaders.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/RequestInterface.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/RequestMethod.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/RequestOptions.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/RequestParameters.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/Route.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/Signal.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/StrategyInterface.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/Url.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/VERSION.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts delete mode 100644 node_modules/@octokit/types/dist-types/index.d.ts delete mode 100644 node_modules/@octokit/types/dist-web/index.js delete mode 100644 node_modules/@octokit/types/dist-web/index.js.map delete mode 100644 node_modules/@octokit/types/package.json delete mode 100644 node_modules/@types/node/LICENSE delete mode 100644 node_modules/@types/node/README.md delete mode 100644 node_modules/@types/node/assert.d.ts delete mode 100644 node_modules/@types/node/async_hooks.d.ts delete mode 100644 node_modules/@types/node/base.d.ts delete mode 100644 node_modules/@types/node/buffer.d.ts delete mode 100644 node_modules/@types/node/child_process.d.ts delete mode 100644 node_modules/@types/node/cluster.d.ts delete mode 100644 node_modules/@types/node/console.d.ts delete mode 100644 node_modules/@types/node/constants.d.ts delete mode 100644 node_modules/@types/node/crypto.d.ts delete mode 100644 node_modules/@types/node/dgram.d.ts delete mode 100644 node_modules/@types/node/dns.d.ts delete mode 100644 node_modules/@types/node/domain.d.ts delete mode 100644 node_modules/@types/node/events.d.ts delete mode 100644 node_modules/@types/node/fs.d.ts delete mode 100644 node_modules/@types/node/fs/promises.d.ts delete mode 100644 node_modules/@types/node/globals.d.ts delete mode 100644 node_modules/@types/node/globals.global.d.ts delete mode 100644 node_modules/@types/node/http.d.ts delete mode 100644 node_modules/@types/node/http2.d.ts delete mode 100644 node_modules/@types/node/https.d.ts delete mode 100644 node_modules/@types/node/index.d.ts delete mode 100644 node_modules/@types/node/inspector.d.ts delete mode 100644 node_modules/@types/node/module.d.ts delete mode 100644 node_modules/@types/node/net.d.ts delete mode 100644 node_modules/@types/node/os.d.ts delete mode 100644 node_modules/@types/node/package.json delete mode 100644 node_modules/@types/node/path.d.ts delete mode 100644 node_modules/@types/node/perf_hooks.d.ts delete mode 100644 node_modules/@types/node/process.d.ts delete mode 100644 node_modules/@types/node/punycode.d.ts delete mode 100644 node_modules/@types/node/querystring.d.ts delete mode 100644 node_modules/@types/node/readline.d.ts delete mode 100644 node_modules/@types/node/repl.d.ts delete mode 100644 node_modules/@types/node/stream.d.ts delete mode 100644 node_modules/@types/node/string_decoder.d.ts delete mode 100644 node_modules/@types/node/timers.d.ts delete mode 100644 node_modules/@types/node/tls.d.ts delete mode 100644 node_modules/@types/node/trace_events.d.ts delete mode 100644 node_modules/@types/node/ts3.4/assert.d.ts delete mode 100644 node_modules/@types/node/ts3.4/base.d.ts delete mode 100644 node_modules/@types/node/ts3.4/globals.global.d.ts delete mode 100644 node_modules/@types/node/ts3.4/index.d.ts delete mode 100644 node_modules/@types/node/ts3.6/base.d.ts delete mode 100644 node_modules/@types/node/ts3.6/index.d.ts delete mode 100644 node_modules/@types/node/tty.d.ts delete mode 100644 node_modules/@types/node/url.d.ts delete mode 100644 node_modules/@types/node/util.d.ts delete mode 100644 node_modules/@types/node/v8.d.ts delete mode 100644 node_modules/@types/node/vm.d.ts delete mode 100644 node_modules/@types/node/wasi.d.ts delete mode 100644 node_modules/@types/node/worker_threads.d.ts delete mode 100644 node_modules/@types/node/zlib.d.ts delete mode 100644 node_modules/ansi-bgblack/LICENSE delete mode 100644 node_modules/ansi-bgblack/README.md delete mode 100644 node_modules/ansi-bgblack/index.js delete mode 100644 node_modules/ansi-bgblack/package.json delete mode 100644 node_modules/ansi-bgblue/LICENSE delete mode 100644 node_modules/ansi-bgblue/index.js delete mode 100644 node_modules/ansi-bgblue/package.json delete mode 100644 node_modules/ansi-bgblue/readme.md delete mode 100644 node_modules/ansi-bgcyan/LICENSE delete mode 100644 node_modules/ansi-bgcyan/index.js delete mode 100644 node_modules/ansi-bgcyan/package.json delete mode 100644 node_modules/ansi-bgcyan/readme.md delete mode 100644 node_modules/ansi-bggreen/LICENSE delete mode 100644 node_modules/ansi-bggreen/index.js delete mode 100644 node_modules/ansi-bggreen/package.json delete mode 100644 node_modules/ansi-bggreen/readme.md delete mode 100644 node_modules/ansi-bgmagenta/LICENSE delete mode 100644 node_modules/ansi-bgmagenta/index.js delete mode 100644 node_modules/ansi-bgmagenta/package.json delete mode 100644 node_modules/ansi-bgmagenta/readme.md delete mode 100644 node_modules/ansi-bgred/LICENSE delete mode 100644 node_modules/ansi-bgred/index.js delete mode 100644 node_modules/ansi-bgred/package.json delete mode 100644 node_modules/ansi-bgred/readme.md delete mode 100644 node_modules/ansi-bgwhite/LICENSE delete mode 100644 node_modules/ansi-bgwhite/index.js delete mode 100644 node_modules/ansi-bgwhite/package.json delete mode 100644 node_modules/ansi-bgwhite/readme.md delete mode 100644 node_modules/ansi-bgyellow/LICENSE delete mode 100644 node_modules/ansi-bgyellow/index.js delete mode 100644 node_modules/ansi-bgyellow/package.json delete mode 100644 node_modules/ansi-bgyellow/readme.md delete mode 100644 node_modules/ansi-black/LICENSE delete mode 100644 node_modules/ansi-black/index.js delete mode 100644 node_modules/ansi-black/package.json delete mode 100644 node_modules/ansi-black/readme.md delete mode 100644 node_modules/ansi-blue/LICENSE delete mode 100644 node_modules/ansi-blue/index.js delete mode 100644 node_modules/ansi-blue/package.json delete mode 100644 node_modules/ansi-blue/readme.md delete mode 100644 node_modules/ansi-bold/LICENSE delete mode 100644 node_modules/ansi-bold/index.js delete mode 100644 node_modules/ansi-bold/package.json delete mode 100644 node_modules/ansi-bold/readme.md delete mode 100644 node_modules/ansi-cyan/LICENSE delete mode 100644 node_modules/ansi-cyan/index.js delete mode 100644 node_modules/ansi-cyan/package.json delete mode 100644 node_modules/ansi-cyan/readme.md delete mode 100644 node_modules/ansi-dim/LICENSE delete mode 100644 node_modules/ansi-dim/index.js delete mode 100644 node_modules/ansi-dim/package.json delete mode 100644 node_modules/ansi-dim/readme.md delete mode 100644 node_modules/ansi-gray/LICENSE delete mode 100644 node_modules/ansi-gray/index.js delete mode 100644 node_modules/ansi-gray/package.json delete mode 100644 node_modules/ansi-gray/readme.md delete mode 100644 node_modules/ansi-green/LICENSE delete mode 100644 node_modules/ansi-green/index.js delete mode 100644 node_modules/ansi-green/package.json delete mode 100644 node_modules/ansi-green/readme.md delete mode 100644 node_modules/ansi-grey/LICENSE delete mode 100644 node_modules/ansi-grey/index.js delete mode 100644 node_modules/ansi-grey/package.json delete mode 100644 node_modules/ansi-grey/readme.md delete mode 100644 node_modules/ansi-hidden/LICENSE delete mode 100644 node_modules/ansi-hidden/index.js delete mode 100644 node_modules/ansi-hidden/package.json delete mode 100644 node_modules/ansi-hidden/readme.md delete mode 100644 node_modules/ansi-inverse/LICENSE delete mode 100644 node_modules/ansi-inverse/index.js delete mode 100644 node_modules/ansi-inverse/package.json delete mode 100644 node_modules/ansi-inverse/readme.md delete mode 100644 node_modules/ansi-italic/LICENSE delete mode 100644 node_modules/ansi-italic/index.js delete mode 100644 node_modules/ansi-italic/package.json delete mode 100644 node_modules/ansi-italic/readme.md delete mode 100644 node_modules/ansi-magenta/LICENSE delete mode 100644 node_modules/ansi-magenta/index.js delete mode 100644 node_modules/ansi-magenta/package.json delete mode 100644 node_modules/ansi-magenta/readme.md delete mode 100644 node_modules/ansi-red/LICENSE delete mode 100644 node_modules/ansi-red/index.js delete mode 100644 node_modules/ansi-red/package.json delete mode 100644 node_modules/ansi-red/readme.md delete mode 100644 node_modules/ansi-reset/LICENSE delete mode 100644 node_modules/ansi-reset/index.js delete mode 100644 node_modules/ansi-reset/package.json delete mode 100644 node_modules/ansi-reset/readme.md delete mode 100644 node_modules/ansi-strikethrough/LICENSE delete mode 100644 node_modules/ansi-strikethrough/index.js delete mode 100644 node_modules/ansi-strikethrough/package.json delete mode 100644 node_modules/ansi-strikethrough/readme.md delete mode 100644 node_modules/ansi-underline/LICENSE delete mode 100644 node_modules/ansi-underline/index.js delete mode 100644 node_modules/ansi-underline/package.json delete mode 100644 node_modules/ansi-underline/readme.md delete mode 100644 node_modules/ansi-white/LICENSE delete mode 100644 node_modules/ansi-white/index.js delete mode 100644 node_modules/ansi-white/package.json delete mode 100644 node_modules/ansi-white/readme.md delete mode 100644 node_modules/ansi-wrap/LICENSE delete mode 100644 node_modules/ansi-wrap/README.md delete mode 100644 node_modules/ansi-wrap/index.js delete mode 100644 node_modules/ansi-wrap/package.json delete mode 100644 node_modules/ansi-yellow/LICENSE delete mode 100644 node_modules/ansi-yellow/index.js delete mode 100644 node_modules/ansi-yellow/package.json delete mode 100644 node_modules/ansi-yellow/readme.md delete mode 100644 node_modules/argparse/CHANGELOG.md delete mode 100644 node_modules/argparse/LICENSE delete mode 100644 node_modules/argparse/README.md delete mode 100644 node_modules/argparse/index.js delete mode 100644 node_modules/argparse/lib/action.js delete mode 100644 node_modules/argparse/lib/action/append.js delete mode 100644 node_modules/argparse/lib/action/append/constant.js delete mode 100644 node_modules/argparse/lib/action/count.js delete mode 100644 node_modules/argparse/lib/action/help.js delete mode 100644 node_modules/argparse/lib/action/store.js delete mode 100644 node_modules/argparse/lib/action/store/constant.js delete mode 100644 node_modules/argparse/lib/action/store/false.js delete mode 100644 node_modules/argparse/lib/action/store/true.js delete mode 100644 node_modules/argparse/lib/action/subparsers.js delete mode 100644 node_modules/argparse/lib/action/version.js delete mode 100644 node_modules/argparse/lib/action_container.js delete mode 100644 node_modules/argparse/lib/argparse.js delete mode 100644 node_modules/argparse/lib/argument/error.js delete mode 100644 node_modules/argparse/lib/argument/exclusive.js delete mode 100644 node_modules/argparse/lib/argument/group.js delete mode 100644 node_modules/argparse/lib/argument_parser.js delete mode 100644 node_modules/argparse/lib/const.js delete mode 100644 node_modules/argparse/lib/help/added_formatters.js delete mode 100644 node_modules/argparse/lib/help/formatter.js delete mode 100644 node_modules/argparse/lib/namespace.js delete mode 100644 node_modules/argparse/lib/utils.js delete mode 100644 node_modules/argparse/package.json delete mode 100644 node_modules/arr-diff/LICENSE delete mode 100644 node_modules/arr-diff/README.md delete mode 100644 node_modules/arr-diff/index.js delete mode 100644 node_modules/arr-diff/package.json delete mode 100644 node_modules/arr-flatten/LICENSE delete mode 100644 node_modules/arr-flatten/README.md delete mode 100644 node_modules/arr-flatten/index.js delete mode 100644 node_modules/arr-flatten/package.json delete mode 100644 node_modules/arr-union/LICENSE delete mode 100644 node_modules/arr-union/README.md delete mode 100644 node_modules/arr-union/index.js delete mode 100644 node_modules/arr-union/package.json delete mode 100644 node_modules/array-sort/LICENSE delete mode 100644 node_modules/array-sort/README.md delete mode 100644 node_modules/array-sort/index.js delete mode 100644 node_modules/array-sort/node_modules/kind-of/LICENSE delete mode 100644 node_modules/array-sort/node_modules/kind-of/README.md delete mode 100644 node_modules/array-sort/node_modules/kind-of/index.js delete mode 100644 node_modules/array-sort/node_modules/kind-of/package.json delete mode 100644 node_modules/array-sort/package.json delete mode 100644 node_modules/array-unique/LICENSE delete mode 100644 node_modules/array-unique/README.md delete mode 100644 node_modules/array-unique/index.js delete mode 100644 node_modules/array-unique/package.json delete mode 100644 node_modules/assign-symbols/LICENSE delete mode 100644 node_modules/assign-symbols/README.md delete mode 100644 node_modules/assign-symbols/index.js delete mode 100644 node_modules/assign-symbols/package.json delete mode 100644 node_modules/atob/LICENSE delete mode 100644 node_modules/atob/LICENSE.DOCS delete mode 100644 node_modules/atob/README.md delete mode 100644 node_modules/atob/bin/atob.js delete mode 100644 node_modules/atob/bower.json delete mode 100644 node_modules/atob/browser-atob.js delete mode 100644 node_modules/atob/node-atob.js delete mode 100644 node_modules/atob/package.json delete mode 100644 node_modules/atob/test.js delete mode 100644 node_modules/autolinker/LICENSE delete mode 100644 node_modules/autolinker/README.md delete mode 100644 node_modules/autolinker/dist/Autolinker.js delete mode 100644 node_modules/autolinker/dist/Autolinker.min.js delete mode 100644 node_modules/autolinker/package.json delete mode 100644 node_modules/base/LICENSE delete mode 100644 node_modules/base/README.md delete mode 100644 node_modules/base/index.js delete mode 100644 node_modules/base/node_modules/define-property/LICENSE delete mode 100644 node_modules/base/node_modules/define-property/README.md delete mode 100644 node_modules/base/node_modules/define-property/index.js delete mode 100644 node_modules/base/node_modules/define-property/package.json delete mode 100644 node_modules/base/node_modules/is-accessor-descriptor/LICENSE delete mode 100644 node_modules/base/node_modules/is-accessor-descriptor/README.md delete mode 100644 node_modules/base/node_modules/is-accessor-descriptor/index.js delete mode 100644 node_modules/base/node_modules/is-accessor-descriptor/package.json delete mode 100644 node_modules/base/node_modules/is-data-descriptor/LICENSE delete mode 100644 node_modules/base/node_modules/is-data-descriptor/README.md delete mode 100644 node_modules/base/node_modules/is-data-descriptor/index.js delete mode 100644 node_modules/base/node_modules/is-data-descriptor/package.json delete mode 100644 node_modules/base/node_modules/is-descriptor/LICENSE delete mode 100644 node_modules/base/node_modules/is-descriptor/README.md delete mode 100644 node_modules/base/node_modules/is-descriptor/index.js delete mode 100644 node_modules/base/node_modules/is-descriptor/package.json delete mode 100644 node_modules/base/package.json delete mode 100644 node_modules/before-after-hook/LICENSE delete mode 100644 node_modules/before-after-hook/README.md delete mode 100644 node_modules/before-after-hook/index.d.ts delete mode 100644 node_modules/before-after-hook/index.js delete mode 100644 node_modules/before-after-hook/lib/add.js delete mode 100644 node_modules/before-after-hook/lib/register.js delete mode 100644 node_modules/before-after-hook/lib/remove.js delete mode 100644 node_modules/before-after-hook/package.json delete mode 100644 node_modules/braces/LICENSE delete mode 100644 node_modules/braces/README.md delete mode 100644 node_modules/braces/index.js delete mode 100644 node_modules/braces/lib/braces.js delete mode 100644 node_modules/braces/lib/compilers.js delete mode 100644 node_modules/braces/lib/parsers.js delete mode 100644 node_modules/braces/lib/utils.js delete mode 100644 node_modules/braces/node_modules/extend-shallow/LICENSE delete mode 100644 node_modules/braces/node_modules/extend-shallow/README.md delete mode 100644 node_modules/braces/node_modules/extend-shallow/index.js delete mode 100644 node_modules/braces/node_modules/extend-shallow/package.json delete mode 100644 node_modules/braces/package.json delete mode 100644 node_modules/cache-base/LICENSE delete mode 100644 node_modules/cache-base/README.md delete mode 100644 node_modules/cache-base/index.js delete mode 100644 node_modules/cache-base/package.json delete mode 100644 node_modules/class-utils/LICENSE delete mode 100644 node_modules/class-utils/README.md delete mode 100644 node_modules/class-utils/index.js delete mode 100644 node_modules/class-utils/node_modules/define-property/LICENSE delete mode 100644 node_modules/class-utils/node_modules/define-property/README.md delete mode 100644 node_modules/class-utils/node_modules/define-property/index.js delete mode 100644 node_modules/class-utils/node_modules/define-property/package.json delete mode 100644 node_modules/class-utils/package.json delete mode 100644 node_modules/collection-visit/LICENSE delete mode 100644 node_modules/collection-visit/README.md delete mode 100644 node_modules/collection-visit/index.js delete mode 100644 node_modules/collection-visit/package.json delete mode 100644 node_modules/component-emitter/History.md delete mode 100644 node_modules/component-emitter/LICENSE delete mode 100644 node_modules/component-emitter/Readme.md delete mode 100644 node_modules/component-emitter/index.js delete mode 100644 node_modules/component-emitter/package.json delete mode 100644 node_modules/concat-with-sourcemaps/LICENSE.md delete mode 100644 node_modules/concat-with-sourcemaps/README.md delete mode 100644 node_modules/concat-with-sourcemaps/index.d.ts delete mode 100644 node_modules/concat-with-sourcemaps/index.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/CHANGELOG.md delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/LICENSE delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/README.md delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.debug.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.min.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.min.js.map delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/array-set.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/base64-vlq.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/base64.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/binary-search.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/mapping-list.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/quick-sort.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-map-consumer.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-map-generator.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-node.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/lib/util.js delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/package.json delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/source-map.d.ts delete mode 100644 node_modules/concat-with-sourcemaps/node_modules/source-map/source-map.js delete mode 100644 node_modules/concat-with-sourcemaps/package.json delete mode 100644 node_modules/copy-descriptor/LICENSE delete mode 100644 node_modules/copy-descriptor/index.js delete mode 100644 node_modules/copy-descriptor/package.json delete mode 100644 node_modules/core-util-is/LICENSE delete mode 100644 node_modules/core-util-is/README.md delete mode 100644 node_modules/core-util-is/float.patch delete mode 100644 node_modules/core-util-is/lib/util.js delete mode 100644 node_modules/core-util-is/package.json delete mode 100644 node_modules/core-util-is/test.js delete mode 100644 node_modules/create-frame/LICENSE delete mode 100644 node_modules/create-frame/README.md delete mode 100644 node_modules/create-frame/index.js delete mode 100644 node_modules/create-frame/node_modules/define-property/LICENSE delete mode 100644 node_modules/create-frame/node_modules/define-property/README.md delete mode 100644 node_modules/create-frame/node_modules/define-property/index.js delete mode 100644 node_modules/create-frame/node_modules/define-property/package.json delete mode 100644 node_modules/create-frame/node_modules/extend-shallow/LICENSE delete mode 100644 node_modules/create-frame/node_modules/extend-shallow/README.md delete mode 100644 node_modules/create-frame/node_modules/extend-shallow/index.js delete mode 100644 node_modules/create-frame/node_modules/extend-shallow/package.json delete mode 100644 node_modules/create-frame/package.json delete mode 100644 node_modules/create-frame/utils.js delete mode 100644 node_modules/date.js/.travis.yml delete mode 100644 node_modules/date.js/History.md delete mode 100644 node_modules/date.js/Makefile delete mode 100644 node_modules/date.js/Readme.md delete mode 100644 node_modules/date.js/component.json delete mode 100644 node_modules/date.js/dist/date.js delete mode 100644 node_modules/date.js/dist/date.min.js delete mode 100644 node_modules/date.js/index.js delete mode 100644 node_modules/date.js/lib/date.js delete mode 100644 node_modules/date.js/lib/maps.json delete mode 100644 node_modules/date.js/lib/norm.js delete mode 100644 node_modules/date.js/lib/parser.js delete mode 100644 node_modules/date.js/lib/subdash.js delete mode 100644 node_modules/date.js/lib/symbol.js delete mode 100644 node_modules/date.js/lib/tokenize.js delete mode 100644 node_modules/date.js/lib/util.js delete mode 100644 node_modules/date.js/node_modules/debug/.coveralls.yml delete mode 100644 node_modules/date.js/node_modules/debug/.eslintrc delete mode 100644 node_modules/date.js/node_modules/debug/.npmignore delete mode 100644 node_modules/date.js/node_modules/debug/.travis.yml delete mode 100644 node_modules/date.js/node_modules/debug/CHANGELOG.md delete mode 100644 node_modules/date.js/node_modules/debug/LICENSE delete mode 100644 node_modules/date.js/node_modules/debug/Makefile delete mode 100644 node_modules/date.js/node_modules/debug/README.md delete mode 100644 node_modules/date.js/node_modules/debug/karma.conf.js delete mode 100644 node_modules/date.js/node_modules/debug/node.js delete mode 100644 node_modules/date.js/node_modules/debug/package.json delete mode 100644 node_modules/date.js/node_modules/debug/src/browser.js delete mode 100644 node_modules/date.js/node_modules/debug/src/debug.js delete mode 100644 node_modules/date.js/node_modules/debug/src/index.js delete mode 100644 node_modules/date.js/node_modules/debug/src/node.js delete mode 100644 node_modules/date.js/node_modules/ms/index.js delete mode 100644 node_modules/date.js/node_modules/ms/license.md delete mode 100644 node_modules/date.js/node_modules/ms/package.json delete mode 100644 node_modules/date.js/node_modules/ms/readme.md delete mode 100644 node_modules/date.js/package.json delete mode 100644 node_modules/date.js/test/parser.js delete mode 100644 node_modules/decode-uri-component/index.js delete mode 100644 node_modules/decode-uri-component/license delete mode 100644 node_modules/decode-uri-component/package.json delete mode 100644 node_modules/decode-uri-component/readme.md delete mode 100644 node_modules/default-compare/LICENSE delete mode 100644 node_modules/default-compare/README.md delete mode 100644 node_modules/default-compare/index.js delete mode 100644 node_modules/default-compare/node_modules/kind-of/LICENSE delete mode 100644 node_modules/default-compare/node_modules/kind-of/README.md delete mode 100644 node_modules/default-compare/node_modules/kind-of/index.js delete mode 100644 node_modules/default-compare/node_modules/kind-of/package.json delete mode 100644 node_modules/default-compare/package.json delete mode 100644 node_modules/define-property/CHANGELOG.md delete mode 100644 node_modules/define-property/LICENSE delete mode 100644 node_modules/define-property/README.md delete mode 100644 node_modules/define-property/index.js delete mode 100644 node_modules/define-property/node_modules/is-accessor-descriptor/LICENSE delete mode 100644 node_modules/define-property/node_modules/is-accessor-descriptor/README.md delete mode 100644 node_modules/define-property/node_modules/is-accessor-descriptor/index.js delete mode 100644 node_modules/define-property/node_modules/is-accessor-descriptor/package.json delete mode 100644 node_modules/define-property/node_modules/is-data-descriptor/LICENSE delete mode 100644 node_modules/define-property/node_modules/is-data-descriptor/README.md delete mode 100644 node_modules/define-property/node_modules/is-data-descriptor/index.js delete mode 100644 node_modules/define-property/node_modules/is-data-descriptor/package.json delete mode 100644 node_modules/define-property/node_modules/is-descriptor/LICENSE delete mode 100644 node_modules/define-property/node_modules/is-descriptor/README.md delete mode 100644 node_modules/define-property/node_modules/is-descriptor/index.js delete mode 100644 node_modules/define-property/node_modules/is-descriptor/package.json delete mode 100644 node_modules/define-property/package.json delete mode 100644 node_modules/deprecation/LICENSE delete mode 100644 node_modules/deprecation/README.md delete mode 100644 node_modules/deprecation/dist-node/index.js delete mode 100644 node_modules/deprecation/dist-src/index.js delete mode 100644 node_modules/deprecation/dist-types/index.d.ts delete mode 100644 node_modules/deprecation/dist-web/index.js delete mode 100644 node_modules/deprecation/package.json delete mode 100644 node_modules/ent/.npmignore delete mode 100644 node_modules/ent/.travis.yml delete mode 100644 node_modules/ent/LICENSE delete mode 100644 node_modules/ent/decode.js delete mode 100644 node_modules/ent/encode.js delete mode 100644 node_modules/ent/entities.json delete mode 100644 node_modules/ent/examples/simple.js delete mode 100644 node_modules/ent/index.js delete mode 100644 node_modules/ent/package.json delete mode 100644 node_modules/ent/readme.markdown delete mode 100644 node_modules/ent/reversed.json delete mode 100644 node_modules/ent/test/codes.js delete mode 100644 node_modules/ent/test/hex.js delete mode 100644 node_modules/ent/test/num.js delete mode 100644 node_modules/error-symbol/LICENSE delete mode 100644 node_modules/error-symbol/README.md delete mode 100644 node_modules/error-symbol/index.js delete mode 100644 node_modules/error-symbol/package.json delete mode 100644 node_modules/expand-brackets/LICENSE delete mode 100644 node_modules/expand-brackets/README.md delete mode 100644 node_modules/expand-brackets/changelog.md delete mode 100644 node_modules/expand-brackets/index.js delete mode 100644 node_modules/expand-brackets/lib/compilers.js delete mode 100644 node_modules/expand-brackets/lib/parsers.js delete mode 100644 node_modules/expand-brackets/lib/utils.js delete mode 100644 node_modules/expand-brackets/node_modules/debug/.coveralls.yml delete mode 100644 node_modules/expand-brackets/node_modules/debug/.eslintrc delete mode 100644 node_modules/expand-brackets/node_modules/debug/.npmignore delete mode 100644 node_modules/expand-brackets/node_modules/debug/.travis.yml delete mode 100644 node_modules/expand-brackets/node_modules/debug/CHANGELOG.md delete mode 100644 node_modules/expand-brackets/node_modules/debug/LICENSE delete mode 100644 node_modules/expand-brackets/node_modules/debug/Makefile delete mode 100644 node_modules/expand-brackets/node_modules/debug/README.md delete mode 100644 node_modules/expand-brackets/node_modules/debug/component.json delete mode 100644 node_modules/expand-brackets/node_modules/debug/karma.conf.js delete mode 100644 node_modules/expand-brackets/node_modules/debug/node.js delete mode 100644 node_modules/expand-brackets/node_modules/debug/package.json delete mode 100644 node_modules/expand-brackets/node_modules/debug/src/browser.js delete mode 100644 node_modules/expand-brackets/node_modules/debug/src/debug.js delete mode 100644 node_modules/expand-brackets/node_modules/debug/src/index.js delete mode 100644 node_modules/expand-brackets/node_modules/debug/src/inspector-log.js delete mode 100644 node_modules/expand-brackets/node_modules/debug/src/node.js delete mode 100644 node_modules/expand-brackets/node_modules/define-property/LICENSE delete mode 100644 node_modules/expand-brackets/node_modules/define-property/README.md delete mode 100644 node_modules/expand-brackets/node_modules/define-property/index.js delete mode 100644 node_modules/expand-brackets/node_modules/define-property/package.json delete mode 100644 node_modules/expand-brackets/node_modules/extend-shallow/LICENSE delete mode 100644 node_modules/expand-brackets/node_modules/extend-shallow/README.md delete mode 100644 node_modules/expand-brackets/node_modules/extend-shallow/index.js delete mode 100644 node_modules/expand-brackets/node_modules/extend-shallow/package.json delete mode 100644 node_modules/expand-brackets/node_modules/ms/index.js delete mode 100644 node_modules/expand-brackets/node_modules/ms/license.md delete mode 100644 node_modules/expand-brackets/node_modules/ms/package.json delete mode 100644 node_modules/expand-brackets/node_modules/ms/readme.md delete mode 100644 node_modules/expand-brackets/package.json delete mode 100644 node_modules/extend-shallow/LICENSE delete mode 100644 node_modules/extend-shallow/README.md delete mode 100644 node_modules/extend-shallow/index.js delete mode 100644 node_modules/extend-shallow/node_modules/is-extendable/LICENSE delete mode 100644 node_modules/extend-shallow/node_modules/is-extendable/README.md delete mode 100644 node_modules/extend-shallow/node_modules/is-extendable/index.d.ts delete mode 100644 node_modules/extend-shallow/node_modules/is-extendable/index.js delete mode 100644 node_modules/extend-shallow/node_modules/is-extendable/package.json delete mode 100644 node_modules/extend-shallow/package.json delete mode 100644 node_modules/extglob/LICENSE delete mode 100644 node_modules/extglob/README.md delete mode 100644 node_modules/extglob/changelog.md delete mode 100644 node_modules/extglob/index.js delete mode 100644 node_modules/extglob/lib/compilers.js delete mode 100644 node_modules/extglob/lib/extglob.js delete mode 100644 node_modules/extglob/lib/parsers.js delete mode 100644 node_modules/extglob/lib/utils.js delete mode 100644 node_modules/extglob/node_modules/define-property/LICENSE delete mode 100644 node_modules/extglob/node_modules/define-property/README.md delete mode 100644 node_modules/extglob/node_modules/define-property/index.js delete mode 100644 node_modules/extglob/node_modules/define-property/package.json delete mode 100644 node_modules/extglob/node_modules/extend-shallow/LICENSE delete mode 100644 node_modules/extglob/node_modules/extend-shallow/README.md delete mode 100644 node_modules/extglob/node_modules/extend-shallow/index.js delete mode 100644 node_modules/extglob/node_modules/extend-shallow/package.json delete mode 100644 node_modules/extglob/node_modules/is-accessor-descriptor/LICENSE delete mode 100644 node_modules/extglob/node_modules/is-accessor-descriptor/README.md delete mode 100644 node_modules/extglob/node_modules/is-accessor-descriptor/index.js delete mode 100644 node_modules/extglob/node_modules/is-accessor-descriptor/package.json delete mode 100644 node_modules/extglob/node_modules/is-data-descriptor/LICENSE delete mode 100644 node_modules/extglob/node_modules/is-data-descriptor/README.md delete mode 100644 node_modules/extglob/node_modules/is-data-descriptor/index.js delete mode 100644 node_modules/extglob/node_modules/is-data-descriptor/package.json delete mode 100644 node_modules/extglob/node_modules/is-descriptor/LICENSE delete mode 100644 node_modules/extglob/node_modules/is-descriptor/README.md delete mode 100644 node_modules/extglob/node_modules/is-descriptor/index.js delete mode 100644 node_modules/extglob/node_modules/is-descriptor/package.json delete mode 100644 node_modules/extglob/package.json delete mode 100644 node_modules/falsey/LICENSE delete mode 100644 node_modules/falsey/README.md delete mode 100644 node_modules/falsey/index.js delete mode 100644 node_modules/falsey/node_modules/kind-of/LICENSE delete mode 100644 node_modules/falsey/node_modules/kind-of/README.md delete mode 100644 node_modules/falsey/node_modules/kind-of/index.js delete mode 100644 node_modules/falsey/node_modules/kind-of/package.json delete mode 100644 node_modules/falsey/package.json delete mode 100644 node_modules/fill-range/LICENSE delete mode 100644 node_modules/fill-range/README.md delete mode 100644 node_modules/fill-range/index.js delete mode 100644 node_modules/fill-range/node_modules/extend-shallow/LICENSE delete mode 100644 node_modules/fill-range/node_modules/extend-shallow/README.md delete mode 100644 node_modules/fill-range/node_modules/extend-shallow/index.js delete mode 100644 node_modules/fill-range/node_modules/extend-shallow/package.json delete mode 100644 node_modules/fill-range/package.json delete mode 100644 node_modules/for-in/LICENSE delete mode 100644 node_modules/for-in/README.md delete mode 100644 node_modules/for-in/index.js delete mode 100644 node_modules/for-in/package.json delete mode 100644 node_modules/for-own/LICENSE delete mode 100644 node_modules/for-own/README.md delete mode 100644 node_modules/for-own/index.js delete mode 100644 node_modules/for-own/package.json delete mode 100644 node_modules/fragment-cache/LICENSE delete mode 100644 node_modules/fragment-cache/README.md delete mode 100644 node_modules/fragment-cache/index.js delete mode 100644 node_modules/fragment-cache/package.json delete mode 100644 node_modules/fs-exists-sync/LICENSE delete mode 100644 node_modules/fs-exists-sync/README.md delete mode 100644 node_modules/fs-exists-sync/index.js delete mode 100644 node_modules/fs-exists-sync/package.json delete mode 100644 node_modules/get-object/LICENSE delete mode 100644 node_modules/get-object/README.md delete mode 100644 node_modules/get-object/index.js delete mode 100644 node_modules/get-object/node_modules/is-number/LICENSE delete mode 100644 node_modules/get-object/node_modules/is-number/README.md delete mode 100644 node_modules/get-object/node_modules/is-number/index.js delete mode 100644 node_modules/get-object/node_modules/is-number/package.json delete mode 100644 node_modules/get-object/node_modules/isobject/.gitattributes delete mode 100644 node_modules/get-object/node_modules/isobject/.jshintrc delete mode 100644 node_modules/get-object/node_modules/isobject/.npmignore delete mode 100644 node_modules/get-object/node_modules/isobject/.verbrc.md delete mode 100644 node_modules/get-object/node_modules/isobject/LICENSE-MIT delete mode 100644 node_modules/get-object/node_modules/isobject/README.md delete mode 100644 node_modules/get-object/node_modules/isobject/index.js delete mode 100644 node_modules/get-object/node_modules/isobject/package.json delete mode 100644 node_modules/get-object/node_modules/isobject/test/mocha.opts delete mode 100644 node_modules/get-object/node_modules/isobject/test/test.js delete mode 100644 node_modules/get-object/node_modules/kind-of/LICENSE delete mode 100644 node_modules/get-object/node_modules/kind-of/README.md delete mode 100644 node_modules/get-object/node_modules/kind-of/index.js delete mode 100644 node_modules/get-object/node_modules/kind-of/package.json delete mode 100644 node_modules/get-object/package.json delete mode 100644 node_modules/get-value/LICENSE delete mode 100644 node_modules/get-value/index.js delete mode 100644 node_modules/get-value/package.json delete mode 100644 node_modules/gulp-header/.editorconfig delete mode 100644 node_modules/gulp-header/LICENSE delete mode 100644 node_modules/gulp-header/README.md delete mode 100644 node_modules/gulp-header/changelog.md delete mode 100644 node_modules/gulp-header/index.js delete mode 100644 node_modules/gulp-header/package.json delete mode 100644 node_modules/handlebars-helper-create-frame/LICENSE delete mode 100644 node_modules/handlebars-helper-create-frame/README.md delete mode 100644 node_modules/handlebars-helper-create-frame/index.js delete mode 100644 node_modules/handlebars-helper-create-frame/package.json delete mode 100644 node_modules/handlebars-helpers/CHANGELOG delete mode 100644 node_modules/handlebars-helpers/LICENSE delete mode 100644 node_modules/handlebars-helpers/README.md delete mode 100644 node_modules/handlebars-helpers/index.js delete mode 100644 node_modules/handlebars-helpers/lib/array.js delete mode 100644 node_modules/handlebars-helpers/lib/code.js delete mode 100644 node_modules/handlebars-helpers/lib/collection.js delete mode 100644 node_modules/handlebars-helpers/lib/comparison.js delete mode 100644 node_modules/handlebars-helpers/lib/date.js delete mode 100644 node_modules/handlebars-helpers/lib/fs.js delete mode 100644 node_modules/handlebars-helpers/lib/html.js delete mode 100644 node_modules/handlebars-helpers/lib/i18n.js delete mode 100644 node_modules/handlebars-helpers/lib/index.js delete mode 100644 node_modules/handlebars-helpers/lib/inflection.js delete mode 100644 node_modules/handlebars-helpers/lib/logging.js delete mode 100644 node_modules/handlebars-helpers/lib/markdown.js delete mode 100644 node_modules/handlebars-helpers/lib/match.js delete mode 100644 node_modules/handlebars-helpers/lib/math.js delete mode 100644 node_modules/handlebars-helpers/lib/misc.js delete mode 100644 node_modules/handlebars-helpers/lib/number.js delete mode 100644 node_modules/handlebars-helpers/lib/object.js delete mode 100644 node_modules/handlebars-helpers/lib/path.js delete mode 100644 node_modules/handlebars-helpers/lib/regex.js delete mode 100644 node_modules/handlebars-helpers/lib/string.js delete mode 100644 node_modules/handlebars-helpers/lib/url.js delete mode 100644 node_modules/handlebars-helpers/lib/utils/html.js delete mode 100644 node_modules/handlebars-helpers/lib/utils/index.js delete mode 100644 node_modules/handlebars-helpers/lib/utils/utils.js delete mode 100644 node_modules/handlebars-helpers/node_modules/define-property/LICENSE delete mode 100644 node_modules/handlebars-helpers/node_modules/define-property/README.md delete mode 100644 node_modules/handlebars-helpers/node_modules/define-property/index.js delete mode 100644 node_modules/handlebars-helpers/node_modules/define-property/package.json delete mode 100644 node_modules/handlebars-helpers/node_modules/is-accessor-descriptor/LICENSE delete mode 100644 node_modules/handlebars-helpers/node_modules/is-accessor-descriptor/README.md delete mode 100644 node_modules/handlebars-helpers/node_modules/is-accessor-descriptor/index.js delete mode 100644 node_modules/handlebars-helpers/node_modules/is-accessor-descriptor/package.json delete mode 100644 node_modules/handlebars-helpers/node_modules/is-data-descriptor/LICENSE delete mode 100644 node_modules/handlebars-helpers/node_modules/is-data-descriptor/README.md delete mode 100644 node_modules/handlebars-helpers/node_modules/is-data-descriptor/index.js delete mode 100644 node_modules/handlebars-helpers/node_modules/is-data-descriptor/package.json delete mode 100644 node_modules/handlebars-helpers/node_modules/is-descriptor/LICENSE delete mode 100644 node_modules/handlebars-helpers/node_modules/is-descriptor/README.md delete mode 100644 node_modules/handlebars-helpers/node_modules/is-descriptor/index.js delete mode 100644 node_modules/handlebars-helpers/node_modules/is-descriptor/package.json delete mode 100644 node_modules/handlebars-helpers/node_modules/is-number/LICENSE delete mode 100644 node_modules/handlebars-helpers/node_modules/is-number/README.md delete mode 100644 node_modules/handlebars-helpers/node_modules/is-number/index.js delete mode 100644 node_modules/handlebars-helpers/node_modules/is-number/package.json delete mode 100644 node_modules/handlebars-helpers/package.json delete mode 100644 node_modules/handlebars-utils/LICENSE delete mode 100644 node_modules/handlebars-utils/README.md delete mode 100644 node_modules/handlebars-utils/index.js delete mode 100644 node_modules/handlebars-utils/package.json delete mode 100644 node_modules/handlebars/LICENSE delete mode 100644 node_modules/handlebars/README.markdown delete mode 100644 node_modules/handlebars/bin/.eslintrc.js delete mode 100644 node_modules/handlebars/bin/handlebars delete mode 100644 node_modules/handlebars/dist/amd/handlebars.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars.runtime.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/base.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/ast.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/base.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/code-gen.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/compiler.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/helpers.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/javascript-compiler.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/parser.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/printer.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/visitor.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/compiler/whitespace-control.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/decorators.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/decorators/inline.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/exception.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/helpers.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/helpers/block-helper-missing.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/helpers/each.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/helpers/helper-missing.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/helpers/if.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/helpers/log.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/helpers/lookup.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/helpers/with.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/internal/create-new-lookup-object.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/internal/proto-access.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/internal/wrapHelper.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/logger.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/no-conflict.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/runtime.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/safe-string.js delete mode 100644 node_modules/handlebars/dist/amd/handlebars/utils.js delete mode 100644 node_modules/handlebars/dist/amd/precompiler.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars.runtime.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/base.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/base.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/decorators.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/exception.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/helpers.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/helpers/each.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/helpers/if.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/helpers/log.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/helpers/with.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/logger.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/no-conflict.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/runtime.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/safe-string.js delete mode 100644 node_modules/handlebars/dist/cjs/handlebars/utils.js delete mode 100644 node_modules/handlebars/dist/cjs/precompiler.js delete mode 100644 node_modules/handlebars/dist/handlebars.amd.js delete mode 100644 node_modules/handlebars/dist/handlebars.amd.min.js delete mode 100644 node_modules/handlebars/dist/handlebars.js delete mode 100644 node_modules/handlebars/dist/handlebars.min.js delete mode 100644 node_modules/handlebars/dist/handlebars.runtime.amd.js delete mode 100644 node_modules/handlebars/dist/handlebars.runtime.amd.min.js delete mode 100644 node_modules/handlebars/dist/handlebars.runtime.js delete mode 100644 node_modules/handlebars/dist/handlebars.runtime.min.js delete mode 100644 node_modules/handlebars/lib/handlebars.js delete mode 100644 node_modules/handlebars/lib/handlebars.runtime.js delete mode 100644 node_modules/handlebars/lib/handlebars/base.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/ast.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/base.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/code-gen.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/compiler.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/helpers.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/parser.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/printer.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/visitor.js delete mode 100644 node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js delete mode 100644 node_modules/handlebars/lib/handlebars/decorators.js delete mode 100644 node_modules/handlebars/lib/handlebars/decorators/inline.js delete mode 100644 node_modules/handlebars/lib/handlebars/exception.js delete mode 100644 node_modules/handlebars/lib/handlebars/helpers.js delete mode 100644 node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js delete mode 100644 node_modules/handlebars/lib/handlebars/helpers/each.js delete mode 100644 node_modules/handlebars/lib/handlebars/helpers/helper-missing.js delete mode 100644 node_modules/handlebars/lib/handlebars/helpers/if.js delete mode 100644 node_modules/handlebars/lib/handlebars/helpers/log.js delete mode 100644 node_modules/handlebars/lib/handlebars/helpers/lookup.js delete mode 100644 node_modules/handlebars/lib/handlebars/helpers/with.js delete mode 100644 node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js delete mode 100644 node_modules/handlebars/lib/handlebars/internal/proto-access.js delete mode 100644 node_modules/handlebars/lib/handlebars/internal/wrapHelper.js delete mode 100644 node_modules/handlebars/lib/handlebars/logger.js delete mode 100644 node_modules/handlebars/lib/handlebars/no-conflict.js delete mode 100644 node_modules/handlebars/lib/handlebars/runtime.js delete mode 100644 node_modules/handlebars/lib/handlebars/safe-string.js delete mode 100644 node_modules/handlebars/lib/handlebars/utils.js delete mode 100644 node_modules/handlebars/lib/index.js delete mode 100644 node_modules/handlebars/lib/precompiler.js delete mode 100644 node_modules/handlebars/node_modules/source-map/CHANGELOG.md delete mode 100644 node_modules/handlebars/node_modules/source-map/LICENSE delete mode 100644 node_modules/handlebars/node_modules/source-map/README.md delete mode 100644 node_modules/handlebars/node_modules/source-map/dist/source-map.debug.js delete mode 100644 node_modules/handlebars/node_modules/source-map/dist/source-map.js delete mode 100644 node_modules/handlebars/node_modules/source-map/dist/source-map.min.js delete mode 100644 node_modules/handlebars/node_modules/source-map/dist/source-map.min.js.map delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/array-set.js delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/base64-vlq.js delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/base64.js delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/binary-search.js delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/mapping-list.js delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/quick-sort.js delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/source-map-consumer.js delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/source-map-generator.js delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/source-node.js delete mode 100644 node_modules/handlebars/node_modules/source-map/lib/util.js delete mode 100644 node_modules/handlebars/node_modules/source-map/package.json delete mode 100644 node_modules/handlebars/node_modules/source-map/source-map.d.ts delete mode 100644 node_modules/handlebars/node_modules/source-map/source-map.js delete mode 100644 node_modules/handlebars/package.json delete mode 100644 node_modules/handlebars/print-script delete mode 100644 node_modules/handlebars/release-notes.md delete mode 100644 node_modules/handlebars/runtime.d.ts delete mode 100644 node_modules/handlebars/runtime.js delete mode 100644 node_modules/handlebars/types/index.d.ts delete mode 100644 node_modules/has-value/LICENSE delete mode 100644 node_modules/has-value/README.md delete mode 100644 node_modules/has-value/index.js delete mode 100644 node_modules/has-value/package.json delete mode 100644 node_modules/has-values/LICENSE delete mode 100644 node_modules/has-values/README.md delete mode 100644 node_modules/has-values/index.js delete mode 100644 node_modules/has-values/node_modules/kind-of/LICENSE delete mode 100644 node_modules/has-values/node_modules/kind-of/README.md delete mode 100644 node_modules/has-values/node_modules/kind-of/index.js delete mode 100644 node_modules/has-values/node_modules/kind-of/package.json delete mode 100644 node_modules/has-values/package.json delete mode 100644 node_modules/helper-date/LICENSE delete mode 100644 node_modules/helper-date/README.md delete mode 100644 node_modules/helper-date/index.js delete mode 100644 node_modules/helper-date/package.json delete mode 100644 node_modules/helper-markdown/LICENSE delete mode 100644 node_modules/helper-markdown/README.md delete mode 100644 node_modules/helper-markdown/index.js delete mode 100644 node_modules/helper-markdown/package.json delete mode 100644 node_modules/helper-md/LICENSE delete mode 100644 node_modules/helper-md/README.md delete mode 100644 node_modules/helper-md/index.js delete mode 100644 node_modules/helper-md/node_modules/extend-shallow/LICENSE delete mode 100644 node_modules/helper-md/node_modules/extend-shallow/README.md delete mode 100644 node_modules/helper-md/node_modules/extend-shallow/index.js delete mode 100644 node_modules/helper-md/node_modules/extend-shallow/package.json delete mode 100644 node_modules/helper-md/package.json delete mode 100644 node_modules/highlight.js/LICENSE delete mode 100644 node_modules/highlight.js/README.md delete mode 100644 node_modules/highlight.js/deprecated.js delete mode 100644 node_modules/highlight.js/docs/api.rst delete mode 100644 node_modules/highlight.js/docs/building-testing.rst delete mode 100644 node_modules/highlight.js/docs/css-classes-reference.rst delete mode 100644 node_modules/highlight.js/docs/index.rst delete mode 100644 node_modules/highlight.js/docs/language-contribution.rst delete mode 100644 node_modules/highlight.js/docs/language-guide.rst delete mode 100644 node_modules/highlight.js/docs/language-requests.rst delete mode 100644 node_modules/highlight.js/docs/line-numbers.rst delete mode 100644 node_modules/highlight.js/docs/maintainers-guide.rst delete mode 100644 node_modules/highlight.js/docs/reference.rst delete mode 100644 node_modules/highlight.js/docs/style-guide.rst delete mode 100644 node_modules/highlight.js/lib/highlight.js delete mode 100644 node_modules/highlight.js/lib/index.js delete mode 100644 node_modules/highlight.js/lib/languages/1c.js delete mode 100644 node_modules/highlight.js/lib/languages/abnf.js delete mode 100644 node_modules/highlight.js/lib/languages/accesslog.js delete mode 100644 node_modules/highlight.js/lib/languages/actionscript.js delete mode 100644 node_modules/highlight.js/lib/languages/ada.js delete mode 100644 node_modules/highlight.js/lib/languages/angelscript.js delete mode 100644 node_modules/highlight.js/lib/languages/apache.js delete mode 100644 node_modules/highlight.js/lib/languages/applescript.js delete mode 100644 node_modules/highlight.js/lib/languages/arcade.js delete mode 100644 node_modules/highlight.js/lib/languages/arduino.js delete mode 100644 node_modules/highlight.js/lib/languages/armasm.js delete mode 100644 node_modules/highlight.js/lib/languages/asciidoc.js delete mode 100644 node_modules/highlight.js/lib/languages/aspectj.js delete mode 100644 node_modules/highlight.js/lib/languages/autohotkey.js delete mode 100644 node_modules/highlight.js/lib/languages/autoit.js delete mode 100644 node_modules/highlight.js/lib/languages/avrasm.js delete mode 100644 node_modules/highlight.js/lib/languages/awk.js delete mode 100644 node_modules/highlight.js/lib/languages/axapta.js delete mode 100644 node_modules/highlight.js/lib/languages/bash.js delete mode 100644 node_modules/highlight.js/lib/languages/basic.js delete mode 100644 node_modules/highlight.js/lib/languages/bnf.js delete mode 100644 node_modules/highlight.js/lib/languages/brainfuck.js delete mode 100644 node_modules/highlight.js/lib/languages/cal.js delete mode 100644 node_modules/highlight.js/lib/languages/capnproto.js delete mode 100644 node_modules/highlight.js/lib/languages/ceylon.js delete mode 100644 node_modules/highlight.js/lib/languages/clean.js delete mode 100644 node_modules/highlight.js/lib/languages/clojure-repl.js delete mode 100644 node_modules/highlight.js/lib/languages/clojure.js delete mode 100644 node_modules/highlight.js/lib/languages/cmake.js delete mode 100644 node_modules/highlight.js/lib/languages/coffeescript.js delete mode 100644 node_modules/highlight.js/lib/languages/coq.js delete mode 100644 node_modules/highlight.js/lib/languages/cos.js delete mode 100644 node_modules/highlight.js/lib/languages/cpp.js delete mode 100644 node_modules/highlight.js/lib/languages/crmsh.js delete mode 100644 node_modules/highlight.js/lib/languages/crystal.js delete mode 100644 node_modules/highlight.js/lib/languages/cs.js delete mode 100644 node_modules/highlight.js/lib/languages/csp.js delete mode 100644 node_modules/highlight.js/lib/languages/css.js delete mode 100644 node_modules/highlight.js/lib/languages/d.js delete mode 100644 node_modules/highlight.js/lib/languages/dart.js delete mode 100644 node_modules/highlight.js/lib/languages/delphi.js delete mode 100644 node_modules/highlight.js/lib/languages/diff.js delete mode 100644 node_modules/highlight.js/lib/languages/django.js delete mode 100644 node_modules/highlight.js/lib/languages/dns.js delete mode 100644 node_modules/highlight.js/lib/languages/dockerfile.js delete mode 100644 node_modules/highlight.js/lib/languages/dos.js delete mode 100644 node_modules/highlight.js/lib/languages/dsconfig.js delete mode 100644 node_modules/highlight.js/lib/languages/dts.js delete mode 100644 node_modules/highlight.js/lib/languages/dust.js delete mode 100644 node_modules/highlight.js/lib/languages/ebnf.js delete mode 100644 node_modules/highlight.js/lib/languages/elixir.js delete mode 100644 node_modules/highlight.js/lib/languages/elm.js delete mode 100644 node_modules/highlight.js/lib/languages/erb.js delete mode 100644 node_modules/highlight.js/lib/languages/erlang-repl.js delete mode 100644 node_modules/highlight.js/lib/languages/erlang.js delete mode 100644 node_modules/highlight.js/lib/languages/excel.js delete mode 100644 node_modules/highlight.js/lib/languages/fix.js delete mode 100644 node_modules/highlight.js/lib/languages/flix.js delete mode 100644 node_modules/highlight.js/lib/languages/fortran.js delete mode 100644 node_modules/highlight.js/lib/languages/fsharp.js delete mode 100644 node_modules/highlight.js/lib/languages/gams.js delete mode 100644 node_modules/highlight.js/lib/languages/gauss.js delete mode 100644 node_modules/highlight.js/lib/languages/gcode.js delete mode 100644 node_modules/highlight.js/lib/languages/gherkin.js delete mode 100644 node_modules/highlight.js/lib/languages/glsl.js delete mode 100644 node_modules/highlight.js/lib/languages/gml.js delete mode 100644 node_modules/highlight.js/lib/languages/go.js delete mode 100644 node_modules/highlight.js/lib/languages/golo.js delete mode 100644 node_modules/highlight.js/lib/languages/gradle.js delete mode 100644 node_modules/highlight.js/lib/languages/groovy.js delete mode 100644 node_modules/highlight.js/lib/languages/haml.js delete mode 100644 node_modules/highlight.js/lib/languages/handlebars.js delete mode 100644 node_modules/highlight.js/lib/languages/haskell.js delete mode 100644 node_modules/highlight.js/lib/languages/haxe.js delete mode 100644 node_modules/highlight.js/lib/languages/hsp.js delete mode 100644 node_modules/highlight.js/lib/languages/htmlbars.js delete mode 100644 node_modules/highlight.js/lib/languages/http.js delete mode 100644 node_modules/highlight.js/lib/languages/hy.js delete mode 100644 node_modules/highlight.js/lib/languages/inform7.js delete mode 100644 node_modules/highlight.js/lib/languages/ini.js delete mode 100644 node_modules/highlight.js/lib/languages/irpf90.js delete mode 100644 node_modules/highlight.js/lib/languages/isbl.js delete mode 100644 node_modules/highlight.js/lib/languages/java.js delete mode 100644 node_modules/highlight.js/lib/languages/javascript.js delete mode 100644 node_modules/highlight.js/lib/languages/jboss-cli.js delete mode 100644 node_modules/highlight.js/lib/languages/json.js delete mode 100644 node_modules/highlight.js/lib/languages/julia-repl.js delete mode 100644 node_modules/highlight.js/lib/languages/julia.js delete mode 100644 node_modules/highlight.js/lib/languages/kotlin.js delete mode 100644 node_modules/highlight.js/lib/languages/lasso.js delete mode 100644 node_modules/highlight.js/lib/languages/ldif.js delete mode 100644 node_modules/highlight.js/lib/languages/leaf.js delete mode 100644 node_modules/highlight.js/lib/languages/less.js delete mode 100644 node_modules/highlight.js/lib/languages/lisp.js delete mode 100644 node_modules/highlight.js/lib/languages/livecodeserver.js delete mode 100644 node_modules/highlight.js/lib/languages/livescript.js delete mode 100644 node_modules/highlight.js/lib/languages/llvm.js delete mode 100644 node_modules/highlight.js/lib/languages/lsl.js delete mode 100644 node_modules/highlight.js/lib/languages/lua.js delete mode 100644 node_modules/highlight.js/lib/languages/makefile.js delete mode 100644 node_modules/highlight.js/lib/languages/markdown.js delete mode 100644 node_modules/highlight.js/lib/languages/mathematica.js delete mode 100644 node_modules/highlight.js/lib/languages/matlab.js delete mode 100644 node_modules/highlight.js/lib/languages/maxima.js delete mode 100644 node_modules/highlight.js/lib/languages/mel.js delete mode 100644 node_modules/highlight.js/lib/languages/mercury.js delete mode 100644 node_modules/highlight.js/lib/languages/mipsasm.js delete mode 100644 node_modules/highlight.js/lib/languages/mizar.js delete mode 100644 node_modules/highlight.js/lib/languages/mojolicious.js delete mode 100644 node_modules/highlight.js/lib/languages/monkey.js delete mode 100644 node_modules/highlight.js/lib/languages/moonscript.js delete mode 100644 node_modules/highlight.js/lib/languages/n1ql.js delete mode 100644 node_modules/highlight.js/lib/languages/nginx.js delete mode 100644 node_modules/highlight.js/lib/languages/nimrod.js delete mode 100644 node_modules/highlight.js/lib/languages/nix.js delete mode 100644 node_modules/highlight.js/lib/languages/nsis.js delete mode 100644 node_modules/highlight.js/lib/languages/objectivec.js delete mode 100644 node_modules/highlight.js/lib/languages/ocaml.js delete mode 100644 node_modules/highlight.js/lib/languages/openscad.js delete mode 100644 node_modules/highlight.js/lib/languages/oxygene.js delete mode 100644 node_modules/highlight.js/lib/languages/parser3.js delete mode 100644 node_modules/highlight.js/lib/languages/perl.js delete mode 100644 node_modules/highlight.js/lib/languages/pf.js delete mode 100644 node_modules/highlight.js/lib/languages/pgsql.js delete mode 100644 node_modules/highlight.js/lib/languages/php.js delete mode 100644 node_modules/highlight.js/lib/languages/plaintext.js delete mode 100644 node_modules/highlight.js/lib/languages/pony.js delete mode 100644 node_modules/highlight.js/lib/languages/powershell.js delete mode 100644 node_modules/highlight.js/lib/languages/processing.js delete mode 100644 node_modules/highlight.js/lib/languages/profile.js delete mode 100644 node_modules/highlight.js/lib/languages/prolog.js delete mode 100644 node_modules/highlight.js/lib/languages/properties.js delete mode 100644 node_modules/highlight.js/lib/languages/protobuf.js delete mode 100644 node_modules/highlight.js/lib/languages/puppet.js delete mode 100644 node_modules/highlight.js/lib/languages/purebasic.js delete mode 100644 node_modules/highlight.js/lib/languages/python.js delete mode 100644 node_modules/highlight.js/lib/languages/q.js delete mode 100644 node_modules/highlight.js/lib/languages/qml.js delete mode 100644 node_modules/highlight.js/lib/languages/r.js delete mode 100644 node_modules/highlight.js/lib/languages/reasonml.js delete mode 100644 node_modules/highlight.js/lib/languages/rib.js delete mode 100644 node_modules/highlight.js/lib/languages/roboconf.js delete mode 100644 node_modules/highlight.js/lib/languages/routeros.js delete mode 100644 node_modules/highlight.js/lib/languages/rsl.js delete mode 100644 node_modules/highlight.js/lib/languages/ruby.js delete mode 100644 node_modules/highlight.js/lib/languages/ruleslanguage.js delete mode 100644 node_modules/highlight.js/lib/languages/rust.js delete mode 100644 node_modules/highlight.js/lib/languages/sas.js delete mode 100644 node_modules/highlight.js/lib/languages/scala.js delete mode 100644 node_modules/highlight.js/lib/languages/scheme.js delete mode 100644 node_modules/highlight.js/lib/languages/scilab.js delete mode 100644 node_modules/highlight.js/lib/languages/scss.js delete mode 100644 node_modules/highlight.js/lib/languages/shell.js delete mode 100644 node_modules/highlight.js/lib/languages/smali.js delete mode 100644 node_modules/highlight.js/lib/languages/smalltalk.js delete mode 100644 node_modules/highlight.js/lib/languages/sml.js delete mode 100644 node_modules/highlight.js/lib/languages/sqf.js delete mode 100644 node_modules/highlight.js/lib/languages/sql.js delete mode 100644 node_modules/highlight.js/lib/languages/stan.js delete mode 100644 node_modules/highlight.js/lib/languages/stata.js delete mode 100644 node_modules/highlight.js/lib/languages/step21.js delete mode 100644 node_modules/highlight.js/lib/languages/stylus.js delete mode 100644 node_modules/highlight.js/lib/languages/subunit.js delete mode 100644 node_modules/highlight.js/lib/languages/swift.js delete mode 100644 node_modules/highlight.js/lib/languages/taggerscript.js delete mode 100644 node_modules/highlight.js/lib/languages/tap.js delete mode 100644 node_modules/highlight.js/lib/languages/tcl.js delete mode 100644 node_modules/highlight.js/lib/languages/tex.js delete mode 100644 node_modules/highlight.js/lib/languages/thrift.js delete mode 100644 node_modules/highlight.js/lib/languages/tp.js delete mode 100644 node_modules/highlight.js/lib/languages/twig.js delete mode 100644 node_modules/highlight.js/lib/languages/typescript.js delete mode 100644 node_modules/highlight.js/lib/languages/vala.js delete mode 100644 node_modules/highlight.js/lib/languages/vbnet.js delete mode 100644 node_modules/highlight.js/lib/languages/vbscript-html.js delete mode 100644 node_modules/highlight.js/lib/languages/vbscript.js delete mode 100644 node_modules/highlight.js/lib/languages/verilog.js delete mode 100644 node_modules/highlight.js/lib/languages/vhdl.js delete mode 100644 node_modules/highlight.js/lib/languages/vim.js delete mode 100644 node_modules/highlight.js/lib/languages/x86asm.js delete mode 100644 node_modules/highlight.js/lib/languages/xl.js delete mode 100644 node_modules/highlight.js/lib/languages/xml.js delete mode 100644 node_modules/highlight.js/lib/languages/xquery.js delete mode 100644 node_modules/highlight.js/lib/languages/yaml.js delete mode 100644 node_modules/highlight.js/lib/languages/zephir.js delete mode 100644 node_modules/highlight.js/package.json delete mode 100644 node_modules/highlight.js/scss/a11y-dark.scss delete mode 100644 node_modules/highlight.js/scss/a11y-light.scss delete mode 100644 node_modules/highlight.js/scss/agate.scss delete mode 100644 node_modules/highlight.js/scss/an-old-hope.scss delete mode 100644 node_modules/highlight.js/scss/androidstudio.scss delete mode 100644 node_modules/highlight.js/scss/arduino-light.scss delete mode 100644 node_modules/highlight.js/scss/arta.scss delete mode 100644 node_modules/highlight.js/scss/ascetic.scss delete mode 100644 node_modules/highlight.js/scss/atelier-cave-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-cave-light.scss delete mode 100644 node_modules/highlight.js/scss/atelier-dune-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-dune-light.scss delete mode 100644 node_modules/highlight.js/scss/atelier-estuary-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-estuary-light.scss delete mode 100644 node_modules/highlight.js/scss/atelier-forest-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-forest-light.scss delete mode 100644 node_modules/highlight.js/scss/atelier-heath-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-heath-light.scss delete mode 100644 node_modules/highlight.js/scss/atelier-lakeside-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-lakeside-light.scss delete mode 100644 node_modules/highlight.js/scss/atelier-plateau-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-plateau-light.scss delete mode 100644 node_modules/highlight.js/scss/atelier-savanna-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-savanna-light.scss delete mode 100644 node_modules/highlight.js/scss/atelier-seaside-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-seaside-light.scss delete mode 100644 node_modules/highlight.js/scss/atelier-sulphurpool-dark.scss delete mode 100644 node_modules/highlight.js/scss/atelier-sulphurpool-light.scss delete mode 100644 node_modules/highlight.js/scss/atom-one-dark-reasonable.scss delete mode 100644 node_modules/highlight.js/scss/atom-one-dark.scss delete mode 100644 node_modules/highlight.js/scss/atom-one-light.scss delete mode 100644 node_modules/highlight.js/scss/brown-paper.scss delete mode 100644 node_modules/highlight.js/scss/brown-papersq.png delete mode 100644 node_modules/highlight.js/scss/codepen-embed.scss delete mode 100644 node_modules/highlight.js/scss/color-brewer.scss delete mode 100644 node_modules/highlight.js/scss/darcula.scss delete mode 100644 node_modules/highlight.js/scss/dark.scss delete mode 100644 node_modules/highlight.js/scss/darkula.scss delete mode 100644 node_modules/highlight.js/scss/default.scss delete mode 100644 node_modules/highlight.js/scss/docco.scss delete mode 100644 node_modules/highlight.js/scss/dracula.scss delete mode 100644 node_modules/highlight.js/scss/far.scss delete mode 100644 node_modules/highlight.js/scss/foundation.scss delete mode 100644 node_modules/highlight.js/scss/github-gist.scss delete mode 100644 node_modules/highlight.js/scss/github.scss delete mode 100644 node_modules/highlight.js/scss/gml.scss delete mode 100644 node_modules/highlight.js/scss/googlecode.scss delete mode 100644 node_modules/highlight.js/scss/gradient-dark.scss delete mode 100644 node_modules/highlight.js/scss/grayscale.scss delete mode 100644 node_modules/highlight.js/scss/gruvbox-dark.scss delete mode 100644 node_modules/highlight.js/scss/gruvbox-light.scss delete mode 100644 node_modules/highlight.js/scss/hopscotch.scss delete mode 100644 node_modules/highlight.js/scss/hybrid.scss delete mode 100644 node_modules/highlight.js/scss/idea.scss delete mode 100644 node_modules/highlight.js/scss/ir-black.scss delete mode 100644 node_modules/highlight.js/scss/isbl-editor-dark.scss delete mode 100644 node_modules/highlight.js/scss/isbl-editor-light.scss delete mode 100644 node_modules/highlight.js/scss/kimbie.dark.scss delete mode 100644 node_modules/highlight.js/scss/kimbie.light.scss delete mode 100644 node_modules/highlight.js/scss/lightfair.scss delete mode 100644 node_modules/highlight.js/scss/magula.scss delete mode 100644 node_modules/highlight.js/scss/mono-blue.scss delete mode 100644 node_modules/highlight.js/scss/monokai-sublime.scss delete mode 100644 node_modules/highlight.js/scss/monokai.scss delete mode 100644 node_modules/highlight.js/scss/night-owl.scss delete mode 100644 node_modules/highlight.js/scss/nord.scss delete mode 100644 node_modules/highlight.js/scss/obsidian.scss delete mode 100644 node_modules/highlight.js/scss/ocean.scss delete mode 100644 node_modules/highlight.js/scss/paraiso-dark.scss delete mode 100644 node_modules/highlight.js/scss/paraiso-light.scss delete mode 100644 node_modules/highlight.js/scss/pojoaque.jpg delete mode 100644 node_modules/highlight.js/scss/pojoaque.scss delete mode 100644 node_modules/highlight.js/scss/purebasic.scss delete mode 100644 node_modules/highlight.js/scss/qtcreator_dark.scss delete mode 100644 node_modules/highlight.js/scss/qtcreator_light.scss delete mode 100644 node_modules/highlight.js/scss/railscasts.scss delete mode 100644 node_modules/highlight.js/scss/rainbow.scss delete mode 100644 node_modules/highlight.js/scss/routeros.scss delete mode 100644 node_modules/highlight.js/scss/school-book.png delete mode 100644 node_modules/highlight.js/scss/school-book.scss delete mode 100644 node_modules/highlight.js/scss/shades-of-purple.scss delete mode 100644 node_modules/highlight.js/scss/solarized-dark.scss delete mode 100644 node_modules/highlight.js/scss/solarized-light.scss delete mode 100644 node_modules/highlight.js/scss/sunburst.scss delete mode 100644 node_modules/highlight.js/scss/tomorrow-night-blue.scss delete mode 100644 node_modules/highlight.js/scss/tomorrow-night-bright.scss delete mode 100644 node_modules/highlight.js/scss/tomorrow-night-eighties.scss delete mode 100644 node_modules/highlight.js/scss/tomorrow-night.scss delete mode 100644 node_modules/highlight.js/scss/tomorrow.scss delete mode 100644 node_modules/highlight.js/scss/vs.scss delete mode 100644 node_modules/highlight.js/scss/vs2015.scss delete mode 100644 node_modules/highlight.js/scss/xcode.scss delete mode 100644 node_modules/highlight.js/scss/xt256.scss delete mode 100644 node_modules/highlight.js/scss/zenburn.scss delete mode 100644 node_modules/highlight.js/styles/a11y-dark.css delete mode 100644 node_modules/highlight.js/styles/a11y-light.css delete mode 100644 node_modules/highlight.js/styles/agate.css delete mode 100644 node_modules/highlight.js/styles/an-old-hope.css delete mode 100644 node_modules/highlight.js/styles/androidstudio.css delete mode 100644 node_modules/highlight.js/styles/arduino-light.css delete mode 100644 node_modules/highlight.js/styles/arta.css delete mode 100644 node_modules/highlight.js/styles/ascetic.css delete mode 100644 node_modules/highlight.js/styles/atelier-cave-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-cave-light.css delete mode 100644 node_modules/highlight.js/styles/atelier-dune-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-dune-light.css delete mode 100644 node_modules/highlight.js/styles/atelier-estuary-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-estuary-light.css delete mode 100644 node_modules/highlight.js/styles/atelier-forest-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-forest-light.css delete mode 100644 node_modules/highlight.js/styles/atelier-heath-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-heath-light.css delete mode 100644 node_modules/highlight.js/styles/atelier-lakeside-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-lakeside-light.css delete mode 100644 node_modules/highlight.js/styles/atelier-plateau-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-plateau-light.css delete mode 100644 node_modules/highlight.js/styles/atelier-savanna-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-savanna-light.css delete mode 100644 node_modules/highlight.js/styles/atelier-seaside-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-seaside-light.css delete mode 100644 node_modules/highlight.js/styles/atelier-sulphurpool-dark.css delete mode 100644 node_modules/highlight.js/styles/atelier-sulphurpool-light.css delete mode 100644 node_modules/highlight.js/styles/atom-one-dark-reasonable.css delete mode 100644 node_modules/highlight.js/styles/atom-one-dark.css delete mode 100644 node_modules/highlight.js/styles/atom-one-light.css delete mode 100644 node_modules/highlight.js/styles/brown-paper.css delete mode 100644 node_modules/highlight.js/styles/brown-papersq.png delete mode 100644 node_modules/highlight.js/styles/codepen-embed.css delete mode 100644 node_modules/highlight.js/styles/color-brewer.css delete mode 100644 node_modules/highlight.js/styles/darcula.css delete mode 100644 node_modules/highlight.js/styles/dark.css delete mode 100644 node_modules/highlight.js/styles/darkula.css delete mode 100644 node_modules/highlight.js/styles/default.css delete mode 100644 node_modules/highlight.js/styles/docco.css delete mode 100644 node_modules/highlight.js/styles/dracula.css delete mode 100644 node_modules/highlight.js/styles/far.css delete mode 100644 node_modules/highlight.js/styles/foundation.css delete mode 100644 node_modules/highlight.js/styles/github-gist.css delete mode 100644 node_modules/highlight.js/styles/github.css delete mode 100644 node_modules/highlight.js/styles/gml.css delete mode 100644 node_modules/highlight.js/styles/googlecode.css delete mode 100644 node_modules/highlight.js/styles/gradient-dark.css delete mode 100644 node_modules/highlight.js/styles/grayscale.css delete mode 100644 node_modules/highlight.js/styles/gruvbox-dark.css delete mode 100644 node_modules/highlight.js/styles/gruvbox-light.css delete mode 100644 node_modules/highlight.js/styles/hopscotch.css delete mode 100644 node_modules/highlight.js/styles/hybrid.css delete mode 100644 node_modules/highlight.js/styles/idea.css delete mode 100644 node_modules/highlight.js/styles/ir-black.css delete mode 100644 node_modules/highlight.js/styles/isbl-editor-dark.css delete mode 100644 node_modules/highlight.js/styles/isbl-editor-light.css delete mode 100644 node_modules/highlight.js/styles/kimbie.dark.css delete mode 100644 node_modules/highlight.js/styles/kimbie.light.css delete mode 100644 node_modules/highlight.js/styles/lightfair.css delete mode 100644 node_modules/highlight.js/styles/magula.css delete mode 100644 node_modules/highlight.js/styles/mono-blue.css delete mode 100644 node_modules/highlight.js/styles/monokai-sublime.css delete mode 100644 node_modules/highlight.js/styles/monokai.css delete mode 100644 node_modules/highlight.js/styles/night-owl.css delete mode 100644 node_modules/highlight.js/styles/nord.css delete mode 100644 node_modules/highlight.js/styles/obsidian.css delete mode 100644 node_modules/highlight.js/styles/ocean.css delete mode 100644 node_modules/highlight.js/styles/paraiso-dark.css delete mode 100644 node_modules/highlight.js/styles/paraiso-light.css delete mode 100644 node_modules/highlight.js/styles/pojoaque.css delete mode 100644 node_modules/highlight.js/styles/pojoaque.jpg delete mode 100644 node_modules/highlight.js/styles/purebasic.css delete mode 100644 node_modules/highlight.js/styles/qtcreator_dark.css delete mode 100644 node_modules/highlight.js/styles/qtcreator_light.css delete mode 100644 node_modules/highlight.js/styles/railscasts.css delete mode 100644 node_modules/highlight.js/styles/rainbow.css delete mode 100644 node_modules/highlight.js/styles/routeros.css delete mode 100644 node_modules/highlight.js/styles/school-book.css delete mode 100644 node_modules/highlight.js/styles/school-book.png delete mode 100644 node_modules/highlight.js/styles/shades-of-purple.css delete mode 100644 node_modules/highlight.js/styles/solarized-dark.css delete mode 100644 node_modules/highlight.js/styles/solarized-light.css delete mode 100644 node_modules/highlight.js/styles/sunburst.css delete mode 100644 node_modules/highlight.js/styles/tomorrow-night-blue.css delete mode 100644 node_modules/highlight.js/styles/tomorrow-night-bright.css delete mode 100644 node_modules/highlight.js/styles/tomorrow-night-eighties.css delete mode 100644 node_modules/highlight.js/styles/tomorrow-night.css delete mode 100644 node_modules/highlight.js/styles/tomorrow.css delete mode 100644 node_modules/highlight.js/styles/vs.css delete mode 100644 node_modules/highlight.js/styles/vs2015.css delete mode 100644 node_modules/highlight.js/styles/xcode.css delete mode 100644 node_modules/highlight.js/styles/xt256.css delete mode 100644 node_modules/highlight.js/styles/zenburn.css delete mode 100644 node_modules/html-tag/LICENSE delete mode 100644 node_modules/html-tag/README.md delete mode 100644 node_modules/html-tag/index.js delete mode 100644 node_modules/html-tag/package.json delete mode 100644 node_modules/info-symbol/LICENSE delete mode 100644 node_modules/info-symbol/README.md delete mode 100644 node_modules/info-symbol/index.js delete mode 100644 node_modules/info-symbol/package.json delete mode 100644 node_modules/inherits/LICENSE delete mode 100644 node_modules/inherits/README.md delete mode 100644 node_modules/inherits/inherits.js delete mode 100644 node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/inherits/package.json delete mode 100644 node_modules/is-accessor-descriptor/LICENSE delete mode 100644 node_modules/is-accessor-descriptor/README.md delete mode 100644 node_modules/is-accessor-descriptor/index.js delete mode 100644 node_modules/is-accessor-descriptor/node_modules/kind-of/LICENSE delete mode 100644 node_modules/is-accessor-descriptor/node_modules/kind-of/README.md delete mode 100644 node_modules/is-accessor-descriptor/node_modules/kind-of/index.js delete mode 100644 node_modules/is-accessor-descriptor/node_modules/kind-of/package.json delete mode 100644 node_modules/is-accessor-descriptor/package.json delete mode 100644 node_modules/is-buffer/LICENSE delete mode 100644 node_modules/is-buffer/README.md delete mode 100644 node_modules/is-buffer/index.js delete mode 100644 node_modules/is-buffer/package.json delete mode 100644 node_modules/is-buffer/test/basic.js delete mode 100644 node_modules/is-data-descriptor/LICENSE delete mode 100644 node_modules/is-data-descriptor/README.md delete mode 100644 node_modules/is-data-descriptor/index.js delete mode 100644 node_modules/is-data-descriptor/node_modules/kind-of/LICENSE delete mode 100644 node_modules/is-data-descriptor/node_modules/kind-of/README.md delete mode 100644 node_modules/is-data-descriptor/node_modules/kind-of/index.js delete mode 100644 node_modules/is-data-descriptor/node_modules/kind-of/package.json delete mode 100644 node_modules/is-data-descriptor/package.json delete mode 100644 node_modules/is-descriptor/LICENSE delete mode 100644 node_modules/is-descriptor/README.md delete mode 100644 node_modules/is-descriptor/index.js delete mode 100644 node_modules/is-descriptor/node_modules/kind-of/LICENSE delete mode 100644 node_modules/is-descriptor/node_modules/kind-of/README.md delete mode 100644 node_modules/is-descriptor/node_modules/kind-of/index.js delete mode 100644 node_modules/is-descriptor/node_modules/kind-of/package.json delete mode 100644 node_modules/is-descriptor/package.json delete mode 100644 node_modules/is-even/LICENSE delete mode 100644 node_modules/is-even/README.md delete mode 100644 node_modules/is-even/index.js delete mode 100644 node_modules/is-even/package.json delete mode 100644 node_modules/is-extendable/LICENSE delete mode 100644 node_modules/is-extendable/README.md delete mode 100644 node_modules/is-extendable/index.js delete mode 100644 node_modules/is-extendable/package.json delete mode 100644 node_modules/is-extglob/LICENSE delete mode 100644 node_modules/is-extglob/README.md delete mode 100644 node_modules/is-extglob/index.js delete mode 100644 node_modules/is-extglob/package.json delete mode 100644 node_modules/is-glob/LICENSE delete mode 100644 node_modules/is-glob/README.md delete mode 100644 node_modules/is-glob/index.js delete mode 100644 node_modules/is-glob/package.json delete mode 100644 node_modules/is-number/LICENSE delete mode 100644 node_modules/is-number/README.md delete mode 100644 node_modules/is-number/index.js delete mode 100644 node_modules/is-number/node_modules/kind-of/LICENSE delete mode 100644 node_modules/is-number/node_modules/kind-of/README.md delete mode 100644 node_modules/is-number/node_modules/kind-of/index.js delete mode 100644 node_modules/is-number/node_modules/kind-of/package.json delete mode 100644 node_modules/is-number/package.json delete mode 100644 node_modules/is-odd/LICENSE delete mode 100644 node_modules/is-odd/README.md delete mode 100644 node_modules/is-odd/index.js delete mode 100644 node_modules/is-odd/package.json delete mode 100644 node_modules/is-plain-object/LICENSE delete mode 100644 node_modules/is-plain-object/README.md delete mode 100644 node_modules/is-plain-object/index.d.ts delete mode 100644 node_modules/is-plain-object/index.js delete mode 100644 node_modules/is-plain-object/package.json delete mode 100644 node_modules/is-self-closing/LICENSE delete mode 100644 node_modules/is-self-closing/README.md delete mode 100644 node_modules/is-self-closing/index.js delete mode 100644 node_modules/is-self-closing/package.json delete mode 100644 node_modules/is-windows/LICENSE delete mode 100644 node_modules/is-windows/README.md delete mode 100644 node_modules/is-windows/index.js delete mode 100644 node_modules/is-windows/package.json delete mode 100644 node_modules/isarray/.npmignore delete mode 100644 node_modules/isarray/.travis.yml delete mode 100644 node_modules/isarray/Makefile delete mode 100644 node_modules/isarray/README.md delete mode 100644 node_modules/isarray/component.json delete mode 100644 node_modules/isarray/index.js delete mode 100644 node_modules/isarray/package.json delete mode 100644 node_modules/isarray/test.js delete mode 100644 node_modules/isobject/LICENSE delete mode 100644 node_modules/isobject/README.md delete mode 100644 node_modules/isobject/index.d.ts delete mode 100644 node_modules/isobject/index.js delete mode 100644 node_modules/isobject/package.json delete mode 100644 node_modules/kind-of/CHANGELOG.md delete mode 100644 node_modules/kind-of/LICENSE delete mode 100644 node_modules/kind-of/README.md delete mode 100644 node_modules/kind-of/index.js delete mode 100644 node_modules/kind-of/package.json delete mode 100644 node_modules/lazy-cache/LICENSE delete mode 100644 node_modules/lazy-cache/README.md delete mode 100644 node_modules/lazy-cache/index.js delete mode 100644 node_modules/lazy-cache/package.json delete mode 100644 node_modules/lodash._reinterpolate/LICENSE.txt delete mode 100644 node_modules/lodash._reinterpolate/README.md delete mode 100644 node_modules/lodash._reinterpolate/index.js delete mode 100644 node_modules/lodash._reinterpolate/package.json delete mode 100644 node_modules/lodash.template/LICENSE delete mode 100644 node_modules/lodash.template/README.md delete mode 100644 node_modules/lodash.template/index.js delete mode 100644 node_modules/lodash.template/package.json delete mode 100644 node_modules/lodash.templatesettings/LICENSE delete mode 100644 node_modules/lodash.templatesettings/README.md delete mode 100644 node_modules/lodash.templatesettings/index.js delete mode 100644 node_modules/lodash.templatesettings/package.json delete mode 100644 node_modules/log-ok/LICENSE delete mode 100644 node_modules/log-ok/index.js delete mode 100644 node_modules/log-ok/package.json delete mode 100644 node_modules/log-utils/LICENSE delete mode 100644 node_modules/log-utils/index.js delete mode 100644 node_modules/log-utils/node_modules/ansi-colors/LICENSE delete mode 100644 node_modules/log-utils/node_modules/ansi-colors/README.md delete mode 100644 node_modules/log-utils/node_modules/ansi-colors/index.js delete mode 100644 node_modules/log-utils/node_modules/ansi-colors/package.json delete mode 100644 node_modules/log-utils/package.json delete mode 100644 node_modules/logging-helpers/LICENSE delete mode 100644 node_modules/logging-helpers/README.md delete mode 100644 node_modules/logging-helpers/index.js delete mode 100644 node_modules/logging-helpers/package.json delete mode 100644 node_modules/map-cache/LICENSE delete mode 100644 node_modules/map-cache/README.md delete mode 100644 node_modules/map-cache/index.js delete mode 100644 node_modules/map-cache/package.json delete mode 100644 node_modules/map-visit/LICENSE delete mode 100644 node_modules/map-visit/README.md delete mode 100644 node_modules/map-visit/index.js delete mode 100644 node_modules/map-visit/package.json delete mode 100644 node_modules/micromatch/CHANGELOG.md delete mode 100644 node_modules/micromatch/LICENSE delete mode 100644 node_modules/micromatch/README.md delete mode 100644 node_modules/micromatch/index.js delete mode 100644 node_modules/micromatch/lib/cache.js delete mode 100644 node_modules/micromatch/lib/compilers.js delete mode 100644 node_modules/micromatch/lib/parsers.js delete mode 100644 node_modules/micromatch/lib/utils.js delete mode 100644 node_modules/micromatch/package.json delete mode 100644 node_modules/minimist/.travis.yml delete mode 100644 node_modules/minimist/LICENSE delete mode 100644 node_modules/minimist/example/parse.js delete mode 100644 node_modules/minimist/index.js delete mode 100644 node_modules/minimist/package.json delete mode 100644 node_modules/minimist/readme.markdown delete mode 100644 node_modules/minimist/test/all_bool.js delete mode 100644 node_modules/minimist/test/bool.js delete mode 100644 node_modules/minimist/test/dash.js delete mode 100644 node_modules/minimist/test/default_bool.js delete mode 100644 node_modules/minimist/test/dotted.js delete mode 100644 node_modules/minimist/test/kv_short.js delete mode 100644 node_modules/minimist/test/long.js delete mode 100644 node_modules/minimist/test/num.js delete mode 100644 node_modules/minimist/test/parse.js delete mode 100644 node_modules/minimist/test/parse_modified.js delete mode 100644 node_modules/minimist/test/proto.js delete mode 100644 node_modules/minimist/test/short.js delete mode 100644 node_modules/minimist/test/stop_early.js delete mode 100644 node_modules/minimist/test/unknown.js delete mode 100644 node_modules/minimist/test/whitespace.js delete mode 100644 node_modules/mixin-deep/LICENSE delete mode 100644 node_modules/mixin-deep/README.md delete mode 100644 node_modules/mixin-deep/index.js delete mode 100644 node_modules/mixin-deep/node_modules/is-extendable/LICENSE delete mode 100644 node_modules/mixin-deep/node_modules/is-extendable/README.md delete mode 100644 node_modules/mixin-deep/node_modules/is-extendable/index.d.ts delete mode 100644 node_modules/mixin-deep/node_modules/is-extendable/index.js delete mode 100644 node_modules/mixin-deep/node_modules/is-extendable/package.json delete mode 100644 node_modules/mixin-deep/package.json delete mode 100644 node_modules/moment/CHANGELOG.md delete mode 100644 node_modules/moment/LICENSE delete mode 100644 node_modules/moment/README.md delete mode 100644 node_modules/moment/dist/locale/af.js delete mode 100644 node_modules/moment/dist/locale/ar-dz.js delete mode 100644 node_modules/moment/dist/locale/ar-kw.js delete mode 100644 node_modules/moment/dist/locale/ar-ly.js delete mode 100644 node_modules/moment/dist/locale/ar-ma.js delete mode 100644 node_modules/moment/dist/locale/ar-sa.js delete mode 100644 node_modules/moment/dist/locale/ar-tn.js delete mode 100644 node_modules/moment/dist/locale/ar.js delete mode 100644 node_modules/moment/dist/locale/az.js delete mode 100644 node_modules/moment/dist/locale/be.js delete mode 100644 node_modules/moment/dist/locale/bg.js delete mode 100644 node_modules/moment/dist/locale/bm.js delete mode 100644 node_modules/moment/dist/locale/bn-bd.js delete mode 100644 node_modules/moment/dist/locale/bn.js delete mode 100644 node_modules/moment/dist/locale/bo.js delete mode 100644 node_modules/moment/dist/locale/br.js delete mode 100644 node_modules/moment/dist/locale/bs.js delete mode 100644 node_modules/moment/dist/locale/ca.js delete mode 100644 node_modules/moment/dist/locale/cs.js delete mode 100644 node_modules/moment/dist/locale/cv.js delete mode 100644 node_modules/moment/dist/locale/cy.js delete mode 100644 node_modules/moment/dist/locale/da.js delete mode 100644 node_modules/moment/dist/locale/de-at.js delete mode 100644 node_modules/moment/dist/locale/de-ch.js delete mode 100644 node_modules/moment/dist/locale/de.js delete mode 100644 node_modules/moment/dist/locale/dv.js delete mode 100644 node_modules/moment/dist/locale/el.js delete mode 100644 node_modules/moment/dist/locale/en-au.js delete mode 100644 node_modules/moment/dist/locale/en-ca.js delete mode 100644 node_modules/moment/dist/locale/en-gb.js delete mode 100644 node_modules/moment/dist/locale/en-ie.js delete mode 100644 node_modules/moment/dist/locale/en-il.js delete mode 100644 node_modules/moment/dist/locale/en-in.js delete mode 100644 node_modules/moment/dist/locale/en-nz.js delete mode 100644 node_modules/moment/dist/locale/en-sg.js delete mode 100644 node_modules/moment/dist/locale/eo.js delete mode 100644 node_modules/moment/dist/locale/es-do.js delete mode 100644 node_modules/moment/dist/locale/es-mx.js delete mode 100644 node_modules/moment/dist/locale/es-us.js delete mode 100644 node_modules/moment/dist/locale/es.js delete mode 100644 node_modules/moment/dist/locale/et.js delete mode 100644 node_modules/moment/dist/locale/eu.js delete mode 100644 node_modules/moment/dist/locale/fa.js delete mode 100644 node_modules/moment/dist/locale/fi.js delete mode 100644 node_modules/moment/dist/locale/fil.js delete mode 100644 node_modules/moment/dist/locale/fo.js delete mode 100644 node_modules/moment/dist/locale/fr-ca.js delete mode 100644 node_modules/moment/dist/locale/fr-ch.js delete mode 100644 node_modules/moment/dist/locale/fr.js delete mode 100644 node_modules/moment/dist/locale/fy.js delete mode 100644 node_modules/moment/dist/locale/ga.js delete mode 100644 node_modules/moment/dist/locale/gd.js delete mode 100644 node_modules/moment/dist/locale/gl.js delete mode 100644 node_modules/moment/dist/locale/gom-deva.js delete mode 100644 node_modules/moment/dist/locale/gom-latn.js delete mode 100644 node_modules/moment/dist/locale/gu.js delete mode 100644 node_modules/moment/dist/locale/he.js delete mode 100644 node_modules/moment/dist/locale/hi.js delete mode 100644 node_modules/moment/dist/locale/hr.js delete mode 100644 node_modules/moment/dist/locale/hu.js delete mode 100644 node_modules/moment/dist/locale/hy-am.js delete mode 100644 node_modules/moment/dist/locale/id.js delete mode 100644 node_modules/moment/dist/locale/is.js delete mode 100644 node_modules/moment/dist/locale/it-ch.js delete mode 100644 node_modules/moment/dist/locale/it.js delete mode 100644 node_modules/moment/dist/locale/ja.js delete mode 100644 node_modules/moment/dist/locale/jv.js delete mode 100644 node_modules/moment/dist/locale/ka.js delete mode 100644 node_modules/moment/dist/locale/kk.js delete mode 100644 node_modules/moment/dist/locale/km.js delete mode 100644 node_modules/moment/dist/locale/kn.js delete mode 100644 node_modules/moment/dist/locale/ko.js delete mode 100644 node_modules/moment/dist/locale/ku.js delete mode 100644 node_modules/moment/dist/locale/ky.js delete mode 100644 node_modules/moment/dist/locale/lb.js delete mode 100644 node_modules/moment/dist/locale/lo.js delete mode 100644 node_modules/moment/dist/locale/lt.js delete mode 100644 node_modules/moment/dist/locale/lv.js delete mode 100644 node_modules/moment/dist/locale/me.js delete mode 100644 node_modules/moment/dist/locale/mi.js delete mode 100644 node_modules/moment/dist/locale/mk.js delete mode 100644 node_modules/moment/dist/locale/ml.js delete mode 100644 node_modules/moment/dist/locale/mn.js delete mode 100644 node_modules/moment/dist/locale/mr.js delete mode 100644 node_modules/moment/dist/locale/ms-my.js delete mode 100644 node_modules/moment/dist/locale/ms.js delete mode 100644 node_modules/moment/dist/locale/mt.js delete mode 100644 node_modules/moment/dist/locale/my.js delete mode 100644 node_modules/moment/dist/locale/nb.js delete mode 100644 node_modules/moment/dist/locale/ne.js delete mode 100644 node_modules/moment/dist/locale/nl-be.js delete mode 100644 node_modules/moment/dist/locale/nl.js delete mode 100644 node_modules/moment/dist/locale/nn.js delete mode 100644 node_modules/moment/dist/locale/oc-lnc.js delete mode 100644 node_modules/moment/dist/locale/pa-in.js delete mode 100644 node_modules/moment/dist/locale/pl.js delete mode 100644 node_modules/moment/dist/locale/pt-br.js delete mode 100644 node_modules/moment/dist/locale/pt.js delete mode 100644 node_modules/moment/dist/locale/ro.js delete mode 100644 node_modules/moment/dist/locale/ru.js delete mode 100644 node_modules/moment/dist/locale/sd.js delete mode 100644 node_modules/moment/dist/locale/se.js delete mode 100644 node_modules/moment/dist/locale/si.js delete mode 100644 node_modules/moment/dist/locale/sk.js delete mode 100644 node_modules/moment/dist/locale/sl.js delete mode 100644 node_modules/moment/dist/locale/sq.js delete mode 100644 node_modules/moment/dist/locale/sr-cyrl.js delete mode 100644 node_modules/moment/dist/locale/sr.js delete mode 100644 node_modules/moment/dist/locale/ss.js delete mode 100644 node_modules/moment/dist/locale/sv.js delete mode 100644 node_modules/moment/dist/locale/sw.js delete mode 100644 node_modules/moment/dist/locale/ta.js delete mode 100644 node_modules/moment/dist/locale/te.js delete mode 100644 node_modules/moment/dist/locale/tet.js delete mode 100644 node_modules/moment/dist/locale/tg.js delete mode 100644 node_modules/moment/dist/locale/th.js delete mode 100644 node_modules/moment/dist/locale/tk.js delete mode 100644 node_modules/moment/dist/locale/tl-ph.js delete mode 100644 node_modules/moment/dist/locale/tlh.js delete mode 100644 node_modules/moment/dist/locale/tr.js delete mode 100644 node_modules/moment/dist/locale/tzl.js delete mode 100644 node_modules/moment/dist/locale/tzm-latn.js delete mode 100644 node_modules/moment/dist/locale/tzm.js delete mode 100644 node_modules/moment/dist/locale/ug-cn.js delete mode 100644 node_modules/moment/dist/locale/uk.js delete mode 100644 node_modules/moment/dist/locale/ur.js delete mode 100644 node_modules/moment/dist/locale/uz-latn.js delete mode 100644 node_modules/moment/dist/locale/uz.js delete mode 100644 node_modules/moment/dist/locale/vi.js delete mode 100644 node_modules/moment/dist/locale/x-pseudo.js delete mode 100644 node_modules/moment/dist/locale/yo.js delete mode 100644 node_modules/moment/dist/locale/zh-cn.js delete mode 100644 node_modules/moment/dist/locale/zh-hk.js delete mode 100644 node_modules/moment/dist/locale/zh-mo.js delete mode 100644 node_modules/moment/dist/locale/zh-tw.js delete mode 100644 node_modules/moment/dist/moment.js delete mode 100644 node_modules/moment/ender.js delete mode 100644 node_modules/moment/locale/af.js delete mode 100644 node_modules/moment/locale/ar-dz.js delete mode 100644 node_modules/moment/locale/ar-kw.js delete mode 100644 node_modules/moment/locale/ar-ly.js delete mode 100644 node_modules/moment/locale/ar-ma.js delete mode 100644 node_modules/moment/locale/ar-sa.js delete mode 100644 node_modules/moment/locale/ar-tn.js delete mode 100644 node_modules/moment/locale/ar.js delete mode 100644 node_modules/moment/locale/az.js delete mode 100644 node_modules/moment/locale/be.js delete mode 100644 node_modules/moment/locale/bg.js delete mode 100644 node_modules/moment/locale/bm.js delete mode 100644 node_modules/moment/locale/bn-bd.js delete mode 100644 node_modules/moment/locale/bn.js delete mode 100644 node_modules/moment/locale/bo.js delete mode 100644 node_modules/moment/locale/br.js delete mode 100644 node_modules/moment/locale/bs.js delete mode 100644 node_modules/moment/locale/ca.js delete mode 100644 node_modules/moment/locale/cs.js delete mode 100644 node_modules/moment/locale/cv.js delete mode 100644 node_modules/moment/locale/cy.js delete mode 100644 node_modules/moment/locale/da.js delete mode 100644 node_modules/moment/locale/de-at.js delete mode 100644 node_modules/moment/locale/de-ch.js delete mode 100644 node_modules/moment/locale/de.js delete mode 100644 node_modules/moment/locale/dv.js delete mode 100644 node_modules/moment/locale/el.js delete mode 100644 node_modules/moment/locale/en-au.js delete mode 100644 node_modules/moment/locale/en-ca.js delete mode 100644 node_modules/moment/locale/en-gb.js delete mode 100644 node_modules/moment/locale/en-ie.js delete mode 100644 node_modules/moment/locale/en-il.js delete mode 100644 node_modules/moment/locale/en-in.js delete mode 100644 node_modules/moment/locale/en-nz.js delete mode 100644 node_modules/moment/locale/en-sg.js delete mode 100644 node_modules/moment/locale/eo.js delete mode 100644 node_modules/moment/locale/es-do.js delete mode 100644 node_modules/moment/locale/es-mx.js delete mode 100644 node_modules/moment/locale/es-us.js delete mode 100644 node_modules/moment/locale/es.js delete mode 100644 node_modules/moment/locale/et.js delete mode 100644 node_modules/moment/locale/eu.js delete mode 100644 node_modules/moment/locale/fa.js delete mode 100644 node_modules/moment/locale/fi.js delete mode 100644 node_modules/moment/locale/fil.js delete mode 100644 node_modules/moment/locale/fo.js delete mode 100644 node_modules/moment/locale/fr-ca.js delete mode 100644 node_modules/moment/locale/fr-ch.js delete mode 100644 node_modules/moment/locale/fr.js delete mode 100644 node_modules/moment/locale/fy.js delete mode 100644 node_modules/moment/locale/ga.js delete mode 100644 node_modules/moment/locale/gd.js delete mode 100644 node_modules/moment/locale/gl.js delete mode 100644 node_modules/moment/locale/gom-deva.js delete mode 100644 node_modules/moment/locale/gom-latn.js delete mode 100644 node_modules/moment/locale/gu.js delete mode 100644 node_modules/moment/locale/he.js delete mode 100644 node_modules/moment/locale/hi.js delete mode 100644 node_modules/moment/locale/hr.js delete mode 100644 node_modules/moment/locale/hu.js delete mode 100644 node_modules/moment/locale/hy-am.js delete mode 100644 node_modules/moment/locale/id.js delete mode 100644 node_modules/moment/locale/is.js delete mode 100644 node_modules/moment/locale/it-ch.js delete mode 100644 node_modules/moment/locale/it.js delete mode 100644 node_modules/moment/locale/ja.js delete mode 100644 node_modules/moment/locale/jv.js delete mode 100644 node_modules/moment/locale/ka.js delete mode 100644 node_modules/moment/locale/kk.js delete mode 100644 node_modules/moment/locale/km.js delete mode 100644 node_modules/moment/locale/kn.js delete mode 100644 node_modules/moment/locale/ko.js delete mode 100644 node_modules/moment/locale/ku.js delete mode 100644 node_modules/moment/locale/ky.js delete mode 100644 node_modules/moment/locale/lb.js delete mode 100644 node_modules/moment/locale/lo.js delete mode 100644 node_modules/moment/locale/lt.js delete mode 100644 node_modules/moment/locale/lv.js delete mode 100644 node_modules/moment/locale/me.js delete mode 100644 node_modules/moment/locale/mi.js delete mode 100644 node_modules/moment/locale/mk.js delete mode 100644 node_modules/moment/locale/ml.js delete mode 100644 node_modules/moment/locale/mn.js delete mode 100644 node_modules/moment/locale/mr.js delete mode 100644 node_modules/moment/locale/ms-my.js delete mode 100644 node_modules/moment/locale/ms.js delete mode 100644 node_modules/moment/locale/mt.js delete mode 100644 node_modules/moment/locale/my.js delete mode 100644 node_modules/moment/locale/nb.js delete mode 100644 node_modules/moment/locale/ne.js delete mode 100644 node_modules/moment/locale/nl-be.js delete mode 100644 node_modules/moment/locale/nl.js delete mode 100644 node_modules/moment/locale/nn.js delete mode 100644 node_modules/moment/locale/oc-lnc.js delete mode 100644 node_modules/moment/locale/pa-in.js delete mode 100644 node_modules/moment/locale/pl.js delete mode 100644 node_modules/moment/locale/pt-br.js delete mode 100644 node_modules/moment/locale/pt.js delete mode 100644 node_modules/moment/locale/ro.js delete mode 100644 node_modules/moment/locale/ru.js delete mode 100644 node_modules/moment/locale/sd.js delete mode 100644 node_modules/moment/locale/se.js delete mode 100644 node_modules/moment/locale/si.js delete mode 100644 node_modules/moment/locale/sk.js delete mode 100644 node_modules/moment/locale/sl.js delete mode 100644 node_modules/moment/locale/sq.js delete mode 100644 node_modules/moment/locale/sr-cyrl.js delete mode 100644 node_modules/moment/locale/sr.js delete mode 100644 node_modules/moment/locale/ss.js delete mode 100644 node_modules/moment/locale/sv.js delete mode 100644 node_modules/moment/locale/sw.js delete mode 100644 node_modules/moment/locale/ta.js delete mode 100644 node_modules/moment/locale/te.js delete mode 100644 node_modules/moment/locale/tet.js delete mode 100644 node_modules/moment/locale/tg.js delete mode 100644 node_modules/moment/locale/th.js delete mode 100644 node_modules/moment/locale/tk.js delete mode 100644 node_modules/moment/locale/tl-ph.js delete mode 100644 node_modules/moment/locale/tlh.js delete mode 100644 node_modules/moment/locale/tr.js delete mode 100644 node_modules/moment/locale/tzl.js delete mode 100644 node_modules/moment/locale/tzm-latn.js delete mode 100644 node_modules/moment/locale/tzm.js delete mode 100644 node_modules/moment/locale/ug-cn.js delete mode 100644 node_modules/moment/locale/uk.js delete mode 100644 node_modules/moment/locale/ur.js delete mode 100644 node_modules/moment/locale/uz-latn.js delete mode 100644 node_modules/moment/locale/uz.js delete mode 100644 node_modules/moment/locale/vi.js delete mode 100644 node_modules/moment/locale/x-pseudo.js delete mode 100644 node_modules/moment/locale/yo.js delete mode 100644 node_modules/moment/locale/zh-cn.js delete mode 100644 node_modules/moment/locale/zh-hk.js delete mode 100644 node_modules/moment/locale/zh-mo.js delete mode 100644 node_modules/moment/locale/zh-tw.js delete mode 100644 node_modules/moment/min/locales.js delete mode 100644 node_modules/moment/min/locales.min.js delete mode 100644 node_modules/moment/min/locales.min.js.map delete mode 100644 node_modules/moment/min/moment-with-locales.js delete mode 100644 node_modules/moment/min/moment-with-locales.min.js delete mode 100644 node_modules/moment/min/moment-with-locales.min.js.map delete mode 100644 node_modules/moment/min/moment.min.js delete mode 100644 node_modules/moment/min/moment.min.js.map delete mode 100644 node_modules/moment/moment.d.ts delete mode 100644 node_modules/moment/moment.js delete mode 100644 node_modules/moment/package.js delete mode 100644 node_modules/moment/package.json delete mode 100644 node_modules/moment/src/lib/create/check-overflow.js delete mode 100644 node_modules/moment/src/lib/create/date-from-array.js delete mode 100644 node_modules/moment/src/lib/create/from-anything.js delete mode 100644 node_modules/moment/src/lib/create/from-array.js delete mode 100644 node_modules/moment/src/lib/create/from-object.js delete mode 100644 node_modules/moment/src/lib/create/from-string-and-array.js delete mode 100644 node_modules/moment/src/lib/create/from-string-and-format.js delete mode 100644 node_modules/moment/src/lib/create/from-string.js delete mode 100644 node_modules/moment/src/lib/create/local.js delete mode 100644 node_modules/moment/src/lib/create/parsing-flags.js delete mode 100644 node_modules/moment/src/lib/create/utc.js delete mode 100644 node_modules/moment/src/lib/create/valid.js delete mode 100644 node_modules/moment/src/lib/duration/abs.js delete mode 100644 node_modules/moment/src/lib/duration/add-subtract.js delete mode 100644 node_modules/moment/src/lib/duration/as.js delete mode 100644 node_modules/moment/src/lib/duration/bubble.js delete mode 100644 node_modules/moment/src/lib/duration/clone.js delete mode 100644 node_modules/moment/src/lib/duration/constructor.js delete mode 100644 node_modules/moment/src/lib/duration/create.js delete mode 100644 node_modules/moment/src/lib/duration/duration.js delete mode 100644 node_modules/moment/src/lib/duration/get.js delete mode 100644 node_modules/moment/src/lib/duration/humanize.js delete mode 100644 node_modules/moment/src/lib/duration/iso-string.js delete mode 100644 node_modules/moment/src/lib/duration/prototype.js delete mode 100644 node_modules/moment/src/lib/duration/valid.js delete mode 100644 node_modules/moment/src/lib/format/format.js delete mode 100644 node_modules/moment/src/lib/locale/base-config.js delete mode 100644 node_modules/moment/src/lib/locale/calendar.js delete mode 100644 node_modules/moment/src/lib/locale/constructor.js delete mode 100644 node_modules/moment/src/lib/locale/en.js delete mode 100644 node_modules/moment/src/lib/locale/formats.js delete mode 100644 node_modules/moment/src/lib/locale/invalid.js delete mode 100644 node_modules/moment/src/lib/locale/lists.js delete mode 100644 node_modules/moment/src/lib/locale/locale.js delete mode 100644 node_modules/moment/src/lib/locale/locales.js delete mode 100644 node_modules/moment/src/lib/locale/ordinal.js delete mode 100644 node_modules/moment/src/lib/locale/pre-post-format.js delete mode 100644 node_modules/moment/src/lib/locale/prototype.js delete mode 100644 node_modules/moment/src/lib/locale/relative.js delete mode 100644 node_modules/moment/src/lib/locale/set.js delete mode 100644 node_modules/moment/src/lib/moment/add-subtract.js delete mode 100644 node_modules/moment/src/lib/moment/calendar.js delete mode 100644 node_modules/moment/src/lib/moment/clone.js delete mode 100644 node_modules/moment/src/lib/moment/compare.js delete mode 100644 node_modules/moment/src/lib/moment/constructor.js delete mode 100644 node_modules/moment/src/lib/moment/creation-data.js delete mode 100644 node_modules/moment/src/lib/moment/diff.js delete mode 100644 node_modules/moment/src/lib/moment/format.js delete mode 100644 node_modules/moment/src/lib/moment/from.js delete mode 100644 node_modules/moment/src/lib/moment/get-set.js delete mode 100644 node_modules/moment/src/lib/moment/locale.js delete mode 100644 node_modules/moment/src/lib/moment/min-max.js delete mode 100644 node_modules/moment/src/lib/moment/moment.js delete mode 100644 node_modules/moment/src/lib/moment/now.js delete mode 100644 node_modules/moment/src/lib/moment/prototype.js delete mode 100644 node_modules/moment/src/lib/moment/start-end-of.js delete mode 100644 node_modules/moment/src/lib/moment/to-type.js delete mode 100644 node_modules/moment/src/lib/moment/to.js delete mode 100644 node_modules/moment/src/lib/moment/valid.js delete mode 100644 node_modules/moment/src/lib/parse/regex.js delete mode 100644 node_modules/moment/src/lib/parse/token.js delete mode 100644 node_modules/moment/src/lib/units/aliases.js delete mode 100644 node_modules/moment/src/lib/units/constants.js delete mode 100644 node_modules/moment/src/lib/units/day-of-month.js delete mode 100644 node_modules/moment/src/lib/units/day-of-week.js delete mode 100644 node_modules/moment/src/lib/units/day-of-year.js delete mode 100644 node_modules/moment/src/lib/units/era.js delete mode 100644 node_modules/moment/src/lib/units/hour.js delete mode 100644 node_modules/moment/src/lib/units/millisecond.js delete mode 100644 node_modules/moment/src/lib/units/minute.js delete mode 100644 node_modules/moment/src/lib/units/month.js delete mode 100644 node_modules/moment/src/lib/units/offset.js delete mode 100644 node_modules/moment/src/lib/units/priorities.js delete mode 100644 node_modules/moment/src/lib/units/quarter.js delete mode 100644 node_modules/moment/src/lib/units/second.js delete mode 100644 node_modules/moment/src/lib/units/timestamp.js delete mode 100644 node_modules/moment/src/lib/units/timezone.js delete mode 100644 node_modules/moment/src/lib/units/units.js delete mode 100644 node_modules/moment/src/lib/units/week-calendar-utils.js delete mode 100644 node_modules/moment/src/lib/units/week-year.js delete mode 100644 node_modules/moment/src/lib/units/week.js delete mode 100644 node_modules/moment/src/lib/units/year.js delete mode 100644 node_modules/moment/src/lib/utils/abs-ceil.js delete mode 100644 node_modules/moment/src/lib/utils/abs-floor.js delete mode 100644 node_modules/moment/src/lib/utils/abs-round.js delete mode 100644 node_modules/moment/src/lib/utils/compare-arrays.js delete mode 100644 node_modules/moment/src/lib/utils/defaults.js delete mode 100644 node_modules/moment/src/lib/utils/deprecate.js delete mode 100644 node_modules/moment/src/lib/utils/extend.js delete mode 100644 node_modules/moment/src/lib/utils/has-own-prop.js delete mode 100644 node_modules/moment/src/lib/utils/hooks.js delete mode 100644 node_modules/moment/src/lib/utils/index-of.js delete mode 100644 node_modules/moment/src/lib/utils/is-array.js delete mode 100644 node_modules/moment/src/lib/utils/is-calendar-spec.js delete mode 100644 node_modules/moment/src/lib/utils/is-date.js delete mode 100644 node_modules/moment/src/lib/utils/is-function.js delete mode 100644 node_modules/moment/src/lib/utils/is-leap-year.js delete mode 100644 node_modules/moment/src/lib/utils/is-moment-input.js delete mode 100644 node_modules/moment/src/lib/utils/is-number.js delete mode 100644 node_modules/moment/src/lib/utils/is-object-empty.js delete mode 100644 node_modules/moment/src/lib/utils/is-object.js delete mode 100644 node_modules/moment/src/lib/utils/is-string.js delete mode 100644 node_modules/moment/src/lib/utils/is-undefined.js delete mode 100644 node_modules/moment/src/lib/utils/keys.js delete mode 100644 node_modules/moment/src/lib/utils/map.js delete mode 100644 node_modules/moment/src/lib/utils/mod.js delete mode 100644 node_modules/moment/src/lib/utils/some.js delete mode 100644 node_modules/moment/src/lib/utils/to-int.js delete mode 100644 node_modules/moment/src/lib/utils/zero-fill.js delete mode 100644 node_modules/moment/src/locale/af.js delete mode 100644 node_modules/moment/src/locale/ar-dz.js delete mode 100644 node_modules/moment/src/locale/ar-kw.js delete mode 100644 node_modules/moment/src/locale/ar-ly.js delete mode 100644 node_modules/moment/src/locale/ar-ma.js delete mode 100644 node_modules/moment/src/locale/ar-sa.js delete mode 100644 node_modules/moment/src/locale/ar-tn.js delete mode 100644 node_modules/moment/src/locale/ar.js delete mode 100644 node_modules/moment/src/locale/az.js delete mode 100644 node_modules/moment/src/locale/be.js delete mode 100644 node_modules/moment/src/locale/bg.js delete mode 100644 node_modules/moment/src/locale/bm.js delete mode 100644 node_modules/moment/src/locale/bn-bd.js delete mode 100644 node_modules/moment/src/locale/bn.js delete mode 100644 node_modules/moment/src/locale/bo.js delete mode 100644 node_modules/moment/src/locale/br.js delete mode 100644 node_modules/moment/src/locale/bs.js delete mode 100644 node_modules/moment/src/locale/ca.js delete mode 100644 node_modules/moment/src/locale/cs.js delete mode 100644 node_modules/moment/src/locale/cv.js delete mode 100644 node_modules/moment/src/locale/cy.js delete mode 100644 node_modules/moment/src/locale/da.js delete mode 100644 node_modules/moment/src/locale/de-at.js delete mode 100644 node_modules/moment/src/locale/de-ch.js delete mode 100644 node_modules/moment/src/locale/de.js delete mode 100644 node_modules/moment/src/locale/dv.js delete mode 100644 node_modules/moment/src/locale/el.js delete mode 100644 node_modules/moment/src/locale/en-au.js delete mode 100644 node_modules/moment/src/locale/en-ca.js delete mode 100644 node_modules/moment/src/locale/en-gb.js delete mode 100644 node_modules/moment/src/locale/en-ie.js delete mode 100644 node_modules/moment/src/locale/en-il.js delete mode 100644 node_modules/moment/src/locale/en-in.js delete mode 100644 node_modules/moment/src/locale/en-nz.js delete mode 100644 node_modules/moment/src/locale/en-sg.js delete mode 100644 node_modules/moment/src/locale/eo.js delete mode 100644 node_modules/moment/src/locale/es-do.js delete mode 100644 node_modules/moment/src/locale/es-mx.js delete mode 100644 node_modules/moment/src/locale/es-us.js delete mode 100644 node_modules/moment/src/locale/es.js delete mode 100644 node_modules/moment/src/locale/et.js delete mode 100644 node_modules/moment/src/locale/eu.js delete mode 100644 node_modules/moment/src/locale/fa.js delete mode 100644 node_modules/moment/src/locale/fi.js delete mode 100644 node_modules/moment/src/locale/fil.js delete mode 100644 node_modules/moment/src/locale/fo.js delete mode 100644 node_modules/moment/src/locale/fr-ca.js delete mode 100644 node_modules/moment/src/locale/fr-ch.js delete mode 100644 node_modules/moment/src/locale/fr.js delete mode 100644 node_modules/moment/src/locale/fy.js delete mode 100644 node_modules/moment/src/locale/ga.js delete mode 100644 node_modules/moment/src/locale/gd.js delete mode 100644 node_modules/moment/src/locale/gl.js delete mode 100644 node_modules/moment/src/locale/gom-deva.js delete mode 100644 node_modules/moment/src/locale/gom-latn.js delete mode 100644 node_modules/moment/src/locale/gu.js delete mode 100644 node_modules/moment/src/locale/he.js delete mode 100644 node_modules/moment/src/locale/hi.js delete mode 100644 node_modules/moment/src/locale/hr.js delete mode 100644 node_modules/moment/src/locale/hu.js delete mode 100644 node_modules/moment/src/locale/hy-am.js delete mode 100644 node_modules/moment/src/locale/id.js delete mode 100644 node_modules/moment/src/locale/is.js delete mode 100644 node_modules/moment/src/locale/it-ch.js delete mode 100644 node_modules/moment/src/locale/it.js delete mode 100644 node_modules/moment/src/locale/ja.js delete mode 100644 node_modules/moment/src/locale/jv.js delete mode 100644 node_modules/moment/src/locale/ka.js delete mode 100644 node_modules/moment/src/locale/kk.js delete mode 100644 node_modules/moment/src/locale/km.js delete mode 100644 node_modules/moment/src/locale/kn.js delete mode 100644 node_modules/moment/src/locale/ko.js delete mode 100644 node_modules/moment/src/locale/ku.js delete mode 100644 node_modules/moment/src/locale/ky.js delete mode 100644 node_modules/moment/src/locale/lb.js delete mode 100644 node_modules/moment/src/locale/lo.js delete mode 100644 node_modules/moment/src/locale/lt.js delete mode 100644 node_modules/moment/src/locale/lv.js delete mode 100644 node_modules/moment/src/locale/me.js delete mode 100644 node_modules/moment/src/locale/mi.js delete mode 100644 node_modules/moment/src/locale/mk.js delete mode 100644 node_modules/moment/src/locale/ml.js delete mode 100644 node_modules/moment/src/locale/mn.js delete mode 100644 node_modules/moment/src/locale/mr.js delete mode 100644 node_modules/moment/src/locale/ms-my.js delete mode 100644 node_modules/moment/src/locale/ms.js delete mode 100644 node_modules/moment/src/locale/mt.js delete mode 100644 node_modules/moment/src/locale/my.js delete mode 100644 node_modules/moment/src/locale/nb.js delete mode 100644 node_modules/moment/src/locale/ne.js delete mode 100644 node_modules/moment/src/locale/nl-be.js delete mode 100644 node_modules/moment/src/locale/nl.js delete mode 100644 node_modules/moment/src/locale/nn.js delete mode 100644 node_modules/moment/src/locale/oc-lnc.js delete mode 100644 node_modules/moment/src/locale/pa-in.js delete mode 100644 node_modules/moment/src/locale/pl.js delete mode 100644 node_modules/moment/src/locale/pt-br.js delete mode 100644 node_modules/moment/src/locale/pt.js delete mode 100644 node_modules/moment/src/locale/ro.js delete mode 100644 node_modules/moment/src/locale/ru.js delete mode 100644 node_modules/moment/src/locale/sd.js delete mode 100644 node_modules/moment/src/locale/se.js delete mode 100644 node_modules/moment/src/locale/si.js delete mode 100644 node_modules/moment/src/locale/sk.js delete mode 100644 node_modules/moment/src/locale/sl.js delete mode 100644 node_modules/moment/src/locale/sq.js delete mode 100644 node_modules/moment/src/locale/sr-cyrl.js delete mode 100644 node_modules/moment/src/locale/sr.js delete mode 100644 node_modules/moment/src/locale/ss.js delete mode 100644 node_modules/moment/src/locale/sv.js delete mode 100644 node_modules/moment/src/locale/sw.js delete mode 100644 node_modules/moment/src/locale/ta.js delete mode 100644 node_modules/moment/src/locale/te.js delete mode 100644 node_modules/moment/src/locale/tet.js delete mode 100644 node_modules/moment/src/locale/tg.js delete mode 100644 node_modules/moment/src/locale/th.js delete mode 100644 node_modules/moment/src/locale/tk.js delete mode 100644 node_modules/moment/src/locale/tl-ph.js delete mode 100644 node_modules/moment/src/locale/tlh.js delete mode 100644 node_modules/moment/src/locale/tr.js delete mode 100644 node_modules/moment/src/locale/tzl.js delete mode 100644 node_modules/moment/src/locale/tzm-latn.js delete mode 100644 node_modules/moment/src/locale/tzm.js delete mode 100644 node_modules/moment/src/locale/ug-cn.js delete mode 100644 node_modules/moment/src/locale/uk.js delete mode 100644 node_modules/moment/src/locale/ur.js delete mode 100644 node_modules/moment/src/locale/uz-latn.js delete mode 100644 node_modules/moment/src/locale/uz.js delete mode 100644 node_modules/moment/src/locale/vi.js delete mode 100644 node_modules/moment/src/locale/x-pseudo.js delete mode 100644 node_modules/moment/src/locale/yo.js delete mode 100644 node_modules/moment/src/locale/zh-cn.js delete mode 100644 node_modules/moment/src/locale/zh-hk.js delete mode 100644 node_modules/moment/src/locale/zh-mo.js delete mode 100644 node_modules/moment/src/locale/zh-tw.js delete mode 100644 node_modules/moment/src/moment.js delete mode 100644 node_modules/moment/ts3.1-typings/moment.d.ts delete mode 100644 node_modules/nanomatch/CHANGELOG.md delete mode 100644 node_modules/nanomatch/LICENSE delete mode 100644 node_modules/nanomatch/README.md delete mode 100644 node_modules/nanomatch/index.js delete mode 100644 node_modules/nanomatch/lib/cache.js delete mode 100644 node_modules/nanomatch/lib/compilers.js delete mode 100644 node_modules/nanomatch/lib/parsers.js delete mode 100644 node_modules/nanomatch/lib/utils.js delete mode 100644 node_modules/nanomatch/package.json delete mode 100644 node_modules/neo-async/LICENSE delete mode 100644 node_modules/neo-async/README.md delete mode 100644 node_modules/neo-async/all.js delete mode 100644 node_modules/neo-async/allLimit.js delete mode 100644 node_modules/neo-async/allSeries.js delete mode 100644 node_modules/neo-async/angelFall.js delete mode 100644 node_modules/neo-async/any.js delete mode 100644 node_modules/neo-async/anyLimit.js delete mode 100644 node_modules/neo-async/anySeries.js delete mode 100644 node_modules/neo-async/apply.js delete mode 100644 node_modules/neo-async/applyEach.js delete mode 100644 node_modules/neo-async/applyEachSeries.js delete mode 100644 node_modules/neo-async/async.js delete mode 100644 node_modules/neo-async/async.min.js delete mode 100644 node_modules/neo-async/asyncify.js delete mode 100644 node_modules/neo-async/auto.js delete mode 100644 node_modules/neo-async/autoInject.js delete mode 100644 node_modules/neo-async/cargo.js delete mode 100644 node_modules/neo-async/compose.js delete mode 100644 node_modules/neo-async/concat.js delete mode 100644 node_modules/neo-async/concatLimit.js delete mode 100644 node_modules/neo-async/concatSeries.js delete mode 100644 node_modules/neo-async/constant.js delete mode 100644 node_modules/neo-async/createLogger.js delete mode 100644 node_modules/neo-async/detect.js delete mode 100644 node_modules/neo-async/detectLimit.js delete mode 100644 node_modules/neo-async/detectSeries.js delete mode 100644 node_modules/neo-async/dir.js delete mode 100644 node_modules/neo-async/doDuring.js delete mode 100644 node_modules/neo-async/doUntil.js delete mode 100644 node_modules/neo-async/doWhilst.js delete mode 100644 node_modules/neo-async/during.js delete mode 100644 node_modules/neo-async/each.js delete mode 100644 node_modules/neo-async/eachLimit.js delete mode 100644 node_modules/neo-async/eachOf.js delete mode 100644 node_modules/neo-async/eachOfLimit.js delete mode 100644 node_modules/neo-async/eachOfSeries.js delete mode 100644 node_modules/neo-async/eachSeries.js delete mode 100644 node_modules/neo-async/ensureAsync.js delete mode 100644 node_modules/neo-async/every.js delete mode 100644 node_modules/neo-async/everyLimit.js delete mode 100644 node_modules/neo-async/everySeries.js delete mode 100644 node_modules/neo-async/fast.js delete mode 100644 node_modules/neo-async/filter.js delete mode 100644 node_modules/neo-async/filterLimit.js delete mode 100644 node_modules/neo-async/filterSeries.js delete mode 100644 node_modules/neo-async/find.js delete mode 100644 node_modules/neo-async/findLimit.js delete mode 100644 node_modules/neo-async/findSeries.js delete mode 100644 node_modules/neo-async/foldl.js delete mode 100644 node_modules/neo-async/foldr.js delete mode 100644 node_modules/neo-async/forEach.js delete mode 100644 node_modules/neo-async/forEachLimit.js delete mode 100644 node_modules/neo-async/forEachOf.js delete mode 100644 node_modules/neo-async/forEachOfLimit.js delete mode 100644 node_modules/neo-async/forEachOfSeries.js delete mode 100644 node_modules/neo-async/forEachSeries.js delete mode 100644 node_modules/neo-async/forever.js delete mode 100644 node_modules/neo-async/groupBy.js delete mode 100644 node_modules/neo-async/groupByLimit.js delete mode 100644 node_modules/neo-async/groupBySeries.js delete mode 100644 node_modules/neo-async/inject.js delete mode 100644 node_modules/neo-async/iterator.js delete mode 100644 node_modules/neo-async/log.js delete mode 100644 node_modules/neo-async/map.js delete mode 100644 node_modules/neo-async/mapLimit.js delete mode 100644 node_modules/neo-async/mapSeries.js delete mode 100644 node_modules/neo-async/mapValues.js delete mode 100644 node_modules/neo-async/mapValuesLimit.js delete mode 100644 node_modules/neo-async/mapValuesSeries.js delete mode 100644 node_modules/neo-async/memoize.js delete mode 100644 node_modules/neo-async/nextTick.js delete mode 100644 node_modules/neo-async/omit.js delete mode 100644 node_modules/neo-async/omitLimit.js delete mode 100644 node_modules/neo-async/omitSeries.js delete mode 100644 node_modules/neo-async/package.json delete mode 100644 node_modules/neo-async/parallel.js delete mode 100644 node_modules/neo-async/parallelLimit.js delete mode 100644 node_modules/neo-async/pick.js delete mode 100644 node_modules/neo-async/pickLimit.js delete mode 100644 node_modules/neo-async/pickSeries.js delete mode 100644 node_modules/neo-async/priorityQueue.js delete mode 100644 node_modules/neo-async/queue.js delete mode 100644 node_modules/neo-async/race.js delete mode 100644 node_modules/neo-async/reduce.js delete mode 100644 node_modules/neo-async/reduceRight.js delete mode 100644 node_modules/neo-async/reflect.js delete mode 100644 node_modules/neo-async/reflectAll.js delete mode 100644 node_modules/neo-async/reject.js delete mode 100644 node_modules/neo-async/rejectLimit.js delete mode 100644 node_modules/neo-async/rejectSeries.js delete mode 100644 node_modules/neo-async/retry.js delete mode 100644 node_modules/neo-async/retryable.js delete mode 100644 node_modules/neo-async/safe.js delete mode 100644 node_modules/neo-async/select.js delete mode 100644 node_modules/neo-async/selectLimit.js delete mode 100644 node_modules/neo-async/selectSeries.js delete mode 100644 node_modules/neo-async/seq.js delete mode 100644 node_modules/neo-async/series.js delete mode 100644 node_modules/neo-async/setImmediate.js delete mode 100644 node_modules/neo-async/some.js delete mode 100644 node_modules/neo-async/someLimit.js delete mode 100644 node_modules/neo-async/someSeries.js delete mode 100644 node_modules/neo-async/sortBy.js delete mode 100644 node_modules/neo-async/sortByLimit.js delete mode 100644 node_modules/neo-async/sortBySeries.js delete mode 100644 node_modules/neo-async/timeout.js delete mode 100644 node_modules/neo-async/times.js delete mode 100644 node_modules/neo-async/timesLimit.js delete mode 100644 node_modules/neo-async/timesSeries.js delete mode 100644 node_modules/neo-async/transform.js delete mode 100644 node_modules/neo-async/transformLimit.js delete mode 100644 node_modules/neo-async/transformSeries.js delete mode 100644 node_modules/neo-async/tryEach.js delete mode 100644 node_modules/neo-async/unmemoize.js delete mode 100644 node_modules/neo-async/until.js delete mode 100644 node_modules/neo-async/waterfall.js delete mode 100644 node_modules/neo-async/whilst.js delete mode 100644 node_modules/neo-async/wrapSync.js delete mode 100644 node_modules/node-fetch/CHANGELOG.md delete mode 100644 node_modules/node-fetch/LICENSE.md delete mode 100644 node_modules/node-fetch/README.md delete mode 100644 node_modules/node-fetch/browser.js delete mode 100644 node_modules/node-fetch/lib/index.es.js delete mode 100644 node_modules/node-fetch/lib/index.js delete mode 100644 node_modules/node-fetch/lib/index.mjs delete mode 100644 node_modules/node-fetch/package.json delete mode 100644 node_modules/object-copy/LICENSE delete mode 100644 node_modules/object-copy/index.js delete mode 100644 node_modules/object-copy/node_modules/define-property/LICENSE delete mode 100644 node_modules/object-copy/node_modules/define-property/README.md delete mode 100644 node_modules/object-copy/node_modules/define-property/index.js delete mode 100644 node_modules/object-copy/node_modules/define-property/package.json delete mode 100644 node_modules/object-copy/node_modules/kind-of/LICENSE delete mode 100644 node_modules/object-copy/node_modules/kind-of/README.md delete mode 100644 node_modules/object-copy/node_modules/kind-of/index.js delete mode 100644 node_modules/object-copy/node_modules/kind-of/package.json delete mode 100644 node_modules/object-copy/package.json delete mode 100644 node_modules/object-visit/LICENSE delete mode 100644 node_modules/object-visit/README.md delete mode 100644 node_modules/object-visit/index.js delete mode 100644 node_modules/object-visit/package.json delete mode 100644 node_modules/object.pick/LICENSE delete mode 100644 node_modules/object.pick/README.md delete mode 100644 node_modules/object.pick/index.js delete mode 100644 node_modules/object.pick/package.json delete mode 100644 node_modules/once/LICENSE delete mode 100644 node_modules/once/README.md delete mode 100644 node_modules/once/once.js delete mode 100644 node_modules/once/package.json delete mode 100644 node_modules/pascalcase/LICENSE delete mode 100644 node_modules/pascalcase/README.md delete mode 100644 node_modules/pascalcase/index.js delete mode 100644 node_modules/pascalcase/package.json delete mode 100644 node_modules/posix-character-classes/LICENSE delete mode 100644 node_modules/posix-character-classes/README.md delete mode 100644 node_modules/posix-character-classes/index.js delete mode 100644 node_modules/posix-character-classes/package.json delete mode 100644 node_modules/process-nextick-args/index.js delete mode 100644 node_modules/process-nextick-args/license.md delete mode 100644 node_modules/process-nextick-args/package.json delete mode 100644 node_modules/process-nextick-args/readme.md delete mode 100644 node_modules/readable-stream/.travis.yml delete mode 100644 node_modules/readable-stream/CONTRIBUTING.md delete mode 100644 node_modules/readable-stream/GOVERNANCE.md delete mode 100644 node_modules/readable-stream/LICENSE delete mode 100644 node_modules/readable-stream/README.md delete mode 100644 node_modules/readable-stream/doc/wg-meetings/2015-01-30.md delete mode 100644 node_modules/readable-stream/duplex-browser.js delete mode 100644 node_modules/readable-stream/duplex.js delete mode 100644 node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/BufferList.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/destroy.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/stream-browser.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/stream.js delete mode 100644 node_modules/readable-stream/package.json delete mode 100644 node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/readable-stream/readable-browser.js delete mode 100644 node_modules/readable-stream/readable.js delete mode 100644 node_modules/readable-stream/transform.js delete mode 100644 node_modules/readable-stream/writable-browser.js delete mode 100644 node_modules/readable-stream/writable.js delete mode 100644 node_modules/regex-not/LICENSE delete mode 100644 node_modules/regex-not/README.md delete mode 100644 node_modules/regex-not/index.js delete mode 100644 node_modules/regex-not/package.json delete mode 100644 node_modules/relative/LICENSE delete mode 100644 node_modules/relative/README.md delete mode 100644 node_modules/relative/index.js delete mode 100644 node_modules/relative/node_modules/isobject/LICENSE delete mode 100644 node_modules/relative/node_modules/isobject/README.md delete mode 100644 node_modules/relative/node_modules/isobject/index.js delete mode 100644 node_modules/relative/node_modules/isobject/package.json delete mode 100644 node_modules/relative/package.json delete mode 100644 node_modules/remarkable/CHANGELOG.md delete mode 100644 node_modules/remarkable/LICENSE delete mode 100644 node_modules/remarkable/README.md delete mode 100644 node_modules/remarkable/bin/remarkable.js delete mode 100644 node_modules/remarkable/dist/remarkable.js delete mode 100644 node_modules/remarkable/dist/remarkable.min.js delete mode 100644 node_modules/remarkable/index.js delete mode 100644 node_modules/remarkable/lib/common/entities.js delete mode 100644 node_modules/remarkable/lib/common/html_blocks.js delete mode 100644 node_modules/remarkable/lib/common/html_re.js delete mode 100644 node_modules/remarkable/lib/common/url_schemas.js delete mode 100644 node_modules/remarkable/lib/common/utils.js delete mode 100644 node_modules/remarkable/lib/configs/commonmark.js delete mode 100644 node_modules/remarkable/lib/configs/default.js delete mode 100644 node_modules/remarkable/lib/configs/full.js delete mode 100644 node_modules/remarkable/lib/helpers/normalize_link.js delete mode 100644 node_modules/remarkable/lib/helpers/normalize_reference.js delete mode 100644 node_modules/remarkable/lib/helpers/parse_link_destination.js delete mode 100644 node_modules/remarkable/lib/helpers/parse_link_label.js delete mode 100644 node_modules/remarkable/lib/helpers/parse_link_title.js delete mode 100644 node_modules/remarkable/lib/index.js delete mode 100644 node_modules/remarkable/lib/parser_block.js delete mode 100644 node_modules/remarkable/lib/parser_core.js delete mode 100644 node_modules/remarkable/lib/parser_inline.js delete mode 100644 node_modules/remarkable/lib/renderer.js delete mode 100644 node_modules/remarkable/lib/ruler.js delete mode 100644 node_modules/remarkable/lib/rules.js delete mode 100644 node_modules/remarkable/lib/rules_block/blockquote.js delete mode 100644 node_modules/remarkable/lib/rules_block/code.js delete mode 100644 node_modules/remarkable/lib/rules_block/deflist.js delete mode 100644 node_modules/remarkable/lib/rules_block/fences.js delete mode 100644 node_modules/remarkable/lib/rules_block/footnote.js delete mode 100644 node_modules/remarkable/lib/rules_block/heading.js delete mode 100644 node_modules/remarkable/lib/rules_block/hr.js delete mode 100644 node_modules/remarkable/lib/rules_block/htmlblock.js delete mode 100644 node_modules/remarkable/lib/rules_block/lheading.js delete mode 100644 node_modules/remarkable/lib/rules_block/list.js delete mode 100644 node_modules/remarkable/lib/rules_block/paragraph.js delete mode 100644 node_modules/remarkable/lib/rules_block/state_block.js delete mode 100644 node_modules/remarkable/lib/rules_block/table.js delete mode 100644 node_modules/remarkable/lib/rules_core/abbr.js delete mode 100644 node_modules/remarkable/lib/rules_core/abbr2.js delete mode 100644 node_modules/remarkable/lib/rules_core/block.js delete mode 100644 node_modules/remarkable/lib/rules_core/footnote_tail.js delete mode 100644 node_modules/remarkable/lib/rules_core/inline.js delete mode 100644 node_modules/remarkable/lib/rules_core/linkify.js delete mode 100644 node_modules/remarkable/lib/rules_core/references.js delete mode 100644 node_modules/remarkable/lib/rules_core/replacements.js delete mode 100644 node_modules/remarkable/lib/rules_core/smartquotes.js delete mode 100644 node_modules/remarkable/lib/rules_inline/autolink.js delete mode 100644 node_modules/remarkable/lib/rules_inline/backticks.js delete mode 100644 node_modules/remarkable/lib/rules_inline/del.js delete mode 100644 node_modules/remarkable/lib/rules_inline/emphasis.js delete mode 100644 node_modules/remarkable/lib/rules_inline/entity.js delete mode 100644 node_modules/remarkable/lib/rules_inline/escape.js delete mode 100644 node_modules/remarkable/lib/rules_inline/footnote_inline.js delete mode 100644 node_modules/remarkable/lib/rules_inline/footnote_ref.js delete mode 100644 node_modules/remarkable/lib/rules_inline/htmltag.js delete mode 100644 node_modules/remarkable/lib/rules_inline/ins.js delete mode 100644 node_modules/remarkable/lib/rules_inline/links.js delete mode 100644 node_modules/remarkable/lib/rules_inline/mark.js delete mode 100644 node_modules/remarkable/lib/rules_inline/newline.js delete mode 100644 node_modules/remarkable/lib/rules_inline/state_inline.js delete mode 100644 node_modules/remarkable/lib/rules_inline/sub.js delete mode 100644 node_modules/remarkable/lib/rules_inline/sup.js delete mode 100644 node_modules/remarkable/lib/rules_inline/text.js delete mode 100644 node_modules/remarkable/package.json delete mode 100644 node_modules/repeat-element/LICENSE delete mode 100644 node_modules/repeat-element/README.md delete mode 100644 node_modules/repeat-element/index.js delete mode 100644 node_modules/repeat-element/package.json delete mode 100644 node_modules/repeat-string/LICENSE delete mode 100644 node_modules/repeat-string/README.md delete mode 100644 node_modules/repeat-string/index.js delete mode 100644 node_modules/repeat-string/package.json delete mode 100644 node_modules/resolve-url/.jshintrc delete mode 100644 node_modules/resolve-url/LICENSE delete mode 100644 node_modules/resolve-url/bower.json delete mode 100644 node_modules/resolve-url/changelog.md delete mode 100644 node_modules/resolve-url/component.json delete mode 100644 node_modules/resolve-url/package.json delete mode 100644 node_modules/resolve-url/readme.md delete mode 100644 node_modules/resolve-url/resolve-url.js delete mode 100644 node_modules/resolve-url/test/resolve-url.js delete mode 100644 node_modules/ret/LICENSE delete mode 100644 node_modules/ret/README.md delete mode 100644 node_modules/ret/lib/index.js delete mode 100644 node_modules/ret/lib/positions.js delete mode 100644 node_modules/ret/lib/sets.js delete mode 100644 node_modules/ret/lib/types.js delete mode 100644 node_modules/ret/lib/util.js delete mode 100644 node_modules/ret/package.json delete mode 100644 node_modules/safe-buffer/LICENSE delete mode 100644 node_modules/safe-buffer/README.md delete mode 100644 node_modules/safe-buffer/index.d.ts delete mode 100644 node_modules/safe-buffer/index.js delete mode 100644 node_modules/safe-buffer/package.json delete mode 100644 node_modules/safe-regex/.travis.yml delete mode 100644 node_modules/safe-regex/LICENSE delete mode 100644 node_modules/safe-regex/example/safe.js delete mode 100644 node_modules/safe-regex/index.js delete mode 100644 node_modules/safe-regex/package.json delete mode 100644 node_modules/safe-regex/readme.markdown delete mode 100644 node_modules/safe-regex/test/regex.js delete mode 100644 node_modules/self-closing-tags/LICENSE delete mode 100644 node_modules/self-closing-tags/README.md delete mode 100644 node_modules/self-closing-tags/index.js delete mode 100644 node_modules/self-closing-tags/package.json delete mode 100644 node_modules/set-getter/LICENSE delete mode 100644 node_modules/set-getter/README.md delete mode 100644 node_modules/set-getter/index.js delete mode 100644 node_modules/set-getter/package.json delete mode 100644 node_modules/set-value/LICENSE delete mode 100644 node_modules/set-value/README.md delete mode 100644 node_modules/set-value/index.js delete mode 100644 node_modules/set-value/node_modules/extend-shallow/LICENSE delete mode 100644 node_modules/set-value/node_modules/extend-shallow/README.md delete mode 100644 node_modules/set-value/node_modules/extend-shallow/index.js delete mode 100644 node_modules/set-value/node_modules/extend-shallow/package.json delete mode 100644 node_modules/set-value/package.json delete mode 100644 node_modules/snapdragon-node/LICENSE delete mode 100644 node_modules/snapdragon-node/README.md delete mode 100644 node_modules/snapdragon-node/index.js delete mode 100644 node_modules/snapdragon-node/node_modules/define-property/LICENSE delete mode 100644 node_modules/snapdragon-node/node_modules/define-property/README.md delete mode 100644 node_modules/snapdragon-node/node_modules/define-property/index.js delete mode 100644 node_modules/snapdragon-node/node_modules/define-property/package.json delete mode 100644 node_modules/snapdragon-node/node_modules/is-accessor-descriptor/LICENSE delete mode 100644 node_modules/snapdragon-node/node_modules/is-accessor-descriptor/README.md delete mode 100644 node_modules/snapdragon-node/node_modules/is-accessor-descriptor/index.js delete mode 100644 node_modules/snapdragon-node/node_modules/is-accessor-descriptor/package.json delete mode 100644 node_modules/snapdragon-node/node_modules/is-data-descriptor/LICENSE delete mode 100644 node_modules/snapdragon-node/node_modules/is-data-descriptor/README.md delete mode 100644 node_modules/snapdragon-node/node_modules/is-data-descriptor/index.js delete mode 100644 node_modules/snapdragon-node/node_modules/is-data-descriptor/package.json delete mode 100644 node_modules/snapdragon-node/node_modules/is-descriptor/LICENSE delete mode 100644 node_modules/snapdragon-node/node_modules/is-descriptor/README.md delete mode 100644 node_modules/snapdragon-node/node_modules/is-descriptor/index.js delete mode 100644 node_modules/snapdragon-node/node_modules/is-descriptor/package.json delete mode 100644 node_modules/snapdragon-node/package.json delete mode 100644 node_modules/snapdragon-util/LICENSE delete mode 100644 node_modules/snapdragon-util/README.md delete mode 100644 node_modules/snapdragon-util/index.js delete mode 100644 node_modules/snapdragon-util/node_modules/kind-of/LICENSE delete mode 100644 node_modules/snapdragon-util/node_modules/kind-of/README.md delete mode 100644 node_modules/snapdragon-util/node_modules/kind-of/index.js delete mode 100644 node_modules/snapdragon-util/node_modules/kind-of/package.json delete mode 100644 node_modules/snapdragon-util/package.json delete mode 100644 node_modules/snapdragon/LICENSE delete mode 100644 node_modules/snapdragon/README.md delete mode 100644 node_modules/snapdragon/index.js delete mode 100644 node_modules/snapdragon/lib/compiler.js delete mode 100644 node_modules/snapdragon/lib/parser.js delete mode 100644 node_modules/snapdragon/lib/position.js delete mode 100644 node_modules/snapdragon/lib/source-maps.js delete mode 100644 node_modules/snapdragon/lib/utils.js delete mode 100644 node_modules/snapdragon/node_modules/debug/.coveralls.yml delete mode 100644 node_modules/snapdragon/node_modules/debug/.eslintrc delete mode 100644 node_modules/snapdragon/node_modules/debug/.npmignore delete mode 100644 node_modules/snapdragon/node_modules/debug/.travis.yml delete mode 100644 node_modules/snapdragon/node_modules/debug/CHANGELOG.md delete mode 100644 node_modules/snapdragon/node_modules/debug/LICENSE delete mode 100644 node_modules/snapdragon/node_modules/debug/Makefile delete mode 100644 node_modules/snapdragon/node_modules/debug/README.md delete mode 100644 node_modules/snapdragon/node_modules/debug/component.json delete mode 100644 node_modules/snapdragon/node_modules/debug/karma.conf.js delete mode 100644 node_modules/snapdragon/node_modules/debug/node.js delete mode 100644 node_modules/snapdragon/node_modules/debug/package.json delete mode 100644 node_modules/snapdragon/node_modules/debug/src/browser.js delete mode 100644 node_modules/snapdragon/node_modules/debug/src/debug.js delete mode 100644 node_modules/snapdragon/node_modules/debug/src/index.js delete mode 100644 node_modules/snapdragon/node_modules/debug/src/inspector-log.js delete mode 100644 node_modules/snapdragon/node_modules/debug/src/node.js delete mode 100644 node_modules/snapdragon/node_modules/define-property/LICENSE delete mode 100644 node_modules/snapdragon/node_modules/define-property/README.md delete mode 100644 node_modules/snapdragon/node_modules/define-property/index.js delete mode 100644 node_modules/snapdragon/node_modules/define-property/package.json delete mode 100644 node_modules/snapdragon/node_modules/extend-shallow/LICENSE delete mode 100644 node_modules/snapdragon/node_modules/extend-shallow/README.md delete mode 100644 node_modules/snapdragon/node_modules/extend-shallow/index.js delete mode 100644 node_modules/snapdragon/node_modules/extend-shallow/package.json delete mode 100644 node_modules/snapdragon/node_modules/ms/index.js delete mode 100644 node_modules/snapdragon/node_modules/ms/license.md delete mode 100644 node_modules/snapdragon/node_modules/ms/package.json delete mode 100644 node_modules/snapdragon/node_modules/ms/readme.md delete mode 100644 node_modules/snapdragon/package.json delete mode 100644 node_modules/source-map-resolve/.jshintrc delete mode 100644 node_modules/source-map-resolve/.travis.yml delete mode 100644 node_modules/source-map-resolve/LICENSE delete mode 100644 node_modules/source-map-resolve/bower.json delete mode 100644 node_modules/source-map-resolve/changelog.md delete mode 100644 node_modules/source-map-resolve/component.json delete mode 100644 node_modules/source-map-resolve/generate-source-map-resolve.js delete mode 100644 node_modules/source-map-resolve/lib/decode-uri-component.js delete mode 100644 node_modules/source-map-resolve/lib/resolve-url.js delete mode 100644 node_modules/source-map-resolve/lib/source-map-resolve-node.js delete mode 100644 node_modules/source-map-resolve/package.json delete mode 100644 node_modules/source-map-resolve/readme.md delete mode 100644 node_modules/source-map-resolve/source-map-resolve.js delete mode 100644 node_modules/source-map-resolve/source-map-resolve.js.template delete mode 100644 node_modules/source-map-resolve/test/common.js delete mode 100644 node_modules/source-map-resolve/test/read.js delete mode 100644 node_modules/source-map-resolve/test/source-map-resolve.js delete mode 100644 node_modules/source-map-resolve/test/windows.js delete mode 100644 node_modules/source-map-resolve/x-package.json5 delete mode 100644 node_modules/source-map-url/.jshintrc delete mode 100644 node_modules/source-map-url/LICENSE delete mode 100644 node_modules/source-map-url/bower.json delete mode 100644 node_modules/source-map-url/changelog.md delete mode 100644 node_modules/source-map-url/component.json delete mode 100644 node_modules/source-map-url/package.json delete mode 100644 node_modules/source-map-url/readme.md delete mode 100644 node_modules/source-map-url/source-map-url.js delete mode 100644 node_modules/source-map-url/test/source-map-url.js delete mode 100644 node_modules/source-map-url/x-package.json5 delete mode 100644 node_modules/source-map/CHANGELOG.md delete mode 100644 node_modules/source-map/LICENSE delete mode 100644 node_modules/source-map/README.md delete mode 100644 node_modules/source-map/dist/source-map.debug.js delete mode 100644 node_modules/source-map/dist/source-map.js delete mode 100644 node_modules/source-map/dist/source-map.min.js delete mode 100644 node_modules/source-map/dist/source-map.min.js.map delete mode 100644 node_modules/source-map/lib/array-set.js delete mode 100644 node_modules/source-map/lib/base64-vlq.js delete mode 100644 node_modules/source-map/lib/base64.js delete mode 100644 node_modules/source-map/lib/binary-search.js delete mode 100644 node_modules/source-map/lib/mapping-list.js delete mode 100644 node_modules/source-map/lib/quick-sort.js delete mode 100644 node_modules/source-map/lib/source-map-consumer.js delete mode 100644 node_modules/source-map/lib/source-map-generator.js delete mode 100644 node_modules/source-map/lib/source-node.js delete mode 100644 node_modules/source-map/lib/util.js delete mode 100644 node_modules/source-map/package.json delete mode 100644 node_modules/source-map/source-map.js delete mode 100644 node_modules/split-string/LICENSE delete mode 100644 node_modules/split-string/README.md delete mode 100644 node_modules/split-string/index.js delete mode 100644 node_modules/split-string/package.json delete mode 100644 node_modules/sprintf-js/.npmignore delete mode 100644 node_modules/sprintf-js/LICENSE delete mode 100644 node_modules/sprintf-js/README.md delete mode 100644 node_modules/sprintf-js/bower.json delete mode 100644 node_modules/sprintf-js/demo/angular.html delete mode 100644 node_modules/sprintf-js/dist/angular-sprintf.min.js delete mode 100644 node_modules/sprintf-js/dist/angular-sprintf.min.js.map delete mode 100644 node_modules/sprintf-js/dist/angular-sprintf.min.map delete mode 100644 node_modules/sprintf-js/dist/sprintf.min.js delete mode 100644 node_modules/sprintf-js/dist/sprintf.min.js.map delete mode 100644 node_modules/sprintf-js/dist/sprintf.min.map delete mode 100644 node_modules/sprintf-js/gruntfile.js delete mode 100644 node_modules/sprintf-js/package.json delete mode 100644 node_modules/sprintf-js/src/angular-sprintf.js delete mode 100644 node_modules/sprintf-js/src/sprintf.js delete mode 100644 node_modules/sprintf-js/test/test.js delete mode 100644 node_modules/static-extend/LICENSE delete mode 100644 node_modules/static-extend/index.js delete mode 100644 node_modules/static-extend/node_modules/define-property/LICENSE delete mode 100644 node_modules/static-extend/node_modules/define-property/README.md delete mode 100644 node_modules/static-extend/node_modules/define-property/index.js delete mode 100644 node_modules/static-extend/node_modules/define-property/package.json delete mode 100644 node_modules/static-extend/package.json delete mode 100644 node_modules/string_decoder/.travis.yml delete mode 100644 node_modules/string_decoder/LICENSE delete mode 100644 node_modules/string_decoder/README.md delete mode 100644 node_modules/string_decoder/lib/string_decoder.js delete mode 100644 node_modules/string_decoder/package.json delete mode 100644 node_modules/striptags/.npmignore delete mode 100644 node_modules/striptags/.travis.yml delete mode 100644 node_modules/striptags/LICENSE delete mode 100644 node_modules/striptags/README.md delete mode 100644 node_modules/striptags/bower.json delete mode 100644 node_modules/striptags/index.d.ts delete mode 100644 node_modules/striptags/package.json delete mode 100644 node_modules/striptags/src/striptags.js delete mode 100644 node_modules/striptags/test/striptags-test.js delete mode 100644 node_modules/success-symbol/LICENSE delete mode 100644 node_modules/success-symbol/README.md delete mode 100644 node_modules/success-symbol/index.js delete mode 100644 node_modules/success-symbol/package.json delete mode 100644 node_modules/through2/LICENSE.md delete mode 100644 node_modules/through2/README.md delete mode 100644 node_modules/through2/package.json delete mode 100644 node_modules/through2/through2.js delete mode 100644 node_modules/time-stamp/LICENSE delete mode 100644 node_modules/time-stamp/README.md delete mode 100644 node_modules/time-stamp/index.js delete mode 100644 node_modules/time-stamp/package.json delete mode 100644 node_modules/to-gfm-code-block/LICENSE delete mode 100644 node_modules/to-gfm-code-block/README.md delete mode 100644 node_modules/to-gfm-code-block/index.js delete mode 100644 node_modules/to-gfm-code-block/package.json delete mode 100644 node_modules/to-object-path/LICENSE delete mode 100644 node_modules/to-object-path/README.md delete mode 100644 node_modules/to-object-path/index.js delete mode 100644 node_modules/to-object-path/node_modules/kind-of/LICENSE delete mode 100644 node_modules/to-object-path/node_modules/kind-of/README.md delete mode 100644 node_modules/to-object-path/node_modules/kind-of/index.js delete mode 100644 node_modules/to-object-path/node_modules/kind-of/package.json delete mode 100644 node_modules/to-object-path/package.json delete mode 100644 node_modules/to-regex-range/LICENSE delete mode 100644 node_modules/to-regex-range/README.md delete mode 100644 node_modules/to-regex-range/index.js delete mode 100644 node_modules/to-regex-range/package.json delete mode 100644 node_modules/to-regex/LICENSE delete mode 100644 node_modules/to-regex/README.md delete mode 100644 node_modules/to-regex/index.js delete mode 100644 node_modules/to-regex/package.json delete mode 100644 node_modules/tunnel/.idea/encodings.xml delete mode 100644 node_modules/tunnel/.idea/modules.xml delete mode 100644 node_modules/tunnel/.idea/node-tunnel.iml delete mode 100644 node_modules/tunnel/.idea/vcs.xml delete mode 100644 node_modules/tunnel/.idea/workspace.xml delete mode 100644 node_modules/tunnel/.travis.yml delete mode 100644 node_modules/tunnel/CHANGELOG.md delete mode 100644 node_modules/tunnel/LICENSE delete mode 100644 node_modules/tunnel/README.md delete mode 100644 node_modules/tunnel/index.js delete mode 100644 node_modules/tunnel/lib/tunnel.js delete mode 100644 node_modules/tunnel/package.json delete mode 100644 node_modules/typeof-article/LICENSE delete mode 100644 node_modules/typeof-article/README.md delete mode 100644 node_modules/typeof-article/index.js delete mode 100644 node_modules/typeof-article/node_modules/kind-of/LICENSE delete mode 100644 node_modules/typeof-article/node_modules/kind-of/README.md delete mode 100644 node_modules/typeof-article/node_modules/kind-of/index.js delete mode 100644 node_modules/typeof-article/node_modules/kind-of/package.json delete mode 100644 node_modules/typeof-article/package.json delete mode 100644 node_modules/uglify-js/LICENSE delete mode 100644 node_modules/uglify-js/README.md delete mode 100644 node_modules/uglify-js/bin/uglifyjs delete mode 100644 node_modules/uglify-js/lib/ast.js delete mode 100644 node_modules/uglify-js/lib/compress.js delete mode 100644 node_modules/uglify-js/lib/minify.js delete mode 100644 node_modules/uglify-js/lib/mozilla-ast.js delete mode 100644 node_modules/uglify-js/lib/output.js delete mode 100644 node_modules/uglify-js/lib/parse.js delete mode 100644 node_modules/uglify-js/lib/propmangle.js delete mode 100644 node_modules/uglify-js/lib/scope.js delete mode 100644 node_modules/uglify-js/lib/sourcemap.js delete mode 100644 node_modules/uglify-js/lib/transform.js delete mode 100644 node_modules/uglify-js/lib/utils.js delete mode 100644 node_modules/uglify-js/package.json delete mode 100644 node_modules/uglify-js/tools/domprops.html delete mode 100644 node_modules/uglify-js/tools/domprops.json delete mode 100644 node_modules/uglify-js/tools/exports.js delete mode 100644 node_modules/uglify-js/tools/node.js delete mode 100644 node_modules/uglify-js/tools/tty.js delete mode 100644 node_modules/union-value/LICENSE delete mode 100644 node_modules/union-value/README.md delete mode 100644 node_modules/union-value/index.js delete mode 100644 node_modules/union-value/package.json delete mode 100644 node_modules/universal-user-agent/LICENSE.md delete mode 100644 node_modules/universal-user-agent/README.md delete mode 100644 node_modules/universal-user-agent/dist-node/index.js delete mode 100644 node_modules/universal-user-agent/dist-node/index.js.map delete mode 100644 node_modules/universal-user-agent/dist-src/index.js delete mode 100644 node_modules/universal-user-agent/dist-types/index.d.ts delete mode 100644 node_modules/universal-user-agent/dist-web/index.js delete mode 100644 node_modules/universal-user-agent/dist-web/index.js.map delete mode 100644 node_modules/universal-user-agent/package.json delete mode 100644 node_modules/unset-value/LICENSE delete mode 100644 node_modules/unset-value/README.md delete mode 100644 node_modules/unset-value/index.js delete mode 100644 node_modules/unset-value/node_modules/has-value/LICENSE delete mode 100644 node_modules/unset-value/node_modules/has-value/README.md delete mode 100644 node_modules/unset-value/node_modules/has-value/index.js delete mode 100644 node_modules/unset-value/node_modules/has-value/node_modules/isobject/LICENSE delete mode 100644 node_modules/unset-value/node_modules/has-value/node_modules/isobject/README.md delete mode 100644 node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js delete mode 100644 node_modules/unset-value/node_modules/has-value/node_modules/isobject/package.json delete mode 100644 node_modules/unset-value/node_modules/has-value/package.json delete mode 100644 node_modules/unset-value/node_modules/has-values/LICENSE delete mode 100644 node_modules/unset-value/node_modules/has-values/README.md delete mode 100644 node_modules/unset-value/node_modules/has-values/index.js delete mode 100644 node_modules/unset-value/node_modules/has-values/package.json delete mode 100644 node_modules/unset-value/package.json delete mode 100644 node_modules/urix/.jshintrc delete mode 100644 node_modules/urix/LICENSE delete mode 100644 node_modules/urix/index.js delete mode 100644 node_modules/urix/package.json delete mode 100644 node_modules/urix/readme.md delete mode 100644 node_modules/urix/test/index.js delete mode 100644 node_modules/use/LICENSE delete mode 100644 node_modules/use/README.md delete mode 100644 node_modules/use/index.js delete mode 100644 node_modules/use/package.json delete mode 100644 node_modules/util-deprecate/History.md delete mode 100644 node_modules/util-deprecate/LICENSE delete mode 100644 node_modules/util-deprecate/README.md delete mode 100644 node_modules/util-deprecate/browser.js delete mode 100644 node_modules/util-deprecate/node.js delete mode 100644 node_modules/util-deprecate/package.json delete mode 100644 node_modules/warning-symbol/LICENSE delete mode 100644 node_modules/warning-symbol/README.md delete mode 100644 node_modules/warning-symbol/index.js delete mode 100644 node_modules/warning-symbol/package.json delete mode 100644 node_modules/wordwrap/LICENSE delete mode 100644 node_modules/wordwrap/README.markdown delete mode 100644 node_modules/wordwrap/example/center.js delete mode 100644 node_modules/wordwrap/example/meat.js delete mode 100644 node_modules/wordwrap/index.js delete mode 100644 node_modules/wordwrap/package.json delete mode 100644 node_modules/wordwrap/test/break.js delete mode 100644 node_modules/wordwrap/test/idleness.txt delete mode 100644 node_modules/wordwrap/test/wrap.js delete mode 100644 node_modules/wrappy/LICENSE delete mode 100644 node_modules/wrappy/README.md delete mode 100644 node_modules/wrappy/package.json delete mode 100644 node_modules/wrappy/wrappy.js delete mode 100644 node_modules/xtend/.jshintrc delete mode 100644 node_modules/xtend/LICENSE delete mode 100644 node_modules/xtend/README.md delete mode 100644 node_modules/xtend/immutable.js delete mode 100644 node_modules/xtend/mutable.js delete mode 100644 node_modules/xtend/package.json delete mode 100644 node_modules/xtend/test.js delete mode 100644 node_modules/year/.gitattributes delete mode 100644 node_modules/year/.jshintrc delete mode 100644 node_modules/year/.npmignore delete mode 100644 node_modules/year/.verb.md delete mode 100644 node_modules/year/LICENSE-MIT delete mode 100644 node_modules/year/README.md delete mode 100644 node_modules/year/index.js delete mode 100644 node_modules/year/package.json delete mode 100644 node_modules/year/test.js diff --git a/node_modules/.bin/atob b/node_modules/.bin/atob deleted file mode 100644 index 59a6bf059..000000000 --- a/node_modules/.bin/atob +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../atob/bin/atob.js" "$@" - ret=$? -else - node "$basedir/../atob/bin/atob.js" "$@" - ret=$? -fi -exit $ret diff --git a/node_modules/.bin/atob.cmd b/node_modules/.bin/atob.cmd deleted file mode 100644 index b0df169ac..000000000 --- a/node_modules/.bin/atob.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO off -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -"%_prog%" "%dp0%\..\atob\bin\atob.js" %* -ENDLOCAL -EXIT /b %errorlevel% -:find_dp0 -SET dp0=%~dp0 -EXIT /b diff --git a/node_modules/.bin/atob.ps1 b/node_modules/.bin/atob.ps1 deleted file mode 100644 index d276879f0..000000000 --- a/node_modules/.bin/atob.ps1 +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -} -$ret=0 -if (Test-Path "$basedir/node$exe") { - & "$basedir/node$exe" "$basedir/../atob/bin/atob.js" $args - $ret=$LASTEXITCODE -} else { - & "node$exe" "$basedir/../atob/bin/atob.js" $args - $ret=$LASTEXITCODE -} -exit $ret diff --git a/node_modules/.bin/handlebars b/node_modules/.bin/handlebars deleted file mode 100644 index d0b93007c..000000000 --- a/node_modules/.bin/handlebars +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../handlebars/bin/handlebars" "$@" - ret=$? -else - node "$basedir/../handlebars/bin/handlebars" "$@" - ret=$? -fi -exit $ret diff --git a/node_modules/.bin/handlebars.cmd b/node_modules/.bin/handlebars.cmd deleted file mode 100644 index a57eb7425..000000000 --- a/node_modules/.bin/handlebars.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO off -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -"%_prog%" "%dp0%\..\handlebars\bin\handlebars" %* -ENDLOCAL -EXIT /b %errorlevel% -:find_dp0 -SET dp0=%~dp0 -EXIT /b diff --git a/node_modules/.bin/handlebars.ps1 b/node_modules/.bin/handlebars.ps1 deleted file mode 100644 index 5a1ede3c5..000000000 --- a/node_modules/.bin/handlebars.ps1 +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -} -$ret=0 -if (Test-Path "$basedir/node$exe") { - & "$basedir/node$exe" "$basedir/../handlebars/bin/handlebars" $args - $ret=$LASTEXITCODE -} else { - & "node$exe" "$basedir/../handlebars/bin/handlebars" $args - $ret=$LASTEXITCODE -} -exit $ret diff --git a/node_modules/.bin/remarkable b/node_modules/.bin/remarkable deleted file mode 100644 index 4952a0965..000000000 --- a/node_modules/.bin/remarkable +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../remarkable/bin/remarkable.js" "$@" - ret=$? -else - node "$basedir/../remarkable/bin/remarkable.js" "$@" - ret=$? -fi -exit $ret diff --git a/node_modules/.bin/remarkable.cmd b/node_modules/.bin/remarkable.cmd deleted file mode 100644 index 21db463f7..000000000 --- a/node_modules/.bin/remarkable.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO off -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -"%_prog%" "%dp0%\..\remarkable\bin\remarkable.js" %* -ENDLOCAL -EXIT /b %errorlevel% -:find_dp0 -SET dp0=%~dp0 -EXIT /b diff --git a/node_modules/.bin/remarkable.ps1 b/node_modules/.bin/remarkable.ps1 deleted file mode 100644 index 2ab21b1c9..000000000 --- a/node_modules/.bin/remarkable.ps1 +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -} -$ret=0 -if (Test-Path "$basedir/node$exe") { - & "$basedir/node$exe" "$basedir/../remarkable/bin/remarkable.js" $args - $ret=$LASTEXITCODE -} else { - & "node$exe" "$basedir/../remarkable/bin/remarkable.js" $args - $ret=$LASTEXITCODE -} -exit $ret diff --git a/node_modules/.bin/uglifyjs b/node_modules/.bin/uglifyjs deleted file mode 100644 index 8aa695c41..000000000 --- a/node_modules/.bin/uglifyjs +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../uglify-js/bin/uglifyjs" "$@" - ret=$? -else - node "$basedir/../uglify-js/bin/uglifyjs" "$@" - ret=$? -fi -exit $ret diff --git a/node_modules/.bin/uglifyjs.cmd b/node_modules/.bin/uglifyjs.cmd deleted file mode 100644 index ad74c56b9..000000000 --- a/node_modules/.bin/uglifyjs.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO off -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -"%_prog%" "%dp0%\..\uglify-js\bin\uglifyjs" %* -ENDLOCAL -EXIT /b %errorlevel% -:find_dp0 -SET dp0=%~dp0 -EXIT /b diff --git a/node_modules/.bin/uglifyjs.ps1 b/node_modules/.bin/uglifyjs.ps1 deleted file mode 100644 index e6749c733..000000000 --- a/node_modules/.bin/uglifyjs.ps1 +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -} -$ret=0 -if (Test-Path "$basedir/node$exe") { - & "$basedir/node$exe" "$basedir/../uglify-js/bin/uglifyjs" $args - $ret=$LASTEXITCODE -} else { - & "node$exe" "$basedir/../uglify-js/bin/uglifyjs" $args - $ret=$LASTEXITCODE -} -exit $ret diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index 56a1ced35..000000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,2525 +0,0 @@ -{ - "name": "typescript-action", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "node_modules/@actions/core": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz", - "integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==" - }, - "node_modules/@actions/github": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-4.0.0.tgz", - "integrity": "sha512-Ej/Y2E+VV6sR9X7pWL5F3VgEWrABaT292DRqRU6R4hnQjPtC/zD3nagxVdXWiRQvYDh8kHXo7IDmG42eJ/dOMA==", - "dependencies": { - "@actions/http-client": "^1.0.8", - "@octokit/core": "^3.0.0", - "@octokit/plugin-paginate-rest": "^2.2.3", - "@octokit/plugin-rest-endpoint-methods": "^4.0.0" - } - }, - "node_modules/@actions/http-client": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.9.tgz", - "integrity": "sha512-0O4SsJ7q+MK0ycvXPl2e6bMXV7dxAXOGjrXS1eTF9s2S401Tp6c/P3c3Joz04QefC1J6Gt942Wl2jbm3f4mLcg==", - "dependencies": { - "tunnel": "0.0.6" - } - }, - "node_modules/@octokit/auth-token": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz", - "integrity": "sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q==", - "dependencies": { - "@octokit/types": "^6.0.0" - } - }, - "node_modules/@octokit/core": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz", - "integrity": "sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg==", - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.4.12", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.1.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/endpoint": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.10.tgz", - "integrity": "sha512-9+Xef8nT7OKZglfkOMm7IL6VwxXUQyR7DUSU0LH/F7VNqs8vyd7es5pTfz9E7DwUIx7R3pGscxu1EBhYljyu7Q==", - "dependencies": { - "@octokit/types": "^6.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/endpoint/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@octokit/graphql": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.8.tgz", - "integrity": "sha512-WnCtNXWOrupfPJgXe+vSmprZJUr0VIu14G58PMlkWGj3cH+KLZEfKMmbUQ6C3Wwx6fdhzVW1CD5RTnBdUHxhhA==", - "dependencies": { - "@octokit/request": "^5.3.0", - "@octokit/types": "^6.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-2.0.1.tgz", - "integrity": "sha512-9AuC04PUnZrjoLiw3uPtwGh9FE4Q3rTqs51oNlQ0rkwgE8ftYsOC+lsrQyvCvWm85smBbSc0FNRKKumvGyb44Q==" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.6.2.tgz", - "integrity": "sha512-3Dy7/YZAwdOaRpGQoNHPeT0VU1fYLpIUdPyvR37IyFLgd6XSij4j9V/xN/+eSjF2KKvmfIulEh9LF1tRPjIiDA==", - "dependencies": { - "@octokit/types": "^6.0.1" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.4.1.tgz", - "integrity": "sha512-+v5PcvrUcDeFXf8hv1gnNvNLdm4C0+2EiuWt9EatjjUmfriM1pTMM+r4j1lLHxeBQ9bVDmbywb11e3KjuavieA==", - "dependencies": { - "@octokit/types": "^6.1.0", - "deprecation": "^2.3.1" - } - }, - "node_modules/@octokit/request": { - "version": "5.4.12", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.12.tgz", - "integrity": "sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg==", - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "once": "^1.4.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/request-error": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.4.tgz", - "integrity": "sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA==", - "dependencies": { - "@octokit/types": "^6.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@octokit/request/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@octokit/types": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.1.2.tgz", - "integrity": "sha512-LPCpcLbcky7fWfHCTuc7tMiSHFpFlrThJqVdaHgowBTMS0ijlZFfonQC/C1PrZOjD4xRCYgBqH9yttEATGE/nw==", - "dependencies": { - "@octokit/openapi-types": "^2.0.1", - "@types/node": ">= 8" - } - }, - "node_modules/@types/node": { - "version": "14.14.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==" - }, - "node_modules/ansi-bgblack": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz", - "integrity": "sha1-poulAHiHcBtqr74/oNrf36juPKI=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgblue": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz", - "integrity": "sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgcyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz", - "integrity": "sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bggreen": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz", - "integrity": "sha1-TjGRJIUplD9DIelr8THRwTgWr0k=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgmagenta": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz", - "integrity": "sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgred": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgred/-/ansi-bgred-0.1.1.tgz", - "integrity": "sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgwhite": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz", - "integrity": "sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgyellow": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz", - "integrity": "sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-black": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-black/-/ansi-black-0.1.1.tgz", - "integrity": "sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-blue": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-blue/-/ansi-blue-0.1.1.tgz", - "integrity": "sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bold": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bold/-/ansi-bold-0.1.1.tgz", - "integrity": "sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-dim": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-dim/-/ansi-dim-0.1.1.tgz", - "integrity": "sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-green": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", - "integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-grey": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-grey/-/ansi-grey-0.1.1.tgz", - "integrity": "sha1-WdmLasK6GfilF5jphT+6eDOaM8E=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-hidden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-hidden/-/ansi-hidden-0.1.1.tgz", - "integrity": "sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-inverse": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-inverse/-/ansi-inverse-0.1.1.tgz", - "integrity": "sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-italic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-italic/-/ansi-italic-0.1.1.tgz", - "integrity": "sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-magenta": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-magenta/-/ansi-magenta-0.1.1.tgz", - "integrity": "sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-reset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-reset/-/ansi-reset-0.1.1.tgz", - "integrity": "sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-strikethrough": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz", - "integrity": "sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-underline": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-underline/-/ansi-underline-0.1.1.tgz", - "integrity": "sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-white": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-white/-/ansi-white-0.1.1.tgz", - "integrity": "sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-yellow": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz", - "integrity": "sha1-y5NW8vRscy8OMZnmEClVp32oPB0=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-0.1.4.tgz", - "integrity": "sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ==", - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autolinker": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", - "integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", - "dependencies": { - "gulp-header": "^1.7.1" - } - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/before-after-hook": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", - "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==" - }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/concat-with-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/create-frame": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/create-frame/-/create-frame-1.0.0.tgz", - "integrity": "sha1-i5XyaR4ySbYIBEPjPQutn49pdao=", - "dependencies": { - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "isobject": "^3.0.0", - "lazy-cache": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/create-frame/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/create-frame/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/date.js": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/date.js/-/date.js-0.3.3.tgz", - "integrity": "sha512-HgigOS3h3k6HnW011nAb43c5xx5rBXk8P2v/WIT9Zv4koIaVXiH2BURguI78VVp+5Qc076T7OR378JViCnZtBw==", - "dependencies": { - "debug": "~3.1.0" - } - }, - "node_modules/date.js/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/date.js/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-compare/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" - }, - "node_modules/error-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz", - "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/falsey": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/falsey/-/falsey-0.3.2.tgz", - "integrity": "sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg==", - "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/falsey/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-object": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/get-object/-/get-object-0.2.0.tgz", - "integrity": "sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw=", - "dependencies": { - "is-number": "^2.0.2", - "isobject": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-object/node_modules/is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-object/node_modules/isobject": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-0.2.0.tgz", - "integrity": "sha1-o0MhkvObkQtfAsyYlIeDbscKqF4=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-object/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-header": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", - "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", - "dependencies": { - "concat-with-sourcemaps": "*", - "lodash.template": "^4.4.0", - "through2": "^2.0.0" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars-helper-create-frame": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/handlebars-helper-create-frame/-/handlebars-helper-create-frame-0.1.0.tgz", - "integrity": "sha1-iqUdEK62QI/MZgXUDXc1YohIegM=", - "dependencies": { - "create-frame": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/handlebars-helpers": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/handlebars-helpers/-/handlebars-helpers-0.10.0.tgz", - "integrity": "sha512-QiyhQz58u/DbuV41VnfpE0nhy6YCH4vB514ajysV8SoKmP+DxU+pR+fahVyNECHj+jiwEN2VrvxD/34/yHaLUg==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-sort": "^0.1.4", - "create-frame": "^1.0.0", - "define-property": "^1.0.0", - "falsey": "^0.3.2", - "for-in": "^1.0.2", - "for-own": "^1.0.0", - "get-object": "^0.2.0", - "get-value": "^2.0.6", - "handlebars": "^4.0.11", - "handlebars-helper-create-frame": "^0.1.0", - "handlebars-utils": "^1.0.6", - "has-value": "^1.0.0", - "helper-date": "^1.0.1", - "helper-markdown": "^1.0.0", - "helper-md": "^0.2.2", - "html-tag": "^2.0.0", - "is-even": "^1.0.0", - "is-glob": "^4.0.0", - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "lazy-cache": "^2.0.2", - "logging-helpers": "^1.0.0", - "micromatch": "^3.1.4", - "relative": "^3.0.2", - "striptags": "^3.1.0", - "to-gfm-code-block": "^0.1.1", - "year": "^0.2.1" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/handlebars-helpers/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/handlebars-helpers/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/handlebars-helpers/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/handlebars-helpers/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/handlebars-helpers/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/handlebars-utils": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/handlebars-utils/-/handlebars-utils-1.0.6.tgz", - "integrity": "sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw==", - "dependencies": { - "kind-of": "^6.0.0", - "typeof-article": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/helper-date": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/helper-date/-/helper-date-1.0.1.tgz", - "integrity": "sha512-wU3VOwwTJvGr/w5rZr3cprPHO+hIhlblTJHD6aFBrKLuNbf4lAmkawd2iK3c6NbJEvY7HAmDpqjOFSI5/+Ey2w==", - "dependencies": { - "date.js": "^0.3.1", - "handlebars-utils": "^1.0.4", - "moment": "^2.18.1" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/helper-markdown": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/helper-markdown/-/helper-markdown-1.0.0.tgz", - "integrity": "sha512-AnDqMS4ejkQK0MXze7pA9TM3pu01ZY+XXsES6gEE0RmCGk5/NIfvTn0NmItfyDOjRAzyo9z6X7YHbHX4PzIvOA==", - "dependencies": { - "handlebars-utils": "^1.0.2", - "highlight.js": "^9.12.0", - "remarkable": "^1.7.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/helper-md": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/helper-md/-/helper-md-0.2.2.tgz", - "integrity": "sha1-wfWdflW7riM2L9ig6XFgeuxp1B8=", - "dependencies": { - "ent": "^2.2.0", - "extend-shallow": "^2.0.1", - "fs-exists-sync": "^0.1.0", - "remarkable": "^1.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/helper-md/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/highlight.js": { - "version": "9.18.5", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", - "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==", - "engines": { - "node": "*" - } - }, - "node_modules/html-tag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tag/-/html-tag-2.0.0.tgz", - "integrity": "sha512-XxzooSo6oBoxBEUazgjdXj7VwTn/iSTSZzTYKzYY6I916tkaYzypHxy+pbVU1h+0UQ9JlVf5XkNQyxOAiiQO1g==", - "dependencies": { - "is-self-closing": "^1.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/info-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz", - "integrity": "sha1-J4QdcoZ920JCzWEtecEGM4gcang=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-even": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-even/-/is-even-1.0.0.tgz", - "integrity": "sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY=", - "dependencies": { - "is-odd": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-odd": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-0.1.2.tgz", - "integrity": "sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc=", - "dependencies": { - "is-number": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-self-closing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-self-closing/-/is-self-closing-1.0.1.tgz", - "integrity": "sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg==", - "dependencies": { - "self-closing-tags": "^1.0.1" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dependencies": { - "set-getter": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" - }, - "node_modules/lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dependencies": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "node_modules/log-ok": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/log-ok/-/log-ok-0.1.1.tgz", - "integrity": "sha1-vqPdNqzQuKckDXhza1uXxlREozQ=", - "dependencies": { - "ansi-green": "^0.1.1", - "success-symbol": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/log-utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.2.1.tgz", - "integrity": "sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=", - "dependencies": { - "ansi-colors": "^0.2.0", - "error-symbol": "^0.1.0", - "info-symbol": "^0.1.0", - "log-ok": "^0.1.1", - "success-symbol": "^0.1.0", - "time-stamp": "^1.0.1", - "warning-symbol": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/log-utils/node_modules/ansi-colors": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.2.0.tgz", - "integrity": "sha1-csMd4qDZoszQysMMyYI+6y9kNLU=", - "dependencies": { - "ansi-bgblack": "^0.1.1", - "ansi-bgblue": "^0.1.1", - "ansi-bgcyan": "^0.1.1", - "ansi-bggreen": "^0.1.1", - "ansi-bgmagenta": "^0.1.1", - "ansi-bgred": "^0.1.1", - "ansi-bgwhite": "^0.1.1", - "ansi-bgyellow": "^0.1.1", - "ansi-black": "^0.1.1", - "ansi-blue": "^0.1.1", - "ansi-bold": "^0.1.1", - "ansi-cyan": "^0.1.1", - "ansi-dim": "^0.1.1", - "ansi-gray": "^0.1.1", - "ansi-green": "^0.1.1", - "ansi-grey": "^0.1.1", - "ansi-hidden": "^0.1.1", - "ansi-inverse": "^0.1.1", - "ansi-italic": "^0.1.1", - "ansi-magenta": "^0.1.1", - "ansi-red": "^0.1.1", - "ansi-reset": "^0.1.1", - "ansi-strikethrough": "^0.1.1", - "ansi-underline": "^0.1.1", - "ansi-white": "^0.1.1", - "ansi-yellow": "^0.1.1", - "lazy-cache": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/logging-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/logging-helpers/-/logging-helpers-1.0.0.tgz", - "integrity": "sha512-qyIh2goLt1sOgQQrrIWuwkRjUx4NUcEqEGAcYqD8VOnOC6ItwkrVE8/tA4smGpjzyp4Svhc6RodDp9IO5ghpyA==", - "dependencies": { - "isobject": "^3.0.0", - "log-utils": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", - "engines": { - "node": "*" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/relative": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/relative/-/relative-3.0.2.tgz", - "integrity": "sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=", - "dependencies": { - "isobject": "^2.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/relative/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remarkable": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz", - "integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==", - "dependencies": { - "argparse": "^1.0.10", - "autolinker": "~0.28.0" - }, - "bin": { - "remarkable": "bin/remarkable.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/self-closing-tags": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/self-closing-tags/-/self-closing-tags-1.0.1.tgz", - "integrity": "sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/set-getter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "dependencies": { - "to-object-path": "^0.3.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dependencies": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/striptags": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz", - "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=" - }, - "node_modules/success-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", - "integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-gfm-code-block": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz", - "integrity": "sha1-JdBFpfrlUxielje1kJANpzLYqoI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/typeof-article": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/typeof-article/-/typeof-article-0.1.1.tgz", - "integrity": "sha1-nwfnM8P7tkb/qeYcCN66zUYOBq8=", - "dependencies": { - "kind-of": "^3.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/typeof-article/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglify-js": { - "version": "3.12.8", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.8.tgz", - "integrity": "sha512-fvBeuXOsvqjecUtF/l1dwsrrf5y2BCUk9AOJGzGcm6tE7vegku5u/YvqjyDaAGr422PLoLnrxg3EnRvTqsdC1w==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/warning-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz", - "integrity": "sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/year": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/year/-/year-0.2.1.tgz", - "integrity": "sha1-QIOuUgoxiyPshgN/MADLiSvfm7A=", - "engines": { - "node": ">=0.8" - } - } - } -} diff --git a/node_modules/@actions/core/LICENSE.md b/node_modules/@actions/core/LICENSE.md deleted file mode 100644 index dbae2edb2..000000000 --- a/node_modules/@actions/core/LICENSE.md +++ /dev/null @@ -1,9 +0,0 @@ -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@actions/core/README.md b/node_modules/@actions/core/README.md deleted file mode 100644 index 95428cf33..000000000 --- a/node_modules/@actions/core/README.md +++ /dev/null @@ -1,147 +0,0 @@ -# `@actions/core` - -> Core functions for setting results, logging, registering secrets and exporting variables across actions - -## Usage - -### Import the package - -```js -// javascript -const core = require('@actions/core'); - -// typescript -import * as core from '@actions/core'; -``` - -#### Inputs/Outputs - -Action inputs can be read with `getInput`. Outputs can be set with `setOutput` which makes them available to be mapped into inputs of other actions to ensure they are decoupled. - -```js -const myInput = core.getInput('inputName', { required: true }); - -core.setOutput('outputKey', 'outputVal'); -``` - -#### Exporting variables - -Since each step runs in a separate process, you can use `exportVariable` to add it to this step and future steps environment blocks. - -```js -core.exportVariable('envVar', 'Val'); -``` - -#### Setting a secret - -Setting a secret registers the secret with the runner to ensure it is masked in logs. - -```js -core.setSecret('myPassword'); -``` - -#### PATH Manipulation - -To make a tool's path available in the path for the remainder of the job (without altering the machine or containers state), use `addPath`. The runner will prepend the path given to the jobs PATH. - -```js -core.addPath('/path/to/mytool'); -``` - -#### Exit codes - -You should use this library to set the failing exit code for your action. If status is not set and the script runs to completion, that will lead to a success. - -```js -const core = require('@actions/core'); - -try { - // Do stuff -} -catch (err) { - // setFailed logs the message and sets a failing exit code - core.setFailed(`Action failed with error ${err}`); -} - -Note that `setNeutral` is not yet implemented in actions V2 but equivalent functionality is being planned. - -``` - -#### Logging - -Finally, this library provides some utilities for logging. Note that debug logging is hidden from the logs by default. This behavior can be toggled by enabling the [Step Debug Logs](../../docs/action-debugging.md#step-debug-logs). - -```js -const core = require('@actions/core'); - -const myInput = core.getInput('input'); -try { - core.debug('Inside try block'); - - if (!myInput) { - core.warning('myInput was not set'); - } - - if (core.isDebug()) { - // curl -v https://github.com - } else { - // curl https://github.com - } - - // Do stuff - core.info('Output to the actions build log') -} -catch (err) { - core.error(`Error ${err}, action may still succeed though`); -} -``` - -This library can also wrap chunks of output in foldable groups. - -```js -const core = require('@actions/core') - -// Manually wrap output -core.startGroup('Do some function') -doSomeFunction() -core.endGroup() - -// Wrap an asynchronous function call -const result = await core.group('Do something async', async () => { - const response = await doSomeHTTPRequest() - return response -}) -``` - -#### Action state - -You can use this library to save state and get state for sharing information between a given wrapper action: - -**action.yml** -```yaml -name: 'Wrapper action sample' -inputs: - name: - default: 'GitHub' -runs: - using: 'node12' - main: 'main.js' - post: 'cleanup.js' -``` - -In action's `main.js`: - -```js -const core = require('@actions/core'); - -core.saveState("pidToKill", 12345); -``` - -In action's `cleanup.js`: -```js -const core = require('@actions/core'); - -var pid = core.getState("pidToKill"); - -process.kill(pid); -``` diff --git a/node_modules/@actions/core/lib/command.d.ts b/node_modules/@actions/core/lib/command.d.ts deleted file mode 100644 index 89eff6687..000000000 --- a/node_modules/@actions/core/lib/command.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -interface CommandProperties { - [key: string]: any; -} -/** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ -export declare function issueCommand(command: string, properties: CommandProperties, message: any): void; -export declare function issue(name: string, message?: string): void; -export {}; diff --git a/node_modules/@actions/core/lib/command.js b/node_modules/@actions/core/lib/command.js deleted file mode 100644 index 10bf3ebbb..000000000 --- a/node_modules/@actions/core/lib/command.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const os = __importStar(require("os")); -const utils_1 = require("./utils"); -/** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ -function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); -} -exports.issueCommand = issueCommand; -function issue(name, message = '') { - issueCommand(name, {}, message); -} -exports.issue = issue; -const CMD_STRING = '::'; -class Command { - constructor(command, properties, message) { - if (!command) { - command = 'missing.command'; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += ' '; - let first = true; - for (const key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } - else { - cmdStr += ','; - } - cmdStr += `${key}=${escapeProperty(val)}`; - } - } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; - } -} -function escapeData(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A'); -} -function escapeProperty(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A') - .replace(/:/g, '%3A') - .replace(/,/g, '%2C'); -} -//# sourceMappingURL=command.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/command.js.map b/node_modules/@actions/core/lib/command.js.map deleted file mode 100644 index a95b303bd..000000000 --- a/node_modules/@actions/core/lib/command.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAAwB;AACxB,mCAAsC;AAWtC;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC;AAPD,oCAOC;AAED,SAAgB,KAAK,CAAC,IAAY,EAAE,UAAkB,EAAE;IACtD,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAFD,sBAEC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB,MAAM,OAAO;IAKX,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe;QACzE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,iBAAiB,CAAA;SAC5B;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAA;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,GAAG,CAAA;YACb,IAAI,KAAK,GAAG,IAAI,CAAA;YAChB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;oBAChC,IAAI,GAAG,EAAE;wBACP,IAAI,KAAK,EAAE;4BACT,KAAK,GAAG,KAAK,CAAA;yBACd;6BAAM;4BACL,MAAM,IAAI,GAAG,CAAA;yBACd;wBAED,MAAM,IAAI,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;qBAC1C;iBACF;aACF;SACF;QAED,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;QACpD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,UAAU,CAAC,CAAM;IACxB,OAAO,sBAAc,CAAC,CAAC,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,CAAM;IAC5B,OAAO,sBAAc,CAAC,CAAC,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/core.d.ts b/node_modules/@actions/core/lib/core.d.ts deleted file mode 100644 index 8bb5093c5..000000000 --- a/node_modules/@actions/core/lib/core.d.ts +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Interface for getInput options - */ -export interface InputOptions { - /** Optional. Whether the input is required. If required and not present, will throw. Defaults to false */ - required?: boolean; -} -/** - * The code to exit an action - */ -export declare enum ExitCode { - /** - * A code indicating that the action was successful - */ - Success = 0, - /** - * A code indicating that the action was a failure - */ - Failure = 1 -} -/** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ -export declare function exportVariable(name: string, val: any): void; -/** - * Registers a secret which will get masked from logs - * @param secret value of the secret - */ -export declare function setSecret(secret: string): void; -/** - * Prepends inputPath to the PATH (for this action and future actions) - * @param inputPath - */ -export declare function addPath(inputPath: string): void; -/** - * Gets the value of an input. The value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ -export declare function getInput(name: string, options?: InputOptions): string; -/** - * Sets the value of an output. - * - * @param name name of the output to set - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -export declare function setOutput(name: string, value: any): void; -/** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. - * - */ -export declare function setCommandEcho(enabled: boolean): void; -/** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ -export declare function setFailed(message: string | Error): void; -/** - * Gets whether Actions Step Debug is on or not - */ -export declare function isDebug(): boolean; -/** - * Writes debug message to user log - * @param message debug message - */ -export declare function debug(message: string): void; -/** - * Adds an error issue - * @param message error issue message. Errors will be converted to string via toString() - */ -export declare function error(message: string | Error): void; -/** - * Adds an warning issue - * @param message warning issue message. Errors will be converted to string via toString() - */ -export declare function warning(message: string | Error): void; -/** - * Writes info to log with console.log. - * @param message info message - */ -export declare function info(message: string): void; -/** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ -export declare function startGroup(name: string): void; -/** - * End an output group. - */ -export declare function endGroup(): void; -/** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. - * - * @param name The name of the group - * @param fn The function to wrap in the group - */ -export declare function group(name: string, fn: () => Promise): Promise; -/** - * Saves state for current action, the state can only be retrieved by this action's post job execution. - * - * @param name name of the state to store - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -export declare function saveState(name: string, value: any): void; -/** - * Gets the value of an state set by this action's main execution. - * - * @param name name of the state to get - * @returns string - */ -export declare function getState(name: string): string; diff --git a/node_modules/@actions/core/lib/core.js b/node_modules/@actions/core/lib/core.js deleted file mode 100644 index 8b3311081..000000000 --- a/node_modules/@actions/core/lib/core.js +++ /dev/null @@ -1,238 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const command_1 = require("./command"); -const file_command_1 = require("./file-command"); -const utils_1 = require("./utils"); -const os = __importStar(require("os")); -const path = __importStar(require("path")); -/** - * The code to exit an action - */ -var ExitCode; -(function (ExitCode) { - /** - * A code indicating that the action was successful - */ - ExitCode[ExitCode["Success"] = 0] = "Success"; - /** - * A code indicating that the action was a failure - */ - ExitCode[ExitCode["Failure"] = 1] = "Failure"; -})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); -//----------------------------------------------------------------------- -// Variables -//----------------------------------------------------------------------- -/** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env['GITHUB_ENV'] || ''; - if (filePath) { - const delimiter = '_GitHubActionsFileCommandDelimeter_'; - const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; - file_command_1.issueCommand('ENV', commandValue); - } - else { - command_1.issueCommand('set-env', { name }, convertedVal); - } -} -exports.exportVariable = exportVariable; -/** - * Registers a secret which will get masked from logs - * @param secret value of the secret - */ -function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); -} -exports.setSecret = setSecret; -/** - * Prepends inputPath to the PATH (for this action and future actions) - * @param inputPath - */ -function addPath(inputPath) { - const filePath = process.env['GITHUB_PATH'] || ''; - if (filePath) { - file_command_1.issueCommand('PATH', inputPath); - } - else { - command_1.issueCommand('add-path', {}, inputPath); - } - process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; -} -exports.addPath = addPath; -/** - * Gets the value of an input. The value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ -function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); - } - return val.trim(); -} -exports.getInput = getInput; -/** - * Sets the value of an output. - * - * @param name name of the output to set - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function setOutput(name, value) { - command_1.issueCommand('set-output', { name }, value); -} -exports.setOutput = setOutput; -/** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. - * - */ -function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); -} -exports.setCommandEcho = setCommandEcho; -//----------------------------------------------------------------------- -// Results -//----------------------------------------------------------------------- -/** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ -function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); -} -exports.setFailed = setFailed; -//----------------------------------------------------------------------- -// Logging Commands -//----------------------------------------------------------------------- -/** - * Gets whether Actions Step Debug is on or not - */ -function isDebug() { - return process.env['RUNNER_DEBUG'] === '1'; -} -exports.isDebug = isDebug; -/** - * Writes debug message to user log - * @param message debug message - */ -function debug(message) { - command_1.issueCommand('debug', {}, message); -} -exports.debug = debug; -/** - * Adds an error issue - * @param message error issue message. Errors will be converted to string via toString() - */ -function error(message) { - command_1.issue('error', message instanceof Error ? message.toString() : message); -} -exports.error = error; -/** - * Adds an warning issue - * @param message warning issue message. Errors will be converted to string via toString() - */ -function warning(message) { - command_1.issue('warning', message instanceof Error ? message.toString() : message); -} -exports.warning = warning; -/** - * Writes info to log with console.log. - * @param message info message - */ -function info(message) { - process.stdout.write(message + os.EOL); -} -exports.info = info; -/** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ -function startGroup(name) { - command_1.issue('group', name); -} -exports.startGroup = startGroup; -/** - * End an output group. - */ -function endGroup() { - command_1.issue('endgroup'); -} -exports.endGroup = endGroup; -/** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. - * - * @param name The name of the group - * @param fn The function to wrap in the group - */ -function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } - finally { - endGroup(); - } - return result; - }); -} -exports.group = group; -//----------------------------------------------------------------------- -// Wrapper action state -//----------------------------------------------------------------------- -/** - * Saves state for current action, the state can only be retrieved by this action's post job execution. - * - * @param name name of the state to store - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function saveState(name, value) { - command_1.issueCommand('save-state', { name }, value); -} -exports.saveState = saveState; -/** - * Gets the value of an state set by this action's main execution. - * - * @param name name of the state to get - * @returns string - */ -function getState(name) { - return process.env[`STATE_${name}`] || ''; -} -exports.getState = getState; -//# sourceMappingURL=core.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/core.js.map b/node_modules/@actions/core/lib/core.js.map deleted file mode 100644 index 7e7cbcca2..000000000 --- a/node_modules/@actions/core/lib/core.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,uCAA6C;AAC7C,iDAA+D;AAC/D,mCAAsC;AAEtC,uCAAwB;AACxB,2CAA4B;AAU5B;;GAEG;AACH,IAAY,QAUX;AAVD,WAAY,QAAQ;IAClB;;OAEG;IACH,6CAAW,CAAA;IAEX;;OAEG;IACH,6CAAW,CAAA;AACb,CAAC,EAVW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAUnB;AAED,yEAAyE;AACzE,YAAY;AACZ,yEAAyE;AAEzE;;;;GAIG;AACH,8DAA8D;AAC9D,SAAgB,cAAc,CAAC,IAAY,EAAE,GAAQ;IACnD,MAAM,YAAY,GAAG,sBAAc,CAAC,GAAG,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAA;IAEhC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;IAChD,IAAI,QAAQ,EAAE;QACZ,MAAM,SAAS,GAAG,qCAAqC,CAAA;QACvD,MAAM,YAAY,GAAG,GAAG,IAAI,KAAK,SAAS,GAAG,EAAE,CAAC,GAAG,GAAG,YAAY,GAAG,EAAE,CAAC,GAAG,GAAG,SAAS,EAAE,CAAA;QACzF,2BAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;KACtC;SAAM;QACL,sBAAY,CAAC,SAAS,EAAE,EAAC,IAAI,EAAC,EAAE,YAAY,CAAC,CAAA;KAC9C;AACH,CAAC;AAZD,wCAYC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,MAAc;IACtC,sBAAY,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;AACtC,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,SAAiB;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IACjD,IAAI,QAAQ,EAAE;QACZ,2BAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;KACpC;SAAM;QACL,sBAAY,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;KACxC;IACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;AAC7E,CAAC;AARD,0BAQC;AAED;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,OAAsB;IAC3D,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IACrE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAA;KAC5D;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;AACnB,CAAC;AARD,4BAQC;AAED;;;;;GAKG;AACH,8DAA8D;AAC9D,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAU;IAChD,sBAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAC,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAFD,8BAEC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,OAAgB;IAC7C,eAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AACvC,CAAC;AAFD,wCAEC;AAED,yEAAyE;AACzE,UAAU;AACV,yEAAyE;AAEzE;;;;GAIG;AACH,SAAgB,SAAS,CAAC,OAAuB;IAC/C,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAA;IAEnC,KAAK,CAAC,OAAO,CAAC,CAAA;AAChB,CAAC;AAJD,8BAIC;AAED,yEAAyE;AACzE,mBAAmB;AACnB,yEAAyE;AAEzE;;GAEG;AACH,SAAgB,OAAO;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,CAAA;AAC5C,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAe;IACnC,sBAAY,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAuB;IAC3C,eAAK,CAAC,OAAO,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AACzE,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,OAAuB;IAC7C,eAAK,CAAC,SAAS,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AAC3E,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC;AAFD,oBAEC;AAED;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,eAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACtB,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,QAAQ;IACtB,eAAK,CAAC,UAAU,CAAC,CAAA;AACnB,CAAC;AAFD,4BAEC;AAED;;;;;;;GAOG;AACH,SAAsB,KAAK,CAAI,IAAY,EAAE,EAAoB;;QAC/D,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhB,IAAI,MAAS,CAAA;QAEb,IAAI;YACF,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;SACpB;gBAAS;YACR,QAAQ,EAAE,CAAA;SACX;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAZD,sBAYC;AAED,yEAAyE;AACzE,uBAAuB;AACvB,yEAAyE;AAEzE;;;;;GAKG;AACH,8DAA8D;AAC9D,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAU;IAChD,sBAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAC,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAFD,8BAEC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAY;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;AAC3C,CAAC;AAFD,4BAEC"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/file-command.d.ts b/node_modules/@actions/core/lib/file-command.d.ts deleted file mode 100644 index ed408eb13..000000000 --- a/node_modules/@actions/core/lib/file-command.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function issueCommand(command: string, message: any): void; diff --git a/node_modules/@actions/core/lib/file-command.js b/node_modules/@actions/core/lib/file-command.js deleted file mode 100644 index 10783c0c2..000000000 --- a/node_modules/@actions/core/lib/file-command.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -// For internal use, subject to change. -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -const fs = __importStar(require("fs")); -const os = __importStar(require("os")); -const utils_1 = require("./utils"); -function issueCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); - } - fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { - encoding: 'utf8' - }); -} -exports.issueCommand = issueCommand; -//# sourceMappingURL=file-command.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/file-command.js.map b/node_modules/@actions/core/lib/file-command.js.map deleted file mode 100644 index 45fd8c4ba..000000000 --- a/node_modules/@actions/core/lib/file-command.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"file-command.js","sourceRoot":"","sources":["../src/file-command.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;;;;;;;AAEvC,mCAAmC;AACnC,uDAAuD;AAEvD,uCAAwB;AACxB,uCAAwB;AACxB,mCAAsC;AAEtC,SAAgB,YAAY,CAAC,OAAe,EAAE,OAAY;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAA;IACjD,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CACb,wDAAwD,OAAO,EAAE,CAClE,CAAA;KACF;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAA;KACrD;IAED,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,sBAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;QACjE,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAA;AACJ,CAAC;AAdD,oCAcC"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/utils.d.ts b/node_modules/@actions/core/lib/utils.d.ts deleted file mode 100644 index b39c9be98..000000000 --- a/node_modules/@actions/core/lib/utils.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Sanitizes an input into a string so it can be passed into issueCommand safely - * @param input input to sanitize into a string - */ -export declare function toCommandValue(input: any): string; diff --git a/node_modules/@actions/core/lib/utils.js b/node_modules/@actions/core/lib/utils.js deleted file mode 100644 index 97cea339f..000000000 --- a/node_modules/@actions/core/lib/utils.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * Sanitizes an input into a string so it can be passed into issueCommand safely - * @param input input to sanitize into a string - */ -function toCommandValue(input) { - if (input === null || input === undefined) { - return ''; - } - else if (typeof input === 'string' || input instanceof String) { - return input; - } - return JSON.stringify(input); -} -exports.toCommandValue = toCommandValue; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/utils.js.map b/node_modules/@actions/core/lib/utils.js.map deleted file mode 100644 index ce43f037a..000000000 --- a/node_modules/@actions/core/lib/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,mCAAmC;AACnC,uDAAuD;;AAEvD;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAU;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QACzC,OAAO,EAAE,CAAA;KACV;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;QAC/D,OAAO,KAAe,CAAA;KACvB;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAPD,wCAOC"} \ No newline at end of file diff --git a/node_modules/@actions/core/package.json b/node_modules/@actions/core/package.json deleted file mode 100644 index ecd8baf12..000000000 --- a/node_modules/@actions/core/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "_args": [ - [ - "@actions/core@1.2.6", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_from": "@actions/core@1.2.6", - "_id": "@actions/core@1.2.6", - "_inBundle": false, - "_integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==", - "_location": "/@actions/core", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "@actions/core@1.2.6", - "name": "@actions/core", - "escapedName": "@actions%2fcore", - "scope": "@actions", - "rawSpec": "1.2.6", - "saveSpec": null, - "fetchSpec": "1.2.6" - }, - "_requiredBy": [ - "/" - ], - "_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz", - "_spec": "1.2.6", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "bugs": { - "url": "https://github.com/actions/toolkit/issues" - }, - "description": "Actions core lib", - "devDependencies": { - "@types/node": "^12.0.2" - }, - "directories": { - "lib": "lib", - "test": "__tests__" - }, - "files": [ - "lib", - "!.DS_Store" - ], - "homepage": "https://github.com/actions/toolkit/tree/main/packages/core", - "keywords": [ - "github", - "actions", - "core" - ], - "license": "MIT", - "main": "lib/core.js", - "name": "@actions/core", - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/actions/toolkit.git", - "directory": "packages/core" - }, - "scripts": { - "audit-moderate": "npm install && npm audit --json --audit-level=moderate > audit.json", - "test": "echo \"Error: run tests from root\" && exit 1", - "tsc": "tsc" - }, - "types": "lib/core.d.ts", - "version": "1.2.6" -} diff --git a/node_modules/@actions/github/README.md b/node_modules/@actions/github/README.md deleted file mode 100644 index 02e9be077..000000000 --- a/node_modules/@actions/github/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# `@actions/github` - -> A hydrated Octokit client. - -## Usage - -Returns an authenticated Octokit client that follows the machine [proxy settings](https://help.github.com/en/actions/hosting-your-own-runners/using-a-proxy-server-with-self-hosted-runners) and correctly sets GHES base urls. See https://octokit.github.io/rest.js for the API. - -```js -const github = require('@actions/github'); -const core = require('@actions/core'); - -async function run() { - // This should be a token with access to your repository scoped in as a secret. - // The YML workflow will need to set myToken with the GitHub Secret Token - // myToken: ${{ secrets.GITHUB_TOKEN }} - // https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token#about-the-github_token-secret - const myToken = core.getInput('myToken'); - - const octokit = github.getOctokit(myToken) - - // You can also pass in additional options as a second parameter to getOctokit - // const octokit = github.getOctokit(myToken, {userAgent: "MyActionVersion1"}); - - const { data: pullRequest } = await octokit.pulls.get({ - owner: 'octokit', - repo: 'rest.js', - pull_number: 123, - mediaType: { - format: 'diff' - } - }); - - console.log(pullRequest); -} - -run(); -``` - -You can also make GraphQL requests. See https://github.com/octokit/graphql.js for the API. - -```js -const result = await octokit.graphql(query, variables); -``` - -Finally, you can get the context of the current action: - -```js -const github = require('@actions/github'); - -const context = github.context; - -const newIssue = await octokit.issues.create({ - ...context.repo, - title: 'New issue!', - body: 'Hello Universe!' -}); -``` - -## Webhook payload typescript definitions - -The npm module `@octokit/webhooks` provides type definitions for the response payloads. You can cast the payload to these types for better type information. - -First, install the npm module `npm install @octokit/webhooks` - -Then, assert the type based on the eventName -```ts -import * as core from '@actions/core' -import * as github from '@actions/github' -import * as Webhooks from '@octokit/webhooks' -if (github.context.eventName === 'push') { - const pushPayload = github.context.payload as Webhooks.WebhookPayloadPush - core.info(`The head commit is: ${pushPayload.head}`) -} -``` - -## Extending the Octokit instance -`@octokit/core` now supports the [plugin architecture](https://github.com/octokit/core.js#plugins). You can extend the GitHub instance using plugins. - -For example, using the `@octokit/plugin-enterprise-server` you can now access enterprise admin apis on GHES instances. - -```ts -import { GitHub, getOctokitOptions } from '@actions/github/lib/utils' -import { enterpriseServer220Admin } from '@octokit/plugin-enterprise-server' - -const octokit = GitHub.plugin(enterpriseServer220Admin) -// or override some of the default values as well -// const octokit = GitHub.plugin(enterpriseServer220Admin).defaults({userAgent: "MyNewUserAgent"}) - -const myToken = core.getInput('myToken'); -const myOctokit = new octokit(getOctokitOptions(token)) -// Create a new user -myOctokit.enterpriseAdmin.createUser({ - login: "testuser", - email: "testuser@test.com", -}); -``` diff --git a/node_modules/@actions/github/lib/context.d.ts b/node_modules/@actions/github/lib/context.d.ts deleted file mode 100644 index daab690c7..000000000 --- a/node_modules/@actions/github/lib/context.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { WebhookPayload } from './interfaces'; -export declare class Context { - /** - * Webhook payload object that triggered the workflow - */ - payload: WebhookPayload; - eventName: string; - sha: string; - ref: string; - workflow: string; - action: string; - actor: string; - job: string; - runNumber: number; - runId: number; - /** - * Hydrate the context from the environment - */ - constructor(); - get issue(): { - owner: string; - repo: string; - number: number; - }; - get repo(): { - owner: string; - repo: string; - }; -} diff --git a/node_modules/@actions/github/lib/context.js b/node_modules/@actions/github/lib/context.js deleted file mode 100644 index dd4d10a06..000000000 --- a/node_modules/@actions/github/lib/context.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Context = void 0; -const fs_1 = require("fs"); -const os_1 = require("os"); -class Context { - /** - * Hydrate the context from the environment - */ - constructor() { - this.payload = {}; - if (process.env.GITHUB_EVENT_PATH) { - if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) { - this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); - } - else { - const path = process.env.GITHUB_EVENT_PATH; - process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`); - } - } - this.eventName = process.env.GITHUB_EVENT_NAME; - this.sha = process.env.GITHUB_SHA; - this.ref = process.env.GITHUB_REF; - this.workflow = process.env.GITHUB_WORKFLOW; - this.action = process.env.GITHUB_ACTION; - this.actor = process.env.GITHUB_ACTOR; - this.job = process.env.GITHUB_JOB; - this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); - this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); - } - get issue() { - const payload = this.payload; - return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number }); - } - get repo() { - if (process.env.GITHUB_REPOSITORY) { - const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/'); - return { owner, repo }; - } - if (this.payload.repository) { - return { - owner: this.payload.repository.owner.login, - repo: this.payload.repository.name - }; - } - throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); - } -} -exports.Context = Context; -//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/context.js.map b/node_modules/@actions/github/lib/context.js.map deleted file mode 100644 index 9c4eafe1a..000000000 --- a/node_modules/@actions/github/lib/context.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AAEA,2BAA2C;AAC3C,2BAAsB;AAEtB,MAAa,OAAO;IAgBlB;;OAEG;IACH;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,IAAI,eAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CACvB,iBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAChE,CAAA;aACF;iBAAM;gBACL,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;gBAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,kBAAkB,QAAG,EAAE,CAAC,CAAA;aACvE;SACF;QACD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAA2B,CAAA;QACxD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAyB,CAAA;QACrD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAuB,CAAA;QACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAsB,CAAA;QAC/C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAA2B,EAAE,EAAE,CAAC,CAAA;QACtE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAuB,EAAE,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,KAAK;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,uCACK,IAAI,CAAC,IAAI,KACZ,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC,MAAM,IAClE;IACH,CAAC;IAED,IAAI,IAAI;QACN,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9D,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,CAAA;SACrB;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK;gBAC1C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;aACnC,CAAA;SACF;QAED,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;IACH,CAAC;CACF;AApED,0BAoEC"} \ No newline at end of file diff --git a/node_modules/@actions/github/lib/github.d.ts b/node_modules/@actions/github/lib/github.d.ts deleted file mode 100644 index 90c3b985d..000000000 --- a/node_modules/@actions/github/lib/github.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import * as Context from './context'; -import { GitHub } from './utils'; -import { OctokitOptions } from '@octokit/core/dist-types/types'; -export declare const context: Context.Context; -/** - * Returns a hydrated octokit ready to use for GitHub Actions - * - * @param token the repo PAT or GITHUB_TOKEN - * @param options other options to set - */ -export declare function getOctokit(token: string, options?: OctokitOptions): InstanceType; diff --git a/node_modules/@actions/github/lib/github.js b/node_modules/@actions/github/lib/github.js deleted file mode 100644 index e30e81ec6..000000000 --- a/node_modules/@actions/github/lib/github.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getOctokit = exports.context = void 0; -const Context = __importStar(require("./context")); -const utils_1 = require("./utils"); -exports.context = new Context.Context(); -/** - * Returns a hydrated octokit ready to use for GitHub Actions - * - * @param token the repo PAT or GITHUB_TOKEN - * @param options other options to set - */ -function getOctokit(token, options) { - return new utils_1.GitHub(utils_1.getOctokitOptions(token, options)); -} -exports.getOctokit = getOctokit; -//# sourceMappingURL=github.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/github.js.map b/node_modules/@actions/github/lib/github.js.map deleted file mode 100644 index 717d03e85..000000000 --- a/node_modules/@actions/github/lib/github.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,mCAAiD;AAKpC,QAAA,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5C;;;;;GAKG;AACH,SAAgB,UAAU,CACxB,KAAa,EACb,OAAwB;IAExB,OAAO,IAAI,cAAM,CAAC,yBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AACtD,CAAC;AALD,gCAKC"} \ No newline at end of file diff --git a/node_modules/@actions/github/lib/interfaces.d.ts b/node_modules/@actions/github/lib/interfaces.d.ts deleted file mode 100644 index f81033325..000000000 --- a/node_modules/@actions/github/lib/interfaces.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -export interface PayloadRepository { - [key: string]: any; - full_name?: string; - name: string; - owner: { - [key: string]: any; - login: string; - name?: string; - }; - html_url?: string; -} -export interface WebhookPayload { - [key: string]: any; - repository?: PayloadRepository; - issue?: { - [key: string]: any; - number: number; - html_url?: string; - body?: string; - }; - pull_request?: { - [key: string]: any; - number: number; - html_url?: string; - body?: string; - }; - sender?: { - [key: string]: any; - type: string; - }; - action?: string; - installation?: { - id: number; - [key: string]: any; - }; - comment?: { - id: number; - [key: string]: any; - }; -} diff --git a/node_modules/@actions/github/lib/interfaces.js b/node_modules/@actions/github/lib/interfaces.js deleted file mode 100644 index a660b5e30..000000000 --- a/node_modules/@actions/github/lib/interfaces.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict"; -/* eslint-disable @typescript-eslint/no-explicit-any */ -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/interfaces.js.map b/node_modules/@actions/github/lib/interfaces.js.map deleted file mode 100644 index dc2c9609f..000000000 --- a/node_modules/@actions/github/lib/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";AAAA,uDAAuD"} \ No newline at end of file diff --git a/node_modules/@actions/github/lib/internal/utils.d.ts b/node_modules/@actions/github/lib/internal/utils.d.ts deleted file mode 100644 index 5790d91f0..000000000 --- a/node_modules/@actions/github/lib/internal/utils.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -import * as http from 'http'; -import { OctokitOptions } from '@octokit/core/dist-types/types'; -export declare function getAuthString(token: string, options: OctokitOptions): string | undefined; -export declare function getProxyAgent(destinationUrl: string): http.Agent; -export declare function getApiBaseUrl(): string; diff --git a/node_modules/@actions/github/lib/internal/utils.js b/node_modules/@actions/github/lib/internal/utils.js deleted file mode 100644 index 197a441e2..000000000 --- a/node_modules/@actions/github/lib/internal/utils.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0; -const httpClient = __importStar(require("@actions/http-client")); -function getAuthString(token, options) { - if (!token && !options.auth) { - throw new Error('Parameter token or opts.auth is required'); - } - else if (token && options.auth) { - throw new Error('Parameters token and opts.auth may not both be specified'); - } - return typeof options.auth === 'string' ? options.auth : `token ${token}`; -} -exports.getAuthString = getAuthString; -function getProxyAgent(destinationUrl) { - const hc = new httpClient.HttpClient(); - return hc.getAgent(destinationUrl); -} -exports.getProxyAgent = getProxyAgent; -function getApiBaseUrl() { - return process.env['GITHUB_API_URL'] || 'https://api.github.com'; -} -exports.getApiBaseUrl = getApiBaseUrl; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/internal/utils.js.map b/node_modules/@actions/github/lib/internal/utils.js.map deleted file mode 100644 index f1f519d5f..000000000 --- a/node_modules/@actions/github/lib/internal/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/internal/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,iEAAkD;AAGlD,SAAgB,aAAa,CAC3B,KAAa,EACb,OAAuB;IAEvB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;KAC5D;SAAM,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;KAC5E;IAED,OAAO,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAA;AAC3E,CAAC;AAXD,sCAWC;AAED,SAAgB,aAAa,CAAC,cAAsB;IAClD,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,CAAA;IACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AACpC,CAAC;AAHD,sCAGC;AAED,SAAgB,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,wBAAwB,CAAA;AAClE,CAAC;AAFD,sCAEC"} \ No newline at end of file diff --git a/node_modules/@actions/github/lib/utils.d.ts b/node_modules/@actions/github/lib/utils.d.ts deleted file mode 100644 index 0015a35fd..000000000 --- a/node_modules/@actions/github/lib/utils.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as Context from './context'; -import { Octokit } from '@octokit/core'; -import { OctokitOptions } from '@octokit/core/dist-types/types'; -export declare const context: Context.Context; -export declare const GitHub: (new (...args: any[]) => { - [x: string]: any; -}) & { - new (...args: any[]): { - [x: string]: any; - }; - plugins: any[]; -} & typeof Octokit & import("@octokit/core/dist-types/types").Constructor; -/** - * Convience function to correctly format Octokit Options to pass into the constructor. - * - * @param token the repo PAT or GITHUB_TOKEN - * @param options other options to set - */ -export declare function getOctokitOptions(token: string, options?: OctokitOptions): OctokitOptions; diff --git a/node_modules/@actions/github/lib/utils.js b/node_modules/@actions/github/lib/utils.js deleted file mode 100644 index b066c225c..000000000 --- a/node_modules/@actions/github/lib/utils.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getOctokitOptions = exports.GitHub = exports.context = void 0; -const Context = __importStar(require("./context")); -const Utils = __importStar(require("./internal/utils")); -// octokit + plugins -const core_1 = require("@octokit/core"); -const plugin_rest_endpoint_methods_1 = require("@octokit/plugin-rest-endpoint-methods"); -const plugin_paginate_rest_1 = require("@octokit/plugin-paginate-rest"); -exports.context = new Context.Context(); -const baseUrl = Utils.getApiBaseUrl(); -const defaults = { - baseUrl, - request: { - agent: Utils.getProxyAgent(baseUrl) - } -}; -exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(defaults); -/** - * Convience function to correctly format Octokit Options to pass into the constructor. - * - * @param token the repo PAT or GITHUB_TOKEN - * @param options other options to set - */ -function getOctokitOptions(token, options) { - const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller - // Auth - const auth = Utils.getAuthString(token, opts); - if (auth) { - opts.auth = auth; - } - return opts; -} -exports.getOctokitOptions = getOctokitOptions; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/utils.js.map b/node_modules/@actions/github/lib/utils.js.map deleted file mode 100644 index 3a6f6b427..000000000 --- a/node_modules/@actions/github/lib/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,wDAAyC;AAEzC,oBAAoB;AACpB,wCAAqC;AAErC,wFAAyE;AACzE,wEAA0D;AAE7C,QAAA,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAA;AACrC,MAAM,QAAQ,GAAG;IACf,OAAO;IACP,OAAO,EAAE;QACP,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;KACpC;CACF,CAAA;AAEY,QAAA,MAAM,GAAG,cAAO,CAAC,MAAM,CAClC,kDAAmB,EACnB,mCAAY,CACb,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAEpB;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,KAAa,EACb,OAAwB;IAExB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA,CAAC,iEAAiE;IAE/G,OAAO;IACP,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7C,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;KACjB;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAbD,8CAaC"} \ No newline at end of file diff --git a/node_modules/@actions/github/package.json b/node_modules/@actions/github/package.json deleted file mode 100644 index 2d0f1e79a..000000000 --- a/node_modules/@actions/github/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_from": "@actions/github", - "_id": "@actions/github@4.0.0", - "_inBundle": false, - "_integrity": "sha512-Ej/Y2E+VV6sR9X7pWL5F3VgEWrABaT292DRqRU6R4hnQjPtC/zD3nagxVdXWiRQvYDh8kHXo7IDmG42eJ/dOMA==", - "_location": "/@actions/github", - "_phantomChildren": {}, - "_requested": { - "type": "tag", - "registry": true, - "raw": "@actions/github", - "name": "@actions/github", - "escapedName": "@actions%2fgithub", - "scope": "@actions", - "rawSpec": "", - "saveSpec": null, - "fetchSpec": "latest" - }, - "_requiredBy": [ - "#USER", - "/" - ], - "_resolved": "https://registry.npmjs.org/@actions/github/-/github-4.0.0.tgz", - "_shasum": "d520483151a2bf5d2dc9cd0f20f9ac3a2e458816", - "_spec": "@actions/github", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "bugs": { - "url": "https://github.com/actions/toolkit/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@actions/http-client": "^1.0.8", - "@octokit/core": "^3.0.0", - "@octokit/plugin-paginate-rest": "^2.2.3", - "@octokit/plugin-rest-endpoint-methods": "^4.0.0" - }, - "deprecated": false, - "description": "Actions github lib", - "devDependencies": { - "jest": "^25.1.0", - "proxy": "^1.0.1" - }, - "directories": { - "lib": "lib", - "test": "__tests__" - }, - "files": [ - "lib", - "!.DS_Store" - ], - "homepage": "https://github.com/actions/toolkit/tree/master/packages/github", - "keywords": [ - "github", - "actions" - ], - "license": "MIT", - "main": "lib/github.js", - "name": "@actions/github", - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/actions/toolkit.git", - "directory": "packages/github" - }, - "scripts": { - "audit-moderate": "npm install && npm audit --audit-level=moderate", - "build": "tsc", - "format": "prettier --write **/*.ts", - "format-check": "prettier --check **/*.ts", - "test": "jest", - "tsc": "tsc" - }, - "types": "lib/github.d.ts", - "version": "4.0.0" -} diff --git a/node_modules/@actions/http-client/LICENSE b/node_modules/@actions/http-client/LICENSE deleted file mode 100644 index 5823a51c3..000000000 --- a/node_modules/@actions/http-client/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Actions Http Client for Node.js - -Copyright (c) GitHub, Inc. - -All rights reserved. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -associated documentation files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@actions/http-client/README.md b/node_modules/@actions/http-client/README.md deleted file mode 100644 index be61eb351..000000000 --- a/node_modules/@actions/http-client/README.md +++ /dev/null @@ -1,79 +0,0 @@ - -

- -

- -# Actions Http-Client - -[![Http Status](https://github.com/actions/http-client/workflows/http-tests/badge.svg)](https://github.com/actions/http-client/actions) - -A lightweight HTTP client optimized for use with actions, TypeScript with generics and async await. - -## Features - - - HTTP client with TypeScript generics and async/await/Promises - - Typings included so no need to acquire separately (great for intellisense and no versioning drift) - - [Proxy support](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/about-self-hosted-runners#using-a-proxy-server-with-self-hosted-runners) just works with actions and the runner - - Targets ES2019 (runner runs actions with node 12+). Only supported on node 12+. - - Basic, Bearer and PAT Support out of the box. Extensible handlers for others. - - Redirects supported - -Features and releases [here](./RELEASES.md) - -## Install - -``` -npm install @actions/http-client --save -``` - -## Samples - -See the [HTTP](./__tests__) tests for detailed examples. - -## Errors - -### HTTP - -The HTTP client does not throw unless truly exceptional. - -* A request that successfully executes resulting in a 404, 500 etc... will return a response object with a status code and a body. -* Redirects (3xx) will be followed by default. - -See [HTTP tests](./__tests__) for detailed examples. - -## Debugging - -To enable detailed console logging of all HTTP requests and responses, set the NODE_DEBUG environment varible: - -``` -export NODE_DEBUG=http -``` - -## Node support - -The http-client is built using the latest LTS version of Node 12. It may work on previous node LTS versions but it's tested and officially supported on Node12+. - -## Support and Versioning - -We follow semver and will hold compatibility between major versions and increment the minor version with new features and capabilities (while holding compat). - -## Contributing - -We welcome PRs. Please create an issue and if applicable, a design before proceeding with code. - -once: - -```bash -$ npm install -``` - -To build: - -```bash -$ npm run build -``` - -To run all tests: -```bash -$ npm test -``` diff --git a/node_modules/@actions/http-client/RELEASES.md b/node_modules/@actions/http-client/RELEASES.md deleted file mode 100644 index 245477d61..000000000 --- a/node_modules/@actions/http-client/RELEASES.md +++ /dev/null @@ -1,22 +0,0 @@ -## Releases - -## 1.0.9 -Throw HttpClientError instead of a generic Error from the \Json() helper methods when the server responds with a non-successful status code. - -## 1.0.8 -Fixed security issue where a redirect (e.g. 302) to another domain would pass headers. The fix was to strip the authorization header if the hostname was different. More [details in PR #27](https://github.com/actions/http-client/pull/27) - -## 1.0.7 -Update NPM dependencies and add 429 to the list of HttpCodes - -## 1.0.6 -Automatically sends Content-Type and Accept application/json headers for \Json() helper methods if not set in the client or parameters. - -## 1.0.5 -Adds \Json() helper methods for json over http scenarios. - -## 1.0.4 -Started to add \Json() helper methods. Do not use this release for that. Use >= 1.0.5 since there was an issue with types. - -## 1.0.1 to 1.0.3 -Adds proxy support. diff --git a/node_modules/@actions/http-client/actions.png b/node_modules/@actions/http-client/actions.png deleted file mode 100644 index 1857ef375592b5bbce3f2b225865d32428c13acb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33889 zcmdSAWpo|Qt{`fRDQ0Hon3-{RMHd;v*6ILy$;QPLW6i;9yF`M$b-X%*4t`#KA?+ z#Lmjd!v2MbnURT$fsvDeiG_}liJOs~n~j6$UyTGv&B4TsTUk{6U$lUCd?eqTob0$6 z7+hUl>0Mdq0S@L2Ok7+*9Lx;N%yd8qI!AX~Cqp+nTSwA=V-PiUGqpm$->BgQ>Nt zjj64ZBM_G9Kd^S+08RkMZ-D;|>i=~APXvIXm6Q7qjsJEmHa7nu;pimh0%YS~0{L&D z9aY`!Oc|6-9Rbb`#-?H}z+sa9;l_?z#KF|i3E-d#09gNfq7?r>^ zQFH*9Sy%%*9F--6iKN6t*qON4+3A?+nf?w}PL5m3*3rq(*4R`^l#c``9(oH46K)PB zE@o3k7Bf0CP9sJ-RxV=>I!;bjLpoLyBMwt8BMv53HXxzDbH*(SFn0c<1pj{D&H2-K1x1@z5a9-X2WjrdT_W!!FwjlbeFx-a5e++?-#Q2W}n3|CM z>#@cEwFLe_>-x1p?x8CM7DQ>Xvbu>DsQVHXoAhy>gqn z>gjO-V?maH7Jj?#i42M?D)#mzCxD8^MN~)-DP~>fTP~Eaq_D@u-aXHQd^VTk z*#p~?@D6P5-#$zn4QM@GVC$S}5kA}ow(HF`j3C7vn>+O_4d)TbAk)uwf) z8;`w+c_-s`{uq~fjZSKU_(txjUVgLF*r5@ox2}yds~nRvKJyBai8*h+XH2)_>wTS z>l>Cf1-`Q0bUD!G6Sg1=Z<@HccOuqJ)EsrAraGJyemSn=tSgGU-n(ge*Qke?Lon^l z?f1>*6$Tmu5zz`T$xn#I@~f& z)pq!{S}#k>bKTr=N^hC(h);+CEkfc1iXaJ9q0Y#`1A*|Yu1<@p)7(Dd(r7v8b&;db zu$R>JYHJ~4F>}(7bbZ6G1k|A{pfV+U6N2{EUV5Od|Hk>Y#Q${^^64;TR=x9xurQK0 zu3rbGQIv=kNf|UT0AxS>S27VABpwn9p!2)Xnam!MLiW|{D#oal$#a2e-HeZ2dS;se z@`zkYY480XjfMtl^s;#@3L3g9KCgToH`{B56`>S-+msKMuhddBK6q)MI=vtm0uj|~ zNAa+{UxOgkS5+93PuEQTir%EnoqMmh7l8pBU*%fYcygXFQ#fzF)-sOev%*Hr5*l|Qyo3@&8%9t6QQm@_JH{{3oCP_Azu?;k zcAQh%v=Hv zhbCMA5+8oN%C?IdyQ5s%+dW`Cg(lNylrZhV(L{L8{y2;9Oay4)}%s;!3-7zJ-?i zQ6<)XIp58`w70Ia`zp(?I|{RNLM+eit)nk{^19n_n8oUlJVgpOa+^w42j^q?oGB-z4tGyF#M9r(w8^bq_8lF^DllFIQre4Y@tMkw? zkBWO$ZtWG}i&|sX`!(tYK+Z&&3MxZHdHzVPXu6I+DsyBzC{8nLs!R}rg6$oheC0i~ z+h4t)aHA)*nY^!fD6cc$6r*|^y;z4F8Xpbxr`qHCfE+`Q)t}kSBsPg~+orc$jo2Jl5r%Z*sut1@U940uk?wYH?73~ksYH4FLwAS)n)a7$OSL1yPaQje?MRSE`^?ZbodVPvxus+MXIGbB!(vwU6~tN z4V*196SUlB`3oiWMnY4|1dq}4vRT8|4M7n1uoCXE**BlNHrFN_+Db$LthFSf>|Y;? zCJEBiN^0n8YOx>W+h^M|sKC{1#`ueu@7B4iq`$R+#1WJP;&OY`>KwiQN(Tj1Hxscj z&u0OlC)2)i$1YlZuT=I6u16Gn*3OnR!w{i#R~|KkXOuTTalu8^3Q;&6ntO>e1NjS5 zabyBs9HY#zBCKz)*Q60%D7jQ6x!fyB07-n6=En>S@1;@n+~e$LWwA_DB0R;NOKs!6 z4e`v^AMk`3Eg$VBDmZk97qKS~*>O^2SdAN;MFgygqP$n`gi#S={DJ>SxQ2x!L3vw> zlCk=Qm^O3gJ*OgnuwKR}a$9hP7TXR=4thakK^euwzR9rUkEv-b5TKk*z+4!uNfjn~A>jGPV-|pP6~@Twd|@oAm9M3i zlOEL3LR;+}Kd=i@c2baZ&_<%09w|Ze@iF)8O1Iqhm{$nIkSrt$DFfjdA^Qj#tEyY~ zeJJ8bMI5ZljqVD&O>SN@((oc~(zbj}uQq--%R5 zCSCI&DnD~)zpdu);cmQ4hvk0^dI*})1*Hxwugk78Qa9_Qq+4(rR1rRBPW;m8BfPcP z^y6SO{m!&Cy5ZT(&_bL3gE-Mc^!J#4c*rgr{OFk)+#kV;h&Gm zPJiZ_*~qoqVqA@fHfzaZCC{p?;u`%DzgYyOy(s|U-NeT0&O&-uttsk@ODYApq*?vz zo9803%|-XljrV%!?sna;P1szSXySZ)5R+~DXL+2-CZ&xoh zAr!d4g9N1p4i5!#6pVF_Og&Jj=<&I^6w7mb9A;gcOf_uv8=1$-7_xf~4N0%YITI?7 z+#E8k`8MlFb!Jg*zgU?_xRjP*xRUr|LHl0xi9mVVq|Nd?u%K2&yE#y)+ct}0A4#HF zOP2-S9?x$V7?5r(B*X*cI> zWx7wV#oezuAEkM*{#062W)j@(0GpZ*+-&dwcfo~2Zl?fOqXUPaGPcplk5%_t^n{nd zVD9X&fLJ}45sCDDQ$j?%J47_E1oH((d2et^Y!Ms45Vsr3>KiIO(irvlgSVz@_y@x* z5n6SzW9Pgo%0f{ zmI`V@=<~ai$7&J~S}clWX<^>;@SKRTP~Zw(IK*jh$wso=vv4#^Q90EMHGDU)k|jt2 zpFebS`bhrJwchlVNn48AqauE(MasJ6N#k3oa6utNP@X`f<#}2vNe=~=M5Q8_<$}OM zIHqMV2`FSF^e`{gT|NW)RV!+{_&d&g{S&_kg=;x%K2?D3WPyz*>K%(2^IJPySaTzq z@Q^6pMz{XhM^jX>Iv}n%q%XKc`6keK#{8(#ks@@l^SMA}rRJAfT5WLndS@_yhcq&I zq2$8@~RomQQ88|x3}+mCY#^3a01Ev)*k&`@|pJ8LR0uVS5rWJLN)M{AZu>ez}^oKWBmSIh9ZQ`%sT7P`Ok&-}oB zI;p=B^k-Af&| z2_i`$a3KQRmmK_67ESvdjp@-78czdXT?RJQlq!fR8Dh4Ny+!^MzH*CN$}lt>Gezo4Mfdvkn5{KaV?h=O|Mp9I zFYTv2=W@`_=yW(%J1CwQa^z-Ar zn#uvPkWlJ`537bveayM1JX)#PGKPMwKU%|Gl)ne*Sg#J4BL4M-s(4PwmQowY^4fD} zkNinF&&1if9L?@KmeBAJc#_sV?Cq-Hc`1rFQk+S_>RNIJ6U1q7D*1cZNIoa~lPp90 ztF5{F51AJueduyI--5lRVZuM{vEfw8IY<|?KXt6Q*gFdF+=!5`$3EPjMc^Qij*=FL z!Ehl9PEaECA@*>14X#Z77%-08G!Z;}Pb*`gzo;%XTIP@Er0G`w+P&IEzR^OkMfcPm zJq*<9{y$os|9s6Ob5=1+xk~W^e{asut4-uB*kDcHcMF~8HAr$R_E;+MaCAqX;Km+p#6dKhwkaG`>fVpwrX~d(?$7~pV*;cw4$Y}3mF#Se_taq zXO(pTcPQj|L&Sh(H?)X$N?`Wm&yFhM&w?KUBP0>#VC@o?KGnliUpihlaH5tS;slGh zbcN?pLm;%_>n@-iP$cOj7c&Mk-V#_m7NOTD=K=ajIn*Uh9PV@zmg(Z2gBaGFGWHgvJDY-%0&E~|VVtr*k!jq9 z?y6`CJu$Y$cnx1iy6*1I5JQ*itg)Y(5QK{}L^%^E=B>AHlD?*aK671+6YN#s&1yG( zXvEz=UhJlqUS!cEqI|A4SDha(z0*g`M2PwI!_0F80#7E728E|2eN^2c#V@(H!J2?| z9``a~AxE6wmsqyAE|P%9FRmtAl(|nJ(*T&e0IO%f9Cv*(5UCsL7NtVNII%9itlmLG zyH>%O6=+Y~;dBGXG1DH>w|02s6j&*G!gGe5AZo5B1 z2Pq@65Y`n2lQgrruGFc~W;bNB>9z%+N%n^}ifwa7#Y=E69C(bG)h8sm9qDKYQ`}H9 z{{ZI9Hi2Qh%rC>QJ6~&MczARD;vLZ_6JzBm!0Q+lsHJvN_PZK!^;D$TT~XBfRB5zx z#hV(gsIx z2Tg=PAvv{>!jaFN&pOCwj88Rr8c;B{n6`Y~y{BRkas^}HJ;+znb|SB+HT{wlVl}$4 zeQs-G^#g6!R)}#L@Z5Nf%u{h-+@Z>79e+K4IIN1Jz@YK@*^(3QN_=`fl#eq_*QSXJ z9QV^;bAc|I>Ir8Xysn+l99j5v81NP$33bE?LF2(v^6_rsXp4@GnXK?nY=f<5ufnoo z973oxz7fMN*`=@DYOvAiBlo4D?W8V65MA@bC^IQ%aqK?PN^8ZFrqK+JJB|k8=(*=D znWA`oZm*h`tprV*->^mn0y4)x(>d?X+i3BGb^%3aR$5BaeBLEgPM(|}JRw6Y0{`eB z*|Jm-c4)(!K)Rq^>PmEq=K1XaQwBO{s^%JnN4E!IcAGL6YwBmBeV_E@OFLQok#{3) z0?=y&{|yuNL=2+YtVEhk#C;hEr>0Fik+9PEA@6=3SXyGfhevi1fHW4S&Xt-Yb)BN{ zuZbGxy5``2uJPXdI-|o4V};#n9kHl>tU(zU2#^$?&yfI^Fh8i%VxnO~|K7EtMOa!( zZ&&g9iBdBhITAS{VVd`dgn91k$QP7!6u>exW!1B*8!>*3HooO#7pt1*mFb5PCB+b! z3>fzJOq9n2GBqm$AtKk4!WK&Fc?qJ%;MPasnWISB0DAgt6ks;N<8!@fVj}Vt`ec|U zk4Hh1PGmc*^>UT0ZZkc|mN2NYqmJLGOC~>BK%YY1%M1VJO|7LBYWnj$>UAL#?U1a` z2jAQNnH4AFwu+M1z-zi*k?;f_RicT<>e&0#{pgxNZ1Ed2X<>Lk;5OpTsFjR`?=i~d zcVWnj!9rHuw?{?52Wia;TpyKw%#$qh`?gFu+*sg;HbPpS#V)roS!?U1hKADK;&5o$ zh!rlj`#ozwHE&P@{uKYy4o$(2$|p&yEu)fSVEW49@6wLN=?2XP@7+v?wY!m^DOIW8 zKrqai(g-Cx3+5XUc|>khv@Nl4CuDF%@bn{;_+_4yIh(NtBvn?b5dh)ohOR9`bBgPI ze}}(iuQ4i~Ael2I>M8+Y9>@sWs;-UiYd#gbRh`J7d(~srJV9zufm#L|no_F5{uS1= z6d@>YbDAvoEgIUoE_A%cm5X2t^tOM-ra7y2YUJG$hF@9?-8d9}dlQ_&d?Ie(i@Q1e z^VLuu4Xj1SXSA1W*ewJ+4G5rRqW|@y?AA+?RkSiI^)|6MryQmd6p=ygl)tM#4o9G} zcqiQG&niKOgr!W~=B;WH@qf_Vhs8qxKGF*KOntAHg(%(M-fWfXwzRhg;8k6;ImnQ} zkn<*vJ>EjXClPJWtO(4TLr!Y=3WJ4NW{9U}{H<+GytH5}H3w>Kq(8^E%5-tOGr+w> zImL;shJw^%OW!l-@Eq4Rx^&J8QDyT|Qlmlgq(dHkEpo)Fyx3w}X?gxVJHo+b&E&mw zl0H=!V)K)L5;M8uPx_xvTtb4N)|C1#wDU<Y(@RL4IBsb1^-j$$C-CaoyDS7-&)bxDG9z?juL3R6*fu zUkV^Q4X56BH_XkG+Wpn_A4c9Kh-*}+Z)cPn?9ffk<<0vC%xkX@U1t^&#YRdrxkd!E z5P&t1r_XESL={n8D1D+OLGy^`TQL%vK z5qx0$%ixgvX;9qSNHxm|bQ-f6MduOaiL^7=W-B}!Sk4K0nRYy4nkmkbzrMYh4qC6Y{muPK8fhoD)SNSJ!z9!l*KaO5KpBmCTY1%HGKJemUB+Yu0A2~j z{p=^C-p_+ZLP$YKNE*z#gvSXmeR&Eq7g9oc;=K>Kn#pWEdnf`#f>$CgY$jv$t@blaj)>X6+g2hyqWi6_ ziryNNl~fb0xd+3*5r48MExeTc05~fDY*vgE|0Y<=Ye9hs+IKu^o#Jg{V6$_^%snbQ zUE^4$0wSFA4dJ^rY@JbY2vuuTmUWTS-c6Ts|CV{aB|l!co=49~d3F-#b5*v@n#%**);wSf zCb-tQ1|I#DjqJmPhXq03Q@k3S;dSptW_Pi7PgsR@c)weU^C>NMw8Qwty7hkT;;od4 z=~feL<(#XyjAZJRGxb|o=S~r$#i3#nq}mEJ5`DEO3%ke(?Pq?f;iT35*vUCPD>p6^ z4dbB9P)Pt5q3-L8lTFyVdFGGS6XC!eL6YxWPFS_^3Io_ISYL*V;H)x%lk ze60aN?dc3YHdX?EUvltN^IWAHH<JwGY?=EKa6+x0<=1dnX0p17ZI;OA&?hHXrHHBog&b0Or zD}+8WV+yuIT^;qCa!z(_#6Me3^Z$moqUmX_@6ic)RqU zRPL|%7vHLbjx%RRv=I-sEtsR^vZ+zAQ)ZW5&vg!$!p_Y)!x1G)+(owvkECjU{K_4IOMvJynI7e(A?|Jt6;c-I+sPeJWYG-l2>1-as zJM673w!2=OtuD;N4`9IAeSx#kQdL(qLckqAY_-Iz4mW%AOf&-)!95Uw8M7JV5}%Dp zo$hFylKxSrspo@P{Ro zb9Pb|NP)nT)4&Gr3hzVv1-^GMXMv8SSFKRP=k|hit)P`Dzb(K0k{oJ6rcNtZO_#{- z1lmpm_m#|OTI$bgYo;tv4lpAzrLQfM+D{Fsp+$of+PLW!8%oMbt> zLaj=`BpH7+E^@0^6dKxKxW(rZ`PW+V+CpMf>uMih7Jf>}KW3RV_rp*Na zR_FcRx(TMX1z{coprCbMvW%V!`ofid>kP0y($uxq4Qie#wcOk(&ipB=3=>5xGg=$n zng|-=Ek=H(hTUb;#^t+50u6e>NK|(C3@9bTRW!1zXLj2QWnUit?axhGs_^b`+aZp3 zlcH!sNfmy7r&Her#*u*mQ^MXK!0MJc#GyXkM9xiZwGYSB`o=|Er|=B9;^BK0Iy0YK z+ieY7y7(72Qu|Fg+6MnUeoAl?MQ@?G986??UDi*2+RDKblpKb3byA~X2&-hd5Bg&U zZQBSxD;!gO5*QPEBQ2QRC04$YllA0Y=U!sbkFyObeF@DO%ArBanMSB#p7lenB1;}` zH3Uk{7aOUt#(>+RytJQ!=+6oa`QYiB?(vj?*bk4;hnt))Q6&sj(gKB5~#o1+3^(y_s zUdWAy;pEzX$p7Wb@Bto4G4;cfM}#Bl#HJf~$?}&gFCM}KS;Lzp3szQJ@llUv*)-s| zh=HE#6ju^=>&o~5UR>6`N?!A+axAMEu)xL;F4V(@m?NYm86z_$8PBwREO`-YAQO>z z)4+Xk`kOroCf^AiOYYY4+bqZ$NHMFQwifc7@SDe88Wswc>&mx!cD`ATuctj$It5e6 z32NnSV!0&)M^n(Z=jrX8zXr{H60$NW0Z-6PmBfUlMLVY~-}ILv4`-$dM5VP(?P4WB z@mQjyF~DnFYni2C8)eW_2b*R}#J9MV&q==*3KLcGhL;hk;#yEJy$0{NxNsrD*Sre0 zL(*YFtwlHJMTd>~68_8V{t}1Uu?(mdzxO*_GC)V$Fn%VrdV&bv7cUrG*C^! zci2^UiUHQxB_f9kIwuth5NthWoANfV*tH@dqo4YtnmYXQc&RsHxtzi5;?u2bTJ0CR zpl;ePqrl=FP8p0hxN$T={8>rbZ_a2?mv9j6T#>oa0@6sdsG6C0DO=Gy<;7KxVwpX)@%oR?y3FhoiAVdQ`Xat zTfIvvx<=5Jxw)?p>`AD6>*I&8(4qKGS*0x9Pgf6ucOcwU`uG#YJGq(K#C8B%t zKvvkpl%WABA31BU`)o&plV{7*lraqDy|PwcvBG3O8Lm>f3o6-F;1Qs(9=zo?b9g8u zCMIXMZ)+^%Y7Yp7q$aQm>=LO$8lpWI!)CMxHZS@Vb4&GHuhv)gtib7e8LNzuir~_i zKV8Go8R`rZpriP2nM`LuFihyPH@qFv{@Undb#}YGh`fU5Qay8<5LyCr@}C05&Bzd) z?%~{(P3l7US!tkMXQ=xWkGlUZhIZ*vYoT&;t!;O9@jZ8LFd)b?*K(e)u`Rz|G&#!f6WNs&9lPmFp4J`5= zcI7fc{hf^Q(}>!UtFc=EidQqjos2j&&T zlE2CDi2Lk8Jv868&U|o&Y~T{rAPGI zY+wslqAw`y3h0ZjIZ3Vo@6|bcGk2E0)%K5{py(xSXYi<;cXj2zDL$Y%i6&Fy1{n(@ z!ow{^kF#|lf*=7H1v#UUGKw-}yO~=a_Jb?qE9#VQY38^+)Lii4rC*|*t0Sp;vaTdC z=JMJ7E+2g)c6}zHt!DO;*XE`u+agb&h;9DTPbnI%EbUZ{sip>JmE`HBJI^Z04)>jG z7v&MBY}f`aqiv99GfDN#&#q89HzZ@Jkn?e}Xqd303AV()H=9_%FOT|-LLY@1*UOS( zVsY4c?ZO^qDeu}idUas$=1(@+8%IoV-M^twP&~IT*~@$$%GaC2VQBmVszBWQ==^iycY^92kUEE4mmMyw3Zg#hAvx?k^6q2t3GU`U6w}tL^)Wa zv-L(x?5k3u<`rwW-LNM(r_5q58S1bXLG*HPQn>LQe2hFtMy{%^orDJ+=sY;Tw|PVn ze(2XgI=BFmgn)YCeKPe=ta3T0b$C?dkL`Y!J8pye){9Z;E9f=?bcc8JWBoI3G9-_z zHql^QfB198Eq5mIsGGFNK(^*yjkOd99F&Y%wP(HFAtLnOHZuaE$*?z4`+k z8g`?Lt2WibiSnlio| z8Y*wQWJl)>FsXg6cR5V56E?)X$j1i-sP^Y12OGQ2!QzjR&&`Z4L{>FQ@L`0aO%cLn z4ac}pWQ->Zk$W9X(s~AnQkHZ^69DKbrb)pDz?qG!5`W;TuRf7+Mv(-}^H;Y2f@YIU zoQIKDHWGz!NUl&r7qUd|Q*Tgfr)?yi)c#ls{^hlEm(1llgSE1=9Q{)g%wVc7zUvv^ z>Yz)Zrs0+}{n1-L=~t@6>&i#|N3BH2!UyStn+JYq*&zMwcyMk_{a3E9L4xzcaWWM( zi`DBPWu=nTq6Gl#&bnH+%QU6$=X7MOXEjRPIsG}_=m)=Oe->OUoh{;P95oEGWLdhT zmH@NFzky-?UKfJc^e{|t1%A%$8B}UTg_+1y{cE2oUoa?F@m($P{g}W*rT2G)N`ap{ z(Z#t2e54#4H}6Rkn(xoTEmYwONt@6$V>E}ejo;VN-P_S)PEa17?}|z{MjD#0R`hdk+3;6Rp6PLyhEmHhG()rT_9V zwsY~2y;hWkhE=mcePmM?y@k4DM*Lj@EDh8wAxF(~w{I?*OI3sCAjsc(X>4cxti zJU1M{PmwLd3r~h4(Wcyuv31U|gmT;#IkTZhR+1N(K@@cF8U9?;a*=9m$YNWu=-zIS&l`I*!GvXCUoSNTX&p1uzM;| zyheBXcNO||1dRa%fqkHHH1gMO5e%f#n^KXppO@J^8d)Gomt% z4UPRzjahUR;G^ddC{VZ3F`Z3`9mTF$KHbZaH%kg@NRrjQzLC<&3S+3ZRza@>mc80O zc&xb5Z_k-IPg86v3??Rb{ZWKwv(u4NOBSP;IZI#N&;YvuZ5Q*s`Ia)&VQZlPAwg#% zND~!{-YujpJGW*XDR)S5_9%|S!n?*5o_q#}1j^n?0BA81I*q>6lj_s!R5f$qg->}D z`f8TD36}M_L0&Y$&>$}Q6{XGWvW7gHSph8_QdrG!Olr9p91ERX@S0m9e0zK%>Xq!4>Eml&Rpz_)7u52Ug0j;?U#i*7 z{LYP&^p=6&P0zc-WzDhgYX`=&wOHVkvR|L)zRyMDO^7saNVT*l;D?hz91T*4XL^5G zzv#R~x6$7PW9A_oq^~GmDcw&{kkX&N81{cS6r`y%-pNM|(+OzL&*#JurXf4+jlaQS zWh;`h$!zPzUH39NEQ$EFaUFCQnp4et%CR)reC@`qL^y^wU_wC)mQ`!SV}?6#t2(*cSl`U{Vr@dFYT>z$`F*r2 zck2WTQdkh#_dLghl9E1;Y})BuMs6Nw(KU9jkyV7jCS0ZfL-zE$@AG`+)(;jVba<=94LZ%^kxQSFH!y)oEw;aT6Bn9}P*1s2*-zxqNvXk+{-|KAsIybh zX?ji_*Plo~1#!Arp*lGeAv~c(?VM_6L||dFS5zx;H24D+wb(%mecaCH`=t`ibv>@# z)_hJI&G(UFwA4TU4BDR~dCulUVh5OY%|;tfj})tnJQYY$CsNcOz2(1~ z1IK^!xN(tyTGe(e4UyW%PD<{+Z{D32uQ{AYMH&Zr8+sEA-^nTm=(bQ}mIy1Mp=9d0 zk(kQz-eWa^pbkbGK7TL1c}7LtI-AF|&{|sl+{p~Tk-}gw%ajb;Hx{*v#{+Lfb`_#e z8?}6Wrg6YMUvZf@t2;4%zPc;r+R)dZz`vc!trL#;WRrI6d3l zAF%G(8?anCLHYYq-bX(By`z2YCsX(*mjD#=amYo4-`oe=LV*%(1R}}5@c$HTBEz3o zqJNtg&OXwPj?nAMSrCP(!QF3D%nf2S))N*D7RPnDBGjvbPcYiu>UH)+VEtrY30YiP zFXMhx?2XI}EvrKU*z6{$Hrd)1aw5t1_QjNkoo7Yv0t!92k1^x01~EwmT1BpVxVpD zEAzku?#Ub+@4wMLC7H&KXk4ycWC>T7DRW+iT{3ya9o63@Vt;041vvJ0DXuyZ0e9Ozv$RM zfO&liuq|@D!8tx28##&N7mlHUaeQc{=!}bDb?R(ofq;F{Pg6z&^Xhf*35jr<1va)be@+VMsgHyuR>*r zhYIXX!Ml32OR7H5Bg2eAByK|ixdQK8#>sR!rL53?h|rICI5xhD{?BwHUmcV6vBxH! zm>j!)VoXr#oX%WrAS%4=Z%icRH41@7`vs|ZXzz?QzX=aHU6;~-QpoH{F8YWe^9#Di zlP&$SM@2a#hu9v;>BhaEG_W-KF7X_qvYt6l4bhK^z~;P9Dv@aI_I2|0?laEs=x-;? zO+F_&b9nYNR&U0fM#Ds(iIPT$As*X5`70tR=|h22AhDD!OnFD zdgck;%uxJP>RQ@)&#K;e1)IL1Gad#$m{Xx2o|<$>js&&>mFa!^CUfG8+Zqe%QL>Sy z+r`2#kJ)i!b`tS`DR1DttDpZ~!V>wME3vGH#%x$0Gix zi+bpn)dcb`PxO@46k43=PAaD(qYk^R+1pGZ1PQV=4D-5F(IOK2j~8wo^#Y&kV}m`l zD0wNlGYvv&p54T1Td%$EF1a|8s|6jegSev#EpLpDEaX&vV4#re-fP^W(Dy%;a811; znPvtG&Ht&k+Fv$wFxyJX)aEt{uc3igcOKXjfW(3VT09bvo*wK`7NHRzzKLgf@z<}q zz;5!{!S-lm7o7#lx1NSu=;KrQ=)o}zTQ}vOO$+dIm**oFx2G}nIkA6UCzSJz3_I_m zx-u^PDg~t`Z4JBcBqsPB@m!Zu!OdYOhO*s5=#)k8b0zN^Eh3EL)~*fWMiV*n6Oy!f zRG&b}&BZd7M6MzgsX2O`s!SB0yZ9`AH2;QGH>db1M|eTw%hNtSqhI_>w=q|G(~o=2 z4~S3B5kx3+NMTKM3IM&EgRL;CB8V5^)Cq$bRMYqF#4bb z3}mY%Kd}JW${Yyh*LtBFPl5*H3P;8GCfJr>moW)xIM> zDn$eW%rl)v@8(zhcJ@!Mf9s0hR@>dHBhx9wh*j0^+A3r- z_;O`xd0V-~9Ke9rg<}sWItJ6Q^P~HC!K*aUIFAw15vE69=n^)>BV~P?Xw>1xY_?^j zHh5x9T*kH@h2t&rFN3{COJYVxQx)q0bpjrV?* z@uOR=qR%UDn)!MBi$NWa$sXIn#^k|0=#}x|Z7F7Yi$=cXQj~^@_oMI15teheJ1}*Y zH5$;lBfETChI(~08l_7x1{Zr)&9}hji?J6gZCOkx*sFo~i$RR#GpiaM*=H#vVWAS5 z@YDiUt63!sv)YT8whF}EVEyc+=@Ajgy7EBO#?5YSx?R>L_Qtw14&R*J%Qy)URC;dO z4P{O!H7Fj)oApTioF)!)&dj~+Egj(Z5C(sXQ6fqYQRcEjv~%+bZEG-1~{9 zbgXS>Rno=*7`=16r4u0jInkX^lijPEN6fVI^FJ7vW~i2b+C-&&SMhNQ=hzarAxjyCODN`LxTCUwKt(yWIA1C+%_d+!#` zc#eVPT#y84#@q}3oWE<9dOQ8O8uG(*$tNG1q)s!c_vC7vS>`7DH(zB7*Ncwe zX6Id;jLwbc1wLoB@vGCvmz3#;Sl(deG87-=FH!9cKmodSfa1XkgA+47q;6=*;X0Op zipyn>_JBh%0<0RS7xDDMlw1@aYN^Y*Q7kVi=y3S+n*$=oy8fR2864$uydQ1RFAo%5 z(;R}nTb?eS8VOW{X2YxKN^HPbUu>Fq$x!EiRcu3TU0lr}`s@MX1Yr_B8L0=RLD+V1 z%E>j1y@aZOzo<-u(9?d+Ll(uAk(Bu4=%7&kpf1nm74Z~9D>aIfEJI|$ZO#+>`X#mhG4+2Lnuih>Q+ zbJb04uyn~mAOmO({KISL`7ccs^`s;2h}R`?XrobOtZ1kPqd8^mH&L;UzFs4BNfWyg zKg{-K_S%_FxTqFfO0j;&Dh^1X8YSvQ-^HU?KU}8ZLw%%_Idx&?MOG|6g%0(N+DwA# z;U=Ius|{F!MMKDx6Ffbj^LAD;JN1t(zjZC*!5M7VQ;DwEkRIROhAgyI@lP16Jh!ON zVEVlk=?8y7JP3ocEH7}_P+1U}Qua~d+56d~x&X1{Q; zi~6_Uj!0WbBsQhY)fmETFxp5J6eE_-yCO}3)2oGf!7feOCw`M-L%xHxs)!#rF!&1W z)QMkH@Tc{Mp>PjIzBg+iuI`R(KI|T&pn&*EBz{lJgksl4?G_f_2+!h;P}nt2JMb`q->AkMpIj^KG;)G z!TlWSl>br&TfffA%Gj#@TaSHUx^H~TcH2<Db7`gcYd{7r8^Cs;_OT98(uRsoC!?66d~da zD#P4*7L)?TMoLa38dAA~$+mM!M3ANMs8m^pXD&>pw^z8ZrlxHcva{)o=kEL5MzgZV zLQ+9(6lzlfxutBp8Q|AQdjITkeb1LWn5!0#bIPk0v*7RY7$GgJz8;`JPeha^vlxCg zmB@?p)L(WP;xmrsQ3{T>+j~;S(ol=3M*Rm849yt@ioTt5nP**$OKqmL*`26ZANf*3W59;f9_|C*ATw^+QS(Plru<9Y(1% zTrl$i^9Ci>X=ChYcPysy_@cl&8HI^B1d(wWQ>OCHT2S8TK5{LvF@_xaBkw_~Z?e-_ zY=YLT!lb2ECJ=6~58acDGncn>JWmBmuF~t4uk!P^erfR|K6~c)D87*6+_&$F-%!z| zRI1;D-yAGl!bX#`^NUlx~|#Swr$(CjgD<6 zJ5D<6*zDN0(Q(JNZQDG#`?;?7H=O->eVJ>|nzP0jRkhCjLBEe{V)}vCMdyL2E8|kk zKV)sgeE?m{(_YIfb`ov7UG7jWB6-M#f`0fPmuYWMdJgNIChJ5@KK|{N4a_?Pvb- z1|K5>3Ow@p`H1C6$L$It3tDbx2G^wV5rI-}Jw5T+%V~;;oNjg;H6U&0yiKxxZfm>l z1{R7%35BWDJdjsgl-@qP zLqbAxFy}e1@F=tsll|lhx`ZsQjV1LE-8yKJ#4c+m|g@ zW!j&lf=L{mxyKhV1|O>^t+|(9_|i-h!ca==4y}etSk8}>BULL9`V*P#(wje%M636z zGrXAJ>fV(95?Wi3fk}nqJBZDU9eZ3pa>~TK*r}9yDXsnr&4MFaYfMXC801$kP%Q9T z{*jO_zHl1a0x9xB%7MUtrEbySSDHw#06!K;rENBS)5ka|)BP9!$^rZd?YR-G;@j#5e2b{Kxto z&;9CuKU~E`{!;srJ`4+nQ*t>G52L?Wo|%l@njcqHQ5DavOsQ^ixq;Vx%!ZQZ2_^%# zk-)geIVBm=b<1!4=rq9IWWgcy0x3fmP#As3t;TswO>;gF)h$wy;v3;%@(?_WsW$LC zNT}9Ls0S{XMt4+E200LZ)%(=b->TepaOmH=L$0Qytojz2c226aU=+J6!zi0`KtE<; z9_|knaa~_y(;2kJ9S&ls#n#>7*}~?XB;f%N+%zGzrF{aFOKKErjH6CzGeb9^!$ZJX0=@dSWVpsB%-5hV4 zv7l6&NE!mak`-7!=I_#OuQzOg8+X;}cYXyAY{ScPYita-lv*O`WN2&oS#G)Re7t_1 zF}6pJS%m#}cSxA!2>i!fQ~KskG2Nmz61WBA1mF)$yhtYngWv088BJ&Xj)@Ss_le|K z6*v5MY%jDQ?wcv@(*3QmHmGA?G>&2Le=d{>ew=ke&W|2yA@YeXQqdKbNrY{FPS(^s z(OVUou9~^oq^i6fBy_|7xPMmEtkQ{Q_wwtIiJ5%FfQso8^c6fsB#=JSx!Qf1n}`ww z@M!uRzbn?|LfBCcutY{|(O{l$1t&Ha$xY_$vXYCAU`Qbn^^v%<{# z-r7PP)N^<=?Pn=6P*_dy(V$)LWAa%onMd%)^RYN%#6vm5#o&ZUI!zEIHjj+Wg3fzY zO&Of!A6=d0v<;OglJMJ_@}DZ?gs?Q-b&RF=(kcy;OmpJ$s(9nKKGC)O3@E01$JfCl&62| z5rA(8y})X<0kC8C{LPHDaTbCkJ_fOzH}l#Kh$7yo;9*nf_STm_E$Ayf&l9!|2!3Yo z>`6Gk4_MqRMmiYf8FAFeQsGy5prPxr&)hK|c74LIaG-pIjUm%^gSgeXicJneodWO$ zvTzNqw>Da{l+h0iF)I$Jcz#f~;}EuAUN+Gl`QEQb5y|A@jUz}Pr1jrJ7f4ySNUcdE zBd|1_1hoX!h4Qe(N6PYn+XR#PKjcb0cDt%?+;Pn4iKm7y$V8zpVr{>@Xm*@upGLnRm6O%vT_2C?E zlt+DQNLn~Y!i!Sn^6Ryt#lnW;s%Y~Lf2ViZm>Y~QLIy_i2ZvzR`n1X?-7I&X5Y0-4 zunvzEEF2lChGiBjq24{E+v`Q+27vE#aU!V*zwi|N1dXT1f_E7Hd;$`6>eJ+nMS%tu zom~Y;BQMcMdSW)`sG{@i*!z`XP;C1Br*Va5;*U?@-c@}#?B&>)qipgVR$-_@JCkMV zK|QW#bC=uk22|K?)yQGpm9c@%BL6_=rXe27Y&kgeZ&c3H-4Bod^tjc;P08X|PLoKArztsdd zoptqF++c&zef0wKqN4*vq5p22-%gvJ-^XPv>%1Rc446UJHoe+t1v7wAnn*=sG|4G3 zufwP1q6mzBL9Xzj2{-jg;1 zKZ1}z`VHD*_G`0gIOw(Ds|iegI51r%oWWK^$gpR5wCZo@)?`rTHYQPIv_E*R`)$jB- zef16w1*1tVE-}6Yw&@?d54D3$P43V;R!E+1i}vVoW1`}<2dgtnSuG@q9Lu&VIn7`7 zkz@LQ|Lg0U>{M!bo9Wh|7gaR3*nvH*|A$cQ(vDr2+wwp&QE4Wjt((1Cl6XWrDk(N~ z7GZmBZM{XW5tE9sPvv||UOMmyL@|u!YP)BN(F9e#p=;65ep}k5m^hS7zKAIy&`K^Y z^PMq+RZph9{-WZ}j$g1XQx_j5Y)vt8b+Qt5_EwW%eqkx3BC_4)KkuH%?jvHuBt_KA zT5hq(;mH!HRYuU7?XG@sg4H4e2IowTYc|jE`F_g$Oy(Qe!{j}!qJg36iWt?kS(#(( z8q7kM{s@W7UdwKjH|>gppec$Nf*@bgqg4=}Xx=6rsW-<-nb?6mTYT)CPn8VIKSF|e zj0B+JJnqe;805U&A?o{JS2fxniP#@))-8VLJK_ARL?9HiJ2VI3%cvItNz^Z5bz21I z_N8A~!C-3@)7rLFwDcKbd;wKHjSj{niGNkKV!sv$`Qui&oP(^ex*Zp`pqXl!nrF<$~phHiMhn09CeRvAhb8(B#&a+CgB6p8*xH z;ec_@J4jpWJ<`AGzHV{x`_d%e{h<)Uf4oFVDzq<5V@R7@Jm;fJZbM8Kb4pB*_`Li) z*A-e&{WFQshQsnSMoYn`H&826=?eS8)nY=4m%ib0v?L|Wf7!ALIkCBX-tTEcMeYhH zDP8%~3NykMH@H*$&ez?%D7XWRb)V@H>!5N5)Ptc*XRH?u%m-KvYOYtP|oTl014Ez1ut zYJ5`EAGA01aHbBqaQrDinhv7Q{%AOjqNJ@%N7pr0edh^v@2(NUt;j#=pOnV9D(54h ztNRH4Z%(*0FY?kOQsANE*p8f;wlM2xyCZtH2 zPijt6q7jAAkq$(nkk>XqNkR?HBZFW87e3n2rihRzhhnl)g_mlN7S1Fi1b!Sj4x z-+)F)uk|K+QSiMs;D2kghJah9-3w`A%RcN8WS{q=t49hL=mJpnE}0j!G#Q7I60(!1 z(8-&NA{<}oef~KPQHL$?wRm56M0}_;XW4`%37xT#Pa3dkFs~R@ZH0yi(tau}?J<|A`R5EI8tZy@~)U^E6)!!2p>Uawv_OIfE;ia~FLe zJ6|C+s-1>8tV= ztXNnAzY!{ggFd$($jXb2K&lD*Jl@uS1)EmN9lOwCspS&EGff zDO=9NA3ASq^XDzr1xx?QD>tWk#A*!rod1{FU=K@RnBSt)Q-g?%lKQL!c(y4_ti_tH zI9>Kx1@FB#?$75nP~0x}H8$ji*Fw!|+u>YrG(AnH!Z-~I^Ly-NjLHXxpx(rG`X z$YHP~`@t`zWB-V)X_7RJeu#4$u5eCbb8#9Cyl#m?OpqX;UjwePBVf0Tq@|NOUhAcg zj@e(U=`OY5^l5LvO&Rk#c?oxx!_4iiPwWHHpk;JWzQA+Lczn^BtpIO`MG0U~XFS#2 zV0pGX+web}c%2;lSM)@nRGge)1-xd3yejUHuA`DbrWjB%-#OCQf3Ygm)=C{pF{!~+ zB~q=D!~7x6$FOxxFlLE1D*!7OiZ(0}Qibz+!u>t*GFC5KV>qS)gii^ta!i#@XvHm6 zRoiccF_f%fgfLrJ3x_!iJ9JYg6>f4UxDf9BAkwEe8^Qohu7adkq(q;=0Hzlc6cDgm zQP>0F6=;mkRf z|7`&Im&i5PbMy9%9#QLvg&7nh@)xVdSOIsqCd6HRhC6W%FCO}f!gXaEGIxTDyUMpQMY-e=paTv z;zCh~3WfBc=9P#$szB=PpfTuwL=By7>@mwy&j7M+PhocP?R=ccitBwpFixGB>e+{$`;W>ZASmI4@b- z7Q#lb0Tu947Y|!loOLi`L}#fBR<*`SYR| zCcCdEp~$1zzW3$@_*#;r(x5i(f>vWY%ZG`^P^uO`LzAE*)@th&qg-kDs8{n$c$i{* z9wG{7SVsEpal&Js$CfrW?*v>n5I$QUa=UCLY2RyU(vjJAPnWH3^F6AfGJJ{&XSK=n8RKqEMF`5sN5};7+eIinno1cO zu6l+NcSqshWM4xowOgUV5F#k?frut$b*)}A$pvL)c-f&4uD>=W7I{&84oM-{thp%< zq7cTN-2M(3(jWmUo1n(uxH~ubw{;8mZaP_Oql~<7ZyS(Atk6n$b38HPCrCtz9r5ti z1~H*>y*s&L8ph^Jg|L84p8%#a7RSFaA{2>$=+_{)xb$>->guZKv^gTo{Kp4s6RFwI zfX|~Uz=jKXMh;=J*i;6_SJbT#RUQQGw0yJ_5T8Zh2jQX+))x83=8T zIMsm6W)3Wfq)eenff-7YSO-}7SOqF|vDhmd4F1bQhRv*7=_D@P$%%(%SG^h=P7%7i z^zpSg$W?N1qh&`Mx)u&~W219}xZbDizxJrdSsvumXsbkZat!lFQBB8^!kbvHlEWDR zo+#vzDg~nq(R-h)ziKJ&qoR+G3Ki5?e}!2*3k9DqWz3oGtgG|>unwXOgM5^OFR)-x zOs?}iGS^137TV)tov@P;_|T> zv7PKy9;8b^FGWrp9QVrVp$YhEK2vxZ00SjRYM!ZsWd}irvj~kp6bb z4~eBY{RJnu%qjWV|FfTq5T4#WY3($Dc?m2Wpz*f3`@NOxv!m(MZ>Fxbq8Wh+SU~~F z)x^H4Wo{2X{60wj>R^k`Ct}evb%w4djUhxm!+LSCsrYGXuERLap(IM2i3Wx0ydfjH z^Na>OivcyDitL+alGIaZl3(#WLo0mq1l>D7)jSJ z@9rTHom7p}et!0ihg*YKCHRC$!mVRG08(ECX(YVG0?hL5n|H<9<;O?~LB(Ou305M7 z2}L4dxAIM--jp~r1f1W}iu+b$snt3vt*O05&Y{3ho`OAJ_FYVm#dSo{O#Y^Yz9$AbBgO%6aByc?28N*s_FxvjRb$M z7z{tei{HhR*XVA*HQrK*4eU{F+YXkA-Ewzxm`LR_Y|iN$rd^t6>1>eUX8A1f&?& zAg?f|^6BD~;xYUYngNQ=vI}e1p*it~uV22Erj96RT(RR;f)^5kl0sp&F5bwdA@mVr zqhc%zI^I+gHPT8_lUUA#(-U}oCUw|o#^%F@0uXL7Jcz4<2Lrdk?Xzyf2b!Y=ckud2 z%1lQdT|JyW1AOItVw!S4w^h3d5FqV=1@3ltzK5OQ|KJ?`rdOvqxKQ}ZLCD#rOH9jQ z2)nw}ABYtu5BM(vu0ux=mmM`_XvA|ImJAvkrMPqrR82^+aaY@6&gB%-ZDW60+w(_= zz>QwlV8d4O+7IEXaR(D`~ikn-C0^lcRF@)YvgTP+Y<=?`L)wM=gz z%Kha6QUh~y0Oz{{Y%Wdf`y)JM-4Yi3#tFHC>QS!0pZQ4*(6sz}NhSyew~y2zoZ%3r zrurfUlPo~4dYaB-Au#!jZ-IQO(su2AmsfLK*JZJ##`0yA(J%S)fz*%D`+P_9xwDIZ=7a%-PtJQjANj^RW^lpZn$ma(zBcHDhsUaDw`{5~r=$V)iaJX+ zO5p1SLQP)piJuM1h*hrc_ma2n*5T!!b&`Vd8^tG?h2Nv2)wN^gHMN-6L94s;v&A%H zG5`6N%OBmYcyco(;#cD!J8nuRuhW5|y}XWwzvY=db5@q?oK59~6oY*Lsd~EA>swXC;AVpNw=@17$d-r5p+co_Uwb>sdDS8wxvdWw>Q~l8YiGWv? zRUbFE7djg^(@NLy9k6XOJvM6jTyRygBCeJX7nkeDG=e<$1a<+2=`m^!pMYB@Nm$ZnlG>6owirK}ic9RkVZ zHCqnDQkR_jqyO#t3_ZcLYadl*#_~o~&O@Ol?lvUIa(@TMhVwPW;j+hqBjkxwYkgN* zV?ACS$GFB2SAzOZoJiFg?`jjo6QH?$h!!#{Q!uH3%)`JyU^ggb`h7|JzW1<06$nF` zDA4nl{{vB#(APozHpHFtt;^^KjRZ4~8oE;FbaO(^=e;-QI6j)vX51%>N?FueR^Nfk z(7!I9&uwQXrw328vdUt+Q{~-#aSPTVJxn+f(Og(lwtyfaycO4Ydds{sT#%F}_JJ93 zv+EDF z3v-Mmmmg!S&*kxxmoqjBbI=@iCaqJURaSqhP-TP$ii@i`;t0L^t`@5Ua{Wr6%w3dJ z5X{PwQw5m3A1@?h+aZ8|r$nInh;YI|i;(Z3orZ;|s|==Sc60mA3Xd(>GIloE@Inl* z>xhPWpj1r}OMcRDTrK=nwX3V{1@$)a6KTTxj^qBPaQJ}9b>pPSI98r~x1{}^HebURPEU2BC?k&Hp0)Zr?t|TdwVM!61 z1?ijmcpgDAtOZiR8l<_Lg!^mAnZ@6I$3`dfiI7j`bg0|d!sjoW!%WX5_zbj7_O1RJ zV9voHwJxPUn?cl9Pw?~pbu0>-Ew{F2gJ9xzT>I^;rphdM>W>T0{CJQt7ao^*8&~^q z8|_-!7W>JADzRG|dkcl*rtisQ^l5)o;nznpTEDIg6fTnmJL=V+hY5$~&il|a35Cok zJKm1F)yS{DO;#zjb_$Tw4E0^KMt*Ql4!BrzaRpEZ(3)~w~v%{xm zGjjvKi~{X2#I%JfOSG%$&-;%9MXje)Nu_xz)=QtYZk3zb`?5; z4Yw_;!>PqJJ(pDE3qdSYkC&MvCHCkKTsHlYmc)}`)G^Uy196$G+uA<=Ac)>driL7! zm~m*yM4Bog>9qZyu4a36EzyD>ZOK6xKd=GnMM`jd(4YDXsNPv`1*{iC4jp>0W0B-5 zJx+LN;zsw&$Vpf{Fid_gGTIt75||*o8TniLA2y4HZwA{xa;aJ5HZdm_f=>KYxDyny#HLU=mgfzOMF4HoEKVKKA>JMa<#URDgyA zQ^Dv6i?0tEJ<o|v*m)sQf zK()QT@{0hxe|v&iZKo@U8ecbf%|C8&9q3OMV&%^`R2HT)Dnb$WqgQG`#tR z_=8E^F-9lN=98`aUgI9=gH<|?{!t}y0F@?Z(H@lcq^hG$`UWB6s+&T zvXfRiO>_Bqr9|UoitnG7xQ&zWcuu#{9znpyIxW|uS?;U_?gk(P7pS-&FnNZu0eM2y zzb;WQGkqyS@ovb0LgrH~oQZ#S^f+d_;&&iskBm4dmn|W={3{@q5C#QE!f~^F7!DA3YId6VjJy^zZh- zLkTDZzXn}p@S5c>T9H>(P@&nbfPC7`JK8cmt6EYuJ;Qo^W>v})-UIS{BA99^e<`9sm!5qpjPr(bvp-;WgLKnaE)8(o7SU#$?lWVdrXd8p<&3Y z&K!J|i$8OtPkn?=LtcOn?>Z1enSsJ8m{1X=sGw`~szwbG4d6xdT7qPO*i zCwsm7W}mz&9LY;Gz9FaIEtb%ov>wmTR-_n^qr)`rk^(FQ{)W_xXfG zV_h4Va%7*!*L~A|Z8jCs?66}!0ii|Lnt%KY;qE1g!St)H#G5qJp7QjlNbzmYhW8&yb^+)G49(!BAXi(M#0d6pOo5xUJF=$D`6a=(eBa+vPxHe7(F>=w>^^DQIelokO ztIiyLRk5&Nhku={VG+%*gTc)Y$WUnY1e*IITLEm@JjGzvbS3z?^*n4u&UzT&cOMoAZK@Ent&t- z&Y{{pxK}9)j#+hbLqUrz(Vs$w7O{~n8Ch%Dj9IS@Sk*@daGxGiw%lfP2ZaS^s% zNT18&W(wC8XB{Dj2?5p?;ahwkY%1{eL^nhai;)65E(|GahE5;Vc~C%y)0smEeaK?@ z0sI2ns4#Oopy>^ZkM3K;)#~V1*OxBCrsSd_3s2Zuss>LEUDMyiIP~|e`;NG0SRrt| zfaH4~Y=FnZ{H||2d*WxGKBQEi>k*kDtpwLY7nXlGhlVDTiAK)LBMpfC4LTRZzEc^# z=JTqY1cy8Ef|)5^W9VO$_3`BGBH*Vv=P?Re+s^Nky92-ZhkHlP=AK%sn{xQ6`it8u zKe@WSj&w79j9(qYi~!MRx(qL3(%0(u<-=P7z2FP<6`gKGx?RzGp9 z=$645->%rs2#{+qHD_jYwP*@RoK!}O>FJ;EFV%0B8=Jx9zCK%GqKUS4QRG?adrR_J z96vqknOx+A&~2N<%_t;YxBT`NT%BGjzdL#dez?#g3qm#KAziNzg9(Tflczd2dMh($ zI&EMAdT7Ns?p#yuCm_U6rrwRhvBWM%*~hj5Cmsq5=!2fOh(s2DGoZa{h$?zMU?Np1P|&f=#|H*Q4osp$?Np5824UsjhKR7;eM?y$INl@6vdj81AUq`j zfF%P1|9^VyZ{Ha-L6DdPuv?dT{+9aPKE1_*a+KD&!F8yV z+n9k-2d0^H+sbh$vl!=^^7i42X&&%IGxc}Z-_*3YG7Q{VdE zBYbx{`e29n03!8HFB1*KSMPzwtL#qd%Z!~nAxV%)KB4uepu|aSZoe6AkR7Pht!G(~ zX8EOQf!MJ!$<73iF>baJ8dLS~E)wq{&6+OTk)0tz`TEAp7CI_*W7|!x#`dPV-?pk9 z(qkhK@(JoxT=W+mFY7L*_1HcSSNu+g(NA5ij>rZH*2L3IbN;@e!BuZ^Vln(r z!BaS{3Sq7qPVJzapQ8Mf#$h7OMKF^bVM`NOnSwRDRX(}EC5l*Ii%U>P%|}BIXFN?L z+kfh7QaA5VC&xfflOThsz@f|1V7r}X&UaoRtcHZBA z9KE08P$;JN*!csC0e#UvQoWHwAAr{>k#R-LHqA?7uC|y-r$tF7Lt{i`4R7H{>;l;&W~9<3iwk4zKc$#9iLhI&DA<7jwP# zK-?cwU{qO2j9DlJ6A?tR+8@d(2poWEukyMB3SXHbj8)4+Pe1E=Si5N9y_i2)17P&* zuS(|5zhegeeLu~BD|m0)!Dt6!8*NvpnKxYxy$}81 zSf6pU*)EKdKtb;Hu5n8ZWNiMy_IOna-tq6&<-y_C8}#NalSB?g)8RX1s2AxUw2Ma} zhGt*U_mq-!_E_=u#*pa9lw4`)Sruk=WWmigQ*nqKkg65Y-G>gt`;Z0E%E7V+T0#rJTVzunZ%-RjvJg^e{|ZKIsmy<$()2f z-)8t*^$>XMh^?amH@D_674`4%kyMv=`Rj~#K! zpT#wG-%hH)Z!|IhLE%|VTU!NFEdzJC-`Q2>bOItBz8L9MPrVhB2CVoy;Sy-aM<)DQ zyBX$Y7Q#@7SRI*~gceiC0*H_bnCQ#U(B~%$fx;c}uD#;T)Ol?osdoz6I}$KC?f1$o zBhq0fht9;9y(Th^>{ThKvW;(Jf&mZ|3gL7Sn=g%Rwj&y7IjKUPV(;?899a5nKZ|BmY1pKkPw zCn}Ql3!x~~ja@PXWCZr4BqVY6OnkNG9R9kqI*U-&&}c5`@uEmP_{}Kai!E^1uYQ)N zOFz%fbjM^%)W}(7P;WkvLHl3tWeV{dfx2$JPA~`4^Wu@iRcoWy5OWGInjLe6kJ*+& zM!u6^MPw|s@4*$ZIIGXA_-3F(@e?J}^|a772)&neRE^g4D$+nA?7s1(f2xXHhZM+v z680S(C~iID*yMOw5AA*UxxOlUVQY8&>I=*P;RYtx;T*?hx5A4Sr6@S1iBLK|Jtx7Y zH+=kO9)i#~FBS{>dcrKT!rYK|@WxuM=2P6FTl8c-`y>fGLUQMk=? zwLdVbn%G9u!wG>*p&N6^*uJC3VsRBY74%v8c6pP2w^^L1Nq`NeMJcZrvm8*iPKyeC zn9^dFGh}|(6rgb?fD7jB*|l~QHhyH+@58=Wss?h95C6GKnSQDbDuX-?FrOf{4O{6e$ApaMPlFqK{Q_>sgv9N;{VM(cts5%UZ{u zO0LeWvbb8|>@Avkxl9qfIlV~BG2`4*c3-?691*Pz)N~HbURaE8RE{9% zlH-tE^Z$8|kpbt0p(|USUYdlMF^hg86R={2=n;y4vk-GAQb>~}vMaN(9AI#k zm>ApjxEv|V(#F?b?bI)KhE`H%3;6RhuHPzn!bB7f;e^e z9wspzxy6wVB2Ud!d7=38h1Mc|xGkLJe?6vFwD6?V+TE-+zPIHwB^Ee`o>;gLM;>kb zhLf~4{vgGi?|e5A+I2P9X2$)H%1IGu#$^z+9N}+_+HHTN>gRvu8RQS{5vNJ{YaC0& zOIu(G`al`4Vf_3!)U}p?A288*9wQ|K1e6yYAMbiK47e9=W*txiL*AM(QN1n_BI0Pt zP8z5yu?i`xvz)+{CF{*EF1cK|3hvc;e+HL(0teWch1qG{K9alBWt-vVk+T0WEV}mG z{&=E(IOjah{+XJ^`cVuz6{QE58dKBI0P(R7$^o*K++|e@6v)~Xj@Ez@Z0P&KbUtqX z{JPliwoN|3hrGVJ>$+;|INF4zFH*9kY+Tn-69RTZ_{}gFfN5%N9A#>6I$7!@E7xI| zf?cu;&$;ni6%{`@7b*f2jLwKEU)OY98|FYIx9G{GyJM(+4#&}$xkM=J=rvwPlqc3`qu48Y%CD&3ebK-z5ZG-(0Y&beh>0R16ckKyV10NCUU z{AE($hP~sy9?T}4zZ+R`A#aUK$tr#Ifcch27yH#erbKT#Wg1&q8&SW|N7cM+GNR z&rS_!t%Q1Yz3SVMS3rx+3R7|t9Ijc1g(NnVVZ3dw{-i>y@gy@&np*NcOSA@J5qjl% zzbxl=$g8*|_su<=F#$zFZILAb7*Y@zHsWJ4Fj*KOsU^ zM1Y{+>nL%vU2jB^jE{Z_ffNH$U}Mej;IV&{BfcP->hZ1Bl`Dx47li^Qr-wR5>RckG zmnzzp5;ts>LxZDP>@X?WXnJ|>*^0%l3Pn*S3g5Jvvpp*s!89r8Ho5}km3hC`h<#7- zaudUZ2#T|nhX!S+fE+mSE!A;?yJ^u7n(J<3p-2wKj{fVu@jjG*Iwo1fu|rW3a89Dl zkc0vWv{Umbeul7KKiZeiQIX%APjsb9JSS8Ssc}k{gdUO-{0yiK}8fpmb=mMf%pQyMnPLE++7HSYLz%fGOyNj83geSr_lv+xv2x zlk3qtZp#EnP`A>oW?FAJL>-1?&jn2d9D7qNPCNpdo?E3B zJb+z>>m4UJ9#(i?LfHvOm}te*@~81y`B9P^x18zQ+XFkvJ&{g|JQfe2q+zN8Nu<|+ z3uz-u&wJ2x)#BnJr=`3}Z_MSi?bZp#5!>J1YI!9r9$D+fN2|_*&xfzccX)iLrRCjZ z#NOaqs{T*z_qcLr_4au>e}uBCqx|vjEFr*Z+LQxK-Cn-d-LtU(=^|%|p}pF5gb*Pr zhX=GhFRPA&dgj+45g89H2$MXVl`cfv4N-N++h)cR=KFn7C$3`&wklHbFnk5j4w%R< zoM7M&A=2{TlG0IS7hE_X>g1}r6#~%4ETL&yBKezWRcYB?ZjszlIxlzOi!<2J1vs&_ zQNLYAozr-k;#Z&0kh$>eW)2U~0D&CH`ec2HnDYMH1Dl)8*&-eDDer5TtLyNw7`7eA zG^p*#D&JF{?U{gF2BfpV7RX6y^1mU9?RmFGmN;=ErX{xCv;JW~0|f9Im#^yftnqok z(2z{Ucn^dfH|rB+?W$*KOssh$8eU%gbZ8(6h3Mg1fG2sPtz{9?)IwlPQ{o3JJ92Cy+QA zne_AZGQ69wN4ZN2oMq0S27@ZW zl`037`Ti26@6Yvzo=XgK-0%2@gqZIP*mT(uX`?s4b?u2bntO~qr%#7m znh+fvQKC+EB3DyNNtfIG=)y-5H4zH1DS^r_d{@OXeAsf6(B>N1Aplu4P(Czl`&Ouu zGV(h(xGzC(KFRN&U)ZA86-g?NJb2d_soRkgIc%CdXBL?41q}!`;hiFoUVShsKkd?# zvv4jR2uk!39ifO)z!G4FIZdKz4ZPhHY&LFJzzGaAK*`y#()~+n zK`tJ2p6;(cEf+KEPG~>W@vn+uk)#1SNH0KOaVH>Zd@ZPK;KM&2nOlK&AW$w)E= zl5`F3FGk{Bm>|RhUZ^6(mv&*ia|fKRy6YiPGzPhQXG6KSxubrg+?(RsL^2ap=qNG= zh9((!&p%M6obN)E6gUeoEeu9eu*^1&Vsl@>$6M83s% z9}ZRzA617#7b$|zv5dLo`Pt(hZlW`yzFNFo>`EAu!&6wY`-3&TBgl}u!?E0fa3w3% z1~|^yL#b49`s0xF26>9_%{rI$)7tFWbV8i9c%oF#x3!(Crc!&(tPCYxmIezbDZZ|+ zT*zT{Yq{0^vj6sicB%5!BkXd6smUBhqc8T8yoibItntJk|B4iXc*dP9uIh9a9Si7V zV*$&=6v6s{%j3Ci&4BgiU0}&>3bZHXV_1h8E}jg?AyGVCwb0R|=aqZEn`Gi&^NpZE z^f%;a1W7cn$Df_BdOuaArSe1(F+`u9M14g`Y4Be;{PvHV2Vis1Wm6fCDRs4LX@Mo> zdgp;{;>w;%qt1UCPr_et3Ve{!Y$yX7-ANF7WMm6jP$Ci)?)`)uVOf!pSFpeINJ&U^ zOps8J#vjK;J)UaRsqz5yQa$2bqkT3;+NC diff --git a/node_modules/@actions/http-client/auth.d.ts b/node_modules/@actions/http-client/auth.d.ts deleted file mode 100644 index 1094189cf..000000000 --- a/node_modules/@actions/http-client/auth.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import ifm = require('./interfaces'); -export declare class BasicCredentialHandler implements ifm.IRequestHandler { - username: string; - password: string; - constructor(username: string, password: string); - prepareRequest(options: any): void; - canHandleAuthentication(response: ifm.IHttpClientResponse): boolean; - handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise; -} -export declare class BearerCredentialHandler implements ifm.IRequestHandler { - token: string; - constructor(token: string); - prepareRequest(options: any): void; - canHandleAuthentication(response: ifm.IHttpClientResponse): boolean; - handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise; -} -export declare class PersonalAccessTokenCredentialHandler implements ifm.IRequestHandler { - token: string; - constructor(token: string); - prepareRequest(options: any): void; - canHandleAuthentication(response: ifm.IHttpClientResponse): boolean; - handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise; -} diff --git a/node_modules/@actions/http-client/auth.js b/node_modules/@actions/http-client/auth.js deleted file mode 100644 index 67a58aa78..000000000 --- a/node_modules/@actions/http-client/auth.js +++ /dev/null @@ -1,58 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -class BasicCredentialHandler { - constructor(username, password) { - this.username = username; - this.password = password; - } - prepareRequest(options) { - options.headers['Authorization'] = - 'Basic ' + - Buffer.from(this.username + ':' + this.password).toString('base64'); - } - // This handler cannot handle 401 - canHandleAuthentication(response) { - return false; - } - handleAuthentication(httpClient, requestInfo, objs) { - return null; - } -} -exports.BasicCredentialHandler = BasicCredentialHandler; -class BearerCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - options.headers['Authorization'] = 'Bearer ' + this.token; - } - // This handler cannot handle 401 - canHandleAuthentication(response) { - return false; - } - handleAuthentication(httpClient, requestInfo, objs) { - return null; - } -} -exports.BearerCredentialHandler = BearerCredentialHandler; -class PersonalAccessTokenCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - options.headers['Authorization'] = - 'Basic ' + Buffer.from('PAT:' + this.token).toString('base64'); - } - // This handler cannot handle 401 - canHandleAuthentication(response) { - return false; - } - handleAuthentication(httpClient, requestInfo, objs) { - return null; - } -} -exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; diff --git a/node_modules/@actions/http-client/index.d.ts b/node_modules/@actions/http-client/index.d.ts deleted file mode 100644 index 9583dc72a..000000000 --- a/node_modules/@actions/http-client/index.d.ts +++ /dev/null @@ -1,124 +0,0 @@ -/// -import http = require('http'); -import ifm = require('./interfaces'); -export declare enum HttpCodes { - OK = 200, - MultipleChoices = 300, - MovedPermanently = 301, - ResourceMoved = 302, - SeeOther = 303, - NotModified = 304, - UseProxy = 305, - SwitchProxy = 306, - TemporaryRedirect = 307, - PermanentRedirect = 308, - BadRequest = 400, - Unauthorized = 401, - PaymentRequired = 402, - Forbidden = 403, - NotFound = 404, - MethodNotAllowed = 405, - NotAcceptable = 406, - ProxyAuthenticationRequired = 407, - RequestTimeout = 408, - Conflict = 409, - Gone = 410, - TooManyRequests = 429, - InternalServerError = 500, - NotImplemented = 501, - BadGateway = 502, - ServiceUnavailable = 503, - GatewayTimeout = 504 -} -export declare enum Headers { - Accept = "accept", - ContentType = "content-type" -} -export declare enum MediaTypes { - ApplicationJson = "application/json" -} -/** - * Returns the proxy URL, depending upon the supplied url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ -export declare function getProxyUrl(serverUrl: string): string; -export declare class HttpClientError extends Error { - constructor(message: string, statusCode: number); - statusCode: number; - result?: any; -} -export declare class HttpClientResponse implements ifm.IHttpClientResponse { - constructor(message: http.IncomingMessage); - message: http.IncomingMessage; - readBody(): Promise; -} -export declare function isHttps(requestUrl: string): boolean; -export declare class HttpClient { - userAgent: string | undefined; - handlers: ifm.IRequestHandler[]; - requestOptions: ifm.IRequestOptions; - private _ignoreSslError; - private _socketTimeout; - private _allowRedirects; - private _allowRedirectDowngrade; - private _maxRedirects; - private _allowRetries; - private _maxRetries; - private _agent; - private _proxyAgent; - private _keepAlive; - private _disposed; - constructor(userAgent?: string, handlers?: ifm.IRequestHandler[], requestOptions?: ifm.IRequestOptions); - options(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise; - get(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise; - del(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise; - post(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise; - patch(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise; - put(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise; - head(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise; - sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: ifm.IHeaders): Promise; - /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise - */ - getJson(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise>; - postJson(requestUrl: string, obj: any, additionalHeaders?: ifm.IHeaders): Promise>; - putJson(requestUrl: string, obj: any, additionalHeaders?: ifm.IHeaders): Promise>; - patchJson(requestUrl: string, obj: any, additionalHeaders?: ifm.IHeaders): Promise>; - /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch - */ - request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: ifm.IHeaders): Promise; - /** - * Needs to be called if keepAlive is set to true in request options. - */ - dispose(): void; - /** - * Raw request. - * @param info - * @param data - */ - requestRaw(info: ifm.IRequestInfo, data: string | NodeJS.ReadableStream): Promise; - /** - * Raw request with callback. - * @param info - * @param data - * @param onResult - */ - requestRawWithCallback(info: ifm.IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: ifm.IHttpClientResponse) => void): void; - /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - getAgent(serverUrl: string): http.Agent; - private _prepareRequest; - private _mergeHeaders; - private _getExistingOrDefaultHeader; - private _getAgent; - private _performExponentialBackoff; - private static dateTimeDeserializer; - private _processResponse; -} diff --git a/node_modules/@actions/http-client/index.js b/node_modules/@actions/http-client/index.js deleted file mode 100644 index 5c54cf84b..000000000 --- a/node_modules/@actions/http-client/index.js +++ /dev/null @@ -1,535 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const http = require("http"); -const https = require("https"); -const pm = require("./proxy"); -let tunnel; -var HttpCodes; -(function (HttpCodes) { - HttpCodes[HttpCodes["OK"] = 200] = "OK"; - HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; - HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; - HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; - HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; - HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; - HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; - HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; - HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; - HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; - HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; - HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; - HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; - HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; - HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; - HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; - HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; - HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; - HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; - HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; - HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; - HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; - HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; - HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; - HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; - HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; - HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; -})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); -var Headers; -(function (Headers) { - Headers["Accept"] = "accept"; - Headers["ContentType"] = "content-type"; -})(Headers = exports.Headers || (exports.Headers = {})); -var MediaTypes; -(function (MediaTypes) { - MediaTypes["ApplicationJson"] = "application/json"; -})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); -/** - * Returns the proxy URL, depending upon the supplied url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ -function getProxyUrl(serverUrl) { - let proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ''; -} -exports.getProxyUrl = getProxyUrl; -const HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect -]; -const HttpResponseRetryCodes = [ - HttpCodes.BadGateway, - HttpCodes.ServiceUnavailable, - HttpCodes.GatewayTimeout -]; -const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; -const ExponentialBackoffCeiling = 10; -const ExponentialBackoffTimeSlice = 5; -class HttpClientError extends Error { - constructor(message, statusCode) { - super(message); - this.name = 'HttpClientError'; - this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); - } -} -exports.HttpClientError = HttpClientError; -class HttpClientResponse { - constructor(message) { - this.message = message; - } - readBody() { - return new Promise(async (resolve, reject) => { - let output = Buffer.alloc(0); - this.message.on('data', (chunk) => { - output = Buffer.concat([output, chunk]); - }); - this.message.on('end', () => { - resolve(output.toString()); - }); - }); - } -} -exports.HttpClientResponse = HttpClientResponse; -function isHttps(requestUrl) { - let parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === 'https:'; -} -exports.isHttps = isHttps; -class HttpClient { - constructor(userAgent, handlers, requestOptions) { - this._ignoreSslError = false; - this._allowRedirects = true; - this._allowRedirectDowngrade = false; - this._maxRedirects = 50; - this._allowRetries = false; - this._maxRetries = 1; - this._keepAlive = false; - this._disposed = false; - this.userAgent = userAgent; - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; - } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; - } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; - } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); - } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; - } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; - } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; - } - } - } - options(requestUrl, additionalHeaders) { - return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); - } - get(requestUrl, additionalHeaders) { - return this.request('GET', requestUrl, null, additionalHeaders || {}); - } - del(requestUrl, additionalHeaders) { - return this.request('DELETE', requestUrl, null, additionalHeaders || {}); - } - post(requestUrl, data, additionalHeaders) { - return this.request('POST', requestUrl, data, additionalHeaders || {}); - } - patch(requestUrl, data, additionalHeaders) { - return this.request('PATCH', requestUrl, data, additionalHeaders || {}); - } - put(requestUrl, data, additionalHeaders) { - return this.request('PUT', requestUrl, data, additionalHeaders || {}); - } - head(requestUrl, additionalHeaders) { - return this.request('HEAD', requestUrl, null, additionalHeaders || {}); - } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return this.request(verb, requestUrl, stream, additionalHeaders); - } - /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise - */ - async getJson(requestUrl, additionalHeaders = {}) { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - let res = await this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - } - async postJson(requestUrl, obj, additionalHeaders = {}) { - let data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - let res = await this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - } - async putJson(requestUrl, obj, additionalHeaders = {}) { - let data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - let res = await this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - } - async patchJson(requestUrl, obj, additionalHeaders = {}) { - let data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - let res = await this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - } - /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch - */ - async request(verb, requestUrl, data, headers) { - if (this._disposed) { - throw new Error('Client has already been disposed.'); - } - let parsedUrl = new URL(requestUrl); - let info = this._prepareRequest(verb, parsedUrl, headers); - // Only perform retries on reads since writes may not be idempotent. - let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1 - ? this._maxRetries + 1 - : 1; - let numTries = 0; - let response; - while (numTries < maxTries) { - response = await this.requestRaw(info, data); - // Check if it's an authentication challenge - if (response && - response.message && - response.message.statusCode === HttpCodes.Unauthorized) { - let authenticationHandler; - for (let i = 0; i < this.handlers.length; i++) { - if (this.handlers[i].canHandleAuthentication(response)) { - authenticationHandler = this.handlers[i]; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } - else { - // We have received an unauthorized response but have no handlers to handle it. - // Let the response return to the caller. - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 && - this._allowRedirects && - redirectsRemaining > 0) { - const redirectUrl = response.message.headers['location']; - if (!redirectUrl) { - // if there's no location to redirect to, we won't - break; - } - let parsedRedirectUrl = new URL(redirectUrl); - if (parsedUrl.protocol == 'https:' && - parsedUrl.protocol != parsedRedirectUrl.protocol && - !this._allowRedirectDowngrade) { - throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); - } - // we need to finish reading the response before reassigning response - // which will leak the open socket. - await response.readBody(); - // strip authorization header if redirected to a different hostname - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (let header in headers) { - // header names are case insensitive - if (header.toLowerCase() === 'authorization') { - delete headers[header]; - } - } - } - // let's make the request with the new redirectUrl - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = await this.requestRaw(info, data); - redirectsRemaining--; - } - if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) { - // If not a retry code, return immediately instead of retrying - return response; - } - numTries += 1; - if (numTries < maxTries) { - await response.readBody(); - await this._performExponentialBackoff(numTries); - } - } - return response; - } - /** - * Needs to be called if keepAlive is set to true in request options. - */ - dispose() { - if (this._agent) { - this._agent.destroy(); - } - this._disposed = true; - } - /** - * Raw request. - * @param info - * @param data - */ - requestRaw(info, data) { - return new Promise((resolve, reject) => { - let callbackForResult = function (err, res) { - if (err) { - reject(err); - } - resolve(res); - }; - this.requestRawWithCallback(info, data, callbackForResult); - }); - } - /** - * Raw request with callback. - * @param info - * @param data - * @param onResult - */ - requestRawWithCallback(info, data, onResult) { - let socket; - if (typeof data === 'string') { - info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); - } - let callbackCalled = false; - let handleResult = (err, res) => { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); - } - }; - let req = info.httpModule.request(info.options, (msg) => { - let res = new HttpClientResponse(msg); - handleResult(null, res); - }); - req.on('socket', sock => { - socket = sock; - }); - // If we ever get disconnected, we want the socket to timeout eventually - req.setTimeout(this._socketTimeout || 3 * 60000, () => { - if (socket) { - socket.end(); - } - handleResult(new Error('Request timeout: ' + info.options.path), null); - }); - req.on('error', function (err) { - // err has statusCode property - // res should have headers - handleResult(err, null); - }); - if (data && typeof data === 'string') { - req.write(data, 'utf8'); - } - if (data && typeof data !== 'string') { - data.on('close', function () { - req.end(); - }); - data.pipe(req); - } - else { - req.end(); - } - } - /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - getAgent(serverUrl) { - let parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); - } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === 'https:'; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port - ? parseInt(info.parsedUrl.port) - : defaultPort; - info.options.path = - (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers['user-agent'] = this.userAgent; - } - info.options.agent = this._getAgent(info.parsedUrl); - // gives handlers an opportunity to participate - if (this.handlers) { - this.handlers.forEach(handler => { - handler.prepareRequest(info.options); - }); - } - return info; - } - _mergeHeaders(headers) { - const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers)); - } - return lowercaseKeys(headers || {}); - } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; - } - return additionalHeaders[header] || clientHeader || _default; - } - _getAgent(parsedUrl) { - let agent; - let proxyUrl = pm.getProxyUrl(parsedUrl); - let useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (this._keepAlive && !useProxy) { - agent = this._agent; - } - // if agent is already assigned use that agent. - if (!!agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === 'https:'; - let maxSockets = 100; - if (!!this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; - } - if (useProxy) { - // If using proxy, need tunnel - if (!tunnel) { - tunnel = require('tunnel'); - } - const agentOptions = { - maxSockets: maxSockets, - keepAlive: this._keepAlive, - proxy: { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`, - host: proxyUrl.hostname, - port: proxyUrl.port - } - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === 'https:'; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } - else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; - } - // if reusing agent across request and tunneling agent isn't assigned create a new agent - if (this._keepAlive && !agent) { - const options = { keepAlive: this._keepAlive, maxSockets: maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; - } - // if not using private agent and tunnel agent isn't setup then use global agent - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; - } - if (usingSsl && this._ignoreSslError) { - // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process - // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options - // we have to cast it to any and change it directly - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false - }); - } - return agent; - } - _performExponentialBackoff(retryNumber) { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise(resolve => setTimeout(() => resolve(), ms)); - } - static dateTimeDeserializer(key, value) { - if (typeof value === 'string') { - let a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } - } - return value; - } - async _processResponse(res, options) { - return new Promise(async (resolve, reject) => { - const statusCode = res.message.statusCode; - const response = { - statusCode: statusCode, - result: null, - headers: {} - }; - // not found leads to null obj returned - if (statusCode == HttpCodes.NotFound) { - resolve(response); - } - let obj; - let contents; - // get the result from the body - try { - contents = await res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, HttpClient.dateTimeDeserializer); - } - else { - obj = JSON.parse(contents); - } - response.result = obj; - } - response.headers = res.message.headers; - } - catch (err) { - // Invalid resource (contents not json); leaving result obj null - } - // note that 3xx redirects are handled by the http layer. - if (statusCode > 299) { - let msg; - // if exception/error in body, attempt to get better error - if (obj && obj.message) { - msg = obj.message; - } - else if (contents && contents.length > 0) { - // it may be the case that the exception is in the body message as string - msg = contents; - } - else { - msg = 'Failed request: (' + statusCode + ')'; - } - let err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } - else { - resolve(response); - } - }); - } -} -exports.HttpClient = HttpClient; diff --git a/node_modules/@actions/http-client/interfaces.d.ts b/node_modules/@actions/http-client/interfaces.d.ts deleted file mode 100644 index 78bd85b34..000000000 --- a/node_modules/@actions/http-client/interfaces.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -/// -import http = require('http'); -export interface IHeaders { - [key: string]: any; -} -export interface IHttpClient { - options(requestUrl: string, additionalHeaders?: IHeaders): Promise; - get(requestUrl: string, additionalHeaders?: IHeaders): Promise; - del(requestUrl: string, additionalHeaders?: IHeaders): Promise; - post(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise; - patch(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise; - put(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise; - sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: IHeaders): Promise; - request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: IHeaders): Promise; - requestRaw(info: IRequestInfo, data: string | NodeJS.ReadableStream): Promise; - requestRawWithCallback(info: IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: IHttpClientResponse) => void): void; -} -export interface IRequestHandler { - prepareRequest(options: http.RequestOptions): void; - canHandleAuthentication(response: IHttpClientResponse): boolean; - handleAuthentication(httpClient: IHttpClient, requestInfo: IRequestInfo, objs: any): Promise; -} -export interface IHttpClientResponse { - message: http.IncomingMessage; - readBody(): Promise; -} -export interface IRequestInfo { - options: http.RequestOptions; - parsedUrl: URL; - httpModule: any; -} -export interface IRequestOptions { - headers?: IHeaders; - socketTimeout?: number; - ignoreSslError?: boolean; - allowRedirects?: boolean; - allowRedirectDowngrade?: boolean; - maxRedirects?: number; - maxSockets?: number; - keepAlive?: boolean; - deserializeDates?: boolean; - allowRetries?: boolean; - maxRetries?: number; -} -export interface ITypedResponse { - statusCode: number; - result: T | null; - headers: Object; -} diff --git a/node_modules/@actions/http-client/interfaces.js b/node_modules/@actions/http-client/interfaces.js deleted file mode 100644 index c8ad2e549..000000000 --- a/node_modules/@actions/http-client/interfaces.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@actions/http-client/package.json b/node_modules/@actions/http-client/package.json deleted file mode 100644 index a86020cb3..000000000 --- a/node_modules/@actions/http-client/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "_from": "@actions/http-client@^1.0.8", - "_id": "@actions/http-client@1.0.9", - "_inBundle": false, - "_integrity": "sha512-0O4SsJ7q+MK0ycvXPl2e6bMXV7dxAXOGjrXS1eTF9s2S401Tp6c/P3c3Joz04QefC1J6Gt942Wl2jbm3f4mLcg==", - "_location": "/@actions/http-client", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@actions/http-client@^1.0.8", - "name": "@actions/http-client", - "escapedName": "@actions%2fhttp-client", - "scope": "@actions", - "rawSpec": "^1.0.8", - "saveSpec": null, - "fetchSpec": "^1.0.8" - }, - "_requiredBy": [ - "/@actions/github" - ], - "_resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.9.tgz", - "_shasum": "af1947d020043dbc6a3b4c5918892095c30ffb52", - "_spec": "@actions/http-client@^1.0.8", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@actions\\github", - "author": { - "name": "GitHub, Inc." - }, - "bugs": { - "url": "https://github.com/actions/http-client/issues" - }, - "bundleDependencies": false, - "dependencies": { - "tunnel": "0.0.6" - }, - "deprecated": false, - "description": "Actions Http Client", - "devDependencies": { - "@types/jest": "^25.1.4", - "@types/node": "^12.12.31", - "jest": "^25.1.0", - "prettier": "^2.0.4", - "proxy": "^1.0.1", - "ts-jest": "^25.2.1", - "typescript": "^3.8.3" - }, - "homepage": "https://github.com/actions/http-client#readme", - "keywords": [ - "Actions", - "Http" - ], - "license": "MIT", - "main": "index.js", - "name": "@actions/http-client", - "repository": { - "type": "git", - "url": "git+https://github.com/actions/http-client.git" - }, - "scripts": { - "audit-check": "npm audit --audit-level=moderate", - "build": "rm -Rf ./_out && tsc && cp package*.json ./_out && cp *.md ./_out && cp LICENSE ./_out && cp actions.png ./_out", - "format": "prettier --write *.ts && prettier --write **/*.ts", - "format-check": "prettier --check *.ts && prettier --check **/*.ts", - "test": "jest" - }, - "version": "1.0.9" -} diff --git a/node_modules/@actions/http-client/proxy.d.ts b/node_modules/@actions/http-client/proxy.d.ts deleted file mode 100644 index 459986540..000000000 --- a/node_modules/@actions/http-client/proxy.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function getProxyUrl(reqUrl: URL): URL | undefined; -export declare function checkBypass(reqUrl: URL): boolean; diff --git a/node_modules/@actions/http-client/proxy.js b/node_modules/@actions/http-client/proxy.js deleted file mode 100644 index 88f00ecd1..000000000 --- a/node_modules/@actions/http-client/proxy.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function getProxyUrl(reqUrl) { - let usingSsl = reqUrl.protocol === 'https:'; - let proxyUrl; - if (checkBypass(reqUrl)) { - return proxyUrl; - } - let proxyVar; - if (usingSsl) { - proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY']; - } - else { - proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY']; - } - if (proxyVar) { - proxyUrl = new URL(proxyVar); - } - return proxyUrl; -} -exports.getProxyUrl = getProxyUrl; -function checkBypass(reqUrl) { - if (!reqUrl.hostname) { - return false; - } - let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; - if (!noProxy) { - return false; - } - // Determine the request port - let reqPort; - if (reqUrl.port) { - reqPort = Number(reqUrl.port); - } - else if (reqUrl.protocol === 'http:') { - reqPort = 80; - } - else if (reqUrl.protocol === 'https:') { - reqPort = 443; - } - // Format the request hostname and hostname with port - let upperReqHosts = [reqUrl.hostname.toUpperCase()]; - if (typeof reqPort === 'number') { - upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); - } - // Compare request host against noproxy - for (let upperNoProxyItem of noProxy - .split(',') - .map(x => x.trim().toUpperCase()) - .filter(x => x)) { - if (upperReqHosts.some(x => x === upperNoProxyItem)) { - return true; - } - } - return false; -} -exports.checkBypass = checkBypass; diff --git a/node_modules/@octokit/auth-token/LICENSE b/node_modules/@octokit/auth-token/LICENSE deleted file mode 100644 index ef2c18ee5..000000000 --- a/node_modules/@octokit/auth-token/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/@octokit/auth-token/README.md b/node_modules/@octokit/auth-token/README.md deleted file mode 100644 index 4afeb9599..000000000 --- a/node_modules/@octokit/auth-token/README.md +++ /dev/null @@ -1,271 +0,0 @@ -# auth-token.js - -> GitHub API token authentication for browsers and Node.js - -[![@latest](https://img.shields.io/npm/v/@octokit/auth-token.svg)](https://www.npmjs.com/package/@octokit/auth-token) -[![Build Status](https://github.com/octokit/auth-token.js/workflows/Test/badge.svg)](https://github.com/octokit/auth-token.js/actions?query=workflow%3ATest) - -`@octokit/auth-token` is the simplest of [GitHub’s authentication strategies](https://github.com/octokit/auth.js). - -It is useful if you want to support multiple authentication strategies, as it’s API is compatible with its sibling packages for [basic](https://github.com/octokit/auth-basic.js), [GitHub App](https://github.com/octokit/auth-app.js) and [OAuth app](https://github.com/octokit/auth.js) authentication. - - - -- [Usage](#usage) -- [`createTokenAuth(token) options`](#createtokenauthtoken-options) -- [`auth()`](#auth) -- [Authentication object](#authentication-object) -- [`auth.hook(request, route, options)` or `auth.hook(request, options)`](#authhookrequest-route-options-or-authhookrequest-options) -- [Find more information](#find-more-information) - - [Find out what scopes are enabled for oauth tokens](#find-out-what-scopes-are-enabled-for-oauth-tokens) - - [Find out if token is a personal access token or if it belongs to an OAuth app](#find-out-if-token-is-a-personal-access-token-or-if-it-belongs-to-an-oauth-app) - - [Find out what permissions are enabled for a repository](#find-out-what-permissions-are-enabled-for-a-repository) - - [Use token for git operations](#use-token-for-git-operations) -- [License](#license) - - - -## Usage - - - - - - -
-Browsers - - -Load `@octokit/auth-token` directly from [cdn.skypack.dev](https://cdn.skypack.dev) - -```html - -``` - -
-Node - - -Install with npm install @octokit/auth-token - -```js -const { createTokenAuth } = require("@octokit/auth-token"); -// or: import { createTokenAuth } from "@octokit/auth-token"; -``` - -
- -```js -const auth = createTokenAuth("1234567890abcdef1234567890abcdef12345678"); -const authentication = await auth(); -// { -// type: 'token', -// token: '1234567890abcdef1234567890abcdef12345678', -// tokenType: 'oauth' -// } -``` - -## `createTokenAuth(token) options` - -The `createTokenAuth` method accepts a single argument of type string, which is the token. The passed token can be one of the following: - -- [Personal access token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line) -- [OAuth access token](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/) -- Installation access token ([GitHub App Installation](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)) -- [GITHUB_TOKEN provided to GitHub Actions](https://developer.github.com/actions/creating-github-actions/accessing-the-runtime-environment/#environment-variables) - -Examples - -```js -// Personal access token or OAuth access token -createTokenAuth("1234567890abcdef1234567890abcdef12345678"); - -// Installation access token or GitHub Action token -createTokenAuth("v1.d3d433526f780fbcc3129004e2731b3904ad0b86"); -``` - -## `auth()` - -The `auth()` method has no options. It returns a promise which resolves with the the authentication object. - -## Authentication object - - - - - - - - - - - - - - - - - - - - - - - - - - -
- name - - type - - description -
- type - - string - - "token" -
- token - - string - - The provided token. -
- tokenType - - string - - Can be either "oauth" for personal access tokens and OAuth tokens, or "installation" for installation access tokens (includes GITHUB_TOKEN provided to GitHub Actions) -
- -## `auth.hook(request, route, options)` or `auth.hook(request, options)` - -`auth.hook()` hooks directly into the request life cycle. It authenticates the request using the provided token. - -The `request` option is an instance of [`@octokit/request`](https://github.com/octokit/request.js#readme). The `route`/`options` parameters are the same as for the [`request()` method](https://github.com/octokit/request.js#request). - -`auth.hook()` can be called directly to send an authenticated request - -```js -const { data: authorizations } = await auth.hook( - request, - "GET /authorizations" -); -``` - -Or it can be passed as option to [`request()`](https://github.com/octokit/request.js#request). - -```js -const requestWithAuth = request.defaults({ - request: { - hook: auth.hook, - }, -}); - -const { data: authorizations } = await requestWithAuth("GET /authorizations"); -``` - -## Find more information - -`auth()` does not send any requests, it only transforms the provided token string into an authentication object. - -Here is a list of things you can do to retrieve further information - -### Find out what scopes are enabled for oauth tokens - -Note that this does not work for installations. There is no way to retrieve permissions based on an installation access tokens. - -```js -const TOKEN = "1234567890abcdef1234567890abcdef12345678"; - -const auth = createTokenAuth(TOKEN); -const authentication = await auth(); - -const response = await request("HEAD /", { - headers: authentication.headers, -}); -const scopes = response.headers["x-oauth-scopes"].split(/,\s+/); - -if (scopes.length) { - console.log( - `"${TOKEN}" has ${scopes.length} scopes enabled: ${scopes.join(", ")}` - ); -} else { - console.log(`"${TOKEN}" has no scopes enabled`); -} -``` - -### Find out if token is a personal access token or if it belongs to an OAuth app - -```js -const TOKEN = "1234567890abcdef1234567890abcdef12345678"; - -const auth = createTokenAuth(TOKEN); -const authentication = await auth(); - -const response = await request("HEAD /", { - headers: authentication.headers, -}); -const clientId = response.headers["x-oauth-client-id"]; - -if (clientId) { - console.log( - `"${token}" is an OAuth token, its app’s client_id is ${clientId}.` - ); -} else { - console.log(`"${token}" is a personal access token`); -} -``` - -### Find out what permissions are enabled for a repository - -Note that the `permissions` key is not set when authenticated using an installation access token. - -```js -const TOKEN = "1234567890abcdef1234567890abcdef12345678"; - -const auth = createTokenAuth(TOKEN); -const authentication = await auth(); - -const response = await request("GET /repos/:owner/:repo", { - owner: 'octocat', - repo: 'hello-world' - headers: authentication.headers -}); - -console.log(response.data.permissions) -// { -// admin: true, -// push: true, -// pull: true -// } -``` - -### Use token for git operations - -Both OAuth and installation access tokens can be used for git operations. However, when using with an installation, [the token must be prefixed with `x-access-token`](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation). - -This example is using the [`execa`](https://github.com/sindresorhus/execa) package to run a `git push` command. - -```js -const TOKEN = "1234567890abcdef1234567890abcdef12345678"; - -const auth = createTokenAuth(TOKEN); -const { token, tokenType } = await auth(); -const tokenWithPrefix = - tokenType === "installation" ? `x-access-token:${token}` : token; - -const repositoryUrl = `https://${tokenWithPrefix}@github.com/octocat/hello-world.git`; - -const { stdout } = await execa("git", ["push", repositoryUrl]); -console.log(stdout); -``` - -## License - -[MIT](LICENSE) diff --git a/node_modules/@octokit/auth-token/dist-node/index.js b/node_modules/@octokit/auth-token/dist-node/index.js deleted file mode 100644 index 1394a5da2..000000000 --- a/node_modules/@octokit/auth-token/dist-node/index.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -async function auth(token) { - const tokenType = token.split(/\./).length === 3 ? "app" : /^v\d+\./.test(token) ? "installation" : "oauth"; - return { - type: "token", - token: token, - tokenType - }; -} - -/** - * Prefix token for usage in the Authorization header - * - * @param token OAuth token or JSON Web Token - */ -function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - - return `token ${token}`; -} - -async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); -} - -const createTokenAuth = function createTokenAuth(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - - if (typeof token !== "string") { - throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); - } - - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); -}; - -exports.createTokenAuth = createTokenAuth; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/auth-token/dist-node/index.js.map b/node_modules/@octokit/auth-token/dist-node/index.js.map deleted file mode 100644 index 8a92b69bb..000000000 --- a/node_modules/@octokit/auth-token/dist-node/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/auth.js","../dist-src/with-authorization-prefix.js","../dist-src/hook.js","../dist-src/index.js"],"sourcesContent":["export async function auth(token) {\n const tokenType = token.split(/\\./).length === 3\n ? \"app\"\n : /^v\\d+\\./.test(token)\n ? \"installation\"\n : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType\n };\n}\n","/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nexport function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n","import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nexport async function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n","import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nexport const createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n"],"names":["auth","token","tokenType","split","length","test","type","withAuthorizationPrefix","hook","request","route","parameters","endpoint","merge","headers","authorization","createTokenAuth","Error","replace","Object","assign","bind"],"mappings":";;;;AAAO,eAAeA,IAAf,CAAoBC,KAApB,EAA2B;AAC9B,QAAMC,SAAS,GAAGD,KAAK,CAACE,KAAN,CAAY,IAAZ,EAAkBC,MAAlB,KAA6B,CAA7B,GACZ,KADY,GAEZ,UAAUC,IAAV,CAAeJ,KAAf,IACI,cADJ,GAEI,OAJV;AAKA,SAAO;AACHK,IAAAA,IAAI,EAAE,OADH;AAEHL,IAAAA,KAAK,EAAEA,KAFJ;AAGHC,IAAAA;AAHG,GAAP;AAKH;;ACXD;;;;;AAKA,AAAO,SAASK,uBAAT,CAAiCN,KAAjC,EAAwC;AAC3C,MAAIA,KAAK,CAACE,KAAN,CAAY,IAAZ,EAAkBC,MAAlB,KAA6B,CAAjC,EAAoC;AAChC,WAAQ,UAASH,KAAM,EAAvB;AACH;;AACD,SAAQ,SAAQA,KAAM,EAAtB;AACH;;ACTM,eAAeO,IAAf,CAAoBP,KAApB,EAA2BQ,OAA3B,EAAoCC,KAApC,EAA2CC,UAA3C,EAAuD;AAC1D,QAAMC,QAAQ,GAAGH,OAAO,CAACG,QAAR,CAAiBC,KAAjB,CAAuBH,KAAvB,EAA8BC,UAA9B,CAAjB;AACAC,EAAAA,QAAQ,CAACE,OAAT,CAAiBC,aAAjB,GAAiCR,uBAAuB,CAACN,KAAD,CAAxD;AACA,SAAOQ,OAAO,CAACG,QAAD,CAAd;AACH;;MCHYI,eAAe,GAAG,SAASA,eAAT,CAAyBf,KAAzB,EAAgC;AAC3D,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAIgB,KAAJ,CAAU,0DAAV,CAAN;AACH;;AACD,MAAI,OAAOhB,KAAP,KAAiB,QAArB,EAA+B;AAC3B,UAAM,IAAIgB,KAAJ,CAAU,uEAAV,CAAN;AACH;;AACDhB,EAAAA,KAAK,GAAGA,KAAK,CAACiB,OAAN,CAAc,oBAAd,EAAoC,EAApC,CAAR;AACA,SAAOC,MAAM,CAACC,MAAP,CAAcpB,IAAI,CAACqB,IAAL,CAAU,IAAV,EAAgBpB,KAAhB,CAAd,EAAsC;AACzCO,IAAAA,IAAI,EAAEA,IAAI,CAACa,IAAL,CAAU,IAAV,EAAgBpB,KAAhB;AADmC,GAAtC,CAAP;AAGH,CAXM;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/auth-token/dist-src/auth.js b/node_modules/@octokit/auth-token/dist-src/auth.js deleted file mode 100644 index 2d5005c22..000000000 --- a/node_modules/@octokit/auth-token/dist-src/auth.js +++ /dev/null @@ -1,12 +0,0 @@ -export async function auth(token) { - const tokenType = token.split(/\./).length === 3 - ? "app" - : /^v\d+\./.test(token) - ? "installation" - : "oauth"; - return { - type: "token", - token: token, - tokenType - }; -} diff --git a/node_modules/@octokit/auth-token/dist-src/hook.js b/node_modules/@octokit/auth-token/dist-src/hook.js deleted file mode 100644 index f8e47f0c2..000000000 --- a/node_modules/@octokit/auth-token/dist-src/hook.js +++ /dev/null @@ -1,6 +0,0 @@ -import { withAuthorizationPrefix } from "./with-authorization-prefix"; -export async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); -} diff --git a/node_modules/@octokit/auth-token/dist-src/index.js b/node_modules/@octokit/auth-token/dist-src/index.js deleted file mode 100644 index 114fd4554..000000000 --- a/node_modules/@octokit/auth-token/dist-src/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import { auth } from "./auth"; -import { hook } from "./hook"; -export const createTokenAuth = function createTokenAuth(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - if (typeof token !== "string") { - throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); - } - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); -}; diff --git a/node_modules/@octokit/auth-token/dist-src/types.js b/node_modules/@octokit/auth-token/dist-src/types.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js b/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js deleted file mode 100644 index 90358136e..000000000 --- a/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Prefix token for usage in the Authorization header - * - * @param token OAuth token or JSON Web Token - */ -export function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - return `token ${token}`; -} diff --git a/node_modules/@octokit/auth-token/dist-types/auth.d.ts b/node_modules/@octokit/auth-token/dist-types/auth.d.ts deleted file mode 100644 index dc4183585..000000000 --- a/node_modules/@octokit/auth-token/dist-types/auth.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Token, Authentication } from "./types"; -export declare function auth(token: Token): Promise; diff --git a/node_modules/@octokit/auth-token/dist-types/hook.d.ts b/node_modules/@octokit/auth-token/dist-types/hook.d.ts deleted file mode 100644 index 21e4b6fcd..000000000 --- a/node_modules/@octokit/auth-token/dist-types/hook.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { AnyResponse, EndpointOptions, RequestInterface, RequestParameters, Route, Token } from "./types"; -export declare function hook(token: Token, request: RequestInterface, route: Route | EndpointOptions, parameters?: RequestParameters): Promise; diff --git a/node_modules/@octokit/auth-token/dist-types/index.d.ts b/node_modules/@octokit/auth-token/dist-types/index.d.ts deleted file mode 100644 index 599942937..000000000 --- a/node_modules/@octokit/auth-token/dist-types/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { StrategyInterface, Token, Authentication } from "./types"; -export declare type Types = { - StrategyOptions: Token; - AuthOptions: never; - Authentication: Authentication; -}; -export declare const createTokenAuth: StrategyInterface; diff --git a/node_modules/@octokit/auth-token/dist-types/types.d.ts b/node_modules/@octokit/auth-token/dist-types/types.d.ts deleted file mode 100644 index 53a4ab112..000000000 --- a/node_modules/@octokit/auth-token/dist-types/types.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as OctokitTypes from "@octokit/types"; -export declare type AnyResponse = OctokitTypes.OctokitResponse; -export declare type StrategyInterface = OctokitTypes.StrategyInterface<[Token], [], Authentication>; -export declare type EndpointDefaults = OctokitTypes.EndpointDefaults; -export declare type EndpointOptions = OctokitTypes.EndpointOptions; -export declare type RequestParameters = OctokitTypes.RequestParameters; -export declare type RequestInterface = OctokitTypes.RequestInterface; -export declare type Route = OctokitTypes.Route; -export declare type Token = string; -export declare type OAuthTokenAuthentication = { - type: "token"; - tokenType: "oauth"; - token: Token; -}; -export declare type InstallationTokenAuthentication = { - type: "token"; - tokenType: "installation"; - token: Token; -}; -export declare type AppAuthentication = { - type: "token"; - tokenType: "app"; - token: Token; -}; -export declare type Authentication = OAuthTokenAuthentication | InstallationTokenAuthentication | AppAuthentication; diff --git a/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts b/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts deleted file mode 100644 index 2e52c31db..000000000 --- a/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Prefix token for usage in the Authorization header - * - * @param token OAuth token or JSON Web Token - */ -export declare function withAuthorizationPrefix(token: string): string; diff --git a/node_modules/@octokit/auth-token/dist-web/index.js b/node_modules/@octokit/auth-token/dist-web/index.js deleted file mode 100644 index c15ca1222..000000000 --- a/node_modules/@octokit/auth-token/dist-web/index.js +++ /dev/null @@ -1,46 +0,0 @@ -async function auth(token) { - const tokenType = token.split(/\./).length === 3 - ? "app" - : /^v\d+\./.test(token) - ? "installation" - : "oauth"; - return { - type: "token", - token: token, - tokenType - }; -} - -/** - * Prefix token for usage in the Authorization header - * - * @param token OAuth token or JSON Web Token - */ -function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - return `token ${token}`; -} - -async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); -} - -const createTokenAuth = function createTokenAuth(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - if (typeof token !== "string") { - throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); - } - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); -}; - -export { createTokenAuth }; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/auth-token/dist-web/index.js.map b/node_modules/@octokit/auth-token/dist-web/index.js.map deleted file mode 100644 index 60de4a6be..000000000 --- a/node_modules/@octokit/auth-token/dist-web/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/auth.js","../dist-src/with-authorization-prefix.js","../dist-src/hook.js","../dist-src/index.js"],"sourcesContent":["export async function auth(token) {\n const tokenType = token.split(/\\./).length === 3\n ? \"app\"\n : /^v\\d+\\./.test(token)\n ? \"installation\"\n : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType\n };\n}\n","/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nexport function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n","import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nexport async function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n","import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nexport const createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n"],"names":[],"mappings":"AAAO,eAAe,IAAI,CAAC,KAAK,EAAE;AAClC,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;AACpD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,cAAc,cAAc;AAC5B,cAAc,OAAO,CAAC;AACtB,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,SAAS;AACjB,KAAK,CAAC;AACN;;ACXA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,QAAQ,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5B,CAAC;;ACTM,eAAe,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;AAC9D,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC/D,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACpE,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;;ACHW,MAAC,eAAe,GAAG,SAAS,eAAe,CAAC,KAAK,EAAE;AAC/D,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACjG,KAAK;AACL,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACpD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACjD,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACpC,KAAK,CAAC,CAAC;AACP,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/auth-token/package.json b/node_modules/@octokit/auth-token/package.json deleted file mode 100644 index ec9dbf5ab..000000000 --- a/node_modules/@octokit/auth-token/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_from": "@octokit/auth-token@^2.4.4", - "_id": "@octokit/auth-token@2.4.4", - "_inBundle": false, - "_integrity": "sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q==", - "_location": "/@octokit/auth-token", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/auth-token@^2.4.4", - "name": "@octokit/auth-token", - "escapedName": "@octokit%2fauth-token", - "scope": "@octokit", - "rawSpec": "^2.4.4", - "saveSpec": null, - "fetchSpec": "^2.4.4" - }, - "_requiredBy": [ - "/@octokit/core" - ], - "_resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz", - "_shasum": "ee31c69b01d0378c12fd3ffe406030f3d94d3b56", - "_spec": "@octokit/auth-token@^2.4.4", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\core", - "bugs": { - "url": "https://github.com/octokit/auth-token.js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@octokit/types": "^6.0.0" - }, - "deprecated": false, - "description": "GitHub API token authentication for browsers and Node.js", - "devDependencies": { - "@octokit/core": "^3.0.0", - "@octokit/request": "^5.3.0", - "@pika/pack": "^0.5.0", - "@pika/plugin-build-node": "^0.9.0", - "@pika/plugin-build-web": "^0.9.0", - "@pika/plugin-ts-standard-pkg": "^0.9.0", - "@types/fetch-mock": "^7.3.1", - "@types/jest": "^26.0.0", - "fetch-mock": "^9.0.0", - "jest": "^25.1.0", - "semantic-release": "^17.0.0", - "ts-jest": "^25.1.0", - "typescript": "^3.7.2" - }, - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/octokit/auth-token.js#readme", - "keywords": [ - "github", - "octokit", - "authentication", - "api" - ], - "license": "MIT", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "@octokit/auth-token", - "pika": true, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/auth-token.js.git" - }, - "sideEffects": false, - "source": "dist-src/index.js", - "types": "dist-types/index.d.ts", - "version": "2.4.4" -} diff --git a/node_modules/@octokit/core/LICENSE b/node_modules/@octokit/core/LICENSE deleted file mode 100644 index ef2c18ee5..000000000 --- a/node_modules/@octokit/core/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/@octokit/core/README.md b/node_modules/@octokit/core/README.md deleted file mode 100644 index 80804b7d4..000000000 --- a/node_modules/@octokit/core/README.md +++ /dev/null @@ -1,438 +0,0 @@ -# core.js - -> Extendable client for GitHub's REST & GraphQL APIs - -[![@latest](https://img.shields.io/npm/v/@octokit/core.svg)](https://www.npmjs.com/package/@octokit/core) -[![Build Status](https://github.com/octokit/core.js/workflows/Test/badge.svg)](https://github.com/octokit/core.js/actions?query=workflow%3ATest+branch%3Amaster) - - - -- [Usage](#usage) - - [REST API example](#rest-api-example) - - [GraphQL example](#graphql-example) -- [Options](#options) -- [Defaults](#defaults) -- [Authentication](#authentication) -- [Logging](#logging) -- [Hooks](#hooks) -- [Plugins](#plugins) -- [Build your own Octokit with Plugins and Defaults](#build-your-own-octokit-with-plugins-and-defaults) -- [LICENSE](#license) - - - -If you need a minimalistic library to utilize GitHub's [REST API](https://developer.github.com/v3/) and [GraphQL API](https://developer.github.com/v4/) which you can extend with plugins as needed, then `@octokit/core` is a great starting point. - -If you don't need the Plugin API then using [`@octokit/request`](https://github.com/octokit/request.js/) or [`@octokit/graphql`](https://github.com/octokit/graphql.js/) directly is a good alternative. - -## Usage - - - - - - -
-Browsers - -Load @octokit/core directly from cdn.skypack.dev - -```html - -``` - -
-Node - - -Install with npm install @octokit/core - -```js -const { Octokit } = require("@octokit/core"); -// or: import { Octokit } from "@octokit/core"; -``` - -
- -### REST API example - -```js -// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo -const octokit = new Octokit({ auth: `personal-access-token123` }); - -const response = await octokit.request("GET /orgs/{org}/repos", { - org: "octokit", - type: "private", -}); -``` - -See [`@octokit/request`](https://github.com/octokit/request.js) for full documentation of the `.request` method. - -### GraphQL example - -```js -const octokit = new Octokit({ auth: `secret123` }); - -const response = await octokit.graphql( - `query ($login: String!) { - organization(login: $login) { - repositories(privacy: PRIVATE) { - totalCount - } - } - }`, - { login: "octokit" } -); -``` - -See [`@octokit/graphql`](https://github.com/octokit/graphql.js) for full documentation of the `.graphql` method. - -## Options - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- name - - type - - description -
- options.authStrategy - - Function - - Defaults to @octokit/auth-token. See Authentication below for examples. -
- options.auth - - String or Object - - See Authentication below for examples. -
- options.baseUrl - - String - - -When using with GitHub Enterprise Server, set `options.baseUrl` to the root URL of the API. For example, if your GitHub Enterprise Server's hostname is `github.acme-inc.com`, then set `options.baseUrl` to `https://github.acme-inc.com/api/v3`. Example - -```js -const octokit = new Octokit({ - baseUrl: "https://github.acme-inc.com/api/v3", -}); -``` - -
- options.previews - - Array of Strings - - -Some REST API endpoints require preview headers to be set, or enable -additional features. Preview headers can be set on a per-request basis, e.g. - -```js -octokit.request("POST /repos/{owner}/{repo}/pulls", { - mediaType: { - previews: ["shadow-cat"], - }, - owner, - repo, - title: "My pull request", - base: "master", - head: "my-feature", - draft: true, -}); -``` - -You can also set previews globally, by setting the `options.previews` option on the constructor. Example: - -```js -const octokit = new Octokit({ - previews: ["shadow-cat"], -}); -``` - -
- options.request - - Object - - -Set a default request timeout (`options.request.timeout`) or an [`http(s).Agent`](https://nodejs.org/api/http.html#http_class_http_agent) e.g. for proxy usage (Node only, `options.request.agent`). - -There are more `options.request.*` options, see [`@octokit/request` options](https://github.com/octokit/request.js#request). `options.request` can also be set on a per-request basis. - -
- options.timeZone - - String - - -Sets the `Time-Zone` header which defines a timezone according to the [list of names from the Olson database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). - -```js -const octokit = new Octokit({ - timeZone: "America/Los_Angeles", -}); -``` - -The time zone header will determine the timezone used for generating the timestamp when creating commits. See [GitHub's Timezones documentation](https://developer.github.com/v3/#timezones). - -
- options.userAgent - - String - - -A custom user agent string for your app or library. Example - -```js -const octokit = new Octokit({ - userAgent: "my-app/v1.2.3", -}); -``` - -
- -## Defaults - -You can create a new Octokit class with customized default options. - -```js -const MyOctokit = Octokit.defaults({ - auth: "personal-access-token123", - baseUrl: "https://github.acme-inc.com/api/v3", - userAgent: "my-app/v1.2.3", -}); -const octokit1 = new MyOctokit(); -const octokit2 = new MyOctokit(); -``` - -If you pass additional options to your new constructor, the options will be merged shallowly. - -```js -const MyOctokit = Octokit.defaults({ - foo: { - opt1: 1, - }, -}); -const octokit = new MyOctokit({ - foo: { - opt2: 1, - }, -}); -// options will be { foo: { opt2: 1 }} -``` - -If you need a deep or conditional merge, you can pass a function instead. - -```js -const MyOctokit = Octokit.defaults((options) => { - return { - foo: Object.assign({}, options.foo, { opt2: 1 }), - }; -}); -const octokit = new MyOctokit({ - foo: { opt2: 1 }, -}); -// options will be { foo: { opt1: 1, opt2: 1 }} -``` - -Be careful about mutating the `options` object in the `Octokit.defaults` callback, as it can have unforeseen consequences. - -## Authentication - -Authentication is optional for some REST API endpoints accessing public data, but is required for GraphQL queries. Using authentication also increases your [API rate limit](https://developer.github.com/v3/#rate-limiting). - -By default, Octokit authenticates using the [token authentication strategy](https://github.com/octokit/auth-token.js). Pass in a token using `options.auth`. It can be a personal access token, an OAuth token, an installation access token or a JSON Web Token for GitHub App authentication. The `Authorization` header will be set according to the type of token. - -```js -import { Octokit } from "@octokit/core"; - -const octokit = new Octokit({ - auth: "mypersonalaccesstoken123", -}); - -const { data } = await octokit.request("/user"); -``` - -To use a different authentication strategy, set `options.authStrategy`. A set of officially supported authentication strategies can be retrieved from [`@octokit/auth`](https://github.com/octokit/auth-app.js#readme). Example - -```js -import { Octokit } from "@octokit/core"; -import { createAppAuth } from "@octokit/auth-app"; - -const appOctokit = new Octokit({ - authStrategy: createAppAuth, - auth: { - appId: 123, - privateKey: process.env.PRIVATE_KEY, - }, -}); - -const { data } = await appOctokit.request("/app"); -``` - -The `.auth()` method returned by the current authentication strategy can be accessed at `octokit.auth()`. Example - -```js -const { token } = await appOctokit.auth({ - type: "installation", - installationId: 123, -}); -``` - -## Logging - -There are four built-in log methods - -1. `octokit.log.debug(message[, additionalInfo])` -1. `octokit.log.info(message[, additionalInfo])` -1. `octokit.log.warn(message[, additionalInfo])` -1. `octokit.log.error(message[, additionalInfo])` - -They can be configured using the [`log` client option](client-options). By default, `octokit.log.debug()` and `octokit.log.info()` are no-ops, while the other two call `console.warn()` and `console.error()` respectively. - -This is useful if you build reusable [plugins](#plugins). - -If you would like to make the log level configurable using an environment variable or external option, we recommend the [console-log-level](https://github.com/watson/console-log-level) package. Example - -```js -const octokit = new Octokit({ - log: require("console-log-level")({ level: "info" }), -}); -``` - -## Hooks - -You can customize Octokit's request lifecycle with hooks. - -```js -octokit.hook.before("request", async (options) => { - validate(options); -}); -octokit.hook.after("request", async (response, options) => { - console.log(`${options.method} ${options.url}: ${response.status}`); -}); -octokit.hook.error("request", async (error, options) => { - if (error.status === 304) { - return findInCache(error.headers.etag); - } - - throw error; -}); -octokit.hook.wrap("request", async (request, options) => { - // add logic before, after, catch errors or replace the request altogether - return request(options); -}); -``` - -See [before-after-hook](https://github.com/gr2m/before-after-hook#readme) for more documentation on hooks. - -## Plugins - -Octokit’s functionality can be extended using plugins. The `Octokit.plugin()` method accepts a plugin (or many) and returns a new constructor. - -A plugin is a function which gets two arguments: - -1. the current instance -2. the options passed to the constructor. - -In order to extend `octokit`'s API, the plugin must return an object with the new methods. - -```js -// index.js -const { Octokit } = require("@octokit/core") -const MyOctokit = Octokit.plugin( - require("./lib/my-plugin"), - require("octokit-plugin-example") -); - -const octokit = new MyOctokit({ greeting: "Moin moin" }); -octokit.helloWorld(); // logs "Moin moin, world!" -octokit.request("GET /"); // logs "GET / - 200 in 123ms" - -// lib/my-plugin.js -module.exports = (octokit, options = { greeting: "Hello" }) => { - // hook into the request lifecycle - octokit.hook.wrap("request", async (request, options) => { - const time = Date.now(); - const response = await request(options); - console.log( - `${options.method} ${options.url} – ${response.status} in ${Date.now() - - time}ms` - ); - return response; - }); - - // add a custom method - return { - helloWorld: () => console.log(`${options.greeting}, world!`); - } -}; -``` - -## Build your own Octokit with Plugins and Defaults - -You can build your own Octokit class with preset default options and plugins. In fact, this is mostly how the `@octokit/` modules work, such as [`@octokit/action`](https://github.com/octokit/action.js): - -```js -const { Octokit } = require("@octokit/core"); -const MyActionOctokit = Octokit.plugin( - require("@octokit/plugin-paginate-rest"), - require("@octokit/plugin-throttling"), - require("@octokit/plugin-retry") -).defaults({ - authStrategy: require("@octokit/auth-action"), - userAgent: `my-octokit-action/v1.2.3`, -}); - -const octokit = new MyActionOctokit(); -const installations = await octokit.paginate("GET /app/installations"); -``` - -## LICENSE - -[MIT](LICENSE) diff --git a/node_modules/@octokit/core/dist-node/index.js b/node_modules/@octokit/core/dist-node/index.js deleted file mode 100644 index ad20c996d..000000000 --- a/node_modules/@octokit/core/dist-node/index.js +++ /dev/null @@ -1,174 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var universalUserAgent = require('universal-user-agent'); -var beforeAfterHook = require('before-after-hook'); -var request = require('@octokit/request'); -var graphql = require('@octokit/graphql'); -var authToken = require('@octokit/auth-token'); - -function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - - return target; -} - -function _objectWithoutProperties(source, excluded) { - if (source == null) return {}; - - var target = _objectWithoutPropertiesLoose(source, excluded); - - var key, i; - - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - - for (i = 0; i < sourceSymbolKeys.length; i++) { - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } - } - - return target; -} - -const VERSION = "3.2.4"; - -class Octokit { - constructor(options = {}) { - const hook = new beforeAfterHook.Collection(); - const requestDefaults = { - baseUrl: request.request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - hook: hook.bind(null, "request") - }), - mediaType: { - previews: [], - format: "" - } - }; // prepend default user agent with `options.userAgent` if set - - requestDefaults.headers["user-agent"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(" "); - - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; - } - - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; - } - - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } - - this.request = request.request.defaults(requestDefaults); - this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults); - this.log = Object.assign({ - debug: () => {}, - info: () => {}, - warn: console.warn.bind(console), - error: console.error.bind(console) - }, options.log); - this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance - // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. - // (2) If only `options.auth` is set, use the default token authentication strategy. - // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. - // TODO: type `options.auth` based on `options.authStrategy`. - - if (!options.authStrategy) { - if (!options.auth) { - // (1) - this.auth = async () => ({ - type: "unauthenticated" - }); - } else { - // (2) - const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\_(ツ)_/¯ - - hook.wrap("request", auth.hook); - this.auth = auth; - } - } else { - const { - authStrategy - } = options, - otherOptions = _objectWithoutProperties(options, ["authStrategy"]); - - const auth = authStrategy(Object.assign({ - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions - }, options.auth)); // @ts-ignore ¯\_(ツ)_/¯ - - hook.wrap("request", auth.hook); - this.auth = auth; - } // apply plugins - // https://stackoverflow.com/a/16345172 - - - const classConstructor = this.constructor; - classConstructor.plugins.forEach(plugin => { - Object.assign(this, plugin(this, options)); - }); - } - - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - - super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? { - userAgent: `${options.userAgent} ${defaults.userAgent}` - } : null)); - } - - }; - return OctokitWithDefaults; - } - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - - - static plugin(...newPlugins) { - var _a; - - const currentPlugins = this.plugins; - const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a); - return NewOctokit; - } - -} -Octokit.VERSION = VERSION; -Octokit.plugins = []; - -exports.Octokit = Octokit; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/core/dist-node/index.js.map b/node_modules/@octokit/core/dist-node/index.js.map deleted file mode 100644 index 5cc887bd7..000000000 --- a/node_modules/@octokit/core/dist-node/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"3.2.4\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { Collection } from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version\";\nexport class Octokit {\n constructor(options = {}) {\n const hook = new Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n hook: hook.bind(null, \"request\"),\n }),\n mediaType: {\n previews: [],\n format: \"\",\n },\n };\n // prepend default user agent with `options.userAgent` if set\n requestDefaults.headers[\"user-agent\"] = [\n options.userAgent,\n `octokit-core.js/${VERSION} ${getUserAgent()}`,\n ]\n .filter(Boolean)\n .join(\" \");\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign({\n debug: () => { },\n info: () => { },\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n }, options.log);\n this.hook = hook;\n // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance\n // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.\n // (2) If only `options.auth` is set, use the default token authentication strategy.\n // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.\n // TODO: type `options.auth` based on `options.authStrategy`.\n if (!options.authStrategy) {\n if (!options.auth) {\n // (1)\n this.auth = async () => ({\n type: \"unauthenticated\",\n });\n }\n else {\n // (2)\n const auth = createTokenAuth(options.auth);\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n }\n else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(Object.assign({\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions,\n }, options.auth));\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n // apply plugins\n // https://stackoverflow.com/a/16345172\n const classConstructor = this.constructor;\n classConstructor.plugins.forEach((plugin) => {\n Object.assign(this, plugin(this, options));\n });\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent\n ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`,\n }\n : null));\n }\n };\n return OctokitWithDefaults;\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n var _a;\n const currentPlugins = this.plugins;\n const NewOctokit = (_a = class extends this {\n },\n _a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))),\n _a);\n return NewOctokit;\n }\n}\nOctokit.VERSION = VERSION;\nOctokit.plugins = [];\n"],"names":["VERSION","Octokit","constructor","options","hook","Collection","requestDefaults","baseUrl","request","endpoint","DEFAULTS","headers","Object","assign","bind","mediaType","previews","format","userAgent","getUserAgent","filter","Boolean","join","timeZone","defaults","graphql","withCustomRequest","log","debug","info","warn","console","error","authStrategy","auth","type","createTokenAuth","wrap","otherOptions","octokit","octokitOptions","classConstructor","plugins","forEach","plugin","OctokitWithDefaults","args","newPlugins","_a","currentPlugins","NewOctokit","concat","includes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAMA,OAAO,GAAG,mBAAhB;;ACMA,MAAMC,OAAN,CAAc;AACjBC,EAAAA,WAAW,CAACC,OAAO,GAAG,EAAX,EAAe;AACtB,UAAMC,IAAI,GAAG,IAAIC,0BAAJ,EAAb;AACA,UAAMC,eAAe,GAAG;AACpBC,MAAAA,OAAO,EAAEC,eAAO,CAACC,QAAR,CAAiBC,QAAjB,CAA0BH,OADf;AAEpBI,MAAAA,OAAO,EAAE,EAFW;AAGpBH,MAAAA,OAAO,EAAEI,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBV,OAAO,CAACK,OAA1B,EAAmC;AACxCJ,QAAAA,IAAI,EAAEA,IAAI,CAACU,IAAL,CAAU,IAAV,EAAgB,SAAhB;AADkC,OAAnC,CAHW;AAMpBC,MAAAA,SAAS,EAAE;AACPC,QAAAA,QAAQ,EAAE,EADH;AAEPC,QAAAA,MAAM,EAAE;AAFD;AANS,KAAxB,CAFsB;;AActBX,IAAAA,eAAe,CAACK,OAAhB,CAAwB,YAAxB,IAAwC,CACpCR,OAAO,CAACe,SAD4B,EAEnC,mBAAkBlB,OAAQ,IAAGmB,+BAAY,EAAG,EAFT,EAInCC,MAJmC,CAI5BC,OAJ4B,EAKnCC,IALmC,CAK9B,GAL8B,CAAxC;;AAMA,QAAInB,OAAO,CAACI,OAAZ,EAAqB;AACjBD,MAAAA,eAAe,CAACC,OAAhB,GAA0BJ,OAAO,CAACI,OAAlC;AACH;;AACD,QAAIJ,OAAO,CAACa,QAAZ,EAAsB;AAClBV,MAAAA,eAAe,CAACS,SAAhB,CAA0BC,QAA1B,GAAqCb,OAAO,CAACa,QAA7C;AACH;;AACD,QAAIb,OAAO,CAACoB,QAAZ,EAAsB;AAClBjB,MAAAA,eAAe,CAACK,OAAhB,CAAwB,WAAxB,IAAuCR,OAAO,CAACoB,QAA/C;AACH;;AACD,SAAKf,OAAL,GAAeA,eAAO,CAACgB,QAAR,CAAiBlB,eAAjB,CAAf;AACA,SAAKmB,OAAL,GAAeC,yBAAiB,CAAC,KAAKlB,OAAN,CAAjB,CAAgCgB,QAAhC,CAAyClB,eAAzC,CAAf;AACA,SAAKqB,GAAL,GAAWf,MAAM,CAACC,MAAP,CAAc;AACrBe,MAAAA,KAAK,EAAE,MAAM,EADQ;AAErBC,MAAAA,IAAI,EAAE,MAAM,EAFS;AAGrBC,MAAAA,IAAI,EAAEC,OAAO,CAACD,IAAR,CAAahB,IAAb,CAAkBiB,OAAlB,CAHe;AAIrBC,MAAAA,KAAK,EAAED,OAAO,CAACC,KAAR,CAAclB,IAAd,CAAmBiB,OAAnB;AAJc,KAAd,EAKR5B,OAAO,CAACwB,GALA,CAAX;AAMA,SAAKvB,IAAL,GAAYA,IAAZ,CArCsB;AAuCtB;AACA;AACA;AACA;;AACA,QAAI,CAACD,OAAO,CAAC8B,YAAb,EAA2B;AACvB,UAAI,CAAC9B,OAAO,CAAC+B,IAAb,EAAmB;AACf;AACA,aAAKA,IAAL,GAAY,aAAa;AACrBC,UAAAA,IAAI,EAAE;AADe,SAAb,CAAZ;AAGH,OALD,MAMK;AACD;AACA,cAAMD,IAAI,GAAGE,yBAAe,CAACjC,OAAO,CAAC+B,IAAT,CAA5B,CAFC;;AAID9B,QAAAA,IAAI,CAACiC,IAAL,CAAU,SAAV,EAAqBH,IAAI,CAAC9B,IAA1B;AACA,aAAK8B,IAAL,GAAYA,IAAZ;AACH;AACJ,KAdD,MAeK;AACD,YAAM;AAAED,QAAAA;AAAF,UAAoC9B,OAA1C;AAAA,YAAyBmC,YAAzB,4BAA0CnC,OAA1C;;AACA,YAAM+B,IAAI,GAAGD,YAAY,CAACrB,MAAM,CAACC,MAAP,CAAc;AACpCL,QAAAA,OAAO,EAAE,KAAKA,OADsB;AAEpCmB,QAAAA,GAAG,EAAE,KAAKA,GAF0B;AAGpC;AACA;AACA;AACA;AACA;AACAY,QAAAA,OAAO,EAAE,IAR2B;AASpCC,QAAAA,cAAc,EAAEF;AAToB,OAAd,EAUvBnC,OAAO,CAAC+B,IAVe,CAAD,CAAzB,CAFC;;AAcD9B,MAAAA,IAAI,CAACiC,IAAL,CAAU,SAAV,EAAqBH,IAAI,CAAC9B,IAA1B;AACA,WAAK8B,IAAL,GAAYA,IAAZ;AACH,KA1EqB;AA4EtB;;;AACA,UAAMO,gBAAgB,GAAG,KAAKvC,WAA9B;AACAuC,IAAAA,gBAAgB,CAACC,OAAjB,CAAyBC,OAAzB,CAAkCC,MAAD,IAAY;AACzChC,MAAAA,MAAM,CAACC,MAAP,CAAc,IAAd,EAAoB+B,MAAM,CAAC,IAAD,EAAOzC,OAAP,CAA1B;AACH,KAFD;AAGH;;AACD,SAAOqB,QAAP,CAAgBA,QAAhB,EAA0B;AACtB,UAAMqB,mBAAmB,GAAG,cAAc,IAAd,CAAmB;AAC3C3C,MAAAA,WAAW,CAAC,GAAG4C,IAAJ,EAAU;AACjB,cAAM3C,OAAO,GAAG2C,IAAI,CAAC,CAAD,CAAJ,IAAW,EAA3B;;AACA,YAAI,OAAOtB,QAAP,KAAoB,UAAxB,EAAoC;AAChC,gBAAMA,QAAQ,CAACrB,OAAD,CAAd;AACA;AACH;;AACD,cAAMS,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBW,QAAlB,EAA4BrB,OAA5B,EAAqCA,OAAO,CAACe,SAAR,IAAqBM,QAAQ,CAACN,SAA9B,GACrC;AACEA,UAAAA,SAAS,EAAG,GAAEf,OAAO,CAACe,SAAU,IAAGM,QAAQ,CAACN,SAAU;AADxD,SADqC,GAIrC,IAJA,CAAN;AAKH;;AAZ0C,KAA/C;AAcA,WAAO2B,mBAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACI,SAAOD,MAAP,CAAc,GAAGG,UAAjB,EAA6B;AACzB,QAAIC,EAAJ;;AACA,UAAMC,cAAc,GAAG,KAAKP,OAA5B;AACA,UAAMQ,UAAU,IAAIF,EAAE,GAAG,cAAc,IAAd,CAAmB,EAAxB,EAEhBA,EAAE,CAACN,OAAH,GAAaO,cAAc,CAACE,MAAf,CAAsBJ,UAAU,CAAC3B,MAAX,CAAmBwB,MAAD,IAAY,CAACK,cAAc,CAACG,QAAf,CAAwBR,MAAxB,CAA/B,CAAtB,CAFG,EAGhBI,EAHY,CAAhB;AAIA,WAAOE,UAAP;AACH;;AAlHgB;AAoHrBjD,OAAO,CAACD,OAAR,GAAkBA,OAAlB;AACAC,OAAO,CAACyC,OAAR,GAAkB,EAAlB;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/core/dist-src/index.js b/node_modules/@octokit/core/dist-src/index.js deleted file mode 100644 index 75fd2ff54..000000000 --- a/node_modules/@octokit/core/dist-src/index.js +++ /dev/null @@ -1,124 +0,0 @@ -import { getUserAgent } from "universal-user-agent"; -import { Collection } from "before-after-hook"; -import { request } from "@octokit/request"; -import { withCustomRequest } from "@octokit/graphql"; -import { createTokenAuth } from "@octokit/auth-token"; -import { VERSION } from "./version"; -export class Octokit { - constructor(options = {}) { - const hook = new Collection(); - const requestDefaults = { - baseUrl: request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - hook: hook.bind(null, "request"), - }), - mediaType: { - previews: [], - format: "", - }, - }; - // prepend default user agent with `options.userAgent` if set - requestDefaults.headers["user-agent"] = [ - options.userAgent, - `octokit-core.js/${VERSION} ${getUserAgent()}`, - ] - .filter(Boolean) - .join(" "); - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; - } - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; - } - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } - this.request = request.defaults(requestDefaults); - this.graphql = withCustomRequest(this.request).defaults(requestDefaults); - this.log = Object.assign({ - debug: () => { }, - info: () => { }, - warn: console.warn.bind(console), - error: console.error.bind(console), - }, options.log); - this.hook = hook; - // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance - // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. - // (2) If only `options.auth` is set, use the default token authentication strategy. - // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. - // TODO: type `options.auth` based on `options.authStrategy`. - if (!options.authStrategy) { - if (!options.auth) { - // (1) - this.auth = async () => ({ - type: "unauthenticated", - }); - } - else { - // (2) - const auth = createTokenAuth(options.auth); - // @ts-ignore ¯\_(ツ)_/¯ - hook.wrap("request", auth.hook); - this.auth = auth; - } - } - else { - const { authStrategy, ...otherOptions } = options; - const auth = authStrategy(Object.assign({ - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions, - }, options.auth)); - // @ts-ignore ¯\_(ツ)_/¯ - hook.wrap("request", auth.hook); - this.auth = auth; - } - // apply plugins - // https://stackoverflow.com/a/16345172 - const classConstructor = this.constructor; - classConstructor.plugins.forEach((plugin) => { - Object.assign(this, plugin(this, options)); - }); - } - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent - ? { - userAgent: `${options.userAgent} ${defaults.userAgent}`, - } - : null)); - } - }; - return OctokitWithDefaults; - } - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - static plugin(...newPlugins) { - var _a; - const currentPlugins = this.plugins; - const NewOctokit = (_a = class extends this { - }, - _a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))), - _a); - return NewOctokit; - } -} -Octokit.VERSION = VERSION; -Octokit.plugins = []; diff --git a/node_modules/@octokit/core/dist-src/types.js b/node_modules/@octokit/core/dist-src/types.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/core/dist-src/types.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/core/dist-src/version.js b/node_modules/@octokit/core/dist-src/version.js deleted file mode 100644 index a02a76769..000000000 --- a/node_modules/@octokit/core/dist-src/version.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "3.2.4"; diff --git a/node_modules/@octokit/core/dist-types/index.d.ts b/node_modules/@octokit/core/dist-types/index.d.ts deleted file mode 100644 index 103362276..000000000 --- a/node_modules/@octokit/core/dist-types/index.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { HookCollection } from "before-after-hook"; -import { request } from "@octokit/request"; -import { graphql } from "@octokit/graphql"; -import { Constructor, OctokitOptions, OctokitPlugin, ReturnTypeOf, UnionToIntersection } from "./types"; -export declare class Octokit { - static VERSION: string; - static defaults>(this: S, defaults: OctokitOptions | Function): { - new (...args: any[]): { - [x: string]: any; - }; - } & S; - static plugins: OctokitPlugin[]; - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - static plugin & { - plugins: any[]; - }, T extends OctokitPlugin[]>(this: S, ...newPlugins: T): { - new (...args: any[]): { - [x: string]: any; - }; - plugins: any[]; - } & S & Constructor>>; - constructor(options?: OctokitOptions); - request: typeof request; - graphql: typeof graphql; - log: { - debug: (message: string, additionalInfo?: object) => any; - info: (message: string, additionalInfo?: object) => any; - warn: (message: string, additionalInfo?: object) => any; - error: (message: string, additionalInfo?: object) => any; - [key: string]: any; - }; - hook: HookCollection; - auth: (...args: unknown[]) => Promise; - [key: string]: any; -} diff --git a/node_modules/@octokit/core/dist-types/types.d.ts b/node_modules/@octokit/core/dist-types/types.d.ts deleted file mode 100644 index 59b284eef..000000000 --- a/node_modules/@octokit/core/dist-types/types.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as OctokitTypes from "@octokit/types"; -import { Octokit } from "."; -export declare type RequestParameters = OctokitTypes.RequestParameters; -export declare type OctokitOptions = { - authStrategy?: any; - auth?: any; - userAgent?: string; - previews?: string[]; - baseUrl?: string; - log?: { - debug: (message: string) => unknown; - info: (message: string) => unknown; - warn: (message: string) => unknown; - error: (message: string) => unknown; - }; - request?: OctokitTypes.RequestRequestOptions; - timeZone?: string; - [option: string]: any; -}; -export declare type Constructor = new (...args: any[]) => T; -export declare type ReturnTypeOf = T extends AnyFunction ? ReturnType : T extends AnyFunction[] ? UnionToIntersection> : never; -/** - * @author https://stackoverflow.com/users/2887218/jcalz - * @see https://stackoverflow.com/a/50375286/10325032 - */ -export declare type UnionToIntersection = (Union extends any ? (argument: Union) => void : never) extends (argument: infer Intersection) => void ? Intersection : never; -declare type AnyFunction = (...args: any) => any; -export declare type OctokitPlugin = (octokit: Octokit, options: OctokitOptions) => { - [key: string]: any; -} | void; -export {}; diff --git a/node_modules/@octokit/core/dist-types/version.d.ts b/node_modules/@octokit/core/dist-types/version.d.ts deleted file mode 100644 index 11e8fb43e..000000000 --- a/node_modules/@octokit/core/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "3.2.4"; diff --git a/node_modules/@octokit/core/dist-web/index.js b/node_modules/@octokit/core/dist-web/index.js deleted file mode 100644 index 2a8582392..000000000 --- a/node_modules/@octokit/core/dist-web/index.js +++ /dev/null @@ -1,129 +0,0 @@ -import { getUserAgent } from 'universal-user-agent'; -import { Collection } from 'before-after-hook'; -import { request } from '@octokit/request'; -import { withCustomRequest } from '@octokit/graphql'; -import { createTokenAuth } from '@octokit/auth-token'; - -const VERSION = "3.2.4"; - -class Octokit { - constructor(options = {}) { - const hook = new Collection(); - const requestDefaults = { - baseUrl: request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - hook: hook.bind(null, "request"), - }), - mediaType: { - previews: [], - format: "", - }, - }; - // prepend default user agent with `options.userAgent` if set - requestDefaults.headers["user-agent"] = [ - options.userAgent, - `octokit-core.js/${VERSION} ${getUserAgent()}`, - ] - .filter(Boolean) - .join(" "); - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; - } - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; - } - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } - this.request = request.defaults(requestDefaults); - this.graphql = withCustomRequest(this.request).defaults(requestDefaults); - this.log = Object.assign({ - debug: () => { }, - info: () => { }, - warn: console.warn.bind(console), - error: console.error.bind(console), - }, options.log); - this.hook = hook; - // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance - // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. - // (2) If only `options.auth` is set, use the default token authentication strategy. - // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. - // TODO: type `options.auth` based on `options.authStrategy`. - if (!options.authStrategy) { - if (!options.auth) { - // (1) - this.auth = async () => ({ - type: "unauthenticated", - }); - } - else { - // (2) - const auth = createTokenAuth(options.auth); - // @ts-ignore ¯\_(ツ)_/¯ - hook.wrap("request", auth.hook); - this.auth = auth; - } - } - else { - const { authStrategy, ...otherOptions } = options; - const auth = authStrategy(Object.assign({ - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions, - }, options.auth)); - // @ts-ignore ¯\_(ツ)_/¯ - hook.wrap("request", auth.hook); - this.auth = auth; - } - // apply plugins - // https://stackoverflow.com/a/16345172 - const classConstructor = this.constructor; - classConstructor.plugins.forEach((plugin) => { - Object.assign(this, plugin(this, options)); - }); - } - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent - ? { - userAgent: `${options.userAgent} ${defaults.userAgent}`, - } - : null)); - } - }; - return OctokitWithDefaults; - } - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - static plugin(...newPlugins) { - var _a; - const currentPlugins = this.plugins; - const NewOctokit = (_a = class extends this { - }, - _a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))), - _a); - return NewOctokit; - } -} -Octokit.VERSION = VERSION; -Octokit.plugins = []; - -export { Octokit }; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/core/dist-web/index.js.map b/node_modules/@octokit/core/dist-web/index.js.map deleted file mode 100644 index ba6abac9b..000000000 --- a/node_modules/@octokit/core/dist-web/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"3.2.4\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { Collection } from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version\";\nexport class Octokit {\n constructor(options = {}) {\n const hook = new Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n hook: hook.bind(null, \"request\"),\n }),\n mediaType: {\n previews: [],\n format: \"\",\n },\n };\n // prepend default user agent with `options.userAgent` if set\n requestDefaults.headers[\"user-agent\"] = [\n options.userAgent,\n `octokit-core.js/${VERSION} ${getUserAgent()}`,\n ]\n .filter(Boolean)\n .join(\" \");\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign({\n debug: () => { },\n info: () => { },\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n }, options.log);\n this.hook = hook;\n // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance\n // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.\n // (2) If only `options.auth` is set, use the default token authentication strategy.\n // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.\n // TODO: type `options.auth` based on `options.authStrategy`.\n if (!options.authStrategy) {\n if (!options.auth) {\n // (1)\n this.auth = async () => ({\n type: \"unauthenticated\",\n });\n }\n else {\n // (2)\n const auth = createTokenAuth(options.auth);\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n }\n else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(Object.assign({\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions,\n }, options.auth));\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n // apply plugins\n // https://stackoverflow.com/a/16345172\n const classConstructor = this.constructor;\n classConstructor.plugins.forEach((plugin) => {\n Object.assign(this, plugin(this, options));\n });\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent\n ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`,\n }\n : null));\n }\n };\n return OctokitWithDefaults;\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n var _a;\n const currentPlugins = this.plugins;\n const NewOctokit = (_a = class extends this {\n },\n _a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))),\n _a);\n return NewOctokit;\n }\n}\nOctokit.VERSION = VERSION;\nOctokit.plugins = [];\n"],"names":[],"mappings":";;;;;;AAAO,MAAM,OAAO,GAAG,mBAAmB;;ACMnC,MAAM,OAAO,CAAC;AACrB,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,QAAQ,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;AACtC,QAAQ,MAAM,eAAe,GAAG;AAChC,YAAY,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACtD,YAAY,OAAO,EAAE,EAAE;AACvB,YAAY,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE;AACxD,gBAAgB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;AAChD,aAAa,CAAC;AACd,YAAY,SAAS,EAAE;AACvB,gBAAgB,QAAQ,EAAE,EAAE;AAC5B,gBAAgB,MAAM,EAAE,EAAE;AAC1B,aAAa;AACb,SAAS,CAAC;AACV;AACA,QAAQ,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG;AAChD,YAAY,OAAO,CAAC,SAAS;AAC7B,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AAC1D,SAAS;AACT,aAAa,MAAM,CAAC,OAAO,CAAC;AAC5B,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE;AAC7B,YAAY,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC9B,YAAY,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC9B,YAAY,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;AACpE,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACzD,QAAQ,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACjF,QAAQ,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,YAAY,KAAK,EAAE,MAAM,GAAG;AAC5B,YAAY,IAAI,EAAE,MAAM,GAAG;AAC3B,YAAY,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5C,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACnC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAC/B;AACA,gBAAgB,IAAI,CAAC,IAAI,GAAG,aAAa;AACzC,oBAAoB,IAAI,EAAE,iBAAiB;AAC3C,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,iBAAiB;AACjB;AACA,gBAAgB,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3D;AACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,gBAAgB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjC,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;AAC9D,YAAY,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AACpD,gBAAgB,OAAO,EAAE,IAAI,CAAC,OAAO;AACrC,gBAAgB,GAAG,EAAE,IAAI,CAAC,GAAG;AAC7B;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,cAAc,EAAE,YAAY;AAC5C,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,SAAS;AACT;AACA;AACA,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;AAClD,QAAQ,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACrD,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACvD,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,QAAQ,EAAE;AAC9B,QAAQ,MAAM,mBAAmB,GAAG,cAAc,IAAI,CAAC;AACvD,YAAY,WAAW,CAAC,GAAG,IAAI,EAAE;AACjC,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,gBAAgB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACpD,oBAAoB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS;AAClG,sBAAsB;AACtB,wBAAwB,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/E,qBAAqB;AACrB,sBAAsB,IAAI,CAAC,CAAC,CAAC;AAC7B,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,OAAO,mBAAmB,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,GAAG,UAAU,EAAE;AACjC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5C,QAAQ,MAAM,UAAU,IAAI,EAAE,GAAG,cAAc,IAAI,CAAC;AACpD,aAAa;AACb,YAAY,EAAE,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/G,YAAY,EAAE,CAAC,CAAC;AAChB,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,CAAC;AACD,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1B,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/core/package.json b/node_modules/@octokit/core/package.json deleted file mode 100644 index afe90cdc2..000000000 --- a/node_modules/@octokit/core/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_from": "@octokit/core@^3.0.0", - "_id": "@octokit/core@3.2.4", - "_inBundle": false, - "_integrity": "sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg==", - "_location": "/@octokit/core", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/core@^3.0.0", - "name": "@octokit/core", - "escapedName": "@octokit%2fcore", - "scope": "@octokit", - "rawSpec": "^3.0.0", - "saveSpec": null, - "fetchSpec": "^3.0.0" - }, - "_requiredBy": [ - "/@actions/github" - ], - "_resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz", - "_shasum": "5791256057a962eca972e31818f02454897fd106", - "_spec": "@octokit/core@^3.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@actions\\github", - "bugs": { - "url": "https://github.com/octokit/core.js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.4.12", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.1.0", - "universal-user-agent": "^6.0.0" - }, - "deprecated": false, - "description": "Extendable client for GitHub's REST & GraphQL APIs", - "devDependencies": { - "@octokit/auth": "^2.0.0", - "@pika/pack": "^0.5.0", - "@pika/plugin-build-node": "^0.9.0", - "@pika/plugin-build-web": "^0.9.0", - "@pika/plugin-ts-standard-pkg": "^0.9.0", - "@types/fetch-mock": "^7.3.1", - "@types/jest": "^26.0.0", - "@types/lolex": "^5.1.0", - "@types/node": "^14.0.4", - "@types/node-fetch": "^2.5.0", - "fetch-mock": "^9.0.0", - "http-proxy-agent": "^4.0.1", - "jest": "^26.1.0", - "lolex": "^6.0.0", - "prettier": "^2.0.4", - "proxy": "^1.0.1", - "semantic-release": "^17.0.0", - "semantic-release-plugin-update-version-in-files": "^1.0.0", - "ts-jest": "^26.1.3", - "typescript": "^4.0.2" - }, - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/octokit/core.js#readme", - "keywords": [ - "octokit", - "github", - "api", - "sdk", - "toolkit" - ], - "license": "MIT", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "@octokit/core", - "pika": true, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/core.js.git" - }, - "sideEffects": false, - "source": "dist-src/index.js", - "types": "dist-types/index.d.ts", - "version": "3.2.4" -} diff --git a/node_modules/@octokit/endpoint/LICENSE b/node_modules/@octokit/endpoint/LICENSE deleted file mode 100644 index af5366d0d..000000000 --- a/node_modules/@octokit/endpoint/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/@octokit/endpoint/README.md b/node_modules/@octokit/endpoint/README.md deleted file mode 100644 index 818c100d8..000000000 --- a/node_modules/@octokit/endpoint/README.md +++ /dev/null @@ -1,421 +0,0 @@ -# endpoint.js - -> Turns GitHub REST API endpoints into generic request options - -[![@latest](https://img.shields.io/npm/v/@octokit/endpoint.svg)](https://www.npmjs.com/package/@octokit/endpoint) -![Build Status](https://github.com/octokit/endpoint.js/workflows/Test/badge.svg) - -`@octokit/endpoint` combines [GitHub REST API routes](https://developer.github.com/v3/) with your parameters and turns them into generic request options that can be used in any request library. - - - - - -- [Usage](#usage) -- [API](#api) - - [`endpoint(route, options)` or `endpoint(options)`](#endpointroute-options-or-endpointoptions) - - [`endpoint.defaults()`](#endpointdefaults) - - [`endpoint.DEFAULTS`](#endpointdefaults) - - [`endpoint.merge(route, options)` or `endpoint.merge(options)`](#endpointmergeroute-options-or-endpointmergeoptions) - - [`endpoint.parse()`](#endpointparse) -- [Special cases](#special-cases) - - [The `data` parameter – set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly) - - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body) -- [LICENSE](#license) - - - -## Usage - - - - - - -
-Browsers - -Load @octokit/endpoint directly from cdn.skypack.dev - -```html - -``` - -
-Node - - -Install with npm install @octokit/endpoint - -```js -const { endpoint } = require("@octokit/endpoint"); -// or: import { endpoint } from "@octokit/endpoint"; -``` - -
- -Example for [List organization repositories](https://developer.github.com/v3/repos/#list-organization-repositories) - -```js -const requestOptions = endpoint("GET /orgs/:org/repos", { - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, - org: "octokit", - type: "private", -}); -``` - -The resulting `requestOptions` looks as follows - -```json -{ - "method": "GET", - "url": "https://api.github.com/orgs/octokit/repos?type=private", - "headers": { - "accept": "application/vnd.github.v3+json", - "authorization": "token 0000000000000000000000000000000000000001", - "user-agent": "octokit/endpoint.js v1.2.3" - } -} -``` - -You can pass `requestOptions` to common request libraries - -```js -const { url, ...options } = requestOptions; -// using with fetch (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) -fetch(url, options); -// using with request (https://github.com/request/request) -request(requestOptions); -// using with got (https://github.com/sindresorhus/got) -got[options.method](url, options); -// using with axios -axios(requestOptions); -``` - -## API - -### `endpoint(route, options)` or `endpoint(options)` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- name - - type - - description -
- route - - String - - If set, it has to be a string consisting of URL and the request method, e.g., GET /orgs/:org. If it’s set to a URL, only the method defaults to GET. -
- options.method - - String - - Required unless route is set. Any supported http verb. Defaults to GET. -
- options.url - - String - - Required unless route is set. A path or full URL which may contain :variable or {variable} placeholders, - e.g., /orgs/:org/repos. The url is parsed using url-template. -
- options.baseUrl - - String - - Defaults to https://api.github.com. -
- options.headers - - Object - - Custom headers. Passed headers are merged with defaults:
- headers['user-agent'] defaults to octokit-endpoint.js/1.2.3 (where 1.2.3 is the released version).
- headers['accept'] defaults to application/vnd.github.v3+json.
-
- options.mediaType.format - - String - - Media type param, such as raw, diff, or text+json. See Media Types. Setting options.mediaType.format will amend the headers.accept value. -
- options.mediaType.previews - - Array of Strings - - Name of previews, such as mercy, symmetra, or scarlet-witch. See API Previews. If options.mediaType.previews was set as default, the new previews will be merged into the default ones. Setting options.mediaType.previews will amend the headers.accept value. options.mediaType.previews will be merged with an existing array set using .defaults(). -
- options.data - - Any - - Set request body directly instead of setting it to JSON based on additional parameters. See "The data parameter" below. -
- options.request - - Object - - Pass custom meta information for the request. The request object will be returned as is. -
- -All other options will be passed depending on the `method` and `url` options. - -1. If the option key has a placeholder in the `url`, it will be used as the replacement. For example, if the passed options are `{url: '/orgs/:org/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`. -2. If the `method` is `GET` or `HEAD`, the option is passed as a query parameter. -3. Otherwise, the parameter is passed in the request body as a JSON key. - -**Result** - -`endpoint()` is a synchronous method and returns an object with the following keys: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- key - - type - - description -
methodStringThe http method. Always lowercase.
urlStringThe url with placeholders replaced with passed parameters.
headersObjectAll header names are lowercased.
bodyAnyThe request body if one is present. Only for PATCH, POST, PUT, DELETE requests.
requestObjectRequest meta option, it will be returned as it was passed into endpoint()
- -### `endpoint.defaults()` - -Override or set default options. Example: - -```js -const request = require("request"); -const myEndpoint = require("@octokit/endpoint").defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - authorization: `token 0000000000000000000000000000000000000001`, - }, - org: "my-project", - per_page: 100, -}); - -request(myEndpoint(`GET /orgs/:org/repos`)); -``` - -You can call `.defaults()` again on the returned method, the defaults will cascade. - -```js -const myProjectEndpoint = endpoint.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - }, - org: "my-project", -}); -const myProjectEndpointWithAuth = myProjectEndpoint.defaults({ - headers: { - authorization: `token 0000000000000000000000000000000000000001`, - }, -}); -``` - -`myProjectEndpointWithAuth` now defaults the `baseUrl`, `headers['user-agent']`, -`org` and `headers['authorization']` on top of `headers['accept']` that is set -by the global default. - -### `endpoint.DEFAULTS` - -The current default options. - -```js -endpoint.DEFAULTS.baseUrl; // https://api.github.com -const myEndpoint = endpoint.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", -}); -myEndpoint.DEFAULTS.baseUrl; // https://github-enterprise.acme-inc.com/api/v3 -``` - -### `endpoint.merge(route, options)` or `endpoint.merge(options)` - -Get the defaulted endpoint options, but without parsing them into request options: - -```js -const myProjectEndpoint = endpoint.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - }, - org: "my-project", -}); -myProjectEndpoint.merge("GET /orgs/:org/repos", { - headers: { - authorization: `token 0000000000000000000000000000000000000001`, - }, - org: "my-secret-project", - type: "private", -}); - -// { -// baseUrl: 'https://github-enterprise.acme-inc.com/api/v3', -// method: 'GET', -// url: '/orgs/:org/repos', -// headers: { -// accept: 'application/vnd.github.v3+json', -// authorization: `token 0000000000000000000000000000000000000001`, -// 'user-agent': 'myApp/1.2.3' -// }, -// org: 'my-secret-project', -// type: 'private' -// } -``` - -### `endpoint.parse()` - -Stateless method to turn endpoint options into request options. Calling -`endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`. - -## Special cases - -
- -### The `data` parameter – set request body directly - -Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead, the request body needs to be set directly. In these cases, set the `data` parameter. - -```js -const options = endpoint("POST /markdown/raw", { - data: "Hello world github/linguist#1 **cool**, and #1!", - headers: { - accept: "text/html;charset=utf-8", - "content-type": "text/plain", - }, -}); - -// options is -// { -// method: 'post', -// url: 'https://api.github.com/markdown/raw', -// headers: { -// accept: 'text/html;charset=utf-8', -// 'content-type': 'text/plain', -// 'user-agent': userAgent -// }, -// body: 'Hello world github/linguist#1 **cool**, and #1!' -// } -``` - -### Set parameters for both the URL/query and the request body - -There are API endpoints that accept both query parameters as well as a body. In that case, you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570). - -Example - -```js -endpoint( - "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}", - { - name: "example.zip", - label: "short description", - headers: { - "content-type": "text/plain", - "content-length": 14, - authorization: `token 0000000000000000000000000000000000000001`, - }, - data: "Hello, world!", - } -); -``` - -## LICENSE - -[MIT](LICENSE) diff --git a/node_modules/@octokit/endpoint/dist-node/index.js b/node_modules/@octokit/endpoint/dist-node/index.js deleted file mode 100644 index 8637216e9..000000000 --- a/node_modules/@octokit/endpoint/dist-node/index.js +++ /dev/null @@ -1,390 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var isPlainObject = require('is-plain-object'); -var universalUserAgent = require('universal-user-agent'); - -function lowercaseKeys(object) { - if (!object) { - return {}; - } - - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} - -function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach(key => { - if (isPlainObject.isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { - [key]: options[key] - });else result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { - [key]: options[key] - }); - } - }); - return result; -} - -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === undefined) { - delete obj[key]; - } - } - - return obj; -} - -function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { - method, - url - } : { - url: method - }, options); - } else { - options = Object.assign({}, route); - } // lowercase header names before merging with defaults to avoid duplicates - - - options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging - - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten - - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); - } - - mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); - return mergedOptions; -} - -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - - if (names.length === 0) { - return url; - } - - return url + separator + names.map(name => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } - - return `${name}=${encodeURIComponent(parameters[name])}`; - }).join("&"); -} - -const urlVariableRegex = /\{[^}]+\}/g; - -function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); -} - -function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - - if (!matches) { - return []; - } - - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); -} - -function omit(object, keysToOmit) { - return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); -} - -// Based on https://github.com/bramstein/url-template, licensed under BSD -// TODO: create separate package. -// -// Copyright (c) 2012-2014, Bram Stein -// All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* istanbul ignore file */ -function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - - return part; - }).join(""); -} - -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); -} - -function encodeValue(operator, value, key) { - value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; - } -} - -function isDefined(value) { - return value !== undefined && value !== null; -} - -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} - -function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - - if (isDefined(value) && value !== "") { - if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { - value = value.toString(); - - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - tmp.push(encodeValue(operator, value)); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - - return result; -} - -function parseUrl(template) { - return { - expand: expand.bind(null, template) - }; -} - -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - - if (operator && operator !== "+") { - var separator = ","; - - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } - - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - }); -} - -function parse(options) { - // https://fetch.spec.whatwg.org/#methods - let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible - - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later - - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - - const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - - if (!isBinaryRequest) { - if (options.mediaType.format) { - // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw - headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); - } - - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); - } - } // for GET/HEAD requests, set URL query parameters from remaining parameters - // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters - - - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } else { - headers["content-length"] = 0; - } - } - } // default content-type for JSON if body is set - - - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. - // fetch does not allow to set `content-length` header, but we can set body to an empty string - - - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } // Only return body/request keys if present - - - return Object.assign({ - method, - url, - headers - }, typeof body !== "undefined" ? { - body - } : null, options.request ? { - request: options.request - } : null); -} - -function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} - -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS = merge(oldDefaults, newDefaults); - const endpoint = endpointWithDefaults.bind(null, DEFAULTS); - return Object.assign(endpoint, { - DEFAULTS, - defaults: withDefaults.bind(null, DEFAULTS), - merge: merge.bind(null, DEFAULTS), - parse - }); -} - -const VERSION = "6.0.10"; - -const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. -// So we use RequestParameters and add method as additional required property. - -const DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent - }, - mediaType: { - format: "", - previews: [] - } -}; - -const endpoint = withDefaults(null, DEFAULTS); - -exports.endpoint = endpoint; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/endpoint/dist-node/index.js.map b/node_modules/@octokit/endpoint/dist-node/index.js.map deleted file mode 100644 index 04a8b8d5a..000000000 --- a/node_modules/@octokit/endpoint/dist-node/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/util/lowercase-keys.js","../dist-src/util/merge-deep.js","../dist-src/util/remove-undefined-properties.js","../dist-src/merge.js","../dist-src/util/add-query-parameters.js","../dist-src/util/extract-url-variable-names.js","../dist-src/util/omit.js","../dist-src/util/url-template.js","../dist-src/parse.js","../dist-src/endpoint-with-defaults.js","../dist-src/with-defaults.js","../dist-src/version.js","../dist-src/defaults.js","../dist-src/index.js"],"sourcesContent":["export function lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n","import { isPlainObject } from \"is-plain-object\";\nexport function mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n }\n else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n","export function removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n }\n }\n return obj;\n}\n","import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties\";\nexport function merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n }\n else {\n options = Object.assign({}, route);\n }\n // lowercase header names before merging with defaults to avoid duplicates\n options.headers = lowercaseKeys(options.headers);\n // remove properties with undefined values before merging\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n // mediaType.previews arrays are merged, instead of overwritten\n if (defaults && defaults.mediaType.previews.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews\n .filter((preview) => !mergedOptions.mediaType.previews.includes(preview))\n .concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, \"\"));\n return mergedOptions;\n}\n","export function addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return (url +\n separator +\n names\n .map((name) => {\n if (name === \"q\") {\n return (\"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\"));\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n })\n .join(\"&\"));\n}\n","const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nexport function extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n","export function omit(object, keysToOmit) {\n return Object.keys(object)\n .filter((option) => !keysToOmit.includes(option))\n .reduce((obj, key) => {\n obj[key] = object[key];\n return obj;\n }, {});\n}\n","// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n// 1. Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// 3. The name of the author may not be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n return str\n .split(/(%[0-9A-Fa-f]{2})/g)\n .map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n })\n .join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value =\n operator === \"+\" || operator === \"#\"\n ? encodeReserved(value)\n : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n }\n else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n }\n else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n }\n else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n }\n else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n }\n else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n }\n else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n }\n else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nexport function parseUrl(template) {\n return {\n expand: expand.bind(null, template),\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n }\n else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n }\n else {\n return values.join(\",\");\n }\n }\n else {\n return encodeReserved(literal);\n }\n });\n}\n","import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nexport function parse(options) {\n // https://fetch.spec.whatwg.org/#methods\n let method = options.method.toUpperCase();\n // replace :varname with {varname} to make it RFC 6570 compatible\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\",\n ]);\n // extract variable names from URL to calculate remaining variables later\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options)\n .filter((option) => urlVariableNames.includes(option))\n .concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n headers.accept = headers.accept\n .split(/,/)\n .map((preview) => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))\n .join(\",\");\n }\n if (options.mediaType.previews.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader\n .concat(options.mediaType.previews)\n .map((preview) => {\n const format = options.mediaType.format\n ? `.${options.mediaType.format}`\n : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n })\n .join(\",\");\n }\n }\n // for GET/HEAD requests, set URL query parameters from remaining parameters\n // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n }\n else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n }\n else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n else {\n headers[\"content-length\"] = 0;\n }\n }\n }\n // default content-type for JSON if body is set\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n // fetch does not allow to set `content-length` header, but we can set body to an empty string\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n // Only return body/request keys if present\n return Object.assign({ method, url, headers }, typeof body !== \"undefined\" ? { body } : null, options.request ? { request: options.request } : null);\n}\n","import { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n","import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse,\n });\n}\n","export const VERSION = \"6.0.10\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\n// DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\nexport const DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent,\n },\n mediaType: {\n format: \"\",\n previews: [],\n },\n};\n","import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nexport const endpoint = withDefaults(null, DEFAULTS);\n"],"names":["lowercaseKeys","object","Object","keys","reduce","newObj","key","toLowerCase","mergeDeep","defaults","options","result","assign","forEach","isPlainObject","removeUndefinedProperties","obj","undefined","merge","route","method","url","split","headers","mergedOptions","mediaType","previews","length","filter","preview","includes","concat","map","replace","addQueryParameters","parameters","separator","test","names","name","q","encodeURIComponent","join","urlVariableRegex","removeNonChars","variableName","extractUrlVariableNames","matches","match","a","b","omit","keysToOmit","option","encodeReserved","str","part","encodeURI","encodeUnreserved","c","charCodeAt","toString","toUpperCase","encodeValue","operator","value","isDefined","isKeyOperator","getValues","context","modifier","substring","parseInt","push","Array","isArray","k","tmp","parseUrl","template","expand","bind","operators","_","expression","literal","values","indexOf","charAt","substr","variable","exec","parse","body","urlVariableNames","baseUrl","omittedParameters","remainingParameters","isBinaryRequest","accept","format","previewsFromAcceptHeader","data","request","endpointWithDefaults","withDefaults","oldDefaults","newDefaults","DEFAULTS","endpoint","VERSION","userAgent","getUserAgent"],"mappings":";;;;;;;AAAO,SAASA,aAAT,CAAuBC,MAAvB,EAA+B;AAClC,MAAI,CAACA,MAAL,EAAa;AACT,WAAO,EAAP;AACH;;AACD,SAAOC,MAAM,CAACC,IAAP,CAAYF,MAAZ,EAAoBG,MAApB,CAA2B,CAACC,MAAD,EAASC,GAAT,KAAiB;AAC/CD,IAAAA,MAAM,CAACC,GAAG,CAACC,WAAJ,EAAD,CAAN,GAA4BN,MAAM,CAACK,GAAD,CAAlC;AACA,WAAOD,MAAP;AACH,GAHM,EAGJ,EAHI,CAAP;AAIH;;ACPM,SAASG,SAAT,CAAmBC,QAAnB,EAA6BC,OAA7B,EAAsC;AACzC,QAAMC,MAAM,GAAGT,MAAM,CAACU,MAAP,CAAc,EAAd,EAAkBH,QAAlB,CAAf;AACAP,EAAAA,MAAM,CAACC,IAAP,CAAYO,OAAZ,EAAqBG,OAArB,CAA8BP,GAAD,IAAS;AAClC,QAAIQ,2BAAa,CAACJ,OAAO,CAACJ,GAAD,CAAR,CAAjB,EAAiC;AAC7B,UAAI,EAAEA,GAAG,IAAIG,QAAT,CAAJ,EACIP,MAAM,CAACU,MAAP,CAAcD,MAAd,EAAsB;AAAE,SAACL,GAAD,GAAOI,OAAO,CAACJ,GAAD;AAAhB,OAAtB,EADJ,KAGIK,MAAM,CAACL,GAAD,CAAN,GAAcE,SAAS,CAACC,QAAQ,CAACH,GAAD,CAAT,EAAgBI,OAAO,CAACJ,GAAD,CAAvB,CAAvB;AACP,KALD,MAMK;AACDJ,MAAAA,MAAM,CAACU,MAAP,CAAcD,MAAd,EAAsB;AAAE,SAACL,GAAD,GAAOI,OAAO,CAACJ,GAAD;AAAhB,OAAtB;AACH;AACJ,GAVD;AAWA,SAAOK,MAAP;AACH;;ACfM,SAASI,yBAAT,CAAmCC,GAAnC,EAAwC;AAC3C,OAAK,MAAMV,GAAX,IAAkBU,GAAlB,EAAuB;AACnB,QAAIA,GAAG,CAACV,GAAD,CAAH,KAAaW,SAAjB,EAA4B;AACxB,aAAOD,GAAG,CAACV,GAAD,CAAV;AACH;AACJ;;AACD,SAAOU,GAAP;AACH;;ACJM,SAASE,KAAT,CAAeT,QAAf,EAAyBU,KAAzB,EAAgCT,OAAhC,EAAyC;AAC5C,MAAI,OAAOS,KAAP,KAAiB,QAArB,EAA+B;AAC3B,QAAI,CAACC,MAAD,EAASC,GAAT,IAAgBF,KAAK,CAACG,KAAN,CAAY,GAAZ,CAApB;AACAZ,IAAAA,OAAO,GAAGR,MAAM,CAACU,MAAP,CAAcS,GAAG,GAAG;AAAED,MAAAA,MAAF;AAAUC,MAAAA;AAAV,KAAH,GAAqB;AAAEA,MAAAA,GAAG,EAAED;AAAP,KAAtC,EAAuDV,OAAvD,CAAV;AACH,GAHD,MAIK;AACDA,IAAAA,OAAO,GAAGR,MAAM,CAACU,MAAP,CAAc,EAAd,EAAkBO,KAAlB,CAAV;AACH,GAP2C;;;AAS5CT,EAAAA,OAAO,CAACa,OAAR,GAAkBvB,aAAa,CAACU,OAAO,CAACa,OAAT,CAA/B,CAT4C;;AAW5CR,EAAAA,yBAAyB,CAACL,OAAD,CAAzB;AACAK,EAAAA,yBAAyB,CAACL,OAAO,CAACa,OAAT,CAAzB;AACA,QAAMC,aAAa,GAAGhB,SAAS,CAACC,QAAQ,IAAI,EAAb,EAAiBC,OAAjB,CAA/B,CAb4C;;AAe5C,MAAID,QAAQ,IAAIA,QAAQ,CAACgB,SAAT,CAAmBC,QAAnB,CAA4BC,MAA5C,EAAoD;AAChDH,IAAAA,aAAa,CAACC,SAAd,CAAwBC,QAAxB,GAAmCjB,QAAQ,CAACgB,SAAT,CAAmBC,QAAnB,CAC9BE,MAD8B,CACtBC,OAAD,IAAa,CAACL,aAAa,CAACC,SAAd,CAAwBC,QAAxB,CAAiCI,QAAjC,CAA0CD,OAA1C,CADS,EAE9BE,MAF8B,CAEvBP,aAAa,CAACC,SAAd,CAAwBC,QAFD,CAAnC;AAGH;;AACDF,EAAAA,aAAa,CAACC,SAAd,CAAwBC,QAAxB,GAAmCF,aAAa,CAACC,SAAd,CAAwBC,QAAxB,CAAiCM,GAAjC,CAAsCH,OAAD,IAAaA,OAAO,CAACI,OAAR,CAAgB,UAAhB,EAA4B,EAA5B,CAAlD,CAAnC;AACA,SAAOT,aAAP;AACH;;ACzBM,SAASU,kBAAT,CAA4Bb,GAA5B,EAAiCc,UAAjC,EAA6C;AAChD,QAAMC,SAAS,GAAG,KAAKC,IAAL,CAAUhB,GAAV,IAAiB,GAAjB,GAAuB,GAAzC;AACA,QAAMiB,KAAK,GAAGpC,MAAM,CAACC,IAAP,CAAYgC,UAAZ,CAAd;;AACA,MAAIG,KAAK,CAACX,MAAN,KAAiB,CAArB,EAAwB;AACpB,WAAON,GAAP;AACH;;AACD,SAAQA,GAAG,GACPe,SADI,GAEJE,KAAK,CACAN,GADL,CACUO,IAAD,IAAU;AACf,QAAIA,IAAI,KAAK,GAAb,EAAkB;AACd,aAAQ,OAAOJ,UAAU,CAACK,CAAX,CAAalB,KAAb,CAAmB,GAAnB,EAAwBU,GAAxB,CAA4BS,kBAA5B,EAAgDC,IAAhD,CAAqD,GAArD,CAAf;AACH;;AACD,WAAQ,GAAEH,IAAK,IAAGE,kBAAkB,CAACN,UAAU,CAACI,IAAD,CAAX,CAAmB,EAAvD;AACH,GAND,EAOKG,IAPL,CAOU,GAPV,CAFJ;AAUH;;AChBD,MAAMC,gBAAgB,GAAG,YAAzB;;AACA,SAASC,cAAT,CAAwBC,YAAxB,EAAsC;AAClC,SAAOA,YAAY,CAACZ,OAAb,CAAqB,YAArB,EAAmC,EAAnC,EAAuCX,KAAvC,CAA6C,GAA7C,CAAP;AACH;;AACD,AAAO,SAASwB,uBAAT,CAAiCzB,GAAjC,EAAsC;AACzC,QAAM0B,OAAO,GAAG1B,GAAG,CAAC2B,KAAJ,CAAUL,gBAAV,CAAhB;;AACA,MAAI,CAACI,OAAL,EAAc;AACV,WAAO,EAAP;AACH;;AACD,SAAOA,OAAO,CAACf,GAAR,CAAYY,cAAZ,EAA4BxC,MAA5B,CAAmC,CAAC6C,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAAClB,MAAF,CAASmB,CAAT,CAA7C,EAA0D,EAA1D,CAAP;AACH;;ACVM,SAASC,IAAT,CAAclD,MAAd,EAAsBmD,UAAtB,EAAkC;AACrC,SAAOlD,MAAM,CAACC,IAAP,CAAYF,MAAZ,EACF2B,MADE,CACMyB,MAAD,IAAY,CAACD,UAAU,CAACtB,QAAX,CAAoBuB,MAApB,CADlB,EAEFjD,MAFE,CAEK,CAACY,GAAD,EAAMV,GAAN,KAAc;AACtBU,IAAAA,GAAG,CAACV,GAAD,CAAH,GAAWL,MAAM,CAACK,GAAD,CAAjB;AACA,WAAOU,GAAP;AACH,GALM,EAKJ,EALI,CAAP;AAMH;;ACPD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,SAASsC,cAAT,CAAwBC,GAAxB,EAA6B;AACzB,SAAOA,GAAG,CACLjC,KADE,CACI,oBADJ,EAEFU,GAFE,CAEE,UAAUwB,IAAV,EAAgB;AACrB,QAAI,CAAC,eAAenB,IAAf,CAAoBmB,IAApB,CAAL,EAAgC;AAC5BA,MAAAA,IAAI,GAAGC,SAAS,CAACD,IAAD,CAAT,CAAgBvB,OAAhB,CAAwB,MAAxB,EAAgC,GAAhC,EAAqCA,OAArC,CAA6C,MAA7C,EAAqD,GAArD,CAAP;AACH;;AACD,WAAOuB,IAAP;AACH,GAPM,EAQFd,IARE,CAQG,EARH,CAAP;AASH;;AACD,SAASgB,gBAAT,CAA0BH,GAA1B,EAA+B;AAC3B,SAAOd,kBAAkB,CAACc,GAAD,CAAlB,CAAwBtB,OAAxB,CAAgC,UAAhC,EAA4C,UAAU0B,CAAV,EAAa;AAC5D,WAAO,MAAMA,CAAC,CAACC,UAAF,CAAa,CAAb,EAAgBC,QAAhB,CAAyB,EAAzB,EAA6BC,WAA7B,EAAb;AACH,GAFM,CAAP;AAGH;;AACD,SAASC,WAAT,CAAqBC,QAArB,EAA+BC,KAA/B,EAAsC3D,GAAtC,EAA2C;AACvC2D,EAAAA,KAAK,GACDD,QAAQ,KAAK,GAAb,IAAoBA,QAAQ,KAAK,GAAjC,GACMV,cAAc,CAACW,KAAD,CADpB,GAEMP,gBAAgB,CAACO,KAAD,CAH1B;;AAIA,MAAI3D,GAAJ,EAAS;AACL,WAAOoD,gBAAgB,CAACpD,GAAD,CAAhB,GAAwB,GAAxB,GAA8B2D,KAArC;AACH,GAFD,MAGK;AACD,WAAOA,KAAP;AACH;AACJ;;AACD,SAASC,SAAT,CAAmBD,KAAnB,EAA0B;AACtB,SAAOA,KAAK,KAAKhD,SAAV,IAAuBgD,KAAK,KAAK,IAAxC;AACH;;AACD,SAASE,aAAT,CAAuBH,QAAvB,EAAiC;AAC7B,SAAOA,QAAQ,KAAK,GAAb,IAAoBA,QAAQ,KAAK,GAAjC,IAAwCA,QAAQ,KAAK,GAA5D;AACH;;AACD,SAASI,SAAT,CAAmBC,OAAnB,EAA4BL,QAA5B,EAAsC1D,GAAtC,EAA2CgE,QAA3C,EAAqD;AACjD,MAAIL,KAAK,GAAGI,OAAO,CAAC/D,GAAD,CAAnB;AAAA,MAA0BK,MAAM,GAAG,EAAnC;;AACA,MAAIuD,SAAS,CAACD,KAAD,CAAT,IAAoBA,KAAK,KAAK,EAAlC,EAAsC;AAClC,QAAI,OAAOA,KAAP,KAAiB,QAAjB,IACA,OAAOA,KAAP,KAAiB,QADjB,IAEA,OAAOA,KAAP,KAAiB,SAFrB,EAEgC;AAC5BA,MAAAA,KAAK,GAAGA,KAAK,CAACJ,QAAN,EAAR;;AACA,UAAIS,QAAQ,IAAIA,QAAQ,KAAK,GAA7B,EAAkC;AAC9BL,QAAAA,KAAK,GAAGA,KAAK,CAACM,SAAN,CAAgB,CAAhB,EAAmBC,QAAQ,CAACF,QAAD,EAAW,EAAX,CAA3B,CAAR;AACH;;AACD3D,MAAAA,MAAM,CAAC8D,IAAP,CAAYV,WAAW,CAACC,QAAD,EAAWC,KAAX,EAAkBE,aAAa,CAACH,QAAD,CAAb,GAA0B1D,GAA1B,GAAgC,EAAlD,CAAvB;AACH,KARD,MASK;AACD,UAAIgE,QAAQ,KAAK,GAAjB,EAAsB;AAClB,YAAII,KAAK,CAACC,OAAN,CAAcV,KAAd,CAAJ,EAA0B;AACtBA,UAAAA,KAAK,CAACrC,MAAN,CAAasC,SAAb,EAAwBrD,OAAxB,CAAgC,UAAUoD,KAAV,EAAiB;AAC7CtD,YAAAA,MAAM,CAAC8D,IAAP,CAAYV,WAAW,CAACC,QAAD,EAAWC,KAAX,EAAkBE,aAAa,CAACH,QAAD,CAAb,GAA0B1D,GAA1B,GAAgC,EAAlD,CAAvB;AACH,WAFD;AAGH,SAJD,MAKK;AACDJ,UAAAA,MAAM,CAACC,IAAP,CAAY8D,KAAZ,EAAmBpD,OAAnB,CAA2B,UAAU+D,CAAV,EAAa;AACpC,gBAAIV,SAAS,CAACD,KAAK,CAACW,CAAD,CAAN,CAAb,EAAyB;AACrBjE,cAAAA,MAAM,CAAC8D,IAAP,CAAYV,WAAW,CAACC,QAAD,EAAWC,KAAK,CAACW,CAAD,CAAhB,EAAqBA,CAArB,CAAvB;AACH;AACJ,WAJD;AAKH;AACJ,OAbD,MAcK;AACD,cAAMC,GAAG,GAAG,EAAZ;;AACA,YAAIH,KAAK,CAACC,OAAN,CAAcV,KAAd,CAAJ,EAA0B;AACtBA,UAAAA,KAAK,CAACrC,MAAN,CAAasC,SAAb,EAAwBrD,OAAxB,CAAgC,UAAUoD,KAAV,EAAiB;AAC7CY,YAAAA,GAAG,CAACJ,IAAJ,CAASV,WAAW,CAACC,QAAD,EAAWC,KAAX,CAApB;AACH,WAFD;AAGH,SAJD,MAKK;AACD/D,UAAAA,MAAM,CAACC,IAAP,CAAY8D,KAAZ,EAAmBpD,OAAnB,CAA2B,UAAU+D,CAAV,EAAa;AACpC,gBAAIV,SAAS,CAACD,KAAK,CAACW,CAAD,CAAN,CAAb,EAAyB;AACrBC,cAAAA,GAAG,CAACJ,IAAJ,CAASf,gBAAgB,CAACkB,CAAD,CAAzB;AACAC,cAAAA,GAAG,CAACJ,IAAJ,CAASV,WAAW,CAACC,QAAD,EAAWC,KAAK,CAACW,CAAD,CAAL,CAASf,QAAT,EAAX,CAApB;AACH;AACJ,WALD;AAMH;;AACD,YAAIM,aAAa,CAACH,QAAD,CAAjB,EAA6B;AACzBrD,UAAAA,MAAM,CAAC8D,IAAP,CAAYf,gBAAgB,CAACpD,GAAD,CAAhB,GAAwB,GAAxB,GAA8BuE,GAAG,CAACnC,IAAJ,CAAS,GAAT,CAA1C;AACH,SAFD,MAGK,IAAImC,GAAG,CAAClD,MAAJ,KAAe,CAAnB,EAAsB;AACvBhB,UAAAA,MAAM,CAAC8D,IAAP,CAAYI,GAAG,CAACnC,IAAJ,CAAS,GAAT,CAAZ;AACH;AACJ;AACJ;AACJ,GAhDD,MAiDK;AACD,QAAIsB,QAAQ,KAAK,GAAjB,EAAsB;AAClB,UAAIE,SAAS,CAACD,KAAD,CAAb,EAAsB;AAClBtD,QAAAA,MAAM,CAAC8D,IAAP,CAAYf,gBAAgB,CAACpD,GAAD,CAA5B;AACH;AACJ,KAJD,MAKK,IAAI2D,KAAK,KAAK,EAAV,KAAiBD,QAAQ,KAAK,GAAb,IAAoBA,QAAQ,KAAK,GAAlD,CAAJ,EAA4D;AAC7DrD,MAAAA,MAAM,CAAC8D,IAAP,CAAYf,gBAAgB,CAACpD,GAAD,CAAhB,GAAwB,GAApC;AACH,KAFI,MAGA,IAAI2D,KAAK,KAAK,EAAd,EAAkB;AACnBtD,MAAAA,MAAM,CAAC8D,IAAP,CAAY,EAAZ;AACH;AACJ;;AACD,SAAO9D,MAAP;AACH;;AACD,AAAO,SAASmE,QAAT,CAAkBC,QAAlB,EAA4B;AAC/B,SAAO;AACHC,IAAAA,MAAM,EAAEA,MAAM,CAACC,IAAP,CAAY,IAAZ,EAAkBF,QAAlB;AADL,GAAP;AAGH;;AACD,SAASC,MAAT,CAAgBD,QAAhB,EAA0BV,OAA1B,EAAmC;AAC/B,MAAIa,SAAS,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAAhB;AACA,SAAOH,QAAQ,CAAC9C,OAAT,CAAiB,4BAAjB,EAA+C,UAAUkD,CAAV,EAAaC,UAAb,EAAyBC,OAAzB,EAAkC;AACpF,QAAID,UAAJ,EAAgB;AACZ,UAAIpB,QAAQ,GAAG,EAAf;AACA,YAAMsB,MAAM,GAAG,EAAf;;AACA,UAAIJ,SAAS,CAACK,OAAV,CAAkBH,UAAU,CAACI,MAAX,CAAkB,CAAlB,CAAlB,MAA4C,CAAC,CAAjD,EAAoD;AAChDxB,QAAAA,QAAQ,GAAGoB,UAAU,CAACI,MAAX,CAAkB,CAAlB,CAAX;AACAJ,QAAAA,UAAU,GAAGA,UAAU,CAACK,MAAX,CAAkB,CAAlB,CAAb;AACH;;AACDL,MAAAA,UAAU,CAAC9D,KAAX,CAAiB,IAAjB,EAAuBT,OAAvB,CAA+B,UAAU6E,QAAV,EAAoB;AAC/C,YAAIb,GAAG,GAAG,4BAA4Bc,IAA5B,CAAiCD,QAAjC,CAAV;AACAJ,QAAAA,MAAM,CAACb,IAAP,CAAYL,SAAS,CAACC,OAAD,EAAUL,QAAV,EAAoBa,GAAG,CAAC,CAAD,CAAvB,EAA4BA,GAAG,CAAC,CAAD,CAAH,IAAUA,GAAG,CAAC,CAAD,CAAzC,CAArB;AACH,OAHD;;AAIA,UAAIb,QAAQ,IAAIA,QAAQ,KAAK,GAA7B,EAAkC;AAC9B,YAAI5B,SAAS,GAAG,GAAhB;;AACA,YAAI4B,QAAQ,KAAK,GAAjB,EAAsB;AAClB5B,UAAAA,SAAS,GAAG,GAAZ;AACH,SAFD,MAGK,IAAI4B,QAAQ,KAAK,GAAjB,EAAsB;AACvB5B,UAAAA,SAAS,GAAG4B,QAAZ;AACH;;AACD,eAAO,CAACsB,MAAM,CAAC3D,MAAP,KAAkB,CAAlB,GAAsBqC,QAAtB,GAAiC,EAAlC,IAAwCsB,MAAM,CAAC5C,IAAP,CAAYN,SAAZ,CAA/C;AACH,OATD,MAUK;AACD,eAAOkD,MAAM,CAAC5C,IAAP,CAAY,GAAZ,CAAP;AACH;AACJ,KAxBD,MAyBK;AACD,aAAOY,cAAc,CAAC+B,OAAD,CAArB;AACH;AACJ,GA7BM,CAAP;AA8BH;;AC/JM,SAASO,KAAT,CAAelF,OAAf,EAAwB;AAC3B;AACA,MAAIU,MAAM,GAAGV,OAAO,CAACU,MAAR,CAAe0C,WAAf,EAAb,CAF2B;;AAI3B,MAAIzC,GAAG,GAAG,CAACX,OAAO,CAACW,GAAR,IAAe,GAAhB,EAAqBY,OAArB,CAA6B,cAA7B,EAA6C,MAA7C,CAAV;AACA,MAAIV,OAAO,GAAGrB,MAAM,CAACU,MAAP,CAAc,EAAd,EAAkBF,OAAO,CAACa,OAA1B,CAAd;AACA,MAAIsE,IAAJ;AACA,MAAI1D,UAAU,GAAGgB,IAAI,CAACzC,OAAD,EAAU,CAC3B,QAD2B,EAE3B,SAF2B,EAG3B,KAH2B,EAI3B,SAJ2B,EAK3B,SAL2B,EAM3B,WAN2B,CAAV,CAArB,CAP2B;;AAgB3B,QAAMoF,gBAAgB,GAAGhD,uBAAuB,CAACzB,GAAD,CAAhD;AACAA,EAAAA,GAAG,GAAGyD,QAAQ,CAACzD,GAAD,CAAR,CAAc2D,MAAd,CAAqB7C,UAArB,CAAN;;AACA,MAAI,CAAC,QAAQE,IAAR,CAAahB,GAAb,CAAL,EAAwB;AACpBA,IAAAA,GAAG,GAAGX,OAAO,CAACqF,OAAR,GAAkB1E,GAAxB;AACH;;AACD,QAAM2E,iBAAiB,GAAG9F,MAAM,CAACC,IAAP,CAAYO,OAAZ,EACrBkB,MADqB,CACbyB,MAAD,IAAYyC,gBAAgB,CAAChE,QAAjB,CAA0BuB,MAA1B,CADE,EAErBtB,MAFqB,CAEd,SAFc,CAA1B;AAGA,QAAMkE,mBAAmB,GAAG9C,IAAI,CAAChB,UAAD,EAAa6D,iBAAb,CAAhC;AACA,QAAME,eAAe,GAAG,6BAA6B7D,IAA7B,CAAkCd,OAAO,CAAC4E,MAA1C,CAAxB;;AACA,MAAI,CAACD,eAAL,EAAsB;AAClB,QAAIxF,OAAO,CAACe,SAAR,CAAkB2E,MAAtB,EAA8B;AAC1B;AACA7E,MAAAA,OAAO,CAAC4E,MAAR,GAAiB5E,OAAO,CAAC4E,MAAR,CACZ7E,KADY,CACN,GADM,EAEZU,GAFY,CAEPH,OAAD,IAAaA,OAAO,CAACI,OAAR,CAAgB,kDAAhB,EAAqE,uBAAsBvB,OAAO,CAACe,SAAR,CAAkB2E,MAAO,EAApH,CAFL,EAGZ1D,IAHY,CAGP,GAHO,CAAjB;AAIH;;AACD,QAAIhC,OAAO,CAACe,SAAR,CAAkBC,QAAlB,CAA2BC,MAA/B,EAAuC;AACnC,YAAM0E,wBAAwB,GAAG9E,OAAO,CAAC4E,MAAR,CAAenD,KAAf,CAAqB,qBAArB,KAA+C,EAAhF;AACAzB,MAAAA,OAAO,CAAC4E,MAAR,GAAiBE,wBAAwB,CACpCtE,MADY,CACLrB,OAAO,CAACe,SAAR,CAAkBC,QADb,EAEZM,GAFY,CAEPH,OAAD,IAAa;AAClB,cAAMuE,MAAM,GAAG1F,OAAO,CAACe,SAAR,CAAkB2E,MAAlB,GACR,IAAG1F,OAAO,CAACe,SAAR,CAAkB2E,MAAO,EADpB,GAET,OAFN;AAGA,eAAQ,0BAAyBvE,OAAQ,WAAUuE,MAAO,EAA1D;AACH,OAPgB,EAQZ1D,IARY,CAQP,GARO,CAAjB;AASH;AACJ,GA9C0B;AAgD3B;;;AACA,MAAI,CAAC,KAAD,EAAQ,MAAR,EAAgBZ,QAAhB,CAAyBV,MAAzB,CAAJ,EAAsC;AAClCC,IAAAA,GAAG,GAAGa,kBAAkB,CAACb,GAAD,EAAM4E,mBAAN,CAAxB;AACH,GAFD,MAGK;AACD,QAAI,UAAUA,mBAAd,EAAmC;AAC/BJ,MAAAA,IAAI,GAAGI,mBAAmB,CAACK,IAA3B;AACH,KAFD,MAGK;AACD,UAAIpG,MAAM,CAACC,IAAP,CAAY8F,mBAAZ,EAAiCtE,MAArC,EAA6C;AACzCkE,QAAAA,IAAI,GAAGI,mBAAP;AACH,OAFD,MAGK;AACD1E,QAAAA,OAAO,CAAC,gBAAD,CAAP,GAA4B,CAA5B;AACH;AACJ;AACJ,GAhE0B;;;AAkE3B,MAAI,CAACA,OAAO,CAAC,cAAD,CAAR,IAA4B,OAAOsE,IAAP,KAAgB,WAAhD,EAA6D;AACzDtE,IAAAA,OAAO,CAAC,cAAD,CAAP,GAA0B,iCAA1B;AACH,GApE0B;AAsE3B;;;AACA,MAAI,CAAC,OAAD,EAAU,KAAV,EAAiBO,QAAjB,CAA0BV,MAA1B,KAAqC,OAAOyE,IAAP,KAAgB,WAAzD,EAAsE;AAClEA,IAAAA,IAAI,GAAG,EAAP;AACH,GAzE0B;;;AA2E3B,SAAO3F,MAAM,CAACU,MAAP,CAAc;AAAEQ,IAAAA,MAAF;AAAUC,IAAAA,GAAV;AAAeE,IAAAA;AAAf,GAAd,EAAwC,OAAOsE,IAAP,KAAgB,WAAhB,GAA8B;AAAEA,IAAAA;AAAF,GAA9B,GAAyC,IAAjF,EAAuFnF,OAAO,CAAC6F,OAAR,GAAkB;AAAEA,IAAAA,OAAO,EAAE7F,OAAO,CAAC6F;AAAnB,GAAlB,GAAiD,IAAxI,CAAP;AACH;;AC9EM,SAASC,oBAAT,CAA8B/F,QAA9B,EAAwCU,KAAxC,EAA+CT,OAA/C,EAAwD;AAC3D,SAAOkF,KAAK,CAAC1E,KAAK,CAACT,QAAD,EAAWU,KAAX,EAAkBT,OAAlB,CAAN,CAAZ;AACH;;ACDM,SAAS+F,YAAT,CAAsBC,WAAtB,EAAmCC,WAAnC,EAAgD;AACnD,QAAMC,QAAQ,GAAG1F,KAAK,CAACwF,WAAD,EAAcC,WAAd,CAAtB;AACA,QAAME,QAAQ,GAAGL,oBAAoB,CAACvB,IAArB,CAA0B,IAA1B,EAAgC2B,QAAhC,CAAjB;AACA,SAAO1G,MAAM,CAACU,MAAP,CAAciG,QAAd,EAAwB;AAC3BD,IAAAA,QAD2B;AAE3BnG,IAAAA,QAAQ,EAAEgG,YAAY,CAACxB,IAAb,CAAkB,IAAlB,EAAwB2B,QAAxB,CAFiB;AAG3B1F,IAAAA,KAAK,EAAEA,KAAK,CAAC+D,IAAN,CAAW,IAAX,EAAiB2B,QAAjB,CAHoB;AAI3BhB,IAAAA;AAJ2B,GAAxB,CAAP;AAMH;;ACZM,MAAMkB,OAAO,GAAG,mBAAhB;;ACEP,MAAMC,SAAS,GAAI,uBAAsBD,OAAQ,IAAGE,+BAAY,EAAG,EAAnE;AAEA;;AACA,AAAO,MAAMJ,QAAQ,GAAG;AACpBxF,EAAAA,MAAM,EAAE,KADY;AAEpB2E,EAAAA,OAAO,EAAE,wBAFW;AAGpBxE,EAAAA,OAAO,EAAE;AACL4E,IAAAA,MAAM,EAAE,gCADH;AAEL,kBAAcY;AAFT,GAHW;AAOpBtF,EAAAA,SAAS,EAAE;AACP2E,IAAAA,MAAM,EAAE,EADD;AAEP1E,IAAAA,QAAQ,EAAE;AAFH;AAPS,CAAjB;;MCHMmF,QAAQ,GAAGJ,YAAY,CAAC,IAAD,EAAOG,QAAP,CAA7B;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/endpoint/dist-src/defaults.js b/node_modules/@octokit/endpoint/dist-src/defaults.js deleted file mode 100644 index 456e586ad..000000000 --- a/node_modules/@octokit/endpoint/dist-src/defaults.js +++ /dev/null @@ -1,17 +0,0 @@ -import { getUserAgent } from "universal-user-agent"; -import { VERSION } from "./version"; -const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; -// DEFAULTS has all properties set that EndpointOptions has, except url. -// So we use RequestParameters and add method as additional required property. -export const DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent, - }, - mediaType: { - format: "", - previews: [], - }, -}; diff --git a/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js b/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js deleted file mode 100644 index 5763758fa..000000000 --- a/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js +++ /dev/null @@ -1,5 +0,0 @@ -import { merge } from "./merge"; -import { parse } from "./parse"; -export function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} diff --git a/node_modules/@octokit/endpoint/dist-src/index.js b/node_modules/@octokit/endpoint/dist-src/index.js deleted file mode 100644 index 599917f98..000000000 --- a/node_modules/@octokit/endpoint/dist-src/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import { withDefaults } from "./with-defaults"; -import { DEFAULTS } from "./defaults"; -export const endpoint = withDefaults(null, DEFAULTS); diff --git a/node_modules/@octokit/endpoint/dist-src/merge.js b/node_modules/@octokit/endpoint/dist-src/merge.js deleted file mode 100644 index 1abcecfa7..000000000 --- a/node_modules/@octokit/endpoint/dist-src/merge.js +++ /dev/null @@ -1,26 +0,0 @@ -import { lowercaseKeys } from "./util/lowercase-keys"; -import { mergeDeep } from "./util/merge-deep"; -import { removeUndefinedProperties } from "./util/remove-undefined-properties"; -export function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { method, url } : { url: method }, options); - } - else { - options = Object.assign({}, route); - } - // lowercase header names before merging with defaults to avoid duplicates - options.headers = lowercaseKeys(options.headers); - // remove properties with undefined values before merging - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); - // mediaType.previews arrays are merged, instead of overwritten - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews - .filter((preview) => !mergedOptions.mediaType.previews.includes(preview)) - .concat(mergedOptions.mediaType.previews); - } - mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, "")); - return mergedOptions; -} diff --git a/node_modules/@octokit/endpoint/dist-src/parse.js b/node_modules/@octokit/endpoint/dist-src/parse.js deleted file mode 100644 index 6bdd1bfa7..000000000 --- a/node_modules/@octokit/endpoint/dist-src/parse.js +++ /dev/null @@ -1,81 +0,0 @@ -import { addQueryParameters } from "./util/add-query-parameters"; -import { extractUrlVariableNames } from "./util/extract-url-variable-names"; -import { omit } from "./util/omit"; -import { parseUrl } from "./util/url-template"; -export function parse(options) { - // https://fetch.spec.whatwg.org/#methods - let method = options.method.toUpperCase(); - // replace :varname with {varname} to make it RFC 6570 compatible - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, [ - "method", - "baseUrl", - "url", - "headers", - "request", - "mediaType", - ]); - // extract variable names from URL to calculate remaining variables later - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options) - .filter((option) => urlVariableNames.includes(option)) - .concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw - headers.accept = headers.accept - .split(/,/) - .map((preview) => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)) - .join(","); - } - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader - .concat(options.mediaType.previews) - .map((preview) => { - const format = options.mediaType.format - ? `.${options.mediaType.format}` - : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }) - .join(","); - } - } - // for GET/HEAD requests, set URL query parameters from remaining parameters - // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } - else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } - else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - else { - headers["content-length"] = 0; - } - } - } - // default content-type for JSON if body is set - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } - // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. - // fetch does not allow to set `content-length` header, but we can set body to an empty string - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } - // Only return body/request keys if present - return Object.assign({ method, url, headers }, typeof body !== "undefined" ? { body } : null, options.request ? { request: options.request } : null); -} diff --git a/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js b/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js deleted file mode 100644 index d26be314c..000000000 --- a/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js +++ /dev/null @@ -1,17 +0,0 @@ -export function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; - } - return (url + - separator + - names - .map((name) => { - if (name === "q") { - return ("q=" + parameters.q.split("+").map(encodeURIComponent).join("+")); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }) - .join("&")); -} diff --git a/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js b/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js deleted file mode 100644 index 3e75db283..000000000 --- a/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js +++ /dev/null @@ -1,11 +0,0 @@ -const urlVariableRegex = /\{[^}]+\}/g; -function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); -} -export function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - if (!matches) { - return []; - } - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); -} diff --git a/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js b/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js deleted file mode 100644 index 078064255..000000000 --- a/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js +++ /dev/null @@ -1,9 +0,0 @@ -export function lowercaseKeys(object) { - if (!object) { - return {}; - } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} diff --git a/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js b/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js deleted file mode 100644 index d92aca35c..000000000 --- a/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js +++ /dev/null @@ -1,16 +0,0 @@ -import { isPlainObject } from "is-plain-object"; -export function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach((key) => { - if (isPlainObject(options[key])) { - if (!(key in defaults)) - Object.assign(result, { [key]: options[key] }); - else - result[key] = mergeDeep(defaults[key], options[key]); - } - else { - Object.assign(result, { [key]: options[key] }); - } - }); - return result; -} diff --git a/node_modules/@octokit/endpoint/dist-src/util/omit.js b/node_modules/@octokit/endpoint/dist-src/util/omit.js deleted file mode 100644 index 62450310d..000000000 --- a/node_modules/@octokit/endpoint/dist-src/util/omit.js +++ /dev/null @@ -1,8 +0,0 @@ -export function omit(object, keysToOmit) { - return Object.keys(object) - .filter((option) => !keysToOmit.includes(option)) - .reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); -} diff --git a/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js b/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js deleted file mode 100644 index 6b5ee5fbe..000000000 --- a/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js +++ /dev/null @@ -1,8 +0,0 @@ -export function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === undefined) { - delete obj[key]; - } - } - return obj; -} diff --git a/node_modules/@octokit/endpoint/dist-src/util/url-template.js b/node_modules/@octokit/endpoint/dist-src/util/url-template.js deleted file mode 100644 index 439b3feec..000000000 --- a/node_modules/@octokit/endpoint/dist-src/util/url-template.js +++ /dev/null @@ -1,164 +0,0 @@ -// Based on https://github.com/bramstein/url-template, licensed under BSD -// TODO: create separate package. -// -// Copyright (c) 2012-2014, Bram Stein -// All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -/* istanbul ignore file */ -function encodeReserved(str) { - return str - .split(/(%[0-9A-Fa-f]{2})/g) - .map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - return part; - }) - .join(""); -} -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); -} -function encodeValue(operator, value, key) { - value = - operator === "+" || operator === "#" - ? encodeReserved(value) - : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + "=" + value; - } - else { - return value; - } -} -function isDefined(value) { - return value !== undefined && value !== null; -} -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} -function getValues(context, operator, key, modifier) { - var value = context[key], result = []; - if (isDefined(value) && value !== "") { - if (typeof value === "string" || - typeof value === "number" || - typeof value === "boolean") { - value = value.toString(); - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - } - else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - }); - } - else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } - else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - tmp.push(encodeValue(operator, value)); - }); - } - else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } - else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } - else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } - else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } - else if (value === "") { - result.push(""); - } - } - return result; -} -export function parseUrl(template) { - return { - expand: expand.bind(null, template), - }; -} -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - if (operator && operator !== "+") { - var separator = ","; - if (operator === "?") { - separator = "&"; - } - else if (operator !== "#") { - separator = operator; - } - return (values.length !== 0 ? operator : "") + values.join(separator); - } - else { - return values.join(","); - } - } - else { - return encodeReserved(literal); - } - }); -} diff --git a/node_modules/@octokit/endpoint/dist-src/version.js b/node_modules/@octokit/endpoint/dist-src/version.js deleted file mode 100644 index 37535774f..000000000 --- a/node_modules/@octokit/endpoint/dist-src/version.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "6.0.10"; diff --git a/node_modules/@octokit/endpoint/dist-src/with-defaults.js b/node_modules/@octokit/endpoint/dist-src/with-defaults.js deleted file mode 100644 index 81baf6cfb..000000000 --- a/node_modules/@octokit/endpoint/dist-src/with-defaults.js +++ /dev/null @@ -1,13 +0,0 @@ -import { endpointWithDefaults } from "./endpoint-with-defaults"; -import { merge } from "./merge"; -import { parse } from "./parse"; -export function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS = merge(oldDefaults, newDefaults); - const endpoint = endpointWithDefaults.bind(null, DEFAULTS); - return Object.assign(endpoint, { - DEFAULTS, - defaults: withDefaults.bind(null, DEFAULTS), - merge: merge.bind(null, DEFAULTS), - parse, - }); -} diff --git a/node_modules/@octokit/endpoint/dist-types/defaults.d.ts b/node_modules/@octokit/endpoint/dist-types/defaults.d.ts deleted file mode 100644 index 30fcd2030..000000000 --- a/node_modules/@octokit/endpoint/dist-types/defaults.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { EndpointDefaults } from "@octokit/types"; -export declare const DEFAULTS: EndpointDefaults; diff --git a/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts b/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts deleted file mode 100644 index ff39e5e72..000000000 --- a/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { EndpointOptions, RequestParameters, Route } from "@octokit/types"; -import { DEFAULTS } from "./defaults"; -export declare function endpointWithDefaults(defaults: typeof DEFAULTS, route: Route | EndpointOptions, options?: RequestParameters): import("@octokit/types").RequestOptions; diff --git a/node_modules/@octokit/endpoint/dist-types/index.d.ts b/node_modules/@octokit/endpoint/dist-types/index.d.ts deleted file mode 100644 index 1ede13667..000000000 --- a/node_modules/@octokit/endpoint/dist-types/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const endpoint: import("@octokit/types").EndpointInterface; diff --git a/node_modules/@octokit/endpoint/dist-types/merge.d.ts b/node_modules/@octokit/endpoint/dist-types/merge.d.ts deleted file mode 100644 index b75a15ec7..000000000 --- a/node_modules/@octokit/endpoint/dist-types/merge.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { EndpointDefaults, RequestParameters, Route } from "@octokit/types"; -export declare function merge(defaults: EndpointDefaults | null, route?: Route | RequestParameters, options?: RequestParameters): EndpointDefaults; diff --git a/node_modules/@octokit/endpoint/dist-types/parse.d.ts b/node_modules/@octokit/endpoint/dist-types/parse.d.ts deleted file mode 100644 index fbe214406..000000000 --- a/node_modules/@octokit/endpoint/dist-types/parse.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { EndpointDefaults, RequestOptions } from "@octokit/types"; -export declare function parse(options: EndpointDefaults): RequestOptions; diff --git a/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts b/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts deleted file mode 100644 index 4b192ac41..000000000 --- a/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare function addQueryParameters(url: string, parameters: { - [x: string]: string | undefined; - q?: string; -}): string; diff --git a/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts b/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts deleted file mode 100644 index 93586d4db..000000000 --- a/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function extractUrlVariableNames(url: string): string[]; diff --git a/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts b/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts deleted file mode 100644 index 1daf30736..000000000 --- a/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function lowercaseKeys(object?: { - [key: string]: any; -}): { - [key: string]: any; -}; diff --git a/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts b/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts deleted file mode 100644 index 914411cf9..000000000 --- a/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function mergeDeep(defaults: any, options: any): object; diff --git a/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts b/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts deleted file mode 100644 index 06927d6bd..000000000 --- a/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function omit(object: { - [key: string]: any; -}, keysToOmit: string[]): { - [key: string]: any; -}; diff --git a/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts b/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts deleted file mode 100644 index 92d8d8505..000000000 --- a/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function removeUndefinedProperties(obj: any): any; diff --git a/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts b/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts deleted file mode 100644 index 5d967cab3..000000000 --- a/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare function parseUrl(template: string): { - expand: (context: object) => string; -}; diff --git a/node_modules/@octokit/endpoint/dist-types/version.d.ts b/node_modules/@octokit/endpoint/dist-types/version.d.ts deleted file mode 100644 index 633050ce8..000000000 --- a/node_modules/@octokit/endpoint/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "6.0.10"; diff --git a/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts b/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts deleted file mode 100644 index 6f5afd1e0..000000000 --- a/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { EndpointInterface, RequestParameters, EndpointDefaults } from "@octokit/types"; -export declare function withDefaults(oldDefaults: EndpointDefaults | null, newDefaults: RequestParameters): EndpointInterface; diff --git a/node_modules/@octokit/endpoint/dist-web/index.js b/node_modules/@octokit/endpoint/dist-web/index.js deleted file mode 100644 index 4377ef431..000000000 --- a/node_modules/@octokit/endpoint/dist-web/index.js +++ /dev/null @@ -1,381 +0,0 @@ -import { isPlainObject } from 'is-plain-object'; -import { getUserAgent } from 'universal-user-agent'; - -function lowercaseKeys(object) { - if (!object) { - return {}; - } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} - -function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach((key) => { - if (isPlainObject(options[key])) { - if (!(key in defaults)) - Object.assign(result, { [key]: options[key] }); - else - result[key] = mergeDeep(defaults[key], options[key]); - } - else { - Object.assign(result, { [key]: options[key] }); - } - }); - return result; -} - -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === undefined) { - delete obj[key]; - } - } - return obj; -} - -function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { method, url } : { url: method }, options); - } - else { - options = Object.assign({}, route); - } - // lowercase header names before merging with defaults to avoid duplicates - options.headers = lowercaseKeys(options.headers); - // remove properties with undefined values before merging - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); - // mediaType.previews arrays are merged, instead of overwritten - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews - .filter((preview) => !mergedOptions.mediaType.previews.includes(preview)) - .concat(mergedOptions.mediaType.previews); - } - mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, "")); - return mergedOptions; -} - -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; - } - return (url + - separator + - names - .map((name) => { - if (name === "q") { - return ("q=" + parameters.q.split("+").map(encodeURIComponent).join("+")); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }) - .join("&")); -} - -const urlVariableRegex = /\{[^}]+\}/g; -function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); -} -function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - if (!matches) { - return []; - } - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); -} - -function omit(object, keysToOmit) { - return Object.keys(object) - .filter((option) => !keysToOmit.includes(option)) - .reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); -} - -// Based on https://github.com/bramstein/url-template, licensed under BSD -// TODO: create separate package. -// -// Copyright (c) 2012-2014, Bram Stein -// All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -/* istanbul ignore file */ -function encodeReserved(str) { - return str - .split(/(%[0-9A-Fa-f]{2})/g) - .map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - return part; - }) - .join(""); -} -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); -} -function encodeValue(operator, value, key) { - value = - operator === "+" || operator === "#" - ? encodeReserved(value) - : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + "=" + value; - } - else { - return value; - } -} -function isDefined(value) { - return value !== undefined && value !== null; -} -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} -function getValues(context, operator, key, modifier) { - var value = context[key], result = []; - if (isDefined(value) && value !== "") { - if (typeof value === "string" || - typeof value === "number" || - typeof value === "boolean") { - value = value.toString(); - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - } - else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - }); - } - else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } - else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - tmp.push(encodeValue(operator, value)); - }); - } - else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } - else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } - else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } - else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } - else if (value === "") { - result.push(""); - } - } - return result; -} -function parseUrl(template) { - return { - expand: expand.bind(null, template), - }; -} -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - if (operator && operator !== "+") { - var separator = ","; - if (operator === "?") { - separator = "&"; - } - else if (operator !== "#") { - separator = operator; - } - return (values.length !== 0 ? operator : "") + values.join(separator); - } - else { - return values.join(","); - } - } - else { - return encodeReserved(literal); - } - }); -} - -function parse(options) { - // https://fetch.spec.whatwg.org/#methods - let method = options.method.toUpperCase(); - // replace :varname with {varname} to make it RFC 6570 compatible - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, [ - "method", - "baseUrl", - "url", - "headers", - "request", - "mediaType", - ]); - // extract variable names from URL to calculate remaining variables later - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options) - .filter((option) => urlVariableNames.includes(option)) - .concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw - headers.accept = headers.accept - .split(/,/) - .map((preview) => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)) - .join(","); - } - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader - .concat(options.mediaType.previews) - .map((preview) => { - const format = options.mediaType.format - ? `.${options.mediaType.format}` - : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }) - .join(","); - } - } - // for GET/HEAD requests, set URL query parameters from remaining parameters - // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } - else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } - else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - else { - headers["content-length"] = 0; - } - } - } - // default content-type for JSON if body is set - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } - // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. - // fetch does not allow to set `content-length` header, but we can set body to an empty string - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } - // Only return body/request keys if present - return Object.assign({ method, url, headers }, typeof body !== "undefined" ? { body } : null, options.request ? { request: options.request } : null); -} - -function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} - -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS = merge(oldDefaults, newDefaults); - const endpoint = endpointWithDefaults.bind(null, DEFAULTS); - return Object.assign(endpoint, { - DEFAULTS, - defaults: withDefaults.bind(null, DEFAULTS), - merge: merge.bind(null, DEFAULTS), - parse, - }); -} - -const VERSION = "6.0.10"; - -const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; -// DEFAULTS has all properties set that EndpointOptions has, except url. -// So we use RequestParameters and add method as additional required property. -const DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent, - }, - mediaType: { - format: "", - previews: [], - }, -}; - -const endpoint = withDefaults(null, DEFAULTS); - -export { endpoint }; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/endpoint/dist-web/index.js.map b/node_modules/@octokit/endpoint/dist-web/index.js.map deleted file mode 100644 index 69cdbcf1e..000000000 --- a/node_modules/@octokit/endpoint/dist-web/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/util/lowercase-keys.js","../dist-src/util/merge-deep.js","../dist-src/util/remove-undefined-properties.js","../dist-src/merge.js","../dist-src/util/add-query-parameters.js","../dist-src/util/extract-url-variable-names.js","../dist-src/util/omit.js","../dist-src/util/url-template.js","../dist-src/parse.js","../dist-src/endpoint-with-defaults.js","../dist-src/with-defaults.js","../dist-src/version.js","../dist-src/defaults.js","../dist-src/index.js"],"sourcesContent":["export function lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n","import { isPlainObject } from \"is-plain-object\";\nexport function mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n }\n else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n","export function removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n }\n }\n return obj;\n}\n","import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties\";\nexport function merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n }\n else {\n options = Object.assign({}, route);\n }\n // lowercase header names before merging with defaults to avoid duplicates\n options.headers = lowercaseKeys(options.headers);\n // remove properties with undefined values before merging\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n // mediaType.previews arrays are merged, instead of overwritten\n if (defaults && defaults.mediaType.previews.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews\n .filter((preview) => !mergedOptions.mediaType.previews.includes(preview))\n .concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, \"\"));\n return mergedOptions;\n}\n","export function addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return (url +\n separator +\n names\n .map((name) => {\n if (name === \"q\") {\n return (\"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\"));\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n })\n .join(\"&\"));\n}\n","const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nexport function extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n","export function omit(object, keysToOmit) {\n return Object.keys(object)\n .filter((option) => !keysToOmit.includes(option))\n .reduce((obj, key) => {\n obj[key] = object[key];\n return obj;\n }, {});\n}\n","// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n// 1. Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// 3. The name of the author may not be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n return str\n .split(/(%[0-9A-Fa-f]{2})/g)\n .map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n })\n .join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value =\n operator === \"+\" || operator === \"#\"\n ? encodeReserved(value)\n : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n }\n else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n }\n else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n }\n else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n }\n else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n }\n else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n }\n else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n }\n else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nexport function parseUrl(template) {\n return {\n expand: expand.bind(null, template),\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n }\n else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n }\n else {\n return values.join(\",\");\n }\n }\n else {\n return encodeReserved(literal);\n }\n });\n}\n","import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nexport function parse(options) {\n // https://fetch.spec.whatwg.org/#methods\n let method = options.method.toUpperCase();\n // replace :varname with {varname} to make it RFC 6570 compatible\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\",\n ]);\n // extract variable names from URL to calculate remaining variables later\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options)\n .filter((option) => urlVariableNames.includes(option))\n .concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n headers.accept = headers.accept\n .split(/,/)\n .map((preview) => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))\n .join(\",\");\n }\n if (options.mediaType.previews.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader\n .concat(options.mediaType.previews)\n .map((preview) => {\n const format = options.mediaType.format\n ? `.${options.mediaType.format}`\n : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n })\n .join(\",\");\n }\n }\n // for GET/HEAD requests, set URL query parameters from remaining parameters\n // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n }\n else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n }\n else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n else {\n headers[\"content-length\"] = 0;\n }\n }\n }\n // default content-type for JSON if body is set\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n // fetch does not allow to set `content-length` header, but we can set body to an empty string\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n // Only return body/request keys if present\n return Object.assign({ method, url, headers }, typeof body !== \"undefined\" ? { body } : null, options.request ? { request: options.request } : null);\n}\n","import { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n","import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse,\n });\n}\n","export const VERSION = \"6.0.10\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\n// DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\nexport const DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent,\n },\n mediaType: {\n format: \"\",\n previews: [],\n },\n};\n","import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nexport const endpoint = withDefaults(null, DEFAULTS);\n"],"names":[],"mappings":";;;AAAO,SAAS,aAAa,CAAC,MAAM,EAAE;AACtC,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK;AACvD,QAAQ,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAChD,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX;;ACPO,SAAS,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC7C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC1C,QAAQ,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACzC,YAAY,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC;AAClC,gBAAgB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/D;AACA,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3D,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;;ACfM,SAAS,yBAAyB,CAAC,GAAG,EAAE;AAC/C,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AAC3B,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACpC,YAAY,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;;ACJM,SAAS,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;AAChD,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AAClF,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrD;AACA,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACvC,IAAI,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/C,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;AAC7D;AACA,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxD,QAAQ,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ;AACtE,aAAa,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrF,aAAa,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1H,IAAI,OAAO,aAAa,CAAC;AACzB,CAAC;;ACzBM,SAAS,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE;AACpD,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AACjD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,SAAS;AACjB,QAAQ,KAAK;AACb,aAAa,GAAG,CAAC,CAAC,IAAI,KAAK;AAC3B,YAAY,IAAI,IAAI,KAAK,GAAG,EAAE;AAC9B,gBAAgB,QAAQ,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC1F,aAAa;AACb,YAAY,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,SAAS,CAAC;AACV,aAAa,IAAI,CAAC,GAAG,CAAC,EAAE;AACxB,CAAC;;AChBD,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,SAAS,cAAc,CAAC,YAAY,EAAE;AACtC,IAAI,OAAO,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7D,CAAC;AACD,AAAO,SAAS,uBAAuB,CAAC,GAAG,EAAE;AAC7C,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;;ACVM,SAAS,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,SAAS,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzD,SAAS,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AAC9B,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;;ACPD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,IAAI,OAAO,GAAG;AACd,SAAS,KAAK,CAAC,oBAAoB,CAAC;AACpC,SAAS,GAAG,CAAC,UAAU,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxC,YAAY,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7E,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN,SAAS,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AACD,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,IAAI,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;AACpE,QAAQ,OAAO,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAChE,KAAK,CAAC,CAAC;AACP,CAAC;AACD,SAAS,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;AAC3C,IAAI,KAAK;AACT,QAAQ,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG;AAC5C,cAAc,cAAc,CAAC,KAAK,CAAC;AACnC,cAAc,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AACnD,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,CAAC;AACD,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACjD,CAAC;AACD,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,IAAI,OAAO,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,CAAC;AACpE,CAAC;AACD,SAAS,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;AACrD,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AAC1C,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE;AAC1C,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;AACrC,YAAY,OAAO,KAAK,KAAK,QAAQ;AACrC,YAAY,OAAO,KAAK,KAAK,SAAS,EAAE;AACxC,YAAY,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AACrC,YAAY,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE;AAC9C,gBAAgB,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AACnE,aAAa;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1F,SAAS;AACT,aAAa;AACb,YAAY,IAAI,QAAQ,KAAK,GAAG,EAAE;AAClC,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC1C,oBAAoB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;AACrE,wBAAwB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AACtG,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC5D,wBAAwB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,4BAA4B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,yBAAyB;AACzB,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,GAAG,GAAG,EAAE,CAAC;AAC/B,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC1C,oBAAoB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;AACrE,wBAAwB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC5D,wBAAwB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,4BAA4B,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,4BAA4B,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjF,yBAAyB;AACzB,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;AAC7C,oBAAoB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,iBAAiB;AACjB,qBAAqB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,oBAAoB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE;AAC9B,YAAY,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AAClC,gBAAgB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,aAAa;AACb,SAAS;AACT,aAAa,IAAI,KAAK,KAAK,EAAE,KAAK,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,CAAC,EAAE;AACzE,YAAY,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACrD,SAAS;AACT,aAAa,IAAI,KAAK,KAAK,EAAE,EAAE;AAC/B,YAAY,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,AAAO,SAAS,QAAQ,CAAC,QAAQ,EAAE;AACnC,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC3C,KAAK,CAAC;AACN,CAAC;AACD,SAAS,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;AACnC,IAAI,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxD,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,4BAA4B,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE;AAC5F,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC9B,YAAY,MAAM,MAAM,GAAG,EAAE,CAAC;AAC9B,YAAY,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAChE,gBAAgB,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAgB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClD,aAAa;AACb,YAAY,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE;AAC/D,gBAAgB,IAAI,GAAG,GAAG,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrE,gBAAgB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE;AAC9C,gBAAgB,IAAI,SAAS,GAAG,GAAG,CAAC;AACpC,gBAAgB,IAAI,QAAQ,KAAK,GAAG,EAAE;AACtC,oBAAoB,SAAS,GAAG,GAAG,CAAC;AACpC,iBAAiB;AACjB,qBAAqB,IAAI,QAAQ,KAAK,GAAG,EAAE;AAC3C,oBAAoB,SAAS,GAAG,QAAQ,CAAC;AACzC,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtF,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AAC3C,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;;AC/JM,SAAS,KAAK,CAAC,OAAO,EAAE;AAC/B;AACA,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAC9C;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACnE,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACrD,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE;AACnC,QAAQ,QAAQ;AAChB,QAAQ,SAAS;AACjB,QAAQ,KAAK;AACb,QAAQ,SAAS;AACjB,QAAQ,SAAS;AACjB,QAAQ,WAAW;AACnB,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAC1D,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAQ,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,SAAS,MAAM,CAAC,CAAC,MAAM,KAAK,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9D,SAAS,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,IAAI,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AACpE,IAAI,MAAM,eAAe,GAAG,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9E,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;AACtC;AACA,YAAY,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AAC3C,iBAAiB,KAAK,CAAC,GAAG,CAAC;AAC3B,iBAAiB,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,kDAAkD,EAAE,CAAC,oBAAoB,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzJ,iBAAiB,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC/C,YAAY,MAAM,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;AAC/F,YAAY,OAAO,CAAC,MAAM,GAAG,wBAAwB;AACrD,iBAAiB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnD,iBAAiB,GAAG,CAAC,CAAC,OAAO,KAAK;AAClC,gBAAgB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM;AACvD,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACpD,sBAAsB,OAAO,CAAC;AAC9B,gBAAgB,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,aAAa,CAAC;AACd,iBAAiB,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAS;AACT,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1C,QAAQ,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;AAC3D,KAAK;AACL,SAAS;AACT,QAAQ,IAAI,MAAM,IAAI,mBAAmB,EAAE;AAC3C,YAAY,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;AAC5C,SAAS;AACT,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,EAAE;AACzD,gBAAgB,IAAI,GAAG,mBAAmB,CAAC;AAC3C,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC9C,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AACjE,QAAQ,OAAO,CAAC,cAAc,CAAC,GAAG,iCAAiC,CAAC;AACpE,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AAC1E,QAAQ,IAAI,GAAG,EAAE,CAAC;AAClB,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,IAAI,KAAK,WAAW,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACzJ,CAAC;;AC9EM,SAAS,oBAAoB,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;AAC/D,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAClD,CAAC;;ACDM,SAAS,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE;AACvD,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACrD,IAAI,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/D,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACnC,QAAQ,QAAQ;AAChB,QAAQ,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACnD,QAAQ,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACzC,QAAQ,KAAK;AACb,KAAK,CAAC,CAAC;AACP,CAAC;;ACZM,MAAM,OAAO,GAAG,mBAAmB,CAAC;;ACE3C,MAAM,SAAS,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AACrE;AACA;AACA,AAAO,MAAM,QAAQ,GAAG;AACxB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,OAAO,EAAE,wBAAwB;AACrC,IAAI,OAAO,EAAE;AACb,QAAQ,MAAM,EAAE,gCAAgC;AAChD,QAAQ,YAAY,EAAE,SAAS;AAC/B,KAAK;AACL,IAAI,SAAS,EAAE;AACf,QAAQ,MAAM,EAAE,EAAE;AAClB,QAAQ,QAAQ,EAAE,EAAE;AACpB,KAAK;AACL,CAAC,CAAC;;ACdU,MAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/endpoint/node_modules/is-plain-object/LICENSE b/node_modules/@octokit/endpoint/node_modules/is-plain-object/LICENSE deleted file mode 100644 index 3f2eca18f..000000000 --- a/node_modules/@octokit/endpoint/node_modules/is-plain-object/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/@octokit/endpoint/node_modules/is-plain-object/README.md b/node_modules/@octokit/endpoint/node_modules/is-plain-object/README.md deleted file mode 100644 index 5c074ab06..000000000 --- a/node_modules/@octokit/endpoint/node_modules/is-plain-object/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# is-plain-object [![NPM version](https://img.shields.io/npm/v/is-plain-object.svg?style=flat)](https://www.npmjs.com/package/is-plain-object) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![NPM total downloads](https://img.shields.io/npm/dt/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-plain-object.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-plain-object) - -> Returns true if an object was created by the `Object` constructor, or Object.create(null). - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-plain-object -``` - -Use [isobject](https://github.com/jonschlinkert/isobject) if you only want to check if the value is an object and not an array or null. - -## Usage - -with es modules -```js -import { isPlainObject } from 'is-plain-object'; -``` - -or with commonjs -```js -const { isPlainObject } = require('is-plain-object'); -``` - -**true** when created by the `Object` constructor, or Object.create(null). - -```js -isPlainObject(Object.create({})); -//=> true -isPlainObject(Object.create(Object.prototype)); -//=> true -isPlainObject({foo: 'bar'}); -//=> true -isPlainObject({}); -//=> true -isPlainObject(null); -//=> true -``` - -**false** when not created by the `Object` constructor. - -```js -isPlainObject(1); -//=> false -isPlainObject(['foo', 'bar']); -//=> false -isPlainObject([]); -//=> false -isPlainObject(new Foo); -//=> false -isPlainObject(Object.create(null)); -//=> false -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-number](https://www.npmjs.com/package/is-number): Returns true if a number or string value is a finite number. Useful for regex… [more](https://github.com/jonschlinkert/is-number) | [homepage](https://github.com/jonschlinkert/is-number "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") -* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 19 | [jonschlinkert](https://github.com/jonschlinkert) | -| 6 | [TrySound](https://github.com/TrySound) | -| 6 | [stevenvachon](https://github.com/stevenvachon) | -| 3 | [onokumus](https://github.com/onokumus) | -| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Author - -**Jon Schlinkert** - -* [GitHub Profile](https://github.com/jonschlinkert) -* [Twitter Profile](https://twitter.com/jonschlinkert) -* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) - -### License - -Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._ diff --git a/node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.js b/node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.js deleted file mode 100644 index d134e4f28..000000000 --- a/node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObject(o) { - return Object.prototype.toString.call(o) === '[object Object]'; -} - -function isPlainObject(o) { - var ctor,prot; - - if (isObject(o) === false) return false; - - // If has modified constructor - ctor = o.constructor; - if (ctor === undefined) return true; - - // If has modified prototype - prot = ctor.prototype; - if (isObject(prot) === false) return false; - - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - - // Most likely a plain Object - return true; -} - -exports.isPlainObject = isPlainObject; diff --git a/node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.mjs b/node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.mjs deleted file mode 100644 index c2d9f351f..000000000 --- a/node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.mjs +++ /dev/null @@ -1,34 +0,0 @@ -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObject(o) { - return Object.prototype.toString.call(o) === '[object Object]'; -} - -function isPlainObject(o) { - var ctor,prot; - - if (isObject(o) === false) return false; - - // If has modified constructor - ctor = o.constructor; - if (ctor === undefined) return true; - - // If has modified prototype - prot = ctor.prototype; - if (isObject(prot) === false) return false; - - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - - // Most likely a plain Object - return true; -} - -export { isPlainObject }; diff --git a/node_modules/@octokit/endpoint/node_modules/is-plain-object/is-plain-object.d.ts b/node_modules/@octokit/endpoint/node_modules/is-plain-object/is-plain-object.d.ts deleted file mode 100644 index a359940d5..000000000 --- a/node_modules/@octokit/endpoint/node_modules/is-plain-object/is-plain-object.d.ts +++ /dev/null @@ -1 +0,0 @@ -export function isPlainObject(o: any): boolean; diff --git a/node_modules/@octokit/endpoint/node_modules/is-plain-object/package.json b/node_modules/@octokit/endpoint/node_modules/is-plain-object/package.json deleted file mode 100644 index cae01f5ac..000000000 --- a/node_modules/@octokit/endpoint/node_modules/is-plain-object/package.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_from": "is-plain-object@^5.0.0", - "_id": "is-plain-object@5.0.0", - "_inBundle": false, - "_integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "_location": "/@octokit/endpoint/is-plain-object", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "is-plain-object@^5.0.0", - "name": "is-plain-object", - "escapedName": "is-plain-object", - "rawSpec": "^5.0.0", - "saveSpec": null, - "fetchSpec": "^5.0.0" - }, - "_requiredBy": [ - "/@octokit/endpoint" - ], - "_resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "_shasum": "4427f50ab3429e9025ea7d52e9043a9ef4159344", - "_spec": "is-plain-object@^5.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\endpoint", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-plain-object/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Osman Nuri Okumuş", - "url": "http://onokumus.com" - }, - { - "name": "Steven Vachon", - "url": "https://svachon.com" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - }, - { - "name": "Bogdan Chadkin", - "url": "https://github.com/TrySound" - } - ], - "deprecated": false, - "description": "Returns true if an object was created by the `Object` constructor, or Object.create(null).", - "devDependencies": { - "chai": "^4.2.0", - "esm": "^3.2.22", - "gulp-format-md": "^1.0.0", - "mocha": "^6.1.4", - "mocha-headless-chrome": "^3.1.0", - "rollup": "^2.22.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "exports": { - ".": { - "import": "./dist/is-plain-object.mjs", - "require": "./dist/is-plain-object.js" - }, - "./package.json": "./package.json" - }, - "files": [ - "is-plain-object.d.ts", - "dist" - ], - "homepage": "https://github.com/jonschlinkert/is-plain-object", - "keywords": [ - "check", - "is", - "is-object", - "isobject", - "javascript", - "kind", - "kind-of", - "object", - "plain", - "type", - "typeof", - "value" - ], - "license": "MIT", - "main": "dist/is-plain-object.js", - "module": "dist/is-plain-object.mjs", - "name": "is-plain-object", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-plain-object.git" - }, - "scripts": { - "build": "rollup -c", - "prepare": "rollup -c", - "test": "npm run test_node && npm run build && npm run test_browser", - "test_browser": "mocha-headless-chrome --args=disable-web-security -f test/browser.html", - "test_node": "mocha -r esm" - }, - "types": "is-plain-object.d.ts", - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-number", - "isobject", - "kind-of" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "5.0.0" -} diff --git a/node_modules/@octokit/endpoint/package.json b/node_modules/@octokit/endpoint/package.json deleted file mode 100644 index 55a5dd110..000000000 --- a/node_modules/@octokit/endpoint/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_from": "@octokit/endpoint@^6.0.1", - "_id": "@octokit/endpoint@6.0.10", - "_inBundle": false, - "_integrity": "sha512-9+Xef8nT7OKZglfkOMm7IL6VwxXUQyR7DUSU0LH/F7VNqs8vyd7es5pTfz9E7DwUIx7R3pGscxu1EBhYljyu7Q==", - "_location": "/@octokit/endpoint", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/endpoint@^6.0.1", - "name": "@octokit/endpoint", - "escapedName": "@octokit%2fendpoint", - "scope": "@octokit", - "rawSpec": "^6.0.1", - "saveSpec": null, - "fetchSpec": "^6.0.1" - }, - "_requiredBy": [ - "/@octokit/request" - ], - "_resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.10.tgz", - "_shasum": "741ce1fa2f4fb77ce8ebe0c6eaf5ce63f565f8e8", - "_spec": "@octokit/endpoint@^6.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\request", - "bugs": { - "url": "https://github.com/octokit/endpoint.js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@octokit/types": "^6.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "deprecated": false, - "description": "Turns REST API endpoints into generic request options", - "devDependencies": { - "@pika/pack": "^0.5.0", - "@pika/plugin-build-node": "^0.9.0", - "@pika/plugin-build-web": "^0.9.0", - "@pika/plugin-ts-standard-pkg": "^0.9.0", - "@types/jest": "^26.0.0", - "jest": "^26.0.1", - "prettier": "2.2.1", - "semantic-release": "^17.0.0", - "semantic-release-plugin-update-version-in-files": "^1.0.0", - "ts-jest": "^26.0.0", - "typescript": "^4.0.2" - }, - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/octokit/endpoint.js#readme", - "keywords": [ - "octokit", - "github", - "api", - "rest" - ], - "license": "MIT", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "@octokit/endpoint", - "pika": true, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/endpoint.js.git" - }, - "sideEffects": false, - "source": "dist-src/index.js", - "types": "dist-types/index.d.ts", - "version": "6.0.10" -} diff --git a/node_modules/@octokit/graphql/LICENSE b/node_modules/@octokit/graphql/LICENSE deleted file mode 100644 index af5366d0d..000000000 --- a/node_modules/@octokit/graphql/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/@octokit/graphql/README.md b/node_modules/@octokit/graphql/README.md deleted file mode 100644 index 8e6332a46..000000000 --- a/node_modules/@octokit/graphql/README.md +++ /dev/null @@ -1,384 +0,0 @@ -# graphql.js - -> GitHub GraphQL API client for browsers and Node - -[![@latest](https://img.shields.io/npm/v/@octokit/graphql.svg)](https://www.npmjs.com/package/@octokit/graphql) -[![Build Status](https://github.com/octokit/graphql.js/workflows/Test/badge.svg)](https://github.com/octokit/graphql.js/actions?query=workflow%3ATest+branch%3Amaster) - - - -- [Usage](#usage) - - [Send a simple query](#send-a-simple-query) - - [Authentication](#authentication) - - [Variables](#variables) - - [Pass query together with headers and variables](#pass-query-together-with-headers-and-variables) - - [Use with GitHub Enterprise](#use-with-github-enterprise) - - [Use custom `@octokit/request` instance](#use-custom-octokitrequest-instance) -- [Errors](#errors) -- [Partial responses](#partial-responses) -- [Writing tests](#writing-tests) -- [License](#license) - - - -## Usage - - - - - - -
-Browsers - - -Load `@octokit/graphql` directly from [cdn.skypack.dev](https://cdn.skypack.dev) - -```html - -``` - -
-Node - - -Install with npm install @octokit/graphql - -```js -const { graphql } = require("@octokit/graphql"); -// or: import { graphql } from "@octokit/graphql"; -``` - -
- -### Send a simple query - -```js -const { repository } = await graphql( - ` - { - repository(owner: "octokit", name: "graphql.js") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - } - `, - { - headers: { - authorization: `token secret123`, - }, - } -); -``` - -### Authentication - -The simplest way to authenticate a request is to set the `Authorization` header, e.g. to a [personal access token](https://github.com/settings/tokens/). - -```js -const graphqlWithAuth = graphql.defaults({ - headers: { - authorization: `token secret123`, - }, -}); -const { repository } = await graphqlWithAuth(` - { - repository(owner: "octokit", name: "graphql.js") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - } -`); -``` - -For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js). - -```js -const { createAppAuth } = require("@octokit/auth-app"); -const auth = createAppAuth({ - id: process.env.APP_ID, - privateKey: process.env.PRIVATE_KEY, - installationId: 123, -}); -const graphqlWithAuth = graphql.defaults({ - request: { - hook: auth.hook, - }, -}); - -const { repository } = await graphqlWithAuth( - `{ - repository(owner: "octokit", name: "graphql.js") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - }` -); -``` - -### Variables - -⚠️ Do not use [template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) in the query strings as they make your code vulnerable to query injection attacks (see [#2](https://github.com/octokit/graphql.js/issues/2)). Use variables instead: - -```js -const { lastIssues } = await graphql( - ` - query lastIssues($owner: String!, $repo: String!, $num: Int = 3) { - repository(owner: $owner, name: $repo) { - issues(last: $num) { - edges { - node { - title - } - } - } - } - } - `, - { - owner: "octokit", - repo: "graphql.js", - headers: { - authorization: `token secret123`, - }, - } -); -``` - -### Pass query together with headers and variables - -```js -const { graphql } = require("@octokit/graphql"); -const { lastIssues } = await graphql({ - query: `query lastIssues($owner: String!, $repo: String!, $num: Int = 3) { - repository(owner:$owner, name:$repo) { - issues(last:$num) { - edges { - node { - title - } - } - } - } - }`, - owner: "octokit", - repo: "graphql.js", - headers: { - authorization: `token secret123`, - }, -}); -``` - -### Use with GitHub Enterprise - -```js -let { graphql } = require("@octokit/graphql"); -graphql = graphql.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api", - headers: { - authorization: `token secret123`, - }, -}); -const { repository } = await graphql(` - { - repository(owner: "acme-project", name: "acme-repo") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - } -`); -``` - -### Use custom `@octokit/request` instance - -```js -const { request } = require("@octokit/request"); -const { withCustomRequest } = require("@octokit/graphql"); - -let requestCounter = 0; -const myRequest = request.defaults({ - headers: { - authentication: "token secret123", - }, - request: { - hook(request, options) { - requestCounter++; - return request(options); - }, - }, -}); -const myGraphql = withCustomRequest(myRequest); -await request("/"); -await myGraphql(` - { - repository(owner: "acme-project", name: "acme-repo") { - issues(last: 3) { - edges { - node { - title - } - } - } - } - } -`); -// requestCounter is now 2 -``` - -## Errors - -In case of a GraphQL error, `error.message` is set to the first error from the response’s `errors` array. All errors can be accessed at `error.errors`. `error.request` has the request options such as query, variables and headers set for easier debugging. - -```js -let { graphql } = require("@octokit/graphql"); -graphqlt = graphql.defaults({ - headers: { - authorization: `token secret123`, - }, -}); -const query = `{ - viewer { - bioHtml - } -}`; - -try { - const result = await graphql(query); -} catch (error) { - // server responds with - // { - // "data": null, - // "errors": [{ - // "message": "Field 'bioHtml' doesn't exist on type 'User'", - // "locations": [{ - // "line": 3, - // "column": 5 - // }] - // }] - // } - - console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } } - console.log(error.message); // Field 'bioHtml' doesn't exist on type 'User' -} -``` - -## Partial responses - -A GraphQL query may respond with partial data accompanied by errors. In this case we will throw an error but the partial data will still be accessible through `error.data` - -```js -let { graphql } = require("@octokit/graphql"); -graphql = graphql.defaults({ - headers: { - authorization: `token secret123`, - }, -}); -const query = `{ - repository(name: "probot", owner: "probot") { - name - ref(qualifiedName: "master") { - target { - ... on Commit { - history(first: 25, after: "invalid cursor") { - nodes { - message - } - } - } - } - } - } -}`; - -try { - const result = await graphql(query); -} catch (error) { - // server responds with - // { - // "data": { - // "repository": { - // "name": "probot", - // "ref": null - // } - // }, - // "errors": [ - // { - // "type": "INVALID_CURSOR_ARGUMENTS", - // "path": [ - // "repository", - // "ref", - // "target", - // "history" - // ], - // "locations": [ - // { - // "line": 7, - // "column": 11 - // } - // ], - // "message": "`invalid cursor` does not appear to be a valid cursor." - // } - // ] - // } - - console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } } - console.log(error.message); // `invalid cursor` does not appear to be a valid cursor. - console.log(error.data); // { repository: { name: 'probot', ref: null } } -} -``` - -## Writing tests - -You can pass a replacement for [the built-in fetch implementation](https://github.com/bitinn/node-fetch) as `request.fetch` option. For example, using [fetch-mock](http://www.wheresrhys.co.uk/fetch-mock/) works great to write tests - -```js -const assert = require("assert"); -const fetchMock = require("fetch-mock/es5/server"); - -const { graphql } = require("@octokit/graphql"); - -graphql("{ viewer { login } }", { - headers: { - authorization: "token secret123", - }, - request: { - fetch: fetchMock - .sandbox() - .post("https://api.github.com/graphql", (url, options) => { - assert.strictEqual(options.headers.authorization, "token secret123"); - assert.strictEqual( - options.body, - '{"query":"{ viewer { login } }"}', - "Sends correct query" - ); - return { data: {} }; - }), - }, -}); -``` - -## License - -[MIT](LICENSE) diff --git a/node_modules/@octokit/graphql/dist-node/index.js b/node_modules/@octokit/graphql/dist-node/index.js deleted file mode 100644 index 5c26e9f7b..000000000 --- a/node_modules/@octokit/graphql/dist-node/index.js +++ /dev/null @@ -1,108 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var request = require('@octokit/request'); -var universalUserAgent = require('universal-user-agent'); - -const VERSION = "4.5.8"; - -class GraphqlError extends Error { - constructor(request, response) { - const message = response.data.errors[0].message; - super(message); - Object.assign(this, response.data); - Object.assign(this, { - headers: response.headers - }); - this.name = "GraphqlError"; - this.request = request; // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } - -} - -const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"]; -const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -function graphql(request, query, options) { - if (typeof query === "string" && options && "query" in options) { - return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); - } - - const parsedOptions = typeof query === "string" ? Object.assign({ - query - }, options) : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - - if (!result.variables) { - result.variables = {}; - } - - result.variables[key] = parsedOptions[key]; - return result; - }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix - // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 - - const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; - - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - - return request(requestOptions).then(response => { - if (response.data.errors) { - const headers = {}; - - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } - - throw new GraphqlError(requestOptions, { - headers, - data: response.data - }); - } - - return response.data.data; - }); -} - -function withDefaults(request$1, newDefaults) { - const newRequest = request$1.defaults(newDefaults); - - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: request.request.endpoint - }); -} - -const graphql$1 = withDefaults(request.request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` - }, - method: "POST", - url: "/graphql" -}); -function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: "POST", - url: "/graphql" - }); -} - -exports.graphql = graphql$1; -exports.withCustomRequest = withCustomRequest; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/graphql/dist-node/index.js.map b/node_modules/@octokit/graphql/dist-node/index.js.map deleted file mode 100644 index 3598288ef..000000000 --- a/node_modules/@octokit/graphql/dist-node/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/error.js","../dist-src/graphql.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"4.5.8\";\n","export class GraphqlError extends Error {\n constructor(request, response) {\n const message = response.data.errors[0].message;\n super(message);\n Object.assign(this, response.data);\n Object.assign(this, { headers: response.headers });\n this.name = \"GraphqlError\";\n this.request = request;\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n","import { GraphqlError } from \"./error\";\nconst NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nexport function graphql(request, query, options) {\n if (typeof query === \"string\" && options && \"query\" in options) {\n return Promise.reject(new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`));\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix\n // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlError(requestOptions, {\n headers,\n data: response.data,\n });\n }\n return response.data.data;\n });\n}\n","import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql\";\nexport function withDefaults(request, newDefaults) {\n const newRequest = request.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: Request.endpoint,\n });\n}\n","import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport { withDefaults } from \"./with-defaults\";\nexport const graphql = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`,\n },\n method: \"POST\",\n url: \"/graphql\",\n});\nexport function withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\",\n });\n}\n"],"names":["VERSION","GraphqlError","Error","constructor","request","response","message","data","errors","Object","assign","headers","name","captureStackTrace","NON_VARIABLE_OPTIONS","GHES_V3_SUFFIX_REGEX","graphql","query","options","Promise","reject","parsedOptions","requestOptions","keys","reduce","result","key","includes","variables","baseUrl","endpoint","DEFAULTS","test","url","replace","then","withDefaults","newDefaults","newRequest","defaults","newApi","bind","Request","getUserAgent","method","withCustomRequest","customRequest"],"mappings":";;;;;;;AAAO,MAAMA,OAAO,GAAG,mBAAhB;;ACAA,MAAMC,YAAN,SAA2BC,KAA3B,CAAiC;AACpCC,EAAAA,WAAW,CAACC,OAAD,EAAUC,QAAV,EAAoB;AAC3B,UAAMC,OAAO,GAAGD,QAAQ,CAACE,IAAT,CAAcC,MAAd,CAAqB,CAArB,EAAwBF,OAAxC;AACA,UAAMA,OAAN;AACAG,IAAAA,MAAM,CAACC,MAAP,CAAc,IAAd,EAAoBL,QAAQ,CAACE,IAA7B;AACAE,IAAAA,MAAM,CAACC,MAAP,CAAc,IAAd,EAAoB;AAAEC,MAAAA,OAAO,EAAEN,QAAQ,CAACM;AAApB,KAApB;AACA,SAAKC,IAAL,GAAY,cAAZ;AACA,SAAKR,OAAL,GAAeA,OAAf,CAN2B;;AAQ3B;;AACA,QAAIF,KAAK,CAACW,iBAAV,EAA6B;AACzBX,MAAAA,KAAK,CAACW,iBAAN,CAAwB,IAAxB,EAA8B,KAAKV,WAAnC;AACH;AACJ;;AAbmC;;ACCxC,MAAMW,oBAAoB,GAAG,CACzB,QADyB,EAEzB,SAFyB,EAGzB,KAHyB,EAIzB,SAJyB,EAKzB,SALyB,EAMzB,OANyB,EAOzB,WAPyB,CAA7B;AASA,MAAMC,oBAAoB,GAAG,eAA7B;AACA,AAAO,SAASC,OAAT,CAAiBZ,OAAjB,EAA0Ba,KAA1B,EAAiCC,OAAjC,EAA0C;AAC7C,MAAI,OAAOD,KAAP,KAAiB,QAAjB,IAA6BC,OAA7B,IAAwC,WAAWA,OAAvD,EAAgE;AAC5D,WAAOC,OAAO,CAACC,MAAR,CAAe,IAAIlB,KAAJ,CAAW,4DAAX,CAAf,CAAP;AACH;;AACD,QAAMmB,aAAa,GAAG,OAAOJ,KAAP,KAAiB,QAAjB,GAA4BR,MAAM,CAACC,MAAP,CAAc;AAAEO,IAAAA;AAAF,GAAd,EAAyBC,OAAzB,CAA5B,GAAgED,KAAtF;AACA,QAAMK,cAAc,GAAGb,MAAM,CAACc,IAAP,CAAYF,aAAZ,EAA2BG,MAA3B,CAAkC,CAACC,MAAD,EAASC,GAAT,KAAiB;AACtE,QAAIZ,oBAAoB,CAACa,QAArB,CAA8BD,GAA9B,CAAJ,EAAwC;AACpCD,MAAAA,MAAM,CAACC,GAAD,CAAN,GAAcL,aAAa,CAACK,GAAD,CAA3B;AACA,aAAOD,MAAP;AACH;;AACD,QAAI,CAACA,MAAM,CAACG,SAAZ,EAAuB;AACnBH,MAAAA,MAAM,CAACG,SAAP,GAAmB,EAAnB;AACH;;AACDH,IAAAA,MAAM,CAACG,SAAP,CAAiBF,GAAjB,IAAwBL,aAAa,CAACK,GAAD,CAArC;AACA,WAAOD,MAAP;AACH,GAVsB,EAUpB,EAVoB,CAAvB,CAL6C;AAiB7C;;AACA,QAAMI,OAAO,GAAGR,aAAa,CAACQ,OAAd,IAAyBzB,OAAO,CAAC0B,QAAR,CAAiBC,QAAjB,CAA0BF,OAAnE;;AACA,MAAId,oBAAoB,CAACiB,IAArB,CAA0BH,OAA1B,CAAJ,EAAwC;AACpCP,IAAAA,cAAc,CAACW,GAAf,GAAqBJ,OAAO,CAACK,OAAR,CAAgBnB,oBAAhB,EAAsC,cAAtC,CAArB;AACH;;AACD,SAAOX,OAAO,CAACkB,cAAD,CAAP,CAAwBa,IAAxB,CAA8B9B,QAAD,IAAc;AAC9C,QAAIA,QAAQ,CAACE,IAAT,CAAcC,MAAlB,EAA0B;AACtB,YAAMG,OAAO,GAAG,EAAhB;;AACA,WAAK,MAAMe,GAAX,IAAkBjB,MAAM,CAACc,IAAP,CAAYlB,QAAQ,CAACM,OAArB,CAAlB,EAAiD;AAC7CA,QAAAA,OAAO,CAACe,GAAD,CAAP,GAAerB,QAAQ,CAACM,OAAT,CAAiBe,GAAjB,CAAf;AACH;;AACD,YAAM,IAAIzB,YAAJ,CAAiBqB,cAAjB,EAAiC;AACnCX,QAAAA,OADmC;AAEnCJ,QAAAA,IAAI,EAAEF,QAAQ,CAACE;AAFoB,OAAjC,CAAN;AAIH;;AACD,WAAOF,QAAQ,CAACE,IAAT,CAAcA,IAArB;AACH,GAZM,CAAP;AAaH;;AC5CM,SAAS6B,YAAT,CAAsBhC,SAAtB,EAA+BiC,WAA/B,EAA4C;AAC/C,QAAMC,UAAU,GAAGlC,SAAO,CAACmC,QAAR,CAAiBF,WAAjB,CAAnB;;AACA,QAAMG,MAAM,GAAG,CAACvB,KAAD,EAAQC,OAAR,KAAoB;AAC/B,WAAOF,OAAO,CAACsB,UAAD,EAAarB,KAAb,EAAoBC,OAApB,CAAd;AACH,GAFD;;AAGA,SAAOT,MAAM,CAACC,MAAP,CAAc8B,MAAd,EAAsB;AACzBD,IAAAA,QAAQ,EAAEH,YAAY,CAACK,IAAb,CAAkB,IAAlB,EAAwBH,UAAxB,CADe;AAEzBR,IAAAA,QAAQ,EAAEY,eAAO,CAACZ;AAFO,GAAtB,CAAP;AAIH;;MCPYd,SAAO,GAAGoB,YAAY,CAAChC,eAAD,EAAU;AACzCO,EAAAA,OAAO,EAAE;AACL,kBAAe,sBAAqBX,OAAQ,IAAG2C,+BAAY,EAAG;AADzD,GADgC;AAIzCC,EAAAA,MAAM,EAAE,MAJiC;AAKzCX,EAAAA,GAAG,EAAE;AALoC,CAAV,CAA5B;AAOP,AAAO,SAASY,iBAAT,CAA2BC,aAA3B,EAA0C;AAC7C,SAAOV,YAAY,CAACU,aAAD,EAAgB;AAC/BF,IAAAA,MAAM,EAAE,MADuB;AAE/BX,IAAAA,GAAG,EAAE;AAF0B,GAAhB,CAAnB;AAIH;;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/graphql/dist-src/error.js b/node_modules/@octokit/graphql/dist-src/error.js deleted file mode 100644 index 37942ba16..000000000 --- a/node_modules/@octokit/graphql/dist-src/error.js +++ /dev/null @@ -1,15 +0,0 @@ -export class GraphqlError extends Error { - constructor(request, response) { - const message = response.data.errors[0].message; - super(message); - Object.assign(this, response.data); - Object.assign(this, { headers: response.headers }); - this.name = "GraphqlError"; - this.request = request; - // Maintains proper stack trace (only available on V8) - /* istanbul ignore next */ - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } -} diff --git a/node_modules/@octokit/graphql/dist-src/graphql.js b/node_modules/@octokit/graphql/dist-src/graphql.js deleted file mode 100644 index deb9488de..000000000 --- a/node_modules/@octokit/graphql/dist-src/graphql.js +++ /dev/null @@ -1,47 +0,0 @@ -import { GraphqlError } from "./error"; -const NON_VARIABLE_OPTIONS = [ - "method", - "baseUrl", - "url", - "headers", - "request", - "query", - "mediaType", -]; -const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -export function graphql(request, query, options) { - if (typeof query === "string" && options && "query" in options) { - return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); - } - const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix - // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 - const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - return request(requestOptions).then((response) => { - if (response.data.errors) { - const headers = {}; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } - throw new GraphqlError(requestOptions, { - headers, - data: response.data, - }); - } - return response.data.data; - }); -} diff --git a/node_modules/@octokit/graphql/dist-src/index.js b/node_modules/@octokit/graphql/dist-src/index.js deleted file mode 100644 index b20237849..000000000 --- a/node_modules/@octokit/graphql/dist-src/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import { request } from "@octokit/request"; -import { getUserAgent } from "universal-user-agent"; -import { VERSION } from "./version"; -import { withDefaults } from "./with-defaults"; -export const graphql = withDefaults(request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}`, - }, - method: "POST", - url: "/graphql", -}); -export function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: "POST", - url: "/graphql", - }); -} diff --git a/node_modules/@octokit/graphql/dist-src/types.js b/node_modules/@octokit/graphql/dist-src/types.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/node_modules/@octokit/graphql/dist-src/version.js b/node_modules/@octokit/graphql/dist-src/version.js deleted file mode 100644 index cdefae231..000000000 --- a/node_modules/@octokit/graphql/dist-src/version.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "4.5.8"; diff --git a/node_modules/@octokit/graphql/dist-src/with-defaults.js b/node_modules/@octokit/graphql/dist-src/with-defaults.js deleted file mode 100644 index 6ea309e3a..000000000 --- a/node_modules/@octokit/graphql/dist-src/with-defaults.js +++ /dev/null @@ -1,12 +0,0 @@ -import { request as Request } from "@octokit/request"; -import { graphql } from "./graphql"; -export function withDefaults(request, newDefaults) { - const newRequest = request.defaults(newDefaults); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: Request.endpoint, - }); -} diff --git a/node_modules/@octokit/graphql/dist-types/error.d.ts b/node_modules/@octokit/graphql/dist-types/error.d.ts deleted file mode 100644 index 81b31a43a..000000000 --- a/node_modules/@octokit/graphql/dist-types/error.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ResponseHeaders } from "@octokit/types"; -import { GraphQlEndpointOptions, GraphQlQueryResponse } from "./types"; -export declare class GraphqlError extends Error { - request: GraphQlEndpointOptions; - constructor(request: GraphQlEndpointOptions, response: { - headers: ResponseHeaders; - data: Required>; - }); -} diff --git a/node_modules/@octokit/graphql/dist-types/graphql.d.ts b/node_modules/@octokit/graphql/dist-types/graphql.d.ts deleted file mode 100644 index 2942b8b6e..000000000 --- a/node_modules/@octokit/graphql/dist-types/graphql.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { request as Request } from "@octokit/request"; -import { RequestParameters, GraphQlQueryResponseData } from "./types"; -export declare function graphql(request: typeof Request, query: string | RequestParameters, options?: RequestParameters): Promise; diff --git a/node_modules/@octokit/graphql/dist-types/index.d.ts b/node_modules/@octokit/graphql/dist-types/index.d.ts deleted file mode 100644 index 1878fd411..000000000 --- a/node_modules/@octokit/graphql/dist-types/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { request } from "@octokit/request"; -export declare const graphql: import("./types").graphql; -export declare function withCustomRequest(customRequest: typeof request): import("./types").graphql; diff --git a/node_modules/@octokit/graphql/dist-types/types.d.ts b/node_modules/@octokit/graphql/dist-types/types.d.ts deleted file mode 100644 index ef60d9547..000000000 --- a/node_modules/@octokit/graphql/dist-types/types.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { EndpointOptions, RequestParameters as RequestParametersType, EndpointInterface } from "@octokit/types"; -export declare type GraphQlEndpointOptions = EndpointOptions & { - variables?: { - [key: string]: unknown; - }; -}; -export declare type RequestParameters = RequestParametersType; -export declare type Query = string; -export interface graphql { - /** - * Sends a GraphQL query request based on endpoint options - * The GraphQL query must be specified in `options`. - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (options: RequestParameters): GraphQlResponse; - /** - * Sends a GraphQL query request based on endpoint options - * - * @param {string} query GraphQL query. Example: `'query { viewer { login } }'`. - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (query: Query, parameters?: RequestParameters): GraphQlResponse; - /** - * Returns a new `endpoint` with updated route and parameters - */ - defaults: (newDefaults: RequestParameters) => graphql; - /** - * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint} - */ - endpoint: EndpointInterface; -} -export declare type GraphQlResponse = Promise; -export declare type GraphQlQueryResponseData = { - [key: string]: any; -}; -export declare type GraphQlQueryResponse = { - data: ResponseData; - errors?: [{ - message: string; - path: [string]; - extensions: { - [key: string]: any; - }; - locations: [{ - line: number; - column: number; - }]; - }]; -}; diff --git a/node_modules/@octokit/graphql/dist-types/version.d.ts b/node_modules/@octokit/graphql/dist-types/version.d.ts deleted file mode 100644 index 1b94bb92d..000000000 --- a/node_modules/@octokit/graphql/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "4.5.8"; diff --git a/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts b/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts deleted file mode 100644 index 03edc3205..000000000 --- a/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { request as Request } from "@octokit/request"; -import { graphql as ApiInterface, RequestParameters } from "./types"; -export declare function withDefaults(request: typeof Request, newDefaults: RequestParameters): ApiInterface; diff --git a/node_modules/@octokit/graphql/dist-web/index.js b/node_modules/@octokit/graphql/dist-web/index.js deleted file mode 100644 index 9cb20bc71..000000000 --- a/node_modules/@octokit/graphql/dist-web/index.js +++ /dev/null @@ -1,95 +0,0 @@ -import { request } from '@octokit/request'; -import { getUserAgent } from 'universal-user-agent'; - -const VERSION = "4.5.8"; - -class GraphqlError extends Error { - constructor(request, response) { - const message = response.data.errors[0].message; - super(message); - Object.assign(this, response.data); - Object.assign(this, { headers: response.headers }); - this.name = "GraphqlError"; - this.request = request; - // Maintains proper stack trace (only available on V8) - /* istanbul ignore next */ - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } -} - -const NON_VARIABLE_OPTIONS = [ - "method", - "baseUrl", - "url", - "headers", - "request", - "query", - "mediaType", -]; -const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -function graphql(request, query, options) { - if (typeof query === "string" && options && "query" in options) { - return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); - } - const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix - // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 - const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - return request(requestOptions).then((response) => { - if (response.data.errors) { - const headers = {}; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } - throw new GraphqlError(requestOptions, { - headers, - data: response.data, - }); - } - return response.data.data; - }); -} - -function withDefaults(request$1, newDefaults) { - const newRequest = request$1.defaults(newDefaults); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: request.endpoint, - }); -} - -const graphql$1 = withDefaults(request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}`, - }, - method: "POST", - url: "/graphql", -}); -function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: "POST", - url: "/graphql", - }); -} - -export { graphql$1 as graphql, withCustomRequest }; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/graphql/dist-web/index.js.map b/node_modules/@octokit/graphql/dist-web/index.js.map deleted file mode 100644 index aebdc5e00..000000000 --- a/node_modules/@octokit/graphql/dist-web/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/error.js","../dist-src/graphql.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"4.5.8\";\n","export class GraphqlError extends Error {\n constructor(request, response) {\n const message = response.data.errors[0].message;\n super(message);\n Object.assign(this, response.data);\n Object.assign(this, { headers: response.headers });\n this.name = \"GraphqlError\";\n this.request = request;\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n","import { GraphqlError } from \"./error\";\nconst NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nexport function graphql(request, query, options) {\n if (typeof query === \"string\" && options && \"query\" in options) {\n return Promise.reject(new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`));\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix\n // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlError(requestOptions, {\n headers,\n data: response.data,\n });\n }\n return response.data.data;\n });\n}\n","import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql\";\nexport function withDefaults(request, newDefaults) {\n const newRequest = request.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: Request.endpoint,\n });\n}\n","import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport { withDefaults } from \"./with-defaults\";\nexport const graphql = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`,\n },\n method: \"POST\",\n url: \"/graphql\",\n});\nexport function withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\",\n });\n}\n"],"names":["request","Request","graphql"],"mappings":";;;AAAO,MAAM,OAAO,GAAG,mBAAmB;;ACAnC,MAAM,YAAY,SAAS,KAAK,CAAC;AACxC,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;AACnC,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACxD,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3D,QAAQ,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;AACnC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B;AACA;AACA,QAAQ,IAAI,KAAK,CAAC,iBAAiB,EAAE;AACrC,YAAY,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5D,SAAS;AACT,KAAK;AACL,CAAC;;ACbD,MAAM,oBAAoB,GAAG;AAC7B,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,KAAK;AACT,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,OAAO;AACX,IAAI,WAAW;AACf,CAAC,CAAC;AACF,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAC7C,AAAO,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AACjD,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,EAAE;AACpE,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC;AACvG,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;AAChG,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK;AAC9E,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChD,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AAC7C,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC/B,YAAY,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACnD,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX;AACA;AACA,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/E,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC5C,QAAQ,cAAc,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AACtD,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;AAClC,YAAY,MAAM,OAAO,GAAG,EAAE,CAAC;AAC/B,YAAY,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC7D,gBAAgB,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrD,aAAa;AACb,YAAY,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE;AACnD,gBAAgB,OAAO;AACvB,gBAAgB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACnC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,KAAK,CAAC,CAAC;AACP,CAAC;;AC5CM,SAAS,YAAY,CAACA,SAAO,EAAE,WAAW,EAAE;AACnD,IAAI,MAAM,UAAU,GAAGA,SAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACrD,IAAI,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;AACvC,QAAQ,OAAO,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACnD,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AACjC,QAAQ,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AACrD,QAAQ,QAAQ,EAAEC,OAAO,CAAC,QAAQ;AAClC,KAAK,CAAC,CAAC;AACP,CAAC;;ACPW,MAACC,SAAO,GAAG,YAAY,CAAC,OAAO,EAAE;AAC7C,IAAI,OAAO,EAAE;AACb,QAAQ,YAAY,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,GAAG,EAAE,UAAU;AACnB,CAAC,CAAC,CAAC;AACH,AAAO,SAAS,iBAAiB,CAAC,aAAa,EAAE;AACjD,IAAI,OAAO,YAAY,CAAC,aAAa,EAAE;AACvC,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,GAAG,EAAE,UAAU;AACvB,KAAK,CAAC,CAAC;AACP,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/graphql/package.json b/node_modules/@octokit/graphql/package.json deleted file mode 100644 index 804c93a20..000000000 --- a/node_modules/@octokit/graphql/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "_from": "@octokit/graphql@^4.5.8", - "_id": "@octokit/graphql@4.5.8", - "_inBundle": false, - "_integrity": "sha512-WnCtNXWOrupfPJgXe+vSmprZJUr0VIu14G58PMlkWGj3cH+KLZEfKMmbUQ6C3Wwx6fdhzVW1CD5RTnBdUHxhhA==", - "_location": "/@octokit/graphql", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/graphql@^4.5.8", - "name": "@octokit/graphql", - "escapedName": "@octokit%2fgraphql", - "scope": "@octokit", - "rawSpec": "^4.5.8", - "saveSpec": null, - "fetchSpec": "^4.5.8" - }, - "_requiredBy": [ - "/@octokit/core" - ], - "_resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.8.tgz", - "_shasum": "d42373633c3015d0eafce64a8ce196be167fdd9b", - "_spec": "@octokit/graphql@^4.5.8", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\core", - "bugs": { - "url": "https://github.com/octokit/graphql.js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@octokit/request": "^5.3.0", - "@octokit/types": "^6.0.0", - "universal-user-agent": "^6.0.0" - }, - "deprecated": false, - "description": "GitHub GraphQL API client for browsers and Node", - "devDependencies": { - "@pika/pack": "^0.5.0", - "@pika/plugin-build-node": "^0.9.0", - "@pika/plugin-build-web": "^0.9.0", - "@pika/plugin-ts-standard-pkg": "^0.9.0", - "@types/fetch-mock": "^7.2.5", - "@types/jest": "^26.0.0", - "@types/node": "^14.0.4", - "fetch-mock": "^9.0.0", - "jest": "^25.1.0", - "prettier": "^2.0.0", - "semantic-release": "^17.0.0", - "semantic-release-plugin-update-version-in-files": "^1.0.0", - "ts-jest": "^25.1.0", - "typescript": "^3.4.5" - }, - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/octokit/graphql.js#readme", - "keywords": [ - "octokit", - "github", - "api", - "graphql" - ], - "license": "MIT", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "@octokit/graphql", - "pika": true, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/graphql.js.git" - }, - "sideEffects": false, - "source": "dist-src/index.js", - "types": "dist-types/index.d.ts", - "version": "4.5.8" -} diff --git a/node_modules/@octokit/openapi-types/.github/workflows/release-notification.yml b/node_modules/@octokit/openapi-types/.github/workflows/release-notification.yml deleted file mode 100644 index d29dc50d1..000000000 --- a/node_modules/@octokit/openapi-types/.github/workflows/release-notification.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Release notification -on: - release: - types: - - published - -jobs: - notify: - runs-on: ubuntu-latest - steps: - - uses: gr2m/await-npm-package-version-action@v1 - with: - package: "@octokit/openapi-types" - version: ${{ github.event.release.tag_name }} - - uses: gr2m/release-notifier-action@v1 - with: - app_id: ${{ secrets.RELEASE_NOTIFIER_APP_ID }} - private_key: ${{ secrets.RELEASE_NOTIFIER_APP_PRIVATE_KEY }} diff --git a/node_modules/@octokit/openapi-types/.github/workflows/release.yml b/node_modules/@octokit/openapi-types/.github/workflows/release.yml deleted file mode 100644 index 0da51d7c0..000000000 --- a/node_modules/@octokit/openapi-types/.github/workflows/release.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Release -on: - push: - branches: - - main - - next - - beta - - "*.x" # maintenance releases - -jobs: - release: - name: release - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2.1.3 - - run: npm ci - - run: npx semantic-release - env: - GITHUB_TOKEN: ${{ secrets.OCTOKITBOT_PAT }} - NPM_TOKEN: ${{ secrets.OCTOKITBOT_NPM_TOKEN }} diff --git a/node_modules/@octokit/openapi-types/.github/workflows/update.yml b/node_modules/@octokit/openapi-types/.github/workflows/update.yml deleted file mode 100644 index 3a1548c80..000000000 --- a/node_modules/@octokit/openapi-types/.github/workflows/update.yml +++ /dev/null @@ -1,82 +0,0 @@ -name: Update -on: - repository_dispatch: - types: ["octokit/openapi release"] - - push: - branches: - - dependabot/npm_and_yarn/openapi-typescript-* - - workflow_dispatch: - inputs: - version: - description: "Version of https://www.npmjs.com/package/@octokit/openapi" - required: true - -jobs: - update: - runs-on: ubuntu-latest - if: github.event_name == 'workflow_dispatch' || github.event.client_payload.action == 'published' - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2.1.3 - - run: npm ci - # do not update cache for dependabot update - - run: | - npm run download - npm run generate-types - if: github.event_name == 'repository_dispatch' - env: - VERSION: ${{ github.event.client_payload.release.tag_name }} - - run: | - npm run download - npm run generate-types - if: github.event_name == 'workflow_dispatch' - env: - VERSION: ${{ github.event.inputs.version }} - - # create/update pull request for dispatch event update - - name: Create Pull Request - if: github.event_name != 'push' - uses: gr2m/create-or-update-pull-request-action@v1.x - env: - GITHUB_TOKEN: ${{ secrets.OCTOKITBOT_PAT }} - with: - title: "🚧 OpenAPI types changed" - body: | - Make sure to update the commits so that the merge results in helpful release notes, see [Merging the Pull Request & releasing a new version](https://github.com/octokit/rest.js/blob/master/CONTRIBUTING.md#merging-the-pull-request--releasing-a-new-version). - - In general - - - Avoid breaking changes at all costs - - If there are no typescript changes, use `build: cache` as commit message - - If there are there are only updates, use `fix: ...` - - If there are any new additions, use `feat: ...` - - If there are breaking changes, keep the previous ones and deprecate them. Only if there is no other way, add `BREAKING CHANGE: ...` to the commit body (not subject!) to trigger a breaking change. - branch: "openapi-update" - commit-message: "WIP" - author: "Octokit Bot <33075676+octokitbot@users.noreply.github.com>" - labels: "maintenance" - - # update pull request for dependabot update - - name: Create Pull Request - if: github.event_name == 'push' - uses: gr2m/create-or-update-pull-request-action@v1.x - env: - GITHUB_TOKEN: ${{ secrets.OCTOKITBOT_PAT }} - with: - title: "🚧 OpenAPI types changed" - body: | - Make sure to update the commits so that the merge results in helpful release notes, see [Merging the Pull Request & releasing a new version](https://github.com/octokit/rest.js/blob/master/CONTRIBUTING.md#merging-the-pull-request--releasing-a-new-version). - - In general - - - Avoid breaking changes at all costs - - If there are no typescript changes, use `build: cache` as commit message - - If there are there are only updates, use `fix: ...` - - If there are any new additions, use `feat: ...` - - If there are breaking changes, keep the previous ones and deprecate them. Only if there is no other way, add `BREAKING CHANGE: ...` to the commit body (not subject!) to trigger a breaking change. - branch: "${{ github.ref }}" - commit-message: "WIP" - author: "Octokit Bot <33075676+octokitbot@users.noreply.github.com>" - labels: "maintenance" diff --git a/node_modules/@octokit/openapi-types/CODE_OF_CONDUCT.md b/node_modules/@octokit/openapi-types/CODE_OF_CONDUCT.md deleted file mode 100644 index dad5ddc09..000000000 --- a/node_modules/@octokit/openapi-types/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual attention or - advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic - address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at opensource+coc@martynus.net. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [https://contributor-covenant.org/version/1/4][version] - -[homepage]: https://contributor-covenant.org -[version]: https://contributor-covenant.org/version/1/4/ diff --git a/node_modules/@octokit/openapi-types/LICENSE b/node_modules/@octokit/openapi-types/LICENSE deleted file mode 100644 index c61fbbe5a..000000000 --- a/node_modules/@octokit/openapi-types/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -Copyright 2020 Gregor Martynus - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@octokit/openapi-types/README.md b/node_modules/@octokit/openapi-types/README.md deleted file mode 100644 index 47acb127f..000000000 --- a/node_modules/@octokit/openapi-types/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# openapi-types.ts - -> Generated TypeScript definitions based on GitHub's OpenAPI spec - -This repository continously converts [GitHub's OpenAPI specification](https://github.com/github/rest-api-description/) into TypeScript definitions and publishes them to npm as `@octokit/openapi-types` - -## License - -[MIT](LICENSE) diff --git a/node_modules/@octokit/openapi-types/cache/openapi-schema.json b/node_modules/@octokit/openapi-types/cache/openapi-schema.json deleted file mode 100644 index 22ddf4abb..000000000 --- a/node_modules/@octokit/openapi-types/cache/openapi-schema.json +++ /dev/null @@ -1,66129 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "version": "2.0.0", - "title": "GitHub's official OpenAPI spec + Octokit extension", - "description": "OpenAPI specs from https://github.com/github/rest-api-description with the 'x-octokit' extension required by the Octokit SDKs", - "license": { "name": "MIT", "url": "https://spdx.org/licenses/MIT" }, - "termsOfService": "https://docs.github.com/articles/github-terms-of-service", - "contact": { - "name": "Support", - "url": "https://github.com/octokit/openapi" - } - }, - "tags": [ - { - "name": "actions", - "description": "Endpoints to manage GitHub Actions using the REST API." - }, - { - "name": "activity", - "description": "Activity APIs provide access to notifications, subscriptions, and timelines." - }, - { - "name": "apps", - "description": "Information for integrations and installations." - }, - { - "name": "billing", - "description": "Monitor charges and usage from Actions and Packages." - }, - { - "name": "checks", - "description": "Rich interactions with checks run by your integrations." - }, - { - "name": "code-scanning", - "description": "Retrieve code scanning alerts from a repository." - }, - { - "name": "codes-of-conduct", - "description": "Insight into codes of conduct for your communities." - }, - { - "name": "emojis", - "description": "List emojis available to use on GitHub." - }, - { "name": "gists", "description": "View, modify your gists." }, - { "name": "git", "description": "Raw Git functionality." }, - { "name": "gitignore", "description": "View gitignore templates" }, - { - "name": "interactions", - "description": "Owner or admin management of users interactons." - }, - { "name": "issues", "description": "Interact with GitHub Issues." }, - { "name": "licenses", "description": "View various OSS licenses." }, - { "name": "markdown", "description": "Render Github flavored markdown" }, - { - "name": "meta", - "description": "Endpoints that give information about the API." - }, - { "name": "migrations", "description": "Move projects to or from GitHub." }, - { - "name": "oauth-authorizations", - "description": "Manage access of OAuth applications" - }, - { "name": "orgs", "description": "Interact with GitHub Orgs." }, - { "name": "projects", "description": "Interact with GitHub Projects." }, - { "name": "pulls", "description": "Interact with GitHub Pull Requests." }, - { - "name": "rate-limit", - "description": "Check your current rate limit status" - }, - { - "name": "reactions", - "description": "Interact with reactions to various GitHub entities." - }, - { "name": "repos", "description": "Interact with GitHub Repos." }, - { - "name": "scim", - "description": "Provisioning of GitHub organization membership for SCIM-enabled providers." - }, - { "name": "search", "description": "Look for stuff on GitHub." }, - { - "name": "secret-scanning", - "description": "Retrieve secret scanning alerts from a repository." - }, - { "name": "teams", "description": "Interact with GitHub Teams." }, - { - "name": "users", - "description": "Interact with and view information about users and also current user." - } - ], - "servers": [{ "url": "https://api.github.com" }], - "externalDocs": { - "description": "GitHub v3 REST API", - "url": "https://docs.github.com/rest/" - }, - "paths": { - "/": { - "get": { - "summary": "GitHub API Root", - "description": "Get Hypermedia links to resources accessible in GitHub's REST API", - "tags": ["meta"], - "operationId": "meta/root", - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "current_user_url": { "type": "string", "format": "uri" }, - "current_user_authorizations_html_url": { - "type": "string", - "format": "uri" - }, - "authorizations_url": { "type": "string", "format": "uri" }, - "code_search_url": { "type": "string", "format": "uri" }, - "commit_search_url": { "type": "string", "format": "uri" }, - "emails_url": { "type": "string", "format": "uri" }, - "emojis_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string", "format": "uri" }, - "feeds_url": { "type": "string", "format": "uri" }, - "followers_url": { "type": "string", "format": "uri" }, - "following_url": { "type": "string", "format": "uri" }, - "gists_url": { "type": "string", "format": "uri" }, - "hub_url": { "type": "string", "format": "uri" }, - "issue_search_url": { "type": "string", "format": "uri" }, - "issues_url": { "type": "string", "format": "uri" }, - "keys_url": { "type": "string", "format": "uri" }, - "label_search_url": { "type": "string", "format": "uri" }, - "notifications_url": { "type": "string", "format": "uri" }, - "organization_url": { "type": "string", "format": "uri" }, - "organization_repositories_url": { - "type": "string", - "format": "uri" - }, - "organization_teams_url": { - "type": "string", - "format": "uri" - }, - "public_gists_url": { "type": "string", "format": "uri" }, - "rate_limit_url": { "type": "string", "format": "uri" }, - "repository_url": { "type": "string", "format": "uri" }, - "repository_search_url": { - "type": "string", - "format": "uri" - }, - "current_user_repositories_url": { - "type": "string", - "format": "uri" - }, - "starred_url": { "type": "string", "format": "uri" }, - "starred_gists_url": { "type": "string", "format": "uri" }, - "topic_search_url": { "type": "string", "format": "uri" }, - "user_url": { "type": "string", "format": "uri" }, - "user_organizations_url": { - "type": "string", - "format": "uri" - }, - "user_repositories_url": { - "type": "string", - "format": "uri" - }, - "user_search_url": { "type": "string", "format": "uri" } - }, - "required": [ - "current_user_url", - "current_user_authorizations_html_url", - "authorizations_url", - "code_search_url", - "commit_search_url", - "emails_url", - "emojis_url", - "events_url", - "feeds_url", - "followers_url", - "following_url", - "gists_url", - "hub_url", - "issue_search_url", - "issues_url", - "keys_url", - "label_search_url", - "notifications_url", - "organization_url", - "organization_repositories_url", - "organization_teams_url", - "public_gists_url", - "rate_limit_url", - "repository_url", - "repository_search_url", - "current_user_repositories_url", - "starred_url", - "starred_gists_url", - "user_url", - "user_organizations_url", - "user_repositories_url", - "user_search_url" - ] - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "meta" - }, - "x-octokit": {} - } - }, - "/app": { - "get": { - "summary": "Get the authenticated app", - "description": "Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the \"[List installations for the authenticated app](https://docs.github.com/rest/reference/apps#list-installations-for-the-authenticated-app)\" endpoint.\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/get-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#get-the-authenticated-app" - }, - "parameters": [], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/integration" }, - "examples": { - "default": { "$ref": "#/components/examples/integration" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/app-manifests/{code}/conversions": { - "post": { - "summary": "Create a GitHub App from a manifest", - "description": "Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`.", - "tags": ["apps"], - "operationId": "apps/create-from-manifest", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#create-a-github-app-from-a-manifest" - }, - "parameters": [ - { - "name": "code", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "allOf": [ - { "$ref": "#/components/schemas/integration" }, - { - "type": "object", - "properties": { - "client_id": { "type": "string" }, - "client_secret": { "type": "string" }, - "webhook_secret": { "type": "string" }, - "pem": { "type": "string" } - }, - "required": [ - "client_id", - "client_secret", - "webhook_secret", - "pem" - ], - "additionalProperties": true - } - ] - }, - "examples": { - "default": { - "$ref": "#/components/examples/integration-from-manifest" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/app/hook/config": { - "get": { - "summary": "Get a webhook configuration for an app", - "description": "Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see \"[Creating a GitHub App](/developers/apps/creating-a-github-app).\"\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/get-webhook-config-for-app", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps#get-a-webhook-configuration-for-an-app" - }, - "responses": { - "200": { - "description": "Default response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/webhook-config" }, - "examples": { - "default": { "$ref": "#/components/examples/webhook-config" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "webhooks" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a webhook configuration for an app", - "description": "Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see \"[Creating a GitHub App](/developers/apps/creating-a-github-app).\"\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/update-webhook-config-for-app", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps#update-a-webhook-configuration-for-an-app" - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "url": { "$ref": "#/components/schemas/webhook-config-url" }, - "content_type": { - "$ref": "#/components/schemas/webhook-config-content-type" - }, - "secret": { - "$ref": "#/components/schemas/webhook-config-secret" - }, - "insecure_ssl": { - "$ref": "#/components/schemas/webhook-config-insecure-ssl" - } - }, - "example": { - "content_type": "json", - "insecure_ssl": "0", - "secret": "********", - "url": "https://example.com/webhook" - } - } - } - } - }, - "responses": { - "200": { - "description": "Default response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/webhook-config" }, - "examples": { - "default": { "$ref": "#/components/examples/webhook-config" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/app/installations": { - "get": { - "summary": "List installations for the authenticated app", - "description": "You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.\n\nThe permissions the installation has are included under the `permissions` key.", - "tags": ["apps"], - "operationId": "apps/list-installations", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#list-installations-for-the-authenticated-app" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" }, - { "$ref": "#/components/parameters/since" }, - { - "name": "outdated", - "in": "query", - "required": false, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "The permissions the installation has are included under the `permissions` key.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/installation" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/base-installation-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/app/installations/{installation_id}": { - "get": { - "summary": "Get an installation for the authenticated app", - "description": "Enables an authenticated GitHub App to find an installation's information using the installation id. The installation's account type (`target_type`) will be either an organization or a user account, depending which account the repository belongs to.\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/get-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#get-an-installation-for-the-authenticated-app" - }, - "parameters": [{ "$ref": "#/components/parameters/installation_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/installation" }, - "examples": { - "default": { - "$ref": "#/components/examples/base-installation" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete an installation for the authenticated app", - "description": "Uninstalls a GitHub App on a user, organization, or business account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the \"[Suspend an app installation](https://docs.github.com/v3/apps/#suspend-an-app-installation)\" endpoint.\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/delete-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#delete-an-installation-for-the-authenticated-app" - }, - "parameters": [{ "$ref": "#/components/parameters/installation_id" }], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/app/installations/{installation_id}/access_tokens": { - "post": { - "summary": "Create an installation access token for an app", - "description": "Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key.\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/create-installation-access-token", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#create-an-installation-access-token-for-an-app" - }, - "parameters": [{ "$ref": "#/components/parameters/installation_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "repositories": { - "description": "List of repository names that the token should have access to", - "type": "array", - "items": { "type": "string", "example": "rails" } - }, - "repository_ids": { - "description": "List of repository IDs that the token should have access to", - "example": [1], - "type": "array", - "items": { "type": "integer" } - }, - "permissions": { - "type": "object", - "properties": { - "contents": { "type": "string" }, - "issues": { "type": "string" }, - "deployments": { "type": "string" }, - "single_file": { "type": "string" }, - "def_not_a_repo": { - "type": "string", - "example": "\"read\"" - } - }, - "example": { - "contents": "read", - "issues": "read", - "deployments": "write", - "single_file": "read" - } - } - } - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/installation-token" }, - "examples": { - "default": { - "$ref": "#/components/examples/installation-token" - } - } - } - } - }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/app/installations/{installation_id}/suspended": { - "put": { - "summary": "Suspend an app installation", - "description": "**Note:** Suspending a GitHub App installation is currently in beta and subject to change. Before you can suspend a GitHub App, the app owner must enable suspending installations for the app by opting-in to the beta. For more information, see \"[Suspending a GitHub App installation](https://docs.github.com/apps/managing-github-apps/suspending-a-github-app-installation/).\"\n\nSuspends a GitHub App on a user, organization, or business account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account.\n\nTo suspend a GitHub App, you must be an account owner or have admin permissions in the repository or organization where the app is installed.\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/suspend-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#suspend-an-app-installation" - }, - "parameters": [{ "$ref": "#/components/parameters/installation_id" }], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Unsuspend an app installation", - "description": "**Note:** Suspending a GitHub App installation is currently in beta and subject to change. Before you can suspend a GitHub App, the app owner must enable suspending installations for the app by opting-in to the beta. For more information, see \"[Suspending a GitHub App installation](https://docs.github.com/apps/managing-github-apps/suspending-a-github-app-installation/).\"\n\nRemoves a GitHub App installation suspension.\n\nTo unsuspend a GitHub App, you must be an account owner or have admin permissions in the repository or organization where the app is installed and suspended.\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/unsuspend-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#unsuspend-an-app-installation" - }, - "parameters": [{ "$ref": "#/components/parameters/installation_id" }], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/applications/grants": { - "get": { - "summary": "List your grants", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).\n\nYou can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the [list your authorizations](https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations) API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). The `scopes` returned are the union of scopes authorized for the application. For example, if an application has one token with `repo` scope and another token with `user` scope, the grant will return `[\"repo\", \"user\"]`.", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/list-grants", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#list-your-grants" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/application-grant" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/application-grant-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/applications/grants/{grant_id}": { - "get": { - "summary": "Get a single grant", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/get-grant", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#get-a-single-grant" - }, - "parameters": [{ "$ref": "#/components/parameters/grant_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/application-grant" }, - "examples": { - "default": { - "$ref": "#/components/examples/application-grant" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a grant", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).\n\nDeleting an OAuth application's grant will also delete all OAuth tokens associated with the application for your user. Once deleted, the application has no access to your account and is no longer listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized).", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/delete-grant", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#delete-a-grant" - }, - "parameters": [{ "$ref": "#/components/parameters/grant_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/applications/{client_id}/grant": { - "delete": { - "summary": "Delete an app authorization", - "description": "OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted.\nDeleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized).", - "operationId": "apps/delete-authorization", - "tags": ["apps"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#delete-an-app-authorization" - }, - "parameters": [{ "$ref": "#/components/parameters/client-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "access_token": { - "type": "string", - "description": "The OAuth access token used to authenticate to the GitHub API." - } - } - }, - "example": { - "access_token": "e72e16c7e42f292c6912e7710c838347ae178b4a" - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "oauth-applications" - }, - "x-octokit": {} - } - }, - "/applications/{client_id}/grants/{access_token}": { - "delete": { - "summary": "Revoke a grant for an application", - "description": "**Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. The OAuth Application API will be removed on May 5, 2021. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/).\n\nOAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid token as `:access_token` and the grant for the token's owner will be deleted.\n\nDeleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the Applications settings page under \"Authorized OAuth Apps\" on GitHub](https://github.com/settings/applications#authorized).", - "tags": ["apps"], - "operationId": "apps/revoke-grant-for-application", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#revoke-a-grant-for-an-application" - }, - "parameters": [ - { "$ref": "#/components/parameters/client-id" }, - { "$ref": "#/components/parameters/access-token" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2021-05-05", - "deprecationDate": "2020-02-14", - "category": "apps", - "subcategory": "oauth-applications" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/applications/{client_id}/token": { - "post": { - "summary": "Check a token", - "description": "OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to use this endpoint, where the username is the OAuth application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`.", - "tags": ["apps"], - "operationId": "apps/check-token", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#check-a-token" - }, - "parameters": [{ "$ref": "#/components/parameters/client-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "access_token": { - "description": "The access_token of the OAuth application.", - "type": "string" - } - }, - "required": ["access_token"], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "default": { - "$ref": "#/components/examples/authorization-with-user" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "oauth-applications" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Reset a token", - "description": "OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the \"token\" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.", - "tags": ["apps"], - "operationId": "apps/reset-token", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#reset-a-token" - }, - "parameters": [{ "$ref": "#/components/parameters/client-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "access_token": { - "description": "The access_token of the OAuth application.", - "type": "string" - } - }, - "required": ["access_token"], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "default": { - "$ref": "#/components/examples/authorization-with-user" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "oauth-applications" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete an app token", - "description": "OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password.", - "tags": ["apps"], - "operationId": "apps/delete-token", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#delete-an-app-token" - }, - "parameters": [{ "$ref": "#/components/parameters/client-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "access_token": { - "type": "string", - "description": "The OAuth access token used to authenticate to the GitHub API." - } - } - }, - "example": { - "access_token": "e72e16c7e42f292c6912e7710c838347ae178b4a" - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "oauth-applications" - }, - "x-octokit": {} - } - }, - "/applications/{client_id}/tokens/{access_token}": { - "get": { - "summary": "Check an authorization", - "description": "**Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. The OAuth Application API will be removed on May 5, 2021. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/).\n\nOAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.", - "tags": ["apps"], - "operationId": "apps/check-authorization", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#check-an-authorization" - }, - "parameters": [ - { "$ref": "#/components/parameters/client-id" }, - { "$ref": "#/components/parameters/access-token" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/authorization" }] - }, - "examples": { - "default": { - "$ref": "#/components/examples/authorization-with-user" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2021-05-05", - "deprecationDate": "2020-02-14", - "category": "apps", - "subcategory": "oauth-applications" - }, - "deprecated": true, - "x-octokit": {} - }, - "post": { - "summary": "Reset an authorization", - "description": "**Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. The OAuth Application API will be removed on May 5, 2021. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/).\n\nOAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the \"token\" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.", - "tags": ["apps"], - "operationId": "apps/reset-authorization", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#reset-an-authorization" - }, - "parameters": [ - { "$ref": "#/components/parameters/client-id" }, - { "$ref": "#/components/parameters/access-token" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "default": { - "$ref": "#/components/examples/authorization-with-user" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2021-05-05", - "deprecationDate": "2020-02-14", - "category": "apps", - "subcategory": "oauth-applications" - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Revoke an authorization for an application", - "description": "**Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. The OAuth Application API will be removed on May 5, 2021. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/).\n\nOAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password.", - "tags": ["apps"], - "operationId": "apps/revoke-authorization-for-application", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#revoke-an-authorization-for-an-application" - }, - "parameters": [ - { "$ref": "#/components/parameters/client-id" }, - { "$ref": "#/components/parameters/access-token" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2021-05-05", - "deprecationDate": "2020-02-14", - "category": "apps", - "subcategory": "oauth-applications" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/apps/{app_slug}": { - "get": { - "summary": "Get an app", - "description": "**Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`).\n\nIf the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/get-by-slug", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#get-an-app" - }, - "parameters": [{ "$ref": "#/components/parameters/app_slug" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/integration" }, - "examples": { - "default": { "$ref": "#/components/examples/integration" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/authorizations": { - "get": { - "summary": "List your authorizations", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/list-authorizations", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/authorization" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/authorization-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "post": { - "summary": "Create a new authorization", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).\n\n**Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).\n\nCreates OAuth tokens using [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication). If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see \"[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication).\"\n\nTo create tokens for a particular OAuth application using this endpoint, you must authenticate as the user you want to create an authorization for and provide the app's client ID and secret, found on your OAuth application's settings page. If your OAuth application intends to create multiple tokens for one user, use `fingerprint` to differentiate between them.\n\nYou can also create tokens on GitHub from the [personal access tokens settings](https://github.com/settings/tokens) page. Read more about these tokens in [the GitHub Help documentation](https://help.github.com/articles/creating-an-access-token-for-command-line-use).\n\nOrganizations that enforce SAML SSO require personal access tokens to be allowed. Read more about allowing tokens in [the GitHub Help documentation](https://help.github.com/articles/about-identity-and-access-management-with-saml-single-sign-on).", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/create-authorization", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "scopes": { - "description": "A list of scopes that this authorization is in.", - "type": "array", - "items": { "type": "string" }, - "example": ["public_repo", "user"], - "nullable": true - }, - "note": { - "description": "A note to remind you what the OAuth token is for.", - "type": "string", - "example": "Update all gems" - }, - "note_url": { - "description": "A URL to remind you what app the OAuth token is for.", - "type": "string" - }, - "client_id": { - "description": "The OAuth app client key for which to create the token.", - "maxLength": 20, - "type": "string" - }, - "client_secret": { - "description": "The OAuth app client secret for which to create the token.", - "maxLength": 40, - "type": "string" - }, - "fingerprint": { - "description": "A unique string to distinguish an authorization from others created for the same client ID and user.", - "type": "string" - } - } - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "default": { "$ref": "#/components/examples/authorization" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/authorizations/1", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/authorizations/clients/{client_id}": { - "put": { - "summary": "Get-or-create an authorization for a specific app", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).\n\n**Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).\n\nCreates a new authorization for the specified OAuth application, only if an authorization for that application doesn't already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one.\n\nIf you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see \"[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication).\"\n\n**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/get-or-create-authorization-for-app", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#get-or-create-an-authorization-for-a-specific-app" - }, - "parameters": [{ "$ref": "#/components/parameters/client-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "client_secret": { - "description": "The OAuth app client secret for which to create the token.", - "maxLength": 40, - "type": "string" - }, - "scopes": { - "description": "A list of scopes that this authorization is in.", - "type": "array", - "items": { "type": "string" }, - "example": ["public_repo", "user"], - "nullable": true - }, - "note": { - "description": "A note to remind you what the OAuth token is for.", - "type": "string", - "example": "Update all gems" - }, - "note_url": { - "description": "A URL to remind you what app the OAuth token is for.", - "type": "string" - }, - "fingerprint": { - "description": "A unique string to distinguish an authorization from others created for the same client ID and user.", - "type": "string" - } - }, - "required": ["client_secret"], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Response if returning an existing token", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "response-if-returning-an-existing-token": { - "$ref": "#/components/examples/authorization-response-if-returning-an-existing-token-2" - } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/authorizations/1", - "schema": { "type": "string" } - } - } - }, - "201": { - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "default": { "$ref": "#/components/examples/authorization" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/authorizations/1", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/authorizations/clients/{client_id}/{fingerprint}": { - "put": { - "summary": "Get-or-create an authorization for a specific app and fingerprint", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).\n\n**Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).\n\nThis method will create a new authorization for the specified OAuth application, only if an authorization for that application and fingerprint do not already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. `fingerprint` is a unique string to distinguish an authorization from others created for the same client ID and user. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one.\n\nIf you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see \"[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication).\"", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/get-or-create-authorization-for-app-and-fingerprint", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#get-or-create-an-authorization-for-a-specific-app-and-fingerprint" - }, - "parameters": [ - { "$ref": "#/components/parameters/client-id" }, - { - "name": "fingerprint", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "client_secret": { - "description": "The OAuth app client secret for which to create the token.", - "maxLength": 40, - "type": "string" - }, - "scopes": { - "description": "A list of scopes that this authorization is in.", - "type": "array", - "items": { "type": "string" }, - "example": ["public_repo", "user"], - "nullable": true - }, - "note": { - "description": "A note to remind you what the OAuth token is for.", - "type": "string", - "example": "Update all gems" - }, - "note_url": { - "description": "A URL to remind you what app the OAuth token is for.", - "type": "string" - } - }, - "required": ["client_secret"], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Response if returning an existing token", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "response-if-returning-an-existing-token": { - "$ref": "#/components/examples/authorization-response-if-returning-an-existing-token" - } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/authorizations/1", - "schema": { "type": "string" } - } - } - }, - "201": { - "description": "Response if returning a new token", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "default": { "$ref": "#/components/examples/authorization-3" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/authorizations/1", - "schema": { "type": "string" } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/authorizations/{authorization_id}": { - "get": { - "summary": "Get a single authorization", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/get-authorization", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#get-a-single-authorization" - }, - "parameters": [{ "$ref": "#/components/parameters/authorization_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "default": { "$ref": "#/components/examples/authorization-2" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "patch": { - "summary": "Update an existing authorization", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).\n\nIf you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see \"[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication).\"\n\nYou can only send one of these scope keys at a time.", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/update-authorization", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#update-an-existing-authorization" - }, - "parameters": [{ "$ref": "#/components/parameters/authorization_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "scopes": { - "description": "A list of scopes that this authorization is in.", - "type": "array", - "items": { "type": "string" }, - "example": ["public_repo", "user"], - "nullable": true - }, - "add_scopes": { - "description": "A list of scopes to add to this authorization.", - "type": "array", - "items": { "type": "string" } - }, - "remove_scopes": { - "description": "A list of scopes to remove from this authorization.", - "type": "array", - "items": { "type": "string" } - }, - "note": { - "description": "A note to remind you what the OAuth token is for.", - "type": "string", - "example": "Update all gems" - }, - "note_url": { - "description": "A URL to remind you what app the OAuth token is for.", - "type": "string" - }, - "fingerprint": { - "description": "A unique string to distinguish an authorization from others created for the same client ID and user.", - "type": "string" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/authorization" }, - "examples": { - "default": { "$ref": "#/components/examples/authorization-2" } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Delete an authorization", - "description": "**Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/).", - "tags": ["oauth-authorizations"], - "operationId": "oauth-authorizations/delete-authorization", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/oauth-authorizations#delete-an-authorization" - }, - "parameters": [{ "$ref": "#/components/parameters/authorization_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2020-11-13", - "deprecationDate": "2020-02-14", - "category": "oauth-authorizations", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/codes_of_conduct": { - "get": { - "summary": "Get all codes of conduct", - "description": "", - "tags": ["codes-of-conduct"], - "operationId": "codes-of-conduct/get-all-codes-of-conduct", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/codes_of_conduct/#get-all-codes-of-conduct" - }, - "parameters": [], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/code-of-conduct" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/code-of-conduct-simple-items" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "scarlet-witch", - "note": "The Codes of Conduct API is currently available for developers to preview.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.scarlet-witch-preview+json\n```" - } - ], - "category": "codes-of-conduct", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/codes_of_conduct/{key}": { - "get": { - "summary": "Get a code of conduct", - "description": "", - "tags": ["codes-of-conduct"], - "operationId": "codes-of-conduct/get-conduct-code", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/codes_of_conduct/#get-a-code-of-conduct" - }, - "parameters": [ - { - "name": "key", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/code-of-conduct" }, - "examples": { - "default": { "$ref": "#/components/examples/code-of-conduct" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "scarlet-witch", - "note": "The Codes of Conduct API is currently available for developers to preview.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.scarlet-witch-preview+json\n```" - } - ], - "category": "codes-of-conduct", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/content_references/{content_reference_id}/attachments": { - "post": { - "summary": "Create a content attachment", - "description": "Creates an attachment under a content reference URL in the body or comment of an issue or pull request. Use the `id` of the content reference from the [`content_reference` event](https://docs.github.com/webhooks/event-payloads/#content_reference) to create an attachment.\n\nThe app must create a content attachment within six hours of the content reference URL being posted. See \"[Using content attachments](https://docs.github.com/apps/using-content-attachments/)\" for details about content attachments.\n\nYou must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/create-content-attachment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#create-a-content-attachment" - }, - "parameters": [ - { - "name": "content_reference_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "title": { - "description": "The title of the attachment", - "example": "Title of the attachment", - "type": "string", - "maxLength": 1024 - }, - "body": { - "description": "The body of the attachment", - "example": "Body of the attachment", - "type": "string", - "maxLength": 262144 - } - }, - "required": ["title", "body"], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/content-reference-attachment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/content-reference-attachment" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "corsair", - "note": "To access the Content Attachments API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.corsair-preview+json\n```" - } - ], - "category": "apps", - "subcategory": "installations" - }, - "x-octokit": {} - } - }, - "/emojis": { - "get": { - "summary": "Get emojis", - "description": "Lists all the emojis available to use on GitHub.", - "operationId": "emojis/get", - "tags": ["emojis"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/emojis/#get-emojis" - }, - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { "type": "string" } - } - } - }, - "description": "response" - }, - "304": { "$ref": "#/components/responses/not_modified" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "emojis", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/permissions": { - "get": { - "summary": "Get GitHub Actions permissions for an enterprise", - "description": "Gets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/get-github-actions-permissions-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#get-github-actions-permissions-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/actions-enterprise-permissions" - }, - "examples": { - "default": { - "$ref": "#/components/examples/actions-enterprise-permissions" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set GitHub Actions permissions for an enterprise", - "description": "Sets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/set-github-actions-permissions-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#set-github-actions-permissions-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { "204": { "description": "Empty response" } }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "enabled_organizations": { - "$ref": "#/components/schemas/enabled-organizations" - }, - "allowed_actions": { - "$ref": "#/components/schemas/allowed-actions" - } - }, - "required": ["enabled_organizations"] - }, - "example": { - "enabled_organizations": "all", - "allowed_actions": "selected" - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/permissions/organizations": { - "get": { - "summary": "List selected organizations enabled for GitHub Actions in an enterprise", - "description": "Lists the organizations that are selected to have GitHub Actions enabled in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise).\"\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/list-selected-organizations-enabled-github-actions-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#list-selected-organizations-enabled-for-github-actions-in-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "number" }, - "organizations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/organization-simple" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-targets" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set selected organizations enabled for GitHub Actions in an enterprise", - "description": "Replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise).\"\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/set-selected-organizations-enabled-github-actions-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#set-selected-organizations-enabled-for-github-actions-in-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { "204": { "description": "Empty response" } }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "selected_organization_ids": { - "description": "List of organization IDs to enable for GitHub Actions.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the organization." - } - } - }, - "required": ["selected_organization_ids"] - }, - "example": { "selected_organization_ids": [32, 91] } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/permissions/organizations/{org_id}": { - "put": { - "summary": "Enable a selected organization for GitHub Actions in an enterprise", - "description": "Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise).\"\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/enable-selected-organization-github-actions-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#enable-a-selected-organization-for-github-actions-in-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/org_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Disable a selected organization for GitHub Actions in an enterprise", - "description": "Removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise).\"\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/disable-selected-organization-github-actions-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#disable-a-selected-organization-for-github-actions-in-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/org_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/permissions/selected-actions": { - "get": { - "summary": "Get allowed actions for an enterprise", - "description": "Gets the selected actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise).\"\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/get-allowed-actions-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#get-allowed-actions-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/selected-actions" }, - "examples": { - "default": { - "$ref": "#/components/examples/selected-actions" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set allowed actions for an enterprise", - "description": "Sets the actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise).\"\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/set-allowed-actions-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#set-allowed-actions-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { "204": { "description": "Empty response" } }, - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/selected-actions" }, - "examples": { - "selected_actions": { - "$ref": "#/components/examples/selected-actions" - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runner-groups": { - "get": { - "summary": "List self-hosted runner groups for an enterprise", - "description": "Lists all self-hosted runner groups for an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/list-self-hosted-runner-groups-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runner-groups-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "number" }, - "runner_groups": { - "type": "array", - "items": { - "$ref": "#/components/schemas/runner-groups-enterprise" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-groups-enterprise" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a self-hosted runner group for an enterprise", - "description": "Creates a new self-hosted runner group for an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/create-self-hosted-runner-group-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#create-self-hosted-runner-group-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the runner group.", - "type": "string" - }, - "visibility": { - "description": "Visibility of a runner group. You can select all organizations or select individual organization. Can be one of: `all` or `selected`", - "type": "string", - "enum": ["selected", "all"] - }, - "selected_organization_ids": { - "description": "List of organization IDs that can access the runner group.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the organization." - } - }, - "runners": { - "description": "List of runner IDs to add to the runner group.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the runner." - } - } - }, - "required": ["name"] - }, - "example": { - "name": "Expensive hardware runners", - "visibility": "selected", - "selected_organization_ids": [32, 91], - "runners": [9, 2] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/runner-groups-enterprise" - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-group-enterprise" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": { - "get": { - "summary": "Get a self-hosted runner group for an enterprise", - "description": "Gets a specific self-hosted runner group for an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/get-self-hosted-runner-group-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#get-a-self-hosted-runner-group-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/runner-groups-enterprise" - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-group-enterprise" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a self-hosted runner group for an enterprise", - "description": "Updates the `name` and `visibility` of a self-hosted runner group in an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/update-self-hosted-runner-group-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#update-a-self-hosted-runner-group-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the runner group.", - "type": "string" - }, - "visibility": { - "description": "Visibility of a runner group. You can select all organizations or select individual organizations. Can be one of: `all` or `selected`", - "type": "string", - "enum": ["selected", "all"], - "default": "all" - } - } - }, - "example": { - "name": "Expensive hardware runners", - "visibility": "selected" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/runner-groups-enterprise" - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-group-update-enterprise" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a self-hosted runner group from an enterprise", - "description": "Deletes a self-hosted runner group for an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/delete-self-hosted-runner-group-from-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#delete-a-self-hosted-runner-group-from-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": { - "get": { - "summary": "List organization access to a self-hosted runner group in an enterprise", - "description": "Lists the organizations with access to a self-hosted runner group.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/list-org-access-to-self-hosted-runner-group-in-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#list-organization-access-to-a-self-hosted-runner-group-in-a-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "number" }, - "organizations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/organization-simple" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-targets" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set organization access for a self-hosted runner group in an enterprise", - "description": "Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/set-org-access-to-self-hosted-runner-group-in-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#set-organization-access-to-a-self-hosted-runner-group-in-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "selected_organization_ids": { - "description": "List of organization IDs that can access the runner group.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the organization." - } - } - }, - "required": ["selected_organization_ids"] - }, - "example": { "selected_organization_ids": [32, 91] } - } - } - }, - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}": { - "put": { - "summary": "Add organization access to a self-hosted runner group in an enterprise", - "description": "Adds an organization to the list of selected organizations that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see \"[Create a self-hosted runner group for an enterprise](#create-a-self-hosted-runner-group-for-an-enterprise).\"\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/add-org-access-to-self-hosted-runner-group-in-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#add-organization-access-to-a-self-hosted-runner-group-in-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/org_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove organization access to a self-hosted runner group in an enterprise", - "description": "Removes an organization from the list of selected organizations that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see \"[Create a self-hosted runner group for an enterprise](#create-a-self-hosted-runner-group-for-an-enterprise).\"\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/remove-org-access-to-self-hosted-runner-group-in-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#remove-organization-access-to-a-self-hosted-runner-group-in-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/org_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": { - "get": { - "summary": "List self-hosted runners in a group for an enterprise", - "description": "Lists the self-hosted runners that are in a specific enterprise group.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/list-self-hosted-runners-in-group-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runners-in-a-group-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "number" }, - "runners": { - "type": "array", - "items": { "$ref": "#/components/schemas/runner" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set self-hosted runners in a group for an enterprise", - "description": "Replaces the list of self-hosted runners that that are part of an enterprise runner group.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/set-self-hosted-runners-in-group-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#set-self-hosted-runners-in-a-group-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "runners": { - "description": "List of runner IDs to add to the runner group.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the runner." - } - } - }, - "required": ["runners"] - }, - "example": { "runners": [9, 2] } - } - } - }, - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": { - "put": { - "summary": "Add a self-hosted runner to a group for an enterprise", - "description": "Adds a self-hosted runner to a runner group configured in an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise`\nscope to use this endpoint.", - "operationId": "enterprise-admin/add-self-hosted-runner-to-group-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#add-a-self-hosted-runner-to-a-group-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove a self-hosted runner from a group for an enterprise", - "description": "Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/remove-self-hosted-runner-from-group-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#remove-a-self-hosted-runner-from-a-group-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runners": { - "get": { - "summary": "List self-hosted runners for an enterprise", - "description": "Lists all self-hosted runners configured for an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/list-self-hosted-runners-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runners-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "number" }, - "runners": { - "type": "array", - "items": { "$ref": "#/components/schemas/runner" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runners/downloads": { - "get": { - "summary": "List runner applications for an enterprise", - "description": "Lists binaries for the runner application that you can download and run.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/list-runner-applications-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#list-runner-applications-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/runner-application" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-application-items" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runners/registration-token": { - "post": { - "summary": "Create a registration token for an enterprise", - "description": "Returns a token that you can pass to the `config` script. The token expires after one hour.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.\n\n#### Example using registration token\n\nConfigure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint.\n\n```\n./config.sh --url https://github.com/enterpises/octo-enterprise --token TOKEN\n```", - "operationId": "enterprise-admin/create-registration-token-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#create-a-registration-token-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authentication-token" - }, - "examples": { - "default": { - "$ref": "#/components/examples/authentication-token" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runners/remove-token": { - "post": { - "summary": "Create a remove token for an enterprise", - "description": "Returns a token that you can pass to the `config` script to remove a self-hosted runner from an enterprise. The token expires after one hour.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.\n\n#### Example using remove token\n\nTo remove your self-hosted runner from an enterprise, replace `TOKEN` with the remove token provided by this\nendpoint.\n\n```\n./config.sh remove --token TOKEN\n```", - "operationId": "enterprise-admin/create-remove-token-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#create-a-remove-token-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authentication-token" - }, - "examples": { - "default": { - "$ref": "#/components/examples/authentication-token-2" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/actions/runners/{runner_id}": { - "get": { - "summary": "Get a self-hosted runner for an enterprise", - "description": "Gets a specific self-hosted runner configured in an enterprise.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/get-self-hosted-runner-for-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#get-a-self-hosted-runner-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/runner" }, - "examples": { - "default": { "$ref": "#/components/examples/runner" } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a self-hosted runner from an enterprise", - "description": "Forces the removal of a self-hosted runner from an enterprise. You can use this endpoint to completely remove the runner when the machine you were using no longer exists.\n\nYou must authenticate using an access token with the `admin:enterprise` scope to use this endpoint.", - "operationId": "enterprise-admin/delete-self-hosted-runner-from-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#delete-self-hosted-runner-from-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": false, - "githubCloudOnly": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "actions" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/settings/billing/actions": { - "get": { - "summary": "Get GitHub Actions billing for an enterprise", - "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nThe authenticated user must be an enterprise admin.", - "operationId": "billing/get-github-actions-billing-ghe", - "tags": ["billing"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/billing/#get-github-actions-billing-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/actions-billing-usage" - }, - "examples": { - "default": { - "$ref": "#/components/examples/actions-billing-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "billing" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/settings/billing/packages": { - "get": { - "summary": "Get GitHub Packages billing for an enterprise", - "description": "Gets the free and paid storage used for GitHub Packages in gigabytes.\n\nPaid minutes only apply to packages stored for private repositories. For more information, see \"[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages).\"\n\nThe authenticated user must be an enterprise admin.", - "operationId": "billing/get-github-packages-billing-ghe", - "tags": ["billing"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/billing/#get-github-packages-billing-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/packages-billing-usage" - }, - "examples": { - "default": { - "$ref": "#/components/examples/packages-billing-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "billing" - }, - "x-octokit": {} - } - }, - "/enterprises/{enterprise}/settings/billing/shared-storage": { - "get": { - "summary": "Get shared storage billing for an enterprise", - "description": "Gets the estimated paid and estimated total storage used for GitHub Actions and Github Packages.\n\nPaid minutes only apply to packages stored for private repositories. For more information, see \"[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages).\"\n\nThe authenticated user must be an enterprise admin.", - "operationId": "billing/get-shared-storage-billing-ghe", - "tags": ["billing"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/billing/#get-shared-storage-billing-for-an-enterprise" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/combined-billing-usage" - }, - "examples": { - "default": { - "$ref": "#/components/examples/combined-billing-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": false, - "previews": [], - "category": "enterprise-admin", - "subcategory": "billing" - }, - "x-octokit": {} - } - }, - "/events": { - "get": { - "summary": "List public events", - "description": "We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago.", - "tags": ["activity"], - "operationId": "activity/list-public-events", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-public-events" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/event" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/feeds": { - "get": { - "summary": "Get feeds", - "description": "GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user:\n\n* **Timeline**: The GitHub global public timeline\n* **User**: The public timeline for any user, using [URI template](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia)\n* **Current user public**: The public timeline for the authenticated user\n* **Current user**: The private timeline for the authenticated user\n* **Current user actor**: The private timeline for activity created by the authenticated user\n* **Current user organizations**: The private timeline for the organizations the authenticated user is a member of.\n* **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub.\n\n**Note**: Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) since current feed URIs use the older, non revocable auth tokens.", - "tags": ["activity"], - "operationId": "activity/get-feeds", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#get-feeds" - }, - "parameters": [], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/feed" }, - "examples": { - "default": { "$ref": "#/components/examples/feed" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "feeds" - }, - "x-octokit": {} - } - }, - "/gists": { - "get": { - "summary": "List gists for the authenticated user", - "description": "Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists:", - "tags": ["gists"], - "operationId": "gists/list", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#list-gists-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/base-gist" } - }, - "examples": { - "default": { "$ref": "#/components/examples/base-gist-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a gist", - "description": "Allows you to add a new gist with one or more files.\n\n**Note:** Don't name your files \"gistfile\" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally.", - "operationId": "gists/create", - "tags": ["gists"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#create-a-gist" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "description": { - "description": "Description of the gist", - "example": "Example Ruby script", - "type": "string" - }, - "files": { - "description": "Names and content for the files that make up the gist", - "example": { - "hello.rb": { "content": "puts \"Hello, World!\"" } - }, - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "content": { - "description": "Content of the file", - "readOnly": false, - "type": "string" - } - }, - "required": ["content"] - } - }, - "public": { - "oneOf": [ - { - "description": "Flag indicating whether the gist is public", - "example": true, - "type": "boolean", - "default": false - }, - { - "type": "string", - "example": "true", - "default": "false", - "enum": ["true", "false"] - } - ] - } - }, - "required": ["files"], - "type": "object" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gist-full" }, - "examples": { - "default": { "$ref": "#/components/examples/gist" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/gists/aa5a315d61ae9438b18d", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/gists/public": { - "get": { - "summary": "List public gists", - "description": "List public gists sorted by most recently updated to least recently updated.\n\nNote: With [pagination](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page.", - "tags": ["gists"], - "operationId": "gists/list-public", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#list-public-gists" - }, - "parameters": [ - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/base-gist" } - }, - "examples": { - "default": { "$ref": "#/components/examples/base-gist-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/gists/starred": { - "get": { - "summary": "List starred gists", - "description": "List the authenticated user's starred gists:", - "tags": ["gists"], - "operationId": "gists/list-starred", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#list-starred-gists" - }, - "parameters": [ - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/base-gist" } - }, - "examples": { - "default": { "$ref": "#/components/examples/base-gist-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/gists/{gist_id}": { - "get": { - "summary": "Get a gist", - "description": "", - "tags": ["gists"], - "operationId": "gists/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#get-a-gist" - }, - "parameters": [{ "$ref": "#/components/parameters/gist_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gist-full" }, - "examples": { - "default": { "$ref": "#/components/examples/gist" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden_gist" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a gist", - "description": "Allows you to update or delete a gist file and rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged.", - "tags": ["gists"], - "operationId": "gists/update", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#update-a-gist" - }, - "parameters": [{ "$ref": "#/components/parameters/gist_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "description": { - "description": "Description of the gist", - "example": "Example Ruby script", - "type": "string" - }, - "files": { - "description": "Names of files to be updated", - "example": { - "hello.rb": { - "content": "blah", - "filename": "goodbye.rb" - } - }, - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "content": { - "description": "The new content of the file", - "type": "string" - }, - "filename": { - "description": "The new filename for the file", - "type": "string", - "nullable": true - } - }, - "nullable": true - } - } - }, - "anyOf": [ - { "required": ["description"] }, - { "required": ["files"] } - ], - "type": "object", - "nullable": true - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gist-full" }, - "examples": { - "default": { "$ref": "#/components/examples/gist-3" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a gist", - "description": "", - "tags": ["gists"], - "operationId": "gists/delete", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#delete-a-gist" - }, - "parameters": [{ "$ref": "#/components/parameters/gist_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/gists/{gist_id}/comments": { - "get": { - "summary": "List gist comments", - "description": "", - "tags": ["gists"], - "operationId": "gists/list-comments", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/gists#list-gist-comments" - }, - "parameters": [ - { "$ref": "#/components/parameters/gist_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/gist-comment" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/gist-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a gist comment", - "description": "", - "tags": ["gists"], - "operationId": "gists/create-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/gists#create-a-gist-comment" - }, - "parameters": [{ "$ref": "#/components/parameters/gist_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "body": { - "description": "The comment text.", - "type": "string", - "maxLength": 65535, - "example": "Body of the attachment" - } - }, - "type": "object", - "required": ["body"] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gist-comment" }, - "examples": { - "default": { "$ref": "#/components/examples/gist-comment" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/gists/a6db0bec360bb87e9418/comments/1", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/gists/{gist_id}/comments/{comment_id}": { - "get": { - "summary": "Get a gist comment", - "description": "", - "tags": ["gists"], - "operationId": "gists/get-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/gists#get-a-gist-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/gist_id" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gist-comment" }, - "examples": { - "default": { "$ref": "#/components/examples/gist-comment" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden_gist" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a gist comment", - "description": "", - "tags": ["gists"], - "operationId": "gists/update-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/gists#update-a-gist-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/gist_id" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "body": { - "description": "The comment text.", - "type": "string", - "maxLength": 65535, - "example": "Body of the attachment" - } - }, - "type": "object", - "required": ["body"] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gist-comment" }, - "examples": { - "default": { "$ref": "#/components/examples/gist-comment" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a gist comment", - "description": "", - "tags": ["gists"], - "operationId": "gists/delete-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/gists#delete-a-gist-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/gist_id" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/gists/{gist_id}/commits": { - "get": { - "summary": "List gist commits", - "description": "", - "tags": ["gists"], - "operationId": "gists/list-commits", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#list-gist-commits" - }, - "parameters": [ - { "$ref": "#/components/parameters/gist_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/gist-commit" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/gist-commit-items" - } - } - } - }, - "headers": { - "Link": { - "example": "; rel=\"next\"", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/gists/{gist_id}/forks": { - "get": { - "summary": "List gist forks", - "description": "", - "tags": ["gists"], - "operationId": "gists/list-forks", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#list-gist-forks" - }, - "parameters": [ - { "$ref": "#/components/parameters/gist_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/gist-full" } - }, - "examples": { - "default": { "$ref": "#/components/examples/gist-fork-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Fork a gist", - "description": "**Note**: This was previously `/gists/:gist_id/fork`.", - "tags": ["gists"], - "operationId": "gists/fork", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#fork-a-gist" - }, - "parameters": [{ "$ref": "#/components/parameters/gist_id" }], - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/base-gist" }, - "examples": { - "default": { "$ref": "#/components/examples/base-gist" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/gists/aa5a315d61ae9438b18d", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/gists/{gist_id}/star": { - "get": { - "summary": "Check if a gist is starred", - "description": "", - "tags": ["gists"], - "operationId": "gists/check-is-starred", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#check-if-a-gist-is-starred" - }, - "parameters": [{ "$ref": "#/components/parameters/gist_id" }], - "responses": { - "204": { "description": "Response if gist is starred" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { - "description": "Response if gist is not starred", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": {}, - "additionalProperties": false - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - }, - "put": { - "summary": "Star a gist", - "description": "Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"", - "tags": ["gists"], - "operationId": "gists/star", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#star-a-gist" - }, - "parameters": [{ "$ref": "#/components/parameters/gist_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Unstar a gist", - "description": "", - "tags": ["gists"], - "operationId": "gists/unstar", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#unstar-a-gist" - }, - "parameters": [{ "$ref": "#/components/parameters/gist_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/gists/{gist_id}/{sha}": { - "get": { - "summary": "Get a gist revision", - "description": "", - "tags": ["gists"], - "operationId": "gists/get-revision", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#get-a-gist-revision" - }, - "parameters": [ - { "$ref": "#/components/parameters/gist_id" }, - { - "name": "sha", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gist-full" }, - "examples": { - "default": { "$ref": "#/components/examples/gist-2" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/gitignore/templates": { - "get": { - "summary": "Get all gitignore templates", - "description": "List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/reference/repos#create-a-repository-for-the-authenticated-user).", - "operationId": "gitignore/get-all-templates", - "tags": ["gitignore"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gitignore/#get-all-gitignore-templates" - }, - "parameters": [], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "type": "array", "items": { "type": "string" } }, - "example": [ - "Actionscript", - "Android", - "AppceleratorTitanium", - "Autotools", - "Bancha", - "C", - "C++" - ] - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "gitignore", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/gitignore/templates/{name}": { - "get": { - "summary": "Get a gitignore template", - "description": "The API also allows fetching the source of a single template.\nUse the raw [media type](https://docs.github.com/rest/overview/media-types/) to get the raw contents.", - "operationId": "gitignore/get-template", - "tags": ["gitignore"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gitignore/#get-a-gitignore-template" - }, - "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gitignore-template" }, - "examples": { - "default": { - "$ref": "#/components/examples/gitignore-template" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "gitignore", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/installation/repositories": { - "get": { - "summary": "List repositories accessible to the app installation", - "description": "List repositories that an app installation can access.\n\nYou must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/list-repos-accessible-to-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-app-installation" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "repositories": { - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - }, - "repository_selection": { - "type": "string", - "example": "selected" - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-paginated-2" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "mercy", - "note": "The `topics` property for repositories on GitHub is currently available for developers to preview. To view the `topics` property in calls that return repository results, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.mercy-preview+json\n```" - } - ], - "category": "apps", - "subcategory": "installations" - }, - "x-octokit": {} - } - }, - "/installation/token": { - "delete": { - "summary": "Revoke an installation access token", - "description": "Revokes the installation token you're using to authenticate as an installation and access this endpoint.\n\nOnce an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the \"[Create an installation access token for an app](https://docs.github.com/rest/reference/apps#create-an-installation-access-token-for-an-app)\" endpoint.\n\nYou must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/revoke-installation-access-token", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#revoke-an-installation-access-token" - }, - "parameters": [], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "apps", - "subcategory": "installations" - }, - "x-octokit": {} - } - }, - "/issues": { - "get": { - "summary": "List issues assigned to the authenticated user", - "description": "List issues assigned to the authenticated user across all visible repositories including owned repositories, member\nrepositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not\nnecessarily assigned to you.\n\n\n**Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this\nreason, \"Issues\" endpoints may return both issues and pull requests in the response. You can identify pull requests by\nthe `pull_request` key. Be aware that the `id` of a pull request returned from \"Issues\" endpoints will be an _issue id_. To find out the pull\nrequest id, use the \"[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)\" endpoint.", - "tags": ["issues"], - "operationId": "issues/list", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/issues/#list-issues-assigned-to-the-authenticated-user" - }, - "parameters": [ - { - "name": "filter", - "description": "Indicates which sorts of issues to return. Can be one of: \n\\* `assigned`: Issues assigned to you \n\\* `created`: Issues created by you \n\\* `mentioned`: Issues mentioning you \n\\* `subscribed`: Issues you're subscribed to updates for \n\\* `all`: All issues the authenticated user can see, regardless of participation or creation", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["assigned", "created", "mentioned", "subscribed", "all"], - "default": "assigned" - } - }, - { - "name": "state", - "description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["open", "closed", "all"], - "default": "open" - } - }, - { "$ref": "#/components/parameters/labels" }, - { - "name": "sort", - "description": "What to sort results by. Can be either `created`, `updated`, `comments`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["created", "updated", "comments"], - "default": "created" - } - }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/since" }, - { - "name": "collab", - "in": "query", - "required": false, - "schema": { "type": "boolean" } - }, - { - "name": "orgs", - "in": "query", - "required": false, - "schema": { "type": "boolean" } - }, - { - "name": "owned", - "in": "query", - "required": false, - "schema": { "type": "boolean" } - }, - { - "name": "pulls", - "in": "query", - "required": false, - "schema": { "type": "boolean" } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/issue" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-with-repo-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "issues", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/licenses": { - "get": { - "summary": "Get all commonly used licenses", - "description": "", - "tags": ["licenses"], - "operationId": "licenses/get-all-commonly-used", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/licenses/#get-all-commonly-used-licenses" - }, - "parameters": [ - { - "name": "featured", - "in": "query", - "required": false, - "schema": { "type": "boolean" } - }, - { "$ref": "#/components/parameters/per_page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/license-simple" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/license-simple-items" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "licenses", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/licenses/{license}": { - "get": { - "summary": "Get a license", - "description": "", - "tags": ["licenses"], - "operationId": "licenses/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/licenses/#get-a-license" - }, - "parameters": [ - { - "name": "license", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/license" }, - "examples": { - "default": { "$ref": "#/components/examples/license" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "licenses", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/markdown": { - "post": { - "summary": "Render a Markdown document", - "description": "", - "operationId": "markdown/render", - "tags": ["markdown"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/markdown/#render-a-markdown-document" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "text": { - "description": "The Markdown text to render in HTML.", - "type": "string" - }, - "mode": { - "description": "The rendering mode.", - "enum": ["markdown", "gfm"], - "default": "markdown", - "example": "markdown", - "type": "string" - }, - "context": { - "description": "The repository context to use when creating references in `gfm` mode.", - "type": "string" - } - }, - "required": ["text"], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "headers": { - "Content-Type": { "$ref": "#/components/headers/content-type" }, - "Content-Length": { - "example": "279", - "schema": { "type": "string" } - }, - "X-CommonMarker-Version": { - "$ref": "#/components/headers/x-common-marker-version" - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "markdown", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/markdown/raw": { - "post": { - "summary": "Render a Markdown document in raw mode", - "description": "You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less.", - "operationId": "markdown/render-raw", - "tags": ["markdown"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode" - }, - "parameters": [], - "requestBody": { - "content": { - "text/plain": { "schema": { "type": "string" } }, - "text/x-markdown": { "schema": { "type": "string" } } - } - }, - "responses": { - "200": { - "description": "response", - "headers": { - "X-CommonMarker-Version": { - "$ref": "#/components/headers/x-common-marker-version" - } - }, - "content": { "text/html": { "schema": { "type": "string" } } } - }, - "304": { "$ref": "#/components/responses/not_modified" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "markdown", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/marketplace_listing/accounts/{account_id}": { - "get": { - "summary": "Get a subscription plan for an account", - "description": "Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.\n\nGitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/get-subscription-plan-for-account", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#get-a-subscription-plan-for-an-account" - }, - "parameters": [{ "$ref": "#/components/parameters/account_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/marketplace-purchase" - }, - "examples": { - "default": { - "$ref": "#/components/examples/marketplace-purchase" - } - } - } - } - }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "404": { - "description": "Response when the account has not purchased the listing", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "marketplace" - }, - "x-octokit": {} - } - }, - "/marketplace_listing/plans": { - "get": { - "summary": "List plans", - "description": "Lists all plans that are part of your GitHub Marketplace listing.\n\nGitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/list-plans", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#list-plans" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/marketplace-listing-plan" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/marketplace-listing-plan-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "marketplace" - }, - "x-octokit": {} - } - }, - "/marketplace_listing/plans/{plan_id}/accounts": { - "get": { - "summary": "List accounts for a plan", - "description": "Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.\n\nGitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/list-accounts-for-plan", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan" - }, - "parameters": [ - { "$ref": "#/components/parameters/plan_id" }, - { "$ref": "#/components/parameters/sort" }, - { - "name": "direction", - "description": "To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["asc", "desc"] } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/marketplace-purchase" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/marketplace-purchase-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "marketplace" - }, - "x-octokit": {} - } - }, - "/marketplace_listing/stubbed/accounts/{account_id}": { - "get": { - "summary": "Get a subscription plan for an account (stubbed)", - "description": "Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.\n\nGitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/get-subscription-plan-for-account-stubbed", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#get-a-subscription-plan-for-an-account-stubbed" - }, - "parameters": [{ "$ref": "#/components/parameters/account_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/marketplace-purchase" - }, - "examples": { - "default": { - "$ref": "#/components/examples/marketplace-purchase" - } - } - } - } - }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "404": { - "description": "Response when the account has not purchased the listing" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "marketplace" - }, - "x-octokit": {} - } - }, - "/marketplace_listing/stubbed/plans": { - "get": { - "summary": "List plans (stubbed)", - "description": "Lists all plans that are part of your GitHub Marketplace listing.\n\nGitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/list-plans-stubbed", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#list-plans-stubbed" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/marketplace-listing-plan" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/marketplace-listing-plan-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "401": { "$ref": "#/components/responses/requires_authentication" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "marketplace" - }, - "x-octokit": {} - } - }, - "/marketplace_listing/stubbed/plans/{plan_id}/accounts": { - "get": { - "summary": "List accounts for a plan (stubbed)", - "description": "Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.\n\nGitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/list-accounts-for-plan-stubbed", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan-stubbed" - }, - "parameters": [ - { "$ref": "#/components/parameters/plan_id" }, - { "$ref": "#/components/parameters/sort" }, - { - "name": "direction", - "description": "To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["asc", "desc"] } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/marketplace-purchase" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/marketplace-purchase-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "401": { "$ref": "#/components/responses/requires_authentication" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "marketplace" - }, - "x-octokit": {} - } - }, - "/meta": { - "get": { - "summary": "Get GitHub meta information", - "description": "This endpoint provides a list of GitHub's IP addresses. For more information, see \"[About GitHub's IP addresses](https://help.github.com/articles/about-github-s-ip-addresses/).\"", - "tags": ["meta"], - "operationId": "meta/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/meta/#get-github-meta-information" - }, - "parameters": [], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/api-overview" }, - "examples": { - "default": { "$ref": "#/components/examples/api-overview" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "meta", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/networks/{owner}/{repo}/events": { - "get": { - "summary": "List public events for a network of repositories", - "description": "", - "tags": ["activity"], - "operationId": "activity/list-public-events-for-repo-network", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-public-events-for-a-network-of-repositories" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/event" } - } - } - } - }, - "301": { "$ref": "#/components/responses/moved_permanently" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/notifications": { - "get": { - "summary": "List notifications for the authenticated user", - "description": "List all notifications for the current user, sorted by most recently updated.", - "tags": ["activity"], - "operationId": "activity/list-notifications-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/all" }, - { "$ref": "#/components/parameters/participating" }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/before" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/thread" } - }, - "examples": { - "default": { "$ref": "#/components/examples/thread-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "notifications" - }, - "x-octokit": {} - }, - "put": { - "summary": "Mark notifications as read", - "description": "Marks all notifications as \"read\" removes it from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as \"read.\" To check whether any \"unread\" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`.", - "tags": ["activity"], - "operationId": "activity/mark-notifications-as-read", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#mark-notifications-as-read" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "last_read_at": { - "description": "Describes the last point that notifications were checked.", - "type": "string", - "format": "date-time" - }, - "read": { - "description": "Whether the notification has been read.", - "type": "boolean" - } - } - } - } - } - }, - "responses": { - "202": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { "message": { "type": "string" } } - } - } - } - }, - "205": { "description": "response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "notifications" - }, - "x-octokit": {} - } - }, - "/notifications/threads/{thread_id}": { - "get": { - "summary": "Get a thread", - "description": "", - "tags": ["activity"], - "operationId": "activity/get-thread", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#get-a-thread" - }, - "parameters": [{ "$ref": "#/components/parameters/thread_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/thread" }, - "examples": { - "default": { "$ref": "#/components/examples/thread" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "notifications" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Mark a thread as read", - "description": "", - "tags": ["activity"], - "operationId": "activity/mark-thread-as-read", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#mark-a-thread-as-read" - }, - "parameters": [{ "$ref": "#/components/parameters/thread_id" }], - "responses": { - "205": { "description": "response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "notifications" - }, - "x-octokit": {} - } - }, - "/notifications/threads/{thread_id}/subscription": { - "get": { - "summary": "Get a thread subscription for the authenticated user", - "description": "This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/reference/activity#get-a-repository-subscription).\n\nNote that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread.", - "tags": ["activity"], - "operationId": "activity/get-thread-subscription-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#get-a-thread-subscription-for-the-authenticated-user" - }, - "parameters": [{ "$ref": "#/components/parameters/thread_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/thread-subscription" - }, - "examples": { - "default": { - "$ref": "#/components/examples/thread-subscription" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "notifications" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set a thread subscription", - "description": "If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**.\n\nYou can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored.\n\nUnsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/reference/activity#delete-a-thread-subscription) endpoint.", - "tags": ["activity"], - "operationId": "activity/set-thread-subscription", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#set-a-thread-subscription" - }, - "parameters": [{ "$ref": "#/components/parameters/thread_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "ignored": { - "description": "Whether to block all notifications from a thread.", - "default": false, - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/thread-subscription" - }, - "examples": { - "default": { - "$ref": "#/components/examples/thread-subscription" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "notifications" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a thread subscription", - "description": "Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/reference/activity#set-a-thread-subscription) endpoint and set `ignore` to `true`.", - "tags": ["activity"], - "operationId": "activity/delete-thread-subscription", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#delete-a-thread-subscription" - }, - "parameters": [{ "$ref": "#/components/parameters/thread_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "notifications" - }, - "x-octokit": {} - } - }, - "/octocat": { - "get": { - "summary": "Get Octocat", - "description": "Get the octocat as ASCII art", - "tags": ["meta"], - "operationId": "meta/get-octocat", - "parameters": [ - { - "name": "s", - "in": "query", - "description": "The words to show in Octocat's speech bubble", - "schema": { "type": "string" }, - "required": false - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/octocat-stream": { "schema": { "type": "string" } } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "meta" - }, - "x-octokit": {} - } - }, - "/organizations": { - "get": { - "summary": "List organizations", - "description": "Lists all organizations, in the order that they were created on GitHub.\n\n**Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of organizations.", - "tags": ["orgs"], - "operationId": "orgs/list", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs/#list-organizations" - }, - "parameters": [ - { "$ref": "#/components/parameters/since-org" }, - { "$ref": "#/components/parameters/per_page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/organization-simple" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-simple-items" - } - } - } - }, - "headers": { - "Link": { - "example": "; rel=\"next\"", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}": { - "get": { - "summary": "Get an organization", - "description": "To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/).\n\nGitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See \"[Authenticating with GitHub Apps](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/)\" for details. For an example response, see 'Response with GitHub plan information' below.\"", - "tags": ["orgs"], - "operationId": "orgs/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs/#get-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/organization-full" }, - "examples": { - "default-response": { - "$ref": "#/components/examples/organization-full-default-response" - }, - "response-with-git-hub-plan-information": { - "$ref": "#/components/examples/organization-full-response-with-git-hub-plan-information" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "surtur", - "note": "New repository creation permissions are available to preview. You can now use `members_can_create_public_repositories`, `members_can_create_private_repositories`, and `members_can_create_internal_repositories`. You can only allow members to create internal repositories if your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. These parameters provide more granular permissions to configure the type of repositories organization members can create.\n\nTo access these new parameters during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.surtur-preview+json\n```" - } - ], - "category": "orgs", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an organization", - "description": "**Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes).\n\nEnables an authenticated organization owner with the `admin:org` scope to update the organization's profile and member privileges.", - "tags": ["orgs"], - "operationId": "orgs/update", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs/#update-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "billing_email": { - "type": "string", - "description": "Billing email address. This address is not publicized." - }, - "company": { - "type": "string", - "description": "The company name." - }, - "email": { - "type": "string", - "description": "The publicly visible email address." - }, - "twitter_username": { - "type": "string", - "description": "The Twitter username of the company." - }, - "location": { - "type": "string", - "description": "The location." - }, - "name": { - "type": "string", - "description": "The shorthand name of the company." - }, - "description": { - "type": "string", - "description": "The description of the company." - }, - "has_organization_projects": { - "type": "boolean", - "description": "Toggles whether an organization can use organization projects." - }, - "has_repository_projects": { - "type": "boolean", - "description": "Toggles whether repositories that belong to the organization can use repository projects." - }, - "default_repository_permission": { - "type": "string", - "description": "Default permission level members have for organization repositories: \n\\* `read` - can pull, but not push to or administer this repository. \n\\* `write` - can pull and push, but not administer this repository. \n\\* `admin` - can pull, push, and administer this repository. \n\\* `none` - no permissions granted by default.", - "enum": ["read", "write", "admin", "none"], - "default": "read" - }, - "members_can_create_repositories": { - "type": "boolean", - "description": "Toggles the ability of non-admin organization members to create repositories. Can be one of: \n\\* `true` - all organization members can create repositories. \n\\* `false` - only organization owners can create repositories. \nDefault: `true` \n**Note:** A parameter can override this parameter. See `members_allowed_repository_creation_type` in this table for details. **Note:** A parameter can override this parameter. See `members_allowed_repository_creation_type` in this table for details.", - "default": true - }, - "members_can_create_internal_repositories": { - "type": "boolean", - "description": "Toggles whether organization members can create internal repositories, which are visible to all enterprise members. You can only allow members to create internal repositories if your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. Can be one of: \n\\* `true` - all organization members can create internal repositories. \n\\* `false` - only organization owners can create internal repositories. \nDefault: `true`. For more information, see \"[Restricting repository creation in your organization](https://help.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)\" in the GitHub Help documentation." - }, - "members_can_create_private_repositories": { - "type": "boolean", - "description": "Toggles whether organization members can create private repositories, which are visible to organization members with permission. Can be one of: \n\\* `true` - all organization members can create private repositories. \n\\* `false` - only organization owners can create private repositories. \nDefault: `true`. For more information, see \"[Restricting repository creation in your organization](https://help.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)\" in the GitHub Help documentation." - }, - "members_can_create_public_repositories": { - "type": "boolean", - "description": "Toggles whether organization members can create public repositories, which are visible to anyone. Can be one of: \n\\* `true` - all organization members can create public repositories. \n\\* `false` - only organization owners can create public repositories. \nDefault: `true`. For more information, see \"[Restricting repository creation in your organization](https://help.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)\" in the GitHub Help documentation." - }, - "members_allowed_repository_creation_type": { - "type": "string", - "description": "Specifies which types of repositories non-admin organization members can create. Can be one of: \n\\* `all` - all organization members can create public and private repositories. \n\\* `private` - members can create private repositories. This option is only available to repositories that are part of an organization on GitHub Enterprise Cloud. \n\\* `none` - only admin members can create repositories. \n**Note:** This parameter is deprecated and will be removed in the future. Its return value ignores internal repositories. Using this parameter overrides values set in `members_can_create_repositories`. See the parameter deprecation notice in the operation description for details.", - "enum": ["all", "private", "none"] - }, - "members_can_create_pages": { - "type": "boolean", - "description": "Toggles whether organization members can create GitHub Pages sites. Can be one of: \n\\* `true` - all organization members can create GitHub Pages sites. \n\\* `false` - no organization members can create GitHub Pages sites. Existing published sites will not be impacted. \nDefault: `true`. " - }, - "blog": { - "type": "string", - "example": "\"http://github.blog\"" - } - } - }, - "example": { - "billing_email": "mona@github.com", - "company": "GitHub", - "email": "mona@github.com", - "twitter_username": "github", - "location": "San Francisco", - "name": "github", - "description": "GitHub, the company.", - "default_repository_permission": "read", - "members_can_create_repositories": true, - "members_allowed_repository_creation_type": "all" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/organization-full" }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-full" - } - } - } - } - }, - "409": { "$ref": "#/components/responses/conflict" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { - "description": "Validation Failed", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { "$ref": "#/components/schemas/validation-error" }, - { "$ref": "#/components/schemas/validation-error-simple" } - ] - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "surtur", - "note": "New repository creation permissions are available to preview. You can now use `members_can_create_public_repositories`, `members_can_create_private_repositories`, and `members_can_create_internal_repositories`. You can only allow members to create internal repositories if your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. These parameters provide more granular permissions to configure the type of repositories organization members can create.\n\nTo access these new parameters during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.surtur-preview+json\n```" - } - ], - "category": "orgs", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/permissions": { - "get": { - "summary": "Get GitHub Actions permissions for an organization", - "description": "Gets the GitHub Actions permissions policy for repositories and allowed actions in an organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.", - "operationId": "actions/get-github-actions-permissions-organization", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-github-actions-permissions-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/actions-organization-permissions" - }, - "examples": { - "default": { - "$ref": "#/components/examples/actions-organization-permissions" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set GitHub Actions permissions for an organization", - "description": "Sets the GitHub Actions permissions policy for repositories and allowed actions in an organization.\n\nIf the organization belongs to an enterprise that has set restrictive permissions at the enterprise level, such as `allowed_actions` to `selected` actions, then you cannot override them for the organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.", - "operationId": "actions/set-github-actions-permissions-organization", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#set-github-actions-permissions-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { "204": { "description": "Empty response" } }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "enabled_repositories": { - "$ref": "#/components/schemas/enabled-repositories" - }, - "allowed_actions": { - "$ref": "#/components/schemas/allowed-actions" - } - }, - "required": ["enabled_repositories"] - }, - "example": { - "enabled_repositories": "all", - "allowed_actions": "selected" - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/permissions/repositories": { - "get": { - "summary": "List selected repositories enabled for GitHub Actions in an organization", - "description": "Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization).\"\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.", - "operationId": "actions/list-selected-repositories-enabled-github-actions-organization", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-selected-repositories-enabled-for-github-actions-in-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "number" }, - "repositories": { - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-paginated" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set selected repositories enabled for GitHub Actions in an organization", - "description": "Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization).\"\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.", - "operationId": "actions/set-selected-repositories-enabled-github-actions-organization", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#set-selected-repositories-enabled-for-github-actions-in-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { "204": { "description": "Empty response" } }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "selected_repository_ids": { - "description": "List of repository IDs to enable for GitHub Actions.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the repository." - } - } - }, - "required": ["selected_repository_ids"] - }, - "example": { "selected_repository_ids": [32, 42] } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/permissions/repositories/{repository_id}": { - "put": { - "summary": "Enable a selected repository for GitHub Actions in an organization", - "description": "Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization).\"\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.", - "operationId": "actions/enable-selected-repository-github-actions-organization", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#enable-a-selected-repository-for-github-actions-in-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/repository_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Disable a selected repository for GitHub Actions in an organization", - "description": "Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization).\"\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.", - "operationId": "actions/disable-selected-repository-github-actions-organization", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#disable-a-selected-repository-for-github-actions-in-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/repository_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/permissions/selected-actions": { - "get": { - "summary": "Get allowed actions for an organization", - "description": "Gets the selected actions that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization).\"\"\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.", - "operationId": "actions/get-allowed-actions-organization", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-allowed-actions-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/selected-actions" }, - "examples": { - "default": { - "$ref": "#/components/examples/selected-actions" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set allowed actions for an organization", - "description": "Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization).\"\n\nIf the organization belongs to an enterprise that has `selected` actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings.\n\nTo use the `patterns_allowed` setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories in the organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.", - "operationId": "actions/set-allowed-actions-organization", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#set-allowed-actions-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { "204": { "description": "Empty response" } }, - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/selected-actions" }, - "examples": { - "selected_actions": { - "$ref": "#/components/examples/selected-actions" - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runner-groups": { - "get": { - "summary": "List self-hosted runner groups for an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\nLists all self-hosted runner groups configured in an organization and inherited from an enterprise.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/list-self-hosted-runner-groups-for-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-self-hosted-runner-groups-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "number" }, - "runner_groups": { - "type": "array", - "items": { - "$ref": "#/components/schemas/runner-groups-org" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-groups-org" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a self-hosted runner group for an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud and GitHub Enterprise Server. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\nCreates a new self-hosted runner group for an organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/create-self-hosted-runner-group-for-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#create-a-self-hosted-runner-group-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the runner group.", - "type": "string" - }, - "visibility": { - "description": "Visibility of a runner group. You can select all repositories, select individual repositories, or limit access to private repositories. Can be one of: `all`, `selected`, or `private`.", - "type": "string", - "enum": ["selected", "all", "private"], - "default": "all" - }, - "selected_repository_ids": { - "description": "List of repository IDs that can access the runner group.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the repository." - } - }, - "runners": { - "description": "List of runner IDs to add to the runner group.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the runner." - } - } - }, - "required": ["name"] - }, - "example": { - "name": "Expensive hardware runners", - "visibility": "selected", - "selected_repository_ids": [32, 91], - "runners": [9, 2] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/runner-groups-org" }, - "examples": { - "default": { "$ref": "#/components/examples/runner-group" } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runner-groups/{runner_group_id}": { - "get": { - "summary": "Get a self-hosted runner group for an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\nGets a specific self-hosted runner group for an organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/get-self-hosted-runner-group-for-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-group-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/runner-groups-org" }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-group-item" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a self-hosted runner group for an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\nUpdates the `name` and `visibility` of a self-hosted runner group in an organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/update-self-hosted-runner-group-for-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#update-a-self-hosted-runner-group-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the runner group.", - "type": "string" - }, - "visibility": { - "description": "Visibility of a runner group. You can select all repositories, select individual repositories, or all private repositories. Can be one of: `all`, `selected`, or `private`.", - "type": "string", - "enum": ["selected", "all", "private"] - } - } - }, - "example": { - "name": "Expensive hardware runners", - "visibility": "selected" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/runner-groups-org" }, - "examples": { - "default": { "$ref": "#/components/examples/runner-group" } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a self-hosted runner group from an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\nDeletes a self-hosted runner group for an organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/delete-self-hosted-runner-group-from-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-group-from-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": { - "get": { - "summary": "List repository access to a self-hosted runner group in an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud and GitHub Enterprise Server. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\nLists the repositories with access to a self-hosted runner group configured in an organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/list-repo-access-to-self-hosted-runner-group-in-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-repository-access-to-a-self-hosted-runner-group-in-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "number" }, - "repositories": { - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-paginated" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set repository access for a self-hosted runner group in an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\nReplaces the list of repositories that have access to a self-hosted runner group configured in an organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/set-repo-access-to-self-hosted-runner-group-in-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#set-repository-access-to-a-self-hosted-runner-group-in-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "selected_repository_ids": { - "description": "List of repository IDs that can access the runner group.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the repository." - } - } - }, - "required": ["selected_repository_ids"] - }, - "example": { "selected_repository_ids": [32, 91] } - } - } - }, - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": { - "put": { - "summary": "Add repository access to a self-hosted runner group in an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\n\nAdds a repository to the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see \"[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization).\"\n\nYou must authenticate using an access token with the `admin:org`\nscope to use this endpoint.", - "operationId": "actions/add-repo-access-to-self-hosted-runner-group-in-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#add-repository-acess-to-a-self-hosted-runner-group-in-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/repository_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove repository access to a self-hosted runner group in an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\n\nRemoves a repository from the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see \"[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization).\"\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/remove-repo-access-to-self-hosted-runner-group-in-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#remove-repository-access-to-a-self-hosted-runner-group-in-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/repository_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners": { - "get": { - "summary": "List self-hosted runners in a group for an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\nLists self-hosted runners that are in a specific organization group.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/list-self-hosted-runners-in-group-for-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-self-hosted-runners-in-a-group-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "number" }, - "runners": { - "type": "array", - "items": { "$ref": "#/components/schemas/runner" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set self-hosted runners in a group for an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\nReplaces the list of self-hosted runners that are part of an organization runner group.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/set-self-hosted-runners-in-group-for-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "runners": { - "description": "List of runner IDs to add to the runner group.", - "type": "array", - "items": { - "type": "integer", - "description": "Unique identifier of the runner." - } - } - }, - "required": ["runners"] - }, - "example": { "runners": [9, 2] } - } - } - }, - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": { - "put": { - "summary": "Add a self-hosted runner to a group for an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\n\nAdds a self-hosted runner to a runner group configured in an organization.\n\nYou must authenticate using an access token with the `admin:org`\nscope to use this endpoint.", - "operationId": "actions/add-self-hosted-runner-to-group-for-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#add-a-self-hosted-runner-to-a-group-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove a self-hosted runner from a group for an organization", - "description": "The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see \"[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products).\"\n\n\nRemoves a self-hosted runner from a group configured in an organization. The runner is then returned to the default group.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "operationId": "actions/remove-self-hosted-runner-from-group-for-org", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_group_id" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runner-groups" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runners": { - "get": { - "summary": "List self-hosted runners for an organization", - "description": "Lists all self-hosted runners configured in an organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-self-hosted-runners-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "runners": { - "type": "array", - "items": { "$ref": "#/components/schemas/runner" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runners/downloads": { - "get": { - "summary": "List runner applications for an organization", - "description": "Lists binaries for the runner application that you can download and run.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-runner-applications-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-runner-applications-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/runner-application" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-application-items" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runners/registration-token": { - "post": { - "summary": "Create a registration token for an organization", - "description": "Returns a token that you can pass to the `config` script. The token expires after one hour.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.\n\n#### Example using registration token\n\nConfigure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint.\n\n```\n./config.sh --url https://github.com/octo-org --token TOKEN\n```", - "tags": ["actions"], - "operationId": "actions/create-registration-token-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#create-a-registration-token-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authentication-token" - }, - "examples": { - "default": { - "$ref": "#/components/examples/authentication-token" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runners/remove-token": { - "post": { - "summary": "Create a remove token for an organization", - "description": "Returns a token that you can pass to the `config` script to remove a self-hosted runner from an organization. The token expires after one hour.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.\n\n#### Example using remove token\n\nTo remove your self-hosted runner from an organization, replace `TOKEN` with the remove token provided by this\nendpoint.\n\n```\n./config.sh remove --token TOKEN\n```", - "tags": ["actions"], - "operationId": "actions/create-remove-token-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#create-a-remove-token-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authentication-token" - }, - "examples": { - "default": { - "$ref": "#/components/examples/authentication-token-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/runners/{runner_id}": { - "get": { - "summary": "Get a self-hosted runner for an organization", - "description": "Gets a specific self-hosted runner configured in an organization.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-self-hosted-runner-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/runner" }, - "examples": { - "default": { "$ref": "#/components/examples/runner" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a self-hosted runner from an organization", - "description": "Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists.\n\nYou must authenticate using an access token with the `admin:org` scope to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/delete-self-hosted-runner-from-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-from-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/secrets": { - "get": { - "summary": "List organization secrets", - "description": "Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-org-secrets", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-organization-secrets" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "secrets": { - "type": "array", - "items": { - "$ref": "#/components/schemas/organization-actions-secret" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-actions-secret-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/secrets/public-key": { - "get": { - "summary": "Get an organization public key", - "description": "Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-org-public-key", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-an-organization-public-key" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/actions-public-key" }, - "examples": { - "default": { - "$ref": "#/components/examples/actions-public-key" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/secrets/{secret_name}": { - "get": { - "summary": "Get an organization secret", - "description": "Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-org-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-an-organization-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/secret_name" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/organization-actions-secret" - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-actions-secret" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - }, - "put": { - "summary": "Create or update an organization secret", - "description": "Creates or updates an organization secret with an encrypted value. Encrypt your secret using\n[LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access\ntoken with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to\nuse this endpoint.\n\n#### Example encrypting a secret using Node.js\n\nEncrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library.\n\n```\nconst sodium = require('tweetsodium');\n\nconst key = \"base64-encoded-public-key\";\nconst value = \"plain-text-secret\";\n\n// Convert the message and key to Uint8Array's (Buffer implements that interface)\nconst messageBytes = Buffer.from(value);\nconst keyBytes = Buffer.from(key, 'base64');\n\n// Encrypt using LibSodium.\nconst encryptedBytes = sodium.seal(messageBytes, keyBytes);\n\n// Base64 the encrypted secret\nconst encrypted = Buffer.from(encryptedBytes).toString('base64');\n\nconsole.log(encrypted);\n```\n\n\n#### Example encrypting a secret using Python\n\nEncrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/stable/public/#nacl-public-sealedbox) with Python 3.\n\n```\nfrom base64 import b64encode\nfrom nacl import encoding, public\n\ndef encrypt(public_key: str, secret_value: str) -> str:\n \"\"\"Encrypt a Unicode string using the public key.\"\"\"\n public_key = public.PublicKey(public_key.encode(\"utf-8\"), encoding.Base64Encoder())\n sealed_box = public.SealedBox(public_key)\n encrypted = sealed_box.encrypt(secret_value.encode(\"utf-8\"))\n return b64encode(encrypted).decode(\"utf-8\")\n```\n\n#### Example encrypting a secret using C#\n\nEncrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package.\n\n```\nvar secretValue = System.Text.Encoding.UTF8.GetBytes(\"mySecret\");\nvar publicKey = Convert.FromBase64String(\"2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU=\");\n\nvar sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);\n\nConsole.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));\n```\n\n#### Example encrypting a secret using Ruby\n\nEncrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem.\n\n```ruby\nrequire \"rbnacl\"\nrequire \"base64\"\n\nkey = Base64.decode64(\"+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=\")\npublic_key = RbNaCl::PublicKey.new(key)\n\nbox = RbNaCl::Boxes::Sealed.from_public_key(public_key)\nencrypted_secret = box.encrypt(\"my_secret\")\n\n# Print the base64 encoded secret\nputs Base64.strict_encode64(encrypted_secret)\n```", - "tags": ["actions"], - "operationId": "actions/create-or-update-org-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/secret_name" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "encrypted_value": { - "type": "string", - "description": "Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/reference/actions#get-an-organization-public-key) endpoint." - }, - "key_id": { - "type": "string", - "description": "ID of the key you used to encrypt the secret." - }, - "visibility": { - "type": "string", - "description": "Configures the access that repositories have to the organization secret. Can be one of: \n\\- `all` - All repositories in an organization can access the secret. \n\\- `private` - Private repositories in an organization can access the secret. \n\\- `selected` - Only specific repositories can access the secret.", - "enum": ["all", "private", "selected"] - }, - "selected_repository_ids": { - "type": "array", - "description": "An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret) endpoints.", - "items": { "type": "string" } - } - } - }, - "example": { - "encrypted_value": "****************************************************************************************", - "key_id": "012345678912345678", - "visibility": "selected", - "selected_repository_ids": ["1296269", "1296280"] - } - } - } - }, - "responses": { - "201": { "description": "Response when creating a secret" }, - "204": { "description": "Response when updating a secret" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete an organization secret", - "description": "Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/delete-org-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#delete-an-organization-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/secret_name" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/secrets/{secret_name}/repositories": { - "get": { - "summary": "List selected repositories for an organization secret", - "description": "Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-selected-repos-for-org-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/secret_name" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "repositories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/minimal-repository" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/public-repository-paginated" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set selected repositories for an organization secret", - "description": "Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/set-selected-repos-for-org-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/secret_name" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "selected_repository_ids": { - "type": "array", - "description": "An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret) endpoints.", - "items": { "type": "integer" } - } - } - }, - "example": { "selected_repository_ids": [64780797] } - } - } - }, - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": { - "put": { - "summary": "Add selected repository to an organization secret", - "description": "Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/add-selected-repo-to-org-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#add-selected-repository-to-an-organization-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/secret_name" }, - { - "name": "repository_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - ], - "responses": { - "204": { - "description": "Response when repository was added to the selected list" - }, - "409": { - "description": "Response when visibility type is not set to selected" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove selected repository from an organization secret", - "description": "Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/remove-selected-repo-from-org-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/secret_name" }, - { - "name": "repository_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - ], - "responses": { - "204": { - "description": "Response when repository was removed from the selected list" - }, - "409": { - "description": "Response when visibility type not set to selected" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/blocks": { - "get": { - "summary": "List users blocked by an organization", - "description": "List the users blocked by an organization.", - "tags": ["orgs"], - "operationId": "orgs/list-blocked-users", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#list-users-blocked-by-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - } - }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "blocking" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/blocks/{username}": { - "get": { - "summary": "Check if a user is blocked by an organization", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/check-blocked-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#check-if-a-user-is-blocked-by-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "If the user is blocked:" }, - "404": { - "description": "If the user is not blocked:", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "blocking" - }, - "x-octokit": {} - }, - "put": { - "summary": "Block a user from an organization", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/block-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#block-a-user-from-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "blocking" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Unblock a user from an organization", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/unblock-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#unblock-a-user-from-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "blocking" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/credential-authorizations": { - "get": { - "summary": "List SAML SSO authorizations for an organization", - "description": "Listing and deleting credential authorizations is available to organizations with GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products).\n\nAn authenticated organization owner with the `read:org` scope can list all credential authorizations for an organization that uses SAML single sign-on (SSO). The credentials are either personal access tokens or SSH keys that organization members have authorized for the organization. For more information, see [About authentication with SAML single sign-on](https://help.github.com/en/articles/about-authentication-with-saml-single-sign-on).", - "tags": ["orgs"], - "operationId": "orgs/list-saml-sso-authorizations", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs/#list-saml-sso-authorizations-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/credential-authorization" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/credential-authorization-items" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/credential-authorizations/{credential_id}": { - "delete": { - "summary": "Remove a SAML SSO authorization for an organization", - "description": "Listing and deleting credential authorizations is available to organizations with GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products).\n\nAn authenticated organization owner with the `admin:org` scope can remove a credential authorization for an organization that uses SAML SSO. Once you remove someone's credential authorization, they will need to create a new personal access token or SSH key and authorize it for the organization they want to access.", - "tags": ["orgs"], - "operationId": "orgs/remove-saml-sso-authorization", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs/#remove-a-saml-sso-authorization-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { - "name": "credential_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/events": { - "get": { - "summary": "List public organization events", - "description": "", - "tags": ["activity"], - "operationId": "activity/list-public-org-events", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-public-organization-events" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/event" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/hooks": { - "get": { - "summary": "List organization webhooks", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/list-webhooks", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#list-organization-webhooks" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/org-hook" } - }, - "examples": { - "default": { "$ref": "#/components/examples/org-hook-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "webhooks" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create an organization webhook", - "description": "Here's how you can create a hook that posts payloads in JSON format:", - "tags": ["orgs"], - "operationId": "orgs/create-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#create-an-organization-webhook" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Must be passed as \"web\"." - }, - "config": { - "type": "object", - "description": "Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/orgs#create-hook-config-params).", - "properties": { - "url": { - "$ref": "#/components/schemas/webhook-config-url" - }, - "content_type": { - "$ref": "#/components/schemas/webhook-config-content-type" - }, - "secret": { - "$ref": "#/components/schemas/webhook-config-secret" - }, - "insecure_ssl": { - "$ref": "#/components/schemas/webhook-config-insecure-ssl" - }, - "username": { - "type": "string", - "example": "\"kdaigle\"" - }, - "password": { - "type": "string", - "example": "\"password\"" - } - }, - "required": ["url"] - }, - "events": { - "type": "array", - "description": "Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for.", - "default": ["push"], - "items": { "type": "string" } - }, - "active": { - "type": "boolean", - "description": "Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.", - "default": true - } - }, - "required": ["name", "config"] - }, - "example": { - "name": "web", - "active": true, - "events": ["push", "pull_request"], - "config": { - "url": "http://example.com/webhook", - "content_type": "json" - } - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/org-hook" }, - "examples": { - "default": { "$ref": "#/components/examples/org-hook" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/orgs/octocat/hooks/1", - "schema": { "type": "string" } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/hooks/{hook_id}": { - "get": { - "summary": "Get an organization webhook", - "description": "Returns a webhook configured in an organization. To get only the webhook `config` properties, see \"[Get a webhook configuration for an organization](/rest/reference/orgs#get-a-webhook-configuration-for-an-organization).\"", - "tags": ["orgs"], - "operationId": "orgs/get-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#get-an-organization-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/org-hook" }, - "examples": { - "default": { "$ref": "#/components/examples/org-hook" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "webhooks" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an organization webhook", - "description": "Updates a webhook configured in an organization. When you update a webhook, the `secret` will be overwritten. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use \"[Update a webhook configuration for an organization](/rest/reference/orgs#update-a-webhook-configuration-for-an-organization).\"", - "tags": ["orgs"], - "operationId": "orgs/update-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#update-an-organization-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "config": { - "type": "object", - "description": "Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/orgs#update-hook-config-params).", - "properties": { - "url": { - "$ref": "#/components/schemas/webhook-config-url" - }, - "content_type": { - "$ref": "#/components/schemas/webhook-config-content-type" - }, - "secret": { - "$ref": "#/components/schemas/webhook-config-secret" - }, - "insecure_ssl": { - "$ref": "#/components/schemas/webhook-config-insecure-ssl" - } - }, - "required": ["url"] - }, - "events": { - "type": "array", - "description": "Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for.", - "default": ["push"], - "items": { "type": "string" } - }, - "active": { - "type": "boolean", - "description": "Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.", - "default": true - }, - "name": { "type": "string", "example": "\"web\"" } - } - }, - "example": { "active": true, "events": ["pull_request"] } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/org-hook" }, - "examples": { - "default": { "$ref": "#/components/examples/org-hook-2" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "webhooks" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete an organization webhook", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/delete-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#delete-an-organization-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/hooks/{hook_id}/config": { - "get": { - "summary": "Get a webhook configuration for an organization", - "description": "Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use \"[Get an organization webhook ](/rest/reference/orgs#get-an-organization-webhook).\"\n\nAccess tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:read` permission.", - "tags": ["orgs"], - "operationId": "orgs/get-webhook-config-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs#get-a-webhook-configuration-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "responses": { - "200": { - "description": "Default response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/webhook-config" }, - "examples": { - "default": { "$ref": "#/components/examples/webhook-config" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "webhooks" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a webhook configuration for an organization", - "description": "Updates the webhook configuration for an organization. To update more information about the webhook, including the `active` state and `events`, use \"[Update an organization webhook ](/rest/reference/orgs#update-an-organization-webhook).\"\n\nAccess tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:write` permission.", - "tags": ["orgs"], - "operationId": "orgs/update-webhook-config-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs#update-a-webhook-configuration-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "url": { "$ref": "#/components/schemas/webhook-config-url" }, - "content_type": { - "$ref": "#/components/schemas/webhook-config-content-type" - }, - "secret": { - "$ref": "#/components/schemas/webhook-config-secret" - }, - "insecure_ssl": { - "$ref": "#/components/schemas/webhook-config-insecure-ssl" - } - }, - "example": { - "content_type": "json", - "insecure_ssl": "0", - "secret": "********", - "url": "https://example.com/webhook" - } - } - } - } - }, - "responses": { - "200": { - "description": "Default response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/webhook-config" }, - "examples": { - "default": { "$ref": "#/components/examples/webhook-config" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/hooks/{hook_id}/pings": { - "post": { - "summary": "Ping an organization webhook", - "description": "This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook.", - "tags": ["orgs"], - "operationId": "orgs/ping-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#ping-an-organization-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/installation": { - "get": { - "summary": "Get an organization installation for the authenticated app", - "description": "Enables an authenticated GitHub App to find the organization's installation information.\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/get-org-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#get-an-organization-installation-for-the-authenticated-app" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/installation" }, - "examples": { - "default": { "$ref": "#/components/examples/installation" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/installations": { - "get": { - "summary": "List app installations for an organization", - "description": "Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint.", - "tags": ["orgs"], - "operationId": "orgs/list-app-installations", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs/#list-app-installations-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "installations": { - "type": "array", - "items": { "$ref": "#/components/schemas/installation" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/installation-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/interaction-limits": { - "get": { - "summary": "Get interaction restrictions for an organization", - "description": "Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response.", - "tags": ["interactions"], - "operationId": "interactions/get-restrictions-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/interaction-limit-response" - }, - "examples": { - "default": { - "$ref": "#/components/examples/interaction-limit-response" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "interactions", - "subcategory": "orgs" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set interaction restrictions for an organization", - "description": "Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization.", - "tags": ["interactions"], - "operationId": "interactions/set-restrictions-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/interaction-limit" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/interaction-limit-response" - }, - "examples": { - "default": { - "$ref": "#/components/examples/interaction-limit-response" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "interactions", - "subcategory": "orgs" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove interaction restrictions for an organization", - "description": "Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions.", - "tags": ["interactions"], - "operationId": "interactions/remove-restrictions-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "interactions", - "subcategory": "orgs" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/invitations": { - "get": { - "summary": "List pending organization invitations", - "description": "The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.", - "tags": ["orgs"], - "operationId": "orgs/list-pending-invitations", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#list-pending-organization-invitations" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/organization-invitation" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-invitation-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create an organization invitation", - "description": "Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner.\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.", - "tags": ["orgs"], - "operationId": "orgs/create-invitation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#create-an-organization-invitation" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "invitee_id": { - "type": "integer", - "description": "**Required unless you provide `email`**. GitHub user ID for the person you are inviting." - }, - "email": { - "type": "string", - "description": "**Required unless you provide `invitee_id`**. Email address of the person you are inviting, which can be an existing GitHub user." - }, - "role": { - "type": "string", - "description": "Specify role for new member. Can be one of: \n\\* `admin` - Organization owners with full administrative rights to the organization and complete access to all repositories and teams. \n\\* `direct_member` - Non-owner organization members with ability to see other members and join teams by invitation. \n\\* `billing_manager` - Non-owner organization members with ability to manage the billing settings of your organization.", - "enum": ["admin", "direct_member", "billing_manager"], - "default": "direct_member" - }, - "team_ids": { - "type": "array", - "description": "Specify IDs for the teams you want to invite new members to.", - "items": { "type": "integer" } - } - } - }, - "example": { - "email": "octocat@github.com", - "role": "direct_member", - "team_ids": [12, 26] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/organization-invitation" - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-invitation" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/invitations/{invitation_id}/teams": { - "get": { - "summary": "List organization invitation teams", - "description": "List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner.", - "tags": ["orgs"], - "operationId": "orgs/list-invitation-teams", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#list-organization-invitation-teams" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/invitation_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "examples": { - "default": { "$ref": "#/components/examples/team-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/issues": { - "get": { - "summary": "List organization issues assigned to the authenticated user", - "description": "List issues in an organization assigned to the authenticated user.\n\n**Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this\nreason, \"Issues\" endpoints may return both issues and pull requests in the response. You can identify pull requests by\nthe `pull_request` key. Be aware that the `id` of a pull request returned from \"Issues\" endpoints will be an _issue id_. To find out the pull\nrequest id, use the \"[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)\" endpoint.", - "tags": ["issues"], - "operationId": "issues/list-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/issues/#list-organization-issues-assigned-to-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { - "name": "filter", - "description": "Indicates which sorts of issues to return. Can be one of: \n\\* `assigned`: Issues assigned to you \n\\* `created`: Issues created by you \n\\* `mentioned`: Issues mentioning you \n\\* `subscribed`: Issues you're subscribed to updates for \n\\* `all`: All issues the authenticated user can see, regardless of participation or creation", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["assigned", "created", "mentioned", "subscribed", "all"], - "default": "assigned" - } - }, - { - "name": "state", - "description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["open", "closed", "all"], - "default": "open" - } - }, - { "$ref": "#/components/parameters/labels" }, - { - "name": "sort", - "description": "What to sort results by. Can be either `created`, `updated`, `comments`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["created", "updated", "comments"], - "default": "created" - } - }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/issue" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-with-repo-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "issues", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/members": { - "get": { - "summary": "List organization members", - "description": "List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned.", - "tags": ["orgs"], - "operationId": "orgs/list-members", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#list-organization-members" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { - "name": "filter", - "description": "Filter members returned in the list. Can be one of: \n\\* `2fa_disabled` - Members without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled. Available for organization owners. \n\\* `all` - All members the authenticated user can see.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["2fa_disabled", "all"], - "default": "all" - } - }, - { - "name": "role", - "description": "Filter members returned by their role. Can be one of: \n\\* `all` - All members of the organization, regardless of role. \n\\* `admin` - Organization owners. \n\\* `member` - Non-owner organization members.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["all", "admin", "member"], - "default": "all" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "302": { - "description": "Response if requester is not an organization member", - "headers": { - "Location": { - "example": "https://api.github.com/orgs/github/public_members", - "schema": { "type": "string" } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/members/{username}": { - "get": { - "summary": "Check organization membership for a user", - "description": "Check if a user is, publicly or privately, a member of the organization.", - "tags": ["orgs"], - "operationId": "orgs/check-membership-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#check-organization-membership-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { - "description": "Response if requester is an organization member and user is a member" - }, - "302": { - "description": "Response if requester is not an organization member", - "headers": { - "Location": { - "example": "https://api.github.com/orgs/github/public_members/pezra", - "schema": { "type": "string" } - } - } - }, - "404": { - "description": "Response if requester is an organization member and user is not a member" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove an organization member", - "description": "Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories.", - "tags": ["orgs"], - "operationId": "orgs/remove-member", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#remove-an-organization-member" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/memberships/{username}": { - "get": { - "summary": "Get organization membership for a user", - "description": "In order to get a user's membership with an organization, the authenticated user must be an organization member.", - "tags": ["orgs"], - "operationId": "orgs/get-membership-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/org-membership" }, - "examples": { - "response-if-user-has-an-active-admin-membership-with-organization": { - "$ref": "#/components/examples/org-membership-response-if-user-has-an-active-admin-membership-with-organization" - }, - "response-if-user-has-an-active-membership-with-organization": { - "$ref": "#/components/examples/org-membership-response-if-user-has-an-active-membership-with-organization" - }, - "response-if-user-has-a-pending-membership-with-organization": { - "$ref": "#/components/examples/org-membership-response-if-user-has-a-pending-membership-with-organization" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set organization membership for a user", - "description": "Only authenticated organization owners can add a member to the organization or update the member's role.\n\n* If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user) will be `pending` until they accept the invitation.\n \n* Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent.\n\n**Rate limits**\n\nTo prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period.", - "tags": ["orgs"], - "operationId": "orgs/set-membership-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#set-organization-membership-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "role": { - "type": "string", - "description": "The role to give the user in the organization. Can be one of: \n\\* `admin` - The user will become an owner of the organization. \n\\* `member` - The user will become a non-owner member of the organization.", - "enum": ["admin", "member"], - "default": "member" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/org-membership" }, - "examples": { - "response-if-user-was-previously-unaffiliated-with-organization": { - "$ref": "#/components/examples/org-membership-response-if-user-was-previously-unaffiliated-with-organization" - }, - "response-if-user-already-had-membership-with-organization": { - "$ref": "#/components/examples/org-membership-response-if-user-already-had-membership-with-organization" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove organization membership for a user", - "description": "In order to remove a user's membership with an organization, the authenticated user must be an organization owner.\n\nIf the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases.", - "tags": ["orgs"], - "operationId": "orgs/remove-membership-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#remove-organization-membership-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/migrations": { - "get": { - "summary": "List organization migrations", - "description": "Lists the most recent migrations.", - "tags": ["migrations"], - "operationId": "migrations/list-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#list-organization-migrations" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/migration" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/migration-with-short-org-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "orgs" - }, - "x-octokit": {} - }, - "post": { - "summary": "Start an organization migration", - "description": "Initiates the generation of a migration archive.", - "tags": ["migrations"], - "operationId": "migrations/start-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#start-an-organization-migration" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "repositories": { - "type": "array", - "description": "A list of arrays indicating which repositories should be migrated.", - "items": { "type": "string" } - }, - "lock_repositories": { - "type": "boolean", - "description": "Indicates whether repositories should be locked (to prevent manipulation) while migrating data.", - "default": false - }, - "exclude_attachments": { - "type": "boolean", - "description": "Indicates whether attachments should be excluded from the migration (to reduce migration archive file size).", - "default": false - }, - "exclude": { "type": "array", "items": { "type": "string" } } - }, - "required": ["repositories"] - }, - "example": { - "repositories": ["github/Hello-World"], - "lock_repositories": true - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/migration" }, - "examples": { - "default": { - "$ref": "#/components/examples/migration-with-short-org-2" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "migrations", - "subcategory": "orgs" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/migrations/{migration_id}": { - "get": { - "summary": "Get an organization migration status", - "description": "Fetches the status of a migration.\n\nThe `state` of a migration can be one of the following values:\n\n* `pending`, which means the migration hasn't started yet.\n* `exporting`, which means the migration is in progress.\n* `exported`, which means the migration finished successfully.\n* `failed`, which means the migration failed.", - "tags": ["migrations"], - "operationId": "migrations/get-status-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#get-an-organization-migration-status" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/migration_id" } - ], - "responses": { - "200": { - "description": "* `pending`, which means the migration hasn't started yet.\n* `exporting`, which means the migration is in progress.\n* `exported`, which means the migration finished successfully.\n* `failed`, which means the migration failed.", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/migration" }, - "examples": { - "default": { - "$ref": "#/components/examples/migration-with-short-org" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "orgs" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/migrations/{migration_id}/archive": { - "get": { - "summary": "Download an organization migration archive", - "description": "Fetches the URL to a migration archive.", - "tags": ["migrations"], - "operationId": "migrations/download-archive-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#download-an-organization-migration-archive" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/migration_id" } - ], - "responses": { - "302": { "description": "response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "orgs" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete an organization migration archive", - "description": "Deletes a previous migration archive. Migration archives are automatically deleted after seven days.", - "tags": ["migrations"], - "operationId": "migrations/delete-archive-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#delete-an-organization-migration-archive" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/migration_id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "orgs" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": { - "delete": { - "summary": "Unlock an organization repository", - "description": "Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/reference/repos#delete-a-repository) when the migration is complete and you no longer need the source data.", - "tags": ["migrations"], - "operationId": "migrations/unlock-repo-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#unlock-an-organization-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/migration_id" }, - { "$ref": "#/components/parameters/repo_name" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "orgs" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/migrations/{migration_id}/repositories": { - "get": { - "summary": "List repositories in an organization migration", - "description": "List all the repositories for this organization migration.", - "tags": ["migrations"], - "operationId": "migrations/list-repos-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#list-repositories-in-an-organization-migration" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/migration_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/minimal-repository-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "orgs" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/outside_collaborators": { - "get": { - "summary": "List outside collaborators for an organization", - "description": "List all users who are outside collaborators of an organization.", - "tags": ["orgs"], - "operationId": "orgs/list-outside-collaborators", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#list-outside-collaborators-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { - "name": "filter", - "description": "Filter the list of outside collaborators. Can be one of: \n\\* `2fa_disabled`: Outside collaborators without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled. \n\\* `all`: All outside collaborators.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["2fa_disabled", "all"], - "default": "all" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "outside-collaborators" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/outside_collaborators/{username}": { - "put": { - "summary": "Convert an organization member to outside collaborator", - "description": "When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see \"[Converting an organization member to an outside collaborator](https://help.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)\".", - "tags": ["orgs"], - "operationId": "orgs/convert-member-to-outside-collaborator", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#convert-an-organization-member-to-outside-collaborator" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "202": { "description": "User is getting converted asynchronously" }, - "204": { "description": "User was converted" }, - "403": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - }, - "examples": { - "response-if-user-is-the-last-owner-of-the-organization": { - "summary": "Response if user is the last owner of the organization", - "value": { - "message": "Cannot convert the last owner to an outside collaborator", - "documentation_url": "https://docs.github.com/rest/reference/orgs#convert-member-to-outside-collaborator" - } - }, - "response-if-user-is-not-a-member-of-the-organization": { - "summary": "Response if user is not a member of the organization", - "value": { - "message": " is not a member of the organization.", - "documentation_url": "https://docs.github.com/rest/reference/orgs#convert-member-to-outside-collaborator" - } - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "outside-collaborators" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove outside collaborator from an organization", - "description": "Removing a user from this list will remove them from all the organization's repositories.", - "tags": ["orgs"], - "operationId": "orgs/remove-outside-collaborator", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#remove-outside-collaborator-from-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "422": { - "description": "Response if user is a member of the organization", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - }, - "examples": { - "response-if-user-is-a-member-of-the-organization": { - "value": { - "message": "You cannot specify an organization member to remove as an outside collaborator.", - "documentation_url": "https://docs.github.com/rest/reference/orgs#remove-outside-collaborator" - } - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "outside-collaborators" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/projects": { - "get": { - "summary": "List organization projects", - "description": "Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.", - "tags": ["projects"], - "operationId": "projects/list-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/projects/#list-organization-projects" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { - "name": "state", - "description": "Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["open", "closed", "all"], - "default": "open" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/project" } - }, - "examples": { - "default": { "$ref": "#/components/examples/project-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create an organization project", - "description": "Creates an organization project board. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.", - "tags": ["projects"], - "operationId": "projects/create-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/projects/#create-an-organization-project" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the project." - }, - "body": { - "type": "string", - "description": "The description of the project." - } - }, - "required": ["name"] - }, - "example": { - "name": "Organization Roadmap", - "body": "High-level roadmap for the upcoming year." - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project" }, - "examples": { - "default": { "$ref": "#/components/examples/project-2" } - } - } - } - }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/public_members": { - "get": { - "summary": "List public organization members", - "description": "Members of an organization can choose to have their membership publicized or not.", - "tags": ["orgs"], - "operationId": "orgs/list-public-members", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#list-public-organization-members" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/public_members/{username}": { - "get": { - "summary": "Check public organization membership for a user", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/check-public-membership-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#check-public-organization-membership-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Response if user is a public member" }, - "404": { "description": "Response if user is not a public member" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set public organization membership for the authenticated user", - "description": "The user can publicize their own membership. (A user cannot publicize the membership for another user.)\n\nNote that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"", - "tags": ["orgs"], - "operationId": "orgs/set-public-membership-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#set-public-organization-membership-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove public organization membership for the authenticated user", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/remove-public-membership-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#remove-public-organization-membership-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/repos": { - "get": { - "summary": "List organization repositories", - "description": "Lists repositories for the specified organization.", - "tags": ["repos"], - "operationId": "repos/list-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#list-organization-repositories" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { - "name": "type", - "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "all", - "public", - "private", - "forks", - "sources", - "member", - "internal" - ] - } - }, - { - "name": "sort", - "description": "Can be one of `created`, `updated`, `pushed`, `full_name`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["created", "updated", "pushed", "full_name"], - "default": "created" - } - }, - { - "name": "direction", - "description": "Can be one of `asc` or `desc`. Default: when using `full_name`: `asc`, otherwise `desc`", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["asc", "desc"] } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/minimal-repository-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "nebula", - "note": "You can set the visibility of a repository using the new `visibility` parameter in the [Repositories API](https://docs.github.com/rest/reference/repos/), and get a repository's visibility with a new response key. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes/).\n\nTo access repository visibility during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.nebula-preview+json\n```" - }, - { - "required": false, - "name": "baptiste", - "note": "The `is_template` and `template_repository` keys are currently available for developer to preview. See [Create a repository using a template](https://docs.github.com/repos#create-a-repository-using-a-template) to learn how to create template repositories. To access these new response keys during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.baptiste-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create an organization repository", - "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", - "tags": ["repos"], - "operationId": "repos/create-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#create-an-organization-repository" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the repository." - }, - "description": { - "type": "string", - "description": "A short description of the repository." - }, - "homepage": { - "type": "string", - "description": "A URL with more information about the repository." - }, - "private": { - "type": "boolean", - "description": "Either `true` to create a private repository or `false` to create a public one.", - "default": false - }, - "visibility": { - "type": "string", - "description": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", - "enum": ["public", "private", "visibility", "internal"] - }, - "has_issues": { - "type": "boolean", - "description": "Either `true` to enable issues for this repository or `false` to disable them.", - "default": true - }, - "has_projects": { - "type": "boolean", - "description": "Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.", - "default": true - }, - "has_wiki": { - "type": "boolean", - "description": "Either `true` to enable the wiki for this repository or `false` to disable it.", - "default": true - }, - "is_template": { - "type": "boolean", - "description": "Either `true` to make this repo available as a template repository or `false` to prevent it.", - "default": false - }, - "team_id": { - "type": "integer", - "description": "The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization." - }, - "auto_init": { - "type": "boolean", - "description": "Pass `true` to create an initial commit with empty README.", - "default": false - }, - "gitignore_template": { - "type": "string", - "description": "Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, \"Haskell\"." - }, - "license_template": { - "type": "string", - "description": "Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, \"mit\" or \"mpl-2.0\"." - }, - "allow_squash_merge": { - "type": "boolean", - "description": "Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.", - "default": true - }, - "allow_merge_commit": { - "type": "boolean", - "description": "Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.", - "default": true - }, - "allow_rebase_merge": { - "type": "boolean", - "description": "Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.", - "default": true - }, - "delete_branch_on_merge": { - "type": "boolean", - "description": "Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion.", - "default": false - } - }, - "required": ["name"] - }, - "example": { - "name": "Hello-World", - "description": "This is your first repository", - "homepage": "https://github.com", - "private": false, - "has_issues": true, - "has_projects": true, - "has_wiki": true - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/repository" }, - "examples": { - "default": { "$ref": "#/components/examples/repository" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World", - "schema": { "type": "string" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "nebula", - "note": "You can set the visibility of a repository using the new `visibility` parameter in the [Repositories API](https://docs.github.com/rest/reference/repos/), and get a repository's visibility with a new response key. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes/).\n\nTo access repository visibility during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.nebula-preview+json\n```" - }, - { - "required": false, - "name": "baptiste", - "note": "The `is_template` and `template_repository` keys are currently available for developer to preview. See [Create a repository using a template](https://docs.github.com/repos#create-a-repository-using-a-template) to learn how to create template repositories. To access these new response keys during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.baptiste-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/settings/billing/actions": { - "get": { - "summary": "Get GitHub Actions billing for an organization", - "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `read:org` scope.", - "operationId": "billing/get-github-actions-billing-org", - "tags": ["billing"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/billing/#get-github-actions-billing-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/actions-billing-usage" - }, - "examples": { - "default": { - "$ref": "#/components/examples/actions-billing-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "billing", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/settings/billing/packages": { - "get": { - "summary": "Get GitHub Packages billing for an organization", - "description": "Gets the free and paid storage usued for GitHub Packages in gigabytes.\n\nPaid minutes only apply to packages stored for private repositories. For more information, see \"[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages).\"\n\nAccess tokens must have the `read:org` scope.", - "operationId": "billing/get-github-packages-billing-org", - "tags": ["billing"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/billing/#get-github-packages-billing-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/packages-billing-usage" - }, - "examples": { - "default": { - "$ref": "#/components/examples/packages-billing-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "billing", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/settings/billing/shared-storage": { - "get": { - "summary": "Get shared storage billing for an organization", - "description": "Gets the estimated paid and estimated total storage used for GitHub Actions and Github Packages.\n\nPaid minutes only apply to packages stored for private repositories. For more information, see \"[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages).\"\n\nAccess tokens must have the `read:org` scope.", - "operationId": "billing/get-shared-storage-billing-org", - "tags": ["billing"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/billing/#get-shared-storage-billing-for-an-organization" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/combined-billing-usage" - }, - "examples": { - "default": { - "$ref": "#/components/examples/combined-billing-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "billing", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/team-sync/groups": { - "get": { - "summary": "List IdP groups for an organization", - "description": "Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nList IdP groups available in an organization. You can limit your page results using the `per_page` parameter. GitHub generates a url-encoded `page` token using a cursor value for where the next page begins. For more information on cursor pagination, see \"[Offset and Cursor Pagination explained](https://dev.to/jackmarchant/offset-and-cursor-pagination-explained-b89).\"\n\nThe `per_page` parameter provides pagination for a list of IdP groups the authenticated user can access in an organization. For example, if the user `octocat` wants to see two groups per page in `octo-org` via cURL, it would look like this:", - "tags": ["teams"], - "operationId": "teams/list-idp-groups-for-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-idp-groups-for-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/group-mapping" }, - "examples": { - "default": { "$ref": "#/components/examples/group-mapping-3" } - } - } - }, - "headers": { - "Link": { - "example": "; rel=\"next\"", - "schema": { "type": "string" } - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": "team-sync" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams": { - "get": { - "summary": "List teams", - "description": "Lists all teams in an organization that are visible to the authenticated user.", - "tags": ["teams"], - "operationId": "teams/list", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#list-teams" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "examples": { - "default": { "$ref": "#/components/examples/team-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a team", - "description": "To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see \"[Setting team creation permissions](https://help.github.com/en/articles/setting-team-creation-permissions-in-your-organization).\"\n\nWhen you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see \"[About teams](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/about-teams)\".", - "tags": ["teams"], - "operationId": "teams/create", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#create-a-team" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the team." - }, - "description": { - "type": "string", - "description": "The description of the team." - }, - "maintainers": { - "type": "array", - "description": "List GitHub IDs for organization members who will become team maintainers.", - "items": { "type": "string" } - }, - "repo_names": { - "type": "array", - "description": "The full name (e.g., \"organization-name/repository-name\") of repositories to add the team to.", - "items": { "type": "string" } - }, - "privacy": { - "type": "string", - "description": "The level of privacy this team should have. The options are: \n**For a non-nested team:** \n\\* `secret` - only visible to organization owners and members of this team. \n\\* `closed` - visible to all members of this organization. \nDefault: `secret` \n**For a parent or child team:** \n\\* `closed` - visible to all members of this organization. \nDefault for child team: `closed`", - "enum": ["secret", "closed"] - }, - "permission": { - "type": "string", - "description": "**Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of: \n\\* `pull` - team members can pull, but not push to or administer newly-added repositories. \n\\* `push` - team members can pull and push, but not administer newly-added repositories. \n\\* `admin` - team members can pull, push and administer newly-added repositories.", - "enum": ["pull", "push", "admin"], - "default": "pull" - }, - "parent_team_id": { - "type": "integer", - "description": "The ID of a team to set as the parent team." - } - }, - "required": ["name"] - }, - "example": { - "name": "Justice League", - "description": "A great team", - "permission": "admin", - "privacy": "closed" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-full" }, - "examples": { - "default": { "$ref": "#/components/examples/team-full" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}": { - "get": { - "summary": "Get a team by name", - "description": "Gets a team using the team's `slug`. GitHub generates the `slug` from the team `name`.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`.", - "tags": ["teams"], - "operationId": "teams/get-by-name", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#get-a-team-by-name" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-full" }, - "examples": { - "default": { "$ref": "#/components/examples/team-full" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a team", - "description": "To edit a team, the authenticated user must either be an organization owner or a team maintainer.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`.", - "tags": ["teams"], - "operationId": "teams/update-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#update-a-team" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the team." - }, - "description": { - "type": "string", - "description": "The description of the team." - }, - "privacy": { - "type": "string", - "description": "The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. When a team is nested, the `privacy` for parent teams cannot be `secret`. The options are: \n**For a non-nested team:** \n\\* `secret` - only visible to organization owners and members of this team. \n\\* `closed` - visible to all members of this organization. \n**For a parent or child team:** \n\\* `closed` - visible to all members of this organization.", - "enum": ["secret", "closed"] - }, - "permission": { - "type": "string", - "description": "**Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of: \n\\* `pull` - team members can pull, but not push to or administer newly-added repositories. \n\\* `push` - team members can pull and push, but not administer newly-added repositories. \n\\* `admin` - team members can pull, push and administer newly-added repositories.", - "enum": ["pull", "push", "admin"], - "default": "pull" - }, - "parent_team_id": { - "type": "integer", - "description": "The ID of a team to set as the parent team." - } - }, - "required": ["name"] - }, - "example": { - "name": "new team name", - "description": "new team description", - "privacy": "closed" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-full" }, - "examples": { - "default": { "$ref": "#/components/examples/team-full" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a team", - "description": "To delete a team, the authenticated user must be an organization owner or team maintainer.\n\nIf you are an organization owner, deleting a parent team will delete all of its child teams as well.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`.", - "tags": ["teams"], - "operationId": "teams/delete-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#delete-a-team" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/discussions": { - "get": { - "summary": "List discussions", - "description": "List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`.", - "tags": ["teams"], - "operationId": "teams/list-discussions-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-discussions" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team-discussion" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "teams", - "subcategory": "discussions" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a discussion", - "description": "Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`.", - "tags": ["teams"], - "operationId": "teams/create-discussion-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#create-a-discussion" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The discussion post's title." - }, - "body": { - "type": "string", - "description": "The discussion post's body text." - }, - "private": { - "type": "boolean", - "description": "Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post.", - "default": false - } - }, - "required": ["title", "body"] - }, - "example": { - "title": "Our first team post", - "body": "Hi! This is an area for us to collaborate as a team." - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-discussion" }, - "examples": { - "default": { "$ref": "#/components/examples/team-discussion" } - } - } - } - } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "teams", - "subcategory": "discussions" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": { - "get": { - "summary": "Get a discussion", - "description": "Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.", - "tags": ["teams"], - "operationId": "teams/get-discussion-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#get-a-discussion" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-discussion" }, - "examples": { - "default": { "$ref": "#/components/examples/team-discussion" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "teams", - "subcategory": "discussions" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a discussion", - "description": "Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.", - "tags": ["teams"], - "operationId": "teams/update-discussion-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#update-a-discussion" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The discussion post's title." - }, - "body": { - "type": "string", - "description": "The discussion post's body text." - } - } - }, - "example": { "title": "Welcome to our first team post" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-discussion" }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "teams", - "subcategory": "discussions" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a discussion", - "description": "Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.", - "tags": ["teams"], - "operationId": "teams/delete-discussion-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#delete-a-discussion" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": "discussions" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": { - "get": { - "summary": "List discussion comments", - "description": "List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`.", - "tags": ["teams"], - "operationId": "teams/list-discussion-comments-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-discussion-comments" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/team-discussion-comment" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "teams", - "subcategory": "discussion-comments" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a discussion comment", - "description": "Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`.", - "tags": ["teams"], - "operationId": "teams/create-discussion-comment-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#create-a-discussion-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The discussion comment's body text." - } - }, - "required": ["body"] - }, - "example": { "body": "Do you like apples?" } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/team-discussion-comment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-comment" - } - } - } - } - } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "teams", - "subcategory": "discussion-comments" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": { - "get": { - "summary": "Get a discussion comment", - "description": "Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`.", - "tags": ["teams"], - "operationId": "teams/get-discussion-comment-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#get-a-discussion-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/team-discussion-comment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-comment" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "teams", - "subcategory": "discussion-comments" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a discussion comment", - "description": "Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`.", - "tags": ["teams"], - "operationId": "teams/update-discussion-comment-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#update-a-discussion-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The discussion comment's body text." - } - }, - "required": ["body"] - }, - "example": { "body": "Do you like pineapples?" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/team-discussion-comment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-comment-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "teams", - "subcategory": "discussion-comments" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a discussion comment", - "description": "Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`.", - "tags": ["teams"], - "operationId": "teams/delete-discussion-comment-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#delete-a-discussion-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": "discussion-comments" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - "get": { - "summary": "List reactions for a team discussion comment", - "description": "List the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments/). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`.", - "tags": ["reactions"], - "operationId": "reactions/list-for-team-discussion-comment-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" }, - { - "name": "content", - "description": "Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion comment.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/reaction" } - }, - "examples": { - "default": { "$ref": "#/components/examples/reaction-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create reaction for a team discussion comment", - "description": "Create a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion comment.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`.", - "tags": ["reactions"], - "operationId": "reactions/create-for-team-discussion-comment-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#create-reaction-for-a-team-discussion-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion comment.", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - "required": ["content"] - }, - "example": { "content": "heart" } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": { - "delete": { - "summary": "Delete team discussion comment reaction", - "description": "**Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`.\n\nDelete a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["reactions"], - "operationId": "reactions/delete-for-team-discussion-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#delete-team-discussion-comment-reaction" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" }, - { "$ref": "#/components/parameters/reaction-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": { - "get": { - "summary": "List reactions for a team discussion", - "description": "List the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`.", - "tags": ["reactions"], - "operationId": "reactions/list-for-team-discussion-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" }, - { - "name": "content", - "description": "Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/reaction" } - }, - "examples": { - "default": { "$ref": "#/components/examples/reaction-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create reaction for a team discussion", - "description": "Create a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`.", - "tags": ["reactions"], - "operationId": "reactions/create-for-team-discussion-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#create-reaction-for-a-team-discussion" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion.", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - "required": ["content"] - }, - "example": { "content": "heart" } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": { - "delete": { - "summary": "Delete team discussion reaction", - "description": "**Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id`.\n\nDelete a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["reactions"], - "operationId": "reactions/delete-for-team-discussion", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#delete-team-discussion-reaction" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/reaction-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/invitations": { - "get": { - "summary": "List pending team invitations", - "description": "The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`.", - "tags": ["teams"], - "operationId": "teams/list-pending-invitations-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-pending-team-invitations" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/organization-invitation" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-invitation-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/members": { - "get": { - "summary": "List team members", - "description": "Team members will include the members of child teams.\n\nTo list members in a team, the team must be visible to the authenticated user.", - "tags": ["teams"], - "operationId": "teams/list-members-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-team-members" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { - "name": "role", - "description": "Filters members returned by their role in the team. Can be one of: \n\\* `member` - normal members of the team. \n\\* `maintainer` - team maintainers. \n\\* `all` - all members of the team.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["member", "maintainer", "all"], - "default": "all" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/memberships/{username}": { - "get": { - "summary": "Get team membership for a user", - "description": "Team members will include the members of child teams.\n\nTo get a user's membership with a team, the team must be visible to the authenticated user.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`.\n\n**Note:** The `role` for organization owners returns as `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team).", - "tags": ["teams"], - "operationId": "teams/get-membership-for-user-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-membership" }, - "examples": { - "response-if-user-has-an-active-membership-with-team": { - "$ref": "#/components/examples/team-membership-response-if-user-has-an-active-membership-with-team" - }, - "response-if-user-is-a-team-maintainer": { - "$ref": "#/components/examples/team-membership-response-if-user-is-a-team-maintainer" - }, - "response-if-user-has-a-pending-membership-with-team": { - "$ref": "#/components/examples/team-membership-response-if-user-has-a-pending-membership-with-team" - } - } - } - } - }, - "404": { "description": "Response if user has no team membership" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": "members" - }, - "x-octokit": {} - }, - "put": { - "summary": "Add or update team membership for a user", - "description": "Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nAdds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team.\n\n**Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see \"[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/).\"\n\nAn organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the \"pending\" state until the person accepts the invitation, at which point the membership will transition to the \"active\" state and the user will be added as a member of the team.\n\nIf the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`.", - "tags": ["teams"], - "operationId": "teams/add-or-update-membership-for-user-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/username" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "role": { - "type": "string", - "description": "The role that this user should have in the team. Can be one of: \n\\* `member` - a normal member of the team. \n\\* `maintainer` - a team maintainer. Able to add/remove other team members, promote other team members to team maintainer, and edit the team's name and description.", - "enum": ["member", "maintainer"], - "default": "member" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-membership" }, - "examples": { - "response-if-users-membership-with-team-is-now-active": { - "$ref": "#/components/examples/team-membership-response-if-users-membership-with-team-is-now-active" - }, - "response-if-users-membership-with-team-is-now-pending": { - "$ref": "#/components/examples/team-membership-response-if-users-membership-with-team-is-now-pending" - } - } - } - } - }, - "403": { - "description": "Response if team synchronization is set up" - }, - "422": { - "description": "Response if you attempt to add an organization to a team", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "field": { "type": "string" }, - "resource": { "type": "string" } - } - } - } - } - }, - "examples": { - "response-if-you-attempt-to-add-an-organization-to-a-team": { - "value": { - "message": "Cannot add an organization as a member.", - "errors": [ - { - "code": "org", - "field": "user", - "resource": "TeamMember" - } - ] - } - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": "members" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove team membership for a user", - "description": "Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nTo remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team.\n\n**Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see \"[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/).\"\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`.", - "tags": ["teams"], - "operationId": "teams/remove-membership-for-user-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "403": { "description": "Response if team synchronization is set up" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/projects": { - "get": { - "summary": "List team projects", - "description": "Lists the organization projects for a team.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`.", - "tags": ["teams"], - "operationId": "teams/list-projects-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#list-team-projects" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team-project" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-project-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/projects/{project_id}": { - "get": { - "summary": "Check team permissions for a project", - "description": "Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects/{project_id}`.", - "tags": ["teams"], - "operationId": "teams/check-permissions-for-project-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#check-team-permissions-for-a-project" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/project-id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-project" }, - "examples": { - "default": { "$ref": "#/components/examples/team-project" } - } - } - } - }, - "404": { - "description": "Response if project is not managed by this team" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - }, - "put": { - "summary": "Add or update team project permissions", - "description": "Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/projects/{project_id}`.", - "tags": ["teams"], - "operationId": "teams/add-or-update-project-permissions-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#add-or-update-team-project-permissions" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/project-id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "permission": { - "type": "string", - "description": "The permission to grant to the team for this project. Can be one of: \n\\* `read` - team members can read, but not write to or administer this project. \n\\* `write` - team members can read and write, but not administer this project. \n\\* `admin` - team members can read, write and administer this project. \nDefault: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"", - "enum": ["read", "write", "admin"] - } - } - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "403": { - "description": "Response if the project is not owned by the organization", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - }, - "examples": { - "response-if-the-project-is-not-owned-by-the-organization": { - "value": { - "message": "Must have admin rights to Repository.", - "documentation_url": "https://docs.github.com/rest/reference/teams#add-or-update-team-project-permissions" - } - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove a project from a team", - "description": "Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. This endpoint removes the project from the team, but does not delete the project.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/projects/{project_id}`.", - "tags": ["teams"], - "operationId": "teams/remove-project-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#remove-a-project-from-a-team" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/project-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/repos": { - "get": { - "summary": "List team repositories", - "description": "Lists a team's repositories visible to the authenticated user.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`.", - "tags": ["teams"], - "operationId": "teams/list-repos-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#list-team-repositories" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/minimal-repository-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": { - "get": { - "summary": "Check team permissions for a repository", - "description": "Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked.\n\nYou can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `application/vnd.github.v3.repository+json` accept header.\n\nIf a team doesn't have permission for the repository, you will receive a `404 Not Found` response status.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.", - "tags": ["teams"], - "operationId": "teams/check-permissions-for-repo-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#check-team-permissions-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "Alternative response with repository permissions", - "content": { - "application/vnd.github.v3.repository+json": { - "schema": { "$ref": "#/components/schemas/team-repository" }, - "examples": { - "alternative-response-with-repository-permissions": { - "$ref": "#/components/examples/team-repository-alternative-response-with-repository-permissions" - } - } - } - } - }, - "204": { - "description": "Response if team has permission for the repository" - }, - "404": { - "description": "Response if team does not have permission for the repository" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - }, - "put": { - "summary": "Add or update team repository permissions", - "description": "To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.\n\nFor more information about the permission levels, see \"[Repository permission levels for an organization](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)\".", - "tags": ["teams"], - "operationId": "teams/add-or-update-repo-permissions-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#add-or-update-team-repository-permissions" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "permission": { - "type": "string", - "description": "The permission to grant the team on this repository. Can be one of: \n\\* `pull` - team members can pull, but not push to or administer this repository. \n\\* `push` - team members can pull and push, but not administer this repository. \n\\* `admin` - team members can pull, push and administer this repository. \n\\* `maintain` - team members can manage the repository without access to sensitive or destructive actions. Recommended for project managers. Only applies to repositories owned by organizations. \n\\* `triage` - team members can proactively manage issues and pull requests without write access. Recommended for contributors who triage a repository. Only applies to repositories owned by organizations. \n \nIf no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository.", - "enum": ["pull", "push", "admin", "maintain", "triage"] - } - } - } - } - } - }, - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove a repository from a team", - "description": "If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.", - "tags": ["teams"], - "operationId": "teams/remove-repo-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#remove-a-repository-from-a-team" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/team-sync/group-mappings": { - "get": { - "summary": "List IdP groups for a team", - "description": "Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nList IdP groups connected to a team on GitHub.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/team-sync/group-mappings`.", - "tags": ["teams"], - "operationId": "teams/list-idp-groups-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/group-mapping" }, - "examples": { - "default": { "$ref": "#/components/examples/group-mapping-3" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": false, - "previews": [], - "category": "teams", - "subcategory": "team-sync" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Create or update IdP group connections", - "description": "Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nCreates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty `groups` array will remove all connections for a team.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/team-sync/group-mappings`.", - "tags": ["teams"], - "operationId": "teams/create-or-update-idp-group-connections-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "groups": { - "type": "array", - "description": "The IdP groups you want to connect to a GitHub team. When updating, the new `groups` object will replace the original one. You must include any existing groups that you don't want to remove.", - "items": { - "type": "object", - "properties": { - "group_id": { - "type": "string", - "description": "ID of the IdP group." - }, - "group_name": { - "type": "string", - "description": "Name of the IdP group." - }, - "group_description": { - "type": "string", - "description": "Description of the IdP group." - } - }, - "required": [ - "group_id", - "group_name", - "group_description" - ] - } - } - }, - "required": ["groups"] - }, - "example": { - "groups": [ - { - "group_id": "123", - "group_name": "Octocat admins", - "group_description": "string" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/group-mapping" }, - "examples": { - "default": { "$ref": "#/components/examples/group-mapping" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": false, - "previews": [], - "category": "teams", - "subcategory": "team-sync" - }, - "x-octokit": {} - } - }, - "/orgs/{org}/teams/{team_slug}/teams": { - "get": { - "summary": "List child teams", - "description": "Lists the child teams of the team specified by `{team_slug}`.\n\n**Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`.", - "tags": ["teams"], - "operationId": "teams/list-child-in-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#list-child-teams" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/team_slug" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "Response if child teams exist", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "examples": { - "response-if-child-teams-exist": { - "$ref": "#/components/examples/team-items-response-if-child-teams-exist" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/projects/columns/cards/{card_id}": { - "get": { - "summary": "Get a project card", - "description": "", - "tags": ["projects"], - "operationId": "projects/get-card", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#get-a-project-card" - }, - "parameters": [{ "$ref": "#/components/parameters/card_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project-card" }, - "examples": { - "default": { "$ref": "#/components/examples/project-card" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "cards" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an existing project card", - "description": "", - "tags": ["projects"], - "operationId": "projects/update-card", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#update-a-project-card" - }, - "parameters": [{ "$ref": "#/components/parameters/card_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "note": { - "description": "The project card's note", - "example": "Update all gems", - "type": "string", - "nullable": true - }, - "archived": { - "description": "Whether or not the card is archived", - "example": false, - "type": "boolean" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project-card" }, - "examples": { - "default": { "$ref": "#/components/examples/project-card" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "cards" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a project card", - "description": "", - "tags": ["projects"], - "operationId": "projects/delete-card", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#delete-a-project-card" - }, - "parameters": [{ "$ref": "#/components/parameters/card_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" }, - "errors": { "type": "array", "items": { "type": "string" } } - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "cards" - }, - "x-octokit": {} - } - }, - "/projects/columns/cards/{card_id}/moves": { - "post": { - "summary": "Move a project card", - "description": "", - "tags": ["projects"], - "operationId": "projects/move-card", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#move-a-project-card" - }, - "parameters": [{ "$ref": "#/components/parameters/card_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "position": { - "description": "The position of the card in a column", - "example": "bottom", - "type": "string", - "pattern": "^(?:top|bottom|after:\\d+)$" - }, - "column_id": { - "description": "The unique identifier of the column the card should be moved to", - "example": 42, - "type": "integer" - } - }, - "required": ["position"], - "type": "object" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": {}, - "additionalProperties": false - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" }, - "errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "message": { "type": "string" }, - "resource": { "type": "string" }, - "field": { "type": "string" } - } - } - } - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "message": { "type": "string" }, - "documentation_url": { "type": "string" }, - "errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "message": { "type": "string" } - } - } - } - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "cards" - }, - "x-octokit": {} - } - }, - "/projects/columns/{column_id}": { - "get": { - "summary": "Get a project column", - "description": "", - "tags": ["projects"], - "operationId": "projects/get-column", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#get-a-project-column" - }, - "parameters": [{ "$ref": "#/components/parameters/column_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project-column" }, - "examples": { - "default": { "$ref": "#/components/examples/project-column" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "columns" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an existing project column", - "description": "", - "tags": ["projects"], - "operationId": "projects/update-column", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#update-a-project-column" - }, - "parameters": [{ "$ref": "#/components/parameters/column_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "Name of the project column", - "example": "Remaining tasks", - "type": "string" - } - }, - "required": ["name"], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project-column" }, - "examples": { - "default": { "$ref": "#/components/examples/project-column" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "columns" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a project column", - "description": "", - "tags": ["projects"], - "operationId": "projects/delete-column", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#delete-a-project-column" - }, - "parameters": [{ "$ref": "#/components/parameters/column_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "columns" - }, - "x-octokit": {} - } - }, - "/projects/columns/{column_id}/cards": { - "get": { - "summary": "List project cards", - "description": "", - "tags": ["projects"], - "operationId": "projects/list-cards", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#list-project-cards" - }, - "parameters": [ - { "$ref": "#/components/parameters/column_id" }, - { - "name": "archived_state", - "description": "Filters the project cards that are returned by the card's state. Can be one of `all`,`archived`, or `not_archived`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["all", "archived", "not_archived"], - "default": "not_archived" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/project-card" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/project-card-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "cards" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a project card", - "description": "**Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, \"Issues\" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.\n\nBe aware that the `id` of a pull request returned from \"Issues\" endpoints will be an _issue id_. To find out the pull request id, use the \"[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)\" endpoint.", - "tags": ["projects"], - "operationId": "projects/create-card", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#create-a-project-card" - }, - "parameters": [{ "$ref": "#/components/parameters/column_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "type": "object", - "properties": { - "note": { - "description": "The project card's note", - "example": "Update all gems", - "type": "string", - "nullable": true - } - }, - "required": ["note"] - }, - { - "type": "object", - "properties": { - "content_id": { - "description": "The unique identifier of the content associated with the card", - "example": 42, - "type": "integer" - }, - "content_type": { - "description": "The piece of content associated with the card", - "example": "PullRequest", - "type": "string" - } - }, - "required": ["content_id", "content_type"] - } - ] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project-card" }, - "examples": { - "default": { "$ref": "#/components/examples/project-card" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { - "description": "Validation Failed", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { "$ref": "#/components/schemas/validation-error" }, - { "$ref": "#/components/schemas/validation-error-simple" } - ] - } - } - } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "message": { "type": "string" }, - "documentation_url": { "type": "string" }, - "errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "message": { "type": "string" } - } - } - } - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "cards" - }, - "x-octokit": {} - } - }, - "/projects/columns/{column_id}/moves": { - "post": { - "summary": "Move a project column", - "description": "", - "tags": ["projects"], - "operationId": "projects/move-column", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#move-a-project-column" - }, - "parameters": [{ "$ref": "#/components/parameters/column_id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "position": { - "description": "The position of the column in a project", - "example": "last", - "type": "string", - "pattern": "^(?:first|last|after:\\d+)$" - } - }, - "required": ["position"], - "type": "object" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": {}, - "additionalProperties": false - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "columns" - }, - "x-octokit": {} - } - }, - "/projects/{project_id}": { - "get": { - "summary": "Get a project", - "description": "Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.", - "tags": ["projects"], - "operationId": "projects/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/projects/#get-a-project" - }, - "parameters": [{ "$ref": "#/components/parameters/project-id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project" }, - "examples": { - "default": { "$ref": "#/components/examples/project-3" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a project", - "description": "Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.", - "operationId": "projects/update", - "tags": ["projects"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/projects/#update-a-project" - }, - "parameters": [{ "$ref": "#/components/parameters/project-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "Name of the project", - "example": "Week One Sprint", - "type": "string" - }, - "body": { - "description": "Body of the project", - "example": "This project represents the sprint of the first week in January", - "type": "string", - "nullable": true - }, - "state": { - "description": "State of the project; either 'open' or 'closed'", - "example": "open", - "type": "string" - }, - "organization_permission": { - "description": "The baseline permission that all organization members have on this project", - "type": "string", - "enum": ["read", "write", "admin", "none"] - }, - "private": { - "description": "Whether or not this project can be seen by everyone.", - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project" }, - "examples": { - "default": { "$ref": "#/components/examples/project-3" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" }, - "errors": { "type": "array", "items": { "type": "string" } } - } - } - } - } - }, - "404": { - "description": "Response if the authenticated user does not have access to the project" - }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a project", - "description": "Deletes a project board. Returns a `404 Not Found` status if projects are disabled.", - "operationId": "projects/delete", - "tags": ["projects"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/projects/#delete-a-project" - }, - "parameters": [{ "$ref": "#/components/parameters/project-id" }], - "responses": { - "204": { "description": "Delete Success" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" }, - "errors": { "type": "array", "items": { "type": "string" } } - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/projects/{project_id}/collaborators": { - "get": { - "summary": "List project collaborators", - "description": "Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators.", - "tags": ["projects"], - "operationId": "projects/list-collaborators", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#list-project-collaborators" - }, - "parameters": [ - { "$ref": "#/components/parameters/project-id" }, - { - "name": "affiliation", - "description": "Filters the collaborators by their affiliation. Can be one of: \n\\* `outside`: Outside collaborators of a project that are not a member of the project's organization. \n\\* `direct`: Collaborators with permissions to a project, regardless of organization membership status. \n\\* `all`: All collaborators the authenticated user can see.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["outside", "direct", "all"], - "default": "all" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "collaborators" - }, - "x-octokit": {} - } - }, - "/projects/{project_id}/collaborators/{username}": { - "put": { - "summary": "Add project collaborator", - "description": "Adds a collaborator to an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator.", - "tags": ["projects"], - "operationId": "projects/add-collaborator", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#add-project-collaborator" - }, - "parameters": [ - { "$ref": "#/components/parameters/project-id" }, - { "$ref": "#/components/parameters/username" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "permission": { - "description": "The permission to grant the collaborator.", - "enum": ["read", "write", "admin"], - "default": "write", - "example": "write", - "type": "string" - } - } - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "collaborators" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove user as a collaborator", - "description": "Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator.", - "tags": ["projects"], - "operationId": "projects/remove-collaborator", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#remove-project-collaborator" - }, - "parameters": [ - { "$ref": "#/components/parameters/project-id" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "collaborators" - }, - "x-octokit": {} - } - }, - "/projects/{project_id}/collaborators/{username}/permission": { - "get": { - "summary": "Get project permission for a user", - "description": "Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level.", - "tags": ["projects"], - "operationId": "projects/get-permission-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#get-project-permission-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/project-id" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/repository-collaborator-permission" - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-collaborator-permission" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "collaborators" - }, - "x-octokit": {} - } - }, - "/projects/{project_id}/columns": { - "get": { - "summary": "List project columns", - "description": "", - "tags": ["projects"], - "operationId": "projects/list-columns", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#list-project-columns" - }, - "parameters": [ - { "$ref": "#/components/parameters/project-id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/project-column" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/project-column-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "columns" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a project column", - "description": "", - "tags": ["projects"], - "operationId": "projects/create-column", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/projects#create-a-project-column" - }, - "parameters": [{ "$ref": "#/components/parameters/project-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "Name of the project column", - "example": "Remaining tasks", - "type": "string" - } - }, - "required": ["name"], - "type": "object" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project-column" }, - "example": { - "url": "https://api.github.com/projects/columns/367", - "project_url": "https://api.github.com/projects/120", - "cards_url": "https://api.github.com/projects/columns/367/cards", - "id": 367, - "node_id": "MDEzOlByb2plY3RDb2x1bW4zNjc=", - "name": "To Do", - "created_at": "2016-09-05T14:18:44Z", - "updated_at": "2016-09-05T14:22:28Z" - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": "columns" - }, - "x-octokit": {} - } - }, - "/rate_limit": { - "get": { - "summary": "Get rate limit status for the authenticated user", - "description": "**Note:** Accessing this endpoint does not count against your REST API rate limit.\n\n**Note:** The `rate` object is deprecated. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object.", - "tags": ["rate-limit"], - "operationId": "rate-limit/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/rate_limit/#get-rate-limit-status-for-the-authenticated-user" - }, - "parameters": [], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/rate-limit-overview" - }, - "examples": { - "default": { - "$ref": "#/components/examples/rate-limit-overview" - } - } - } - }, - "headers": { - "X-RateLimit-Limit": { - "$ref": "#/components/headers/x-rate-limit-limit" - }, - "X-RateLimit-Remaining": { - "$ref": "#/components/headers/x-rate-limit-remaining" - }, - "X-RateLimit-Reset": { - "$ref": "#/components/headers/x-rate-limit-reset" - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "rate-limit", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/reactions/{reaction_id}": { - "delete": { - "summary": "Delete a reaction (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Reactions API. We recommend migrating your existing code to use the new delete reactions endpoints. For more information, see this [blog post](https://developer.github.com/changes/2020-02-26-new-delete-reactions-endpoints/).\n\nOAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), when deleting a [team discussion](https://docs.github.com/rest/reference/teams#discussions) or [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments).", - "tags": ["reactions"], - "operationId": "reactions/delete-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#delete-a-reaction-legacy" - }, - "parameters": [{ "$ref": "#/components/parameters/reaction-id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "410": { "$ref": "#/components/responses/gone" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-21", - "deprecationDate": "2020-02-26", - "category": "reactions", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}": { - "get": { - "summary": "Get a repository", - "description": "When you pass the `scarlet-witch-preview` media type, requests to get a repository will also return the repository's code of conduct if it can be detected from the repository's code of conduct file.\n\nThe `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network.", - "tags": ["repos"], - "operationId": "repos/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#get-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/full-repository" }, - "examples": { - "default-response": { - "$ref": "#/components/examples/full-repository-default-response" - }, - "response-with-scarlet-witch-preview-media-type": { - "$ref": "#/components/examples/full-repository-response-with-scarlet-witch-preview-media-type" - } - } - } - } - }, - "301": { "$ref": "#/components/responses/moved_permanently" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "nebula", - "note": "You can set the visibility of a repository using the new `visibility` parameter in the [Repositories API](https://docs.github.com/rest/reference/repos/), and get a repository's visibility with a new response key. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes/).\n\nTo access repository visibility during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.nebula-preview+json\n```" - }, - { - "required": false, - "name": "scarlet-witch", - "note": "The Codes of Conduct API is currently available for developers to preview.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.scarlet-witch-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a repository", - "description": "**Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/reference/repos#replace-all-repository-topics) endpoint.", - "tags": ["repos"], - "operationId": "repos/update", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#update-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the repository." - }, - "description": { - "type": "string", - "description": "A short description of the repository." - }, - "homepage": { - "type": "string", - "description": "A URL with more information about the repository." - }, - "private": { - "type": "boolean", - "description": "Either `true` to make the repository private or `false` to make it public. Default: `false`. \n**Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private.", - "default": false - }, - "visibility": { - "type": "string", - "description": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. The `visibility` parameter overrides the `private` parameter when you use both along with the `nebula-preview` preview header.", - "enum": ["public", "private", "visibility", "internal"] - }, - "has_issues": { - "type": "boolean", - "description": "Either `true` to enable issues for this repository or `false` to disable them.", - "default": true - }, - "has_projects": { - "type": "boolean", - "description": "Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.", - "default": true - }, - "has_wiki": { - "type": "boolean", - "description": "Either `true` to enable the wiki for this repository or `false` to disable it.", - "default": true - }, - "is_template": { - "type": "boolean", - "description": "Either `true` to make this repo available as a template repository or `false` to prevent it.", - "default": false - }, - "default_branch": { - "type": "string", - "description": "Updates the default branch for this repository." - }, - "allow_squash_merge": { - "type": "boolean", - "description": "Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.", - "default": true - }, - "allow_merge_commit": { - "type": "boolean", - "description": "Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.", - "default": true - }, - "allow_rebase_merge": { - "type": "boolean", - "description": "Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.", - "default": true - }, - "delete_branch_on_merge": { - "type": "boolean", - "description": "Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion.", - "default": false - }, - "archived": { - "type": "boolean", - "description": "`true` to archive this repository. **Note**: You cannot unarchive repositories through the API.", - "default": false - } - } - }, - "example": { - "name": "Hello-World", - "description": "This is your first repository", - "homepage": "https://github.com", - "private": true, - "has_issues": true, - "has_projects": true, - "has_wiki": true - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/full-repository" }, - "examples": { - "default": { "$ref": "#/components/examples/full-repository" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "nebula", - "note": "You can set the visibility of a repository using the new `visibility` parameter in the [Repositories API](https://docs.github.com/rest/reference/repos/), and get a repository's visibility with a new response key. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes/).\n\nTo access repository visibility during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.nebula-preview+json\n```" - }, - { - "required": false, - "name": "baptiste", - "note": "The `is_template` and `template_repository` keys are currently available for developer to preview. See [Create a repository using a template](https://docs.github.com/repos#create-a-repository-using-a-template) to learn how to create template repositories. To access these new response keys during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.baptiste-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a repository", - "description": "Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required.\n\nIf an organization owner has configured the organization to prevent members from deleting organization-owned\nrepositories, you will get a `403 Forbidden` response.", - "tags": ["repos"], - "operationId": "repos/delete", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#delete-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "204": { "description": "Empty response" }, - "403": { - "description": "If an organization owner has configured the organization to prevent members from deleting organization-owned repositories, a member will get this response:", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - }, - "example": { - "message": "Organization members cannot delete repositories.", - "documentation_url": "https://docs.github.com/rest/reference/repos#delete-a-repository" - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/artifacts": { - "get": { - "summary": "List artifacts for a repository", - "description": "Lists all artifacts for a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-artifacts-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-artifacts-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "artifacts": { - "type": "array", - "items": { "$ref": "#/components/schemas/artifact" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/artifact-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "artifacts" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}": { - "get": { - "summary": "Get an artifact", - "description": "Gets a specific artifact for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-artifact", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-an-artifact" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/artifact_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/artifact" }, - "examples": { - "default": { "$ref": "#/components/examples/artifact" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "artifacts" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete an artifact", - "description": "Deletes an artifact for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/delete-artifact", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#delete-an-artifact" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/artifact_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "artifacts" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": { - "get": { - "summary": "Download an artifact", - "description": "Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in\nthe response header to find the URL for the download. The `:archive_format` must be `zip`. Anyone with read access to\nthe repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope.\nGitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/download-artifact", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#download-an-artifact" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/artifact_id" }, - { - "name": "archive_format", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "302": { - "description": "response", - "headers": { - "Location": { "$ref": "#/components/headers/location" } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "artifacts" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/jobs/{job_id}": { - "get": { - "summary": "Get a job for a workflow run", - "description": "Gets a specific job in a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-job-for-workflow-run", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-a-job-for-a-workflow-run" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/job_id" } - ], - "responses": { - "202": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/job" }, - "examples": { - "default": { "$ref": "#/components/examples/job" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-jobs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/jobs/{job_id}/logs": { - "get": { - "summary": "Download job logs for a workflow run", - "description": "Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look\nfor `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can\nuse this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must\nhave the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/download-job-logs-for-workflow-run", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#download-job-logs-for-a-workflow-run" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/job_id" } - ], - "responses": { - "302": { - "description": "response", - "headers": { - "Location": { - "example": "https://pipelines.actions.githubusercontent.com/ab1f3cCFPB34Nd6imvFxpGZH5hNlDp2wijMwl2gDoO0bcrrlJj/_apis/pipelines/1/jobs/19/signedlogcontent?urlExpires=2020-01-22T22%3A44%3A54.1389777Z&urlSigningMethod=HMACV1&urlSignature=2TUDfIg4fm36OJmfPy6km5QD5DLCOkBVzvhWZM8B%2BUY%3D", - "schema": { "type": "string" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-jobs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/permissions": { - "get": { - "summary": "Get GitHub Actions permissions for a repository", - "description": "Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository.\n\nYou must authenticate using an access token with the `repo` scope to use this\nendpoint. GitHub Apps must have the `administration` repository permission to use this API.", - "operationId": "actions/get-github-actions-permissions-repository", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-github-actions-permissions-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/actions-repository-permissions" - }, - "examples": { - "default": { - "$ref": "#/components/examples/actions-repository-permissions" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": { - "changes": [ - { - "type": "OPERATION", - "date": "2020-11-10", - "before": { "operationId": "actions/get-repo-permissions" } - } - ] - } - }, - "put": { - "summary": "Set GitHub Actions permissions for a repository", - "description": "Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions in the repository.\n\nIf the repository belongs to an organization or enterprise that has set restrictive permissions at the organization or enterprise levels, such as `allowed_actions` to `selected` actions, then you cannot override them for the repository.\n\nYou must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API.", - "operationId": "actions/set-github-actions-permissions-repository", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#set-github-actions-permissions-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "enabled": { "$ref": "#/components/schemas/actions-enabled" }, - "allowed_actions": { - "$ref": "#/components/schemas/allowed-actions" - } - }, - "required": ["enabled"] - }, - "example": { "enabled": true, "allowed_actions": "selected" } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/permissions/selected-actions": { - "get": { - "summary": "Get allowed actions for a repository", - "description": "Gets the settings for selected actions that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository).\"\n\nYou must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API.", - "operationId": "actions/get-allowed-actions-repository", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-allowed-actions-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/selected-actions" }, - "examples": { - "default": { - "$ref": "#/components/examples/selected-actions" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set allowed actions for a repository", - "description": "Sets the actions that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see \"[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository).\"\n\nIf the repository belongs to an organization or enterprise that has `selected` actions set at the organization or enterprise levels, then you cannot override any of the allowed actions settings.\n\nTo use the `patterns_allowed` setting for private repositories, the repository must belong to an enterprise. If the repository does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories.\n\nYou must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API.", - "operationId": "actions/set-allowed-actions-repository", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#set-allowed-actions-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/selected-actions" }, - "examples": { - "selected_actions": { - "$ref": "#/components/examples/selected-actions" - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "actions", - "subcategory": "permissions" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runners": { - "get": { - "summary": "List self-hosted runners for a repository", - "description": "Lists all self-hosted runners configured in a repository. You must authenticate using an access token with the `repo` scope to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-self-hosted-runners-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "runners": { - "type": "array", - "items": { "$ref": "#/components/schemas/runner" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runners/downloads": { - "get": { - "summary": "List runner applications for a repository", - "description": "Lists binaries for the runner application that you can download and run.\n\nYou must authenticate using an access token with the `repo` scope to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-runner-applications-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-runner-applications-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/runner-application" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/runner-application-items" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runners/registration-token": { - "post": { - "summary": "Create a registration token for a repository", - "description": "Returns a token that you can pass to the `config` script. The token expires after one hour. You must authenticate\nusing an access token with the `repo` scope to use this endpoint.\n\n#### Example using registration token\n \nConfigure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint.\n\n```\n./config.sh --url https://github.com/octo-org/octo-repo-artifacts --token TOKEN\n```", - "tags": ["actions"], - "operationId": "actions/create-registration-token-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#create-a-registration-token-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authentication-token" - }, - "examples": { - "default": { - "$ref": "#/components/examples/authentication-token" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runners/remove-token": { - "post": { - "summary": "Create a remove token for a repository", - "description": "Returns a token that you can pass to remove a self-hosted runner from a repository. The token expires after one hour.\nYou must authenticate using an access token with the `repo` scope to use this endpoint.\n\n#### Example using remove token\n \nTo remove your self-hosted runner from a repository, replace TOKEN with the remove token provided by this endpoint.\n\n```\n./config.sh remove --token TOKEN\n```", - "tags": ["actions"], - "operationId": "actions/create-remove-token-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#create-a-remove-token-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authentication-token" - }, - "examples": { - "default": { - "$ref": "#/components/examples/authentication-token-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runners/{runner_id}": { - "get": { - "summary": "Get a self-hosted runner for a repository", - "description": "Gets a specific self-hosted runner configured in a repository.\n\nYou must authenticate using an access token with the `repo` scope to use this\nendpoint.", - "tags": ["actions"], - "operationId": "actions/get-self-hosted-runner-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/runner" }, - "examples": { - "default": { "$ref": "#/components/examples/runner" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a self-hosted runner from a repository", - "description": "Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists.\n\nYou must authenticate using an access token with the `repo`\nscope to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/delete-self-hosted-runner-from-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-from-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/runner_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "self-hosted-runners" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runs": { - "get": { - "summary": "List workflow runs for a repository", - "description": "Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).\n\nAnyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-workflow-runs-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-workflow-runs-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/actor" }, - { "$ref": "#/components/parameters/workflow-run-branch" }, - { "$ref": "#/components/parameters/event" }, - { "$ref": "#/components/parameters/workflow-run-status" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "workflow_runs": { - "type": "array", - "items": { "$ref": "#/components/schemas/workflow-run" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/workflow-run-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runs/{run_id}": { - "get": { - "summary": "Get a workflow run", - "description": "Gets a specific workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-workflow-run", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-a-workflow-run" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/run-id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/workflow-run" }, - "examples": { - "default": { "$ref": "#/components/examples/workflow-run" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-runs" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a workflow run", - "description": "Delete a specific workflow run. Anyone with write access to the repository can use this endpoint. If the repository is\nprivate you must use an access token with the `repo` scope. GitHub Apps must have the `actions:write` permission to use\nthis endpoint.", - "operationId": "actions/delete-workflow-run", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#delete-a-workflow-run" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/run-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": { - "get": { - "summary": "List workflow run artifacts", - "description": "Lists artifacts for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-workflow-run-artifacts", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-workflow-run-artifacts" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/run-id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "artifacts": { - "type": "array", - "items": { "$ref": "#/components/schemas/artifact" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/artifact-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "artifacts" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runs/{run_id}/cancel": { - "post": { - "summary": "Cancel a workflow run", - "description": "Cancels a workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/cancel-workflow-run", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#cancel-a-workflow-run" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/run-id" } - ], - "responses": { "202": { "description": "response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runs/{run_id}/jobs": { - "get": { - "summary": "List jobs for a workflow run", - "description": "Lists jobs for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).", - "tags": ["actions"], - "operationId": "actions/list-jobs-for-workflow-run", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-jobs-for-a-workflow-run" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/run-id" }, - { - "name": "filter", - "description": "Filters jobs by their `completed_at` timestamp. Can be one of: \n\\* `latest`: Returns jobs from the most recent execution of the workflow run. \n\\* `all`: Returns all jobs for a workflow run, including from old executions of the workflow run.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["latest", "all"], - "default": "latest" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "jobs": { - "type": "array", - "items": { "$ref": "#/components/schemas/job" } - } - } - }, - "examples": { - "default": { "$ref": "#/components/examples/job-paginated" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-jobs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runs/{run_id}/logs": { - "get": { - "summary": "Download workflow run logs", - "description": "Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for\n`Location:` in the response header to find the URL for the download. Anyone with read access to the repository can use\nthis endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have\nthe `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/download-workflow-run-logs", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#download-workflow-run-logs" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/run-id" } - ], - "responses": { - "302": { - "description": "response", - "headers": { - "Location": { - "example": "https://pipelines.actions.githubusercontent.com/ab1f3cCFPB34Nd6imvFxpGZH5hNlDp2wijMwl2gDoO0bcrrlJj/_apis/pipelines/1/runs/19/signedlogcontent?urlExpires=2020-01-22T22%3A44%3A54.1389777Z&urlSigningMethod=HMACV1&urlSignature=2TUDfIg4fm36OJmfPy6km5QD5DLCOkBVzvhWZM8B%2BUY%3D", - "schema": { "type": "string" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-runs" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete workflow run logs", - "description": "Deletes all logs for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/delete-workflow-run-logs", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#delete-workflow-run-logs" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/run-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runs/{run_id}/rerun": { - "post": { - "summary": "Re-run a workflow", - "description": "Re-runs your workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/re-run-workflow", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#re-run-a-workflow" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/run-id" } - ], - "responses": { "201": { "description": "response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "actions", - "subcategory": "workflow-runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/runs/{run_id}/timing": { - "get": { - "summary": "Get workflow run usage", - "description": "Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAnyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-workflow-run-usage", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-workflow-run-usage" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/run-id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/workflow-run-usage" }, - "examples": { - "default": { - "$ref": "#/components/examples/workflow-run-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "actions", - "subcategory": "workflow-runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/secrets": { - "get": { - "summary": "List repository secrets", - "description": "Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-repo-secrets", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-repository-secrets" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "secrets": { - "type": "array", - "items": { "$ref": "#/components/schemas/actions-secret" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/actions-secret-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/secrets/public-key": { - "get": { - "summary": "Get a repository public key", - "description": "Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `secrets` repository permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-repo-public-key", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-a-repository-public-key" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/actions-public-key" }, - "examples": { - "default": { - "$ref": "#/components/examples/actions-public-key" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/secrets/{secret_name}": { - "get": { - "summary": "Get a repository secret", - "description": "Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-repo-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-a-repository-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/secret_name" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/actions-secret" }, - "examples": { - "default": { "$ref": "#/components/examples/actions-secret" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - }, - "put": { - "summary": "Create or update a repository secret", - "description": "Creates or updates a repository secret with an encrypted value. Encrypt your secret using\n[LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access\ntoken with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use\nthis endpoint.\n\n#### Example encrypting a secret using Node.js\n\nEncrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library.\n\n```\nconst sodium = require('tweetsodium');\n\nconst key = \"base64-encoded-public-key\";\nconst value = \"plain-text-secret\";\n\n// Convert the message and key to Uint8Array's (Buffer implements that interface)\nconst messageBytes = Buffer.from(value);\nconst keyBytes = Buffer.from(key, 'base64');\n\n// Encrypt using LibSodium.\nconst encryptedBytes = sodium.seal(messageBytes, keyBytes);\n\n// Base64 the encrypted secret\nconst encrypted = Buffer.from(encryptedBytes).toString('base64');\n\nconsole.log(encrypted);\n```\n\n\n#### Example encrypting a secret using Python\n\nEncrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/stable/public/#nacl-public-sealedbox) with Python 3.\n\n```\nfrom base64 import b64encode\nfrom nacl import encoding, public\n\ndef encrypt(public_key: str, secret_value: str) -> str:\n \"\"\"Encrypt a Unicode string using the public key.\"\"\"\n public_key = public.PublicKey(public_key.encode(\"utf-8\"), encoding.Base64Encoder())\n sealed_box = public.SealedBox(public_key)\n encrypted = sealed_box.encrypt(secret_value.encode(\"utf-8\"))\n return b64encode(encrypted).decode(\"utf-8\")\n```\n\n#### Example encrypting a secret using C#\n\nEncrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package.\n\n```\nvar secretValue = System.Text.Encoding.UTF8.GetBytes(\"mySecret\");\nvar publicKey = Convert.FromBase64String(\"2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU=\");\n\nvar sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);\n\nConsole.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));\n```\n\n#### Example encrypting a secret using Ruby\n\nEncrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem.\n\n```ruby\nrequire \"rbnacl\"\nrequire \"base64\"\n\nkey = Base64.decode64(\"+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=\")\npublic_key = RbNaCl::PublicKey.new(key)\n\nbox = RbNaCl::Boxes::Sealed.from_public_key(public_key)\nencrypted_secret = box.encrypt(\"my_secret\")\n\n# Print the base64 encoded secret\nputs Base64.strict_encode64(encrypted_secret)\n```", - "tags": ["actions"], - "operationId": "actions/create-or-update-repo-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#create-or-update-a-repository-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/secret_name" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "encrypted_value": { - "type": "string", - "description": "Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/reference/actions#get-a-repository-public-key) endpoint." - }, - "key_id": { - "type": "string", - "description": "ID of the key you used to encrypt the secret." - } - } - }, - "example": { - "encrypted_value": "****************************************************************************************", - "key_id": "012345678912345678" - } - } - } - }, - "responses": { - "201": { "description": "Response when creating a secret" }, - "204": { "description": "Response when updating a secret" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a repository secret", - "description": "Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/delete-repo-secret", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#delete-a-repository-secret" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/secret_name" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "secrets" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/workflows": { - "get": { - "summary": "List repository workflows", - "description": "Lists the workflows in a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/list-repo-workflows", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-repository-workflows" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "workflows": { - "type": "array", - "items": { "$ref": "#/components/schemas/workflow" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/workflow-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflows" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}": { - "get": { - "summary": "Get a workflow", - "description": "Gets a specific workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-workflow", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-a-workflow" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/workflow-id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/workflow" }, - "examples": { - "default": { "$ref": "#/components/examples/workflow" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflows" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": { - "put": { - "summary": "Disable a workflow", - "description": "Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.\n\nYou must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/disable-workflow", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#disable-a-workflow" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/workflow-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflows" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": { - "post": { - "summary": "Create a workflow dispatch event", - "description": "You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.\n\nYou must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see \"[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch).\"\n\nYou must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see \"[Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line).\"", - "operationId": "actions/create-workflow-dispatch", - "tags": ["actions"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#create-a-workflow-dispatch-event" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/workflow-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "ref": { - "type": "string", - "description": "The git reference for the workflow. The reference can be a branch or tag name." - }, - "inputs": { - "type": "object", - "description": "Input keys and values configured in the workflow file. The maximum number of properties is 10. Any default properties configured in the workflow file will be used when `inputs` are omitted.", - "additionalProperties": { "type": "string" }, - "maxProperties": 10 - } - }, - "required": ["ref"] - }, - "example": { - "ref": "topic-branch", - "inputs": { - "name": "Mona the Octocat", - "home": "San Francisco, CA" - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflows" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": { - "put": { - "summary": "Enable a workflow", - "description": "Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.\n\nYou must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/enable-workflow", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#enable-a-workflow" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/workflow-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflows" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": { - "get": { - "summary": "List workflow runs", - "description": "List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).\n\nAnyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope.", - "tags": ["actions"], - "operationId": "actions/list-workflow-runs", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#list-workflow-runs" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/workflow-id" }, - { "$ref": "#/components/parameters/actor" }, - { "$ref": "#/components/parameters/workflow-run-branch" }, - { "$ref": "#/components/parameters/event" }, - { "$ref": "#/components/parameters/workflow-run-status" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "workflow_runs": { - "type": "array", - "items": { "$ref": "#/components/schemas/workflow-run" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/workflow-run-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "actions", - "subcategory": "workflow-runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": { - "get": { - "summary": "Get workflow usage", - "description": "Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nYou can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.", - "tags": ["actions"], - "operationId": "actions/get-workflow-usage", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/actions#get-workflow-usage" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/workflow-id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/workflow-usage" }, - "examples": { - "default": { "$ref": "#/components/examples/workflow-usage" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "actions", - "subcategory": "workflows" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/assignees": { - "get": { - "summary": "List assignees", - "description": "Lists the [available assignees](https://help.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository.", - "tags": ["issues"], - "operationId": "issues/list-assignees", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-assignees" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "assignees" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/assignees/{assignee}": { - "get": { - "summary": "Check if a user can be assigned", - "description": "Checks if a user has permission to be assigned to an issue in this repository.\n\nIf the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned.\n\nOtherwise a `404` status code is returned.", - "tags": ["issues"], - "operationId": "issues/check-user-can-be-assigned", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#check-if-a-user-can-be-assigned" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "assignee", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "204": { - "description": "If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned." - }, - "404": { - "description": "Otherwise a `404` status code is returned.", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "assignees" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/automated-security-fixes": { - "put": { - "summary": "Enable automated security fixes", - "description": "Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see \"[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)\".", - "tags": ["repos"], - "operationId": "repos/enable-automated-security-fixes", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#enable-automated-security-fixes" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "london", - "note": "Enabling or disabling automated security fixes is currently available for developers to preview. To access this new endpoint during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.london-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Disable automated security fixes", - "description": "Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see \"[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)\".", - "tags": ["repos"], - "operationId": "repos/disable-automated-security-fixes", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#disable-automated-security-fixes" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "london", - "note": "Enabling or disabling automated security fixes is currently available for developers to preview. To access this new endpoint during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.london-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches": { - "get": { - "summary": "List branches", - "description": "", - "tags": ["repos"], - "operationId": "repos/list-branches", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-branches" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "protected", - "description": "Setting to `true` returns only protected branches. When set to `false`, only unprotected branches are returned. Omitting this parameter returns all branches.", - "in": "query", - "required": false, - "schema": { "type": "boolean" } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/short-branch" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/short-branch-items" - }, - "with-protection": { - "$ref": "#/components/examples/short-branch-with-protection-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}": { - "get": { - "summary": "Get a branch", - "description": "", - "tags": ["repos"], - "operationId": "repos/get-branch", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-branch" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/branch-with-protection" - }, - "examples": { - "default": { - "$ref": "#/components/examples/branch-with-protection" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection": { - "get": { - "summary": "Get branch protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/get-branch-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-branch-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/branch-protection" }, - "examples": { - "default": { - "$ref": "#/components/examples/branch-protection" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "luke-cage", - "note": "The Protected Branches API now has a setting for requiring a specified number of approving pull request reviews before merging. This feature is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2018-03-16-protected-branches-required-approving-reviews) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.luke-cage-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "put": { - "summary": "Update branch protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nProtecting a branch requires admin or owner permissions to the repository.\n\n**Note**: Passing new arrays of `users` and `teams` replaces their previous values.\n\n**Note**: The list of users, apps, and teams in total is limited to 100 items.", - "tags": ["repos"], - "operationId": "repos/update-branch-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#update-branch-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "required_status_checks": { - "type": "object", - "description": "Require status checks to pass before merging. Set to `null` to disable.", - "nullable": true, - "properties": { - "strict": { - "type": "boolean", - "description": "Require branches to be up to date before merging." - }, - "contexts": { - "type": "array", - "description": "The list of status checks to require in order to merge into this branch", - "items": { "type": "string" } - } - }, - "required": ["strict", "contexts"] - }, - "enforce_admins": { - "type": "boolean", - "description": "Enforce all configured restrictions for administrators. Set to `true` to enforce required status checks for repository administrators. Set to `null` to disable.", - "nullable": true - }, - "required_pull_request_reviews": { - "type": "object", - "description": "Require at least one approving review on a pull request, before merging. Set to `null` to disable.", - "nullable": true, - "properties": { - "dismissal_restrictions": { - "type": "object", - "description": "Specify which users and teams can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories.", - "properties": { - "users": { - "type": "array", - "description": "The list of user `login`s with dismissal access", - "items": { "type": "string" } - }, - "teams": { - "type": "array", - "description": "The list of team `slug`s with dismissal access", - "items": { "type": "string" } - } - } - }, - "dismiss_stale_reviews": { - "type": "boolean", - "description": "Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit." - }, - "require_code_owner_reviews": { - "type": "boolean", - "description": "Blocks merging pull requests until [code owners](https://help.github.com/articles/about-code-owners/) review them." - }, - "required_approving_review_count": { - "type": "integer", - "description": "Specify the number of reviewers required to approve pull requests. Use a number between 1 and 6." - } - } - }, - "restrictions": { - "type": "object", - "description": "Restrict who can push to the protected branch. User, app, and team `restrictions` are only available for organization-owned repositories. Set to `null` to disable.", - "nullable": true, - "properties": { - "users": { - "type": "array", - "description": "The list of user `login`s with push access", - "items": { "type": "string" } - }, - "teams": { - "type": "array", - "description": "The list of team `slug`s with push access", - "items": { "type": "string" } - }, - "apps": { - "type": "array", - "description": "The list of app `slug`s with push access", - "items": { "type": "string" } - } - }, - "required": ["users", "teams"] - }, - "required_linear_history": { - "type": "boolean", - "description": "Enforces a linear commit Git history, which prevents anyone from pushing merge commits to a branch. Set to `true` to enforce a linear commit history. Set to `false` to disable a linear commit Git history. Your repository must allow squash merging or rebase merging before you can enable a linear commit history. Default: `false`. For more information, see \"[Requiring a linear commit history](https://help.github.com/github/administering-a-repository/requiring-a-linear-commit-history)\" in the GitHub Help documentation." - }, - "allow_force_pushes": { - "type": "boolean", - "description": "Permits force pushes to the protected branch by anyone with write access to the repository. Set to `true` to allow force pushes. Set to `false` or `null` to block force pushes. Default: `false`. For more information, see \"[Enabling force pushes to a protected branch](https://help.github.com/en/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)\" in the GitHub Help documentation.\"", - "nullable": true - }, - "allow_deletions": { - "type": "boolean", - "description": "Allows deletion of the protected branch by anyone with write access to the repository. Set to `false` to prevent deletion of the protected branch. Default: `false`. For more information, see \"[Enabling force pushes to a protected branch](https://help.github.com/en/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)\" in the GitHub Help documentation." - } - }, - "required": [ - "required_status_checks", - "enforce_admins", - "required_pull_request_reviews", - "restrictions" - ] - }, - "example": { - "required_status_checks": { - "strict": true, - "contexts": ["continuous-integration/travis-ci"] - }, - "enforce_admins": true, - "required_pull_request_reviews": { - "dismissal_restrictions": { - "users": ["octocat"], - "teams": ["justice-league"] - }, - "dismiss_stale_reviews": true, - "require_code_owner_reviews": true, - "required_approving_review_count": 2 - }, - "restrictions": { - "users": ["octocat"], - "teams": ["justice-league"], - "apps": ["super-ci"] - }, - "required_linear_history": true, - "allow_force_pushes": true, - "allow_deletions": true - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/protected-branch" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "luke-cage", - "note": "The Protected Branches API now has a setting for requiring a specified number of approving pull request reviews before merging. This feature is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2018-03-16-protected-branches-required-approving-reviews) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.luke-cage-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete branch protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/delete-branch-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-branch-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "204": { "description": "Empty response" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": { - "get": { - "summary": "Get admin branch protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/get-admin-branch-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-admin-branch-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/protected-branch-admin-enforced" - }, - "examples": { - "default": { - "$ref": "#/components/examples/protected-branch-admin-enforced-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "post": { - "summary": "Set admin branch protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nAdding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.", - "tags": ["repos"], - "operationId": "repos/set-admin-branch-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#set-admin-branch-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/protected-branch-admin-enforced" - }, - "examples": { - "default": { - "$ref": "#/components/examples/protected-branch-admin-enforced-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete admin branch protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nRemoving admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.", - "tags": ["repos"], - "operationId": "repos/delete-admin-branch-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-admin-branch-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "204": { "description": "No Content" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": { - "get": { - "summary": "Get pull request review protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/get-pull-request-review-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-pull-request-review-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/vnd.github.luke-cage-preview+json": { - "schema": { - "$ref": "#/components/schemas/protected-branch-pull-request-review" - }, - "examples": { - "default": { - "$ref": "#/components/examples/protected-branch-pull-request-review" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "luke-cage", - "note": "The Protected Branches API now has a setting for requiring a specified number of approving pull request reviews before merging. This feature is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2018-03-16-protected-branches-required-approving-reviews) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.luke-cage-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update pull request review protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nUpdating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled.\n\n**Note**: Passing new arrays of `users` and `teams` replaces their previous values.", - "tags": ["repos"], - "operationId": "repos/update-pull-request-review-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#update-pull-request-review-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "dismissal_restrictions": { - "type": "object", - "description": "Specify which users and teams can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories.", - "properties": { - "users": { - "type": "array", - "description": "The list of user `login`s with dismissal access", - "items": { "type": "string" } - }, - "teams": { - "type": "array", - "description": "The list of team `slug`s with dismissal access", - "items": { "type": "string" } - } - } - }, - "dismiss_stale_reviews": { - "type": "boolean", - "description": "Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit." - }, - "require_code_owner_reviews": { - "type": "boolean", - "description": "Blocks merging pull requests until [code owners](https://help.github.com/articles/about-code-owners/) have reviewed." - }, - "required_approving_review_count": { - "type": "integer", - "description": "Specifies the number of reviewers required to approve pull requests. Use a number between 1 and 6." - } - } - }, - "example": { - "dismissal_restrictions": { - "users": ["octocat"], - "teams": ["justice-league"] - }, - "dismiss_stale_reviews": true, - "require_code_owner_reviews": true, - "required_approving_review_count": 2 - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/protected-branch-pull-request-review" - }, - "examples": { - "default": { - "$ref": "#/components/examples/protected-branch-pull-request-review" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "luke-cage", - "note": "The Protected Branches API now has a setting for requiring a specified number of approving pull request reviews before merging. This feature is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2018-03-16-protected-branches-required-approving-reviews) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.luke-cage-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete pull request review protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/delete-pull-request-review-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-pull-request-review-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "204": { "description": "No Content" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": { - "get": { - "summary": "Get commit signature protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nWhen authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://help.github.com/articles/signing-commits-with-gpg) in GitHub Help.\n\n**Note**: You must enable branch protection to require signed commits.", - "tags": ["repos"], - "operationId": "repos/get-commit-signature-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-commit-signature-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/protected-branch-admin-enforced" - }, - "examples": { - "default": { - "$ref": "#/components/examples/protected-branch-admin-enforced" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "zzzax", - "note": "Protected Branches API can now manage a setting for requiring signed commits. This feature is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2018-02-22-protected-branches-required-signatures) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.zzzax-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create commit signature protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nWhen authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits.", - "tags": ["repos"], - "operationId": "repos/create-commit-signature-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-commit-signature-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/protected-branch-admin-enforced" - }, - "examples": { - "default": { - "$ref": "#/components/examples/protected-branch-admin-enforced" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "zzzax", - "note": "Protected Branches API can now manage a setting for requiring signed commits. This feature is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2018-02-22-protected-branches-required-signatures) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.zzzax-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete commit signature protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nWhen authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits.", - "tags": ["repos"], - "operationId": "repos/delete-commit-signature-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-commit-signature-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "204": { "description": "No Content" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "zzzax", - "note": "Protected Branches API can now manage a setting for requiring signed commits. This feature is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2018-02-22-protected-branches-required-signatures) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.zzzax-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": { - "get": { - "summary": "Get status checks protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/get-status-checks-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-status-checks-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/status-check-policy" - }, - "examples": { - "default": { - "$ref": "#/components/examples/status-check-policy" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update status check protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nUpdating required status checks requires admin or owner permissions to the repository and branch protection to be enabled.", - "tags": ["repos"], - "operationId": "repos/update-status-check-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#update-status-check-potection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "strict": { - "type": "boolean", - "description": "Require branches to be up to date before merging." - }, - "contexts": { - "type": "array", - "description": "The list of status checks to require in order to merge into this branch", - "items": { "type": "string" } - } - } - }, - "example": { - "strict": true, - "contexts": ["continuous-integration/travis-ci"] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/status-check-policy" - }, - "examples": { - "default": { - "$ref": "#/components/examples/status-check-policy" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": { - "changes": [ - { - "type": "OPERATION", - "date": "2020-09-17", - "before": { "operationId": "repos/update-status-check-potection" } - } - ] - } - }, - "delete": { - "summary": "Remove status check protection", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/remove-status-check-protection", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#remove-status-check-protection" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { "204": { "description": "No Content" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": { - "get": { - "summary": "Get all status check contexts", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/get-all-status-check-contexts", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-all-status-check-contexts" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "type": "array", "items": { "type": "string" } }, - "example": ["continuous-integration/travis-ci"] - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "post": { - "summary": "Add status check contexts", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/add-status-check-contexts", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#add-status-check-contexts" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "contexts": { - "type": "array", - "description": "contexts parameter", - "items": { "type": "string" } - } - }, - "required": ["contexts"], - "example": { "contexts": ["contexts"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "type": "array", "items": { "type": "string" } }, - "example": [ - "continuous-integration/travis-ci", - "continuous-integration/jenkins" - ] - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "contexts", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set status check contexts", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/set-status-check-contexts", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#set-status-check-contexts" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "contexts": { - "type": "array", - "description": "contexts parameter", - "items": { "type": "string" } - } - }, - "required": ["contexts"], - "example": { "contexts": ["contexts"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "type": "array", "items": { "type": "string" } }, - "example": ["continuous-integration/travis-ci"] - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "contexts", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove status check contexts", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["repos"], - "operationId": "repos/remove-status-check-contexts", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#remove-status-check-contexts" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "contexts": { - "type": "array", - "description": "contexts parameter", - "items": { "type": "string" } - } - }, - "required": ["contexts"], - "example": { "contexts": ["contexts"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "type": "array", "items": { "type": "string" } }, - "example": ["continuous-integration/travis-ci"] - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "contexts", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions": { - "get": { - "summary": "Get access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nLists who has access to this protected branch.\n\n**Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories.", - "tags": ["repos"], - "operationId": "repos/get-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/branch-restriction-policy" - }, - "examples": { - "default": { - "$ref": "#/components/examples/branch-restriction-policy" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nDisables the ability to restrict who can push to this branch.", - "tags": ["repos"], - "operationId": "repos/delete-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { "204": { "description": "No Content" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": { - "get": { - "summary": "Get apps with access to the protected branch", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nLists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.", - "tags": ["repos"], - "operationId": "repos/get-apps-with-access-to-protected-branch", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-apps-with-access-to-the-protected-branch" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/integration" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/integration-items" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "post": { - "summary": "Add app access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nGrants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.\n\n| Type | Description |\n| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |", - "tags": ["repos"], - "operationId": "repos/add-app-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#add-app-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "apps": { - "type": "array", - "description": "apps parameter", - "items": { "type": "string" } - } - }, - "required": ["apps"], - "example": { "apps": ["my-app"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/integration" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/integration-items" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "apps", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set app access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nReplaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.\n\n| Type | Description |\n| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |", - "tags": ["repos"], - "operationId": "repos/set-app-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#set-app-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "apps": { - "type": "array", - "description": "apps parameter", - "items": { "type": "string" } - } - }, - "required": ["apps"], - "example": { "apps": ["my-app"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/integration" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/integration-items" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "apps", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove app access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nRemoves the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.\n\n| Type | Description |\n| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |", - "tags": ["repos"], - "operationId": "repos/remove-app-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#remove-app-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "apps": { - "type": "array", - "description": "apps parameter", - "items": { "type": "string" } - } - }, - "required": ["apps"], - "example": { "apps": ["my-app"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/integration" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/integration-items" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "apps", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": { - "get": { - "summary": "Get teams with access to the protected branch", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nLists the teams who have push access to this branch. The list includes child teams.", - "tags": ["repos"], - "operationId": "repos/get-teams-with-access-to-protected-branch", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-teams-with-access-to-the-protected-branch" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "examples": { - "default": { "$ref": "#/components/examples/team-items" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "post": { - "summary": "Add team access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nGrants the specified teams push access for this branch. You can also give push access to child teams.\n\n| Type | Description |\n| ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n| `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |", - "tags": ["repos"], - "operationId": "repos/add-team-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#add-team-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "teams": { - "type": "array", - "description": "teams parameter", - "items": { "type": "string" } - } - }, - "required": ["teams"], - "example": { "teams": ["my-team"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "examples": { - "default": { "$ref": "#/components/examples/team-items" } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "teams", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set team access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nReplaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams.\n\n| Type | Description |\n| ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n| `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |", - "tags": ["repos"], - "operationId": "repos/set-team-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#set-team-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "teams": { - "type": "array", - "description": "teams parameter", - "items": { "type": "string" } - } - }, - "required": ["teams"], - "example": { "teams": ["my-team"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "examples": { - "default": { "$ref": "#/components/examples/team-items" } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "teams", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove team access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nRemoves the ability of a team to push to this branch. You can also remove push access for child teams.\n\n| Type | Description |\n| ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `array` | Teams that should no longer have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |", - "tags": ["repos"], - "operationId": "repos/remove-team-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#remove-team-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "teams": { - "type": "array", - "description": "teams parameter", - "items": { "type": "string" } - } - }, - "required": ["teams"], - "example": { "teams": ["my-team"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "examples": { - "default": { "$ref": "#/components/examples/team-items" } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "teams", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": { - "get": { - "summary": "Get users with access to the protected branch", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nLists the people who have push access to this branch.", - "tags": ["repos"], - "operationId": "repos/get-users-with-access-to-protected-branch", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-users-with-access-to-the-protected-branch" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "post": { - "summary": "Add user access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nGrants the specified people push access for this branch.\n\n| Type | Description |\n| ------- | ----------------------------------------------------------------------------------------------------------------------------- |\n| `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |", - "tags": ["repos"], - "operationId": "repos/add-user-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#add-user-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "users parameter", - "items": { "type": "string" } - } - }, - "required": ["users"], - "example": { "users": ["mona"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "users", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set user access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nReplaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people.\n\n| Type | Description |\n| ------- | ----------------------------------------------------------------------------------------------------------------------------- |\n| `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |", - "tags": ["repos"], - "operationId": "repos/set-user-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#set-user-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "users parameter", - "items": { "type": "string" } - } - }, - "required": ["users"], - "example": { "users": ["mona"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "users", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove user access restrictions", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nRemoves the ability of a user to push to this branch.\n\n| Type | Description |\n| ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |\n| `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |", - "tags": ["repos"], - "operationId": "repos/remove-user-access-restrictions", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#remove-user-access-restrictions" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/branch" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "users parameter", - "items": { "type": "string" } - } - }, - "required": ["users"], - "example": { "users": ["mona"] } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "requestBodyParameterName": "users", - "category": "repos", - "subcategory": "branches" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/check-runs": { - "post": { - "summary": "Create a check run", - "description": "**Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.\n\nCreates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs.\n\nIn a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs.", - "tags": ["checks"], - "operationId": "checks/create", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#create-a-check-run" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the check. For example, \"code-coverage\"." - }, - "head_sha": { - "type": "string", - "description": "The SHA of the commit." - }, - "details_url": { - "type": "string", - "description": "The URL of the integrator's site that has the full details of the check. If the integrator does not provide this, then the homepage of the GitHub app is used." - }, - "external_id": { - "type": "string", - "description": "A reference for the run on the integrator's system." - }, - "status": { - "type": "string", - "description": "The current status. Can be one of `queued`, `in_progress`, or `completed`.", - "enum": ["queued", "in_progress", "completed"], - "default": "queued" - }, - "started_at": { - "type": "string", - "description": "The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`." - }, - "conclusion": { - "type": "string", - "description": "**Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `skipped`, `timed_out`, or `action_required`. When the conclusion is `action_required`, additional details should be provided on the site specified by `details_url`. \n**Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. Only GitHub can change a check run conclusion to `stale`.", - "enum": [ - "success", - "failure", - "neutral", - "cancelled", - "skipped", - "timed_out", - "action_required" - ] - }, - "completed_at": { - "type": "string", - "description": "The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`." - }, - "output": { - "type": "object", - "description": "Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://docs.github.com/rest/reference/checks#output-object) description.", - "properties": { - "title": { - "type": "string", - "description": "The title of the check run." - }, - "summary": { - "type": "string", - "description": "The summary of the check run. This parameter supports Markdown." - }, - "text": { - "type": "string", - "description": "The details of the check run. This parameter supports Markdown." - }, - "annotations": { - "type": "array", - "description": "Adds information from your analysis to specific lines of code. Annotations are visible on GitHub in the **Checks** and **Files changed** tab of the pull request. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/reference/checks#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. For details about how you can view annotations on GitHub, see \"[About status checks](https://help.github.com/articles/about-status-checks#checks)\". See the [`annotations` object](https://docs.github.com/rest/reference/checks#annotations-object) description for details about how to use this parameter.", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "The path of the file to add an annotation to. For example, `assets/css/main.css`." - }, - "start_line": { - "type": "integer", - "description": "The start line of the annotation." - }, - "end_line": { - "type": "integer", - "description": "The end line of the annotation." - }, - "start_column": { - "type": "integer", - "description": "The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values." - }, - "end_column": { - "type": "integer", - "description": "The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values." - }, - "annotation_level": { - "type": "string", - "description": "The level of the annotation. Can be one of `notice`, `warning`, or `failure`.", - "enum": ["notice", "warning", "failure"] - }, - "message": { - "type": "string", - "description": "A short description of the feedback for these lines of code. The maximum size is 64 KB." - }, - "title": { - "type": "string", - "description": "The title that represents the annotation. The maximum size is 255 characters." - }, - "raw_details": { - "type": "string", - "description": "Details about this annotation. The maximum size is 64 KB." - } - }, - "required": [ - "path", - "start_line", - "end_line", - "annotation_level", - "message" - ] - } - }, - "images": { - "type": "array", - "description": "Adds images to the output displayed in the GitHub pull request UI. See the [`images` object](https://docs.github.com/rest/reference/checks#images-object) description for details.", - "items": { - "type": "object", - "properties": { - "alt": { - "type": "string", - "description": "The alternative text for the image." - }, - "image_url": { - "type": "string", - "description": "The full URL of the image." - }, - "caption": { - "type": "string", - "description": "A short image description." - } - }, - "required": ["alt", "image_url"] - } - } - }, - "required": ["title", "summary"] - }, - "actions": { - "type": "array", - "description": "Displays a button on GitHub that can be clicked to alert your app to do additional tasks. For example, a code linting app can display a button that automatically fixes detected errors. The button created in this object is displayed after the check run completes. When a user clicks the button, GitHub sends the [`check_run.requested_action` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) to your app. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://docs.github.com/rest/reference/checks#actions-object) description. To learn more about check runs and requested actions, see \"[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions).\" To learn more about check runs and requested actions, see \"[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions).\"", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "The text to be displayed on a button in the web UI. The maximum size is 20 characters." - }, - "description": { - "type": "string", - "description": "A short explanation of what this action would do. The maximum size is 40 characters." - }, - "identifier": { - "type": "string", - "description": "A reference for the action on the integrator's system. The maximum size is 20 characters." - } - }, - "required": ["label", "description", "identifier"] - } - } - }, - "required": ["name", "head_sha"] - }, - "examples": { - "example-of-in-progress-conclusion": { - "summary": "Example of in_progress conclusion", - "value": { - "name": "mighty_readme", - "head_sha": "ce587453ced02b1526dfb4cb910479d431683101", - "status": "in_progress", - "external_id": "42", - "started_at": "2018-05-04T01:14:52Z", - "output": { - "title": "Mighty Readme report", - "summary": "", - "text": "" - } - } - }, - "example-of-completed-conclusion": { - "summary": "Example of completed conclusion", - "value": { - "name": "mighty_readme", - "head_sha": "ce587453ced02b1526dfb4cb910479d431683101", - "status": "completed", - "started_at": "2017-11-30T19:39:10Z", - "conclusion": "success", - "completed_at": "2017-11-30T19:49:10Z", - "output": { - "title": "Mighty Readme report", - "summary": "There are 0 failures, 2 warnings, and 1 notices.", - "text": "You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.", - "annotations": [ - { - "path": "README.md", - "annotation_level": "warning", - "title": "Spell Checker", - "message": "Check your spelling for 'banaas'.", - "raw_details": "Do you mean 'bananas' or 'banana'?", - "start_line": 2, - "end_line": 2 - }, - { - "path": "README.md", - "annotation_level": "warning", - "title": "Spell Checker", - "message": "Check your spelling for 'aples'", - "raw_details": "Do you mean 'apples' or 'Naples'", - "start_line": 4, - "end_line": 4 - } - ], - "images": [ - { - "alt": "Super bananas", - "image_url": "http://example.com/images/42" - } - ] - }, - "actions": [ - { - "label": "Fix", - "identifier": "fix_errors", - "description": "Allow us to fix these errors for you" - } - ] - } - } - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/check-run" }, - "examples": { - "example-of-in-progress-conclusion": { - "$ref": "#/components/examples/check-run-example-of-in-progress-conclusion" - }, - "example-of-completed-conclusion": { - "$ref": "#/components/examples/check-run-example-of-completed-conclusion" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/check-runs/{check_run_id}": { - "get": { - "summary": "Get a check run", - "description": "**Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.\n\nGets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository.", - "tags": ["checks"], - "operationId": "checks/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#get-a-check-run" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/check_run_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/check-run" }, - "examples": { - "default": { "$ref": "#/components/examples/check-run" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "runs" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a check run", - "description": "**Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.\n\nUpdates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs.", - "tags": ["checks"], - "operationId": "checks/update", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#update-a-check-run" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/check_run_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the check. For example, \"code-coverage\"." - }, - "details_url": { - "type": "string", - "description": "The URL of the integrator's site that has the full details of the check." - }, - "external_id": { - "type": "string", - "description": "A reference for the run on the integrator's system." - }, - "started_at": { - "type": "string", - "description": "This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`." - }, - "status": { - "type": "string", - "description": "The current status. Can be one of `queued`, `in_progress`, or `completed`.", - "enum": ["queued", "in_progress", "completed"] - }, - "conclusion": { - "type": "string", - "description": "**Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `skipped`, `timed_out`, or `action_required`. \n**Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. Only GitHub can change a check run conclusion to `stale`.", - "enum": [ - "success", - "failure", - "neutral", - "cancelled", - "skipped", - "timed_out", - "action_required" - ] - }, - "completed_at": { - "type": "string", - "description": "The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`." - }, - "output": { - "type": "object", - "description": "Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://docs.github.com/rest/reference/checks#output-object-1) description.", - "properties": { - "title": { - "type": "string", - "description": "**Required**." - }, - "summary": { - "type": "string", - "description": "Can contain Markdown." - }, - "text": { - "type": "string", - "description": "Can contain Markdown." - }, - "annotations": { - "type": "array", - "description": "Adds information from your analysis to specific lines of code. Annotations are visible in GitHub's pull request UI. Annotations are visible in GitHub's pull request UI. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/reference/checks#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. For details about annotations in the UI, see \"[About status checks](https://help.github.com/articles/about-status-checks#checks)\". See the [`annotations` object](https://docs.github.com/rest/reference/checks#annotations-object-1) description for details.", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "The path of the file to add an annotation to. For example, `assets/css/main.css`." - }, - "start_line": { - "type": "integer", - "description": "The start line of the annotation." - }, - "end_line": { - "type": "integer", - "description": "The end line of the annotation." - }, - "start_column": { - "type": "integer", - "description": "The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values." - }, - "end_column": { - "type": "integer", - "description": "The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values." - }, - "annotation_level": { - "type": "string", - "description": "The level of the annotation. Can be one of `notice`, `warning`, or `failure`.", - "enum": ["notice", "warning", "failure"] - }, - "message": { - "type": "string", - "description": "A short description of the feedback for these lines of code. The maximum size is 64 KB." - }, - "title": { - "type": "string", - "description": "The title that represents the annotation. The maximum size is 255 characters." - }, - "raw_details": { - "type": "string", - "description": "Details about this annotation. The maximum size is 64 KB." - } - }, - "required": [ - "path", - "start_line", - "end_line", - "annotation_level", - "message" - ] - } - }, - "images": { - "type": "array", - "description": "Adds images to the output displayed in the GitHub pull request UI. See the [`images` object](https://docs.github.com/rest/reference/checks#annotations-object-1) description for details.", - "items": { - "type": "object", - "properties": { - "alt": { - "type": "string", - "description": "The alternative text for the image." - }, - "image_url": { - "type": "string", - "description": "The full URL of the image." - }, - "caption": { - "type": "string", - "description": "A short image description." - } - }, - "required": ["alt", "image_url"] - } - } - }, - "required": ["summary"] - }, - "actions": { - "type": "array", - "description": "Possible further actions the integrator can perform, which a user may trigger. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://docs.github.com/rest/reference/checks#actions-object) description. To learn more about check runs and requested actions, see \"[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions).\"", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "The text to be displayed on a button in the web UI. The maximum size is 20 characters." - }, - "description": { - "type": "string", - "description": "A short explanation of what this action would do. The maximum size is 40 characters." - }, - "identifier": { - "type": "string", - "description": "A reference for the action on the integrator's system. The maximum size is 20 characters." - } - }, - "required": ["label", "description", "identifier"] - } - } - } - }, - "example": { - "name": "mighty_readme", - "started_at": "2018-05-04T01:14:52Z", - "status": "completed", - "conclusion": "success", - "completed_at": "2018-05-04T01:14:52Z", - "output": { - "title": "Mighty Readme report", - "summary": "There are 0 failures, 2 warnings, and 1 notices.", - "text": "You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.", - "annotations": [ - { - "path": "README.md", - "annotation_level": "warning", - "title": "Spell Checker", - "message": "Check your spelling for 'banaas'.", - "raw_details": "Do you mean 'bananas' or 'banana'?", - "start_line": 2, - "end_line": 2 - }, - { - "path": "README.md", - "annotation_level": "warning", - "title": "Spell Checker", - "message": "Check your spelling for 'aples'", - "raw_details": "Do you mean 'apples' or 'Naples'", - "start_line": 4, - "end_line": 4 - } - ], - "images": [ - { - "alt": "Super bananas", - "image_url": "http://example.com/images/42" - } - ] - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/check-run" }, - "examples": { - "default": { "$ref": "#/components/examples/check-run" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": { - "get": { - "summary": "List check run annotations", - "description": "Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth Apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository.", - "tags": ["checks"], - "operationId": "checks/list-annotations", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#list-check-run-annotations" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/check_run_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/check-annotation" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/check-annotation-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/check-suites": { - "post": { - "summary": "Create a check suite", - "description": "**Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`.\n\nBy default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/reference/checks#check-runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using \"[Update repository preferences for check suites](https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites)\". Your GitHub App must have the `checks:write` permission to create check suites.", - "tags": ["checks"], - "operationId": "checks/create-suite", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#create-a-check-suite" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "head_sha": { - "type": "string", - "description": "The sha of the head commit." - } - }, - "required": ["head_sha"] - }, - "example": { - "head_sha": "d6fde92930d4715a2b49857d24b940956b26d2d3" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/check-suite" }, - "examples": { - "default": { "$ref": "#/components/examples/check-suite" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "suites" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/check-suites/preferences": { - "patch": { - "summary": "Update repository preferences for check suites", - "description": "Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/reference/checks#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites.", - "tags": ["checks"], - "operationId": "checks/set-suites-preferences", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "auto_trigger_checks": { - "type": "array", - "description": "Enables or disables automatic creation of CheckSuite events upon pushes to the repository. Enabled by default. See the [`auto_trigger_checks` object](https://docs.github.com/rest/reference/checks#auto_trigger_checks-object) description for details.", - "items": { - "type": "object", - "properties": { - "app_id": { - "type": "integer", - "description": "The `id` of the GitHub App." - }, - "setting": { - "type": "boolean", - "description": "Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository, or `false` to disable them.", - "default": true - } - }, - "required": ["app_id", "setting"] - } - } - } - }, - "example": { - "auto_trigger_checks": [{ "app_id": 4, "setting": false }] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/check-suite-preference" - }, - "examples": { - "default": { - "$ref": "#/components/examples/check-suite-preference" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "suites" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/check-suites/{check_suite_id}": { - "get": { - "summary": "Get a check suite", - "description": "**Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`.\n\nGets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository.", - "tags": ["checks"], - "operationId": "checks/get-suite", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#get-a-check-suite" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/check_suite_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/check-suite" }, - "examples": { - "default": { "$ref": "#/components/examples/check-suite" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "suites" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": { - "get": { - "summary": "List check runs in a check suite", - "description": "**Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.\n\nLists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository.", - "tags": ["checks"], - "operationId": "checks/list-for-suite", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/check_suite_id" }, - { "$ref": "#/components/parameters/check_name" }, - { "$ref": "#/components/parameters/status" }, - { - "name": "filter", - "description": "Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["latest", "all"], - "default": "latest" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "check_runs": { - "type": "array", - "items": { "$ref": "#/components/schemas/check-run" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/check-run-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": { - "post": { - "summary": "Rerequest a check suite", - "description": "Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared.\n\nTo rerequest a check suite, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository.", - "tags": ["checks"], - "operationId": "checks/rerequest-suite", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#rerequest-a-check-suite" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/check_suite_id" } - ], - "responses": { "201": { "description": "response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "suites" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/code-scanning/alerts": { - "get": { - "summary": "List code scanning alerts for a repository", - "description": "Lists all open code scanning alerts for the default branch (usually `main` or `master`). For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. GitHub Apps must have the `security_events` read permission to use this endpoint.", - "tags": ["code-scanning"], - "operationId": "code-scanning/list-alerts-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/code-scanning/#list-code-scanning-alerts-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "state", - "description": "Set to `open`, `fixed`, or `dismissed` to list code scanning alerts in a specific state.", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/code-scanning-alert-state" - } - }, - { - "name": "ref", - "in": "query", - "description": "Set a full Git reference to list alerts for a specific branch. The `ref` must be formatted as `refs/heads/`.", - "required": false, - "schema": { "$ref": "#/components/schemas/code-scanning-alert-ref" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/code-scanning-alert-code-scanning-alert-items" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/code-scanning-alert-code-scanning-alert-items" - } - } - } - } - }, - "404": { - "description": "Response if the ref does not match an existing ref" - }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "code-scanning", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": { - "get": { - "summary": "Get a code scanning alert", - "description": "Gets a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` read permission to use this endpoint.\n\nThe security `alert_number` is found at the end of the security alert's URL. For example, the security alert ID for `https://github.com/Octo-org/octo-repo/security/code-scanning/88` is `88`.", - "tags": ["code-scanning"], - "operationId": "code-scanning/get-alert", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/code-scanning/#get-a-code-scanning-alert" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "alert_number", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/code-scanning-alert-code-scanning-alert" - }, - "examples": { - "default": { - "$ref": "#/components/examples/code-scanning-alert-code-scanning-alert" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "code-scanning", - "subcategory": null - }, - "x-octokit": { - "changes": [ - { - "type": "PARAMETER", - "date": "2020-09-17", - "parameter": "alert_number", - "before": { "name": "alert_id" } - } - ] - } - }, - "patch": { - "summary": "Update a code scanning alert", - "description": "Updates the status of a single code scanning alert. For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes.\nGitHub Apps must have the `security_events` write permission to use this endpoint.", - "operationId": "code-scanning/update-alert", - "tags": ["code-scanning"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/code-scanning/#upload-a-code-scanning-alert" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/alert_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "state": { - "$ref": "#/components/schemas/code-scanning-alert-set-state" - }, - "dismissed_reason": { - "$ref": "#/components/schemas/code-scanning-alert-dismissed-reason" - } - }, - "required": ["state"] - }, - "example": { - "state": "dismissed", - "dismissed_reason": "false positive" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/code-scanning-alert-code-scanning-alert" - }, - "examples": { - "default": { - "$ref": "#/components/examples/code-scanning-alert-code-scanning-alert-dismissed" - } - } - } - } - }, - "403": { "description": "Response if the repository is archived" }, - "503": { - "description": "Response when code scanning is not available and you should try again at a later time" - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "code-scanning" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/code-scanning/analyses": { - "get": { - "summary": "List recent code scanning analyses for a repository", - "description": "List the details of recent code scanning analyses for a repository. For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. GitHub Apps must have the `security_events` read permission to use this endpoint.", - "operationId": "code-scanning/list-recent-analyses", - "tags": ["code-scanning"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/code-scanning/#list-recent-analyses" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "in": "query", - "description": "Set a full Git reference to list alerts for a specific branch. The `ref` must be formatted as `refs/heads/`.", - "required": false, - "schema": { - "$ref": "#/components/schemas/code-scanning-analysis-ref" - } - }, - { - "name": "tool_name", - "in": "query", - "description": "Set a single code scanning tool name to filter alerts by tool.", - "required": false, - "schema": { - "$ref": "#/components/schemas/code-scanning-analysis-tool-name" - } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/code-scanning-analysis-code-scanning-analysis" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/code-scanning-analysis-code-scanning-analysis-items" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "code-scanning" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/code-scanning/sarifs": { - "post": { - "summary": "Upload a SARIF file", - "description": "Upload a SARIF file containing the results of a code scanning analysis to make the results available in a repository.\nFor private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. GitHub Apps must have the `security_events` write permission to use this endpoint.", - "operationId": "code-scanning/upload-sarif", - "tags": ["code-scanning"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/code-scanning/#upload-a-sarif-analysis" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "commit_sha": { - "$ref": "#/components/schemas/code-scanning-analysis-commit-sha" - }, - "ref": { - "$ref": "#/components/schemas/code-scanning-analysis-ref" - }, - "sarif": { - "$ref": "#/components/schemas/code-scanning-analysis-sarif-file" - }, - "checkout_uri": { - "description": "The base directory used in the analysis, as it appears in the SARIF file.\nThis property is used to convert file paths from absolute to relative, so that alerts can be mapped to their correct location in the repository.", - "example": "file:///github/workspace/", - "type": "string", - "format": "uri" - }, - "started_at": { - "description": "The time that the analysis run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.", - "format": "date", - "type": "string" - }, - "tool_name": { - "$ref": "#/components/schemas/code-scanning-analysis-tool-name" - } - }, - "required": ["commit_sha", "ref", "sarif", "tool_name"] - }, - "example": { - "commit_sha": "9a450a043b9038ba86722926570d2312cff6aba8", - "ref": "refs/heads/main", - "sarif": "REPLACE_ME", - "tool_name": "codeql" - } - } - } - }, - "responses": { - "202": { "description": "response" }, - "400": { "description": "Response if the `sarif` field is invalid" }, - "403": { "description": "Response if the repository is archived" }, - "404": { - "description": "Response if `commit_sha` or `ref` cannot be found" - }, - "413": { "description": "Response if the `sarif` field is too large" } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "code-scanning" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/collaborators": { - "get": { - "summary": "List repository collaborators", - "description": "For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.\n\nTeam members will include the members of child teams.", - "tags": ["repos"], - "operationId": "repos/list-collaborators", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-repository-collaborators" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "affiliation", - "description": "Filter collaborators returned by their affiliation. Can be one of: \n\\* `outside`: All outside collaborators of an organization-owned repository. \n\\* `direct`: All collaborators with permissions to an organization-owned repository, regardless of organization membership status. \n\\* `all`: All collaborators the authenticated user can see.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["outside", "direct", "all"], - "default": "all" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/collaborator" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/collaborator-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "collaborators" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/collaborators/{username}": { - "get": { - "summary": "Check if a user is a repository collaborator", - "description": "For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.\n\nTeam members will include the members of child teams.", - "tags": ["repos"], - "operationId": "repos/check-collaborator", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#check-if-a-user-is-a-repository-collaborator" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Response if user is a collaborator" }, - "404": { "description": "Response if user is not a collaborator" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "collaborators" - }, - "x-octokit": {} - }, - "put": { - "summary": "Add a repository collaborator", - "description": "This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.\n\nFor more information the permission levels, see \"[Repository permission levels for an organization](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)\".\n\nNote that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"\n\nThe invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [repository invitations API endpoints](https://docs.github.com/rest/reference/repos#invitations).\n\n**Rate limits**\n\nTo prevent abuse, you are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository.", - "tags": ["repos"], - "operationId": "repos/add-collaborator", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#add-a-repository-collaborator" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/username" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "permission": { - "type": "string", - "description": "The permission to grant the collaborator. **Only valid on organization-owned repositories.** Can be one of: \n\\* `pull` - can pull, but not push to or administer this repository. \n\\* `push` - can pull and push, but not administer this repository. \n\\* `admin` - can pull, push and administer this repository. \n\\* `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions. \n\\* `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access.", - "enum": ["pull", "push", "admin", "maintain", "triage"], - "default": "push" - }, - "permissions": { "type": "string", "example": "\"push\"" } - } - } - } - } - }, - "responses": { - "201": { - "description": "Response when a new invitation is created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/repository-invitation" - }, - "examples": { - "response-when-a-new-invitation-is-created": { - "$ref": "#/components/examples/repository-invitation-response-when-a-new-invitation-is-created" - } - } - } - } - }, - "204": { - "description": "Response when person is already a collaborator" - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "collaborators" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove a repository collaborator", - "description": "", - "tags": ["repos"], - "operationId": "repos/remove-collaborator", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#remove-a-repository-collaborator" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "collaborators" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/collaborators/{username}/permission": { - "get": { - "summary": "Get repository permissions for a user", - "description": "Checks the repository permission of a collaborator. The possible repository permissions are `admin`, `write`, `read`, and `none`.", - "tags": ["repos"], - "operationId": "repos/get-collaborator-permission-level", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-repository-permissions-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "200": { - "description": "Response if user has admin permissions", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/repository-collaborator-permission" - }, - "examples": { - "response-if-user-has-admin-permissions": { - "$ref": "#/components/examples/repository-collaborator-permission-response-if-user-has-admin-permissions" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "collaborators" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/comments": { - "get": { - "summary": "List commit comments for a repository", - "description": "Commit Comments use [these custom media types](https://docs.github.com/rest/reference/repos#custom-media-types). You can read more about the use of media types in the API [here](https://docs.github.com/rest/overview/media-types/).\n\nComments are ordered by ascending ID.", - "tags": ["repos"], - "operationId": "repos/list-commit-comments-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-commit-comments-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/commit-comment" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/commit-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "repos", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/comments/{comment_id}": { - "get": { - "summary": "Get a commit comment", - "description": "", - "tags": ["repos"], - "operationId": "repos/get-commit-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-commit-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/commit-comment" }, - "examples": { - "default": { "$ref": "#/components/examples/commit-comment" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "repos", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a commit comment", - "description": "", - "tags": ["repos"], - "operationId": "repos/update-commit-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#update-a-commit-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The contents of the comment" - } - }, - "required": ["body"] - }, - "example": { "body": "Nice change" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/commit-comment" }, - "examples": { - "default": { - "$ref": "#/components/examples/commit-comment-2" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a commit comment", - "description": "", - "tags": ["repos"], - "operationId": "repos/delete-commit-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-a-commit-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/comments/{comment_id}/reactions": { - "get": { - "summary": "List reactions for a commit comment", - "description": "List the reactions to a [commit comment](https://docs.github.com/rest/reference/repos#comments).", - "tags": ["reactions"], - "operationId": "reactions/list-for-commit-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#list-reactions-for-a-commit-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" }, - { - "name": "content", - "description": "Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a commit comment.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/reaction" } - }, - "examples": { - "default": { "$ref": "#/components/examples/reaction-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create reaction for a commit comment", - "description": "Create a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). A response with a `Status: 200 OK` means that you already added the reaction type to this commit comment.", - "tags": ["reactions"], - "operationId": "reactions/create-for-commit-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#create-reaction-for-a-commit-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the commit comment.", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - "required": ["content"] - }, - "example": { "content": "heart" } - } - } - }, - "responses": { - "200": { - "description": "Reaction exists", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - }, - "201": { - "description": "Reaction created", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": { - "delete": { - "summary": "Delete a commit comment reaction", - "description": "**Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`.\n\nDelete a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments).", - "tags": ["reactions"], - "operationId": "reactions/delete-for-commit-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#delete-a-commit-comment-reaction" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" }, - { "$ref": "#/components/parameters/reaction-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/commits": { - "get": { - "summary": "List commits", - "description": "**Signature verification object**\n\nThe response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |\n| `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |\n| `signature` | `string` | The signature that was extracted from the commit. |\n| `payload` | `string` | The value that was signed. |\n\nThese are the possible values for `reason` in the `verification` object:\n\n| Value | Description |\n| ----- | ----------- |\n| `expired_key` | The key that made the signature is expired. |\n| `not_signing_key` | The \"signing\" flag is not among the usage flags in the GPG key that made the signature. |\n| `gpgverify_error` | There was an error communicating with the signature verification service. |\n| `gpgverify_unavailable` | The signature verification service is currently unavailable. |\n| `unsigned` | The object does not include a signature. |\n| `unknown_signature_type` | A non-PGP signature was found in the commit. |\n| `no_user` | No user was associated with the `committer` email address in the commit. |\n| `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |\n| `unknown_key` | The key that made the signature has not been registered with any user's account. |\n| `malformed_signature` | There was an error parsing the signature. |\n| `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |\n| `valid` | None of the above errors applied, so the signature is considered to be verified. |", - "tags": ["repos"], - "operationId": "repos/list-commits", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-commits" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "sha", - "description": "SHA or branch to start listing commits from. Default: the repository’s default branch (usually `master`).", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { - "name": "path", - "description": "Only commits containing this file path will be returned.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { - "name": "author", - "description": "GitHub login or email address by which to filter by commit author.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { "$ref": "#/components/parameters/since" }, - { - "name": "until", - "description": "Only commits before this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/commit" } - }, - "examples": { - "default": { "$ref": "#/components/examples/commit-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "400": { "$ref": "#/components/responses/bad_request" }, - "404": { "$ref": "#/components/responses/not_found" }, - "409": { "$ref": "#/components/responses/conflict" }, - "500": { "$ref": "#/components/responses/internal_error" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "commits" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": { - "get": { - "summary": "List branches for HEAD commit", - "description": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nReturns all branches where the given commit SHA is the HEAD, or latest commit for the branch.", - "tags": ["repos"], - "operationId": "repos/list-branches-for-head-commit", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-branches-for-head-commit" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/commit_sha" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/branch-short" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/branch-short-items" - } - } - } - } - }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "groot", - "note": "Listing branches or pull requests for a commit in the Commits API is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2019-04-11-pulls-branches-for-commit/) for more details. To access the new endpoints during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.groot-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "commits" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/commits/{commit_sha}/comments": { - "get": { - "summary": "List commit comments", - "description": "Use the `:commit_sha` to specify the commit that will have its comments listed.", - "tags": ["repos"], - "operationId": "repos/list-comments-for-commit", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-commit-comments" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/commit_sha" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/commit-comment" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/commit-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "repos", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a commit comment", - "description": "Create a comment for a commit using its `:commit_sha`.\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.", - "tags": ["repos"], - "operationId": "repos/create-commit-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-a-commit-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/commit_sha" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The contents of the comment." - }, - "path": { - "type": "string", - "description": "Relative path of the file to comment on." - }, - "position": { - "type": "integer", - "description": "Line index in the diff to comment on." - }, - "line": { - "type": "integer", - "description": "**Deprecated**. Use **position** parameter instead. Line number in the file to comment on." - } - }, - "required": ["body"] - }, - "example": { - "body": "Great stuff", - "path": "file1.txt", - "position": 4, - "line": 1 - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/commit-comment" }, - "examples": { - "default": { "$ref": "#/components/examples/commit-comment" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/comments/1", - "schema": { "type": "string" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/commits/{commit_sha}/pulls": { - "get": { - "summary": "List pull requests associated with a commit", - "description": "Lists all pull requests containing the provided commit SHA, which can be from any point in the commit history. The results will include open and closed pull requests. Additional preview headers may be required to see certain details for associated pull requests, such as whether a pull request is in a draft state. For more information about previews that might affect this endpoint, see the [List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests) endpoint.", - "tags": ["repos"], - "operationId": "repos/list-pull-requests-associated-with-commit", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-pull-requests-associated-with-a-commit" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/commit_sha" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/pull-request-simple" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-simple-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "groot", - "note": "Listing branches or pull requests for a commit in the Commits API is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2019-04-11-pulls-branches-for-commit/) for more details. To access the new endpoints during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.groot-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "commits" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/commits/{ref}": { - "get": { - "summary": "Get a commit", - "description": "Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint.\n\n**Note:** If there are more than 300 files in the commit diff, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing.\n\nYou can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property.\n\nTo return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag.\n\n**Signature verification object**\n\nThe response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |\n| `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |\n| `signature` | `string` | The signature that was extracted from the commit. |\n| `payload` | `string` | The value that was signed. |\n\nThese are the possible values for `reason` in the `verification` object:\n\n| Value | Description |\n| ----- | ----------- |\n| `expired_key` | The key that made the signature is expired. |\n| `not_signing_key` | The \"signing\" flag is not among the usage flags in the GPG key that made the signature. |\n| `gpgverify_error` | There was an error communicating with the signature verification service. |\n| `gpgverify_unavailable` | The signature verification service is currently unavailable. |\n| `unsigned` | The object does not include a signature. |\n| `unknown_signature_type` | A non-PGP signature was found in the commit. |\n| `no_user` | No user was associated with the `committer` email address in the commit. |\n| `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |\n| `unknown_key` | The key that made the signature has not been registered with any user's account. |\n| `malformed_signature` | There was an error parsing the signature. |\n| `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |\n| `valid` | None of the above errors applied, so the signature is considered to be verified. |", - "tags": ["repos"], - "operationId": "repos/get-commit", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-commit" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "ref+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/commit" }, - "examples": { - "default": { "$ref": "#/components/examples/commit" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "500": { "$ref": "#/components/responses/internal_error" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "commits" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/commits/{ref}/check-runs": { - "get": { - "summary": "List check runs for a Git reference", - "description": "**Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.\n\nLists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository.", - "tags": ["checks"], - "operationId": "checks/list-for-ref", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#list-check-runs-for-a-git-reference" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "ref+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - { "$ref": "#/components/parameters/check_name" }, - { "$ref": "#/components/parameters/status" }, - { - "name": "filter", - "description": "Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["latest", "all"], - "default": "latest" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "check_runs": { - "type": "array", - "items": { "$ref": "#/components/schemas/check-run" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/check-run-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "runs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/commits/{ref}/check-suites": { - "get": { - "summary": "List check suites for a Git reference", - "description": "**Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`.\n\nLists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository.", - "tags": ["checks"], - "operationId": "checks/list-suites-for-ref", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "ref+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "app_id", - "description": "Filters check suites by GitHub App `id`.", - "in": "query", - "required": false, - "schema": { "type": "integer" }, - "example": 1 - }, - { "$ref": "#/components/parameters/check_name" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "check_suites": { - "type": "array", - "items": { "$ref": "#/components/schemas/check-suite" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/check-suite-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "checks", - "subcategory": "suites" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/commits/{ref}/status": { - "get": { - "summary": "Get the combined status for a specific reference", - "description": "Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name.\n\nThe most recent status for each context is returned, up to 100. This field [paginates](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination) if there are over 100 contexts.\n\nAdditionally, a combined `state` is returned. The `state` is one of:\n\n* **failure** if any of the contexts report as `error` or `failure`\n* **pending** if there are no statuses or a context is `pending`\n* **success** if the latest status for all contexts is `success`", - "tags": ["repos"], - "operationId": "repos/get-combined-status-for-ref", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-the-combined-status-for-a-specific-reference" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "ref+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/combined-commit-status" - }, - "examples": { - "default": { - "$ref": "#/components/examples/combined-commit-status" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "statuses" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/commits/{ref}/statuses": { - "get": { - "summary": "List commit statuses for a reference", - "description": "Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one.\n\nThis resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`.", - "tags": ["repos"], - "operationId": "repos/list-commit-statuses-for-ref", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-commit-statuses-for-a-reference" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "ref+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/status" } - }, - "examples": { - "default": { "$ref": "#/components/examples/status-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "301": { "$ref": "#/components/responses/moved_permanently" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "statuses" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/community/code_of_conduct": { - "get": { - "summary": "Get the code of conduct for a repository", - "description": "This method returns the contents of the repository's code of conduct file, if one is detected.", - "tags": ["codes-of-conduct"], - "operationId": "codes-of-conduct/get-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/codes_of_conduct/#get-the-code-of-conduct-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/code-of-conduct" }, - "examples": { - "default": { - "$ref": "#/components/examples/code-of-conduct-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "scarlet-witch", - "note": "The Codes of Conduct API is currently available for developers to preview.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.scarlet-witch-preview+json\n```" - } - ], - "category": "codes-of-conduct", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/community/profile": { - "get": { - "summary": "Get community profile metrics", - "description": "This endpoint will return all community profile metrics, including an\noverall health score, repository description, the presence of documentation, detected\ncode of conduct, detected license, and the presence of ISSUE\\_TEMPLATE, PULL\\_REQUEST\\_TEMPLATE,\nREADME, and CONTRIBUTING files.\n\n`content_reports_enabled` is only returned for organization-owned repositories.", - "tags": ["repos"], - "operationId": "repos/get-community-profile-metrics", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-community-profile-metrics" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/community-profile" }, - "examples": { - "default": { - "$ref": "#/components/examples/community-profile" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "category": "repos", - "subcategory": "community" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/compare/{base}...{head}": { - "get": { - "summary": "Compare two commits", - "description": "Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `:branch`.\n\nThe response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.\n\nThe response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file.\n\n**Working with large comparisons**\n\nThe response will include a comparison of up to 250 commits. If you are working with a larger commit range, you can use the [List commits](https://docs.github.com/rest/reference/repos#list-commits) to enumerate all commits in the range.\n\nFor comparisons with extremely large diffs, you may receive an error response indicating that the diff took too long\nto generate. You can typically resolve this error by using a smaller commit range.\n\n**Signature verification object**\n\nThe response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |\n| `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |\n| `signature` | `string` | The signature that was extracted from the commit. |\n| `payload` | `string` | The value that was signed. |\n\nThese are the possible values for `reason` in the `verification` object:\n\n| Value | Description |\n| ----- | ----------- |\n| `expired_key` | The key that made the signature is expired. |\n| `not_signing_key` | The \"signing\" flag is not among the usage flags in the GPG key that made the signature. |\n| `gpgverify_error` | There was an error communicating with the signature verification service. |\n| `gpgverify_unavailable` | The signature verification service is currently unavailable. |\n| `unsigned` | The object does not include a signature. |\n| `unknown_signature_type` | A non-PGP signature was found in the commit. |\n| `no_user` | No user was associated with the `committer` email address in the commit. |\n| `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |\n| `unknown_key` | The key that made the signature has not been registered with any user's account. |\n| `malformed_signature` | There was an error parsing the signature. |\n| `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |\n| `valid` | None of the above errors applied, so the signature is considered to be verified. |", - "tags": ["repos"], - "operationId": "repos/compare-commits", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#compare-two-commits" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "base", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "head", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/commit-comparison" }, - "examples": { - "default": { - "$ref": "#/components/examples/commit-comparison" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "500": { "$ref": "#/components/responses/internal_error" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "commits" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/contents/{path}": { - "get": { - "summary": "Get repository content", - "description": "Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit\n`:path`, you will receive the contents of all files in the repository.\n\nFiles and symlinks support [a custom media type](https://docs.github.com/rest/reference/repos#custom-media-types) for\nretrieving the raw content or rendered HTML (when supported). All content types support [a custom media\ntype](https://docs.github.com/rest/reference/repos#custom-media-types) to ensure the content is returned in a consistent\nobject format.\n\n**Note**:\n* To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/reference/git#trees).\n* This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees\nAPI](https://docs.github.com/rest/reference/git#get-a-tree).\n* This API supports files up to 1 megabyte in size.\n\n#### If the content is a directory\nThe response will be an array of objects, one object for each item in the directory.\nWhen listing the contents of a directory, submodules have their \"type\" specified as \"file\". Logically, the value\n_should_ be \"submodule\". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW).\nIn the next major version of the API, the type will be returned as \"submodule\".\n\n#### If the content is a symlink \nIf the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the\nAPI responds with the content of the file (in the format shown in the example. Otherwise, the API responds with an object \ndescribing the symlink itself.\n\n#### If the content is a submodule\nThe `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific\ncommit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out\nthe submodule at that specific commit.\n\nIf the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links[\"git\"]`) and the\ngithub.com URLs (`html_url` and `_links[\"html\"]`) will have null values.", - "tags": ["repos"], - "operationId": "repos/get-content", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-repository-content" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "path", - "description": "path+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "ref", - "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", - "in": "query", - "required": false, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/vnd.github.v3.object": { - "schema": { "$ref": "#/components/schemas/content-tree" } - }, - "application/json": { - "schema": { - "oneOf": [ - { "$ref": "#/components/schemas/content-directory" }, - { "$ref": "#/components/schemas/content-file" }, - { "$ref": "#/components/schemas/content-symlink" }, - { "$ref": "#/components/schemas/content-submodule" } - ] - }, - "examples": { - "response-if-content-is-a-file": { - "$ref": "#/components/examples/content-file-response-if-content-is-a-file" - }, - "response-if-content-is-a-directory": { - "$ref": "#/components/examples/content-file-response-if-content-is-a-directory" - }, - "response-if-content-is-a-symlink": { - "$ref": "#/components/examples/content-file-response-if-content-is-a-symlink" - }, - "response-if-content-is-a-submodule": { - "$ref": "#/components/examples/content-file-response-if-content-is-a-submodule" - } - } - } - } - }, - "302": { "$ref": "#/components/responses/found" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "contents" - }, - "x-octokit": {} - }, - "put": { - "summary": "Create or update file contents", - "description": "Creates a new file or replaces an existing file in a repository.", - "tags": ["repos"], - "operationId": "repos/create-or-update-file-contents", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-or-update-file-contents" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "path", - "description": "path+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The commit message." - }, - "content": { - "type": "string", - "description": "The new file content, using Base64 encoding." - }, - "sha": { - "type": "string", - "description": "**Required if you are updating a file**. The blob SHA of the file being replaced." - }, - "branch": { - "type": "string", - "description": "The branch name. Default: the repository’s default branch (usually `master`)" - }, - "committer": { - "type": "object", - "description": "The person that committed the file. Default: the authenticated user.", - "properties": { - "name": { - "type": "string", - "description": "The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted." - }, - "email": { - "type": "string", - "description": "The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted." - }, - "date": { - "type": "string", - "example": "\"2013-01-05T13:13:22+05:00\"" - } - }, - "required": ["name", "email"] - }, - "author": { - "type": "object", - "description": "The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.", - "properties": { - "name": { - "type": "string", - "description": "The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted." - }, - "email": { - "type": "string", - "description": "The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted." - }, - "date": { - "type": "string", - "example": "\"2013-01-15T17:13:22+05:00\"" - } - }, - "required": ["name", "email"] - } - }, - "required": ["message", "content"] - }, - "examples": { - "example-for-creating-a-file": { - "summary": "Example for creating a file", - "value": { - "message": "my commit message", - "committer": { - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "content": "bXkgbmV3IGZpbGUgY29udGVudHM=" - } - }, - "example-for-updating-a-file": { - "summary": "Example for updating a file", - "value": { - "message": "a new commit message", - "committer": { - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "content": "bXkgdXBkYXRlZCBmaWxlIGNvbnRlbnRz", - "sha": "95b966ae1c166bd92f8ae7d1c313e738c731dfc3" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/file-commit" }, - "examples": { - "example-for-updating-a-file": { - "$ref": "#/components/examples/file-commit-example-for-updating-a-file" - } - } - } - } - }, - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/file-commit" }, - "examples": { - "example-for-creating-a-file": { - "$ref": "#/components/examples/file-commit-example-for-creating-a-file" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "409": { "$ref": "#/components/responses/conflict" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "contents" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a file", - "description": "Deletes a file in a repository.\n\nYou can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author.\n\nThe `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used.\n\nYou must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code.", - "tags": ["repos"], - "operationId": "repos/delete-file", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-a-file" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "path", - "description": "path+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The commit message." - }, - "sha": { - "type": "string", - "description": "The blob SHA of the file being replaced." - }, - "branch": { - "type": "string", - "description": "The branch name. Default: the repository’s default branch (usually `master`)" - }, - "committer": { - "type": "object", - "description": "object containing information about the committer.", - "properties": { - "name": { - "type": "string", - "description": "The name of the author (or committer) of the commit" - }, - "email": { - "type": "string", - "description": "The email of the author (or committer) of the commit" - } - } - }, - "author": { - "type": "object", - "description": "object containing information about the author.", - "properties": { - "name": { - "type": "string", - "description": "The name of the author (or committer) of the commit" - }, - "email": { - "type": "string", - "description": "The email of the author (or committer) of the commit" - } - } - } - }, - "required": ["message", "sha"] - }, - "example": { - "message": "my commit message", - "committer": { - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "sha": "329688480d39049927147c162b9d2deaf885005f" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/file-commit" }, - "examples": { - "default": { "$ref": "#/components/examples/file-commit" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "409": { "$ref": "#/components/responses/conflict" }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "contents" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/contributors": { - "get": { - "summary": "List repository contributors", - "description": "Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API v3 caches contributor data to improve performance.\n\nGitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information.", - "tags": ["repos"], - "operationId": "repos/list-contributors", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#list-repository-contributors" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "anon", - "description": "Set to `1` or `true` to include anonymous contributors in results.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "Response if repository contains content", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/contributor" } - }, - "examples": { - "response-if-repository-contains-content": { - "$ref": "#/components/examples/contributor-items-response-if-repository-contains-content" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "204": { "description": "Response if repository is empty" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/deployments": { - "get": { - "summary": "List deployments", - "description": "Simple filtering of deployments is available via query parameters:", - "tags": ["repos"], - "operationId": "repos/list-deployments", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-deployments" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "sha", - "description": "The SHA recorded at creation time.", - "in": "query", - "required": false, - "schema": { "type": "string", "default": "none" } - }, - { - "name": "ref", - "description": "The name of the ref. This can be a branch, tag, or SHA.", - "in": "query", - "required": false, - "schema": { "type": "string", "default": "none" } - }, - { - "name": "task", - "description": "The name of the task for the deployment (e.g., `deploy` or `deploy:migrations`).", - "in": "query", - "required": false, - "schema": { "type": "string", "default": "none" } - }, - { - "name": "environment", - "description": "The name of the environment that was deployed to (e.g., `staging` or `production`).", - "in": "query", - "required": false, - "schema": { "type": "string", "default": "none" } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/deployment" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/deployment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "ant-man", - "note": "The `inactive` state and the `log_url`, `environment_url`, and `auto_inactive` parameters are currently available for developers to preview. Please see the [blog post](https://developer.github.com/changes/2016-04-06-deployment-and-deployment-status-enhancements) for full details.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.ant-man-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "deployments" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a deployment", - "description": "Deployments offer a few configurable parameters with certain defaults.\n\nThe `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them\nbefore we merge a pull request.\n\nThe `environment` parameter allows deployments to be issued to different runtime environments. Teams often have\nmultiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter\nmakes it easier to track which environments have requested deployments. The default environment is `production`.\n\nThe `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If\nthe ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds,\nthe API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will\nreturn a failure response.\n\nBy default, [commit statuses](https://docs.github.com/rest/reference/repos#statuses) for every submitted context must be in a `success`\nstate. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to\nspecify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do\nnot require any contexts or create any commit statuses, the deployment will always succeed.\n\nThe `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text\nfield that will be passed on when a deployment event is dispatched.\n\nThe `task` parameter is used by the deployment system to allow different execution paths. In the web world this might\nbe `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an\napplication with debugging enabled.\n\nUsers with `repo` or `repo_deployment` scopes can create a deployment for a given ref.\n\n#### Merged branch response\nYou will see this response when GitHub automatically merges the base branch into the topic branch instead of creating\na deployment. This auto-merge happens when:\n* Auto-merge option is enabled in the repository\n* Topic branch does not include the latest changes on the base branch, which is `master` in the response example\n* There are no merge conflicts\n\nIf there are no new commits in the base branch, a new request to create a deployment should give a successful\nresponse.\n\n#### Merge conflict response\nThis error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't\nbe merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts.\n\n#### Failed commit status checks\nThis error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success`\nstatus for the commit to be deployed, but one or more of the required contexts do not have a state of `success`.", - "tags": ["repos"], - "operationId": "repos/create-deployment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-a-deployment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "ref": { - "type": "string", - "description": "The ref to deploy. This can be a branch, tag, or SHA." - }, - "task": { - "type": "string", - "description": "Specifies a task to execute (e.g., `deploy` or `deploy:migrations`).", - "default": "deploy" - }, - "auto_merge": { - "type": "boolean", - "description": "Attempts to automatically merge the default branch into the requested ref, if it's behind the default branch.", - "default": true - }, - "required_contexts": { - "type": "array", - "description": "The [status](https://docs.github.com/rest/reference/repos#statuses) contexts to verify against commit status checks. If you omit this parameter, GitHub verifies all unique contexts before creating a deployment. To bypass checking entirely, pass an empty array. Defaults to all unique contexts.", - "items": { "type": "string" } - }, - "payload": { - "type": "string", - "description": "JSON payload with extra information about the deployment.", - "default": "" - }, - "environment": { - "type": "string", - "description": "Name for the target deployment environment (e.g., `production`, `staging`, `qa`).", - "default": "production" - }, - "description": { - "type": "string", - "description": "Short description of the deployment.", - "default": "", - "nullable": true - }, - "transient_environment": { - "type": "boolean", - "description": "Specifies if the given environment is specific to the deployment and will no longer exist at some point in the future. Default: `false` \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type.", - "default": false - }, - "production_environment": { - "type": "boolean", - "description": "Specifies if the given environment is one that end-users directly interact with. Default: `true` when `environment` is `production` and `false` otherwise. \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type." - }, - "created_at": { - "type": "string", - "example": "\"1776-07-04T00:00:00.000-07:52\"" - } - }, - "required": ["ref"] - }, - "examples": { - "simple-example": { - "summary": "Simple example", - "value": { - "ref": "topic-branch", - "payload": "{ \"deploy\": \"migrate\" }", - "description": "Deploy request from hubot" - } - }, - "advanced-example": { - "summary": "Advanced example", - "value": { - "ref": "topic-branch", - "auto_merge": false, - "payload": "{ \"deploy\": \"migrate\" }", - "description": "Deploy request from hubot", - "required_contexts": ["ci/janky", "security/brakeman"] - } - } - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/deployment" }, - "examples": { - "simple-example": { - "$ref": "#/components/examples/deployment-simple-example" - }, - "advanced-example": { - "$ref": "#/components/examples/deployment-advanced-example" - } - } - } - } - }, - "202": { - "description": "Merged branch response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { "message": { "type": "string" } } - }, - "examples": { - "merged-branch-response": { - "value": { - "message": "Auto-merged master into topic-branch on deployment." - } - } - } - } - } - }, - "409": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { - "type": "string", - "example": "\"https://docs.github.com/rest/reference/repos#create-a-deployment\"" - } - } - }, - "examples": { - "merge-conflict-response": { - "summary": "Merge conflict response", - "value": { - "message": "Conflict merging master into topic-branch" - } - }, - "failed-commit-status-checks": { - "summary": "Failed commit status checks", - "value": { - "message": "Conflict: Commit status checks failed for topic-branch." - } - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "ant-man", - "note": "The `inactive` state and the `log_url`, `environment_url`, and `auto_inactive` parameters are currently available for developers to preview. Please see the [blog post](https://developer.github.com/changes/2016-04-06-deployment-and-deployment-status-enhancements) for full details.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.ant-man-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "deployments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/deployments/{deployment_id}": { - "get": { - "summary": "Get a deployment", - "description": "", - "tags": ["repos"], - "operationId": "repos/get-deployment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-deployment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/deployment_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/deployment" }, - "examples": { - "default": { "$ref": "#/components/examples/deployment" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "ant-man", - "note": "The `inactive` state and the `log_url`, `environment_url`, and `auto_inactive` parameters are currently available for developers to preview. Please see the [blog post](https://developer.github.com/changes/2016-04-06-deployment-and-deployment-status-enhancements) for full details.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.ant-man-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "deployments" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a deployment", - "description": "To ensure there can always be an active deployment, you can only delete an _inactive_ deployment. Anyone with `repo` or `repo_deployment` scopes can delete an inactive deployment.\n\nTo set a deployment as inactive, you must:\n\n* Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment.\n* Mark the active deployment as inactive by adding any non-successful deployment status.\n\nFor more information, see \"[Create a deployment](https://docs.github.com/rest/reference/repos/deployments/#create-a-deployment)\" and \"[Create a deployment status](https://docs.github.com/rest/reference/repos#create-a-deployment-status).\"", - "tags": ["repos"], - "operationId": "repos/delete-deployment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-a-deployment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/deployment_id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "deployments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses": { - "get": { - "summary": "List deployment statuses", - "description": "Users with pull access can view deployment statuses for a deployment:", - "tags": ["repos"], - "operationId": "repos/list-deployment-statuses", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-deployment-statuses" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/deployment_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/deployment-status" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/deployment-status-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "flash", - "note": "New features in the Deployments API on GitHub are currently available during a public beta. Please see the [blog post](https://developer.github.com/changes/2018-10-16-deployments-environments-states-and-auto-inactive-updates/) for full details.\n\nTo access the new `environment` parameter, the two new values for the `state` parameter (`in_progress` and `queued`), and use `auto_inactive` on production deployments during the public beta period, you must provide the following custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.flash-preview+json\n```" - }, - { - "required": false, - "name": "ant-man", - "note": "The `inactive` state and the `log_url`, `environment_url`, and `auto_inactive` parameters are currently available for developers to preview. Please see the [blog post](https://developer.github.com/changes/2016-04-06-deployment-and-deployment-status-enhancements) for full details.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.ant-man-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "deployments" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a deployment status", - "description": "Users with `push` access can create deployment statuses for a given deployment.\n\nGitHub Apps require `read & write` access to \"Deployments\" and `read-only` access to \"Repo contents\" (for private repos). OAuth Apps require the `repo_deployment` scope.", - "tags": ["repos"], - "operationId": "repos/create-deployment-status", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-a-deployment-status" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/deployment_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "state": { - "type": "string", - "description": "The state of the status. Can be one of `error`, `failure`, `inactive`, `in_progress`, `queued` `pending`, or `success`. **Note:** To use the `inactive` state, you must provide the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. To use the `in_progress` and `queued` states, you must provide the [`application/vnd.github.flash-preview+json`](https://docs.github.com/rest/overview/api-previews#deployment-statuses) custom media type. When you set a transient deployment to `inactive`, the deployment will be shown as `destroyed` in GitHub.", - "enum": [ - "error", - "failure", - "inactive", - "in_progress", - "queued", - "pending", - "success" - ] - }, - "target_url": { - "type": "string", - "description": "The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. **Note:** It's recommended to use the `log_url` parameter, which replaces `target_url`.", - "default": "" - }, - "log_url": { - "type": "string", - "description": "The full URL of the deployment's output. This parameter replaces `target_url`. We will continue to accept `target_url` to support legacy uses, but we recommend replacing `target_url` with `log_url`. Setting `log_url` will automatically set `target_url` to the same value. Default: `\"\"` \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type.", - "default": "" - }, - "description": { - "type": "string", - "description": "A short description of the status. The maximum description length is 140 characters.", - "default": "" - }, - "environment": { - "type": "string", - "description": "Name for the target deployment environment, which can be changed when setting a deploy status. For example, `production`, `staging`, or `qa`. **Note:** This parameter requires you to use the [`application/vnd.github.flash-preview+json`](https://docs.github.com/rest/overview/api-previews#deployment-statuses) custom media type.", - "enum": ["production", "staging", "qa"] - }, - "environment_url": { - "type": "string", - "description": "Sets the URL for accessing your environment. Default: `\"\"` \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type.", - "default": "" - }, - "auto_inactive": { - "type": "boolean", - "description": "Adds a new `inactive` status to all prior non-transient, non-production environment deployments with the same repository and `environment` name as the created status's deployment. An `inactive` status is only added to deployments that had a `success` state. Default: `true` \n**Note:** To add an `inactive` status to `production` environments, you must use the [`application/vnd.github.flash-preview+json`](https://docs.github.com/rest/overview/api-previews#deployment-statuses) custom media type. \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type." - } - }, - "required": ["state"] - }, - "example": { - "environment": "production", - "state": "success", - "log_url": "https://example.com/deployment/42/output", - "description": "Deployment finished successfully." - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/deployment-status" }, - "examples": { - "default": { - "$ref": "#/components/examples/deployment-status" - } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/example/deployments/42/statuses/1", - "schema": { "type": "string" } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "flash", - "note": "New features in the Deployments API on GitHub are currently available during a public beta. Please see the [blog post](https://developer.github.com/changes/2018-10-16-deployments-environments-states-and-auto-inactive-updates/) for full details.\n\nTo access the new `environment` parameter, the two new values for the `state` parameter (`in_progress` and `queued`), and use `auto_inactive` on production deployments during the public beta period, you must provide the following custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.flash-preview+json\n```" - }, - { - "required": false, - "name": "ant-man", - "note": "The `inactive` state and the `log_url`, `environment_url`, and `auto_inactive` parameters are currently available for developers to preview. Please see the [blog post](https://developer.github.com/changes/2016-04-06-deployment-and-deployment-status-enhancements) for full details.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.ant-man-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "deployments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": { - "get": { - "summary": "Get a deployment status", - "description": "Users with pull access can view a deployment status for a deployment:", - "tags": ["repos"], - "operationId": "repos/get-deployment-status", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-deployment-status" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/deployment_id" }, - { - "name": "status_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/deployment-status" }, - "examples": { - "default": { - "$ref": "#/components/examples/deployment-status" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "flash", - "note": "New features in the Deployments API on GitHub are currently available during a public beta. Please see the [blog post](https://developer.github.com/changes/2018-10-16-deployments-environments-states-and-auto-inactive-updates/) for full details.\n\nTo access the new `environment` parameter, the two new values for the `state` parameter (`in_progress` and `queued`), and use `auto_inactive` on production deployments during the public beta period, you must provide the following custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.flash-preview+json\n```" - }, - { - "required": false, - "name": "ant-man", - "note": "The `inactive` state and the `log_url`, `environment_url`, and `auto_inactive` parameters are currently available for developers to preview. Please see the [blog post](https://developer.github.com/changes/2016-04-06-deployment-and-deployment-status-enhancements) for full details.\n\nTo access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.ant-man-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "deployments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/dispatches": { - "post": { - "summary": "Create a repository dispatch event", - "description": "You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see \"[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch).\"\n\nThe `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow.\n\nTo give you write access to the repository, you must use a personal access token with the `repo` scope. For more information, see \"[Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line)\" in the GitHub Help documentation.\n\nThis input example shows how you can use the `client_payload` as a test to debug your workflow.", - "tags": ["repos"], - "operationId": "repos/create-dispatch-event", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#create-a-repository-dispatch-event" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "required": ["event_type"], - "properties": { - "event_type": { - "type": "string", - "description": "A custom webhook event name." - }, - "client_payload": { - "type": "object", - "description": "JSON payload with extra information about the webhook event that your action or worklow may use.", - "additionalProperties": true - } - } - }, - "example": { - "event_type": "on-demand-test", - "client_payload": { "unit": false, "integration": true } - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/events": { - "get": { - "summary": "List repository events", - "description": "", - "tags": ["activity"], - "operationId": "activity/list-repo-events", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-repository-events" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/event" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/forks": { - "get": { - "summary": "List forks", - "description": "", - "tags": ["repos"], - "operationId": "repos/list-forks", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-forks" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "sort", - "description": "The sort order. Can be either `newest`, `oldest`, or `stargazers`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["newest", "oldest", "stargazers"], - "default": "newest" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/minimal-repository-items-2" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "400": { "$ref": "#/components/responses/bad_request" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "forks" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a fork", - "description": "Create a fork for the authenticated user.\n\n**Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://github.com/contact) or [GitHub Premium Support](https://premium.githubsupport.com).", - "tags": ["repos"], - "operationId": "repos/create-fork", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-a-fork" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "organization": { - "type": "string", - "description": "Optional parameter to specify the organization name if forking into an organization." - } - } - } - } - } - }, - "responses": { - "202": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/repository" }, - "examples": { - "default": { "$ref": "#/components/examples/repository" } - } - } - } - }, - "400": { "$ref": "#/components/responses/bad_request" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "forks" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/blobs": { - "post": { - "summary": "Create a blob", - "description": "", - "tags": ["git"], - "operationId": "git/create-blob", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#create-a-blob" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The new blob's content." - }, - "encoding": { - "type": "string", - "description": "The encoding used for `content`. Currently, `\"utf-8\"` and `\"base64\"` are supported.", - "default": "utf-8" - } - }, - "required": ["content"] - }, - "example": { - "content": "Content of the blob", - "encoding": "utf-8" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/short-blob" }, - "examples": { - "default": { "$ref": "#/components/examples/short-blob" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/example/git/blobs/3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15", - "schema": { "type": "string" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "409": { "$ref": "#/components/responses/conflict" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "blobs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/blobs/{file_sha}": { - "get": { - "summary": "Get a blob", - "description": "The `content` in the response will always be Base64 encoded.\n\n_Note_: This API supports blobs up to 100 megabytes in size.", - "tags": ["git"], - "operationId": "git/get-blob", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#get-a-blob" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "file_sha", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/blob" }, - "examples": { - "default": { "$ref": "#/components/examples/blob" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "blobs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/commits": { - "post": { - "summary": "Create a commit", - "description": "Creates a new Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects).\n\n**Signature verification object**\n\nThe response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |\n| `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |\n| `signature` | `string` | The signature that was extracted from the commit. |\n| `payload` | `string` | The value that was signed. |\n\nThese are the possible values for `reason` in the `verification` object:\n\n| Value | Description |\n| ----- | ----------- |\n| `expired_key` | The key that made the signature is expired. |\n| `not_signing_key` | The \"signing\" flag is not among the usage flags in the GPG key that made the signature. |\n| `gpgverify_error` | There was an error communicating with the signature verification service. |\n| `gpgverify_unavailable` | The signature verification service is currently unavailable. |\n| `unsigned` | The object does not include a signature. |\n| `unknown_signature_type` | A non-PGP signature was found in the commit. |\n| `no_user` | No user was associated with the `committer` email address in the commit. |\n| `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |\n| `unknown_key` | The key that made the signature has not been registered with any user's account. |\n| `malformed_signature` | There was an error parsing the signature. |\n| `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |\n| `valid` | None of the above errors applied, so the signature is considered to be verified. |", - "tags": ["git"], - "operationId": "git/create-commit", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#create-a-commit" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The commit message" - }, - "tree": { - "type": "string", - "description": "The SHA of the tree object this commit points to" - }, - "parents": { - "type": "array", - "description": "The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided.", - "items": { "type": "string" } - }, - "author": { - "type": "object", - "description": "Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details.", - "properties": { - "name": { - "type": "string", - "description": "The name of the author (or committer) of the commit" - }, - "email": { - "type": "string", - "description": "The email of the author (or committer) of the commit" - }, - "date": { - "type": "string", - "description": "Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`." - } - } - }, - "committer": { - "type": "object", - "description": "Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details.", - "properties": { - "name": { - "type": "string", - "description": "The name of the author (or committer) of the commit" - }, - "email": { - "type": "string", - "description": "The email of the author (or committer) of the commit" - }, - "date": { - "type": "string", - "description": "Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`." - } - } - }, - "signature": { - "type": "string", - "description": "The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits." - } - }, - "required": ["message", "tree"] - }, - "example": { - "message": "my commit message", - "author": { - "name": "Mona Octocat", - "email": "octocat@github.com", - "date": "2008-07-09T16:13:30+12:00" - }, - "parents": ["7d1b31e74ee336d15cbd21741bc88a537ed063a0"], - "tree": "827efc6d56897b048c772eb4087f854f46256132", - "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABAQAdFiEESn/54jMNIrGSE6Tp6cQjvhfv7nAFAlnT71cACgkQ6cQjvhfv\n7nCWwA//XVqBKWO0zF+bZl6pggvky3Oc2j1pNFuRWZ29LXpNuD5WUGXGG209B0hI\nDkmcGk19ZKUTnEUJV2Xd0R7AW01S/YSub7OYcgBkI7qUE13FVHN5ln1KvH2all2n\n2+JCV1HcJLEoTjqIFZSSu/sMdhkLQ9/NsmMAzpf/iIM0nQOyU4YRex9eD1bYj6nA\nOQPIDdAuaTQj1gFPHYLzM4zJnCqGdRlg0sOM/zC5apBNzIwlgREatOYQSCfCKV7k\nnrU34X8b9BzQaUx48Qa+Dmfn5KQ8dl27RNeWAqlkuWyv3pUauH9UeYW+KyuJeMkU\n+NyHgAsWFaCFl23kCHThbLStMZOYEnGagrd0hnm1TPS4GJkV4wfYMwnI4KuSlHKB\njHl3Js9vNzEUQipQJbgCgTiWvRJoK3ENwBTMVkKHaqT4x9U4Jk/XZB6Q8MA09ezJ\n3QgiTjTAGcum9E9QiJqMYdWQPWkaBIRRz5cET6HPB48YNXAAUsfmuYsGrnVLYbG+\nUpC6I97VybYHTy2O9XSGoaLeMI9CsFn38ycAxxbWagk5mhclNTP5mezIq6wKSwmr\nX11FW3n1J23fWZn5HJMBsRnUCgzqzX3871IqLYHqRJ/bpZ4h20RhTyPj5c/z7QXp\neSakNQMfbbMcljkha+ZMuVQX1K9aRlVqbmv3ZMWh+OijLYVU2bc=\n=5Io4\n-----END PGP SIGNATURE-----\n" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/git-commit" }, - "examples": { - "default": { "$ref": "#/components/examples/git-commit" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd", - "schema": { "type": "string" } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "commits" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/commits/{commit_sha}": { - "get": { - "summary": "Get a commit", - "description": "Gets a Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects).\n\n**Signature verification object**\n\nThe response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |\n| `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |\n| `signature` | `string` | The signature that was extracted from the commit. |\n| `payload` | `string` | The value that was signed. |\n\nThese are the possible values for `reason` in the `verification` object:\n\n| Value | Description |\n| ----- | ----------- |\n| `expired_key` | The key that made the signature is expired. |\n| `not_signing_key` | The \"signing\" flag is not among the usage flags in the GPG key that made the signature. |\n| `gpgverify_error` | There was an error communicating with the signature verification service. |\n| `gpgverify_unavailable` | The signature verification service is currently unavailable. |\n| `unsigned` | The object does not include a signature. |\n| `unknown_signature_type` | A non-PGP signature was found in the commit. |\n| `no_user` | No user was associated with the `committer` email address in the commit. |\n| `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |\n| `unknown_key` | The key that made the signature has not been registered with any user's account. |\n| `malformed_signature` | There was an error parsing the signature. |\n| `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |\n| `valid` | None of the above errors applied, so the signature is considered to be verified. |", - "tags": ["git"], - "operationId": "git/get-commit", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#get-a-commit" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/commit_sha" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/git-commit" }, - "examples": { - "default": { "$ref": "#/components/examples/git-commit-2" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "commits" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/matching-refs/{ref}": { - "get": { - "summary": "List matching references", - "description": "Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array.\n\nWhen you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`.\n\n**Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see \"[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)\".\n\nIf you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`.", - "tags": ["git"], - "operationId": "git/list-matching-refs", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#list-matching-references" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "ref+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/git-ref" } - }, - "examples": { - "default": { "$ref": "#/components/examples/git-ref-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "refs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/ref/{ref}": { - "get": { - "summary": "Get a reference", - "description": "Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned.\n\n**Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see \"[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)\".", - "tags": ["git"], - "operationId": "git/get-ref", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#get-a-reference" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "ref+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/git-ref" }, - "examples": { - "default": { "$ref": "#/components/examples/git-ref" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "refs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/refs": { - "post": { - "summary": "Create a reference", - "description": "Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches.", - "tags": ["git"], - "operationId": "git/create-ref", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#create-a-reference" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "ref": { - "type": "string", - "description": "The name of the fully qualified reference (ie: `refs/heads/master`). If it doesn't start with 'refs' and have at least two slashes, it will be rejected." - }, - "sha": { - "type": "string", - "description": "The SHA1 value for this reference." - }, - "key": { - "type": "string", - "example": "\"refs/heads/newbranch\"" - } - }, - "required": ["ref", "sha"] - }, - "example": { - "ref": "refs/heads/featureA", - "sha": "aa218f56b14c9653891f9e74264a383fa43fefbd" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/git-ref" }, - "examples": { - "default": { "$ref": "#/components/examples/git-ref" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA", - "schema": { "type": "string" } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "refs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/refs/{ref}": { - "patch": { - "summary": "Update a reference", - "description": "", - "tags": ["git"], - "operationId": "git/update-ref", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#update-a-reference" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "ref+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "sha": { - "type": "string", - "description": "The SHA1 value to set this reference to" - }, - "force": { - "type": "boolean", - "description": "Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to `false` will make sure you're not overwriting work.", - "default": false - } - }, - "required": ["sha"] - }, - "example": { - "sha": "aa218f56b14c9653891f9e74264a383fa43fefbd", - "force": true - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/git-ref" }, - "examples": { - "default": { "$ref": "#/components/examples/git-ref" } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "refs" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a reference", - "description": "", - "tags": ["git"], - "operationId": "git/delete-ref", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#delete-a-reference" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "ref+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "204": { "description": "Empty response" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "refs" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/tags": { - "post": { - "summary": "Create a tag object", - "description": "Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/reference/git#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/reference/git#create-a-reference) the tag reference - this call would be unnecessary.\n\n**Signature verification object**\n\nThe response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |\n| `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |\n| `signature` | `string` | The signature that was extracted from the commit. |\n| `payload` | `string` | The value that was signed. |\n\nThese are the possible values for `reason` in the `verification` object:\n\n| Value | Description |\n| ----- | ----------- |\n| `expired_key` | The key that made the signature is expired. |\n| `not_signing_key` | The \"signing\" flag is not among the usage flags in the GPG key that made the signature. |\n| `gpgverify_error` | There was an error communicating with the signature verification service. |\n| `gpgverify_unavailable` | The signature verification service is currently unavailable. |\n| `unsigned` | The object does not include a signature. |\n| `unknown_signature_type` | A non-PGP signature was found in the commit. |\n| `no_user` | No user was associated with the `committer` email address in the commit. |\n| `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |\n| `unknown_key` | The key that made the signature has not been registered with any user's account. |\n| `malformed_signature` | There was an error parsing the signature. |\n| `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |\n| `valid` | None of the above errors applied, so the signature is considered to be verified. |", - "tags": ["git"], - "operationId": "git/create-tag", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#create-a-tag-object" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "tag": { - "type": "string", - "description": "The tag's name. This is typically a version (e.g., \"v0.0.1\")." - }, - "message": { - "type": "string", - "description": "The tag message." - }, - "object": { - "type": "string", - "description": "The SHA of the git object this is tagging." - }, - "type": { - "type": "string", - "description": "The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`.", - "enum": ["commit", "tree", "blob"] - }, - "tagger": { - "type": "object", - "description": "An object with information about the individual creating the tag.", - "properties": { - "name": { - "type": "string", - "description": "The name of the author of the tag" - }, - "email": { - "type": "string", - "description": "The email of the author of the tag" - }, - "date": { - "type": "string", - "description": "When this object was tagged. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`." - } - } - } - }, - "required": ["tag", "message", "object", "type"] - }, - "example": { - "tag": "v0.0.1", - "message": "initial version", - "object": "c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c", - "type": "commit", - "tagger": { - "name": "Monalisa Octocat", - "email": "octocat@github.com", - "date": "2011-06-17T14:53:35-07:00" - } - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/git-tag" }, - "examples": { - "default": { "$ref": "#/components/examples/git-tag" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac", - "schema": { "type": "string" } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "tags" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/tags/{tag_sha}": { - "get": { - "summary": "Get a tag", - "description": "**Signature verification object**\n\nThe response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |\n| `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |\n| `signature` | `string` | The signature that was extracted from the commit. |\n| `payload` | `string` | The value that was signed. |\n\nThese are the possible values for `reason` in the `verification` object:\n\n| Value | Description |\n| ----- | ----------- |\n| `expired_key` | The key that made the signature is expired. |\n| `not_signing_key` | The \"signing\" flag is not among the usage flags in the GPG key that made the signature. |\n| `gpgverify_error` | There was an error communicating with the signature verification service. |\n| `gpgverify_unavailable` | The signature verification service is currently unavailable. |\n| `unsigned` | The object does not include a signature. |\n| `unknown_signature_type` | A non-PGP signature was found in the commit. |\n| `no_user` | No user was associated with the `committer` email address in the commit. |\n| `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |\n| `unknown_key` | The key that made the signature has not been registered with any user's account. |\n| `malformed_signature` | There was an error parsing the signature. |\n| `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |\n| `valid` | None of the above errors applied, so the signature is considered to be verified. |", - "tags": ["git"], - "operationId": "git/get-tag", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#get-a-tag" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "tag_sha", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/git-tag" }, - "examples": { - "default": { "$ref": "#/components/examples/git-tag" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "tags" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/trees": { - "post": { - "summary": "Create a tree", - "description": "The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure.\n\nIf you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see \"[Create a commit](https://docs.github.com/rest/reference/git#create-a-commit)\" and \"[Update a reference](https://docs.github.com/rest/reference/git#update-a-reference).\"", - "tags": ["git"], - "operationId": "git/create-tree", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#create-a-tree" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "tree": { - "type": "array", - "description": "Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure.", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "The file referenced in the tree." - }, - "mode": { - "type": "string", - "description": "The file mode; one of `100644` for file (blob), `100755` for executable (blob), `040000` for subdirectory (tree), `160000` for submodule (commit), or `120000` for a blob that specifies the path of a symlink.", - "enum": [ - "100644", - "100755", - "040000", - "160000", - "120000" - ] - }, - "type": { - "type": "string", - "description": "Either `blob`, `tree`, or `commit`.", - "enum": ["blob", "tree", "commit"] - }, - "sha": { - "type": "string", - "description": "The SHA1 checksum ID of the object in the tree. Also called `tree.sha`. If the value is `null` then the file will be deleted. \n \n**Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error.", - "nullable": true - }, - "content": { - "type": "string", - "description": "The content you want this file to have. GitHub will write this blob out and use that SHA for this entry. Use either this, or `tree.sha`. \n \n**Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error." - } - } - } - }, - "base_tree": { - "type": "string", - "description": "The SHA1 of the tree you want to update with new data. If you don't set this, the commit will be created on top of everything; however, it will only contain your change, the rest of your files will show up as deleted." - } - }, - "required": ["tree"] - }, - "example": { - "base_tree": "9fb037999f264ba9a7fc6274d15fa3ae2ab98312", - "tree": [ - { - "path": "file.rb", - "mode": "100644", - "type": "blob", - "sha": "44b4fc6d56897b048c772eb4087f854f46256132" - } - ] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/git-tree" }, - "examples": { - "default": { "$ref": "#/components/examples/git-tree" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/trees/cd8274d15fa3ae2ab983129fb037999f264ba9a7", - "schema": { "type": "string" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "trees" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/git/trees/{tree_sha}": { - "get": { - "summary": "Get a tree", - "description": "Returns a single tree using the SHA1 value for that tree.\n\nIf `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time.", - "tags": ["git"], - "operationId": "git/get-tree", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/git#get-a-tree" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "tree_sha", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "recursive", - "description": "Setting this parameter to any value returns the objects or subtrees referenced by the tree specified in `:tree_sha`. For example, setting `recursive` to any of the following will enable returning objects or subtrees: `0`, `1`, `\"true\"`, and `\"false\"`. Omit this parameter to prevent recursively returning objects or subtrees.", - "in": "query", - "required": false, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/git-tree" }, - "examples": { - "default-response": { - "$ref": "#/components/examples/git-tree-default-response" - }, - "response-recursively-retrieving-a-tree": { - "$ref": "#/components/examples/git-tree-response-recursively-retrieving-a-tree" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "git", - "subcategory": "trees" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/hooks": { - "get": { - "summary": "List repository webhooks", - "description": "", - "tags": ["repos"], - "operationId": "repos/list-webhooks", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-repository-webhooks" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/hook" } - }, - "examples": { - "default": { "$ref": "#/components/examples/hook-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "webhooks" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a repository webhook", - "description": "Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can\nshare the same `config` as long as those webhooks do not have any `events` that overlap.", - "tags": ["repos"], - "operationId": "repos/create-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-a-repository-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Use `web` to create a webhook. Default: `web`. This parameter only accepts the value `web`." - }, - "config": { - "type": "object", - "description": "Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/repos#create-hook-config-params).", - "properties": { - "url": { - "$ref": "#/components/schemas/webhook-config-url" - }, - "content_type": { - "$ref": "#/components/schemas/webhook-config-content-type" - }, - "secret": { - "$ref": "#/components/schemas/webhook-config-secret" - }, - "insecure_ssl": { - "$ref": "#/components/schemas/webhook-config-insecure-ssl" - }, - "token": { "type": "string", "example": "\"abc\"" }, - "digest": { "type": "string", "example": "\"sha256\"" } - }, - "required": ["url"] - }, - "events": { - "type": "array", - "description": "Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for.", - "default": ["push"], - "items": { "type": "string" } - }, - "active": { - "type": "boolean", - "description": "Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.", - "default": true - } - }, - "required": ["config"] - }, - "example": { - "name": "web", - "active": true, - "events": ["push", "pull_request"], - "config": { - "url": "https://example.com/webhook", - "content_type": "json", - "insecure_ssl": "0" - } - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/hook" }, - "examples": { - "default": { "$ref": "#/components/examples/hook" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678", - "schema": { "type": "string" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/hooks/{hook_id}": { - "get": { - "summary": "Get a repository webhook", - "description": "Returns a webhook configured in a repository. To get only the webhook `config` properties, see \"[Get a webhook configuration for a repository](/rest/reference/repos#get-a-webhook-configuration-for-a-repository).\"", - "tags": ["repos"], - "operationId": "repos/get-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-repository-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/hook" }, - "examples": { - "default": { "$ref": "#/components/examples/hook" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "webhooks" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a repository webhook", - "description": "Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use \"[Update a webhook configuration for a repository](/rest/reference/repos#update-a-webhook-configuration-for-a-repository).\"", - "tags": ["repos"], - "operationId": "repos/update-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#update-a-repository-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "config": { - "type": "object", - "description": "Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/repos#create-hook-config-params).", - "properties": { - "url": { - "$ref": "#/components/schemas/webhook-config-url" - }, - "content_type": { - "$ref": "#/components/schemas/webhook-config-content-type" - }, - "secret": { - "$ref": "#/components/schemas/webhook-config-secret" - }, - "insecure_ssl": { - "$ref": "#/components/schemas/webhook-config-insecure-ssl" - }, - "address": { - "type": "string", - "example": "\"bar@example.com\"" - }, - "room": { - "type": "string", - "example": "\"The Serious Room\"" - } - }, - "required": ["url"] - }, - "events": { - "type": "array", - "description": "Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. This replaces the entire array of events.", - "default": ["push"], - "items": { "type": "string" } - }, - "add_events": { - "type": "array", - "description": "Determines a list of events to be added to the list of events that the Hook triggers for.", - "items": { "type": "string" } - }, - "remove_events": { - "type": "array", - "description": "Determines a list of events to be removed from the list of events that the Hook triggers for.", - "items": { "type": "string" } - }, - "active": { - "type": "boolean", - "description": "Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.", - "default": true - } - } - }, - "example": { "active": true, "add_events": ["pull_request"] } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/hook" }, - "examples": { - "default": { "$ref": "#/components/examples/hook" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "webhooks" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a repository webhook", - "description": "", - "tags": ["repos"], - "operationId": "repos/delete-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-a-repository-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/hooks/{hook_id}/config": { - "get": { - "summary": "Get a webhook configuration for a repository", - "description": "Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use \"[Get a repository webhook](/rest/reference/orgs#get-a-repository-webhook).\"\n\nAccess tokens must have the `read:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:read` permission.", - "tags": ["repos"], - "operationId": "repos/get-webhook-config-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos#get-a-webhook-configuration-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "responses": { - "200": { - "description": "Default response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/webhook-config" }, - "examples": { - "default": { "$ref": "#/components/examples/webhook-config" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "webhooks" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a webhook configuration for a repository", - "description": "Updates the webhook configuration for a repository. To update more information about the webhook, including the `active` state and `events`, use \"[Update a repository webhook](/rest/reference/orgs#update-a-repository-webhook).\"\n\nAccess tokens must have the `write:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:write` permission.", - "tags": ["repos"], - "operationId": "repos/update-webhook-config-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos#update-a-webhook-configuration-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "url": { "$ref": "#/components/schemas/webhook-config-url" }, - "content_type": { - "$ref": "#/components/schemas/webhook-config-content-type" - }, - "secret": { - "$ref": "#/components/schemas/webhook-config-secret" - }, - "insecure_ssl": { - "$ref": "#/components/schemas/webhook-config-insecure-ssl" - } - }, - "example": { - "content_type": "json", - "insecure_ssl": "0", - "secret": "********", - "url": "https://example.com/webhook" - } - } - } - } - }, - "responses": { - "200": { - "description": "Default response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/webhook-config" }, - "examples": { - "default": { "$ref": "#/components/examples/webhook-config" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/hooks/{hook_id}/pings": { - "post": { - "summary": "Ping a repository webhook", - "description": "This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook.", - "tags": ["repos"], - "operationId": "repos/ping-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#ping-a-repository-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/hooks/{hook_id}/tests": { - "post": { - "summary": "Test the push repository webhook", - "description": "This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated.\n\n**Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test`", - "tags": ["repos"], - "operationId": "repos/test-push-webhook", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#test-the-push-repository-webhook" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/hook-id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "webhooks" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/import": { - "get": { - "summary": "Get an import status", - "description": "View the progress of an import.\n\n**Import status**\n\nThis section includes details about the possible values of the `status` field of the Import Progress response.\n\nAn import that does not have errors will progress through these steps:\n\n* `detecting` - the \"detection\" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL.\n* `importing` - the \"raw\" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import).\n* `mapping` - the \"rewrite\" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information.\n* `pushing` - the \"push\" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is \"Writing objects\".\n* `complete` - the import is complete, and the repository is ready on GitHub.\n\nIf there are problems, you will see one of these in the `status` field:\n\n* `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section.\n* `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://github.com/contact) or [GitHub Premium Support](https://premium.githubsupport.com) for more information.\n* `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section.\n* `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/reference/migrations#cancel-an-import) and [retry](https://docs.github.com/rest/reference/migrations#start-an-import) with the correct URL.\n* `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section.\n\n**The project_choices field**\n\nWhen multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type.\n\n**Git LFS related fields**\n\nThis section includes details about Git LFS related fields that may be present in the Import Progress response.\n\n* `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken.\n* `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step.\n* `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository.\n* `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a \"Get Large Files\" request.", - "tags": ["migrations"], - "operationId": "migrations/get-import-status", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#get-an-import-status" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/import" }, - "examples": { - "default": { "$ref": "#/components/examples/import" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "migrations", - "subcategory": "source-imports" - }, - "x-octokit": {} - }, - "put": { - "summary": "Start an import", - "description": "Start a source import to a GitHub repository using GitHub Importer.", - "tags": ["migrations"], - "operationId": "migrations/start-import", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#start-an-import" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "vcs_url": { - "type": "string", - "description": "The URL of the originating repository." - }, - "vcs": { - "type": "string", - "description": "The originating VCS type. Can be one of `subversion`, `git`, `mercurial`, or `tfvc`. Please be aware that without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response.", - "enum": ["subversion", "git", "mercurial", "tfvc"] - }, - "vcs_username": { - "type": "string", - "description": "If authentication is required, the username to provide to `vcs_url`." - }, - "vcs_password": { - "type": "string", - "description": "If authentication is required, the password to provide to `vcs_url`." - }, - "tfvc_project": { - "type": "string", - "description": "For a tfvc import, the name of the project that is being imported." - } - }, - "required": ["vcs_url"] - }, - "example": { - "vcs": "subversion", - "vcs_url": "http://svn.mycompany.com/svn/myproject", - "vcs_username": "octocat", - "vcs_password": "secret" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/import" }, - "examples": { - "default": { "$ref": "#/components/examples/import-2" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/spraints/socm/import", - "schema": { "type": "string" } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "migrations", - "subcategory": "source-imports" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an import", - "description": "An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API\nrequest. If no parameters are provided, the import will be restarted.", - "tags": ["migrations"], - "operationId": "migrations/update-import", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#update-an-import" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "vcs_username": { - "type": "string", - "description": "The username to provide to the originating repository." - }, - "vcs_password": { - "type": "string", - "description": "The password to provide to the originating repository." - }, - "vcs": { "type": "string", "example": "\"git\"" }, - "tfvc_project": { - "type": "string", - "example": "\"project1\"" - } - } - }, - "examples": { - "example-1": { - "summary": "Example 1", - "value": { - "vcs_username": "octocat", - "vcs_password": "secret" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/import" }, - "examples": { - "example-1": { - "$ref": "#/components/examples/import-example-1" - }, - "example-2": { - "$ref": "#/components/examples/import-example-2" - }, - "response": { - "$ref": "#/components/examples/import-response" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "migrations", - "subcategory": "source-imports" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Cancel an import", - "description": "Stop an import for a repository.", - "tags": ["migrations"], - "operationId": "migrations/cancel-import", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#cancel-an-import" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "migrations", - "subcategory": "source-imports" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/import/authors": { - "get": { - "summary": "Get commit authors", - "description": "Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot `.\n\nThis endpoint and the [Map a commit author](https://docs.github.com/rest/reference/migrations#map-a-commit-author) endpoint allow you to provide correct Git author information.", - "tags": ["migrations"], - "operationId": "migrations/get-commit-authors", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#get-commit-authors" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/since-user" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/porter-author" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/porter-author-items" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "migrations", - "subcategory": "source-imports" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/import/authors/{author_id}": { - "patch": { - "summary": "Map a commit author", - "description": "Update an author's identity for the import. Your application can continue updating authors any time before you push new commits to the repository.", - "tags": ["migrations"], - "operationId": "migrations/map-commit-author", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#map-a-commit-author" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "author_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "email": { - "type": "string", - "description": "The new Git author email." - }, - "name": { - "type": "string", - "description": "The new Git author name." - }, - "remote_id": { - "type": "string", - "example": "\"can't touch this\"" - } - } - }, - "example": { - "email": "hubot@github.com", - "name": "Hubot the Robot" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/porter-author" }, - "examples": { - "default": { "$ref": "#/components/examples/porter-author" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "migrations", - "subcategory": "source-imports" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/import/large_files": { - "get": { - "summary": "Get large files", - "description": "List files larger than 100MB found during the import", - "tags": ["migrations"], - "operationId": "migrations/get-large-files", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#get-large-files" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/porter-large-file" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/porter-large-file-items" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "migrations", - "subcategory": "source-imports" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/import/lfs": { - "patch": { - "summary": "Update Git LFS preference", - "description": "You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability is powered by [Git LFS](https://git-lfs.github.com). You can learn more about our LFS feature and working with large files [on our help site](https://help.github.com/articles/versioning-large-files/).", - "tags": ["migrations"], - "operationId": "migrations/set-lfs-preference", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#update-git-lfs-preference" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "use_lfs": { - "type": "string", - "description": "Can be one of `opt_in` (large files will be stored using Git LFS) or `opt_out` (large files will be removed during the import).", - "enum": ["opt_in", "opt_out"] - } - }, - "required": ["use_lfs"] - }, - "example": { "use_lfs": "opt_in" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/import" }, - "examples": { - "default": { "$ref": "#/components/examples/import" } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "migrations", - "subcategory": "source-imports" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/installation": { - "get": { - "summary": "Get a repository installation for the authenticated app", - "description": "Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to.\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/get-repo-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#get-a-repository-installation-for-the-authenticated-app" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/installation" }, - "examples": { - "default": { "$ref": "#/components/examples/installation" } - } - } - } - }, - "301": { "$ref": "#/components/responses/moved_permanently" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/interaction-limits": { - "get": { - "summary": "Get interaction restrictions for a repository", - "description": "Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response.", - "tags": ["interactions"], - "operationId": "interactions/get-restrictions-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/interaction-limit-response" - }, - "examples": { - "default": { - "$ref": "#/components/examples/interaction-limit-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "interactions", - "subcategory": "repos" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set interaction restrictions for a repository", - "description": "Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.", - "tags": ["interactions"], - "operationId": "interactions/set-restrictions-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/interaction-limit" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/interaction-limit-response" - }, - "examples": { - "default": { - "$ref": "#/components/examples/interaction-limit-2" - } - } - } - } - }, - "409": { "description": "Conflict" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "interactions", - "subcategory": "repos" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove interaction restrictions for a repository", - "description": "Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.", - "tags": ["interactions"], - "operationId": "interactions/remove-restrictions-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "204": { "description": "Empty response" }, - "409": { "description": "Conflict" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "interactions", - "subcategory": "repos" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/invitations": { - "get": { - "summary": "List repository invitations", - "description": "When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations.", - "tags": ["repos"], - "operationId": "repos/list-invitations", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-repository-invitations" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/repository-invitation" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-invitation-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "invitations" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/invitations/{invitation_id}": { - "patch": { - "summary": "Update a repository invitation", - "description": "", - "tags": ["repos"], - "operationId": "repos/update-invitation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#update-a-repository-invitation" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/invitation_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "permissions": { - "type": "string", - "description": "The permissions that the associated user will have on the repository. Valid values are `read`, `write`, `maintain`, `triage`, and `admin`.", - "enum": ["read", "write", "maintain", "triage", "admin"] - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/repository-invitation" - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-invitation" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "invitations" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a repository invitation", - "description": "", - "tags": ["repos"], - "operationId": "repos/delete-invitation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-a-repository-invitation" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/invitation_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "invitations" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues": { - "get": { - "summary": "List repository issues", - "description": "List issues in a repository.\n\n**Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this\nreason, \"Issues\" endpoints may return both issues and pull requests in the response. You can identify pull requests by\nthe `pull_request` key. Be aware that the `id` of a pull request returned from \"Issues\" endpoints will be an _issue id_. To find out the pull\nrequest id, use the \"[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)\" endpoint.", - "tags": ["issues"], - "operationId": "issues/list-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/issues/#list-repository-issues" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "milestone", - "description": "If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { - "name": "state", - "description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["open", "closed", "all"], - "default": "open" - } - }, - { - "name": "assignee", - "description": "Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { - "name": "creator", - "description": "The user that created the issue.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { - "name": "mentioned", - "description": "A user that's mentioned in the issue.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { "$ref": "#/components/parameters/labels" }, - { - "name": "sort", - "description": "What to sort results by. Can be either `created`, `updated`, `comments`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["created", "updated", "comments"], - "default": "created" - } - }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/issue-simple" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-simple-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "301": { "$ref": "#/components/responses/moved_permanently" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "issues", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create an issue", - "description": "Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://help.github.com/articles/disabling-issues/), the API returns a `410 Gone` status.\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-abuse-rate-limits)\" for details.", - "tags": ["issues"], - "operationId": "issues/create", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/issues/#create-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The title of the issue." - }, - "body": { - "type": "string", - "description": "The contents of the issue." - }, - "assignee": { - "type": "string", - "description": "Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_", - "nullable": true - }, - "milestone": { - "type": "integer", - "description": "The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._", - "nullable": true - }, - "labels": { - "type": "array", - "description": "Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._", - "items": { - "oneOf": [ - { "type": "string" }, - { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "name": { "type": "string" }, - "description": { "type": "string" }, - "color": { "type": "string" } - } - } - ] - } - }, - "assignees": { - "type": "array", - "description": "Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._", - "items": { "type": "string" } - } - }, - "required": ["title"] - }, - "example": { - "title": "Found a bug", - "body": "I'm having a problem with this.", - "assignees": ["octocat"], - "milestone": 1, - "labels": ["bug"] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/issue" }, - "examples": { - "default": { "$ref": "#/components/examples/issue" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "schema": { "type": "string" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/comments": { - "get": { - "summary": "List issue comments for a repository", - "description": "By default, Issue Comments are ordered by ascending ID.", - "tags": ["issues"], - "operationId": "issues/list-comments-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-issue-comments-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/sort" }, - { - "name": "direction", - "description": "Either `asc` or `desc`. Ignored without the `sort` parameter.", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["asc", "desc"] } - }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/issue-comment" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "issues", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/comments/{comment_id}": { - "get": { - "summary": "Get an issue comment", - "description": "", - "tags": ["issues"], - "operationId": "issues/get-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#get-an-issue-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/issue-comment" }, - "examples": { - "default": { "$ref": "#/components/examples/issue-comment" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "issues", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an issue comment", - "description": "", - "tags": ["issues"], - "operationId": "issues/update-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#update-an-issue-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The contents of the comment." - } - }, - "required": ["body"] - }, - "example": { "body": "Me too" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/issue-comment" }, - "examples": { - "default": { "$ref": "#/components/examples/issue-comment" } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete an issue comment", - "description": "", - "tags": ["issues"], - "operationId": "issues/delete-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#delete-an-issue-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": { - "get": { - "summary": "List reactions for an issue comment", - "description": "List the reactions to an [issue comment](https://docs.github.com/rest/reference/issues#comments).", - "tags": ["reactions"], - "operationId": "reactions/list-for-issue-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#list-reactions-for-an-issue-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" }, - { - "name": "content", - "description": "Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to an issue comment.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/reaction" } - }, - "examples": { - "default": { "$ref": "#/components/examples/reaction-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create reaction for an issue comment", - "description": "Create a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). A response with a `Status: 200 OK` means that you already added the reaction type to this issue comment.", - "tags": ["reactions"], - "operationId": "reactions/create-for-issue-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#create-reaction-for-an-issue-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the issue comment.", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - "required": ["content"] - }, - "example": { "content": "heart" } - } - } - }, - "responses": { - "200": { - "description": "Reaction exists", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - }, - "201": { - "description": "Reaction created", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": { - "delete": { - "summary": "Delete an issue comment reaction", - "description": "**Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`.\n\nDelete a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments).", - "tags": ["reactions"], - "operationId": "reactions/delete-for-issue-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#delete-an-issue-comment-reaction" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" }, - { "$ref": "#/components/parameters/reaction-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/events": { - "get": { - "summary": "List issue events for a repository", - "description": "", - "tags": ["issues"], - "operationId": "issues/list-events-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-issue-events-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/issue-event" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-event-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "starfox", - "note": "Project card details are now shown in REST API v3 responses for project-related issue and timeline events. This feature is now available for developers to preview. For details, see the [blog post](https://developer.github.com/changes/2018-09-05-project-card-events).\n\nTo receive the `project_card` attribute, project boards must be [enabled](https://help.github.com/articles/disabling-project-boards-in-a-repository) for a repository, and you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.starfox-preview+json\n```" - } - ], - "category": "issues", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/events/{event_id}": { - "get": { - "summary": "Get an issue event", - "description": "", - "tags": ["issues"], - "operationId": "issues/get-event", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#get-an-issue-event" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "event_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/issue-event" }, - "examples": { - "default": { "$ref": "#/components/examples/issue-event" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "starfox", - "note": "Project card details are now shown in REST API v3 responses for project-related issue and timeline events. This feature is now available for developers to preview. For details, see the [blog post](https://developer.github.com/changes/2018-09-05-project-card-events).\n\nTo receive the `project_card` attribute, project boards must be [enabled](https://help.github.com/articles/disabling-project-boards-in-a-repository) for a repository, and you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.starfox-preview+json\n```" - } - ], - "category": "issues", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}": { - "get": { - "summary": "Get an issue", - "description": "The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-redirects-redirects) if the issue was\n[transferred](https://help.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If\nthe issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API\nreturns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read\naccess, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe\nto the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook.\n\n**Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this\nreason, \"Issues\" endpoints may return both issues and pull requests in the response. You can identify pull requests by\nthe `pull_request` key. Be aware that the `id` of a pull request returned from \"Issues\" endpoints will be an _issue id_. To find out the pull\nrequest id, use the \"[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)\" endpoint.", - "tags": ["issues"], - "operationId": "issues/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/issues/#get-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/issue" }, - "examples": { - "default": { "$ref": "#/components/examples/issue" } - } - } - } - }, - "301": { "$ref": "#/components/responses/moved_permanently" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "issues", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an issue", - "description": "Issue owners and users with push access can edit an issue.", - "tags": ["issues"], - "operationId": "issues/update", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/issues/#update-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The title of the issue." - }, - "body": { - "type": "string", - "description": "The contents of the issue." - }, - "assignee": { - "type": "string", - "description": "Login for the user that this issue should be assigned to. **This field is deprecated.**" - }, - "state": { - "type": "string", - "description": "State of the issue. Either `open` or `closed`.", - "enum": ["open", "closed"] - }, - "milestone": { - "type": "integer", - "description": "The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._", - "nullable": true - }, - "labels": { - "type": "array", - "description": "Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._", - "items": { - "oneOf": [ - { "type": "string" }, - { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "name": { "type": "string" }, - "description": { "type": "string" }, - "color": { "type": "string" } - } - } - ] - } - }, - "assignees": { - "type": "array", - "description": "Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._", - "items": { "type": "string" } - } - } - }, - "example": { - "title": "Found a bug", - "body": "I'm having a problem with this.", - "assignees": ["octocat"], - "milestone": 1, - "state": "open", - "labels": ["bug"] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/issue" }, - "examples": { - "default": { "$ref": "#/components/examples/issue" } - } - } - } - }, - "301": { "$ref": "#/components/responses/moved_permanently" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}/assignees": { - "post": { - "summary": "Add assignees to an issue", - "description": "Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.", - "tags": ["issues"], - "operationId": "issues/add-assignees", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#add-assignees-to-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "assignees": { - "type": "array", - "description": "Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._", - "items": { "type": "string" } - } - } - }, - "example": { "assignees": ["hubot", "other_user"] } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/issue-simple" }, - "examples": { - "default": { "$ref": "#/components/examples/issue-simple" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "assignees" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove assignees from an issue", - "description": "Removes one or more assignees from an issue.", - "tags": ["issues"], - "operationId": "issues/remove-assignees", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#remove-assignees-from-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "assignees": { - "type": "array", - "description": "Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._", - "items": { "type": "string" } - } - } - }, - "example": { "assignees": ["hubot", "other_user"] } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/issue-simple" }, - "examples": { - "default": { "$ref": "#/components/examples/issue-simple" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "assignees" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}/comments": { - "get": { - "summary": "List issue comments", - "description": "Issue Comments are ordered by ascending ID.", - "tags": ["issues"], - "operationId": "issues/list-comments", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-issue-comments" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/issue-comment" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "issues", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create an issue comment", - "description": "This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-abuse-rate-limits)\" for details.", - "tags": ["issues"], - "operationId": "issues/create-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#create-an-issue-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The contents of the comment." - } - }, - "required": ["body"] - }, - "example": { "body": "Me too" } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/issue-comment" }, - "examples": { - "default": { "$ref": "#/components/examples/issue-comment" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/issues/comments/1", - "schema": { "type": "string" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}/events": { - "get": { - "summary": "List issue events", - "description": "", - "tags": ["issues"], - "operationId": "issues/list-events", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-issue-events" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/issue-event-for-issue" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-event-for-issue-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "410": { "$ref": "#/components/responses/gone" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "starfox", - "note": "Project card details are now shown in REST API v3 responses for project-related issue and timeline events. This feature is now available for developers to preview. For details, see the [blog post](https://developer.github.com/changes/2018-09-05-project-card-events).\n\nTo receive the `project_card` attribute, project boards must be [enabled](https://help.github.com/articles/disabling-project-boards-in-a-repository) for a repository, and you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.starfox-preview+json\n```" - } - ], - "category": "issues", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}/labels": { - "get": { - "summary": "List labels for an issue", - "description": "", - "tags": ["issues"], - "operationId": "issues/list-labels-on-issue", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-labels-for-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/label" } - }, - "examples": { - "default": { "$ref": "#/components/examples/label-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "410": { "$ref": "#/components/responses/gone" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - }, - "post": { - "summary": "Add labels to an issue", - "description": "", - "tags": ["issues"], - "operationId": "issues/add-labels", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#add-labels-to-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "labels": { - "type": "array", - "description": "The name of the label to add to the issue. Must contain at least one label. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.", - "items": { "type": "string" } - } - }, - "required": ["labels"] - }, - "example": { "labels": ["bug", "enhancement"] } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/label" } - }, - "examples": { - "default": { "$ref": "#/components/examples/label-items" } - } - } - } - }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set labels for an issue", - "description": "Removes any previous labels and sets the new labels for an issue.", - "tags": ["issues"], - "operationId": "issues/set-labels", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#set-labels-for-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "labels": { - "type": "array", - "description": "The names of the labels to add to the issue. You can pass an empty array to remove all labels. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.", - "items": { "type": "string" } - } - } - }, - "example": { "labels": ["bug", "enhancement"] } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/label" } - }, - "examples": { - "default": { "$ref": "#/components/examples/label-items" } - } - } - } - }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove all labels from an issue", - "description": "", - "tags": ["issues"], - "operationId": "issues/remove-all-labels", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#remove-all-labels-from-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "responses": { - "204": { "description": "Empty response" }, - "410": { "$ref": "#/components/responses/gone" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": { - "delete": { - "summary": "Remove a label from an issue", - "description": "Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist.", - "tags": ["issues"], - "operationId": "issues/remove-label", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#remove-a-label-from-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" }, - { - "name": "name", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/label" } - }, - "examples": { - "default": { "$ref": "#/components/examples/label-items-2" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}/lock": { - "put": { - "summary": "Lock an issue", - "description": "Users with push access can lock an issue or pull request's conversation.\n\nNote that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"", - "tags": ["issues"], - "operationId": "issues/lock", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/issues/#lock-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "lock_reason": { - "type": "string", - "description": "The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons: \n\\* `off-topic` \n\\* `too heated` \n\\* `resolved` \n\\* `spam`", - "enum": ["off-topic", "too heated", "resolved", "spam"] - } - } - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Unlock an issue", - "description": "Users with push access can unlock an issue's conversation.", - "tags": ["issues"], - "operationId": "issues/unlock", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/issues/#unlock-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "responses": { - "204": { "description": "Empty response" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}/reactions": { - "get": { - "summary": "List reactions for an issue", - "description": "List the reactions to an [issue](https://docs.github.com/rest/reference/issues).", - "tags": ["reactions"], - "operationId": "reactions/list-for-issue", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#list-reactions-for-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" }, - { - "name": "content", - "description": "Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to an issue.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/reaction" } - }, - "examples": { - "default": { "$ref": "#/components/examples/reaction-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create reaction for an issue", - "description": "Create a reaction to an [issue](https://docs.github.com/rest/reference/issues/). A response with a `Status: 200 OK` means that you already added the reaction type to this issue.", - "tags": ["reactions"], - "operationId": "reactions/create-for-issue", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#create-reaction-for-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the issue.", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - "required": ["content"] - }, - "example": { "content": "heart" } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": { - "delete": { - "summary": "Delete an issue reaction", - "description": "**Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`.\n\nDelete a reaction to an [issue](https://docs.github.com/rest/reference/issues/).", - "tags": ["reactions"], - "operationId": "reactions/delete-for-issue", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#delete-an-issue-reaction" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" }, - { "$ref": "#/components/parameters/reaction-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/issues/{issue_number}/timeline": { - "get": { - "summary": "List timeline events for an issue", - "description": "", - "tags": ["issues"], - "operationId": "issues/list-events-for-timeline", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-timeline-events-for-an-issue" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/issue_number" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/issue-event-for-issue" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-event-for-issue-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "mockingbird", - "note": "The API to get issue timeline events is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-23-timeline-preview-api/) for full details. To access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.mockingbird-preview\n```" - }, - { - "required": false, - "name": "starfox", - "note": "Project card details are now shown in REST API v3 responses for project-related issue and timeline events. This feature is now available for developers to preview. For details, see the [blog post](https://developer.github.com/changes/2018-09-05-project-card-events).\n\nTo receive the `project_card` attribute, project boards must be [enabled](https://help.github.com/articles/disabling-project-boards-in-a-repository) for a repository, and you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.starfox-preview+json\n```" - } - ], - "category": "issues", - "subcategory": "timeline" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/keys": { - "get": { - "summary": "List deploy keys", - "description": "", - "tags": ["repos"], - "operationId": "repos/list-deploy-keys", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-deploy-keys" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/deploy-key" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/deploy-key-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "keys" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a deploy key", - "description": "You can create a read-only deploy key.", - "tags": ["repos"], - "operationId": "repos/create-deploy-key", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-a-deploy-key" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "A name for the key." - }, - "key": { - "type": "string", - "description": "The contents of the key." - }, - "read_only": { - "type": "boolean", - "description": "If `true`, the key will only be able to read repository contents. Otherwise, the key will be able to read and write. \n \nDeploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see \"[Repository permission levels for an organization](https://help.github.com/articles/repository-permission-levels-for-an-organization/)\" and \"[Permission levels for a user account repository](https://help.github.com/articles/permission-levels-for-a-user-account-repository/).\"" - } - }, - "required": ["key"] - }, - "example": { - "title": "octocat@octomac", - "key": "ssh-rsa AAA...", - "read_only": true - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/deploy-key" }, - "examples": { - "default": { "$ref": "#/components/examples/deploy-key" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/keys/1", - "schema": { "type": "string" } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "keys" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/keys/{key_id}": { - "get": { - "summary": "Get a deploy key", - "description": "", - "tags": ["repos"], - "operationId": "repos/get-deploy-key", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-deploy-key" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/key_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/deploy-key" }, - "examples": { - "default": { "$ref": "#/components/examples/deploy-key" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "keys" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a deploy key", - "description": "Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead.", - "tags": ["repos"], - "operationId": "repos/delete-deploy-key", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-a-deploy-key" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/key_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "keys" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/labels": { - "get": { - "summary": "List labels for a repository", - "description": "", - "tags": ["issues"], - "operationId": "issues/list-labels-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-labels-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/label" } - }, - "examples": { - "default": { "$ref": "#/components/examples/label-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a label", - "description": "", - "tags": ["issues"], - "operationId": "issues/create-label", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#create-a-label" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png \":strawberry:\"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/)." - }, - "color": { - "type": "string", - "description": "The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`." - }, - "description": { - "type": "string", - "description": "A short description of the label." - } - }, - "required": ["name"] - }, - "example": { - "name": "bug", - "description": "Something isn't working", - "color": "f29513" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/label" }, - "examples": { - "default": { "$ref": "#/components/examples/label" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "schema": { "type": "string" } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/labels/{name}": { - "get": { - "summary": "Get a label", - "description": "", - "tags": ["issues"], - "operationId": "issues/get-label", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#get-a-label" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "name", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/label" }, - "examples": { - "default": { "$ref": "#/components/examples/label" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a label", - "description": "", - "tags": ["issues"], - "operationId": "issues/update-label", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#update-a-label" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "name", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "new_name": { - "type": "string", - "description": "The new name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png \":strawberry:\"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/)." - }, - "color": { - "type": "string", - "description": "The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`." - }, - "description": { - "type": "string", - "description": "A short description of the label." - } - } - }, - "example": { - "new_name": "bug :bug:", - "description": "Small bug fix required", - "color": "b01f26" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/label" }, - "examples": { - "default": { "$ref": "#/components/examples/label-2" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a label", - "description": "", - "tags": ["issues"], - "operationId": "issues/delete-label", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#delete-a-label" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "name", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/languages": { - "get": { - "summary": "List repository languages", - "description": "Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.", - "tags": ["repos"], - "operationId": "repos/list-languages", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#list-repository-languages" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/language" }, - "examples": { - "default": { "$ref": "#/components/examples/language" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/license": { - "get": { - "summary": "Get the license for a repository", - "description": "This method returns the contents of the repository's license file, if one is detected.\n\nSimilar to [Get repository content](https://docs.github.com/rest/reference/repos/contents#get-repository-content), this method also supports [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw license content or rendered license HTML.", - "tags": ["licenses"], - "operationId": "licenses/get-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/licenses/#get-the-license-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/license-content" }, - "examples": { - "default": { "$ref": "#/components/examples/license-content" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "licenses", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/merges": { - "post": { - "summary": "Merge a branch", - "description": "", - "tags": ["repos"], - "operationId": "repos/merge", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#merge-a-branch" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "base": { - "type": "string", - "description": "The name of the base branch that the head will be merged into." - }, - "head": { - "type": "string", - "description": "The head to merge. This can be a branch name or a commit SHA1." - }, - "commit_message": { - "type": "string", - "description": "Commit message to use for the merge commit. If omitted, a default message will be used." - } - }, - "required": ["base", "head"] - }, - "example": { - "base": "master", - "head": "cool_feature", - "commit_message": "Shipped cool_feature!" - } - } - } - }, - "responses": { - "201": { - "description": "Successful Response (The resulting merge commit)", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/commit" }, - "examples": { - "default": { "$ref": "#/components/examples/commit" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { - "type": "string", - "example": "\"https://docs.github.com/rest/reference/repos#perform-a-merge\"" - } - } - }, - "examples": { - "missing-base-response": { - "summary": "Missing base response", - "value": { "message": "Base does not exist" } - }, - "missing-head-response": { - "summary": "Missing head response", - "value": { "message": "Head does not exist" } - } - } - } - } - }, - "409": { - "description": "Merge conflict response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { - "type": "string", - "example": "\"https://docs.github.com/rest/reference/repos#perform-a-merge\"" - } - } - }, - "examples": { - "merge-conflict-response": { - "value": { "message": "Merge Conflict" } - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "merging" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/milestones": { - "get": { - "summary": "List milestones", - "description": "", - "tags": ["issues"], - "operationId": "issues/list-milestones", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-milestones" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "state", - "description": "The state of the milestone. Either `open`, `closed`, or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["open", "closed", "all"], - "default": "open" - } - }, - { - "name": "sort", - "description": "What to sort results by. Either `due_on` or `completeness`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["due_on", "completeness"], - "default": "due_on" - } - }, - { - "name": "direction", - "description": "The direction of the sort. Either `asc` or `desc`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["asc", "desc"], - "default": "asc" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/milestone" } - }, - "examples": { - "default": { "$ref": "#/components/examples/milestone-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "milestones" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a milestone", - "description": "", - "tags": ["issues"], - "operationId": "issues/create-milestone", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#create-a-milestone" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The title of the milestone." - }, - "state": { - "type": "string", - "description": "The state of the milestone. Either `open` or `closed`.", - "enum": ["open", "closed"], - "default": "open" - }, - "description": { - "type": "string", - "description": "A description of the milestone." - }, - "due_on": { - "type": "string", - "description": "The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`." - } - }, - "required": ["title"] - }, - "example": { - "title": "v1.0", - "state": "open", - "description": "Tracking milestone for version 1.0", - "due_on": "2012-10-09T23:39:01Z" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/milestone" }, - "examples": { - "default": { "$ref": "#/components/examples/milestone" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "schema": { "type": "string" } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "milestones" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/milestones/{milestone_number}": { - "get": { - "summary": "Get a milestone", - "description": "", - "tags": ["issues"], - "operationId": "issues/get-milestone", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#get-a-milestone" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/milestone_number" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/milestone" }, - "examples": { - "default": { "$ref": "#/components/examples/milestone" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "milestones" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a milestone", - "description": "", - "tags": ["issues"], - "operationId": "issues/update-milestone", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#update-a-milestone" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/milestone_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The title of the milestone." - }, - "state": { - "type": "string", - "description": "The state of the milestone. Either `open` or `closed`.", - "enum": ["open", "closed"], - "default": "open" - }, - "description": { - "type": "string", - "description": "A description of the milestone." - }, - "due_on": { - "type": "string", - "description": "The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`." - } - } - }, - "example": { - "title": "v1.0", - "state": "open", - "description": "Tracking milestone for version 1.0", - "due_on": "2012-10-09T23:39:01Z" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/milestone" }, - "examples": { - "default": { "$ref": "#/components/examples/milestone" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "milestones" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a milestone", - "description": "", - "tags": ["issues"], - "operationId": "issues/delete-milestone", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#delete-a-milestone" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/milestone_number" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "milestones" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/milestones/{milestone_number}/labels": { - "get": { - "summary": "List labels for issues in a milestone", - "description": "", - "tags": ["issues"], - "operationId": "issues/list-labels-for-milestone", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/issues#list-labels-for-issues-in-a-milestone" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/milestone_number" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/label" } - }, - "examples": { - "default": { "$ref": "#/components/examples/label-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "issues", - "subcategory": "labels" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/notifications": { - "get": { - "summary": "List repository notifications for the authenticated user", - "description": "List all notifications for the current user.", - "tags": ["activity"], - "operationId": "activity/list-repo-notifications-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/all" }, - { "$ref": "#/components/parameters/participating" }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/before" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/thread" } - }, - "examples": { - "default": { "$ref": "#/components/examples/thread-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "notifications" - }, - "x-octokit": {} - }, - "put": { - "summary": "Mark repository notifications as read", - "description": "Marks all notifications in a repository as \"read\" removes them from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as \"read.\" To check whether any \"unread\" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`.", - "tags": ["activity"], - "operationId": "activity/mark-repo-notifications-as-read", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#mark-repository-notifications-as-read" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "last_read_at": { - "type": "string", - "description": "Describes the last point that notifications were checked. Anything updated since this time will not be marked as read. If you omit this parameter, all notifications are marked as read. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp." - } - } - } - } - } - }, - "responses": { "202": { "description": "response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "notifications" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pages": { - "get": { - "summary": "Get a GitHub Pages site", - "description": "", - "tags": ["repos"], - "operationId": "repos/get-pages", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-github-pages-site" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/page" }, - "examples": { - "default": { "$ref": "#/components/examples/page" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "pages" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a GitHub Pages site", - "description": "Configures a GitHub Pages site. For more information, see \"[About GitHub Pages](/github/working-with-github-pages/about-github-pages).\"", - "tags": ["repos"], - "operationId": "repos/create-pages-site", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-a-github-pages-site" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The source branch and directory used to publish your Pages site.", - "properties": { - "source": { - "type": "object", - "description": "The source branch and directory used to publish your Pages site.", - "properties": { - "branch": { - "type": "string", - "description": "The repository branch used to publish your site's source files." - }, - "path": { - "type": "string", - "description": "The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`. Default: `/`", - "enum": ["/", "/docs"], - "default": "/" - } - }, - "required": ["branch"] - } - }, - "required": ["source"] - }, - "example": { "source": { "branch": "main", "path": "/docs" } } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/page" }, - "examples": { - "default": { "$ref": "#/components/examples/page" } - } - } - } - }, - "409": { "$ref": "#/components/responses/conflict" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "switcheroo", - "note": "Enabling and disabling Pages in the Pages API is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2019-03-14-enabling-disabling-pages/) preview for more details. To access the new endpoints during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.switcheroo-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "pages" - }, - "x-octokit": {} - }, - "put": { - "summary": "Update information about a GitHub Pages site", - "description": "Updates information for a GitHub Pages site. For more information, see \"[About GitHub Pages](/github/working-with-github-pages/about-github-pages).", - "tags": ["repos"], - "operationId": "repos/update-information-about-pages-site", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#update-information-about-a-github-pages-site" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cname": { - "type": "string", - "description": "Specify a custom domain for the repository. Sending a `null` value will remove the custom domain. For more about custom domains, see \"[Using a custom domain with GitHub Pages](https://help.github.com/articles/using-a-custom-domain-with-github-pages/).\"", - "nullable": true - }, - "source": { - "anyOf": [ - { - "type": "string", - "description": "Update the source for the repository. Must include the branch name, and may optionally specify the subdirectory `/docs`. Possible values are `\"gh-pages\"`, `\"master\"`, and `\"master /docs\"`.", - "enum": ["gh-pages", "master", "master /docs"] - }, - { - "type": "object", - "description": "Update the source for the repository. Must include the branch name and path.", - "properties": { - "branch": { - "type": "string", - "description": "The repository branch used to publish your site's source files." - }, - "path": { - "type": "string", - "description": "The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`.", - "enum": ["/", "/docs"] - } - }, - "required": ["branch", "path"] - } - ] - } - }, - "required": ["source"] - }, - "example": { - "cname": "octocatblog.com", - "source": { "branch": "main", "path": "/" } - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "400": { "$ref": "#/components/responses/bad_request" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "pages" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a GitHub Pages site", - "description": "", - "tags": ["repos"], - "operationId": "repos/delete-pages-site", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-a-github-pages-site" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "switcheroo", - "note": "Enabling and disabling Pages in the Pages API is currently available for developers to preview. See the [blog post](https://developer.github.com/changes/2019-03-14-enabling-disabling-pages/) preview for more details. To access the new endpoints during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.switcheroo-preview+json\n```" - } - ], - "category": "repos", - "subcategory": "pages" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pages/builds": { - "get": { - "summary": "List GitHub Pages builds", - "description": "", - "tags": ["repos"], - "operationId": "repos/list-pages-builds", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-github-pages-builds" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/page-build" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/page-build-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "pages" - }, - "x-octokit": {} - }, - "post": { - "summary": "Request a GitHub Pages build", - "description": "You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures.\n\nBuild requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes.", - "tags": ["repos"], - "operationId": "repos/request-pages-build", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#request-a-github-pages-build" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/page-build-status" }, - "examples": { - "default": { - "$ref": "#/components/examples/page-build-status" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "pages" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pages/builds/latest": { - "get": { - "summary": "Get latest Pages build", - "description": "", - "tags": ["repos"], - "operationId": "repos/get-latest-pages-build", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-latest-pages-build" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/page-build" }, - "examples": { - "default": { "$ref": "#/components/examples/page-build" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "pages" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pages/builds/{build_id}": { - "get": { - "summary": "Get GitHub Pages build", - "description": "", - "tags": ["repos"], - "operationId": "repos/get-pages-build", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-github-pages-build" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "build_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/page-build" }, - "examples": { - "default": { "$ref": "#/components/examples/page-build" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "pages" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/projects": { - "get": { - "summary": "List repository projects", - "description": "Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.", - "tags": ["projects"], - "operationId": "projects/list-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/projects/#list-repository-projects" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "state", - "description": "Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["open", "closed", "all"], - "default": "open" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/project" } - }, - "examples": { - "default": { "$ref": "#/components/examples/project-items-2" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a repository project", - "description": "Creates a repository project board. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.", - "tags": ["projects"], - "operationId": "projects/create-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/projects/#create-a-repository-project" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the project." - }, - "body": { - "type": "string", - "description": "The description of the project." - } - }, - "required": ["name"] - }, - "example": { - "name": "Projects Documentation", - "body": "Developer documentation project for the developer site." - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project" }, - "examples": { - "default": { "$ref": "#/components/examples/project-3" } - } - } - } - }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "410": { "$ref": "#/components/responses/gone" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls": { - "get": { - "summary": "List pull requests", - "description": "Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.", - "tags": ["pulls"], - "operationId": "pulls/list", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/pulls/#list-pull-requests" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "state", - "description": "Either `open`, `closed`, or `all` to filter by state.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["open", "closed", "all"], - "default": "open" - } - }, - { - "name": "head", - "description": "Filter pulls by head user or head organization and branch name in the format of `user:ref-name` or `organization:ref-name`. For example: `github:new-script-format` or `octocat:test-branch`.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { - "name": "base", - "description": "Filter pulls by base branch name. Example: `gh-pages`.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - { - "name": "sort", - "description": "What to sort results by. Can be either `created`, `updated`, `popularity` (comment count) or `long-running` (age, filtering by pulls updated in the last month).", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["created", "updated", "popularity", "long-running"], - "default": "created" - } - }, - { - "name": "direction", - "description": "The direction of the sort. Can be either `asc` or `desc`. Default: `desc` when sort is `created` or sort is not specified, otherwise `asc`.", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["asc", "desc"] } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/pull-request-simple" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-simple-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a pull request", - "description": "Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nTo open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.\n\nYou can create a new pull request.\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.", - "tags": ["pulls"], - "operationId": "pulls/create", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/pulls/#create-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The title of the new pull request." - }, - "head": { - "type": "string", - "description": "The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`." - }, - "base": { - "type": "string", - "description": "The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository." - }, - "body": { - "type": "string", - "description": "The contents of the pull request." - }, - "maintainer_can_modify": { - "type": "boolean", - "description": "Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request." - }, - "draft": { - "type": "boolean", - "description": "Indicates whether the pull request is a draft. See \"[Draft Pull Requests](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests)\" in the GitHub Help documentation to learn more." - }, - "issue": { "type": "integer", "example": "1" } - }, - "required": ["head", "base"] - }, - "example": { - "title": "Amazing new feature", - "body": "Please pull these awesome changes in!", - "head": "octocat:new-feature", - "base": "master" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/pull-request" }, - "examples": { - "default": { "$ref": "#/components/examples/pull-request" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "schema": { "type": "string" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/comments": { - "get": { - "summary": "List review comments in a repository", - "description": "**Note:** Multi-line comments on pull requests are currently in public beta and subject to change.\n\nLists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID.\n\n**Multi-line comment summary**\n\n**Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.\n\nUse the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.\n\nIf you use the `comfort-fade` preview header, your response will show:\n\n* For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.\n* For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.\n\nIf you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:\n\n* For multi-line comments, the last line of the comment range for the `position` attribute.\n* For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table.\n\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions.", - "tags": ["pulls"], - "operationId": "pulls/list-review-comments-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#list-review-comments-in-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/sort" }, - { - "name": "direction", - "description": "Can be either `asc` or `desc`. Ignored without `sort` parameter.", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["asc", "desc"] } - }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/pull-request-review-comment" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "comfort-fade", - "note": "Multi-line comments in a pull request diff is currently available for developers to preview. To access the new response fields during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.comfort-fade-preview+json\n```" - }, - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "pulls", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/comments/{comment_id}": { - "get": { - "summary": "Get a review comment for a pull request", - "description": "**Note:** Multi-line comments on pull requests are currently in public beta and subject to change.\n\nProvides details for a review comment.\n\n**Multi-line comment summary**\n\n**Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.\n\nUse the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.\n\nIf you use the `comfort-fade` preview header, your response will show:\n\n* For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.\n* For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.\n\nIf you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:\n\n* For multi-line comments, the last line of the comment range for the `position` attribute.\n* For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table.\n\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions.", - "tags": ["pulls"], - "operationId": "pulls/get-review-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#get-a-review-comment-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review-comment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-comment-2" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "comfort-fade", - "note": "Multi-line comments in a pull request diff is currently available for developers to preview. To access the new response fields during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.comfort-fade-preview+json\n```" - }, - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "pulls", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a review comment for a pull request", - "description": "**Note:** Multi-line comments on pull requests are currently in public beta and subject to change.\n\nEnables you to edit a review comment.\n\n**Multi-line comment summary**\n\n**Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.\n\nUse the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.\n\nIf you use the `comfort-fade` preview header, your response will show:\n\n* For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.\n* For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.\n\nIf you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:\n\n* For multi-line comments, the last line of the comment range for the `position` attribute.\n* For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table.", - "tags": ["pulls"], - "operationId": "pulls/update-review-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#update-a-review-comment-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The text of the reply to the review comment." - } - }, - "required": ["body"] - }, - "example": { "body": "I like this too!" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review-comment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-comment-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "comfort-fade", - "note": "Multi-line comments in a pull request diff is currently available for developers to preview. To access the new response fields during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.comfort-fade-preview+json\n```" - } - ], - "category": "pulls", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a review comment for a pull request", - "description": "Deletes a review comment.", - "tags": ["pulls"], - "operationId": "pulls/delete-review-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#delete-a-review-comment-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": { - "get": { - "summary": "List reactions for a pull request review comment", - "description": "List the reactions to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments).", - "tags": ["reactions"], - "operationId": "reactions/list-for-pull-request-review-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#list-reactions-for-a-pull-request-review-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" }, - { - "name": "content", - "description": "Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a pull request review comment.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/reaction" } - }, - "examples": { - "default": { "$ref": "#/components/examples/reaction-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create reaction for a pull request review comment", - "description": "Create a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#comments). A response with a `Status: 200 OK` means that you already added the reaction type to this pull request review comment.", - "tags": ["reactions"], - "operationId": "reactions/create-for-pull-request-review-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#create-reaction-for-a-pull-request-review-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the pull request review comment.", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - "required": ["content"] - }, - "example": { "content": "heart" } - } - } - }, - "responses": { - "200": { - "description": "Reaction exists", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - }, - "201": { - "description": "Reaction created", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": { - "delete": { - "summary": "Delete a pull request comment reaction", - "description": "**Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.`\n\nDelete a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments).", - "tags": ["reactions"], - "operationId": "reactions/delete-for-pull-request-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#delete-a-pull-request-comment-reaction" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/comment_id" }, - { "$ref": "#/components/parameters/reaction-id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "reactions", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}": { - "get": { - "summary": "Get a pull request", - "description": "Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nLists details of a pull request by providing its number.\n\nWhen you get, [create](https://docs.github.com/rest/reference/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/reference/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see \"[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)\".\n\nThe value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit.\n\nThe value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request:\n\n* If merged as a [merge commit](https://help.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit.\n* If merged via a [squash](https://help.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch.\n* If [rebased](https://help.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to.\n\nPass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.", - "tags": ["pulls"], - "operationId": "pulls/get", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/pulls/#get-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" } - ], - "responses": { - "200": { - "description": "Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/pull-request" }, - "examples": { - "default": { "$ref": "#/components/examples/pull-request" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "404": { "$ref": "#/components/responses/not_found" }, - "500": { "$ref": "#/components/responses/internal_error" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a pull request", - "description": "Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nTo open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.", - "tags": ["pulls"], - "operationId": "pulls/update", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/pulls/#update-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The title of the pull request." - }, - "body": { - "type": "string", - "description": "The contents of the pull request." - }, - "state": { - "type": "string", - "description": "State of this Pull Request. Either `open` or `closed`.", - "enum": ["open", "closed"] - }, - "base": { - "type": "string", - "description": "The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository." - }, - "maintainer_can_modify": { - "type": "boolean", - "description": "Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request." - } - } - }, - "example": { - "title": "new title", - "body": "updated body", - "state": "open", - "base": "master" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/pull-request" }, - "examples": { - "default": { "$ref": "#/components/examples/pull-request" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/comments": { - "get": { - "summary": "List review comments on a pull request", - "description": "**Note:** Multi-line comments on pull requests are currently in public beta and subject to change.\n\nLists all review comments for a pull request. By default, review comments are in ascending order by ID.\n\n**Multi-line comment summary**\n\n**Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.\n\nUse the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.\n\nIf you use the `comfort-fade` preview header, your response will show:\n\n* For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.\n* For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.\n\nIf you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:\n\n* For multi-line comments, the last line of the comment range for the `position` attribute.\n* For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table.\n\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions.", - "tags": ["pulls"], - "operationId": "pulls/list-review-comments", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#list-review-comments-on-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/sort" }, - { - "name": "direction", - "description": "Can be either `asc` or `desc`. Ignored without `sort` parameter.", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["asc", "desc"] } - }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/pull-request-review-comment" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "comfort-fade", - "note": "Multi-line comments in a pull request diff is currently available for developers to preview. To access the new response fields during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.comfort-fade-preview+json\n```" - }, - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "pulls", - "subcategory": "comments" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a review comment for a pull request", - "description": "**Note:** Multi-line comments on pull requests are currently in public beta and subject to change.\n\nCreates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see \"[Create an issue comment](https://docs.github.com/rest/reference/issues#create-an-issue-comment).\" We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff.\n\nYou can still create a review comment using the `position` parameter. When you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. For more information, see [Multi-line comment summary](https://docs.github.com/rest/reference/pulls#multi-line-comment-summary-3).\n\n**Note:** The position value equals the number of lines down from the first \"@@\" hunk header in the file you want to add a comment. The line just below the \"@@\" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.\n\n**Multi-line comment summary**\n\n**Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.\n\nUse the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.\n\nIf you use the `comfort-fade` preview header, your response will show:\n\n* For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.\n* For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.\n\nIf you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:\n\n* For multi-line comments, the last line of the comment range for the `position` attribute.\n* For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table.", - "tags": ["pulls"], - "operationId": "pulls/create-review-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#create-a-review-comment-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The text of the review comment." - }, - "commit_id": { - "type": "string", - "description": "The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`." - }, - "path": { - "type": "string", - "description": "The relative path to the file that necessitates a comment." - }, - "position": { - "type": "integer", - "description": "**Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above." - }, - "side": { - "type": "string", - "description": "**Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see \"[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)\" in the GitHub Help documentation.", - "enum": ["LEFT", "RIGHT"] - }, - "line": { - "type": "integer", - "description": "**Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to." - }, - "start_line": { - "type": "integer", - "description": "**Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see \"[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)\" in the GitHub Help documentation." - }, - "start_side": { - "type": "string", - "description": "**Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see \"[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)\" in the GitHub Help documentation. See `side` in this table for additional context.", - "enum": ["LEFT", "RIGHT", "side"] - }, - "in_reply_to": { "type": "integer", "example": "2" } - }, - "required": ["body", "path"] - }, - "examples": { - "example-for-a-single-line-comment": { - "summary": "Example for a single-line comment", - "value": { - "body": "Let's add this deleted line back.", - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "path": "file1.txt", - "line": 5, - "side": "LEFT" - } - }, - "example-for-a-multi-line-comment": { - "summary": "Example for a multi-line comment", - "value": { - "body": "Great stuff!", - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "path": "file1.txt", - "start_line": 1, - "start_side": "RIGHT", - "line": 2, - "side": "RIGHT" - } - } - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review-comment" - }, - "examples": { - "example-for-a-multi-line-comment": { - "$ref": "#/components/examples/pull-request-review-comment-example-for-a-multi-line-comment" - } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", - "schema": { "type": "string" } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "comfort-fade", - "note": "Multi-line comments in a pull request diff is currently available for developers to preview. To access the new response fields during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.comfort-fade-preview+json\n```" - } - ], - "category": "pulls", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": { - "post": { - "summary": "Create a reply for a review comment", - "description": "Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported.\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.", - "tags": ["pulls"], - "operationId": "pulls/create-reply-for-review-comment", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#create-a-reply-for-a-review-comment" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/comment_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The text of the review comment." - } - }, - "required": ["body"] - }, - "example": { "body": "Great stuff!" } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review-comment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-comment" - } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", - "schema": { "type": "string" } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "pulls", - "subcategory": "comments" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/commits": { - "get": { - "summary": "List commits on a pull request", - "description": "Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/reference/repos#list-commits) endpoint.", - "tags": ["pulls"], - "operationId": "pulls/list-commits", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/pulls/#list-commits-on-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/commit" } - }, - "examples": { - "default": { "$ref": "#/components/examples/commit-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/files": { - "get": { - "summary": "List pull requests files", - "description": "**Note:** Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default.", - "tags": ["pulls"], - "operationId": "pulls/list-files", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/pulls/#list-pull-requests-files" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/diff-entry" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/diff-entry-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "500": { "$ref": "#/components/responses/internal_error" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/merge": { - "get": { - "summary": "Check if a pull request has been merged", - "description": "", - "tags": ["pulls"], - "operationId": "pulls/check-if-merged", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/pulls/#check-if-a-pull-request-has-been-merged" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" } - ], - "responses": { - "204": { "description": "Response if pull request has been merged" }, - "404": { - "description": "Response if pull request has not been merged" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": null - }, - "x-octokit": {} - }, - "put": { - "summary": "Merge a pull request", - "description": "This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/reference/guides#dealing-with-abuse-rate-limits)\" for details.", - "tags": ["pulls"], - "operationId": "pulls/merge", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/pulls/#merge-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "commit_title": { - "type": "string", - "description": "Title for the automatic commit message." - }, - "commit_message": { - "type": "string", - "description": "Extra detail to append to automatic commit message." - }, - "sha": { - "type": "string", - "description": "SHA that pull request head must match to allow merge." - }, - "merge_method": { - "type": "string", - "description": "Merge method to use. Possible values are `merge`, `squash` or `rebase`. Default is `merge`.", - "enum": ["merge", "squash", "rebase"] - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Response if merge was successful", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-merge-result" - }, - "examples": { - "response-if-merge-was-successful": { - "$ref": "#/components/examples/pull-request-merge-result-response-if-merge-was-successful" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "405": { - "description": "Response if merge cannot be performed", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - }, - "examples": { - "response-if-merge-cannot-be-performed": { - "value": { "message": "Pull Request is not mergeable" } - } - } - } - } - }, - "409": { - "description": "Response if sha was provided and pull request head did not match", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - }, - "examples": { - "response-if-sha-was-provided-and-pull-request-head-did-not-match": { - "value": { - "message": "Head branch was modified. Review and try the merge again." - } - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": { - "get": { - "summary": "List requested reviewers for a pull request", - "description": "", - "tags": ["pulls"], - "operationId": "pulls/list-requested-reviewers", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#list-requested-reviewers-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review-request" - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-pull-request-review-request" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "review-requests" - }, - "x-octokit": {} - }, - "post": { - "summary": "Request reviewers for a pull request", - "description": "This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/reference/guides#dealing-with-abuse-rate-limits)\" for details.", - "tags": ["pulls"], - "operationId": "pulls/request-reviewers", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#request-reviewers-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "reviewers": { - "type": "array", - "description": "An array of user `login`s that will be requested.", - "items": { "type": "string" } - }, - "team_reviewers": { - "type": "array", - "description": "An array of team `slug`s that will be requested.", - "items": { "type": "string" } - } - } - }, - "example": { - "reviewers": ["octocat", "hubot", "other_user"], - "team_reviewers": ["justice-league"] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-simple" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-request" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "description": "Response if user is not a collaborator" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "review-requests" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove requested reviewers from a pull request", - "description": "", - "tags": ["pulls"], - "operationId": "pulls/remove-requested-reviewers", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#remove-requested-reviewers-from-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "reviewers": { - "type": "array", - "description": "An array of user `login`s that will be removed.", - "items": { "type": "string" } - }, - "team_reviewers": { - "type": "array", - "description": "An array of team `slug`s that will be removed.", - "items": { "type": "string" } - } - } - }, - "example": { - "reviewers": ["octocat", "hubot", "other_user"], - "team_reviewers": ["justice-league"] - } - } - } - }, - "responses": { - "200": { "description": "response" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "review-requests" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews": { - "get": { - "summary": "List reviews for a pull request", - "description": "The list of reviews returns in chronological order.", - "tags": ["pulls"], - "operationId": "pulls/list-reviews", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#list-reviews-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "The list of reviews returns in chronological order.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/pull-request-review" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "reviews" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a review for a pull request", - "description": "This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.\n\nPull request reviews created in the `PENDING` state do not include the `submitted_at` property in the response.\n\n**Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](https://docs.github.com/rest/reference/media/#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) endpoint.\n\nThe `position` value equals the number of lines down from the first \"@@\" hunk header in the file you want to add a comment. The line just below the \"@@\" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.", - "tags": ["pulls"], - "operationId": "pulls/create-review", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#create-a-review-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "commit_id": { - "type": "string", - "description": "The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value." - }, - "body": { - "type": "string", - "description": "**Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review." - }, - "event": { - "type": "string", - "description": "The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://docs.github.com/rest/reference/pulls#submit-a-review-for-a-pull-request) when you are ready.", - "enum": ["APPROVE", "REQUEST_CHANGES", "COMMENT"] - }, - "comments": { - "type": "array", - "description": "Use the following table to specify the location, destination, and contents of the draft review comment.", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "The relative path to the file that necessitates a review comment." - }, - "position": { - "type": "integer", - "description": "The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note below." - }, - "body": { - "type": "string", - "description": "Text of the review comment." - }, - "line": { "type": "integer", "example": "28" }, - "side": { "type": "string", "example": "\"RIGHT\"" }, - "start_line": { "type": "integer", "example": "26" }, - "start_side": { - "type": "string", - "example": "\"LEFT\"" - } - }, - "required": ["path", "body"] - } - } - } - }, - "example": { - "commit_id": "ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091", - "body": "This is close to perfect! Please address the suggested inline change.", - "event": "REQUEST_CHANGES", - "comments": [ - { - "path": "file.md", - "position": 6, - "body": "Please add more information here, and fix this typo." - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "reviews" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": { - "get": { - "summary": "Get a review for a pull request", - "description": "", - "tags": ["pulls"], - "operationId": "pulls/get-review", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#get-a-review-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/review_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-4" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "reviews" - }, - "x-octokit": {} - }, - "put": { - "summary": "Update a review for a pull request", - "description": "Update the review summary comment with new text.", - "tags": ["pulls"], - "operationId": "pulls/update-review", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#update-a-review-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/review_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The body text of the pull request review." - } - }, - "required": ["body"] - }, - "example": { - "body": "This is close to perfect! Please address the suggested inline change. And add more about this." - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-5" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "reviews" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a pending review for a pull request", - "description": "", - "tags": ["pulls"], - "operationId": "pulls/delete-pending-review", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#delete-a-pending-review-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/review_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "reviews" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": { - "get": { - "summary": "List comments for a pull request review", - "description": "List comments for a specific pull request review.", - "tags": ["pulls"], - "operationId": "pulls/list-comments-for-review", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#list-comments-for-a-pull-request-review" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/review_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/review-comment" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/review-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "reviews" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": { - "put": { - "summary": "Dismiss a review for a pull request", - "description": "**Note:** To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/reference/repos#branches), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews.", - "tags": ["pulls"], - "operationId": "pulls/dismiss-review", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#dismiss-a-review-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/review_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The message for the pull request review dismissal" - }, - "event": { "type": "string", "example": "\"APPROVE\"" } - }, - "required": ["message"] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-3" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "reviews" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": { - "post": { - "summary": "Submit a review for a pull request", - "description": "", - "tags": ["pulls"], - "operationId": "pulls/submit-review", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/pulls#submit-a-review-for-a-pull-request" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" }, - { "$ref": "#/components/parameters/review_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The body text of the pull request review" - }, - "event": { - "type": "string", - "description": "The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action.", - "enum": ["APPROVE", "REQUEST_CHANGES", "COMMENT"] - } - }, - "required": ["event"] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pull-request-review" - }, - "examples": { - "default": { - "$ref": "#/components/examples/pull-request-review-4" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "pulls", - "subcategory": "reviews" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/pulls/{pull_number}/update-branch": { - "put": { - "summary": "Update a pull request branch", - "description": "Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch.", - "tags": ["pulls"], - "operationId": "pulls/update-branch", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/pulls/#update-a-pull-request-branch" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/pull-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "expected_head_sha": { - "type": "string", - "description": "The expected SHA of the pull request's HEAD ref. This is the most recent commit on the pull request's branch. If the expected SHA does not match the pull request's HEAD, you will receive a `422 Unprocessable Entity` status. You can use the \"[List commits](https://docs.github.com/rest/reference/repos#list-commits)\" endpoint to find the most recent commit SHA. Default: SHA of the pull request's current HEAD ref." - } - } - }, - "example": { - "expected_head_sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - } - } - } - }, - "responses": { - "202": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "url": { "type": "string" } - } - }, - "example": { - "message": "Updating pull request branch.", - "url": "https://github.com/repos/octocat/Hello-World/pulls/53" - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "lydian", - "note": "Updating the pull request branch with latest upstream changes is currently available for developers to preview. To access this new endpoint during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.lydian-preview+json\n```" - } - ], - "category": "pulls", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/readme": { - "get": { - "summary": "Get a repository README", - "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", - "tags": ["repos"], - "operationId": "repos/get-readme", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-repository-readme" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", - "in": "query", - "required": false, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/content-file" }, - "examples": { - "default": { "$ref": "#/components/examples/content-file" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "contents" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/releases": { - "get": { - "summary": "List releases", - "description": "This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/reference/repos#list-repository-tags).\n\nInformation about published releases are available to everyone. Only users with push access will receive listings for draft releases.", - "tags": ["repos"], - "operationId": "repos/list-releases", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-releases" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/release" } - }, - "examples": { - "default": { "$ref": "#/components/examples/release-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a release", - "description": "Users with push access to the repository can create a release.\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.", - "tags": ["repos"], - "operationId": "repos/create-release", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-a-release" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "tag_name": { - "type": "string", - "description": "The name of the tag." - }, - "target_commitish": { - "type": "string", - "description": "Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`)." - }, - "name": { - "type": "string", - "description": "The name of the release." - }, - "body": { - "type": "string", - "description": "Text describing the contents of the tag." - }, - "draft": { - "type": "boolean", - "description": "`true` to create a draft (unpublished) release, `false` to create a published one.", - "default": false - }, - "prerelease": { - "type": "boolean", - "description": "`true` to identify the release as a prerelease. `false` to identify the release as a full release.", - "default": false - } - }, - "required": ["tag_name"] - }, - "example": { - "tag_name": "v1.0.0", - "target_commitish": "master", - "name": "v1.0.0", - "body": "Description of the release", - "draft": false, - "prerelease": false - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/release" }, - "examples": { - "default": { "$ref": "#/components/examples/release" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/releases/1", - "schema": { "type": "string" } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/releases/assets/{asset_id}": { - "get": { - "summary": "Get a release asset", - "description": "To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response.", - "tags": ["repos"], - "operationId": "repos/get-release-asset", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-release-asset" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/asset_id" } - ], - "responses": { - "200": { - "description": "To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response.", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/release-asset" }, - "examples": { - "default": { "$ref": "#/components/examples/release-asset" } - } - } - } - }, - "302": { "$ref": "#/components/responses/found" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a release asset", - "description": "Users with push access to the repository can edit a release asset.", - "tags": ["repos"], - "operationId": "repos/update-release-asset", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#update-a-release-asset" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/asset_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The file name of the asset." - }, - "label": { - "type": "string", - "description": "An alternate short description of the asset. Used in place of the filename." - }, - "state": { "type": "string", "example": "\"uploaded\"" } - } - }, - "example": { "name": "foo-1.0.0-osx.zip", "label": "Mac binary" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/release-asset" }, - "examples": { - "default": { "$ref": "#/components/examples/release-asset" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a release asset", - "description": "", - "tags": ["repos"], - "operationId": "repos/delete-release-asset", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-a-release-asset" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/asset_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/releases/latest": { - "get": { - "summary": "Get the latest release", - "description": "View the latest published full release for the repository.\n\nThe latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published.", - "tags": ["repos"], - "operationId": "repos/get-latest-release", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-the-latest-release" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/release" }, - "examples": { - "default": { "$ref": "#/components/examples/release" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/releases/tags/{tag}": { - "get": { - "summary": "Get a release by tag name", - "description": "Get a published release with the specified tag.", - "tags": ["repos"], - "operationId": "repos/get-release-by-tag", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-release-by-tag-name" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "tag", - "description": "tag+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/release" }, - "examples": { - "default": { "$ref": "#/components/examples/release" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/releases/{release_id}": { - "get": { - "summary": "Get a release", - "description": "**Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia).", - "tags": ["repos"], - "operationId": "repos/get-release", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-a-release" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/release_id" } - ], - "responses": { - "200": { - "description": "**Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia).", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/release" }, - "examples": { - "default": { "$ref": "#/components/examples/release" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a release", - "description": "Users with push access to the repository can edit a release.", - "tags": ["repos"], - "operationId": "repos/update-release", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#update-a-release" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/release_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "tag_name": { - "type": "string", - "description": "The name of the tag." - }, - "target_commitish": { - "type": "string", - "description": "Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`)." - }, - "name": { - "type": "string", - "description": "The name of the release." - }, - "body": { - "type": "string", - "description": "Text describing the contents of the tag." - }, - "draft": { - "type": "boolean", - "description": "`true` makes the release a draft, and `false` publishes the release." - }, - "prerelease": { - "type": "boolean", - "description": "`true` to identify the release as a prerelease, `false` to identify the release as a full release." - } - } - }, - "example": { - "tag_name": "v1.0.0", - "target_commitish": "master", - "name": "v1.0.0", - "body": "Description of the release", - "draft": false, - "prerelease": false - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/release" }, - "examples": { - "default": { "$ref": "#/components/examples/release" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a release", - "description": "Users with push access to the repository can delete a release.", - "tags": ["repos"], - "operationId": "repos/delete-release", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#delete-a-release" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/release_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/releases/{release_id}/assets": { - "get": { - "summary": "List release assets", - "description": "", - "tags": ["repos"], - "operationId": "repos/list-release-assets", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-release-assets" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/release_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/release-asset" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/release-asset-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - }, - "post": { - "summary": "Upload a release asset", - "description": "This endpoint makes use of [a Hypermedia relation](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in\nthe response of the [Create a release endpoint](https://docs.github.com/rest/reference/repos#create-a-release) to upload a release asset.\n\nYou need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint.\n\nMost libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example: \n\n`application/zip`\n\nGitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example,\nyou'll still need to pass your authentication to be able to upload an asset.\n\nWhen an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted.\n\n**Notes:**\n* GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The \"[List assets for a release](https://docs.github.com/rest/reference/repos#list-assets-for-a-release)\"\nendpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://github.com/contact).\n* If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset.", - "tags": ["repos"], - "operationId": "repos/upload-release-asset", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#upload-a-release-asset" - }, - "servers": [ - { - "url": "{origin}", - "variables": { - "origin": { - "default": "https://uploads.github.com", - "description": "The URL origin (protocol + host name + port) is included in `upload_url` returned in the response of the \"Create a release\" endpoint" - } - } - } - ], - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/release_id" }, - { "name": "name", "in": "query", "schema": { "type": "string" } }, - { "name": "label", "in": "query", "schema": { "type": "string" } } - ], - "requestBody": { - "content": { - "*/*": { - "schema": { "type": "string", "description": "The raw file data" } - } - } - }, - "responses": { - "201": { - "description": "Response for successful upload", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/release-asset" }, - "examples": { - "response-for-successful-upload": { - "$ref": "#/components/examples/release-asset-response-for-successful-upload" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "releases" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/secret-scanning/alerts": { - "get": { - "summary": "List secret scanning alerts for a repository", - "description": "Lists all secret scanning alerts for a private repository, from newest to oldest. To use this endpoint, you must be an administrator for the repository or organization, and you must use an access token with the `repo` scope or `security_events` scope.\n\nGitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.", - "tags": ["secret-scanning"], - "operationId": "secret-scanning/list-alerts-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/secret-scanning#list-secret-scanning-alerts-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "state", - "in": "query", - "description": "Set to `open` or `resolved` to only list secret scanning alerts in a specific state.", - "required": false, - "schema": { "type": "string", "enum": ["open", "resolved"] } - }, - { "$ref": "#/components/parameters/page" }, - { "$ref": "#/components/parameters/per_page" } - ], - "responses": { - "200": { - "description": "Response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/secret-scanning-alert" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/secret-scanning-alert-list" - } - } - } - } - }, - "404": { - "description": "Repository is public or secret scanning is disabled for the repository" - }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "secret-scanning", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": { - "get": { - "summary": "Get a secret scanning alert", - "description": "Gets a single secret scanning alert detected in a private repository. To use this endpoint, you must be an administrator for the repository or organization, and you must use an access token with the `repo` scope or `security_events` scope.\n\nGitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.", - "tags": ["secret-scanning"], - "operationId": "secret-scanning/get-alert", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/secret-scanning#get-a-secret-scanning-alert" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/alert_number" } - ], - "responses": { - "200": { - "description": "Default response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/secret-scanning-alert" - }, - "examples": { - "default": { - "$ref": "#/components/examples/secret-scanning-alert-open" - } - } - } - } - }, - "404": { - "description": "Repository is public, or secret scanning is disabled for the repository, or the resource is not found" - }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "secret-scanning", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update a secret scanning alert", - "description": "Updates the status of a secret scanning alert in a private repository. To use this endpoint, you must be an administrator for the repository or organization, and you must use an access token with the `repo` scope or `security_events` scope.\n\nGitHub Apps must have the `secret_scanning_alerts` write permission to use this endpoint.", - "operationId": "secret-scanning/update-alert", - "tags": ["secret-scanning"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/secret-scanning#update-a-secret-scanning-alert" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/alert_number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "state": { - "$ref": "#/components/schemas/secret-scanning-alert-state" - }, - "resolution": { - "$ref": "#/components/schemas/secret-scanning-alert-resolution" - } - }, - "required": ["state"] - }, - "example": { "state": "resolved", "resolution": "false_positive" } - } - } - }, - "responses": { - "200": { - "description": "Default response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/secret-scanning-alert" - }, - "examples": { - "default": { - "$ref": "#/components/examples/secret-scanning-alert-resolved" - } - } - } - } - }, - "404": { - "description": "Repository is public, or secret scanning is disabled for the repository, or the resource is not found" - }, - "422": { "description": "State does not match the resolution" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": false, - "previews": [], - "category": "secret-scanning" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/stargazers": { - "get": { - "summary": "List stargazers", - "description": "Lists the people that have starred the repository.\n\nYou can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header:", - "tags": ["activity"], - "operationId": "activity/list-stargazers-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-stargazers" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default-response": { - "$ref": "#/components/examples/simple-user-items-default-response" - } - } - }, - "application/vnd.github.v3.star+json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/stargazer" } - }, - "examples": { - "alternative-response-with-star-creation-timestamps": { - "$ref": "#/components/examples/stargazer-items-alternative-response-with-star-creation-timestamps" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "starring" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/stats/code_frequency": { - "get": { - "summary": "Get the weekly commit activity", - "description": "Returns a weekly aggregate of the number of additions and deletions pushed to a repository.", - "tags": ["repos"], - "operationId": "repos/get-code-frequency-stats", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-the-weekly-commit-activity" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "Returns a weekly aggregate of the number of additions and deletions pushed to a repository.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/code-frequency-stat" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/code-frequency-stat-items" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "statistics" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/stats/commit_activity": { - "get": { - "summary": "Get the last year of commit activity", - "description": "Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`.", - "tags": ["repos"], - "operationId": "repos/get-commit-activity-stats", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-the-last-year-of-commit-activity" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/commit-activity" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/commit-activity-items" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "statistics" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/stats/contributors": { - "get": { - "summary": "Get all contributor commit activity", - "description": "\nReturns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information:\n\n* `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).\n* `a` - Number of additions\n* `d` - Number of deletions\n* `c` - Number of commits", - "tags": ["repos"], - "operationId": "repos/get-contributors-stats", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-all-contributor-commit-activity" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "* `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).\n* `a` - Number of additions\n* `d` - Number of deletions\n* `c` - Number of commits", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/contributor-activity" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/contributor-activity-items" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "statistics" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/stats/participation": { - "get": { - "summary": "Get the weekly commit count", - "description": "Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`.\n\nThe array order is oldest week (index 0) to most recent week.", - "tags": ["repos"], - "operationId": "repos/get-participation-stats", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-the-weekly-commit-count" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "The array order is oldest week (index 0) to most recent week.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/participation-stats" - }, - "examples": { - "default": { - "$ref": "#/components/examples/participation-stats" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "statistics" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/stats/punch_card": { - "get": { - "summary": "Get the hourly commit count for each day", - "description": "Each array contains the day number, hour number, and number of commits:\n\n* `0-6`: Sunday - Saturday\n* `0-23`: Hour of day\n* Number of commits\n\nFor example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.", - "tags": ["repos"], - "operationId": "repos/get-punch-card-stats", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-the-hourly-commit-count-for-each-day" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/code-frequency-stat" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/code-frequency-stat-items-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "statistics" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/statuses/{sha}": { - "post": { - "summary": "Create a commit status", - "description": "Users with push access in a repository can create commit statuses for a given SHA.\n\nNote: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error.", - "tags": ["repos"], - "operationId": "repos/create-commit-status", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#create-a-commit-status" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "sha", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "state": { - "type": "string", - "description": "The state of the status. Can be one of `error`, `failure`, `pending`, or `success`.", - "enum": ["error", "failure", "pending", "success"] - }, - "target_url": { - "type": "string", - "description": "The target URL to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the source of the status. \nFor example, if your continuous integration system is posting build status, you would want to provide the deep link for the build output for this specific SHA: \n`http://ci.example.com/user/repo/build/sha`" - }, - "description": { - "type": "string", - "description": "A short description of the status." - }, - "context": { - "type": "string", - "description": "A string label to differentiate this status from the status of other systems.", - "default": "default" - } - }, - "required": ["state"] - }, - "example": { - "state": "success", - "target_url": "https://example.com/build/status", - "description": "The build succeeded!", - "context": "continuous-integration/jenkins" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/status" }, - "examples": { - "default": { "$ref": "#/components/examples/status" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "schema": { "type": "string" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "statuses" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/subscribers": { - "get": { - "summary": "List watchers", - "description": "Lists the people watching the specified repository.", - "tags": ["activity"], - "operationId": "activity/list-watchers-for-repo", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-watchers" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "watching" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/subscription": { - "get": { - "summary": "Get a repository subscription", - "description": "", - "tags": ["activity"], - "operationId": "activity/get-repo-subscription", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#get-a-repository-subscription" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "Response if you subscribe to the repository", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/repository-subscription" - }, - "examples": { - "response-if-you-subscribe-to-the-repository": { - "$ref": "#/components/examples/repository-subscription-response-if-you-subscribe-to-the-repository" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { - "description": "Response if you don't subscribe to the repository" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "watching" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set a repository subscription", - "description": "If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/reference/activity#delete-a-repository-subscription) completely.", - "tags": ["activity"], - "operationId": "activity/set-repo-subscription", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#set-a-repository-subscription" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "subscribed": { - "type": "boolean", - "description": "Determines if notifications should be received from this repository." - }, - "ignored": { - "type": "boolean", - "description": "Determines if all notifications should be blocked from this repository." - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/repository-subscription" - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-subscription" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "watching" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a repository subscription", - "description": "This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/reference/activity#set-a-repository-subscription).", - "tags": ["activity"], - "operationId": "activity/delete-repo-subscription", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#delete-a-repository-subscription" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "watching" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/tags": { - "get": { - "summary": "List repository tags", - "description": "", - "tags": ["repos"], - "operationId": "repos/list-tags", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#list-repository-tags" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/tag" } - }, - "examples": { - "default": { "$ref": "#/components/examples/tag-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/tarball/{ref}": { - "get": { - "summary": "Download a repository archive (tar)", - "description": "Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually\n`master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use\nthe `Location` header to make a second `GET` request.\n**Note**: For private repositories, these links are temporary and expire after five minutes.", - "tags": ["repos"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#download-a-repository-archive" - }, - "operationId": "repos/download-tarball-archive", - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "302": { - "description": "response", - "headers": { - "Location": { - "example": "https://codeload.github.com/me/myprivate/legacy.zip/master?login=me&token=thistokenexpires", - "schema": { "type": "string" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "contents" - }, - "x-octokit": { - "changes": [ - { - "type": "OPERATION", - "date": "2020-09-17", - "before": { "operationId": "repos/download-archive" } - } - ] - } - } - }, - "/repos/{owner}/{repo}/teams": { - "get": { - "summary": "List repository teams", - "description": "", - "tags": ["repos"], - "operationId": "repos/list-teams", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#list-repository-teams" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "examples": { - "default": { "$ref": "#/components/examples/team-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/topics": { - "get": { - "summary": "Get all repository topics", - "description": "", - "tags": ["repos"], - "operationId": "repos/get-all-topics", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#get-all-repository-topics" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/topic" }, - "examples": { - "default": { "$ref": "#/components/examples/topic" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "mercy", - "note": "The `topics` property for repositories on GitHub is currently available for developers to preview. To view the `topics` property in calls that return repository results, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.mercy-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - }, - "put": { - "summary": "Replace all repository topics", - "description": "", - "tags": ["repos"], - "operationId": "repos/replace-all-topics", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#replace-all-repository-topics" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "names": { - "type": "array", - "description": "An array of topics to add to the repository. Pass one or more topics to _replace_ the set of existing topics. Send an empty array (`[]`) to clear all topics from the repository. **Note:** Topic `names` cannot contain uppercase letters.", - "items": { "type": "string" } - } - }, - "required": ["names"] - }, - "example": { "names": ["octocat", "atom", "electron", "api"] } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/topic" }, - "examples": { - "default": { "$ref": "#/components/examples/topic" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "mercy", - "note": "The `topics` property for repositories on GitHub is currently available for developers to preview. To view the `topics` property in calls that return repository results, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.mercy-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/traffic/clones": { - "get": { - "summary": "Get repository clones", - "description": "Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.", - "tags": ["repos"], - "operationId": "repos/get-clones", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-repository-clones" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/clone-traffic" }, - "examples": { - "default": { "$ref": "#/components/examples/clone-traffic" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "traffic" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/traffic/popular/paths": { - "get": { - "summary": "Get top referral paths", - "description": "Get the top 10 popular contents over the last 14 days.", - "tags": ["repos"], - "operationId": "repos/get-top-paths", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-top-referral-paths" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/content-traffic" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/content-traffic-items" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "traffic" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/traffic/popular/referrers": { - "get": { - "summary": "Get top referral sources", - "description": "Get the top 10 referrers over the last 14 days.", - "tags": ["repos"], - "operationId": "repos/get-top-referrers", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-top-referral-sources" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/referrer-traffic" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/referrer-traffic-items" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "traffic" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/traffic/views": { - "get": { - "summary": "Get page views", - "description": "Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.", - "tags": ["repos"], - "operationId": "repos/get-views", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#get-page-views" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { "$ref": "#/components/parameters/per" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/view-traffic" }, - "examples": { - "default": { "$ref": "#/components/examples/view-traffic" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "traffic" - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/transfer": { - "post": { - "summary": "Transfer a repository", - "description": "A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://help.github.com/articles/about-repository-transfers/).", - "tags": ["repos"], - "operationId": "repos/transfer", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#transfer-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "new_owner": { - "type": "string", - "description": "**Required:** The username or organization name the repository will be transferred to." - }, - "team_ids": { - "type": "array", - "description": "ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.", - "items": { "type": "integer" } - } - } - }, - "example": { "new_owner": "github", "team_ids": [12, 345] } - } - } - }, - "responses": { - "202": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/repository" }, - "examples": { - "default": { "$ref": "#/components/examples/repository" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/vulnerability-alerts": { - "get": { - "summary": "Check if vulnerability alerts are enabled for a repository", - "description": "Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin access to the repository. For more information, see \"[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)\".", - "tags": ["repos"], - "operationId": "repos/check-vulnerability-alerts", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#check-if-vulnerability-alerts-are-enabled-for-a-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "204": { - "description": "Response if repository is enabled with vulnerability alerts" - }, - "404": { - "description": "Response if repository is not enabled with vulnerability alerts" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "dorian", - "note": "Enabling and disabling dependency alerts for a repository using the REST API is currently available for developers to preview. To access these new endpoints during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.dorian-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - }, - "put": { - "summary": "Enable vulnerability alerts", - "description": "Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see \"[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)\".", - "tags": ["repos"], - "operationId": "repos/enable-vulnerability-alerts", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#enable-vulnerability-alerts" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "dorian", - "note": "Enabling and disabling dependency alerts for a repository using the REST API is currently available for developers to preview. To access these new endpoints during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.dorian-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Disable vulnerability alerts", - "description": "Disables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see \"[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)\".", - "tags": ["repos"], - "operationId": "repos/disable-vulnerability-alerts", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#disable-vulnerability-alerts" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "dorian", - "note": "Enabling and disabling dependency alerts for a repository using the REST API is currently available for developers to preview. To access these new endpoints during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.dorian-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repos/{owner}/{repo}/zipball/{ref}": { - "get": { - "summary": "Download a repository archive (zip)", - "description": "Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually\n`master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use\nthe `Location` header to make a second `GET` request.\n**Note**: For private repositories, these links are temporary and expire after five minutes.", - "tags": ["repos"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#download-a-repository-archive" - }, - "operationId": "repos/download-zipball-archive", - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" }, - { - "name": "ref", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "302": { - "description": "response", - "headers": { - "Location": { - "example": "https://codeload.github.com/me/myprivate/legacy.zip/master?login=me&token=thistokenexpires", - "schema": { "type": "string" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": "contents" - }, - "x-octokit": { - "changes": [ - { - "type": "OPERATION", - "date": "2020-09-17", - "before": { "operationId": "repos/download-archive" } - } - ] - } - } - }, - "/repos/{template_owner}/{template_repo}/generate": { - "post": { - "summary": "Create a repository using a template", - "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", - "tags": ["repos"], - "operationId": "repos/create-using-template", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#create-a-repository-using-a-template" - }, - "parameters": [ - { - "name": "template_owner", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "template_repo", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "owner": { - "type": "string", - "description": "The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization." - }, - "name": { - "type": "string", - "description": "The name of the new repository." - }, - "description": { - "type": "string", - "description": "A short description of the new repository." - }, - "include_all_branches": { - "type": "boolean", - "description": "Set to `true` to include the directory structure and files from all branches in the template repository, and not just the default branch. Default: `false`.", - "default": false - }, - "private": { - "type": "boolean", - "description": "Either `true` to create a new private repository or `false` to create a new public one.", - "default": false - } - }, - "required": ["name"] - }, - "example": { - "owner": "octocat", - "name": "Hello-World", - "description": "This is your first repository", - "include_all_branches": false, - "private": false - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/repository" }, - "examples": { - "default": { "$ref": "#/components/examples/repository-3" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World", - "schema": { "type": "string" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "baptiste", - "note": "Creating and using repository templates is currently available for developers to preview. To access this new endpoint during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n\n```shell\napplication/vnd.github.baptiste-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/repositories": { - "get": { - "summary": "List public repositories", - "description": "Lists all public repositories in the order that they were created.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", - "tags": ["repos"], - "operationId": "repos/list-public", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#list-public-repositories" - }, - "parameters": [{ "$ref": "#/components/parameters/since-repo" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/public-repository-items" - } - } - } - }, - "headers": { - "Link": { - "example": "; rel=\"next\"", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/scim/v2/enterprises/{enterprise}/Groups": { - "get": { - "summary": "List provisioned SCIM groups for an enterprise", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", - "operationId": "enterprise-admin/list-provisioned-groups-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#list-provisioned-scim groups-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/start_index" }, - { "$ref": "#/components/parameters/count" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-group-list-enterprise" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-group-list" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - }, - "post": { - "summary": "Provision a SCIM enterprise group and invite users", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nProvision an enterprise group, and invite users to the group. This sends invitation emails to the email address of the invited users to join the GitHub organization that the SCIM group corresponds to.", - "operationId": "enterprise-admin/provision-and-invite-enterprise-group", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#provision-a-scim-enterprise-group-and-invite-users" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "schemas": { - "type": "array", - "description": "The SCIM schema URIs.", - "items": { "type": "string" } - }, - "displayName": { - "type": "string", - "description": "The name of the SCIM group. This must match the GitHub organization that the group maps to." - }, - "members": { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": { - "type": "string", - "description": "The SCIM user ID for a user." - } - }, - "required": ["value"] - } - } - }, - "required": ["schemas", "displayName"] - }, - "example": { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], - "displayName": "octo-org", - "members": [ - { "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc" }, - { "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5" } - ] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-enterprise-group" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-group" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - } - }, - "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": { - "get": { - "summary": "Get SCIM provisioning information for an enterprise group", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", - "operationId": "enterprise-admin/get-provisioning-information-for-enterprise-group", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise group" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/scim_group_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-enterprise-group" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-group" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set SCIM information for a provisioned enterprise group", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nReplaces an existing provisioned group’s information. You must provide all the information required for the group as if you were provisioning it for the first time. Any existing group information that you don't provide will be removed, including group membership. If you want to only update a specific attribute, use the [Update an attribute for a SCIM enterprise group](#update-an-attribute-for-a-scim-enterprise-group) endpoint instead.", - "operationId": "enterprise-admin/set-information-for-provisioned-enterprise-group", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-group" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/scim_group_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "schemas": { - "type": "array", - "description": "The SCIM schema URIs.", - "items": { "type": "string" } - }, - "displayName": { - "type": "string", - "description": "The name of the SCIM group. This must match the GitHub organization that the group maps to." - }, - "members": { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": { - "type": "string", - "description": "The SCIM user ID for a user." - } - }, - "required": ["value"] - } - } - }, - "required": ["schemas", "displayName"] - }, - "example": { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], - "displayName": "octo-org", - "members": [ - { "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc" }, - { "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5" } - ] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-enterprise-group" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-group" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an attribute for a SCIM enterprise group", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nAllows you to change a provisioned group’s individual attributes. To change a group’s values, you must provide a specific Operations JSON format that contains at least one of the add, remove, or replace operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2).", - "operationId": "enterprise-admin/update-attribute-for-enterprise-group", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-group" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/scim_group_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "schemas": { - "type": "array", - "description": "The SCIM schema URIs.", - "items": { "type": "string" } - }, - "Operations": { - "type": "array", - "description": "Array of [SCIM operations](https://tools.ietf.org/html/rfc7644#section-3.5.2).", - "items": { "type": "object" } - } - }, - "required": ["schemas", "Operations"] - }, - "example": { - "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], - "Operations": [ - { - "op": "remove", - "path": "members", - "value": [ - { "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5" } - ] - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-enterprise-group" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-group-2" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a SCIM group from an enterprise", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", - "operationId": "enterprise-admin/delete-scim-group-from-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#delete-a-scim-group-from-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/scim_group_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - } - }, - "/scim/v2/enterprises/{enterprise}/Users": { - "get": { - "summary": "List SCIM provisioned identities for an enterprise", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nRetrieves a paginated list of all provisioned enterprise members, including pending invitations.\n\nWhen a user with a SAML-provisioned external identity leaves (or is removed from) an enterprise, the account's metadata is immediately removed. However, the returned list of user accounts might not always match the organization or enterprise member list you see on GitHub. This can happen in certain cases where an external identity associated with an organization will not match an organization member:\n - When a user with a SCIM-provisioned external identity is removed from an enterprise, the account's metadata is preserved to allow the user to re-join the organization in the future.\n - When inviting a user to join an organization, you can expect to see their external identity in the results before they accept the invitation, or if the invitation is cancelled (or never accepted).\n - When a user is invited over SCIM, an external identity is created that matches with the invitee's email address. However, this identity is only linked to a user account when the user accepts the invitation by going through SAML SSO.\n\nThe returned list of external identities can include an entry for a `null` user. These are unlinked SAML identities that are created when a user goes through the following Single Sign-On (SSO) process but does not sign in to their GitHub account after completing SSO:\n\n1. The user is granted access by the IdP and is not a member of the GitHub enterprise.\n\n1. The user attempts to access the GitHub enterprise and initiates the SAML SSO process, and is not currently signed in to their GitHub account.\n\n1. After successfully authenticating with the SAML SSO IdP, the `null` external identity entry is created and the user is prompted to sign in to their GitHub account:\n - If the user signs in, their GitHub account is linked to this entry.\n - If the user does not sign in (or does not create a new account when prompted), they are not added to the GitHub enterprise, and the external identity `null` entry remains in place.", - "operationId": "enterprise-admin/list-provisioned-identities-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#list-scim-provisioned-identities-for-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/start_index" }, - { "$ref": "#/components/parameters/count" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-user-list-enterprise" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-user-list" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - }, - "post": { - "summary": "Provision and invite a SCIM enterprise user", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nProvision enterprise membership for a user, and send organization invitation emails to the email address.\n\nYou can optionally include the groups a user will be invited to join. If you do not provide a list of `groups`, the user is provisioned for the enterprise, but no organization invitation emails will be sent.", - "operationId": "enterprise-admin/provision-and-invite-enterprise-user", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#provision-and-invite-a-scim-enterprise-user" - }, - "parameters": [{ "$ref": "#/components/parameters/enterprise" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "schemas": { - "type": "array", - "description": "The SCIM schema URIs.", - "items": { "type": "string" } - }, - "userName": { - "type": "string", - "description": "The username for the user." - }, - "name": { - "type": "object", - "properties": { - "givenName": { - "type": "string", - "description": "The first name of the user." - }, - "familyName": { - "type": "string", - "description": "The last name of the user." - } - }, - "required": ["givenName", "familyName"] - }, - "emails": { - "type": "array", - "description": "List of user emails.", - "items": { - "type": "object", - "properties": { - "value": { - "type": "string", - "description": "The email address." - }, - "type": { - "type": "string", - "description": "The type of email address." - }, - "primary": { - "type": "boolean", - "description": "Whether this email address is the primary address." - } - }, - "required": ["value", "type", "primary"] - } - }, - "groups": { - "type": "array", - "description": "List of SCIM group IDs the user is a member of.", - "items": { - "type": "object", - "properties": { "value": { "type": "string" } } - } - } - }, - "required": ["schemas", "userName", "name", "emails"] - }, - "example": { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "mona.octocat@okta.example.com", - "name": { "familyName": "Octocat", "givenName": "Mona" }, - "emails": [ - { - "value": "mona.octocat@okta.example.com", - "type": "work", - "primary": true - } - ], - "groups": [{ "value": "468dd3fa-a1d6-11ea-9031-15a1f0d7811d" }] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-enterprise-user" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-user" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - } - }, - "/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": { - "get": { - "summary": "Get SCIM provisioning information for an enterprise user", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", - "operationId": "enterprise-admin/get-provisioning-information-for-enterprise-user", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/scim_user_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-enterprise-user" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-user" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set SCIM information for a provisioned enterprise user", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nReplaces an existing provisioned user's information. You must provide all the information required for the user as if you were provisioning them for the first time. Any existing user information that you don't provide will be removed. If you want to only update a specific attribute, use the [Update an attribute for a SCIM user](#update-an-attribute-for-an-enterprise-scim-user) endpoint instead.\n\nYou must at least provide the required values for the user: `userName`, `name`, and `emails`.\n\n**Warning:** Setting `active: false` removes the user from the enterprise, deletes the external identity, and deletes the associated `{scim_user_id}`.", - "operationId": "enterprise-admin/set-information-for-provisioned-enterprise-user", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/scim_user_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "schemas": { - "type": "array", - "description": "The SCIM schema URIs.", - "items": { "type": "string" } - }, - "userName": { - "type": "string", - "description": "The username for the user." - }, - "name": { - "type": "object", - "properties": { - "givenName": { - "type": "string", - "description": "The first name of the user." - }, - "familyName": { - "type": "string", - "description": "The last name of the user." - } - }, - "required": ["givenName", "familyName"] - }, - "emails": { - "type": "array", - "description": "List of user emails.", - "items": { - "type": "object", - "properties": { - "value": { - "type": "string", - "description": "The email address." - }, - "type": { - "type": "string", - "description": "The type of email address." - }, - "primary": { - "type": "boolean", - "description": "Whether this email address is the primary address." - } - }, - "required": ["value", "type", "primary"] - } - }, - "groups": { - "type": "array", - "description": "List of SCIM group IDs the user is a member of.", - "items": { - "type": "object", - "properties": { "value": { "type": "string" } } - } - } - }, - "required": ["schemas", "userName", "name", "emails"] - }, - "example": { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "mona.octocat@okta.example.com", - "name": { "familyName": "Octocat", "givenName": "Mona" }, - "emails": [ - { - "value": "mona.octocat@okta.example.com", - "type": "work", - "primary": true - } - ], - "groups": [{ "value": "468dd3fa-a1d6-11ea-9031-15a1f0d7811d" }] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-enterprise-user" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-user" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an attribute for a SCIM enterprise user", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nAllows you to change a provisioned user's individual attributes. To change a user's values, you must provide a specific `Operations` JSON format that contains at least one of the `add`, `remove`, or `replace` operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2).\n\n**Note:** Complicated SCIM `path` selectors that include filters are not supported. For example, a `path` selector defined as `\"path\": \"emails[type eq \\\"work\\\"]\"` will not work.\n\n**Warning:** If you set `active:false` using the `replace` operation (as shown in the JSON example below), it removes the user from the enterprise, deletes the external identity, and deletes the associated `:scim_user_id`.\n\n```\n{\n \"Operations\":[{\n \"op\":\"replace\",\n \"value\":{\n \"active\":false\n }\n }]\n}\n```", - "operationId": "enterprise-admin/update-attribute-for-enterprise-user", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/scim_user_id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "schemas": { - "type": "array", - "description": "The SCIM schema URIs.", - "items": { "type": "string" } - }, - "Operations": { - "type": "array", - "description": "Array of [SCIM operations](https://tools.ietf.org/html/rfc7644#section-3.5.2).", - "items": { "type": "object" } - } - }, - "required": ["schemas", "Operations"] - }, - "example": { - "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], - "Operations": [ - { - "op": "add", - "path": "emails", - "value": [ - { "value": "monalisa@octocat.github.com", "type": "home" } - ] - }, - { - "op": "replace", - "path": "name.givenName", - "value": "Monalisa" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim-enterprise-user" - }, - "examples": { - "default": { - "$ref": "#/components/examples/scim-enterprise-user-2" - } - } - } - } - } - }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a SCIM user from an enterprise", - "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", - "operationId": "enterprise-admin/delete-user-from-enterprise", - "tags": ["enterprise-admin"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/enterprise-admin#delete-a-scim-user-from-an-enterprise" - }, - "parameters": [ - { "$ref": "#/components/parameters/enterprise" }, - { "$ref": "#/components/parameters/scim_user_id" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "enabledForGitHubApps": true, - "githubCloudOnly": true, - "previews": [], - "category": "enterprise-admin", - "subcategory": "scim" - }, - "x-octokit": {} - } - }, - "/scim/v2/organizations/{org}/Users": { - "get": { - "summary": "List SCIM provisioned identities", - "description": "Retrieves a paginated list of all provisioned organization members, including pending invitations. If you provide the `filter` parameter, the resources for all matching provisions members are returned.\n\nWhen a user with a SAML-provisioned external identity leaves (or is removed from) an organization, the account's metadata is immediately removed. However, the returned list of user accounts might not always match the organization or enterprise member list you see on GitHub. This can happen in certain cases where an external identity associated with an organization will not match an organization member:\n - When a user with a SCIM-provisioned external identity is removed from an organization, the account's metadata is preserved to allow the user to re-join the organization in the future.\n - When inviting a user to join an organization, you can expect to see their external identity in the results before they accept the invitation, or if the invitation is cancelled (or never accepted).\n - When a user is invited over SCIM, an external identity is created that matches with the invitee's email address. However, this identity is only linked to a user account when the user accepts the invitation by going through SAML SSO.\n\nThe returned list of external identities can include an entry for a `null` user. These are unlinked SAML identities that are created when a user goes through the following Single Sign-On (SSO) process but does not sign in to their GitHub account after completing SSO:\n\n1. The user is granted access by the IdP and is not a member of the GitHub organization.\n\n1. The user attempts to access the GitHub organization and initiates the SAML SSO process, and is not currently signed in to their GitHub account.\n\n1. After successfully authenticating with the SAML SSO IdP, the `null` external identity entry is created and the user is prompted to sign in to their GitHub account:\n - If the user signs in, their GitHub account is linked to this entry.\n - If the user does not sign in (or does not create a new account when prompted), they are not added to the GitHub organization, and the external identity `null` entry remains in place.", - "tags": ["scim"], - "operationId": "scim/list-provisioned-identities", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/scim/#list-scim-provisioned-identities" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { - "name": "startIndex", - "description": "Used for pagination: the index of the first result to return.", - "in": "query", - "required": false, - "schema": { "type": "integer" } - }, - { - "name": "count", - "description": "Used for pagination: the number of results to return.", - "in": "query", - "required": false, - "schema": { "type": "integer" } - }, - { - "name": "filter", - "description": "Filters results using the equals query parameter operator (`eq`). You can filter results that are equal to `id`, `userName`, `emails`, and `external_id`. For example, to search for an identity with the `userName` Octocat, you would use this query:\n\n`?filter=userName%20eq%20\\\"Octocat\\\"`.\n\nTo filter results for for the identity with the email `octocat@github.com`, you would use this query:\n\n`?filter=emails%20eq%20\\\"octocat@github.com\\\"`.", - "in": "query", - "required": false, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-user-list" }, - "examples": { - "response-with-filter": { - "$ref": "#/components/examples/scim-user-list-response-with-filter" - }, - "response-without-filter": { - "$ref": "#/components/examples/scim-user-list-response-without-filter" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "400": { "$ref": "#/components/responses/scim_bad_request" }, - "403": { "$ref": "#/components/responses/scim_forbidden" }, - "404": { "$ref": "#/components/responses/scim_not_found" } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": true, - "previews": [], - "category": "scim", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Provision and invite a SCIM user", - "description": "Provision organization membership for a user, and send an activation email to the email address.", - "tags": ["scim"], - "operationId": "scim/provision-and-invite-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/scim/#provision-and-invite-a-scim-user" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "201": { - "description": "response", - "content": { - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-user" }, - "examples": { - "default": { "$ref": "#/components/examples/scim-user" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "400": { "$ref": "#/components/responses/scim_bad_request" }, - "403": { "$ref": "#/components/responses/scim_forbidden" }, - "404": { "$ref": "#/components/responses/scim_not_found" }, - "409": { "$ref": "#/components/responses/scim_conflict" }, - "500": { "$ref": "#/components/responses/scim_internal_error" } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "userName": { - "description": "Configured by the admin. Could be an email, login, or username", - "example": "someone@example.com", - "type": "string" - }, - "displayName": { - "description": "The name of the user, suitable for display to end-users", - "example": "Jon Doe", - "type": "string" - }, - "name": { - "type": "object", - "properties": { - "givenName": { "type": "string" }, - "familyName": { "type": "string" }, - "formatted": { "type": "string" } - }, - "required": ["givenName", "familyName"], - "example": "Jane User" - }, - "emails": { - "description": "user emails", - "example": ["someone@example.com", "another@example.com"], - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "value": { "type": "string" }, - "primary": { "type": "boolean" }, - "type": { "type": "string" } - }, - "required": ["value"] - } - }, - "schemas": { "type": "array", "items": { "type": "string" } }, - "externalId": { "type": "string" }, - "groups": { "type": "array", "items": { "type": "string" } }, - "active": { "type": "boolean" } - }, - "required": ["userName", "name", "emails"] - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": true, - "previews": [], - "category": "scim", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/scim/v2/organizations/{org}/Users/{scim_user_id}": { - "get": { - "summary": "Get SCIM provisioning information for a user", - "description": "", - "tags": ["scim"], - "operationId": "scim/get-provisioning-information-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/scim/#get-scim-provisioning-information-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/scim_user_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-user" }, - "examples": { - "default": { "$ref": "#/components/examples/scim-user" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/scim_forbidden" }, - "404": { "$ref": "#/components/responses/scim_not_found" } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": true, - "previews": [], - "category": "scim", - "subcategory": null - }, - "x-octokit": {} - }, - "put": { - "summary": "Update a provisioned organization membership", - "description": "Replaces an existing provisioned user's information. You must provide all the information required for the user as if you were provisioning them for the first time. Any existing user information that you don't provide will be removed. If you want to only update a specific attribute, use the [Update an attribute for a SCIM user](https://docs.github.com/rest/reference/scim#update-an-attribute-for-a-scim-user) endpoint instead.\n\nYou must at least provide the required values for the user: `userName`, `name`, and `emails`.\n\n**Warning:** Setting `active: false` removes the user from the organization, deletes the external identity, and deletes the associated `{scim_user_id}`.", - "tags": ["scim"], - "operationId": "scim/set-information-for-provisioned-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/scim/#set-scim-information-for-a-provisioned-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/scim_user_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-user" }, - "examples": { - "default": { "$ref": "#/components/examples/scim-user" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/scim_forbidden" }, - "404": { "$ref": "#/components/responses/scim_not_found" } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "schemas": { "type": "array", "items": { "type": "string" } }, - "displayName": { - "description": "The name of the user, suitable for display to end-users", - "example": "Jon Doe", - "type": "string" - }, - "externalId": { "type": "string" }, - "groups": { "type": "array", "items": { "type": "string" } }, - "active": { "type": "boolean" }, - "userName": { - "description": "Configured by the admin. Could be an email, login, or username", - "example": "someone@example.com", - "type": "string" - }, - "name": { - "type": "object", - "properties": { - "givenName": { "type": "string" }, - "familyName": { "type": "string" }, - "formatted": { "type": "string" } - }, - "required": ["givenName", "familyName"], - "example": "Jane User" - }, - "emails": { - "description": "user emails", - "example": ["someone@example.com", "another@example.com"], - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "type": { "type": "string" }, - "value": { "type": "string" }, - "primary": { "type": "boolean" } - }, - "required": ["value"] - } - } - }, - "required": ["userName", "name", "emails"] - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": true, - "previews": [], - "category": "scim", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an attribute for a SCIM user", - "description": "Allows you to change a provisioned user's individual attributes. To change a user's values, you must provide a specific `Operations` JSON format that contains at least one of the `add`, `remove`, or `replace` operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2).\n\n**Note:** Complicated SCIM `path` selectors that include filters are not supported. For example, a `path` selector defined as `\"path\": \"emails[type eq \\\"work\\\"]\"` will not work.\n\n**Warning:** If you set `active:false` using the `replace` operation (as shown in the JSON example below), it removes the user from the organization, deletes the external identity, and deletes the associated `:scim_user_id`.\n\n```\n{\n \"Operations\":[{\n \"op\":\"replace\",\n \"value\":{\n \"active\":false\n }\n }]\n}\n```", - "tags": ["scim"], - "operationId": "scim/update-attribute-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/scim/#update-an-attribute-for-a-scim-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/scim_user_id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-user" }, - "examples": { - "default": { "$ref": "#/components/examples/scim-user" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "400": { "$ref": "#/components/responses/scim_bad_request" }, - "403": { "$ref": "#/components/responses/scim_forbidden" }, - "404": { "$ref": "#/components/responses/scim_not_found" }, - "429": { - "description": "Too many requests", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "schemas": { "type": "array", "items": { "type": "string" } }, - "Operations": { - "description": "Set of operations to be performed", - "example": [ - { "op": "replace", "value": { "active": false } } - ], - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "op": { - "type": "string", - "enum": ["add", "remove", "replace"] - }, - "path": { "type": "string" }, - "value": { - "oneOf": [ - { - "type": "object", - "properties": { - "active": { - "type": "boolean", - "nullable": true - }, - "userName": { - "type": "string", - "nullable": true - }, - "externalId": { - "type": "string", - "nullable": true - }, - "givenName": { - "type": "string", - "nullable": true - }, - "familyName": { - "type": "string", - "nullable": true - } - } - }, - { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": { "type": "string" }, - "primary": { "type": "boolean" } - } - } - }, - { "type": "string" } - ] - } - }, - "required": ["op"] - } - } - }, - "required": ["Operations"], - "type": "object" - } - } - } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": true, - "previews": [], - "category": "scim", - "subcategory": null - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a SCIM user from an organization", - "description": "", - "tags": ["scim"], - "operationId": "scim/delete-user-from-org", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/scim/#delete-a-scim-user-from-an-organization" - }, - "parameters": [ - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/scim_user_id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/scim_forbidden" }, - "404": { "$ref": "#/components/responses/scim_not_found" } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": true, - "previews": [], - "category": "scim", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/search/code": { - "get": { - "summary": "Search code", - "description": "Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).\n\nWhen searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata).\n\nFor example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this:\n\n`q=addClass+in:file+language:js+repo:jquery/jquery`\n\nThis query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository.\n\n#### Considerations for code search\n\nDue to the complexity of searching code, there are a few restrictions on how searches are performed:\n\n* Only the _default branch_ is considered. In most cases, this will be the `master` branch.\n* Only files smaller than 384 KB are searchable.\n* You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing\nlanguage:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is.", - "tags": ["search"], - "operationId": "search/code", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/search/#search-code" - }, - "parameters": [ - { - "name": "q", - "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See \"[Searching code](https://help.github.com/articles/searching-code/)\" for a detailed list of qualifiers.", - "in": "query", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "sort", - "description": "Sorts the results of your query. Can only be `indexed`, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results)", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["indexed"] } - }, - { "$ref": "#/components/parameters/order" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "incomplete_results": { "type": "boolean" }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/code-search-result-item" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/code-search-result-item-paginated" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "search", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/search/commits": { - "get": { - "summary": "Search commits", - "description": "Find commits via various criteria on the default branch (usually `master`). This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).\n\nWhen searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match\nmetadata](https://docs.github.com/rest/reference/search#text-match-metadata).\n\nFor example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this:\n\n`q=repo:octocat/Spoon-Knife+css`", - "tags": ["search"], - "operationId": "search/commits", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/search/#search-commits" - }, - "parameters": [ - { - "name": "q", - "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See \"[Searching commits](https://help.github.com/articles/searching-commits/)\" for a detailed list of qualifiers.", - "in": "query", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "sort", - "description": "Sorts the results of your query by `author-date` or `committer-date`. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results)", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["author-date", "committer-date"] - } - }, - { "$ref": "#/components/parameters/order" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "incomplete_results": { "type": "boolean" }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/commit-search-result-item" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/commit-search-result-item-paginated" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "cloak", - "note": "The Commit Search API is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2017-01-05-commit-search-api/) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.cloak-preview\n```" - } - ], - "category": "search", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/search/issues": { - "get": { - "summary": "Search issues and pull requests", - "description": "Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).\n\nWhen searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted\nsearch results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata).\n\nFor example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this.\n\n`q=windows+label:bug+language:python+state:open&sort=created&order=asc`\n\nThis query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results.\n\n**Note:** For [user-to-server](https://docs.github.com/developers/apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) GitHub App requests, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see \"[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests).\"", - "tags": ["search"], - "operationId": "search/issues-and-pull-requests", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/search/#search-issues-and-pull-requests" - }, - "parameters": [ - { - "name": "q", - "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See \"[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)\" for a detailed list of qualifiers.", - "in": "query", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "sort", - "description": "Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results)", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "comments", - "reactions", - "reactions-+1", - "reactions--1", - "reactions-smile", - "reactions-thinking_face", - "reactions-heart", - "reactions-tada", - "interactions", - "created", - "updated" - ] - } - }, - { "$ref": "#/components/parameters/order" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "incomplete_results": { "type": "boolean" }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/issue-search-result-item" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-search-result-item-paginated" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "search", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/search/labels": { - "get": { - "summary": "Search labels", - "description": "Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).\n\nWhen searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata).\n\nFor example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this:\n\n`q=bug+defect+enhancement&repository_id=64778136`\n\nThe labels that best match the query appear first in the search results.", - "tags": ["search"], - "operationId": "search/labels", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/search/#search-labels" - }, - "parameters": [ - { - "name": "repository_id", - "description": "The id of the repository.", - "in": "query", - "required": true, - "schema": { "type": "integer" } - }, - { - "name": "q", - "description": "The search keywords. This endpoint does not accept qualifiers in the query. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query).", - "in": "query", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "sort", - "description": "Sorts the results of your query by when the label was `created` or `updated`. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results)", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["created", "updated"] } - }, - { "$ref": "#/components/parameters/order" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "incomplete_results": { "type": "boolean" }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/label-search-result-item" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/label-search-result-item-paginated" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "search", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/search/repositories": { - "get": { - "summary": "Search repositories", - "description": "Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).\n\nWhen searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata).\n\nFor example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this:\n\n`q=tetris+language:assembly&sort=stars&order=desc`\n\nThis query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results.\n\nWhen you include the `mercy` preview header, you can also search for multiple topics by adding more `topic:` instances. For example, your query might look like this:\n\n`q=topic:ruby+topic:rails`", - "tags": ["search"], - "operationId": "search/repos", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/search/#search-repositories" - }, - "parameters": [ - { - "name": "q", - "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See \"[Searching for repositories](https://help.github.com/articles/searching-for-repositories/)\" for a detailed list of qualifiers.", - "in": "query", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "sort", - "description": "Sorts the results of your query by number of `stars`, `forks`, or `help-wanted-issues` or how recently the items were `updated`. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results)", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["stars", "forks", "help-wanted-issues", "updated"] - } - }, - { "$ref": "#/components/parameters/order" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "incomplete_results": { "type": "boolean" }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/repo-search-result-item" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/repo-search-result-item-paginated" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "mercy", - "note": "The `topics` property for repositories on GitHub is currently available for developers to preview. To view the `topics` property in calls that return repository results, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.mercy-preview+json\n```" - } - ], - "category": "search", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/search/topics": { - "get": { - "summary": "Search topics", - "description": "Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). See \"[Searching topics](https://help.github.com/articles/searching-topics/)\" for a detailed list of qualifiers.\n\nWhen searching for topics, you can get text match metadata for the topic's **short\\_description**, **description**, **name**, or **display\\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata).\n\nFor example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this:\n\n`q=ruby+is:featured`\n\nThis query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results.", - "tags": ["search"], - "operationId": "search/topics", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/search/#search-topics" - }, - "parameters": [ - { - "name": "q", - "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query).", - "in": "query", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "incomplete_results": { "type": "boolean" }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/topic-search-result-item" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/topic-search-result-item-paginated" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "mercy", - "note": "The `topics` property for repositories on GitHub is currently available for developers to preview. To view the `topics` property in calls that return repository results, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.mercy-preview+json\n```" - } - ], - "category": "search", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/search/users": { - "get": { - "summary": "Search users", - "description": "Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).\n\nWhen searching for users, you can get text match metadata for the issue **login**, **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata).\n\nFor example, if you're looking for a list of popular users, you might try this query:\n\n`q=tom+repos:%3E42+followers:%3E1000`\n\nThis query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers.", - "tags": ["search"], - "operationId": "search/users", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/search/#search-users" - }, - "parameters": [ - { - "name": "q", - "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See \"[Searching users](https://help.github.com/articles/searching-users/)\" for a detailed list of qualifiers.", - "in": "query", - "required": true, - "schema": { "type": "string" } - }, - { - "name": "sort", - "description": "Sorts the results of your query by number of `followers` or `repositories`, or when the person `joined` GitHub. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results)", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["followers", "repositories", "joined"] - } - }, - { "$ref": "#/components/parameters/order" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "incomplete_results": { "type": "boolean" }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/user-search-result-item" - } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/user-search-result-item-paginated" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "422": { "$ref": "#/components/responses/validation_failed" }, - "503": { "$ref": "#/components/responses/service_unavailable" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "search", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/teams/{team_id}": { - "get": { - "summary": "Get a team (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the [Get a team by name](https://docs.github.com/rest/reference/teams#get-a-team-by-name) endpoint.", - "tags": ["teams"], - "operationId": "teams/get-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#get-a-team-legacy" - }, - "parameters": [{ "$ref": "#/components/parameters/team-id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-full" }, - "examples": { - "default": { "$ref": "#/components/examples/team-full" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "patch": { - "summary": "Update a team (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a team](https://docs.github.com/rest/reference/teams#update-a-team) endpoint.\n\nTo edit a team, the authenticated user must either be an organization owner or a team maintainer.\n\n**Note:** With nested teams, the `privacy` for parent teams cannot be `secret`.", - "tags": ["teams"], - "operationId": "teams/update-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#update-a-team-legacy" - }, - "parameters": [{ "$ref": "#/components/parameters/team-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the team." - }, - "description": { - "type": "string", - "description": "The description of the team." - }, - "privacy": { - "type": "string", - "description": "The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are: \n**For a non-nested team:** \n\\* `secret` - only visible to organization owners and members of this team. \n\\* `closed` - visible to all members of this organization. \n**For a parent or child team:** \n\\* `closed` - visible to all members of this organization.", - "enum": ["secret", "closed"] - }, - "permission": { - "type": "string", - "description": "**Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of: \n\\* `pull` - team members can pull, but not push to or administer newly-added repositories. \n\\* `push` - team members can pull and push, but not administer newly-added repositories. \n\\* `admin` - team members can pull, push and administer newly-added repositories.", - "enum": ["pull", "push", "admin"], - "default": "pull" - }, - "parent_team_id": { - "type": "integer", - "description": "The ID of a team to set as the parent team.", - "nullable": true - } - }, - "required": ["name"] - }, - "example": { - "name": "new team name", - "description": "new team description", - "privacy": "closed" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-full" }, - "examples": { - "default": { "$ref": "#/components/examples/team-full" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a team (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a team](https://docs.github.com/rest/reference/teams#delete-a-team) endpoint.\n\nTo delete a team, the authenticated user must be an organization owner or team maintainer.\n\nIf you are an organization owner, deleting a parent team will delete all of its child teams as well.", - "tags": ["teams"], - "operationId": "teams/delete-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#delete-a-team-legacy" - }, - "parameters": [{ "$ref": "#/components/parameters/team-id" }], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/discussions": { - "get": { - "summary": "List discussions (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List discussions`](https://docs.github.com/rest/reference/teams#list-discussions) endpoint.\n\nList all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["teams"], - "operationId": "teams/list-discussions-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-discussions-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team-discussion" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussions" - }, - "deprecated": true, - "x-octokit": {} - }, - "post": { - "summary": "Create a discussion (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create a discussion`](https://docs.github.com/rest/reference/teams#create-a-discussion) endpoint.\n\nCreates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.", - "tags": ["teams"], - "operationId": "teams/create-discussion-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#create-a-discussion-legacy" - }, - "parameters": [{ "$ref": "#/components/parameters/team-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The discussion post's title." - }, - "body": { - "type": "string", - "description": "The discussion post's body text." - }, - "private": { - "type": "boolean", - "description": "Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post.", - "default": false - } - }, - "required": ["title", "body"] - }, - "example": { - "title": "Our first team post", - "body": "Hi! This is an area for us to collaborate as a team." - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-discussion" }, - "examples": { - "default": { "$ref": "#/components/examples/team-discussion" } - } - } - } - } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussions" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/discussions/{discussion_number}": { - "get": { - "summary": "Get a discussion (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion](https://docs.github.com/rest/reference/teams#get-a-discussion) endpoint.\n\nGet a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["teams"], - "operationId": "teams/get-discussion-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#get-a-discussion-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-discussion" }, - "examples": { - "default": { "$ref": "#/components/examples/team-discussion" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussions" - }, - "deprecated": true, - "x-octokit": {} - }, - "patch": { - "summary": "Update a discussion (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion](https://docs.github.com/rest/reference/teams#update-a-discussion) endpoint.\n\nEdits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["teams"], - "operationId": "teams/update-discussion-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#update-a-discussion-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The discussion post's title." - }, - "body": { - "type": "string", - "description": "The discussion post's body text." - } - } - }, - "example": { "title": "Welcome to our first team post" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-discussion" }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussions" - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a discussion (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Delete a discussion`](https://docs.github.com/rest/reference/teams#delete-a-discussion) endpoint.\n\nDelete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["teams"], - "operationId": "teams/delete-discussion-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#delete-a-discussion-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussions" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/discussions/{discussion_number}/comments": { - "get": { - "summary": "List discussion comments (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List discussion comments](https://docs.github.com/rest/reference/teams#list-discussion-comments) endpoint.\n\nList all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["teams"], - "operationId": "teams/list-discussion-comments-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-discussion-comments-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/team-discussion-comment" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-comment-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussion-comments" - }, - "deprecated": true, - "x-octokit": {} - }, - "post": { - "summary": "Create a discussion comment (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Create a discussion comment](https://docs.github.com/rest/reference/teams#create-a-discussion-comment) endpoint.\n\nCreates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).\n\nThis endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See \"[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)\" and \"[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)\" for details.", - "tags": ["teams"], - "operationId": "teams/create-discussion-comment-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#create-a-discussion-comment-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The discussion comment's body text." - } - }, - "required": ["body"] - }, - "example": { "body": "Do you like apples?" } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/team-discussion-comment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-comment" - } - } - } - } - } - }, - "x-github": { - "triggersNotification": true, - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussion-comments" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": { - "get": { - "summary": "Get a discussion comment (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion comment](https://docs.github.com/rest/reference/teams#get-a-discussion-comment) endpoint.\n\nGet a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["teams"], - "operationId": "teams/get-discussion-comment-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#get-a-discussion-comment-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/team-discussion-comment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-comment" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussion-comments" - }, - "deprecated": true, - "x-octokit": {} - }, - "patch": { - "summary": "Update a discussion comment (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion comment](https://docs.github.com/rest/reference/teams#update-a-discussion-comment) endpoint.\n\nEdits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["teams"], - "operationId": "teams/update-discussion-comment-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#update-a-discussion-comment-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "description": "The discussion comment's body text." - } - }, - "required": ["body"] - }, - "example": { "body": "Do you like pineapples?" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/team-discussion-comment" - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-discussion-comment-2" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussion-comments" - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a discussion comment (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a discussion comment](https://docs.github.com/rest/reference/teams#delete-a-discussion-comment) endpoint.\n\nDeletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["teams"], - "operationId": "teams/delete-discussion-comment-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#delete-a-discussion-comment-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "discussion-comments" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - "get": { - "summary": "List reactions for a team discussion comment (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion comment`](https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion-comment) endpoint.\n\nList the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["reactions"], - "operationId": "reactions/list-for-team-discussion-comment-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" }, - { - "name": "content", - "description": "Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion comment.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/reaction" } - }, - "examples": { - "default": { "$ref": "#/components/examples/reaction-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-21", - "deprecationDate": "2020-02-26", - "category": "reactions", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "post": { - "summary": "Create reaction for a team discussion comment (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion comment`](https://docs.github.comt/rest/reference/reactions#create-reaction-for-a-team-discussion-comment) endpoint.\n\nCreate a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion comment.", - "tags": ["reactions"], - "operationId": "reactions/create-for-team-discussion-comment-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#create-reaction-for-a-team-discussion-comment-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" }, - { "$ref": "#/components/parameters/comment-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion comment.", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - "required": ["content"] - }, - "example": { "content": "heart" } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-21", - "deprecationDate": "2020-02-26", - "category": "reactions", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/discussions/{discussion_number}/reactions": { - "get": { - "summary": "List reactions for a team discussion (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion`](https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion) endpoint.\n\nList the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["reactions"], - "operationId": "reactions/list-for-team-discussion-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" }, - { - "name": "content", - "description": "Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/reaction" } - }, - "examples": { - "default": { "$ref": "#/components/examples/reaction-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-21", - "deprecationDate": "2020-02-26", - "category": "reactions", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "post": { - "summary": "Create reaction for a team discussion (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion`](https://docs.github.com/rest/reference/reactions#create-reaction-for-a-team-discussion) endpoint.\n\nCreate a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion.", - "tags": ["reactions"], - "operationId": "reactions/create-for-team-discussion-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/reactions/#create-reaction-for-a-team-discussion-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/discussion-number" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion.", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - } - }, - "required": ["content"] - }, - "example": { "content": "heart" } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/reaction" }, - "examples": { - "default": { "$ref": "#/components/examples/reaction" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "removalDate": "2021-02-21", - "deprecationDate": "2020-02-26", - "category": "reactions", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/invitations": { - "get": { - "summary": "List pending team invitations (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List pending team invitations`](https://docs.github.com/rest/reference/teams#list-pending-team-invitations) endpoint.\n\nThe return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.", - "tags": ["teams"], - "operationId": "teams/list-pending-invitations-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-pending-team-invitations-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/organization-invitation" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-invitation-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "members" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/members": { - "get": { - "summary": "List team members (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team members`](https://docs.github.com/rest/reference/teams#list-team-members) endpoint.\n\nTeam members will include the members of child teams.", - "tags": ["teams"], - "operationId": "teams/list-members-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-team-members-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { - "name": "role", - "description": "Filters members returned by their role in the team. Can be one of: \n\\* `member` - normal members of the team. \n\\* `maintainer` - team maintainers. \n\\* `all` - all members of the team.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["member", "maintainer", "all"], - "default": "all" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "members" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/members/{username}": { - "get": { - "summary": "Get team member (Legacy)", - "description": "The \"Get team member\" endpoint (described below) is deprecated.\n\nWe recommend using the [Get team membership for a user](https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user) endpoint instead. It allows you to get both active and pending memberships.\n\nTo list members in a team, the team must be visible to the authenticated user.", - "tags": ["teams"], - "operationId": "teams/get-member-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#get-team-member-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Response if user is a member" }, - "404": { "description": "Response if user is not a member" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "members" - }, - "deprecated": true, - "x-octokit": {} - }, - "put": { - "summary": "Add team member (Legacy)", - "description": "The \"Add team member\" endpoint (described below) is deprecated.\n\nWe recommend using the [Add or update team membership for a user](https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user) endpoint instead. It allows you to invite new organization members to your teams.\n\nTeam synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nTo add someone to a team, the authenticated user must be an organization owner or a team maintainer in the team they're changing. The person being added to the team must be a member of the team's organization.\n\n**Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see \"[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/).\"\n\nNote that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"", - "tags": ["teams"], - "operationId": "teams/add-member-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#add-team-member-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { - "description": "Response if team synchronization is set up" - }, - "422": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "field": { "type": "string" }, - "resource": { "type": "string" } - } - } - }, - "documentation_url": { - "type": "string", - "example": "\"https://docs.github.com/rest\"" - } - } - }, - "examples": { - "response-if-you-attempt-to-add-an-organization-to-a-team": { - "summary": "Response if you attempt to add an organization to a team", - "value": { - "message": "Cannot add an organization as a member.", - "errors": [ - { - "code": "org", - "field": "user", - "resource": "TeamMember" - } - ] - } - }, - "response-if-you-attempt-to-add-a-user-to-a-team-when-they-are-not-a-member-of-at-least-one-other-team-in-the-same-organization": { - "summary": "Response if you attempt to add a user to a team when they are not a member of at least one other team in the same organization", - "value": { - "message": "User isn't a member of this organization. Please invite them first.", - "errors": [ - { - "code": "unaffiliated", - "field": "user", - "resource": "TeamMember" - } - ] - } - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "members" - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Remove team member (Legacy)", - "description": "The \"Remove team member\" endpoint (described below) is deprecated.\n\nWe recommend using the [Remove team membership for a user](https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user) endpoint instead. It allows you to remove both active and pending memberships.\n\nTeam synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nTo remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team.\n\n**Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see \"[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/).\"", - "tags": ["teams"], - "operationId": "teams/remove-member-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#remove-team-member-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "description": "Response if team synchronization is setup" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "members" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/memberships/{username}": { - "get": { - "summary": "Get team membership for a user (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get team membership for a user](https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user) endpoint.\n\nTeam members will include the members of child teams.\n\nTo get a user's membership with a team, the team must be visible to the authenticated user.\n\n**Note:** The `role` for organization owners returns as `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team).", - "tags": ["teams"], - "operationId": "teams/get-membership-for-user-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-membership" }, - "examples": { - "response-if-user-has-an-active-membership-with-team": { - "$ref": "#/components/examples/team-membership-response-if-user-has-an-active-membership-with-team" - }, - "response-if-user-is-a-team-maintainer": { - "$ref": "#/components/examples/team-membership-response-if-user-is-a-team-maintainer" - }, - "response-if-user-has-a-pending-membership-with-team": { - "$ref": "#/components/examples/team-membership-response-if-user-has-a-pending-membership-with-team" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "members" - }, - "deprecated": true, - "x-octokit": {} - }, - "put": { - "summary": "Add or update team membership for a user (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team membership for a user](https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user) endpoint.\n\nTeam synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nIf the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a team maintainer.\n\n**Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see \"[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/).\"\n\nIf the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the \"pending\" state until the user accepts the invitation, at which point the membership will transition to the \"active\" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner.\n\nIf the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer.", - "tags": ["teams"], - "operationId": "teams/add-or-update-membership-for-user-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/username" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "role": { - "type": "string", - "description": "The role that this user should have in the team. Can be one of: \n\\* `member` - a normal member of the team. \n\\* `maintainer` - a team maintainer. Able to add/remove other team members, promote other team members to team maintainer, and edit the team's name and description.", - "enum": ["member", "maintainer"], - "default": "member" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-membership" }, - "examples": { - "response-if-users-membership-with-team-is-now-active": { - "$ref": "#/components/examples/team-membership-response-if-users-membership-with-team-is-now-active" - }, - "response-if-users-membership-with-team-is-now-pending": { - "$ref": "#/components/examples/team-membership-response-if-users-membership-with-team-is-now-pending" - } - } - } - } - }, - "403": { - "description": "Response if team synchronization is set up" - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { - "description": "Response if you attempt to add an organization to a team", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "field": { "type": "string" }, - "resource": { "type": "string" } - } - } - }, - "documentation_url": { - "type": "string", - "example": "\"https://help.github.com/articles/github-and-trade-controls\"" - } - } - }, - "examples": { - "response-if-you-attempt-to-add-an-organization-to-a-team": { - "value": { - "message": "Cannot add an organization as a member.", - "errors": [ - { - "code": "org", - "field": "user", - "resource": "TeamMember" - } - ] - } - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "members" - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Remove team membership for a user (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove team membership for a user](https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user) endpoint.\n\nTeam synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nTo remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team.\n\n**Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see \"[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/).\"", - "tags": ["teams"], - "operationId": "teams/remove-membership-for-user-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/username" } - ], - "responses": { - "204": { "description": "Empty response" }, - "403": { "description": "Response if team synchronization is set up" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "members" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/projects": { - "get": { - "summary": "List team projects (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team projects`](https://docs.github.com/rest/reference/teams#list-team-projects) endpoint.\n\nLists the organization projects for a team.", - "tags": ["teams"], - "operationId": "teams/list-projects-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#list-team-projects-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team-project" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/team-project-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/projects/{project_id}": { - "get": { - "summary": "Check team permissions for a project (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a project](https://docs.github.com/rest/reference/teams#check-team-permissions-for-a-project) endpoint.\n\nChecks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team.", - "tags": ["teams"], - "operationId": "teams/check-permissions-for-project-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#check-team-permissions-for-a-project-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/project-id" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/team-project" }, - "examples": { - "default": { "$ref": "#/components/examples/team-project" } - } - } - } - }, - "404": { - "description": "Response if project is not managed by this team" - }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "put": { - "summary": "Add or update team project permissions (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team project permissions](https://docs.github.com/rest/reference/teams#add-or-update-team-project-permissions) endpoint.\n\nAdds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization.", - "tags": ["teams"], - "operationId": "teams/add-or-update-project-permissions-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#add-or-update-team-project-permissions-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/project-id" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "permission": { - "type": "string", - "description": "The permission to grant to the team for this project. Can be one of: \n\\* `read` - team members can read, but not write to or administer this project. \n\\* `write` - team members can read and write, but not administer this project. \n\\* `admin` - team members can read, write and administer this project. \nDefault: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"", - "enum": ["read", "write", "admin"] - } - } - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "403": { - "description": "Response if the project is not owned by the organization", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - }, - "examples": { - "response-if-the-project-is-not-owned-by-the-organization": { - "value": { - "message": "Must have admin rights to Repository.", - "documentation_url": "https://docs.github.com/rest/reference/teams#add-or-update-team-project-permissions" - } - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Remove a project from a team (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a project from a team](https://docs.github.com/rest/reference/teams#remove-a-project-from-a-team) endpoint.\n\nRemoves an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. **Note:** This endpoint removes the project from the team, but does not delete it.", - "tags": ["teams"], - "operationId": "teams/remove-project-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#remove-a-project-from-a-team-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/project-id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/repos": { - "get": { - "summary": "List team repositories (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List team repositories](https://docs.github.com/rest/reference/teams#list-team-repositories) endpoint.", - "tags": ["teams"], - "operationId": "teams/list-repos-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#list-team-repositories-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/minimal-repository-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/repos/{owner}/{repo}": { - "get": { - "summary": "Check team permissions for a repository (Legacy)", - "description": "**Note**: Repositories inherited through a parent team will also be checked.\n\n**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a repository](https://docs.github.com/rest/reference/teams#check-team-permissions-for-a-repository) endpoint.\n\nYou can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header:", - "tags": ["teams"], - "operationId": "teams/check-permissions-for-repo-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#check-team-permissions-for-a-repository-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "200": { - "description": "Alternative response with extra repository information", - "content": { - "application/vnd.github.v3.repository+json": { - "schema": { "$ref": "#/components/schemas/team-repository" }, - "examples": { - "alternative-response-with-extra-repository-information": { - "$ref": "#/components/examples/team-repository-alternative-response-with-extra-repository-information" - } - } - } - } - }, - "204": { - "description": "Response if repository is managed by this team" - }, - "404": { - "description": "Response if repository is not managed by this team" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "put": { - "summary": "Add or update team repository permissions (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team repository permissions](https://docs.github.comt/rest/reference/teams#add-or-update-team-project-permissions) endpoint.\n\nTo add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization.\n\nNote that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"", - "tags": ["teams"], - "operationId": "teams/add-or-update-repo-permissions-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#add-or-update-team-repository-permissions-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "permission": { - "type": "string", - "description": "The permission to grant the team on this repository. Can be one of: \n\\* `pull` - team members can pull, but not push to or administer this repository. \n\\* `push` - team members can pull and push, but not administer this repository. \n\\* `admin` - team members can pull, push and administer this repository. \n \nIf no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository.", - "enum": ["pull", "push", "admin"] - } - } - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - }, - "delete": { - "summary": "Remove a repository from a team (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a repository from a team](https://docs.github.com/rest/reference/teams#remove-a-repository-from-a-team) endpoint.\n\nIf the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. NOTE: This does not delete the repository, it just removes it from the team.", - "tags": ["teams"], - "operationId": "teams/remove-repo-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#remove-a-repository-from-a-team-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/team-sync/group-mappings": { - "get": { - "summary": "List IdP groups for a team (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List IdP groups for a team`](https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team) endpoint.\n\nTeam synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nList IdP groups connected to a team on GitHub.", - "tags": ["teams"], - "operationId": "teams/list-idp-groups-for-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team-legacy" - }, - "parameters": [{ "$ref": "#/components/parameters/team-id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/group-mapping" }, - "examples": { - "default": { "$ref": "#/components/examples/group-mapping-3" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "team-sync" - }, - "deprecated": true, - "x-octokit": {} - }, - "patch": { - "summary": "Create or update IdP group connections (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create or update IdP group connections`](https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections) endpoint.\n\nTeam synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.\n\nCreates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty `groups` array will remove all connections for a team.", - "tags": ["teams"], - "operationId": "teams/create-or-update-idp-group-connections-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections-legacy" - }, - "parameters": [{ "$ref": "#/components/parameters/team-id" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "groups": { - "type": "array", - "description": "The IdP groups you want to connect to a GitHub team. When updating, the new `groups` object will replace the original one. You must include any existing groups that you don't want to remove.", - "items": { - "type": "object", - "properties": { - "group_id": { - "type": "string", - "description": "ID of the IdP group." - }, - "group_name": { - "type": "string", - "description": "Name of the IdP group." - }, - "group_description": { - "type": "string", - "description": "Description of the IdP group." - }, - "id": { - "type": "string", - "example": "\"caceab43fc9ffa20081c\"" - }, - "name": { - "type": "string", - "example": "\"external-team-6c13e7288ef7\"" - }, - "description": { - "type": "string", - "example": "\"moar cheese pleese\"" - } - }, - "required": [ - "group_id", - "group_name", - "group_description" - ] - } - }, - "synced_at": { - "type": "string", - "example": "\"I am not a timestamp\"" - } - }, - "required": ["groups"] - }, - "example": { - "groups": [ - { - "group_id": "123", - "group_name": "Octocat admins", - "description": "The people who configure your octoworld.", - "group_description": "string" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/group-mapping" }, - "examples": { - "default": { "$ref": "#/components/examples/group-mapping-2" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": true, - "enabledForGitHubApps": false, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": "team-sync" - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/teams/{team_id}/teams": { - "get": { - "summary": "List child teams (Legacy)", - "description": "**Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List child teams`](https://docs.github.com/rest/reference/teams#list-child-teams) endpoint.", - "tags": ["teams"], - "operationId": "teams/list-child-legacy", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#list-child-teams-legacy" - }, - "parameters": [ - { "$ref": "#/components/parameters/team-id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "Response if child teams exist", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "examples": { - "response-if-child-teams-exist": { - "$ref": "#/components/examples/team-items-response-if-child-teams-exist" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "removalDate": "2021-02-01", - "deprecationDate": "2020-01-21", - "category": "teams", - "subcategory": null - }, - "deprecated": true, - "x-octokit": {} - } - }, - "/user": { - "get": { - "summary": "Get the authenticated user", - "description": "If the authenticated user is authenticated through basic authentication or OAuth with the `user` scope, then the response lists public and private profile information.\n\nIf the authenticated user is authenticated through OAuth without the `user` scope, then the response lists only public profile information.", - "tags": ["users"], - "operationId": "users/get-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/users/#get-the-authenticated-user" - }, - "parameters": [], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { "$ref": "#/components/schemas/private-user" }, - { "$ref": "#/components/schemas/public-user" } - ] - }, - "examples": { - "response-with-public-and-private-profile-information": { - "$ref": "#/components/examples/private-user-response-with-public-and-private-profile-information" - }, - "response-with-public-profile-information": { - "$ref": "#/components/examples/private-user-response-with-public-profile-information" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": null - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update the authenticated user", - "description": "**Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API.", - "tags": ["users"], - "operationId": "users/update-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/users/#update-the-authenticated-user" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "The new name of the user.", - "type": "string", - "example": "Omar Jahandar" - }, - "email": { - "description": "The publicly visible email address of the user.", - "type": "string", - "example": "omar@example.com" - }, - "blog": { - "description": "The new blog URL of the user.", - "type": "string", - "example": "blog.example.com" - }, - "twitter_username": { - "description": "The new Twitter username of the user.", - "type": "string", - "example": "therealomarj", - "nullable": true - }, - "company": { - "description": "The new company of the user.", - "type": "string", - "example": "Acme corporation" - }, - "location": { - "description": "The new location of the user.", - "type": "string", - "example": "Berlin, Germany" - }, - "hireable": { - "description": "The new hiring availability of the user.", - "type": "boolean" - }, - "bio": { - "description": "The new short biography of the user.", - "type": "string" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/private-user" }, - "examples": { - "default": { "$ref": "#/components/examples/private-user" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/user/blocks": { - "get": { - "summary": "List users blocked by the authenticated user", - "description": "List the users you've blocked on your personal account.", - "tags": ["users"], - "operationId": "users/list-blocked-by-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-users-blocked-by-the-authenticated-user" - }, - "parameters": [], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "blocking" - }, - "x-octokit": {} - } - }, - "/user/blocks/{username}": { - "get": { - "summary": "Check if a user is blocked by the authenticated user", - "description": "If the user is blocked:\n\nIf the user is not blocked:", - "tags": ["users"], - "operationId": "users/check-blocked", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#check-if-a-user-is-blocked-by-the-authenticated-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "204": { "description": "If the user is blocked:" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { - "description": "If the user is not blocked:", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "blocking" - }, - "x-octokit": {} - }, - "put": { - "summary": "Block a user", - "description": "", - "tags": ["users"], - "operationId": "users/block", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#block-a-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "blocking" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Unblock a user", - "description": "", - "tags": ["users"], - "operationId": "users/unblock", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#unblock-a-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "blocking" - }, - "x-octokit": {} - } - }, - "/user/email/visibility": { - "patch": { - "summary": "Set primary email visibility for the authenticated user", - "description": "Sets the visibility for your primary email addresses.", - "tags": ["users"], - "operationId": "users/set-primary-email-visibility-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "email": { - "description": "An email address associated with the GitHub user account to manage.", - "type": "string", - "example": "org@example.com" - }, - "visibility": { - "description": "Denotes whether an email is publically visible.", - "type": "string", - "enum": ["public", "private"] - } - }, - "required": ["email", "visibility"], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/email" } - }, - "examples": { - "default": { "$ref": "#/components/examples/email-items-3" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "emails" - }, - "x-octokit": {} - } - }, - "/user/emails": { - "get": { - "summary": "List email addresses for the authenticated user", - "description": "Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope.", - "tags": ["users"], - "operationId": "users/list-emails-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-email-addresses-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/email" } - }, - "examples": { - "default": { "$ref": "#/components/examples/email-items-2" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "emails" - }, - "x-octokit": {} - }, - "post": { - "summary": "Add an email address for the authenticated user", - "description": "This endpoint is accessible with the `user` scope.", - "tags": ["users"], - "operationId": "users/add-email-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#add-an-email-address-for-the-authenticated-user" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "type": "object", - "properties": { - "emails": { - "description": "Adds one or more email addresses to your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.", - "type": "array", - "items": { - "type": "string", - "example": "username@example.com", - "minItems": 1 - }, - "example": [] - } - }, - "required": ["emails"], - "example": { - "emails": ["octocat@github.com", "mona@github.com"] - } - }, - { - "type": "array", - "items": { - "type": "string", - "example": "username@example.com", - "minItems": 1 - } - }, - { "type": "string" } - ] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/email" } - }, - "examples": { - "default": { "$ref": "#/components/examples/email-items" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "emails" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete an email address for the authenticated user", - "description": "This endpoint is accessible with the `user` scope.", - "tags": ["users"], - "operationId": "users/delete-email-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#delete-an-email-address-for-the-authenticated-user" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "type": "object", - "description": "Deletes one or more email addresses from your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.", - "properties": { - "emails": { - "description": "Email addresses associated with the GitHub user account.", - "type": "array", - "items": { - "type": "string", - "example": "username@example.com", - "minItems": 1 - }, - "example": { - "emails": ["octocat@github.com", "mona@github.com"] - } - } - }, - "required": ["emails"] - }, - { - "type": "array", - "items": { - "type": "string", - "example": "username@example.com", - "minItems": 1 - } - }, - { "type": "string" } - ] - } - } - } - }, - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "emails" - }, - "x-octokit": {} - } - }, - "/user/followers": { - "get": { - "summary": "List followers of the authenticated user", - "description": "Lists the people following the authenticated user.", - "tags": ["users"], - "operationId": "users/list-followers-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-followers-of-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "followers" - }, - "x-octokit": {} - } - }, - "/user/following": { - "get": { - "summary": "List the people the authenticated user follows", - "description": "Lists the people who the authenticated user follows.", - "tags": ["users"], - "operationId": "users/list-followed-by-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-the-people-the-authenticated-user-follows" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "followers" - }, - "x-octokit": {} - } - }, - "/user/following/{username}": { - "get": { - "summary": "Check if a person is followed by the authenticated user", - "description": "", - "tags": ["users"], - "operationId": "users/check-person-is-followed-by-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#check-if-a-person-is-followed-by-the-authenticated-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "204": { - "description": "Response if the person is followed by the authenticated user" - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { - "description": "Response if the person is not followed by the authenticated user", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "followers" - }, - "x-octokit": {} - }, - "put": { - "summary": "Follow a user", - "description": "Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"\n\nFollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.", - "tags": ["users"], - "operationId": "users/follow", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#follow-a-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "followers" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Unfollow a user", - "description": "Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.", - "tags": ["users"], - "operationId": "users/unfollow", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#unfollow-a-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "followers" - }, - "x-octokit": {} - } - }, - "/user/gpg_keys": { - "get": { - "summary": "List GPG keys for the authenticated user", - "description": "Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["users"], - "operationId": "users/list-gpg-keys-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-gpg-keys-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/gpg-key" } - }, - "examples": { - "default": { "$ref": "#/components/examples/gpg-key-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "gpg-keys" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a GPG key for the authenticated user", - "description": "Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "operationId": "users/create-gpg-key-for-authenticated", - "tags": ["users"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#create-a-gpg-key-for-the-authenticated-user" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "armored_public_key": { - "description": "A GPG key in ASCII-armored format.", - "type": "string" - } - }, - "type": "object", - "required": ["armored_public_key"] - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gpg-key" }, - "examples": { - "default": { "$ref": "#/components/examples/gpg-key" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "gpg-keys" - }, - "x-octokit": {} - } - }, - "/user/gpg_keys/{gpg_key_id}": { - "get": { - "summary": "Get a GPG key for the authenticated user", - "description": "View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["users"], - "operationId": "users/get-gpg-key-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#get-a-gpg-key-for-the-authenticated-user" - }, - "parameters": [{ "$ref": "#/components/parameters/gpg_key_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/gpg-key" }, - "examples": { - "default": { "$ref": "#/components/examples/gpg-key" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "gpg-keys" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a GPG key for the authenticated user", - "description": "Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["users"], - "operationId": "users/delete-gpg-key-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#delete-a-gpg-key-for-the-authenticated-user" - }, - "parameters": [{ "$ref": "#/components/parameters/gpg_key_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "gpg-keys" - }, - "x-octokit": {} - } - }, - "/user/installations": { - "get": { - "summary": "List app installations accessible to the user access token", - "description": "Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.\n\nYou must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint.\n\nThe authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.\n\nYou can find the permissions for the installation under the `permissions` key.", - "tags": ["apps"], - "operationId": "apps/list-installations-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#list-app-installations-accessible-to-the-user-access-token" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "You can find the permissions for the installation under the `permissions` key.", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "installations": { - "type": "array", - "items": { "$ref": "#/components/schemas/installation" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/base-installation-for-auth-user-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "415": { "$ref": "#/components/responses/preview_header_missing" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "installations" - }, - "x-octokit": {} - } - }, - "/user/installations/{installation_id}/repositories": { - "get": { - "summary": "List repositories accessible to the user access token", - "description": "List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation.\n\nThe authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.\n\nYou must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint.\n\nThe access the user has to each repository is included in the hash under the `permissions` key.", - "tags": ["apps"], - "operationId": "apps/list-installation-repos-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-user-access-token" - }, - "parameters": [ - { "$ref": "#/components/parameters/installation_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "The access the user has to each repository is included in the hash under the `permissions` key.", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total_count": { "type": "integer" }, - "repository_selection": { "type": "string" }, - "repositories": { - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - } - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-paginated" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": false, - "name": "mercy", - "note": "The `topics` property for repositories on GitHub is currently available for developers to preview. To view the `topics` property in calls that return repository results, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.mercy-preview+json\n```" - } - ], - "category": "apps", - "subcategory": "installations" - }, - "x-octokit": {} - } - }, - "/user/installations/{installation_id}/repositories/{repository_id}": { - "put": { - "summary": "Add a repository to an app installation", - "description": "Add a single repository to an installation. The authenticated user must have admin access to the repository.\n\nYou must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/add-repo-to-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#add-a-repository-to-an-app-installation" - }, - "parameters": [ - { "$ref": "#/components/parameters/installation_id" }, - { "$ref": "#/components/parameters/repository_id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "installations" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove a repository from an app installation", - "description": "Remove a single repository from an installation. The authenticated user must have admin access to the repository.\n\nYou must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/remove-repo-from-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#remove-a-repository-from-an-app-installation" - }, - "parameters": [ - { "$ref": "#/components/parameters/installation_id" }, - { "$ref": "#/components/parameters/repository_id" } - ], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "installations" - }, - "x-octokit": {} - } - }, - "/user/interaction-limits": { - "get": { - "summary": "Get interaction restrictions for your public repositories", - "description": "Shows which type of GitHub user can interact with your public repositories and when the restriction expires. If there are no restrictions, you will see an empty response.", - "tags": ["interactions"], - "operationId": "interactions/get-restrictions-for-your-public-repos", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-your-public-repositories" - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/interaction-limit-response" - }, - "examples": { - "default": { - "$ref": "#/components/examples/interaction-limit-user" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "interactions", - "subcategory": "user" - }, - "x-octokit": {} - }, - "put": { - "summary": "Set interaction restrictions for your public repositories", - "description": "Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user.", - "tags": ["interactions"], - "operationId": "interactions/set-restrictions-for-your-public-repos", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-your-public-repositories" - }, - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/interaction-limit" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/interaction-limit-response" - }, - "examples": { - "default": { - "$ref": "#/components/examples/interaction-limit-user" - } - } - } - } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "interactions", - "subcategory": "user" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Remove interaction restrictions from your public repositories", - "description": "Removes any interaction restrictions from your public repositories.", - "tags": ["interactions"], - "operationId": "interactions/remove-restrictions-for-your-public-repos", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-from-your-public-repositories" - }, - "responses": { "204": { "description": "Empty response" } }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "interactions", - "subcategory": "user" - }, - "x-octokit": {} - } - }, - "/user/issues": { - "get": { - "summary": "List user account issues assigned to the authenticated user", - "description": "List issues across owned and member repositories assigned to the authenticated user.\n\n**Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this\nreason, \"Issues\" endpoints may return both issues and pull requests in the response. You can identify pull requests by\nthe `pull_request` key. Be aware that the `id` of a pull request returned from \"Issues\" endpoints will be an _issue id_. To find out the pull\nrequest id, use the \"[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)\" endpoint.", - "tags": ["issues"], - "operationId": "issues/list-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/issues/#list-user-account-issues-assigned-to-the-authenticated-user" - }, - "parameters": [ - { - "name": "filter", - "description": "Indicates which sorts of issues to return. Can be one of: \n\\* `assigned`: Issues assigned to you \n\\* `created`: Issues created by you \n\\* `mentioned`: Issues mentioning you \n\\* `subscribed`: Issues you're subscribed to updates for \n\\* `all`: All issues the authenticated user can see, regardless of participation or creation", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["assigned", "created", "mentioned", "subscribed", "all"], - "default": "assigned" - } - }, - { - "name": "state", - "description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["open", "closed", "all"], - "default": "open" - } - }, - { "$ref": "#/components/parameters/labels" }, - { - "name": "sort", - "description": "What to sort results by. Can be either `created`, `updated`, `comments`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["created", "updated", "comments"], - "default": "created" - } - }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/issue" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/issue-with-repo-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": false, - "name": "squirrel-girl", - "note": "An additional `reactions` object in the issue comment payload is currently available for developers to preview. During the preview period, the APIs may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-05-12-reactions-api-preview) for full details.\n\nTo access the API you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.squirrel-girl-preview\n```\nThe `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions." - } - ], - "category": "issues", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/user/keys": { - "get": { - "summary": "List public SSH keys for the authenticated user", - "description": "Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["users"], - "operationId": "users/list-public-ssh-keys-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-public-ssh-keys-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/key" } - }, - "examples": { - "default": { "$ref": "#/components/examples/key-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "keys" - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a public SSH key for the authenticated user", - "description": "Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "operationId": "users/create-public-ssh-key-for-authenticated", - "tags": ["users"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#create-a-public-ssh-key-for-the-authenticated-user" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "title": { - "description": "A descriptive name for the new key.", - "type": "string", - "example": "Personal MacBook Air" - }, - "key": { - "description": "The public SSH key to add to your GitHub account.", - "type": "string", - "pattern": "^ssh-(rsa|dss|ed25519) |^ecdsa-sha2-nistp(256|384|521) " - } - }, - "required": ["key"], - "type": "object" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/key" }, - "examples": { - "default": { "$ref": "#/components/examples/key" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "keys" - }, - "x-octokit": {} - } - }, - "/user/keys/{key_id}": { - "get": { - "summary": "Get a public SSH key for the authenticated user", - "description": "View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["users"], - "operationId": "users/get-public-ssh-key-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#get-a-public-ssh-key-for-the-authenticated-user" - }, - "parameters": [{ "$ref": "#/components/parameters/key_id" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/key" }, - "examples": { - "default": { "$ref": "#/components/examples/key" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "keys" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a public SSH key for the authenticated user", - "description": "Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).", - "tags": ["users"], - "operationId": "users/delete-public-ssh-key-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#delete-a-public-ssh-key-for-the-authenticated-user" - }, - "parameters": [{ "$ref": "#/components/parameters/key_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "keys" - }, - "x-octokit": {} - } - }, - "/user/marketplace_purchases": { - "get": { - "summary": "List subscriptions for the authenticated user", - "description": "Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/).", - "tags": ["apps"], - "operationId": "apps/list-subscriptions-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/user-marketplace-purchase" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/user-marketplace-purchase-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "marketplace" - }, - "x-octokit": {} - } - }, - "/user/marketplace_purchases/stubbed": { - "get": { - "summary": "List subscriptions for the authenticated user (stubbed)", - "description": "Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/).", - "tags": ["apps"], - "operationId": "apps/list-subscriptions-for-authenticated-user-stubbed", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user-stubbed" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/user-marketplace-purchase" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/user-marketplace-purchase-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": "marketplace" - }, - "x-octokit": {} - } - }, - "/user/memberships/orgs": { - "get": { - "summary": "List organization memberships for the authenticated user", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/list-memberships-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#list-organization-memberships-for-the-authenticated-user" - }, - "parameters": [ - { - "name": "state", - "description": "Indicates the state of the memberships to return. Can be either `active` or `pending`. If not specified, the API returns both active and pending memberships.", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["active", "pending"] } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/org-membership" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/org-membership-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/user/memberships/orgs/{org}": { - "get": { - "summary": "Get an organization membership for the authenticated user", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/get-membership-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#get-an-organization-membership-for-the-authenticated-user" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/org-membership" }, - "examples": { - "default": { "$ref": "#/components/examples/org-membership" } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - }, - "patch": { - "summary": "Update an organization membership for the authenticated user", - "description": "", - "tags": ["orgs"], - "operationId": "orgs/update-membership-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/orgs#update-an-organization-membership-for-the-authenticated-user" - }, - "parameters": [{ "$ref": "#/components/parameters/org" }], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "state": { - "type": "string", - "description": "The state that the membership should be in. Only `\"active\"` will be accepted.", - "enum": ["active"] - } - }, - "required": ["state"] - }, - "example": { "state": "active" } - } - } - }, - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/org-membership" }, - "examples": { - "default": { - "$ref": "#/components/examples/org-membership-2" - } - } - } - } - }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "orgs", - "subcategory": "members" - }, - "x-octokit": {} - } - }, - "/user/migrations": { - "get": { - "summary": "List user migrations", - "description": "Lists all migrations a user has started.", - "tags": ["migrations"], - "operationId": "migrations/list-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#list-user-migrations" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/migration" } - }, - "examples": { - "default": { "$ref": "#/components/examples/migration-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "users" - }, - "x-octokit": {} - }, - "post": { - "summary": "Start a user migration", - "description": "Initiates the generation of a user migration archive.", - "tags": ["migrations"], - "operationId": "migrations/start-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#start-a-user-migration" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "lock_repositories": { - "description": "Lock the repositories being migrated at the start of the migration", - "example": true, - "readOnly": false, - "type": "boolean" - }, - "exclude_attachments": { - "description": "Do not include attachments in the migration", - "example": true, - "readOnly": false, - "type": "boolean" - }, - "exclude": { - "description": "Exclude attributes from the API response to improve performance", - "example": ["repositories"], - "readOnly": false, - "type": "array", - "items": { - "description": "Allowed values that can be passed to the exclude param.", - "enum": ["repositories"], - "example": "repositories", - "type": "string" - } - }, - "repositories": { - "type": "array", - "items": { - "description": "Repository path, owner and name", - "example": "acme/widgets", - "type": "string" - } - } - }, - "required": ["repositories"], - "type": "object" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/migration" }, - "examples": { - "default": { "$ref": "#/components/examples/migration-2" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "migrations", - "subcategory": "users" - }, - "x-octokit": {} - } - }, - "/user/migrations/{migration_id}": { - "get": { - "summary": "Get a user migration status", - "description": "Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values:\n\n* `pending` - the migration hasn't started yet.\n* `exporting` - the migration is in progress.\n* `exported` - the migration finished successfully.\n* `failed` - the migration failed.\n\nOnce the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive).", - "tags": ["migrations"], - "operationId": "migrations/get-status-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#get-a-user-migration-status" - }, - "parameters": [ - { "$ref": "#/components/parameters/migration_id" }, - { - "name": "exclude", - "in": "query", - "required": false, - "schema": { "type": "array", "items": { "type": "string" } } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/migration" }, - "examples": { - "default": { "$ref": "#/components/examples/migration" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "users" - }, - "x-octokit": {} - } - }, - "/user/migrations/{migration_id}/archive": { - "get": { - "summary": "Download a user migration archive", - "description": "Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects:\n\n* attachments\n* bases\n* commit\\_comments\n* issue\\_comments\n* issue\\_events\n* issues\n* milestones\n* organizations\n* projects\n* protected\\_branches\n* pull\\_request\\_reviews\n* pull\\_requests\n* releases\n* repositories\n* review\\_comments\n* schema\n* users\n\nThe archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data.", - "tags": ["migrations"], - "operationId": "migrations/get-archive-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive" - }, - "parameters": [{ "$ref": "#/components/parameters/migration_id" }], - "responses": { - "302": { "description": "response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "users" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Delete a user migration archive", - "description": "Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/reference/migrations#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/reference/migrations#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted.", - "tags": ["migrations"], - "operationId": "migrations/delete-archive-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#delete-a-user-migration-archive" - }, - "parameters": [{ "$ref": "#/components/parameters/migration_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "users" - }, - "x-octokit": {} - } - }, - "/user/migrations/{migration_id}/repos/{repo_name}/lock": { - "delete": { - "summary": "Unlock a user repository", - "description": "Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/reference/migrations#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/reference/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked.", - "tags": ["migrations"], - "operationId": "migrations/unlock-repo-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#unlock-a-user-repository" - }, - "parameters": [ - { "$ref": "#/components/parameters/migration_id" }, - { "$ref": "#/components/parameters/repo_name" } - ], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "users" - }, - "x-octokit": {} - } - }, - "/user/migrations/{migration_id}/repositories": { - "get": { - "summary": "List repositories for a user migration", - "description": "Lists all the repositories for this user migration.", - "tags": ["migrations"], - "operationId": "migrations/list-repos-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/migrations#list-repositories-for-a-user-migration" - }, - "parameters": [ - { "$ref": "#/components/parameters/migration_id" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/minimal-repository-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "wyandotte", - "note": "To access the Migrations API, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.wyandotte-preview+json\n```" - } - ], - "category": "migrations", - "subcategory": "users" - }, - "x-octokit": {} - } - }, - "/user/orgs": { - "get": { - "summary": "List organizations for the authenticated user", - "description": "List organizations for the authenticated user.\n\n**OAuth scope requirements**\n\nThis only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response.", - "tags": ["orgs"], - "operationId": "orgs/list-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs/#list-organizations-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/organization-simple" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-simple-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "orgs", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/user/projects": { - "post": { - "summary": "Create a user project", - "description": "", - "tags": ["projects"], - "operationId": "projects/create-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/projects/#create-a-user-project" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "Name of the project", - "example": "Week One Sprint", - "type": "string" - }, - "body": { - "description": "Body of the project", - "example": "This project represents the sprint of the first week in January", - "type": "string", - "nullable": true - } - }, - "required": ["name"], - "type": "object" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/project" }, - "examples": { - "default": { "$ref": "#/components/examples/project" } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed_simple" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/user/public_emails": { - "get": { - "summary": "List public email addresses for the authenticated user", - "description": "Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope.", - "tags": ["users"], - "operationId": "users/list-public-emails-for-authenticated", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-public-email-addresses-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/email" } - }, - "examples": { - "default": { "$ref": "#/components/examples/email-items-2" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": "emails" - }, - "x-octokit": {} - } - }, - "/user/repos": { - "get": { - "summary": "List repositories for the authenticated user", - "description": "Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.\n\nThe authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.", - "tags": ["repos"], - "operationId": "repos/list-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#list-repositories-for-the-authenticated-user" - }, - "parameters": [ - { - "name": "visibility", - "description": "Can be one of `all`, `public`, or `private`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["all", "public", "private"], - "default": "all" - } - }, - { - "name": "affiliation", - "description": "Comma-separated list of values. Can include: \n\\* `owner`: Repositories that are owned by the authenticated user. \n\\* `collaborator`: Repositories that the user has been added to as a collaborator. \n\\* `organization_member`: Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "default": "owner,collaborator,organization_member" - } - }, - { - "name": "type", - "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["all", "owner", "public", "private", "member"], - "default": "all" - } - }, - { - "name": "sort", - "description": "Can be one of `created`, `updated`, `pushed`, `full_name`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["created", "updated", "pushed", "full_name"], - "default": "full_name" - } - }, - { - "name": "direction", - "description": "Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["asc", "desc"] } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/before" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-items-default-response" - } - } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "418": { "description": "Response definition missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - }, - "post": { - "summary": "Create a repository for the authenticated user", - "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", - "tags": ["repos"], - "operationId": "repos/create-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#create-a-repository-for-the-authenticated-user" - }, - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "The name of the repository.", - "type": "string", - "example": "Team Environment" - }, - "description": { - "description": "A short description of the repository.", - "type": "string" - }, - "homepage": { - "description": "A URL with more information about the repository.", - "type": "string" - }, - "private": { - "description": "Whether the repository is private or public.", - "default": false, - "type": "boolean" - }, - "has_issues": { - "description": "Whether issues are enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "has_projects": { - "description": "Whether projects are enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "has_wiki": { - "description": "Whether the wiki is enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "team_id": { - "description": "The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.", - "type": "integer" - }, - "auto_init": { - "description": "Whether the repository is initialized with a minimal README.", - "default": false, - "type": "boolean" - }, - "gitignore_template": { - "description": "The desired language or platform to apply to the .gitignore.", - "example": "Haskell", - "type": "string" - }, - "license_template": { - "description": "The license keyword of the open source license for this repository.", - "example": "mit", - "type": "string" - }, - "allow_squash_merge": { - "description": "Whether to allow squash merges for pull requests.", - "default": true, - "type": "boolean", - "example": true - }, - "allow_merge_commit": { - "description": "Whether to allow merge commits for pull requests.", - "default": true, - "type": "boolean", - "example": true - }, - "allow_rebase_merge": { - "description": "Whether to allow rebase merges for pull requests.", - "default": true, - "type": "boolean", - "example": true - }, - "delete_branch_on_merge": { - "description": "Whether to delete head branches when pull requests are merged", - "default": false, - "type": "boolean", - "example": false - }, - "has_downloads": { - "description": "Whether downloads are enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "is_template": { - "description": "Whether this repository acts as a template that can be used to generate new repositories.", - "default": false, - "type": "boolean", - "example": true - } - }, - "required": ["name"], - "type": "object" - } - } - } - }, - "responses": { - "201": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/repository" }, - "examples": { - "default": { "$ref": "#/components/examples/repository" } - } - } - }, - "headers": { - "Location": { - "example": "https://api.github.com/repos/octocat/Hello-World", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "400": { "$ref": "#/components/responses/bad_request" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": false, - "name": "nebula", - "note": "You can set the visibility of a repository using the new `visibility` parameter in the [Repositories API](https://docs.github.com/rest/reference/repos/), and get a repository's visibility with a new response key. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes/).\n\nTo access repository visibility during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.nebula-preview+json\n```" - }, - { - "required": false, - "name": "baptiste", - "note": "The `is_template` and `template_repository` keys are currently available for developer to preview. See [Create a repository using a template](https://docs.github.com/repos#create-a-repository-using-a-template) to learn how to create template repositories. To access these new response keys during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.baptiste-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/user/repository_invitations": { - "get": { - "summary": "List repository invitations for the authenticated user", - "description": "When authenticating as a user, this endpoint will list all currently open repository invitations for that user.", - "tags": ["repos"], - "operationId": "repos/list-invitations-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#list-repository-invitations-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/repository-invitation" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/repository-invitation-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "repos", - "subcategory": "invitations" - }, - "x-octokit": {} - } - }, - "/user/repository_invitations/{invitation_id}": { - "patch": { - "summary": "Accept a repository invitation", - "description": "", - "tags": ["repos"], - "operationId": "repos/accept-invitation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#accept-a-repository-invitation" - }, - "parameters": [{ "$ref": "#/components/parameters/invitation_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "409": { "$ref": "#/components/responses/conflict" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "repos", - "subcategory": "invitations" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Decline a repository invitation", - "description": "", - "tags": ["repos"], - "operationId": "repos/decline-invitation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/repos#decline-a-repository-invitation" - }, - "parameters": [{ "$ref": "#/components/parameters/invitation_id" }], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" }, - "409": { "$ref": "#/components/responses/conflict" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "repos", - "subcategory": "invitations" - }, - "x-octokit": {} - } - }, - "/user/starred": { - "get": { - "summary": "List repositories starred by the authenticated user", - "description": "Lists repositories the authenticated user has starred.\n\nYou can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header:", - "tags": ["activity"], - "operationId": "activity/list-repos-starred-by-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-repositories-starred-by-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/sort" }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - }, - "examples": { - "default-response": { - "$ref": "#/components/examples/repository-items-default-response" - } - } - }, - "application/vnd.github.v3.star+json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/starred-repository" } - }, - "examples": { - "alternative-response-with-star-creation-timestamps": { - "$ref": "#/components/examples/starred-repository-items-alternative-response-with-star-creation-timestamps" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "starring" - }, - "x-octokit": {} - } - }, - "/user/starred/{owner}/{repo}": { - "get": { - "summary": "Check if a repository is starred by the authenticated user", - "description": "", - "tags": ["activity"], - "operationId": "activity/check-repo-is-starred-by-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#check-if-a-repository-is-starred-by-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "204": { - "description": "Response if this repository is starred by you" - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { - "description": "Response if this repository is not starred by you", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "starring" - }, - "x-octokit": {} - }, - "put": { - "summary": "Star a repository for the authenticated user", - "description": "Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs).\"", - "tags": ["activity"], - "operationId": "activity/star-repo-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#star-a-repository-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "starring" - }, - "x-octokit": {} - }, - "delete": { - "summary": "Unstar a repository for the authenticated user", - "description": "", - "tags": ["activity"], - "operationId": "activity/unstar-repo-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#unstar-a-repository-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/owner" }, - { "$ref": "#/components/parameters/repo" } - ], - "responses": { - "204": { "description": "Empty response" }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "starring" - }, - "x-octokit": {} - } - }, - "/user/subscriptions": { - "get": { - "summary": "List repositories watched by the authenticated user", - "description": "Lists repositories the authenticated user is watching.", - "tags": ["activity"], - "operationId": "activity/list-watched-repos-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-repositories-watched-by-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/minimal-repository-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "401": { "$ref": "#/components/responses/requires_authentication" }, - "403": { "$ref": "#/components/responses/forbidden" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "watching" - }, - "x-octokit": {} - } - }, - "/user/teams": { - "get": { - "summary": "List teams for the authenticated user", - "description": "List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://docs.github.com/apps/building-oauth-apps/).", - "tags": ["teams"], - "operationId": "teams/list-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/teams/#list-teams-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/team-full" } - }, - "examples": { - "default": { "$ref": "#/components/examples/team-full-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "304": { "$ref": "#/components/responses/not_modified" }, - "403": { "$ref": "#/components/responses/forbidden" }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "teams", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users": { - "get": { - "summary": "List users", - "description": "Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of users.", - "tags": ["users"], - "operationId": "users/list", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/users/#list-users" - }, - "parameters": [ - { "$ref": "#/components/parameters/since-user" }, - { "$ref": "#/components/parameters/per_page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { - "Link": { - "example": "; rel=\"next\"", - "schema": { "type": "string" } - } - } - }, - "304": { "$ref": "#/components/responses/not_modified" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "users", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}": { - "get": { - "summary": "Get a user", - "description": "Provides publicly available information about someone with a GitHub account.\n\nGitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See \"[Identifying and authorizing users for GitHub Apps](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)\" for details about authentication. For an example response, see 'Response with GitHub plan information' below\"\n\nThe `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/overview/resources-in-the-rest-api#authentication).\n\nThe Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see \"[Emails API](https://docs.github.com/rest/reference/users#emails)\".", - "tags": ["users"], - "operationId": "users/get-by-username", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/users/#get-a-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { "$ref": "#/components/schemas/private-user" }, - { "$ref": "#/components/schemas/public-user" } - ] - }, - "examples": { - "default-response": { - "$ref": "#/components/examples/public-user-default-response" - }, - "response-with-git-hub-plan-information": { - "$ref": "#/components/examples/public-user-response-with-git-hub-plan-information" - } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "users", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/events": { - "get": { - "summary": "List events for the authenticated user", - "description": "If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events.", - "tags": ["activity"], - "operationId": "activity/list-events-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-events-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/event" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/users/{username}/events/orgs/{org}": { - "get": { - "summary": "List organization events for the authenticated user", - "description": "This is the user's organization dashboard. You must be authenticated as the user to view this.", - "tags": ["activity"], - "operationId": "activity/list-org-events-for-authenticated-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-organization-events-for-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/org" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/event" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "activity", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/users/{username}/events/public": { - "get": { - "summary": "List public events for a user", - "description": "", - "tags": ["activity"], - "operationId": "activity/list-public-events-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-public-events-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/event" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/users/{username}/followers": { - "get": { - "summary": "List followers of a user", - "description": "Lists the people following the specified user.", - "tags": ["users"], - "operationId": "users/list-followers-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-followers-of-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "users", - "subcategory": "followers" - }, - "x-octokit": {} - } - }, - "/users/{username}/following": { - "get": { - "summary": "List the people a user follows", - "description": "Lists the people who the specified user follows.", - "tags": ["users"], - "operationId": "users/list-following-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-the-people-a-user-follows" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/simple-user-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "users", - "subcategory": "followers" - }, - "x-octokit": {} - } - }, - "/users/{username}/following/{target_user}": { - "get": { - "summary": "Check if a user follows another user", - "description": "", - "tags": ["users"], - "operationId": "users/check-following-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#check-if-a-user-follows-another-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { - "name": "target_user", - "in": "path", - "required": true, - "schema": { "type": "string" } - } - ], - "responses": { - "204": { - "description": "Response if the user follows the target user" - }, - "404": { - "description": "Response if the user does not follow the target user" - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "users", - "subcategory": "followers" - }, - "x-octokit": {} - } - }, - "/users/{username}/gists": { - "get": { - "summary": "List gists for a user", - "description": "Lists public gists for the specified user:", - "tags": ["gists"], - "operationId": "gists/list-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/gists/#list-gists-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/since" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/base-gist" } - }, - "examples": { - "default": { "$ref": "#/components/examples/base-gist-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "gists", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/gpg_keys": { - "get": { - "summary": "List GPG keys for a user", - "description": "Lists the GPG keys for a user. This information is accessible by anyone.", - "tags": ["users"], - "operationId": "users/list-gpg-keys-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-gpg-keys-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/gpg-key" } - }, - "examples": { - "default": { "$ref": "#/components/examples/gpg-key-items" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "users", - "subcategory": "gpg-keys" - }, - "x-octokit": {} - } - }, - "/users/{username}/hovercard": { - "get": { - "summary": "Get contextual information for a user", - "description": "Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations.\n\nThe `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this:\n\n```shell\n curl -u username:token\n https://api.github.com/users/octocat/hovercard?subject_type=repository&subject_id=1300192\n```", - "tags": ["users"], - "operationId": "users/get-context-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/users/#get-contextual-information-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { - "name": "subject_type", - "description": "Identifies which additional information you'd like to receive about the person's hovercard. Can be `organization`, `repository`, `issue`, `pull_request`. **Required** when using `subject_id`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["organization", "repository", "issue", "pull_request"] - } - }, - { - "name": "subject_id", - "description": "Uses the ID for the `subject_type` you specified. **Required** when using `subject_type`.", - "in": "query", - "required": false, - "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/hovercard" }, - "examples": { - "default": { "$ref": "#/components/examples/hovercard" } - } - } - } - }, - "404": { "$ref": "#/components/responses/not_found" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "users", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/installation": { - "get": { - "summary": "Get a user installation for the authenticated app", - "description": "Enables an authenticated GitHub App to find the user’s installation information.\n\nYou must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.", - "tags": ["apps"], - "operationId": "apps/get-user-installation", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/apps/#get-a-user-installation-for-the-authenticated-app" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/installation" }, - "examples": { - "default": { "$ref": "#/components/examples/installation" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "apps", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/keys": { - "get": { - "summary": "List public keys for a user", - "description": "Lists the _verified_ public SSH keys for a user. This is accessible by anyone.", - "tags": ["users"], - "operationId": "users/list-public-keys-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/users#list-public-keys-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/key-simple" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/key-simple-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "users", - "subcategory": "keys" - }, - "x-octokit": {} - } - }, - "/users/{username}/orgs": { - "get": { - "summary": "List organizations for a user", - "description": "List [public organization memberships](https://help.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user.\n\nThis method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/reference/orgs#list-organizations-for-the-authenticated-user) API instead.", - "tags": ["orgs"], - "operationId": "orgs/list-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/orgs/#list-organizations-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/organization-simple" - } - }, - "examples": { - "default": { - "$ref": "#/components/examples/organization-simple-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "orgs", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/projects": { - "get": { - "summary": "List user projects", - "description": "", - "tags": ["projects"], - "operationId": "projects/list-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/projects/#list-user-projects" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { - "name": "state", - "description": "Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["open", "closed", "all"], - "default": "open" - } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/project" } - }, - "examples": { - "default": { "$ref": "#/components/examples/project-items-3" } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - }, - "415": { "$ref": "#/components/responses/preview_header_missing" }, - "422": { "$ref": "#/components/responses/validation_failed" } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [ - { - "required": true, - "name": "inertia", - "note": "The Projects API is currently available for developers to preview. During the preview period, the API may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2016-10-27-changes-to-projects-api) for full details. To access the API during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.inertia-preview+json\n```" - } - ], - "category": "projects", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/received_events": { - "get": { - "summary": "List events received by the authenticated user", - "description": "These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events.", - "tags": ["activity"], - "operationId": "activity/list-received-events-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-events-received-by-the-authenticated-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/event" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/users/{username}/received_events/public": { - "get": { - "summary": "List public events received by a user", - "description": "", - "tags": ["activity"], - "operationId": "activity/list-received-public-events-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-public-events-received-by-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/event" } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "events" - }, - "x-octokit": {} - } - }, - "/users/{username}/repos": { - "get": { - "summary": "List repositories for a user", - "description": "Lists public repositories for the specified user.", - "tags": ["repos"], - "operationId": "repos/list-for-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/repos/#list-repositories-for-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { - "name": "type", - "description": "Can be one of `all`, `owner`, `member`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["all", "owner", "member"], - "default": "owner" - } - }, - { - "name": "sort", - "description": "Can be one of `created`, `updated`, `pushed`, `full_name`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["created", "updated", "pushed", "full_name"], - "default": "full_name" - } - }, - { - "name": "direction", - "description": "Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`", - "in": "query", - "required": false, - "schema": { "type": "string", "enum": ["asc", "desc"] } - }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/minimal-repository-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [ - { - "required": false, - "name": "nebula", - "note": "You can set the visibility of a repository using the new `visibility` parameter in the [Repositories API](https://docs.github.com/rest/reference/repos/), and get a repository's visibility with a new response key. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes/).\n\nTo access repository visibility during the preview period, you must provide a custom [media type](https://docs.github.com/rest/overview/media-types) in the `Accept` header:\n```shell\napplication/vnd.github.nebula-preview+json\n```" - } - ], - "category": "repos", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/settings/billing/actions": { - "get": { - "summary": "Get GitHub Actions billing for a user", - "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `user` scope.", - "operationId": "billing/get-github-actions-billing-user", - "tags": ["billing"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/billing/#get-github-actions-billing-for-a-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/actions-billing-usage" - }, - "examples": { - "default": { - "$ref": "#/components/examples/actions-billing-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "billing", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/settings/billing/packages": { - "get": { - "summary": "Get GitHub Packages billing for a user", - "description": "Gets the free and paid storage used for GitHub Packages in gigabytes.\n\nPaid minutes only apply to packages stored for private repositories. For more information, see \"[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages).\"\n\nAccess tokens must have the `user` scope.", - "operationId": "billing/get-github-packages-billing-user", - "tags": ["billing"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/billing/#get-github-packages-billing-for-a-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/packages-billing-usage" - }, - "examples": { - "default": { - "$ref": "#/components/examples/packages-billing-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "billing", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/settings/billing/shared-storage": { - "get": { - "summary": "Get shared storage billing for a user", - "description": "Gets the estimated paid and estimated total storage used for GitHub Actions and Github Packages.\n\nPaid minutes only apply to packages stored for private repositories. For more information, see \"[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages).\"\n\nAccess tokens must have the `user` scope.", - "operationId": "billing/get-shared-storage-billing-user", - "tags": ["billing"], - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/v3/billing/#get-shared-storage-billing-for-a-user" - }, - "parameters": [{ "$ref": "#/components/parameters/username" }], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/combined-billing-usage" - }, - "examples": { - "default": { - "$ref": "#/components/examples/combined-billing-usage" - } - } - } - } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": false, - "previews": [], - "category": "billing", - "subcategory": null - }, - "x-octokit": {} - } - }, - "/users/{username}/starred": { - "get": { - "summary": "List repositories starred by a user", - "description": "Lists repositories a user has starred.\n\nYou can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header:", - "tags": ["activity"], - "operationId": "activity/list-repos-starred-by-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-repositories-starred-by-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/sort" }, - { "$ref": "#/components/parameters/direction" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - }, - "examples": { - "default-response": { - "$ref": "#/components/examples/repository-items-default-response" - } - } - }, - "application/vnd.github.v3.star+json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/starred-repository" } - }, - "examples": { - "alternative-response-with-star-creation-timestamps": { - "$ref": "#/components/examples/starred-repository-items-alternative-response-with-star-creation-timestamps" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "starring" - }, - "x-octokit": {} - } - }, - "/users/{username}/subscriptions": { - "get": { - "summary": "List repositories watched by a user", - "description": "Lists repositories a user is watching.", - "tags": ["activity"], - "operationId": "activity/list-repos-watched-by-user", - "externalDocs": { - "description": "API method documentation", - "url": "https://docs.github.com/rest/reference/activity#list-repositories-watched-by-a-user" - }, - "parameters": [ - { "$ref": "#/components/parameters/username" }, - { "$ref": "#/components/parameters/per_page" }, - { "$ref": "#/components/parameters/page" } - ], - "responses": { - "200": { - "description": "response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/minimal-repository" } - }, - "examples": { - "default": { - "$ref": "#/components/examples/minimal-repository-items" - } - } - } - }, - "headers": { "Link": { "$ref": "#/components/headers/link" } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "activity", - "subcategory": "watching" - }, - "x-octokit": {} - } - }, - "/zen": { - "get": { - "summary": "Get the Zen of GitHub", - "description": "Get a random sentence from the Zen of GitHub", - "tags": ["meta"], - "operationId": "meta/get-zen", - "responses": { - "200": { - "description": "response", - "content": { "text/plain": { "schema": { "type": "string" } } } - } - }, - "x-github": { - "githubCloudOnly": false, - "enabledForGitHubApps": true, - "previews": [], - "category": "meta" - }, - "x-octokit": {} - } - } - }, - "components": { - "schemas": { - "simple-user": { - "title": "Simple User", - "description": "Simple User", - "type": "object", - "properties": { - "login": { "type": "string", "example": "octocat" }, - "id": { "type": "integer", "example": 1 }, - "node_id": { "type": "string", "example": "MDQ6VXNlcjE=" }, - "avatar_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/images/error/octocat_happy.gif" - }, - "gravatar_id": { "type": "string", "example": "", "nullable": true }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat" - }, - "followers_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/followers" - }, - "following_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/following{/other_user}" - }, - "gists_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/gists{/gist_id}" - }, - "starred_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/starred{/owner}{/repo}" - }, - "subscriptions_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/subscriptions" - }, - "organizations_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/orgs" - }, - "repos_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/repos" - }, - "events_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/events{/privacy}" - }, - "received_events_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/received_events" - }, - "type": { "type": "string", "example": "User" }, - "site_admin": { "type": "boolean" }, - "starred_at": { - "type": "string", - "example": "\"2020-07-09T00:17:55Z\"" - } - }, - "required": [ - "avatar_url", - "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", - "html_url", - "id", - "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", - "url" - ], - "nullable": true - }, - "integration": { - "title": "GitHub app", - "description": "GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.", - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the GitHub app", - "example": 37, - "type": "integer" - }, - "slug": { - "description": "The slug name of the GitHub app", - "example": "probot-owners", - "type": "string" - }, - "node_id": { - "type": "string", - "example": "MDExOkludGVncmF0aW9uMQ==" - }, - "owner": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "name": { - "description": "The name of the GitHub app", - "example": "Probot Owners", - "type": "string" - }, - "description": { "type": "string", "example": "", "nullable": true }, - "external_url": { - "type": "string", - "format": "uri", - "example": "https://example.com" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/apps/super-ci" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2017-07-08T16:18:44-04:00" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2017-07-08T16:18:44-04:00" - }, - "permissions": { - "description": "The set of permissions for the GitHub app", - "type": "object", - "properties": { - "issues": { "type": "string" }, - "checks": { "type": "string" }, - "metadata": { "type": "string" }, - "contents": { "type": "string" }, - "deployments": { "type": "string" } - }, - "additionalProperties": { "type": "string" }, - "example": { "issues": "read", "deployments": "write" } - }, - "events": { - "description": "The list of events for the GitHub app", - "example": ["label", "deployment"], - "type": "array", - "items": { "type": "string" } - }, - "installations_count": { - "description": "The number of installations associated with the GitHub app", - "example": 5, - "type": "integer" - }, - "client_id": { - "type": "string", - "example": "\"Iv1.25b5d1e65ffc4022\"" - }, - "client_secret": { - "type": "string", - "example": "\"1d4b2097ac622ba702d19de498f005747a8b21d3\"" - }, - "webhook_secret": { - "type": "string", - "example": "\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\"" - }, - "pem": { - "type": "string", - "example": "\"-----BEGIN RSA PRIVATE KEY-----\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\n-----END RSA PRIVATE KEY-----\\n\"" - } - }, - "required": [ - "id", - "node_id", - "owner", - "name", - "description", - "external_url", - "html_url", - "created_at", - "updated_at", - "permissions", - "events" - ], - "additionalProperties": true - }, - "basic-error": { - "title": "Basic Error", - "description": "Basic Error", - "type": "object", - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - }, - "validation-error-simple": { - "title": "Validation Error Simple", - "description": "Validation Error Simple", - "type": "object", - "required": ["message", "documentation_url"], - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" }, - "errors": { "type": "array", "items": { "type": "string" } } - } - }, - "webhook-config-url": { - "type": "string", - "description": "The URL to which the payloads will be delivered.", - "example": "https://example.com/webhook", - "format": "uri" - }, - "webhook-config-content-type": { - "type": "string", - "description": "The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`.", - "example": "\"json\"" - }, - "webhook-config-secret": { - "type": "string", - "description": "If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value for [delivery signature headers](https://docs.github.com/webhooks/event-payloads/#delivery-headers).", - "example": "\"********\"" - }, - "webhook-config-insecure-ssl": { - "type": "string", - "description": "Determines whether the SSL certificate of the host for `url` will be verified when delivering payloads. Supported values include `0` (verification is performed) and `1` (verification is not performed). The default is `0`. **We strongly recommend not setting this to `1` as you are subject to man-in-the-middle and other attacks.**", - "example": "\"0\"" - }, - "webhook-config": { - "title": "Webhook Configuration", - "description": "Configuration object of the webhook", - "type": "object", - "properties": { - "url": { "$ref": "#/components/schemas/webhook-config-url" }, - "content_type": { - "$ref": "#/components/schemas/webhook-config-content-type" - }, - "secret": { "$ref": "#/components/schemas/webhook-config-secret" }, - "insecure_ssl": { - "$ref": "#/components/schemas/webhook-config-insecure-ssl" - } - } - }, - "enterprise": { - "title": "Enterprise", - "description": "An enterprise account", - "type": "object", - "properties": { - "description": { - "description": "A short description of the enterprise.", - "type": "string", - "nullable": true - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/enterprises/octo-business" - }, - "website_url": { - "description": "The enterprise's website URL.", - "type": "string", - "nullable": true, - "format": "uri" - }, - "id": { - "description": "Unique identifier of the enterprise", - "example": 42, - "type": "integer" - }, - "node_id": { - "type": "string", - "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5" - }, - "name": { - "description": "The name of the enterprise.", - "type": "string", - "example": "Octo Business" - }, - "slug": { - "description": "The slug url identifier for the enterprise.", - "type": "string", - "example": "octo-business" - }, - "created_at": { - "type": "string", - "nullable": true, - "format": "date-time", - "example": "2019-01-26T19:01:12Z" - }, - "updated_at": { - "type": "string", - "nullable": true, - "format": "date-time", - "example": "2019-01-26T19:14:43Z" - }, - "avatar_url": { "type": "string", "format": "uri" } - }, - "required": [ - "id", - "node_id", - "name", - "slug", - "html_url", - "created_at", - "updated_at", - "avatar_url" - ] - }, - "installation": { - "title": "Installation", - "description": "Installation", - "type": "object", - "properties": { - "id": { - "description": "The ID of the installation.", - "type": "integer", - "example": 1 - }, - "account": { - "nullable": true, - "anyOf": [ - { "$ref": "#/components/schemas/simple-user" }, - { "$ref": "#/components/schemas/enterprise" } - ] - }, - "repository_selection": { - "description": "Describe whether all repositories have been selected or there's a selection involved", - "type": "string", - "enum": ["all", "selected"] - }, - "access_tokens_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/installations/1/access_tokens" - }, - "repositories_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/installation/repositories" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/organizations/github/settings/installations/1" - }, - "app_id": { "type": "integer", "example": 1 }, - "target_id": { - "description": "The ID of the user or organization this token is being scoped to.", - "type": "integer" - }, - "target_type": { "type": "string", "example": "Organization" }, - "permissions": { - "type": "object", - "example": { "issues": "read", "deployments": "write" }, - "properties": { - "deployments": { "type": "string" }, - "checks": { "type": "string" }, - "metadata": { "type": "string" }, - "contents": { "type": "string" }, - "pull_requests": { "type": "string" }, - "statuses": { "type": "string" }, - "issues": { "type": "string", "example": "\"read\"" }, - "organization_administration": { - "type": "string", - "example": "\"read\"" - } - } - }, - "events": { "type": "array", "items": { "type": "string" } }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "single_file_name": { - "type": "string", - "example": "config.yaml", - "nullable": true - }, - "has_multiple_single_files": { "type": "boolean", "example": true }, - "single_file_paths": { - "type": "array", - "items": { - "type": "string", - "example": ["config.yml", ".github/issue_TEMPLATE.md"] - } - }, - "app_slug": { "type": "string", "example": "github-actions" }, - "suspended_by": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "suspended_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "contact_email": { - "type": "string", - "example": "\"test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com\"", - "nullable": true - } - }, - "required": [ - "id", - "app_id", - "app_slug", - "target_id", - "target_type", - "single_file_name", - "repository_selection", - "access_tokens_url", - "html_url", - "repositories_url", - "events", - "account", - "permissions", - "created_at", - "updated_at" - ] - }, - "license-simple": { - "title": "License Simple", - "description": "License Simple", - "type": "object", - "properties": { - "key": { "type": "string", "example": "mit" }, - "name": { "type": "string", "example": "MIT License" }, - "url": { - "type": "string", - "nullable": true, - "format": "uri", - "example": "https://api.github.com/licenses/mit" - }, - "spdx_id": { "type": "string", "nullable": true, "example": "MIT" }, - "node_id": { "type": "string", "example": "MDc6TGljZW5zZW1pdA==" }, - "html_url": { "type": "string", "format": "uri" } - }, - "required": ["key", "name", "url", "spdx_id", "node_id"] - }, - "repository": { - "title": "Repository", - "description": "A git repository", - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the repository", - "example": 42, - "type": "integer" - }, - "node_id": { - "type": "string", - "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5" - }, - "name": { - "description": "The name of the repository.", - "type": "string", - "example": "Team Environment" - }, - "full_name": { "type": "string", "example": "octocat/Hello-World" }, - "license": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/license-simple" }] - }, - "forks": { "type": "integer" }, - "permissions": { - "type": "object", - "properties": { - "admin": { "type": "boolean" }, - "pull": { "type": "boolean" }, - "triage": { "type": "boolean" }, - "push": { "type": "boolean" }, - "maintain": { "type": "boolean" } - }, - "required": ["admin", "pull", "push"] - }, - "owner": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "private": { - "description": "Whether the repository is private or public.", - "default": false, - "type": "boolean" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World" - }, - "description": { - "type": "string", - "example": "This your first repo!", - "nullable": true - }, - "fork": { "type": "boolean" }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World" - }, - "archive_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}" - }, - "assignees_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}" - }, - "blobs_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}" - }, - "branches_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}" - }, - "collaborators_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}" - }, - "comments_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}" - }, - "commits_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}" - }, - "compare_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}" - }, - "contents_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}" - }, - "contributors_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/contributors" - }, - "deployments_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/deployments" - }, - "downloads_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/downloads" - }, - "events_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/events" - }, - "forks_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/forks" - }, - "git_commits_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}" - }, - "git_refs_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}" - }, - "git_tags_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}" - }, - "git_url": { - "type": "string", - "example": "git:github.com/octocat/Hello-World.git" - }, - "issue_comment_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}" - }, - "issue_events_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}" - }, - "issues_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}" - }, - "keys_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}" - }, - "labels_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}" - }, - "languages_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/languages" - }, - "merges_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/merges" - }, - "milestones_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}" - }, - "notifications_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}" - }, - "pulls_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}" - }, - "releases_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}" - }, - "ssh_url": { - "type": "string", - "example": "git@github.com:octocat/Hello-World.git" - }, - "stargazers_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/stargazers" - }, - "statuses_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}" - }, - "subscribers_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/subscribers" - }, - "subscription_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/subscription" - }, - "tags_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/tags" - }, - "teams_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/teams" - }, - "trees_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}" - }, - "clone_url": { - "type": "string", - "example": "https://github.com/octocat/Hello-World.git" - }, - "mirror_url": { - "type": "string", - "format": "uri", - "example": "git:git.example.com/octocat/Hello-World", - "nullable": true - }, - "hooks_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "svn_url": { - "type": "string", - "format": "uri", - "example": "https://svn.github.com/octocat/Hello-World" - }, - "homepage": { - "type": "string", - "format": "uri", - "example": "https://github.com", - "nullable": true - }, - "language": { "type": "string", "nullable": true }, - "forks_count": { "type": "integer", "example": 9 }, - "stargazers_count": { "type": "integer", "example": 80 }, - "watchers_count": { "type": "integer", "example": 80 }, - "size": { "type": "integer", "example": 108 }, - "default_branch": { - "description": "The default branch of the repository.", - "type": "string", - "example": "master" - }, - "open_issues_count": { "type": "integer", "example": 0 }, - "is_template": { - "description": "Whether this repository acts as a template that can be used to generate new repositories.", - "default": false, - "type": "boolean", - "example": true - }, - "topics": { "type": "array", "items": { "type": "string" } }, - "has_issues": { - "description": "Whether issues are enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "has_projects": { - "description": "Whether projects are enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "has_wiki": { - "description": "Whether the wiki is enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "has_pages": { "type": "boolean" }, - "has_downloads": { - "description": "Whether downloads are enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "archived": { - "description": "Whether the repository is archived.", - "default": false, - "type": "boolean" - }, - "disabled": { - "type": "boolean", - "description": "Returns whether or not this repository disabled." - }, - "visibility": { - "description": "The repository visibility: public, private, or internal.", - "default": "public", - "type": "string" - }, - "pushed_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:06:43Z", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z", - "nullable": true - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:14:43Z", - "nullable": true - }, - "allow_rebase_merge": { - "description": "Whether to allow rebase merges for pull requests.", - "default": true, - "type": "boolean", - "example": true - }, - "template_repository": { - "type": "object", - "nullable": true, - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "name": { "type": "string" }, - "full_name": { "type": "string" }, - "owner": { - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "avatar_url": { "type": "string" }, - "gravatar_id": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "followers_url": { "type": "string" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string" }, - "organizations_url": { "type": "string" }, - "repos_url": { "type": "string" }, - "events_url": { "type": "string" }, - "received_events_url": { "type": "string" }, - "type": { "type": "string" }, - "site_admin": { "type": "boolean" } - } - }, - "private": { "type": "boolean" }, - "html_url": { "type": "string" }, - "description": { "type": "string" }, - "fork": { "type": "boolean" }, - "url": { "type": "string" }, - "archive_url": { "type": "string" }, - "assignees_url": { "type": "string" }, - "blobs_url": { "type": "string" }, - "branches_url": { "type": "string" }, - "collaborators_url": { "type": "string" }, - "comments_url": { "type": "string" }, - "commits_url": { "type": "string" }, - "compare_url": { "type": "string" }, - "contents_url": { "type": "string" }, - "contributors_url": { "type": "string" }, - "deployments_url": { "type": "string" }, - "downloads_url": { "type": "string" }, - "events_url": { "type": "string" }, - "forks_url": { "type": "string" }, - "git_commits_url": { "type": "string" }, - "git_refs_url": { "type": "string" }, - "git_tags_url": { "type": "string" }, - "git_url": { "type": "string" }, - "issue_comment_url": { "type": "string" }, - "issue_events_url": { "type": "string" }, - "issues_url": { "type": "string" }, - "keys_url": { "type": "string" }, - "labels_url": { "type": "string" }, - "languages_url": { "type": "string" }, - "merges_url": { "type": "string" }, - "milestones_url": { "type": "string" }, - "notifications_url": { "type": "string" }, - "pulls_url": { "type": "string" }, - "releases_url": { "type": "string" }, - "ssh_url": { "type": "string" }, - "stargazers_url": { "type": "string" }, - "statuses_url": { "type": "string" }, - "subscribers_url": { "type": "string" }, - "subscription_url": { "type": "string" }, - "tags_url": { "type": "string" }, - "teams_url": { "type": "string" }, - "trees_url": { "type": "string" }, - "clone_url": { "type": "string" }, - "mirror_url": { "type": "string" }, - "hooks_url": { "type": "string" }, - "svn_url": { "type": "string" }, - "homepage": { "type": "string" }, - "language": { "type": "string" }, - "forks_count": { "type": "integer" }, - "stargazers_count": { "type": "integer" }, - "watchers_count": { "type": "integer" }, - "size": { "type": "integer" }, - "default_branch": { "type": "string" }, - "open_issues_count": { "type": "integer" }, - "is_template": { "type": "boolean" }, - "topics": { "type": "array", "items": { "type": "string" } }, - "has_issues": { "type": "boolean" }, - "has_projects": { "type": "boolean" }, - "has_wiki": { "type": "boolean" }, - "has_pages": { "type": "boolean" }, - "has_downloads": { "type": "boolean" }, - "archived": { "type": "boolean" }, - "disabled": { "type": "boolean" }, - "visibility": { "type": "string" }, - "pushed_at": { "type": "string" }, - "created_at": { "type": "string" }, - "updated_at": { "type": "string" }, - "permissions": { - "type": "object", - "properties": { - "admin": { "type": "boolean" }, - "push": { "type": "boolean" }, - "pull": { "type": "boolean" } - } - }, - "allow_rebase_merge": { "type": "boolean" }, - "template_repository": { "type": "string" }, - "temp_clone_token": { "type": "string" }, - "allow_squash_merge": { "type": "boolean" }, - "delete_branch_on_merge": { "type": "boolean" }, - "allow_merge_commit": { "type": "boolean" }, - "subscribers_count": { "type": "integer" }, - "network_count": { "type": "integer" } - } - }, - "temp_clone_token": { "type": "string" }, - "allow_squash_merge": { - "description": "Whether to allow squash merges for pull requests.", - "default": true, - "type": "boolean", - "example": true - }, - "delete_branch_on_merge": { - "description": "Whether to delete head branches when pull requests are merged", - "default": false, - "type": "boolean", - "example": false - }, - "allow_merge_commit": { - "description": "Whether to allow merge commits for pull requests.", - "default": true, - "type": "boolean", - "example": true - }, - "subscribers_count": { "type": "integer" }, - "network_count": { "type": "integer" }, - "open_issues": { "type": "integer" }, - "watchers": { "type": "integer" }, - "master_branch": { "type": "string" }, - "starred_at": { - "type": "string", - "example": "\"2020-07-09T00:17:42Z\"" - } - }, - "required": [ - "archive_url", - "assignees_url", - "blobs_url", - "branches_url", - "collaborators_url", - "comments_url", - "commits_url", - "compare_url", - "contents_url", - "contributors_url", - "deployments_url", - "description", - "downloads_url", - "events_url", - "fork", - "forks_url", - "full_name", - "git_commits_url", - "git_refs_url", - "git_tags_url", - "hooks_url", - "html_url", - "id", - "node_id", - "issue_comment_url", - "issue_events_url", - "issues_url", - "keys_url", - "labels_url", - "languages_url", - "merges_url", - "milestones_url", - "name", - "notifications_url", - "owner", - "private", - "pulls_url", - "releases_url", - "stargazers_url", - "statuses_url", - "subscribers_url", - "subscription_url", - "tags_url", - "teams_url", - "trees_url", - "url", - "clone_url", - "default_branch", - "forks", - "forks_count", - "git_url", - "has_downloads", - "has_issues", - "has_projects", - "has_wiki", - "has_pages", - "homepage", - "language", - "archived", - "disabled", - "mirror_url", - "open_issues", - "open_issues_count", - "license", - "pushed_at", - "size", - "ssh_url", - "stargazers_count", - "svn_url", - "watchers", - "watchers_count", - "created_at", - "updated_at" - ] - }, - "installation-token": { - "title": "Installation Token", - "description": "Authentication token for a GitHub App installed on a user or org.", - "type": "object", - "properties": { - "token": { "type": "string" }, - "expires_at": { "type": "string" }, - "permissions": { - "type": "object", - "properties": { - "issues": { "type": "string" }, - "contents": { "type": "string" }, - "metadata": { "type": "string", "example": "read" }, - "single_file": { "type": "string", "example": "read" } - } - }, - "repository_selection": { - "type": "string", - "enum": ["all", "selected"] - }, - "repositories": { - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - }, - "single_file": { "type": "string", "example": "README.md" }, - "has_multiple_single_files": { "type": "boolean", "example": true }, - "single_file_paths": { - "type": "array", - "items": { - "type": "string", - "example": ["config.yml", ".github/issue_TEMPLATE.md"] - } - } - } - }, - "validation-error": { - "title": "Validation Error", - "description": "Validation Error", - "type": "object", - "required": ["message", "documentation_url"], - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" }, - "errors": { - "type": "array", - "items": { - "type": "object", - "required": ["code"], - "properties": { - "resource": { "type": "string" }, - "field": { "type": "string" }, - "message": { "type": "string" }, - "code": { "type": "string" }, - "index": { "type": "integer" }, - "value": { - "oneOf": [ - { "type": "string", "nullable": true }, - { "type": "integer", "nullable": true }, - { - "type": "array", - "nullable": true, - "items": { "type": "string" } - } - ] - } - } - } - } - } - }, - "application-grant": { - "title": "Application Grant", - "description": "The authorization associated with an OAuth Access.", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 1 }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/applications/grants/1" - }, - "app": { - "type": "object", - "properties": { - "client_id": { "type": "string" }, - "name": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": ["client_id", "name", "url"] - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-09-06T17:26:27Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-09-06T20:39:23Z" - }, - "scopes": { - "type": "array", - "items": { "type": "string" }, - "example": ["public_repo"] - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - } - }, - "required": ["app", "id", "scopes", "url", "created_at", "updated_at"] - }, - "scoped-installation": { - "title": "Scoped Installation", - "type": "object", - "properties": { - "permissions": { - "type": "object", - "example": { "issues": "read", "deployments": "write" } - }, - "repository_selection": { - "description": "Describe whether all repositories have been selected or there's a selection involved", - "type": "string", - "enum": ["all", "selected"] - }, - "single_file_name": { - "type": "string", - "example": "config.yaml", - "nullable": true - }, - "has_multiple_single_files": { "type": "boolean", "example": true }, - "single_file_paths": { - "type": "array", - "items": { - "type": "string", - "example": ["config.yml", ".github/issue_TEMPLATE.md"] - } - }, - "repositories_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/repos" - }, - "account": { "$ref": "#/components/schemas/simple-user" } - }, - "required": [ - "permissions", - "repository_selection", - "single_file_name", - "repositories_url", - "account" - ] - }, - "authorization": { - "title": "Authorization", - "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 1 }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/authorizations/1" - }, - "scopes": { - "description": "A list of scopes that this authorization is in.", - "type": "array", - "items": { "type": "string" }, - "example": ["public_repo", "user"], - "nullable": true - }, - "token": { "type": "string", "example": "" }, - "token_last_eight": { - "type": "string", - "example": "12345678", - "nullable": true - }, - "hashed_token": { - "type": "string", - "example": "25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8", - "nullable": true - }, - "app": { - "type": "object", - "properties": { - "client_id": { "type": "string" }, - "name": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": ["client_id", "name", "url"] - }, - "note": { - "type": "string", - "example": "optional note", - "nullable": true - }, - "note_url": { - "type": "string", - "format": "uri", - "example": "http://optional/note/url", - "nullable": true - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-09-06T20:39:23Z" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-09-06T17:26:27Z" - }, - "fingerprint": { - "type": "string", - "example": "jklmnop12345678", - "nullable": true - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "installation": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/scoped-installation" }] - } - }, - "required": [ - "app", - "id", - "note", - "note_url", - "scopes", - "token", - "hashed_token", - "token_last_eight", - "fingerprint", - "url", - "created_at", - "updated_at" - ] - }, - "code-of-conduct": { - "title": "Code Of Conduct", - "description": "Code Of Conduct", - "type": "object", - "properties": { - "key": { "type": "string", "example": "contributor_covenant" }, - "name": { "type": "string", "example": "Contributor Covenant" }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/codes_of_conduct/contributor_covenant" - }, - "body": { - "type": "string", - "example": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response\n to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address,\n posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [EMAIL]. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n" - }, - "html_url": { "type": "string", "format": "uri", "nullable": true } - }, - "required": ["url", "html_url", "key", "name"] - }, - "content-reference-attachment": { - "title": "ContentReferenceAttachment", - "description": "Content Reference attachments allow you to provide context around URLs posted in comments", - "type": "object", - "properties": { - "id": { - "description": "The ID of the attachment", - "example": 21, - "type": "integer" - }, - "title": { - "description": "The title of the attachment", - "example": "Title of the attachment", - "type": "string", - "maxLength": 1024 - }, - "body": { - "description": "The body of the attachment", - "example": "Body of the attachment", - "type": "string", - "maxLength": 262144 - }, - "node_id": { - "description": "The node_id of the content attachment", - "example": "MDE3OkNvbnRlbnRBdHRhY2htZW50MjE=", - "type": "string" - } - }, - "required": ["id", "title", "body"] - }, - "enabled-organizations": { - "type": "string", - "description": "The policy that controls the organizations in the enterprise that are allowed to run GitHub Actions. Can be one of: `all`, `none`, or `selected`.", - "enum": ["all", "none", "selected"] - }, - "allowed-actions": { - "type": "string", - "description": "The permissions policy that controls the actions that are allowed to run. Can be one of: `all`, `local_only`, or `selected`.", - "enum": ["all", "local_only", "selected"] - }, - "selected-actions-url": { - "type": "string", - "description": "The API URL to use to get or set the actions that are allowed to run, when `allowed_actions` is set to `selected`." - }, - "actions-enterprise-permissions": { - "type": "object", - "properties": { - "enabled_organizations": { - "$ref": "#/components/schemas/enabled-organizations" - }, - "selected_organizations_url": { - "type": "string", - "description": "The API URL to use to get or set the selected organizations that are allowed to run GitHub Actions, when `enabled_organizations` is set to `selected`." - }, - "allowed_actions": { "$ref": "#/components/schemas/allowed-actions" }, - "selected_actions_url": { - "$ref": "#/components/schemas/selected-actions-url" - } - } - }, - "organization-simple": { - "title": "Organization Simple", - "description": "Organization Simple", - "type": "object", - "properties": { - "login": { "type": "string", "example": "github" }, - "id": { "type": "integer", "example": 1 }, - "node_id": { - "type": "string", - "example": "MDEyOk9yZ2FuaXphdGlvbjE=" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/github" - }, - "repos_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/github/repos" - }, - "events_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/github/events" - }, - "hooks_url": { - "type": "string", - "example": "https://api.github.com/orgs/github/hooks" - }, - "issues_url": { - "type": "string", - "example": "https://api.github.com/orgs/github/issues" - }, - "members_url": { - "type": "string", - "example": "https://api.github.com/orgs/github/members{/member}" - }, - "public_members_url": { - "type": "string", - "example": "https://api.github.com/orgs/github/public_members{/member}" - }, - "avatar_url": { - "type": "string", - "example": "https://github.com/images/error/octocat_happy.gif" - }, - "description": { - "type": "string", - "example": "A great organization", - "nullable": true - } - }, - "required": [ - "login", - "url", - "id", - "node_id", - "repos_url", - "events_url", - "hooks_url", - "issues_url", - "members_url", - "public_members_url", - "avatar_url", - "description" - ] - }, - "selected-actions": { - "type": "object", - "properties": { - "github_owned_allowed": { - "type": "boolean", - "description": "Whether GitHub-owned actions are allowed. For example, this includes the actions in the `actions` organization." - }, - "verified_allowed": { - "type": "boolean", - "description": "Whether actions in GitHub Marketplace from verified creators are allowed. Set to `true` to allow all GitHub Marketplace actions by verified creators." - }, - "patterns_allowed": { - "type": "array", - "description": "Specifies a list of string-matching patterns to allow specific action(s). Wildcards, tags, and SHAs are allowed. For example, `monalisa/octocat@*`, `monalisa/octocat@v2`, `monalisa/*`.\"", - "items": { "type": "string" } - } - } - }, - "runner-groups-enterprise": { - "type": "object", - "properties": { - "id": { "type": "number" }, - "name": { "type": "string" }, - "visibility": { "type": "string" }, - "default": { "type": "boolean" }, - "selected_organizations_url": { "type": "string" }, - "runners_url": { "type": "string" } - } - }, - "runner": { - "title": "Self hosted runners", - "description": "A self hosted runner", - "type": "object", - "properties": { - "id": { - "description": "The id of the runner.", - "type": "integer", - "example": 5 - }, - "name": { - "description": "The name of the runner.", - "type": "string", - "example": "iMac" - }, - "os": { - "description": "The Operating System of the runner.", - "type": "string", - "example": "macos" - }, - "status": { - "description": "The status of the runner.", - "type": "string", - "example": "online" - }, - "busy": { "type": "boolean" }, - "labels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "Unique identifier of the label." - }, - "name": { - "type": "string", - "description": "Name of the label." - }, - "type": { - "type": "string", - "description": "The type of label. Read-only labels are applied automatically when the runner is configured.", - "enum": ["read-only", "custom"] - } - } - } - } - }, - "required": ["id", "name", "os", "status", "busy", "labels"] - }, - "runner-application": { - "title": "Runner Application", - "description": "Runner Application", - "type": "object", - "properties": { - "os": { "type": "string" }, - "architecture": { "type": "string" }, - "download_url": { "type": "string" }, - "filename": { "type": "string" } - } - }, - "authentication-token": { - "title": "Authentication Token", - "description": "Authentication Token", - "type": "object", - "properties": { - "token": { - "description": "The token used for authentication", - "type": "string", - "example": "v1.1f699f1069f60xxx" - }, - "expires_at": { - "description": "The time this token expires", - "type": "string", - "format": "date-time", - "example": "2016-07-11T22:14:10Z" - }, - "permissions": { - "type": "object", - "example": { "issues": "read", "deployments": "write" } - }, - "repositories": { - "description": "The repositories this token has access to", - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - }, - "single_file": { - "type": "string", - "example": "config.yaml", - "nullable": true - }, - "repository_selection": { - "description": "Describe whether all repositories have been selected or there's a selection involved", - "type": "string", - "enum": ["all", "selected"] - } - }, - "required": ["token", "expires_at"] - }, - "actions-billing-usage": { - "type": "object", - "properties": { - "total_minutes_used": { - "type": "integer", - "description": "The sum of the free and paid GitHub Actions minutes used." - }, - "total_paid_minutes_used": { - "type": "integer", - "description": "The total paid GitHub Actions minutes used." - }, - "included_minutes": { - "type": "integer", - "description": "The amount of free GitHub Actions minutes available." - }, - "minutes_used_breakdown": { - "type": "object", - "properties": { - "UBUNTU": { - "type": "integer", - "description": "Total minutes used on Ubuntu runner machines." - }, - "MACOS": { - "type": "integer", - "description": "Total minutes used on macOS runner machines." - }, - "WINDOWS": { - "type": "integer", - "description": "Total minutes used on Windows runner machines." - } - } - } - } - }, - "packages-billing-usage": { - "type": "object", - "properties": { - "total_gigabytes_bandwidth_used": { - "type": "integer", - "description": "Sum of the free and paid storage space (GB) for GitHuub Packages." - }, - "total_paid_gigabytes_bandwidth_used": { - "type": "integer", - "description": "Total paid storage space (GB) for GitHuub Packages." - }, - "included_gigabytes_bandwidth": { - "type": "integer", - "description": "Free storage space (GB) for GitHub Packages." - } - } - }, - "combined-billing-usage": { - "type": "object", - "properties": { - "days_left_in_billing_cycle": { - "type": "integer", - "description": "Numbers of days left in billing cycle." - }, - "estimated_paid_storage_for_month": { - "type": "integer", - "description": "Estimated storage space (GB) used in billing cycle." - }, - "estimated_storage_for_month": { - "type": "integer", - "description": "Estimated sum of free and paid storage space (GB) used in billing cycle." - } - } - }, - "actor": { - "title": "Actor", - "description": "Actor", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "login": { "type": "string" }, - "display_login": { "type": "string" }, - "gravatar_id": { "type": "string", "nullable": true }, - "url": { "type": "string", "format": "uri" }, - "avatar_url": { "type": "string", "format": "uri" } - }, - "required": ["id", "login", "gravatar_id", "url", "avatar_url"] - }, - "milestone": { - "title": "Milestone", - "description": "A collection of related issues and pull requests.", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/milestones/1" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/milestones/v1.0" - }, - "labels_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels" - }, - "id": { "type": "integer", "example": 1002604 }, - "node_id": { - "type": "string", - "example": "MDk6TWlsZXN0b25lMTAwMjYwNA==" - }, - "number": { - "description": "The number of the milestone.", - "type": "integer", - "example": 42 - }, - "state": { - "description": "The state of the milestone.", - "example": "open", - "type": "string", - "enum": ["open", "closed"], - "default": "open" - }, - "title": { - "description": "The title of the milestone.", - "example": "v1.0", - "type": "string" - }, - "description": { - "type": "string", - "example": "Tracking milestone for version 1.0", - "nullable": true - }, - "creator": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "open_issues": { "type": "integer", "example": 4 }, - "closed_issues": { "type": "integer", "example": 8 }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-10T20:09:31Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2014-03-03T18:58:10Z" - }, - "closed_at": { - "type": "string", - "format": "date-time", - "example": "2013-02-12T13:22:01Z", - "nullable": true - }, - "due_on": { - "type": "string", - "format": "date-time", - "example": "2012-10-09T23:39:01Z", - "nullable": true - } - }, - "required": [ - "closed_issues", - "creator", - "description", - "due_on", - "closed_at", - "id", - "node_id", - "labels_url", - "html_url", - "number", - "open_issues", - "state", - "title", - "url", - "created_at", - "updated_at" - ] - }, - "issue-simple": { - "title": "Issue Simple", - "description": "Issue Simple", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 1 }, - "node_id": { "type": "string", "example": "MDU6SXNzdWUx" }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347" - }, - "repository_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World" - }, - "labels_url": { - "type": "string", - "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}" - }, - "comments_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments" - }, - "events_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/events" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/issues/1347" - }, - "number": { "type": "integer", "example": 1347 }, - "state": { "type": "string", "example": "open" }, - "title": { "type": "string", "example": "Found a bug" }, - "body": { - "type": "string", - "example": "I'm having a problem with this." - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "labels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string" }, - "name": { "type": "string" }, - "description": { "type": "string", "nullable": true }, - "color": { "type": "string" }, - "default": { "type": "boolean" } - } - } - }, - "assignee": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "assignees": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" }, - "nullable": true - }, - "milestone": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/milestone" }] - }, - "locked": { "type": "boolean", "example": true }, - "active_lock_reason": { - "type": "string", - "example": "too heated", - "nullable": true - }, - "comments": { "type": "integer", "example": 0 }, - "pull_request": { - "type": "object", - "properties": { - "merged_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "diff_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "html_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "patch_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "url": { "type": "string", "format": "uri", "nullable": true } - }, - "required": ["diff_url", "html_url", "patch_url", "url"] - }, - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-22T13:33:48Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-22T13:33:48Z" - }, - "author_association": { "type": "string" }, - "body_html": { "type": "string" }, - "body_text": { "type": "string" }, - "timeline_url": { "type": "string", "format": "uri" }, - "repository": { "$ref": "#/components/schemas/repository" }, - "performed_via_github_app": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/integration" }] - } - }, - "required": [ - "assignee", - "closed_at", - "comments", - "comments_url", - "events_url", - "html_url", - "id", - "node_id", - "labels", - "labels_url", - "milestone", - "number", - "repository_url", - "state", - "locked", - "title", - "url", - "user", - "author_association", - "created_at", - "updated_at" - ] - }, - "reaction-rollup": { - "title": "Reaction Rollup", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "total_count": { "type": "integer" }, - "+1": { "type": "integer" }, - "-1": { "type": "integer" }, - "laugh": { "type": "integer" }, - "confused": { "type": "integer" }, - "heart": { "type": "integer" }, - "hooray": { "type": "integer" }, - "eyes": { "type": "integer" }, - "rocket": { "type": "integer" } - }, - "required": [ - "url", - "total_count", - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "eyes", - "rocket" - ] - }, - "issue-comment": { - "title": "Issue Comment", - "description": "Comments provide a way for people to collaborate on an issue.", - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the issue comment", - "example": 42, - "type": "integer" - }, - "node_id": { "type": "string" }, - "url": { - "description": "URL for the issue comment", - "example": "https://api.github.com/repositories/42/issues/comments/1", - "type": "string", - "format": "uri" - }, - "body": { - "description": "Contents of the issue comment", - "example": "What version of Safari were you using when you observed this bug?", - "type": "string" - }, - "body_text": { "type": "string" }, - "body_html": { "type": "string" }, - "html_url": { "type": "string", "format": "uri" }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-14T16:00:49Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-14T16:00:49Z" - }, - "issue_url": { "type": "string", "format": "uri" }, - "author_association": { - "type": "string", - "enum": [ - "collaborator", - "contributor", - "first_timer", - "first_time_contributor", - "mannequin", - "member", - "none", - "owner" - ] - }, - "performed_via_github_app": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/integration" }] - }, - "reactions": { "$ref": "#/components/schemas/reaction-rollup" } - }, - "required": [ - "id", - "node_id", - "html_url", - "issue_url", - "author_association", - "user", - "url", - "created_at", - "updated_at" - ] - }, - "event": { - "title": "Event", - "description": "Event", - "type": "object", - "properties": { - "id": { "type": "string" }, - "type": { "type": "string", "nullable": true }, - "actor": { "$ref": "#/components/schemas/actor" }, - "repo": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "name": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": ["id", "name", "url"] - }, - "org": { "$ref": "#/components/schemas/actor" }, - "payload": { - "type": "object", - "properties": { - "action": { "type": "string" }, - "issue": { "$ref": "#/components/schemas/issue-simple" }, - "comment": { "$ref": "#/components/schemas/issue-comment" }, - "pages": { - "type": "array", - "items": { - "type": "object", - "properties": { - "page_name": { "type": "string" }, - "title": { "type": "string" }, - "summary": { "type": "string", "nullable": true }, - "action": { "type": "string" }, - "sha": { "type": "string" }, - "html_url": { "type": "string" } - } - } - } - }, - "required": ["action"] - }, - "public": { "type": "boolean" }, - "created_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "type", - "actor", - "repo", - "payload", - "public", - "created_at" - ] - }, - "link-with-type": { - "title": "Link With Type", - "description": "Hypermedia Link with Type", - "type": "object", - "properties": { - "href": { "type": "string" }, - "type": { "type": "string" } - }, - "required": ["href", "type"] - }, - "feed": { - "title": "Feed", - "description": "Feed", - "type": "object", - "properties": { - "timeline_url": { - "type": "string", - "example": "https://github.com/timeline" - }, - "user_url": { - "type": "string", - "example": "https://github.com/{user}" - }, - "current_user_public_url": { - "type": "string", - "example": "https://github.com/octocat" - }, - "current_user_url": { - "type": "string", - "example": "https://github.com/octocat.private?token=abc123" - }, - "current_user_actor_url": { - "type": "string", - "example": "https://github.com/octocat.private.actor?token=abc123" - }, - "current_user_organization_url": { "type": "string", "example": "" }, - "current_user_organization_urls": { - "type": "array", - "example": [ - "https://github.com/organizations/github/octocat.private.atom?token=abc123" - ], - "items": { "type": "string", "format": "uri" } - }, - "security_advisories_url": { - "type": "string", - "example": "https://github.com/security-advisories" - }, - "_links": { - "type": "object", - "properties": { - "timeline": { "$ref": "#/components/schemas/link-with-type" }, - "user": { "$ref": "#/components/schemas/link-with-type" }, - "security_advisories": { - "$ref": "#/components/schemas/link-with-type" - }, - "current_user": { "$ref": "#/components/schemas/link-with-type" }, - "current_user_public": { - "$ref": "#/components/schemas/link-with-type" - }, - "current_user_actor": { - "$ref": "#/components/schemas/link-with-type" - }, - "current_user_organization": { - "$ref": "#/components/schemas/link-with-type" - }, - "current_user_organizations": { - "type": "array", - "items": { "$ref": "#/components/schemas/link-with-type" } - } - }, - "required": ["timeline", "user"] - } - }, - "required": ["_links", "timeline_url", "user_url"] - }, - "base-gist": { - "title": "Base Gist", - "description": "Base Gist", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "forks_url": { "type": "string", "format": "uri" }, - "commits_url": { "type": "string", "format": "uri" }, - "id": { "type": "string" }, - "node_id": { "type": "string" }, - "git_pull_url": { "type": "string", "format": "uri" }, - "git_push_url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "files": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "filename": { "type": "string" }, - "type": { "type": "string" }, - "language": { "type": "string" }, - "raw_url": { "type": "string" }, - "size": { "type": "integer" } - } - } - }, - "public": { "type": "boolean" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "description": { "type": "string", "nullable": true }, - "comments": { "type": "integer" }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "comments_url": { "type": "string", "format": "uri" }, - "owner": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "truncated": { "type": "boolean" }, - "forks": { "type": "array", "items": {} }, - "history": { "type": "array", "items": {} } - }, - "required": [ - "id", - "node_id", - "url", - "forks_url", - "commits_url", - "git_pull_url", - "git_push_url", - "html_url", - "comments_url", - "public", - "description", - "comments", - "user", - "files", - "created_at", - "updated_at" - ] - }, - "gist-simple": { - "title": "Gist Simple", - "description": "Gist Simple", - "type": "object", - "properties": { - "url": { "type": "string" }, - "forks_url": { "type": "string" }, - "commits_url": { "type": "string" }, - "id": { "type": "string" }, - "node_id": { "type": "string" }, - "git_pull_url": { "type": "string" }, - "git_push_url": { "type": "string" }, - "html_url": { "type": "string" }, - "files": { - "type": "object", - "additionalProperties": { - "nullable": true, - "type": "object", - "properties": { - "filename": { "type": "string" }, - "type": { "type": "string" }, - "language": { "type": "string" }, - "raw_url": { "type": "string" }, - "size": { "type": "integer" }, - "truncated": { "type": "boolean" }, - "content": { "type": "string" } - } - } - }, - "public": { "type": "boolean" }, - "created_at": { "type": "string" }, - "updated_at": { "type": "string" }, - "description": { "type": "string", "nullable": true }, - "comments": { "type": "integer" }, - "user": { "type": "string", "nullable": true }, - "comments_url": { "type": "string" }, - "owner": { "$ref": "#/components/schemas/simple-user" }, - "truncated": { "type": "boolean" } - } - }, - "gist-full": { - "title": "Gist Full", - "description": "Gist Full", - "allOf": [ - { "$ref": "#/components/schemas/gist-simple" }, - { - "type": "object", - "properties": { - "forks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "user": { - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "avatar_url": { "type": "string" }, - "gravatar_id": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "followers_url": { "type": "string" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string" }, - "organizations_url": { "type": "string" }, - "repos_url": { "type": "string" }, - "events_url": { "type": "string" }, - "received_events_url": { "type": "string" }, - "type": { "type": "string" }, - "site_admin": { "type": "boolean" } - } - }, - "url": { "type": "string" }, - "id": { "type": "string" }, - "created_at": { "type": "string" }, - "updated_at": { "type": "string" } - } - } - }, - "history": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { "type": "string" }, - "version": { "type": "string" }, - "user": { - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "avatar_url": { "type": "string" }, - "gravatar_id": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "followers_url": { "type": "string" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string" }, - "organizations_url": { "type": "string" }, - "repos_url": { "type": "string" }, - "events_url": { "type": "string" }, - "received_events_url": { "type": "string" }, - "type": { "type": "string" }, - "site_admin": { "type": "boolean" } - }, - "nullable": true - }, - "change_status": { - "type": "object", - "properties": { - "deletions": { "type": "integer" }, - "additions": { "type": "integer" }, - "total": { "type": "integer" } - } - }, - "committed_at": { "type": "string" } - } - } - }, - "fork_of": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/gist-simple" }] - }, - "url": { - "type": "string", - "example": "\"https://api.github.com/gists/d8de7663c84491ba9eeb9ca1fd20ced8/cb5b95fe0f15ada6d34a421007ba2e4a34e2771e\"" - }, - "forks_url": { - "type": "string", - "example": "\"https://api.github.com/gists/d8de7663c84491ba9eeb9ca1fd20ced8/forks\"" - }, - "commits_url": { - "type": "string", - "example": "\"https://api.github.com/gists/d8de7663c84491ba9eeb9ca1fd20ced8/commits\"" - }, - "id": { - "type": "string", - "example": "\"d8de7663c84491ba9eeb9ca1fd20ced8\"" - }, - "node_id": { - "type": "string", - "example": "\"MDQ6R2lzdGQ4ZGU3NjYzYzg0NDkxYmE5ZWViOWNhMWZkMjBjZWQ4\"" - }, - "git_pull_url": { - "type": "string", - "example": "\"https://gist.github.com/d8de7663c84491ba9eeb9ca1fd20ced8.git\"" - }, - "git_push_url": { - "type": "string", - "example": "\"https://gist.github.com/d8de7663c84491ba9eeb9ca1fd20ced8.git\"" - }, - "html_url": { - "type": "string", - "example": "\"https://gist.github.com/d8de7663c84491ba9eeb9ca1fd20ced8\"" - }, - "created_at": { - "type": "string", - "example": "\"2020-07-09T00:18:06Z\"" - }, - "updated_at": { - "type": "string", - "example": "\"2020-07-09T00:18:06Z\"" - }, - "description": { - "type": "string", - "example": "\"description\"", - "nullable": true - }, - "comments": { "type": "integer", "example": "0" }, - "comments_url": { - "type": "string", - "example": "\"https://api.github.com/gists/d8de7663c84491ba9eeb9ca1fd20ced8/comments\"" - } - } - } - ] - }, - "gist-comment": { - "title": "Gist Comment", - "description": "A comment made to a gist.", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 1 }, - "node_id": { - "type": "string", - "example": "MDExOkdpc3RDb21tZW50MQ==" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/gists/a6db0bec360bb87e9418/comments/1" - }, - "body": { - "description": "The comment text.", - "type": "string", - "maxLength": 65535, - "example": "Body of the attachment" - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-18T23:23:56Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-18T23:23:56Z" - }, - "author_association": { "type": "string" } - }, - "required": [ - "url", - "id", - "node_id", - "user", - "body", - "author_association", - "created_at", - "updated_at" - ] - }, - "gist-commit": { - "title": "Gist Commit", - "description": "Gist Commit", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/gists/aa5a315d61ae9438b18d/57a7f021a713b1c5a6a199b54cc514735d2d462f" - }, - "version": { - "type": "string", - "example": "57a7f021a713b1c5a6a199b54cc514735d2d462f" - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "change_status": { - "type": "object", - "properties": { - "total": { "type": "integer" }, - "additions": { "type": "integer" }, - "deletions": { "type": "integer" } - } - }, - "committed_at": { - "type": "string", - "format": "date-time", - "example": "2010-04-14T02:15:15Z" - } - }, - "required": ["url", "user", "version", "committed_at", "change_status"] - }, - "gitignore-template": { - "title": "Gitignore Template", - "description": "Gitignore Template", - "type": "object", - "properties": { - "name": { "type": "string", "example": "C" }, - "source": { - "type": "string", - "example": "# Object files\n*.o\n\n# Libraries\n*.lib\n*.a\n\n# Shared objects (inc. Windows DLLs)\n*.dll\n*.so\n*.so.*\n*.dylib\n\n# Executables\n*.exe\n*.out\n*.app\n" - } - }, - "required": ["name", "source"] - }, - "issue": { - "title": "Issue", - "description": "Issues are a great way to keep track of tasks, enhancements, and bugs for your projects.", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { - "description": "URL for the issue", - "example": "https://api.github.com/repositories/42/issues/1", - "type": "string", - "format": "uri" - }, - "repository_url": { "type": "string", "format": "uri" }, - "labels_url": { "type": "string" }, - "comments_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "number": { - "description": "Number uniquely identifying the issue within its repository", - "example": 42, - "type": "integer" - }, - "state": { - "description": "State of the issue; either 'open' or 'closed'", - "example": "open", - "type": "string" - }, - "title": { - "description": "Title of the issue", - "example": "Widget creation fails in Safari on OS X 10.8", - "type": "string" - }, - "body": { - "description": "Contents of the issue", - "example": "It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug?", - "type": "string" - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "labels": { - "description": "Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository", - "example": ["bug", "registration"], - "type": "array", - "items": { - "oneOf": [ - { "type": "string" }, - { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "name": { "type": "string" }, - "description": { "type": "string", "nullable": true }, - "color": { "type": "string", "nullable": true }, - "default": { "type": "boolean" } - } - } - ] - } - }, - "assignee": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "assignees": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" }, - "nullable": true - }, - "milestone": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/milestone" }] - }, - "locked": { "type": "boolean" }, - "active_lock_reason": { "type": "string", "nullable": true }, - "comments": { "type": "integer" }, - "pull_request": { - "type": "object", - "properties": { - "merged_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "diff_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "html_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "patch_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "url": { "type": "string", "format": "uri", "nullable": true } - }, - "required": ["diff_url", "html_url", "patch_url", "url"] - }, - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "closed_by": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "body_html": { "type": "string" }, - "body_text": { "type": "string" }, - "timeline_url": { "type": "string", "format": "uri" }, - "repository": { "$ref": "#/components/schemas/repository" }, - "performed_via_github_app": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/integration" }] - }, - "author_association": { "type": "string" }, - "reactions": { "$ref": "#/components/schemas/reaction-rollup" } - }, - "required": [ - "assignee", - "closed_at", - "comments", - "comments_url", - "events_url", - "html_url", - "id", - "node_id", - "labels", - "labels_url", - "milestone", - "number", - "repository_url", - "state", - "locked", - "title", - "url", - "user", - "author_association", - "created_at", - "updated_at" - ] - }, - "license": { - "title": "License", - "description": "License", - "type": "object", - "properties": { - "key": { "type": "string", "example": "mit" }, - "name": { "type": "string", "example": "MIT License" }, - "spdx_id": { "type": "string", "example": "MIT", "nullable": true }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/licenses/mit", - "nullable": true - }, - "node_id": { "type": "string", "example": "MDc6TGljZW5zZW1pdA==" }, - "html_url": { - "type": "string", - "format": "uri", - "example": "http://choosealicense.com/licenses/mit/" - }, - "description": { - "type": "string", - "example": "A permissive license that is short and to the point. It lets people do anything with your code with proper attribution and without warranty." - }, - "implementation": { - "type": "string", - "example": "Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders." - }, - "permissions": { - "type": "array", - "example": [ - "commercial-use", - "modifications", - "distribution", - "sublicense", - "private-use" - ], - "items": { "type": "string" } - }, - "conditions": { - "type": "array", - "example": ["include-copyright"], - "items": { "type": "string" } - }, - "limitations": { - "type": "array", - "example": ["no-liability"], - "items": { "type": "string" } - }, - "body": { - "type": "string", - "example": "\n\nThe MIT License (MIT)\n\nCopyright (c) [year] [fullname]\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" - }, - "featured": { "type": "boolean", "example": true } - }, - "required": [ - "key", - "name", - "url", - "spdx_id", - "node_id", - "html_url", - "description", - "implementation", - "permissions", - "conditions", - "limitations", - "body", - "featured" - ] - }, - "marketplace-listing-plan": { - "title": "Marketplace Listing Plan", - "description": "Marketplace Listing Plan", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/marketplace_listing/plans/1313" - }, - "accounts_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/marketplace_listing/plans/1313/accounts" - }, - "id": { "type": "integer", "example": 1313 }, - "number": { "type": "integer", "example": 3 }, - "name": { "type": "string", "example": "Pro" }, - "description": { - "type": "string", - "example": "A professional-grade CI solution" - }, - "monthly_price_in_cents": { "type": "integer", "example": 1099 }, - "yearly_price_in_cents": { "type": "integer", "example": 11870 }, - "price_model": { "type": "string", "example": "flat-rate" }, - "has_free_trial": { "type": "boolean", "example": true }, - "unit_name": { "type": "string", "nullable": true }, - "state": { "type": "string", "example": "published" }, - "bullets": { - "type": "array", - "items": { "type": "string" }, - "example": ["Up to 25 private repositories", "11 concurrent builds"] - } - }, - "required": [ - "url", - "accounts_url", - "id", - "number", - "name", - "description", - "has_free_trial", - "price_model", - "unit_name", - "monthly_price_in_cents", - "state", - "yearly_price_in_cents", - "bullets" - ] - }, - "marketplace-purchase": { - "title": "Marketplace Purchase", - "description": "Marketplace Purchase", - "type": "object", - "properties": { - "url": { "type": "string" }, - "type": { "type": "string" }, - "id": { "type": "integer" }, - "login": { "type": "string" }, - "organization_billing_email": { "type": "string" }, - "marketplace_pending_change": { - "type": "object", - "properties": { - "is_installed": { "type": "boolean" }, - "effective_date": { "type": "string" }, - "unit_count": { "type": "integer", "nullable": true }, - "id": { "type": "integer" }, - "plan": { - "$ref": "#/components/schemas/marketplace-listing-plan" - } - }, - "nullable": true - }, - "marketplace_purchase": { - "type": "object", - "properties": { - "billing_cycle": { "type": "string" }, - "next_billing_date": { "type": "string", "nullable": true }, - "is_installed": { "type": "boolean" }, - "unit_count": { "type": "integer", "nullable": true }, - "on_free_trial": { "type": "boolean" }, - "free_trial_ends_on": { "type": "string", "nullable": true }, - "updated_at": { "type": "string" }, - "plan": { - "$ref": "#/components/schemas/marketplace-listing-plan" - } - } - } - }, - "required": ["url", "id", "type", "login", "marketplace_purchase"] - }, - "api-overview": { - "title": "Api Overview", - "description": "Api Overview", - "type": "object", - "properties": { - "verifiable_password_authentication": { - "type": "boolean", - "example": true - }, - "ssh_key_fingerprints": { - "type": "object", - "properties": { - "SHA256_RSA": { "type": "string" }, - "SHA256_DSA": { "type": "string" } - } - }, - "hooks": { - "type": "array", - "items": { "type": "string" }, - "example": ["127.0.0.1/32"] - }, - "web": { - "type": "array", - "items": { "type": "string" }, - "example": ["127.0.0.1/32"] - }, - "api": { - "type": "array", - "items": { "type": "string" }, - "example": ["127.0.0.1/32"] - }, - "git": { - "type": "array", - "items": { "type": "string" }, - "example": ["127.0.0.1/32"] - }, - "pages": { - "type": "array", - "items": { "type": "string" }, - "example": ["192.30.252.153/32", "192.30.252.154/32"] - }, - "importer": { - "type": "array", - "items": { "type": "string" }, - "example": ["54.158.161.132", "54.226.70.38"] - }, - "github_services_sha": { - "type": "string", - "example": "3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15" - }, - "installed_version": { "type": "string" } - }, - "required": ["verifiable_password_authentication"] - }, - "minimal-repository": { - "title": "Minimal Repository", - "description": "Minimal Repository", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 1296269 }, - "node_id": { - "type": "string", - "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5" - }, - "name": { "type": "string", "example": "Hello-World" }, - "full_name": { "type": "string", "example": "octocat/Hello-World" }, - "owner": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "private": { "type": "boolean" }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World" - }, - "description": { - "type": "string", - "example": "This your first repo!", - "nullable": true - }, - "fork": { "type": "boolean" }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World" - }, - "archive_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}" - }, - "assignees_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}" - }, - "blobs_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}" - }, - "branches_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}" - }, - "collaborators_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}" - }, - "comments_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}" - }, - "commits_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}" - }, - "compare_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}" - }, - "contents_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}" - }, - "contributors_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/contributors" - }, - "deployments_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/deployments" - }, - "downloads_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/downloads" - }, - "events_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/events" - }, - "forks_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/forks" - }, - "git_commits_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}" - }, - "git_refs_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}" - }, - "git_tags_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}" - }, - "git_url": { "type": "string" }, - "issue_comment_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}" - }, - "issue_events_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}" - }, - "issues_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}" - }, - "keys_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}" - }, - "labels_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}" - }, - "languages_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/languages" - }, - "merges_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/merges" - }, - "milestones_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}" - }, - "notifications_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}" - }, - "pulls_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}" - }, - "releases_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}" - }, - "ssh_url": { "type": "string" }, - "stargazers_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/stargazers" - }, - "statuses_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}" - }, - "subscribers_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/subscribers" - }, - "subscription_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/subscription" - }, - "tags_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/tags" - }, - "teams_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/teams" - }, - "trees_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}" - }, - "clone_url": { "type": "string" }, - "mirror_url": { "type": "string", "nullable": true }, - "hooks_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "svn_url": { "type": "string" }, - "homepage": { "type": "string", "nullable": true }, - "language": { "type": "string", "nullable": true }, - "forks_count": { "type": "integer" }, - "stargazers_count": { "type": "integer" }, - "watchers_count": { "type": "integer" }, - "size": { "type": "integer" }, - "default_branch": { "type": "string" }, - "open_issues_count": { "type": "integer" }, - "is_template": { "type": "boolean" }, - "topics": { "type": "array", "items": { "type": "string" } }, - "has_issues": { "type": "boolean" }, - "has_projects": { "type": "boolean" }, - "has_wiki": { "type": "boolean" }, - "has_pages": { "type": "boolean" }, - "has_downloads": { "type": "boolean" }, - "archived": { "type": "boolean" }, - "disabled": { "type": "boolean" }, - "visibility": { "type": "string" }, - "pushed_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:06:43Z", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z", - "nullable": true - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:14:43Z", - "nullable": true - }, - "permissions": { - "type": "object", - "properties": { - "admin": { "type": "boolean" }, - "push": { "type": "boolean" }, - "pull": { "type": "boolean" } - } - }, - "template_repository": { "type": "string" }, - "temp_clone_token": { "type": "string" }, - "delete_branch_on_merge": { "type": "boolean" }, - "subscribers_count": { "type": "integer" }, - "network_count": { "type": "integer" }, - "license": { - "type": "object", - "properties": { - "key": { "type": "string" }, - "name": { "type": "string" }, - "spdx_id": { "type": "string" }, - "url": { "type": "string" }, - "node_id": { "type": "string" } - }, - "nullable": true - }, - "forks": { "type": "integer", "example": 0 }, - "open_issues": { "type": "integer", "example": 0 }, - "watchers": { "type": "integer", "example": 0 } - }, - "required": [ - "archive_url", - "assignees_url", - "blobs_url", - "branches_url", - "collaborators_url", - "comments_url", - "commits_url", - "compare_url", - "contents_url", - "contributors_url", - "deployments_url", - "description", - "downloads_url", - "events_url", - "fork", - "forks_url", - "full_name", - "git_commits_url", - "git_refs_url", - "git_tags_url", - "hooks_url", - "html_url", - "id", - "node_id", - "issue_comment_url", - "issue_events_url", - "issues_url", - "keys_url", - "labels_url", - "languages_url", - "merges_url", - "milestones_url", - "name", - "notifications_url", - "owner", - "private", - "pulls_url", - "releases_url", - "stargazers_url", - "statuses_url", - "subscribers_url", - "subscription_url", - "tags_url", - "teams_url", - "trees_url", - "url" - ] - }, - "thread": { - "title": "Thread", - "description": "Thread", - "type": "object", - "properties": { - "id": { "type": "string" }, - "repository": { "$ref": "#/components/schemas/minimal-repository" }, - "subject": { - "type": "object", - "properties": { - "title": { "type": "string" }, - "url": { "type": "string" }, - "latest_comment_url": { "type": "string" }, - "type": { "type": "string" } - } - }, - "reason": { "type": "string" }, - "unread": { "type": "boolean" }, - "updated_at": { "type": "string" }, - "last_read_at": { "type": "string", "nullable": true }, - "url": { "type": "string" }, - "subscription_url": { - "type": "string", - "example": "https://api.github.com/notifications/threads/2/subscription" - } - } - }, - "thread-subscription": { - "title": "Thread Subscription", - "description": "Thread Subscription", - "type": "object", - "properties": { - "subscribed": { "type": "boolean", "example": true }, - "ignored": { "type": "boolean" }, - "reason": { "type": "string", "nullable": true }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2012-10-06T21:34:12Z", - "nullable": true - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/notifications/threads/1/subscription" - }, - "thread_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/notifications/threads/1" - }, - "repository_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/1" - } - }, - "required": ["created_at", "ignored", "reason", "url", "subscribed"] - }, - "organization-full": { - "title": "Organization Full", - "description": "Organization Full", - "type": "object", - "properties": { - "login": { "type": "string", "example": "github" }, - "id": { "type": "integer", "example": 1 }, - "node_id": { - "type": "string", - "example": "MDEyOk9yZ2FuaXphdGlvbjE=" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/github" - }, - "repos_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/github/repos" - }, - "events_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/github/events" - }, - "hooks_url": { - "type": "string", - "example": "https://api.github.com/orgs/github/hooks" - }, - "issues_url": { - "type": "string", - "example": "https://api.github.com/orgs/github/issues" - }, - "members_url": { - "type": "string", - "example": "https://api.github.com/orgs/github/members{/member}" - }, - "public_members_url": { - "type": "string", - "example": "https://api.github.com/orgs/github/public_members{/member}" - }, - "avatar_url": { - "type": "string", - "example": "https://github.com/images/error/octocat_happy.gif" - }, - "description": { - "type": "string", - "example": "A great organization", - "nullable": true - }, - "name": { "type": "string", "example": "github" }, - "company": { "type": "string", "example": "GitHub" }, - "blog": { - "type": "string", - "format": "uri", - "example": "https://github.com/blog" - }, - "location": { "type": "string", "example": "San Francisco" }, - "email": { - "type": "string", - "format": "email", - "example": "octocat@github.com" - }, - "twitter_username": { - "type": "string", - "example": "github", - "nullable": true - }, - "is_verified": { "type": "boolean", "example": true }, - "has_organization_projects": { "type": "boolean", "example": true }, - "has_repository_projects": { "type": "boolean", "example": true }, - "public_repos": { "type": "integer", "example": 2 }, - "public_gists": { "type": "integer", "example": 1 }, - "followers": { "type": "integer", "example": 20 }, - "following": { "type": "integer", "example": 0 }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2008-01-14T04:33:35Z" - }, - "type": { "type": "string", "example": "Organization" }, - "total_private_repos": { "type": "integer", "example": 100 }, - "owned_private_repos": { "type": "integer", "example": 100 }, - "private_gists": { - "type": "integer", - "example": 81, - "nullable": true - }, - "disk_usage": { - "type": "integer", - "example": 10000, - "nullable": true - }, - "collaborators": { - "type": "integer", - "example": 8, - "nullable": true - }, - "billing_email": { - "type": "string", - "format": "email", - "example": "org@example.com", - "nullable": true - }, - "plan": { - "type": "object", - "properties": { - "name": { "type": "string" }, - "space": { "type": "integer" }, - "private_repos": { "type": "integer" }, - "filled_seats": { "type": "integer" }, - "seats": { "type": "integer" } - }, - "required": ["name", "space", "private_repos"] - }, - "default_repository_permission": { - "type": "string", - "nullable": true - }, - "members_can_create_repositories": { - "type": "boolean", - "example": true, - "nullable": true - }, - "two_factor_requirement_enabled": { - "type": "boolean", - "example": true, - "nullable": true - }, - "members_allowed_repository_creation_type": { - "type": "string", - "example": "all" - }, - "members_can_create_public_repositories": { - "type": "boolean", - "example": true - }, - "members_can_create_private_repositories": { - "type": "boolean", - "example": true - }, - "members_can_create_internal_repositories": { - "type": "boolean", - "example": true - }, - "members_can_create_pages": { "type": "boolean", "example": true }, - "updated_at": { "type": "string", "format": "date-time" } - }, - "required": [ - "login", - "url", - "id", - "node_id", - "repos_url", - "events_url", - "hooks_url", - "issues_url", - "members_url", - "public_members_url", - "avatar_url", - "description", - "html_url", - "has_organization_projects", - "has_repository_projects", - "public_repos", - "public_gists", - "followers", - "following", - "type", - "created_at", - "updated_at" - ] - }, - "enabled-repositories": { - "type": "string", - "description": "The policy that controls the repositories in the organization that are allowed to run GitHub Actions. Can be one of: `all`, `none`, or `selected`.", - "enum": ["all", "none", "selected"] - }, - "actions-organization-permissions": { - "type": "object", - "properties": { - "enabled_repositories": { - "$ref": "#/components/schemas/enabled-repositories" - }, - "selected_repositories_url": { - "type": "string", - "description": "The API URL to use to get or set the selected repositories that are allowed to run GitHub Actions, when `enabled_repositories` is set to `selected`." - }, - "allowed_actions": { "$ref": "#/components/schemas/allowed-actions" }, - "selected_actions_url": { - "$ref": "#/components/schemas/selected-actions-url" - } - } - }, - "runner-groups-org": { - "type": "object", - "properties": { - "id": { "type": "number" }, - "name": { "type": "string" }, - "visibility": { "type": "string" }, - "default": { "type": "boolean" }, - "selected_repositories_url": { "type": "string" }, - "runners_url": { "type": "string" }, - "inherited": { "type": "boolean" } - } - }, - "organization-actions-secret": { - "title": "Actions Secret for an Organization", - "description": "Secrets for GitHub Actions for an organization.", - "type": "object", - "properties": { - "name": { - "description": "The name of the secret.", - "example": "SECRET_TOKEN", - "type": "string" - }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "visibility": { - "description": "Visibility of a secret", - "enum": ["all", "private", "selected"], - "type": "string" - }, - "selected_repositories_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/organizations/org/secrets/my_secret/repositories" - } - }, - "required": ["name", "created_at", "updated_at", "visibility"] - }, - "actions-public-key": { - "title": "ActionsPublicKey", - "description": "The public key used for setting Actions Secrets.", - "type": "object", - "properties": { - "key_id": { - "description": "The identifier for the key.", - "type": "string", - "example": "1234567" - }, - "key": { - "description": "The Base64 encoded public key.", - "type": "string", - "example": "hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs=" - }, - "id": { "type": "integer", "example": 2 }, - "url": { - "type": "string", - "example": "https://api.github.com/user/keys/2" - }, - "title": { - "type": "string", - "example": "ssh-rsa AAAAB3NzaC1yc2EAAA" - }, - "created_at": { "type": "string", "example": "2011-01-26T19:01:12Z" } - }, - "required": ["key_id", "key"] - }, - "credential-authorization": { - "title": "Credential Authorization", - "description": "Credential Authorization", - "type": "object", - "properties": { - "login": { - "type": "string", - "example": "monalisa", - "description": "User login that owns the underlying credential." - }, - "credential_id": { - "type": "integer", - "example": 1, - "description": "Unique identifier for the credential." - }, - "credential_type": { - "type": "string", - "example": "SSH Key", - "description": "Human-readable description of the credential type." - }, - "token_last_eight": { - "type": "string", - "example": "12345678", - "description": "Last eight characters of the credential. Only included in responses with credential_type of personal access token." - }, - "credential_authorized_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:06:43Z", - "description": "Date when the credential was authorized for use." - }, - "scopes": { - "type": "array", - "example": ["user", "repo"], - "description": "List of oauth scopes the token has been granted.", - "items": { "type": "string" } - }, - "fingerprint": { - "type": "string", - "example": "jklmnop12345678", - "description": "Unique string to distinguish the credential. Only included in responses with credential_type of SSH Key." - }, - "credential_accessed_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:06:43Z", - "description": "Date when the credential was last accessed. May be null if it was never accessed", - "nullable": true - } - }, - "required": [ - "login", - "credential_id", - "credential_type", - "credential_authorized_at" - ] - }, - "org-hook": { - "title": "Org Hook", - "description": "Org Hook", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 1 }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/octocat/hooks/1" - }, - "ping_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/octocat/hooks/1/pings" - }, - "name": { "type": "string", "example": "web" }, - "events": { - "type": "array", - "example": ["push", "pull_request"], - "items": { "type": "string" } - }, - "active": { "type": "boolean", "example": true }, - "config": { - "type": "object", - "properties": { - "url": { - "type": "string", - "example": "\"http://example.com/2\"" - }, - "insecure_ssl": { "type": "string", "example": "\"0\"" }, - "content_type": { "type": "string", "example": "\"form\"" }, - "secret": { "type": "string", "example": "\"********\"" } - } - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-09-06T20:39:23Z" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-09-06T17:26:27Z" - }, - "type": { "type": "string" } - }, - "required": [ - "id", - "url", - "type", - "name", - "active", - "events", - "config", - "ping_url", - "created_at", - "updated_at" - ] - }, - "interaction-group": { - "type": "string", - "description": "The type of GitHub user that can comment, open issues, or create pull requests while the interaction limit is in effect. Can be one of: `existing_users`, `contributors_only`, `collaborators_only`.", - "example": "collaborators_only", - "enum": ["existing_users", "contributors_only", "collaborators_only"] - }, - "interaction-limit-response": { - "title": "Interaction Limits", - "description": "Interaction limit settings.", - "type": "object", - "properties": { - "limit": { "$ref": "#/components/schemas/interaction-group" }, - "origin": { "type": "string", "example": "repository" }, - "expires_at": { - "type": "string", - "format": "date-time", - "example": "2018-08-17T04:18:39Z" - } - }, - "required": ["limit", "origin", "expires_at"] - }, - "interaction-expiry": { - "type": "string", - "description": "The duration of the interaction restriction. Can be one of: `one_day`, `three_days`, `one_week`, `one_month`, `six_months`. Default: `one_day`.", - "example": "one_month", - "enum": ["one_day", "three_days", "one_week", "one_month", "six_months"] - }, - "interaction-limit": { - "title": "Interaction Restrictions", - "description": "Limit interactions to a specific type of user for a specified duration", - "type": "object", - "properties": { - "limit": { "$ref": "#/components/schemas/interaction-group" }, - "expiry": { "$ref": "#/components/schemas/interaction-expiry" } - }, - "required": ["limit"] - }, - "organization-invitation": { - "title": "Organization Invitation", - "description": "Organization Invitation", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "login": { "type": "string", "nullable": true }, - "email": { "type": "string", "nullable": true }, - "role": { "type": "string" }, - "created_at": { "type": "string" }, - "inviter": { "$ref": "#/components/schemas/simple-user" }, - "team_count": { "type": "integer" }, - "invitation_team_url": { "type": "string" }, - "node_id": { - "type": "string", - "example": "\"MDIyOk9yZ2FuaXphdGlvbkludml0YXRpb24x\"" - }, - "invitation_teams_url": { - "type": "string", - "example": "\"https://api.github.com/organizations/16/invitations/1/teams\"" - } - } - }, - "team-simple": { - "title": "Team Simple", - "description": "Groups of organization members that gives permissions on specified repositories.", - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the team", - "type": "integer", - "example": 1 - }, - "node_id": { "type": "string", "example": "MDQ6VGVhbTE=" }, - "url": { - "description": "URL for the team", - "type": "string", - "format": "uri", - "example": "https://api.github.com/organizations/1/team/1" - }, - "members_url": { - "type": "string", - "example": "https://api.github.com/organizations/1/team/1/members{/member}" - }, - "name": { - "description": "Name of the team", - "type": "string", - "example": "Justice League" - }, - "description": { - "description": "Description of the team", - "type": "string", - "nullable": true, - "example": "A great team." - }, - "permission": { - "description": "Permission that the team will have for its repositories", - "type": "string", - "example": "admin" - }, - "privacy": { - "description": "The level of privacy this team should have", - "type": "string", - "example": "closed" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/orgs/rails/teams/core" - }, - "repositories_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/organizations/1/team/1/repos" - }, - "slug": { "type": "string", "example": "justice-league" }, - "ldap_dn": { - "description": "Distinguished Name (DN) that team maps to within LDAP environment", - "example": "uid=example,ou=users,dc=github,dc=com", - "type": "string" - } - }, - "required": [ - "id", - "node_id", - "url", - "members_url", - "name", - "description", - "permission", - "html_url", - "repositories_url", - "slug" - ], - "nullable": true - }, - "team": { - "title": "Team", - "description": "Groups of organization members that gives permissions on specified repositories.", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "name": { "type": "string" }, - "slug": { "type": "string" }, - "description": { "type": "string", "nullable": true }, - "privacy": { "type": "string" }, - "permission": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/orgs/rails/teams/core" - }, - "members_url": { "type": "string" }, - "repositories_url": { "type": "string", "format": "uri" }, - "parent": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/team-simple" }] - } - }, - "required": [ - "id", - "node_id", - "url", - "members_url", - "name", - "description", - "permission", - "html_url", - "repositories_url", - "slug" - ] - }, - "org-membership": { - "title": "Org Membership", - "description": "Org Membership", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/octocat/memberships/defunkt" - }, - "state": { "type": "string", "example": "active" }, - "role": { "type": "string", "example": "admin" }, - "organization_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/octocat" - }, - "organization": { - "$ref": "#/components/schemas/organization-simple" - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "permissions": { - "type": "object", - "properties": { "can_create_repository": { "type": "boolean" } }, - "required": ["can_create_repository"] - } - }, - "required": [ - "state", - "role", - "organization_url", - "url", - "organization", - "user" - ] - }, - "migration": { - "title": "Migration", - "description": "A migration.", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 79 }, - "owner": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "guid": { - "type": "string", - "example": "0b989ba4-242f-11e5-81e1-c7b6966d2516" - }, - "state": { "type": "string", "example": "pending" }, - "lock_repositories": { "type": "boolean", "example": true }, - "exclude_attachments": { "type": "boolean" }, - "repositories": { - "type": "array", - "items": { "$ref": "#/components/schemas/repository" } - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/orgs/octo-org/migrations/79" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2015-07-06T15:33:38-07:00" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2015-07-06T15:33:38-07:00" - }, - "node_id": { "type": "string" }, - "archive_url": { "type": "string", "format": "uri" }, - "exclude": { "type": "array", "items": {} } - }, - "required": [ - "id", - "node_id", - "owner", - "guid", - "state", - "lock_repositories", - "exclude_attachments", - "repositories", - "url", - "created_at", - "updated_at" - ] - }, - "project": { - "title": "Project", - "description": "Projects are a way to organize columns and cards of work.", - "type": "object", - "properties": { - "owner_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/api-playground/projects-test" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/projects/1002604" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/api-playground/projects-test/projects/12" - }, - "columns_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/projects/1002604/columns" - }, - "id": { "type": "integer", "example": 1002604 }, - "node_id": { - "type": "string", - "example": "MDc6UHJvamVjdDEwMDI2MDQ=" - }, - "name": { - "description": "Name of the project", - "example": "Week One Sprint", - "type": "string" - }, - "body": { - "description": "Body of the project", - "example": "This project represents the sprint of the first week in January", - "type": "string", - "nullable": true - }, - "number": { "type": "integer", "example": 1 }, - "state": { - "description": "State of the project; either 'open' or 'closed'", - "example": "open", - "type": "string" - }, - "creator": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-10T20:09:31Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2014-03-03T18:58:10Z" - }, - "organization_permission": { - "description": "The baseline permission that all organization members have on this project", - "type": "string", - "enum": ["read", "write", "admin", "none"] - }, - "private": { - "description": "Whether or not this project can be seen by everyone.", - "type": "boolean" - }, - "cards_url": { "type": "string", "format": "uri" }, - "permissions": { - "type": "object", - "properties": { - "read": { "type": "boolean" }, - "write": { "type": "boolean" }, - "admin": { "type": "boolean" } - }, - "required": ["read", "write", "admin"] - } - }, - "required": [ - "id", - "node_id", - "number", - "name", - "body", - "state", - "url", - "html_url", - "owner_url", - "creator", - "columns_url", - "created_at", - "updated_at" - ] - }, - "group-mapping": { - "title": "GroupMapping", - "description": "External Groups to be mapped to a team for membership", - "type": "object", - "properties": { - "groups": { - "description": "Array of groups to be mapped to this team", - "example": [ - { - "group_id": "111a1a11-aaa1-1aaa-11a1-a1a1a1a1a1aa", - "group_name": "saml-azuread-test", - "group_description": "A group of Developers working on AzureAD SAML SSO" - }, - { - "group_id": "2bb2bb2b-bb22-22bb-2bb2-bb2bbb2bb2b2", - "group_name": "saml-azuread-test2", - "group_description": "Another group of Developers working on AzureAD SAML SSO" - } - ], - "type": "array", - "items": { - "type": "object", - "required": ["group_id", "group_name", "group_description"], - "properties": { - "group_id": { - "description": "The ID of the group", - "example": "111a1a11-aaa1-1aaa-11a1-a1a1a1a1a1aa", - "type": "string" - }, - "group_name": { - "description": "The name of the group", - "example": "saml-azuread-test", - "type": "string" - }, - "group_description": { - "description": "a description of the group", - "example": "A group of Developers working on AzureAD SAML SSO", - "type": "string" - } - } - } - }, - "group_id": { - "description": "The ID of the group", - "example": "111a1a11-aaa1-1aaa-11a1-a1a1a1a1a1aa", - "type": "string" - }, - "group_name": { - "description": "The name of the group", - "example": "saml-azuread-test", - "type": "string" - }, - "group_description": { - "description": "a description of the group", - "example": "A group of Developers working on AzureAD SAML SSO", - "type": "string" - }, - "status": { - "description": "synchronization status for this group mapping", - "example": "unsynced", - "type": "string" - }, - "synced_at": { - "description": "the time of the last sync for this group-mapping", - "example": "2019-06-03 22:27:15:000 -700", - "type": "string" - } - } - }, - "team-full": { - "title": "Full Team", - "description": "Groups of organization members that gives permissions on specified repositories.", - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the team", - "example": 42, - "type": "integer" - }, - "node_id": { "type": "string", "example": "MDQ6VGVhbTE=" }, - "url": { - "description": "URL for the team", - "example": "https://api.github.com/organizations/1/team/1", - "type": "string", - "format": "uri" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/orgs/rails/teams/core" - }, - "name": { - "description": "Name of the team", - "example": "Developers", - "type": "string" - }, - "slug": { "type": "string", "example": "justice-league" }, - "description": { - "type": "string", - "example": "A great team.", - "nullable": true - }, - "privacy": { - "description": "The level of privacy this team should have", - "type": "string", - "enum": ["closed", "secret"], - "example": "closed" - }, - "permission": { - "description": "Permission that the team will have for its repositories", - "example": "push", - "type": "string" - }, - "members_url": { - "type": "string", - "example": "https://api.github.com/organizations/1/team/1/members{/member}" - }, - "repositories_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/organizations/1/team/1/repos" - }, - "parent": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/team-simple" }] - }, - "members_count": { "type": "integer", "example": 3 }, - "repos_count": { "type": "integer", "example": 10 }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2017-07-14T16:53:42Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2017-08-17T12:37:15Z" - }, - "organization": { "$ref": "#/components/schemas/organization-full" }, - "ldap_dn": { - "description": "Distinguished Name (DN) that team maps to within LDAP environment", - "example": "uid=example,ou=users,dc=github,dc=com", - "type": "string" - } - }, - "required": [ - "id", - "node_id", - "url", - "members_url", - "name", - "description", - "permission", - "html_url", - "repositories_url", - "slug", - "created_at", - "updated_at", - "members_count", - "repos_count", - "organization" - ] - }, - "team-discussion": { - "title": "Team Discussion", - "description": "A team discussion is a persistent record of a free-form conversation within a team.", - "type": "object", - "properties": { - "author": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "body": { - "description": "The main text of the discussion.", - "example": "Please suggest improvements to our workflow in comments.", - "type": "string" - }, - "body_html": { - "type": "string", - "example": "

Hi! This is an area for us to collaborate as a team

" - }, - "body_version": { - "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", - "example": "0307116bbf7ced493b8d8a346c650b71", - "type": "string" - }, - "comments_count": { "type": "integer", "example": 0 }, - "comments_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/organizations/1/team/2343027/discussions/1/comments" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2018-01-25T18:56:31Z" - }, - "last_edited_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/orgs/github/teams/justice-league/discussions/1" - }, - "node_id": { - "type": "string", - "example": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==" - }, - "number": { - "description": "The unique sequence number of a team discussion.", - "example": 42, - "type": "integer" - }, - "pinned": { - "description": "Whether or not this discussion should be pinned for easy retrieval.", - "example": true, - "type": "boolean" - }, - "private": { - "description": "Whether or not this discussion should be restricted to team members and organization administrators.", - "example": true, - "type": "boolean" - }, - "team_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/organizations/1/team/2343027" - }, - "title": { - "description": "The title of the discussion.", - "example": "How can we improve our workflow?", - "type": "string" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2018-01-25T18:56:31Z" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/organizations/1/team/2343027/discussions/1" - }, - "reactions": { "$ref": "#/components/schemas/reaction-rollup" } - }, - "required": [ - "author", - "body", - "body_html", - "body_version", - "comments_count", - "comments_url", - "created_at", - "last_edited_at", - "html_url", - "pinned", - "private", - "node_id", - "number", - "team_url", - "title", - "updated_at", - "url" - ] - }, - "team-discussion-comment": { - "title": "Team Discussion Comment", - "description": "A reply to a discussion within a team.", - "type": "object", - "properties": { - "author": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "body": { - "description": "The main text of the comment.", - "example": "I agree with this suggestion.", - "type": "string" - }, - "body_html": { - "type": "string", - "example": "

Do you like apples?

" - }, - "body_version": { - "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", - "example": "0307116bbf7ced493b8d8a346c650b71", - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2018-01-15T23:53:58Z" - }, - "last_edited_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "discussion_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/organizations/1/team/2403582/discussions/1" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1" - }, - "node_id": { - "type": "string", - "example": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=" - }, - "number": { - "description": "The unique sequence number of a team discussion comment.", - "example": 42, - "type": "integer" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2018-01-15T23:53:58Z" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1" - }, - "reactions": { "$ref": "#/components/schemas/reaction-rollup" } - }, - "required": [ - "author", - "body", - "body_html", - "body_version", - "created_at", - "last_edited_at", - "discussion_url", - "html_url", - "node_id", - "number", - "updated_at", - "url" - ] - }, - "reaction": { - "title": "Reaction", - "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 1 }, - "node_id": { "type": "string", "example": "MDg6UmVhY3Rpb24x" }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "content": { - "description": "The reaction to use", - "example": "heart", - "type": "string", - "enum": [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes" - ] - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2016-05-20T20:09:31Z" - } - }, - "required": ["id", "node_id", "user", "content", "created_at"] - }, - "team-membership": { - "title": "Team Membership", - "description": "Team Membership", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "role": { - "description": "The role of the user in the team.", - "enum": ["member", "maintainer"], - "default": "member", - "example": "member", - "type": "string" - }, - "state": { "type": "string" } - }, - "required": ["role", "state", "url"] - }, - "team-project": { - "title": "Team Project", - "description": "A team's access to a project.", - "type": "object", - "properties": { - "owner_url": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "columns_url": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "name": { "type": "string" }, - "body": { "type": "string", "nullable": true }, - "number": { "type": "integer" }, - "state": { "type": "string" }, - "creator": { "$ref": "#/components/schemas/simple-user" }, - "created_at": { "type": "string" }, - "updated_at": { "type": "string" }, - "organization_permission": { "type": "string" }, - "private": { "type": "boolean" }, - "permissions": { - "type": "object", - "properties": { - "read": { "type": "boolean" }, - "write": { "type": "boolean" }, - "admin": { "type": "boolean" } - } - } - } - }, - "team-repository": { - "title": "Team Repository", - "description": "A team's access to a repository.", - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the repository", - "example": 42, - "type": "integer" - }, - "node_id": { - "type": "string", - "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5" - }, - "name": { - "description": "The name of the repository.", - "type": "string", - "example": "Team Environment" - }, - "full_name": { "type": "string", "example": "octocat/Hello-World" }, - "license": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/license-simple" }] - }, - "forks": { "type": "integer" }, - "permissions": { - "type": "object", - "properties": { - "admin": { "type": "boolean" }, - "pull": { "type": "boolean" }, - "triage": { "type": "boolean" }, - "push": { "type": "boolean" }, - "maintain": { "type": "boolean" } - }, - "required": ["admin", "pull", "push"] - }, - "owner": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "private": { - "description": "Whether the repository is private or public.", - "default": false, - "type": "boolean" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World" - }, - "description": { - "type": "string", - "example": "This your first repo!", - "nullable": true - }, - "fork": { "type": "boolean" }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World" - }, - "archive_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}" - }, - "assignees_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}" - }, - "blobs_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}" - }, - "branches_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}" - }, - "collaborators_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}" - }, - "comments_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}" - }, - "commits_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}" - }, - "compare_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}" - }, - "contents_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}" - }, - "contributors_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/contributors" - }, - "deployments_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/deployments" - }, - "downloads_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/downloads" - }, - "events_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/events" - }, - "forks_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/forks" - }, - "git_commits_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}" - }, - "git_refs_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}" - }, - "git_tags_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}" - }, - "git_url": { - "type": "string", - "example": "git:github.com/octocat/Hello-World.git" - }, - "issue_comment_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}" - }, - "issue_events_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}" - }, - "issues_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}" - }, - "keys_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}" - }, - "labels_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}" - }, - "languages_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/languages" - }, - "merges_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/merges" - }, - "milestones_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}" - }, - "notifications_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}" - }, - "pulls_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}" - }, - "releases_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}" - }, - "ssh_url": { - "type": "string", - "example": "git@github.com:octocat/Hello-World.git" - }, - "stargazers_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/stargazers" - }, - "statuses_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}" - }, - "subscribers_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/subscribers" - }, - "subscription_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/subscription" - }, - "tags_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/tags" - }, - "teams_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/teams" - }, - "trees_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}" - }, - "clone_url": { - "type": "string", - "example": "https://github.com/octocat/Hello-World.git" - }, - "mirror_url": { - "type": "string", - "format": "uri", - "example": "git:git.example.com/octocat/Hello-World", - "nullable": true - }, - "hooks_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "svn_url": { - "type": "string", - "format": "uri", - "example": "https://svn.github.com/octocat/Hello-World" - }, - "homepage": { - "type": "string", - "format": "uri", - "example": "https://github.com", - "nullable": true - }, - "language": { "type": "string", "nullable": true }, - "forks_count": { "type": "integer", "example": 9 }, - "stargazers_count": { "type": "integer", "example": 80 }, - "watchers_count": { "type": "integer", "example": 80 }, - "size": { "type": "integer", "example": 108 }, - "default_branch": { - "description": "The default branch of the repository.", - "type": "string", - "example": "master" - }, - "open_issues_count": { "type": "integer", "example": 0 }, - "is_template": { - "description": "Whether this repository acts as a template that can be used to generate new repositories.", - "default": false, - "type": "boolean", - "example": true - }, - "topics": { "type": "array", "items": { "type": "string" } }, - "has_issues": { - "description": "Whether issues are enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "has_projects": { - "description": "Whether projects are enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "has_wiki": { - "description": "Whether the wiki is enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "has_pages": { "type": "boolean" }, - "has_downloads": { - "description": "Whether downloads are enabled.", - "default": true, - "type": "boolean", - "example": true - }, - "archived": { - "description": "Whether the repository is archived.", - "default": false, - "type": "boolean" - }, - "disabled": { - "type": "boolean", - "description": "Returns whether or not this repository disabled." - }, - "visibility": { - "description": "The repository visibility: public, private, or internal.", - "default": "public", - "type": "string" - }, - "pushed_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:06:43Z", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z", - "nullable": true - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:14:43Z", - "nullable": true - }, - "allow_rebase_merge": { - "description": "Whether to allow rebase merges for pull requests.", - "default": true, - "type": "boolean", - "example": true - }, - "template_repository": { - "type": "object", - "nullable": true, - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "name": { "type": "string" }, - "full_name": { "type": "string" }, - "owner": { - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "avatar_url": { "type": "string" }, - "gravatar_id": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "followers_url": { "type": "string" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string" }, - "organizations_url": { "type": "string" }, - "repos_url": { "type": "string" }, - "events_url": { "type": "string" }, - "received_events_url": { "type": "string" }, - "type": { "type": "string" }, - "site_admin": { "type": "boolean" } - } - }, - "private": { "type": "boolean" }, - "html_url": { "type": "string" }, - "description": { "type": "string" }, - "fork": { "type": "boolean" }, - "url": { "type": "string" }, - "archive_url": { "type": "string" }, - "assignees_url": { "type": "string" }, - "blobs_url": { "type": "string" }, - "branches_url": { "type": "string" }, - "collaborators_url": { "type": "string" }, - "comments_url": { "type": "string" }, - "commits_url": { "type": "string" }, - "compare_url": { "type": "string" }, - "contents_url": { "type": "string" }, - "contributors_url": { "type": "string" }, - "deployments_url": { "type": "string" }, - "downloads_url": { "type": "string" }, - "events_url": { "type": "string" }, - "forks_url": { "type": "string" }, - "git_commits_url": { "type": "string" }, - "git_refs_url": { "type": "string" }, - "git_tags_url": { "type": "string" }, - "git_url": { "type": "string" }, - "issue_comment_url": { "type": "string" }, - "issue_events_url": { "type": "string" }, - "issues_url": { "type": "string" }, - "keys_url": { "type": "string" }, - "labels_url": { "type": "string" }, - "languages_url": { "type": "string" }, - "merges_url": { "type": "string" }, - "milestones_url": { "type": "string" }, - "notifications_url": { "type": "string" }, - "pulls_url": { "type": "string" }, - "releases_url": { "type": "string" }, - "ssh_url": { "type": "string" }, - "stargazers_url": { "type": "string" }, - "statuses_url": { "type": "string" }, - "subscribers_url": { "type": "string" }, - "subscription_url": { "type": "string" }, - "tags_url": { "type": "string" }, - "teams_url": { "type": "string" }, - "trees_url": { "type": "string" }, - "clone_url": { "type": "string" }, - "mirror_url": { "type": "string" }, - "hooks_url": { "type": "string" }, - "svn_url": { "type": "string" }, - "homepage": { "type": "string" }, - "language": { "type": "string" }, - "forks_count": { "type": "integer" }, - "stargazers_count": { "type": "integer" }, - "watchers_count": { "type": "integer" }, - "size": { "type": "integer" }, - "default_branch": { "type": "string" }, - "open_issues_count": { "type": "integer" }, - "is_template": { "type": "boolean" }, - "topics": { "type": "array", "items": { "type": "string" } }, - "has_issues": { "type": "boolean" }, - "has_projects": { "type": "boolean" }, - "has_wiki": { "type": "boolean" }, - "has_pages": { "type": "boolean" }, - "has_downloads": { "type": "boolean" }, - "archived": { "type": "boolean" }, - "disabled": { "type": "boolean" }, - "visibility": { "type": "string" }, - "pushed_at": { "type": "string" }, - "created_at": { "type": "string" }, - "updated_at": { "type": "string" }, - "permissions": { - "type": "object", - "properties": { - "admin": { "type": "boolean" }, - "push": { "type": "boolean" }, - "pull": { "type": "boolean" } - } - }, - "allow_rebase_merge": { "type": "boolean" }, - "template_repository": { "type": "string" }, - "temp_clone_token": { "type": "string" }, - "allow_squash_merge": { "type": "boolean" }, - "delete_branch_on_merge": { "type": "boolean" }, - "allow_merge_commit": { "type": "boolean" }, - "subscribers_count": { "type": "integer" }, - "network_count": { "type": "integer" } - } - }, - "temp_clone_token": { "type": "string" }, - "allow_squash_merge": { - "description": "Whether to allow squash merges for pull requests.", - "default": true, - "type": "boolean", - "example": true - }, - "delete_branch_on_merge": { - "description": "Whether to delete head branches when pull requests are merged", - "default": false, - "type": "boolean", - "example": false - }, - "allow_merge_commit": { - "description": "Whether to allow merge commits for pull requests.", - "default": true, - "type": "boolean", - "example": true - }, - "subscribers_count": { "type": "integer" }, - "network_count": { "type": "integer" }, - "open_issues": { "type": "integer" }, - "watchers": { "type": "integer" }, - "master_branch": { "type": "string" } - }, - "required": [ - "archive_url", - "assignees_url", - "blobs_url", - "branches_url", - "collaborators_url", - "comments_url", - "commits_url", - "compare_url", - "contents_url", - "contributors_url", - "deployments_url", - "description", - "downloads_url", - "events_url", - "fork", - "forks_url", - "full_name", - "git_commits_url", - "git_refs_url", - "git_tags_url", - "hooks_url", - "html_url", - "id", - "node_id", - "issue_comment_url", - "issue_events_url", - "issues_url", - "keys_url", - "labels_url", - "languages_url", - "merges_url", - "milestones_url", - "name", - "notifications_url", - "owner", - "private", - "pulls_url", - "releases_url", - "stargazers_url", - "statuses_url", - "subscribers_url", - "subscription_url", - "tags_url", - "teams_url", - "trees_url", - "url", - "clone_url", - "default_branch", - "forks", - "forks_count", - "git_url", - "has_downloads", - "has_issues", - "has_projects", - "has_wiki", - "has_pages", - "homepage", - "language", - "archived", - "disabled", - "mirror_url", - "open_issues", - "open_issues_count", - "license", - "pushed_at", - "size", - "ssh_url", - "stargazers_count", - "svn_url", - "watchers", - "watchers_count", - "created_at", - "updated_at" - ] - }, - "project-card": { - "title": "Project Card", - "description": "Project cards represent a scope of work.", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/projects/columns/cards/1478" - }, - "id": { - "description": "The project card's ID", - "example": 42, - "type": "integer" - }, - "node_id": { - "type": "string", - "example": "MDExOlByb2plY3RDYXJkMTQ3OA==" - }, - "note": { - "type": "string", - "example": "Add payload for delete Project column", - "nullable": true - }, - "creator": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2016-09-05T14:21:06Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2016-09-05T14:20:22Z" - }, - "archived": { - "description": "Whether or not the card is archived", - "example": false, - "type": "boolean" - }, - "column_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/projects/columns/367" - }, - "content_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/api-playground/projects-test/issues/3" - }, - "project_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/projects/120" - } - }, - "required": [ - "id", - "node_id", - "note", - "url", - "column_url", - "project_url", - "creator", - "created_at", - "updated_at" - ] - }, - "project-column": { - "title": "Project Column", - "description": "Project columns contain cards of work.", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/projects/columns/367" - }, - "project_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/projects/120" - }, - "cards_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/projects/columns/367/cards" - }, - "id": { - "description": "The unique identifier of the project column", - "example": 42, - "type": "integer" - }, - "node_id": { - "type": "string", - "example": "MDEzOlByb2plY3RDb2x1bW4zNjc=" - }, - "name": { - "description": "Name of the project column", - "example": "Remaining tasks", - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2016-09-05T14:18:44Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2016-09-05T14:22:28Z" - } - }, - "required": [ - "id", - "node_id", - "url", - "project_url", - "cards_url", - "name", - "created_at", - "updated_at" - ] - }, - "repository-collaborator-permission": { - "title": "Repository Collaborator Permission", - "description": "Repository Collaborator Permission", - "type": "object", - "properties": { - "permission": { "type": "string" }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - } - }, - "required": ["permission", "user"] - }, - "rate-limit": { - "title": "Rate Limit", - "type": "object", - "properties": { - "limit": { "type": "integer" }, - "remaining": { "type": "integer" }, - "reset": { "type": "integer" } - }, - "required": ["limit", "remaining", "reset"] - }, - "rate-limit-overview": { - "title": "Rate Limit Overview", - "description": "Rate Limit Overview", - "type": "object", - "properties": { - "resources": { - "type": "object", - "properties": { - "core": { "$ref": "#/components/schemas/rate-limit" }, - "graphql": { "$ref": "#/components/schemas/rate-limit" }, - "search": { "$ref": "#/components/schemas/rate-limit" }, - "source_import": { "$ref": "#/components/schemas/rate-limit" }, - "integration_manifest": { - "$ref": "#/components/schemas/rate-limit" - }, - "code_scanning_upload": { - "$ref": "#/components/schemas/rate-limit" - } - }, - "required": ["core", "search"] - }, - "rate": { "$ref": "#/components/schemas/rate-limit" } - }, - "required": ["rate", "resources"] - }, - "full-repository": { - "title": "Full Repository", - "description": "Full Repository", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 1296269 }, - "node_id": { - "type": "string", - "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5" - }, - "name": { "type": "string", "example": "Hello-World" }, - "full_name": { "type": "string", "example": "octocat/Hello-World" }, - "owner": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "private": { "type": "boolean" }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World" - }, - "description": { - "type": "string", - "example": "This your first repo!", - "nullable": true - }, - "fork": { "type": "boolean" }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World" - }, - "archive_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}" - }, - "assignees_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}" - }, - "blobs_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}" - }, - "branches_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}" - }, - "collaborators_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}" - }, - "comments_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}" - }, - "commits_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}" - }, - "compare_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}" - }, - "contents_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}" - }, - "contributors_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/contributors" - }, - "deployments_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/deployments" - }, - "downloads_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/downloads" - }, - "events_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/events" - }, - "forks_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/forks" - }, - "git_commits_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}" - }, - "git_refs_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}" - }, - "git_tags_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}" - }, - "git_url": { - "type": "string", - "example": "git:github.com/octocat/Hello-World.git" - }, - "issue_comment_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}" - }, - "issue_events_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}" - }, - "issues_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}" - }, - "keys_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}" - }, - "labels_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}" - }, - "languages_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/languages" - }, - "merges_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/merges" - }, - "milestones_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}" - }, - "notifications_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}" - }, - "pulls_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}" - }, - "releases_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}" - }, - "ssh_url": { - "type": "string", - "example": "git@github.com:octocat/Hello-World.git" - }, - "stargazers_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/stargazers" - }, - "statuses_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}" - }, - "subscribers_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/subscribers" - }, - "subscription_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/subscription" - }, - "tags_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/tags" - }, - "teams_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/teams" - }, - "trees_url": { - "type": "string", - "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}" - }, - "clone_url": { - "type": "string", - "example": "https://github.com/octocat/Hello-World.git" - }, - "mirror_url": { - "type": "string", - "format": "uri", - "example": "git:git.example.com/octocat/Hello-World", - "nullable": true - }, - "hooks_url": { - "type": "string", - "format": "uri", - "example": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "svn_url": { - "type": "string", - "format": "uri", - "example": "https://svn.github.com/octocat/Hello-World" - }, - "homepage": { - "type": "string", - "format": "uri", - "example": "https://github.com", - "nullable": true - }, - "language": { "type": "string", "nullable": true }, - "forks_count": { "type": "integer", "example": 9 }, - "stargazers_count": { "type": "integer", "example": 80 }, - "watchers_count": { "type": "integer", "example": 80 }, - "size": { "type": "integer", "example": 108 }, - "default_branch": { "type": "string", "example": "master" }, - "open_issues_count": { "type": "integer", "example": 0 }, - "is_template": { "type": "boolean", "example": true }, - "topics": { - "type": "array", - "items": { "type": "string" }, - "example": ["octocat", "atom", "electron", "API"] - }, - "has_issues": { "type": "boolean", "example": true }, - "has_projects": { "type": "boolean", "example": true }, - "has_wiki": { "type": "boolean", "example": true }, - "has_pages": { "type": "boolean" }, - "has_downloads": { "type": "boolean", "example": true }, - "archived": { "type": "boolean" }, - "disabled": { - "type": "boolean", - "description": "Returns whether or not this repository disabled." - }, - "visibility": { - "description": "The repository visibility: public, private, or internal.", - "type": "string", - "example": "public" - }, - "pushed_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:06:43Z" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:14:43Z" - }, - "permissions": { - "type": "object", - "properties": { - "admin": { "type": "boolean" }, - "pull": { "type": "boolean" }, - "push": { "type": "boolean" } - }, - "required": ["admin", "pull", "push"] - }, - "allow_rebase_merge": { "type": "boolean", "example": true }, - "template_repository": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/repository" }] - }, - "temp_clone_token": { "type": "string", "nullable": true }, - "allow_squash_merge": { "type": "boolean", "example": true }, - "delete_branch_on_merge": { "type": "boolean", "example": false }, - "allow_merge_commit": { "type": "boolean", "example": true }, - "subscribers_count": { "type": "integer", "example": 42 }, - "network_count": { "type": "integer", "example": 0 }, - "license": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/license-simple" }] - }, - "organization": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "parent": { "$ref": "#/components/schemas/repository" }, - "source": { "$ref": "#/components/schemas/repository" }, - "forks": { "type": "integer" }, - "master_branch": { "type": "string" }, - "open_issues": { "type": "integer" }, - "watchers": { "type": "integer" }, - "anonymous_access_enabled": { - "description": "Whether anonymous git access is allowed.", - "default": true, - "type": "boolean" - } - }, - "required": [ - "archive_url", - "assignees_url", - "blobs_url", - "branches_url", - "collaborators_url", - "comments_url", - "commits_url", - "compare_url", - "contents_url", - "contributors_url", - "deployments_url", - "description", - "downloads_url", - "events_url", - "fork", - "forks_url", - "full_name", - "git_commits_url", - "git_refs_url", - "git_tags_url", - "hooks_url", - "html_url", - "id", - "node_id", - "issue_comment_url", - "issue_events_url", - "issues_url", - "keys_url", - "labels_url", - "languages_url", - "merges_url", - "milestones_url", - "name", - "notifications_url", - "owner", - "private", - "pulls_url", - "releases_url", - "stargazers_url", - "statuses_url", - "subscribers_url", - "subscription_url", - "tags_url", - "teams_url", - "trees_url", - "url", - "clone_url", - "default_branch", - "forks", - "forks_count", - "git_url", - "has_downloads", - "has_issues", - "has_projects", - "has_wiki", - "has_pages", - "homepage", - "language", - "archived", - "disabled", - "mirror_url", - "open_issues", - "open_issues_count", - "license", - "pushed_at", - "size", - "ssh_url", - "stargazers_count", - "svn_url", - "watchers", - "watchers_count", - "created_at", - "updated_at", - "network_count", - "subscribers_count" - ] - }, - "artifact": { - "title": "Artifact", - "description": "An artifact", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 5 }, - "node_id": { "type": "string", "example": "MDEwOkNoZWNrU3VpdGU1" }, - "name": { - "description": "The name of the artifact.", - "type": "string", - "example": "AdventureWorks.Framework" - }, - "size_in_bytes": { - "description": "The size in bytes of the artifact.", - "type": "integer", - "example": 12345 - }, - "url": { - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/artifacts/5" - }, - "archive_download_url": { - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/artifacts/5/zip" - }, - "expired": { - "description": "Whether or not the artifact has expired.", - "type": "boolean" - }, - "created_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "expires_at": { "type": "string", "format": "date-time" }, - "updated_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "node_id", - "name", - "size_in_bytes", - "url", - "archive_download_url", - "expired", - "created_at", - "expires_at", - "updated_at" - ] - }, - "job": { - "title": "Job", - "description": "Information of a job execution in a workflow run", - "type": "object", - "properties": { - "id": { - "description": "The id of the job.", - "example": 21, - "type": "integer" - }, - "run_id": { - "description": "The id of the associated workflow run.", - "example": 5, - "type": "integer" - }, - "run_url": { - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/runs/5" - }, - "node_id": { "type": "string", "example": "MDg6Q2hlY2tSdW40" }, - "head_sha": { - "description": "The SHA of the commit that is being run.", - "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", - "type": "string" - }, - "url": { - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/jobs/21" - }, - "html_url": { - "type": "string", - "example": "https://github.com/github/hello-world/runs/4", - "nullable": true - }, - "status": { - "description": "The phase of the lifecycle that the job is currently in.", - "example": "queued", - "type": "string", - "enum": ["queued", "in_progress", "completed"] - }, - "conclusion": { - "description": "The outcome of the job.", - "example": "success", - "type": "string", - "nullable": true - }, - "started_at": { - "description": "The time that the job started, in ISO 8601 format.", - "example": "2019-08-08T08:00:00-07:00", - "format": "date-time", - "type": "string" - }, - "completed_at": { - "description": "The time that the job finished, in ISO 8601 format.", - "example": "2019-08-08T08:00:00-07:00", - "format": "date-time", - "type": "string", - "nullable": true - }, - "name": { - "description": "The name of the job.", - "example": "test-coverage", - "type": "string" - }, - "steps": { - "description": "Steps in this job.", - "type": "array", - "items": { - "type": "object", - "required": ["name", "status", "conclusion", "number"], - "properties": { - "status": { - "description": "The phase of the lifecycle that the job is currently in.", - "example": "queued", - "type": "string", - "enum": ["queued", "in_progress", "completed"] - }, - "conclusion": { - "description": "The outcome of the job.", - "example": "success", - "type": "string", - "nullable": true - }, - "name": { - "description": "The name of the job.", - "example": "test-coverage", - "type": "string" - }, - "number": { "type": "integer", "example": 1 }, - "started_at": { - "description": "The time that the step started, in ISO 8601 format.", - "example": "2019-08-08T08:00:00-07:00", - "format": "date-time", - "type": "string", - "nullable": true - }, - "completed_at": { - "description": "The time that the job finished, in ISO 8601 format.", - "example": "2019-08-08T08:00:00-07:00", - "format": "date-time", - "type": "string", - "nullable": true - } - } - } - }, - "check_run_url": { - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/check-runs/4" - } - }, - "required": [ - "id", - "node_id", - "run_id", - "run_url", - "head_sha", - "name", - "url", - "html_url", - "status", - "conclusion", - "started_at", - "completed_at", - "check_run_url" - ] - }, - "actions-enabled": { - "type": "boolean", - "description": "Whether GitHub Actions is enabled on the repository." - }, - "actions-repository-permissions": { - "type": "object", - "properties": { - "enabled": { "$ref": "#/components/schemas/actions-enabled" }, - "allowed_actions": { "$ref": "#/components/schemas/allowed-actions" }, - "selected_actions_url": { - "$ref": "#/components/schemas/selected-actions-url" - } - } - }, - "pull-request-minimal": { - "title": "Pull Request Minimal", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "number": { "type": "integer" }, - "url": { "type": "string" }, - "head": { - "type": "object", - "properties": { - "ref": { "type": "string" }, - "sha": { "type": "string" }, - "repo": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "url": { "type": "string" }, - "name": { "type": "string" } - }, - "required": ["id", "url", "name"] - } - }, - "required": ["ref", "sha", "repo"] - }, - "base": { - "type": "object", - "properties": { - "ref": { "type": "string" }, - "sha": { "type": "string" }, - "repo": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "url": { "type": "string" }, - "name": { "type": "string" } - }, - "required": ["id", "url", "name"] - } - }, - "required": ["ref", "sha", "repo"] - } - }, - "required": ["id", "number", "url", "head", "base"] - }, - "simple-commit": { - "title": "Simple Commit", - "description": "Simple Commit", - "type": "object", - "properties": { - "id": { "type": "string" }, - "tree_id": { "type": "string" }, - "message": { "type": "string" }, - "timestamp": { "type": "string", "format": "date-time" }, - "author": { - "type": "object", - "properties": { - "name": { "type": "string" }, - "email": { "type": "string" } - }, - "required": ["name", "email"], - "nullable": true - }, - "committer": { - "type": "object", - "properties": { - "name": { "type": "string" }, - "email": { "type": "string" } - }, - "required": ["name", "email"], - "nullable": true - } - }, - "required": [ - "id", - "tree_id", - "message", - "timestamp", - "author", - "committer" - ] - }, - "workflow-run": { - "title": "Workflow Run", - "description": "An invocation of a workflow", - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "The ID of the workflow run.", - "example": 5 - }, - "name": { - "type": "string", - "description": "The name of the workflow run.", - "example": "Build" - }, - "node_id": { "type": "string", "example": "MDEwOkNoZWNrU3VpdGU1" }, - "head_branch": { - "type": "string", - "nullable": true, - "example": "master" - }, - "head_sha": { - "description": "The SHA of the head commit that points to the version of the worflow being run.", - "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", - "type": "string" - }, - "run_number": { - "type": "integer", - "description": "The auto incrementing run number for the workflow run.", - "example": 106 - }, - "event": { "type": "string", "example": "push" }, - "status": { - "type": "string", - "nullable": true, - "example": "completed" - }, - "conclusion": { - "type": "string", - "nullable": true, - "example": "neutral" - }, - "workflow_id": { - "type": "integer", - "description": "The ID of the parent workflow.", - "example": 5 - }, - "url": { - "type": "string", - "description": "The URL to the workflow run.", - "example": "https://api.github.com/repos/github/hello-world/actions/runs/5" - }, - "html_url": { - "type": "string", - "example": "https://github.com/github/hello-world/suites/4" - }, - "pull_requests": { - "type": "array", - "nullable": true, - "items": { "$ref": "#/components/schemas/pull-request-minimal" } - }, - "created_at": { - "type": "string", - "nullable": true, - "format": "date-time" - }, - "updated_at": { - "type": "string", - "nullable": true, - "format": "date-time" - }, - "jobs_url": { - "description": "The URL to the jobs for the workflow run.", - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/runs/5/jobs" - }, - "logs_url": { - "description": "The URL to download the logs for the workflow run.", - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/runs/5/logs" - }, - "check_suite_url": { - "description": "The URL to the associated check suite.", - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/check-suites/12" - }, - "artifacts_url": { - "description": "The URL to the artifacts for the workflow run.", - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/runs/5/rerun/artifacts" - }, - "cancel_url": { - "description": "The URL to cancel the workflow run.", - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/runs/5/cancel" - }, - "rerun_url": { - "description": "The URL to rerun the workflow run.", - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/runs/5/rerun" - }, - "workflow_url": { - "description": "The URL to the workflow.", - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/actions/workflows/main.yaml" - }, - "head_commit": { "$ref": "#/components/schemas/simple-commit" }, - "repository": { "$ref": "#/components/schemas/minimal-repository" }, - "head_repository": { - "$ref": "#/components/schemas/minimal-repository" - }, - "head_repository_id": { "type": "integer", "example": 5 } - }, - "required": [ - "id", - "node_id", - "head_branch", - "run_number", - "event", - "status", - "conclusion", - "head_sha", - "workflow_id", - "url", - "html_url", - "created_at", - "updated_at", - "head_commit", - "head_repository", - "repository", - "jobs_url", - "logs_url", - "check_suite_url", - "cancel_url", - "rerun_url", - "artifacts_url", - "workflow_url", - "pull_requests" - ] - }, - "workflow-run-usage": { - "title": "Workflow Run Usage", - "description": "Workflow Run Usage", - "type": "object", - "properties": { - "billable": { - "type": "object", - "properties": { - "UBUNTU": { - "type": "object", - "properties": { - "total_ms": { "type": "integer" }, - "jobs": { "type": "integer" } - } - }, - "MACOS": { - "type": "object", - "properties": { - "total_ms": { "type": "integer" }, - "jobs": { "type": "integer" } - } - }, - "WINDOWS": { - "type": "object", - "properties": { - "total_ms": { "type": "integer" }, - "jobs": { "type": "integer" } - } - } - } - }, - "run_duration_ms": { "type": "integer" } - } - }, - "actions-secret": { - "title": "Actions Secret", - "description": "Set secrets for GitHub Actions.", - "type": "object", - "properties": { - "name": { - "description": "The name of the secret.", - "example": "SECRET_TOKEN", - "type": "string" - }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" } - }, - "required": ["name", "created_at", "updated_at"] - }, - "workflow": { - "title": "Workflow", - "description": "A GitHub Actions workflow", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 5 }, - "node_id": { "type": "string", "example": "MDg6V29ya2Zsb3cxMg==" }, - "name": { "type": "string", "example": "CI" }, - "path": { "type": "string", "example": "ruby.yaml" }, - "state": { - "type": "string", - "example": "active", - "enum": ["active", "deleted"] - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2019-12-06T14:20:20.000Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2019-12-06T14:20:20.000Z" - }, - "url": { - "type": "string", - "example": "https://api.github.com/repos/actions/setup-ruby/workflows/5" - }, - "html_url": { - "type": "string", - "example": "https://github.com/actions/setup-ruby/blob/master/.github/workflows/ruby.yaml" - }, - "badge_url": { - "type": "string", - "example": "https://github.com/actions/setup-ruby/workflows/CI/badge.svg" - }, - "deleted_at": { - "type": "string", - "format": "date-time", - "example": "2019-12-06T14:20:20.000Z" - } - }, - "required": [ - "id", - "node_id", - "name", - "path", - "state", - "url", - "html_url", - "badge_url", - "created_at", - "updated_at" - ] - }, - "workflow-usage": { - "title": "Workflow Usage", - "description": "Workflow Usage", - "type": "object", - "properties": { - "billable": { - "type": "object", - "properties": { - "UBUNTU": { - "type": "object", - "properties": { "total_ms": { "type": "integer" } } - }, - "MACOS": { - "type": "object", - "properties": { "total_ms": { "type": "integer" } } - }, - "WINDOWS": { - "type": "object", - "properties": { "total_ms": { "type": "integer" } } - } - } - } - } - }, - "protected-branch-admin-enforced": { - "title": "Protected Branch Admin Enforced", - "description": "Protected Branch Admin Enforced", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins" - }, - "enabled": { "type": "boolean", "example": true } - }, - "required": ["url", "enabled"] - }, - "protected-branch-pull-request-review": { - "title": "Protected Branch Pull Request Review", - "description": "Protected Branch Pull Request Review", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions" - }, - "dismissal_restrictions": { - "type": "object", - "properties": { - "users": { - "description": "The list of users with review dismissal access.", - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "teams": { - "description": "The list of teams with review dismissal access.", - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - }, - "url": { - "type": "string", - "example": "\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions\"" - }, - "users_url": { - "type": "string", - "example": "\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/users\"" - }, - "teams_url": { - "type": "string", - "example": "\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/teams\"" - } - } - }, - "dismiss_stale_reviews": { "type": "boolean", "example": true }, - "require_code_owner_reviews": { "type": "boolean", "example": true }, - "required_approving_review_count": { - "type": "integer", - "minimum": 1, - "maximum": 6, - "example": 2 - } - }, - "required": ["dismiss_stale_reviews", "require_code_owner_reviews"] - }, - "branch-restriction-policy": { - "title": "Branch Restriction Policy", - "description": "Branch Restriction Policy", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "users_url": { "type": "string", "format": "uri" }, - "teams_url": { "type": "string", "format": "uri" }, - "apps_url": { "type": "string", "format": "uri" }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "avatar_url": { "type": "string" }, - "gravatar_id": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "followers_url": { "type": "string" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string" }, - "organizations_url": { "type": "string" }, - "repos_url": { "type": "string" }, - "events_url": { "type": "string" }, - "received_events_url": { "type": "string" }, - "type": { "type": "string" }, - "site_admin": { "type": "boolean" } - } - } - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "name": { "type": "string" }, - "slug": { "type": "string" }, - "description": { "type": "string", "nullable": true }, - "privacy": { "type": "string" }, - "permission": { "type": "string" }, - "members_url": { "type": "string" }, - "repositories_url": { "type": "string" }, - "parent": { "type": "string", "nullable": true } - } - } - }, - "apps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "slug": { "type": "string" }, - "node_id": { "type": "string" }, - "owner": { - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string" }, - "repos_url": { "type": "string" }, - "events_url": { "type": "string" }, - "hooks_url": { "type": "string" }, - "issues_url": { "type": "string" }, - "members_url": { "type": "string" }, - "public_members_url": { "type": "string" }, - "avatar_url": { "type": "string" }, - "description": { "type": "string" }, - "gravatar_id": { "type": "string", "example": "\"\"" }, - "html_url": { - "type": "string", - "example": "\"https://github.com/testorg-ea8ec76d71c3af4b\"" - }, - "followers_url": { - "type": "string", - "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\"" - }, - "following_url": { - "type": "string", - "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\"" - }, - "gists_url": { - "type": "string", - "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\"" - }, - "starred_url": { - "type": "string", - "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\"" - }, - "subscriptions_url": { - "type": "string", - "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\"" - }, - "organizations_url": { - "type": "string", - "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\"" - }, - "received_events_url": { - "type": "string", - "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\"" - }, - "type": { "type": "string", "example": "\"Organization\"" } - } - }, - "name": { "type": "string" }, - "description": { "type": "string" }, - "external_url": { "type": "string" }, - "html_url": { "type": "string" }, - "created_at": { "type": "string" }, - "updated_at": { "type": "string" }, - "permissions": { - "type": "object", - "properties": { - "metadata": { "type": "string" }, - "contents": { "type": "string" }, - "issues": { "type": "string" }, - "single_file": { "type": "string" } - } - }, - "events": { "type": "array", "items": { "type": "string" } } - } - } - } - }, - "required": [ - "url", - "users_url", - "teams_url", - "apps_url", - "users", - "teams", - "apps" - ] - }, - "branch-protection": { - "title": "Branch Protection", - "description": "Branch Protection", - "type": "object", - "properties": { - "url": { "type": "string" }, - "required_status_checks": { - "type": "object", - "properties": { - "url": { "type": "string" }, - "enforcement_level": { "type": "string" }, - "contexts": { "type": "array", "items": { "type": "string" } }, - "contexts_url": { "type": "string" } - }, - "required": ["enforcement_level", "contexts"] - }, - "enforce_admins": { - "$ref": "#/components/schemas/protected-branch-admin-enforced" - }, - "required_pull_request_reviews": { - "$ref": "#/components/schemas/protected-branch-pull-request-review" - }, - "restrictions": { - "$ref": "#/components/schemas/branch-restriction-policy" - }, - "required_linear_history": { - "type": "object", - "properties": { "enabled": { "type": "boolean" } } - }, - "allow_force_pushes": { - "type": "object", - "properties": { "enabled": { "type": "boolean" } } - }, - "allow_deletions": { - "type": "object", - "properties": { "enabled": { "type": "boolean" } } - }, - "enabled": { "type": "boolean" }, - "name": { "type": "string", "example": "\"branch/with/protection\"" }, - "protection_url": { - "type": "string", - "example": "\"https://api.github.com/repos/owner-79e94e2d36b3fd06a32bb213/AAA_Public_Repo/branches/branch/with/protection/protection\"" - } - }, - "required": ["enabled", "required_status_checks"] - }, - "short-branch": { - "title": "Short Branch", - "description": "Short Branch", - "type": "object", - "properties": { - "name": { "type": "string" }, - "commit": { - "type": "object", - "properties": { - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": ["sha", "url"] - }, - "protected": { "type": "boolean" }, - "protection": { "$ref": "#/components/schemas/branch-protection" }, - "protection_url": { "type": "string", "format": "uri" } - }, - "required": ["name", "commit", "protected"] - }, - "git-user": { - "title": "Git User", - "description": "Metaproperties for Git author/committer information.", - "type": "object", - "properties": { - "name": { "type": "string", "example": "\"Chris Wanstrath\"" }, - "email": { "type": "string", "example": "\"chris@ozmm.org\"" }, - "date": { - "type": "string", - "example": "\"2007-10-29T02:42:39.000-07:00\"" - } - } - }, - "verification": { - "title": "Verification", - "type": "object", - "properties": { - "verified": { "type": "boolean" }, - "reason": { "type": "string" }, - "payload": { "type": "string", "nullable": true }, - "signature": { "type": "string", "nullable": true } - }, - "required": ["verified", "reason", "payload", "signature"] - }, - "commit": { - "title": "Commit", - "description": "Commit", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "nullable": true - }, - "sha": { - "type": "string", - "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "nullable": true - }, - "node_id": { - "type": "string", - "example": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "comments_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments" - }, - "commit": { - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "author": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/git-user" }] - }, - "committer": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/git-user" }] - }, - "message": { "type": "string", "example": "Fix all the bugs" }, - "comment_count": { "type": "integer", "example": 0 }, - "tree": { - "type": "object", - "properties": { - "sha": { - "type": "string", - "example": "827efc6d56897b048c772eb4087f854f46256132" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/tree/827efc6d56897b048c772eb4087f854f46256132" - } - }, - "required": ["sha", "url"] - }, - "verification": { "$ref": "#/components/schemas/verification" } - }, - "required": [ - "author", - "committer", - "comment_count", - "message", - "tree", - "url" - ] - }, - "author": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "committer": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "parents": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sha": { - "type": "string", - "example": "7638417db6d59f3c431d3e1f261cc637155684cd" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd" - } - }, - "required": ["sha", "url"] - } - }, - "stats": { - "type": "object", - "properties": { - "additions": { "type": "integer" }, - "deletions": { "type": "integer" }, - "total": { "type": "integer" } - } - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "filename": { "type": "string" }, - "additions": { "type": "integer" }, - "deletions": { "type": "integer" }, - "changes": { "type": "integer" }, - "status": { "type": "string" }, - "raw_url": { "type": "string" }, - "blob_url": { "type": "string" }, - "patch": { "type": "string" }, - "sha": { - "type": "string", - "example": "\"1e8e60ce9733d5283f7836fa602b6365a66b2567\"" - }, - "contents_url": { - "type": "string", - "example": "\"https://api.github.com/repos/owner-3d68404b07d25daeb2d4a6bf/AAA_Public_Repo/contents/geometry.js?ref=c3956841a7cb7e8ba4a6fd923568d86958f01573\"" - }, - "previous_filename": { - "type": "string", - "example": "\"subdir/before_name.txt\"" - } - } - } - } - }, - "required": [ - "url", - "sha", - "node_id", - "html_url", - "comments_url", - "commit", - "author", - "committer", - "parents" - ] - }, - "branch-with-protection": { - "title": "Branch With Protection", - "description": "Branch With Protection", - "type": "object", - "properties": { - "name": { "type": "string" }, - "commit": { "$ref": "#/components/schemas/commit" }, - "_links": { - "type": "object", - "properties": { - "html": { "type": "string" }, - "self": { "type": "string", "format": "uri" } - }, - "required": ["html", "self"] - }, - "protected": { "type": "boolean" }, - "protection": { "$ref": "#/components/schemas/branch-protection" }, - "protection_url": { "type": "string", "format": "uri" }, - "pattern": { "type": "string", "example": "\"mas*\"" }, - "required_approving_review_count": { - "type": "integer", - "example": "0" - } - }, - "required": [ - "name", - "commit", - "_links", - "protection", - "protected", - "protection_url" - ] - }, - "status-check-policy": { - "title": "Status Check Policy", - "description": "Status Check Policy", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks" - }, - "strict": { "type": "boolean", "example": true }, - "contexts": { - "type": "array", - "example": ["continuous-integration/travis-ci"], - "items": { "type": "string" } - }, - "contexts_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts" - } - }, - "required": ["url", "contexts_url", "strict", "contexts"] - }, - "protected-branch": { - "title": "Protected Branch", - "description": "Branch protections protect branches", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "required_status_checks": { - "$ref": "#/components/schemas/status-check-policy" - }, - "required_pull_request_reviews": { - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "dismiss_stale_reviews": { "type": "boolean" }, - "require_code_owner_reviews": { "type": "boolean" }, - "required_approving_review_count": { "type": "integer" }, - "dismissal_restrictions": { - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "users_url": { "type": "string", "format": "uri" }, - "teams_url": { "type": "string", "format": "uri" }, - "users": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" } - }, - "teams": { - "type": "array", - "items": { "$ref": "#/components/schemas/team" } - } - }, - "required": ["url", "users_url", "teams_url", "users", "teams"] - } - }, - "required": ["url"] - }, - "required_signatures": { - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures" - }, - "enabled": { "type": "boolean", "example": true } - }, - "required": ["url", "enabled"] - }, - "enforce_admins": { - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "enabled": { "type": "boolean" } - }, - "additionalProperties": false, - "required": ["url", "enabled"] - }, - "required_linear_history": { - "type": "object", - "properties": { "enabled": { "type": "boolean" } }, - "additionalProperties": false, - "required": ["enabled"] - }, - "allow_force_pushes": { - "type": "object", - "properties": { "enabled": { "type": "boolean" } }, - "additionalProperties": false, - "required": ["enabled"] - }, - "allow_deletions": { - "type": "object", - "properties": { "enabled": { "type": "boolean" } }, - "additionalProperties": false, - "required": ["enabled"] - }, - "restrictions": { - "$ref": "#/components/schemas/branch-restriction-policy" - } - }, - "required": ["url"] - }, - "check-run": { - "title": "CheckRun", - "description": "A check performed on the code of a given code change", - "type": "object", - "properties": { - "id": { - "description": "The id of the check.", - "example": 21, - "type": "integer" - }, - "head_sha": { - "description": "The SHA of the commit that is being checked.", - "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", - "type": "string" - }, - "node_id": { "type": "string", "example": "MDg6Q2hlY2tSdW40" }, - "external_id": { "type": "string", "example": "", "nullable": true }, - "url": { - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/check-runs/4" - }, - "html_url": { - "type": "string", - "example": "https://github.com/github/hello-world/runs/4", - "nullable": true - }, - "details_url": { - "type": "string", - "example": "https://example.com", - "nullable": true - }, - "status": { - "description": "The phase of the lifecycle that the check is currently in.", - "example": "queued", - "type": "string", - "enum": ["queued", "in_progress", "completed"] - }, - "conclusion": { - "type": "string", - "example": "neutral", - "nullable": true - }, - "started_at": { - "type": "string", - "format": "date-time", - "example": "2018-05-04T01:14:52Z", - "nullable": true - }, - "completed_at": { - "type": "string", - "format": "date-time", - "example": "2018-05-04T01:14:52Z", - "nullable": true - }, - "output": { - "type": "object", - "properties": { - "title": { "type": "string", "nullable": true }, - "summary": { "type": "string", "nullable": true }, - "text": { "type": "string", "nullable": true }, - "annotations_count": { "type": "integer" }, - "annotations_url": { "type": "string", "format": "uri" } - }, - "required": [ - "title", - "summary", - "text", - "annotations_count", - "annotations_url" - ] - }, - "name": { - "description": "The name of the check.", - "example": "test-coverage", - "type": "string" - }, - "check_suite": { - "type": "object", - "properties": { "id": { "type": "integer" } }, - "required": ["id"], - "nullable": true - }, - "app": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/integration" }] - }, - "pull_requests": { - "items": { "$ref": "#/components/schemas/pull-request-minimal" } - } - }, - "required": [ - "id", - "node_id", - "head_sha", - "name", - "url", - "html_url", - "details_url", - "status", - "conclusion", - "started_at", - "completed_at", - "external_id", - "check_suite", - "output", - "app", - "pull_requests" - ] - }, - "check-annotation": { - "title": "Check Annotation", - "description": "Check Annotation", - "type": "object", - "properties": { - "path": { "type": "string", "example": "README.md" }, - "start_line": { "type": "integer", "example": 2 }, - "end_line": { "type": "integer", "example": 2 }, - "start_column": { "type": "integer", "example": 5, "nullable": true }, - "end_column": { "type": "integer", "example": 10, "nullable": true }, - "annotation_level": { - "type": "string", - "example": "warning", - "nullable": true - }, - "title": { - "type": "string", - "example": "Spell Checker", - "nullable": true - }, - "message": { - "type": "string", - "example": "Check your spelling for 'banaas'.", - "nullable": true - }, - "raw_details": { - "type": "string", - "example": "Do you mean 'bananas' or 'banana'?", - "nullable": true - }, - "blob_href": { "type": "string" } - }, - "required": [ - "path", - "blob_href", - "start_line", - "end_line", - "start_column", - "end_column", - "annotation_level", - "title", - "message", - "raw_details" - ] - }, - "check-suite": { - "title": "CheckSuite", - "description": "A suite of checks performed on the code of a given code change", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 5 }, - "node_id": { "type": "string", "example": "MDEwOkNoZWNrU3VpdGU1" }, - "head_branch": { - "type": "string", - "example": "master", - "nullable": true - }, - "head_sha": { - "description": "The SHA of the head commit that is being checked.", - "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", - "type": "string" - }, - "status": { - "type": "string", - "example": "completed", - "nullable": true - }, - "conclusion": { - "type": "string", - "example": "neutral", - "nullable": true - }, - "url": { - "type": "string", - "example": "https://api.github.com/repos/github/hello-world/check-suites/5", - "nullable": true - }, - "before": { - "type": "string", - "example": "146e867f55c26428e5f9fade55a9bbf5e95a7912", - "nullable": true - }, - "after": { - "type": "string", - "example": "d6fde92930d4715a2b49857d24b940956b26d2d3", - "nullable": true - }, - "pull_requests": { - "type": "array", - "items": { "$ref": "#/components/schemas/pull-request-minimal" }, - "nullable": true - }, - "app": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/integration" }] - }, - "repository": { "$ref": "#/components/schemas/minimal-repository" }, - "created_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "updated_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "head_commit": { "$ref": "#/components/schemas/simple-commit" }, - "latest_check_runs_count": { "type": "integer" }, - "check_runs_url": { "type": "string" } - }, - "required": [ - "id", - "node_id", - "head_branch", - "status", - "conclusion", - "head_sha", - "url", - "before", - "after", - "created_at", - "updated_at", - "app", - "head_commit", - "repository", - "latest_check_runs_count", - "check_runs_url", - "pull_requests" - ] - }, - "check-suite-preference": { - "title": "Check Suite Preference", - "description": "Check suite configuration preferences for a repository.", - "type": "object", - "properties": { - "preferences": { - "type": "object", - "properties": { - "auto_trigger_checks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "app_id": { "type": "integer" }, - "setting": { "type": "boolean" } - }, - "required": ["app_id", "setting"] - } - } - } - }, - "repository": { "$ref": "#/components/schemas/repository" } - } - }, - "code-scanning-alert-state": { - "type": "string", - "description": "State of a code scanning alert.", - "enum": ["open", "dismissed", "fixed"] - }, - "code-scanning-alert-ref": { - "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." - }, - "alert-number": { - "type": "integer", - "description": "The security alert number.", - "readOnly": true, - "nullable": false - }, - "alert-created-at": { - "type": "string", - "description": "The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.", - "format": "date-time", - "readOnly": true, - "nullable": false - }, - "alert-url": { - "type": "string", - "description": "The REST API URL of the alert resource.", - "format": "uri", - "readOnly": true, - "nullable": false - }, - "alert-html-url": { - "type": "string", - "description": "The GitHub URL of the alert resource.", - "format": "uri", - "readOnly": true, - "nullable": false - }, - "code-scanning-alert-dismissed-at": { - "type": "string", - "description": "The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.", - "format": "date-time", - "readOnly": true, - "nullable": true - }, - "code-scanning-alert-dismissed-reason": { - "type": "string", - "description": "**Required when the state is dismissed.** The reason for dismissing or closing the alert. Can be one of: `false positive`, `won't fix`, and `used in tests`.", - "nullable": true, - "oneOf": [ - { "enum": ["false positive", "won't fix", "used in tests"] }, - { "enum": [null] } - ] - }, - "code-scanning-alert-rule": { - "type": "object", - "properties": { - "id": { - "nullable": true, - "type": "string", - "description": "A unique identifier for the rule used to detect the alert." - }, - "severity": { - "nullable": true, - "type": "string", - "description": "The severity of the alert.", - "enum": ["none", "note", "warning", "error"] - }, - "description": { - "type": "string", - "description": "A short description of the rule used to detect the alert." - } - } - }, - "code-scanning-analysis-tool-name": { - "type": "string", - "description": "The name of the tool used to generate the code scanning analysis alert." - }, - "code-scanning-analysis-tool": { - "type": "object", - "properties": { - "name": { - "$ref": "#/components/schemas/code-scanning-analysis-tool-name" - }, - "version": { - "nullable": true, - "type": "string", - "description": "The version of the tool used to detect the alert." - } - } - }, - "code-scanning-alert-code-scanning-alert-items": { - "type": "object", - "properties": { - "number": { "$ref": "#/components/schemas/alert-number" }, - "created_at": { "$ref": "#/components/schemas/alert-created-at" }, - "url": { "$ref": "#/components/schemas/alert-url" }, - "html_url": { "$ref": "#/components/schemas/alert-html-url" }, - "state": { "$ref": "#/components/schemas/code-scanning-alert-state" }, - "dismissed_by": { "$ref": "#/components/schemas/simple-user" }, - "dismissed_at": { - "$ref": "#/components/schemas/code-scanning-alert-dismissed-at" - }, - "dismissed_reason": { - "$ref": "#/components/schemas/code-scanning-alert-dismissed-reason" - }, - "rule": { "$ref": "#/components/schemas/code-scanning-alert-rule" }, - "tool": { "$ref": "#/components/schemas/code-scanning-analysis-tool" } - } - }, - "code-scanning-analysis-analysis-key": { - "type": "string", - "description": "Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name." - }, - "code-scanning-alert-environment": { - "type": "string", - "description": "Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed." - }, - "code-scanning-alert-instances": { - "nullable": true, - "type": "array", - "items": { - "properties": { - "ref": { "$ref": "#/components/schemas/code-scanning-alert-ref" }, - "analysis_key": { - "$ref": "#/components/schemas/code-scanning-analysis-analysis-key" - }, - "environment": { - "$ref": "#/components/schemas/code-scanning-alert-environment" - }, - "matrix_vars": { "nullable": true, "type": "string" }, - "state": { - "$ref": "#/components/schemas/code-scanning-alert-state" - } - } - } - }, - "code-scanning-alert-code-scanning-alert": { - "type": "object", - "properties": { - "number": { "$ref": "#/components/schemas/alert-number" }, - "created_at": { "$ref": "#/components/schemas/alert-created-at" }, - "url": { "$ref": "#/components/schemas/alert-url" }, - "html_url": { "$ref": "#/components/schemas/alert-html-url" }, - "instances": { - "$ref": "#/components/schemas/code-scanning-alert-instances" - }, - "state": { "$ref": "#/components/schemas/code-scanning-alert-state" }, - "dismissed_by": { "$ref": "#/components/schemas/simple-user" }, - "dismissed_at": { - "$ref": "#/components/schemas/code-scanning-alert-dismissed-at" - }, - "dismissed_reason": { - "$ref": "#/components/schemas/code-scanning-alert-dismissed-reason" - }, - "rule": { "$ref": "#/components/schemas/code-scanning-alert-rule" }, - "tool": { "$ref": "#/components/schemas/code-scanning-analysis-tool" } - } - }, - "code-scanning-alert-set-state": { - "description": "Sets the state of the code scanning alert. Can be one of `open` or `dismissed`. You must provide `dismissed_reason` when you set the state to `dismissed`.", - "type": "string", - "enum": ["open", "dismissed"] - }, - "code-scanning-analysis-ref": { - "type": "string", - "description": "The full Git reference of the code scanning analysis file, formatted as `refs/heads/`." - }, - "code-scanning-analysis-commit-sha": { - "description": "The commit SHA of the code scanning analysis file.", - "type": "string", - "minLength": 40, - "maxLength": 40, - "pattern": "^[0-9a-fA-F]+$" - }, - "code-scanning-analysis-created-at": { - "type": "string", - "description": "The time that the analysis was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.", - "format": "date-time", - "readOnly": true, - "nullable": false - }, - "code-scanning-analysis-environment": { - "type": "string", - "description": "Identifies the variable values associated with the environment in which this analysis was performed." - }, - "code-scanning-analysis-code-scanning-analysis": { - "type": "object", - "properties": { - "commit_sha": { - "$ref": "#/components/schemas/code-scanning-analysis-commit-sha" - }, - "ref": { "$ref": "#/components/schemas/code-scanning-analysis-ref" }, - "analysis_key": { - "$ref": "#/components/schemas/code-scanning-analysis-analysis-key" - }, - "created_at": { - "$ref": "#/components/schemas/code-scanning-analysis-created-at" - }, - "tool_name": { - "$ref": "#/components/schemas/code-scanning-analysis-tool-name" - }, - "error": { "type": "string", "example": "error reading field xyz" }, - "environment": { - "$ref": "#/components/schemas/code-scanning-analysis-environment" - } - } - }, - "code-scanning-analysis-sarif-file": { - "description": "A Base64 string representing the SARIF file to upload. You must first compress your SARIF file using [`gzip`](http://www.gnu.org/software/gzip/manual/gzip.html) and then translate the contents of the file into a Base64 encoding string.", - "type": "string" - }, - "collaborator": { - "title": "Collaborator", - "description": "Collaborator", - "type": "object", - "properties": { - "login": { "type": "string", "example": "octocat" }, - "id": { "type": "integer", "example": 1 }, - "node_id": { "type": "string", "example": "MDQ6VXNlcjE=" }, - "avatar_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/images/error/octocat_happy.gif" - }, - "gravatar_id": { "type": "string", "example": "", "nullable": true }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat" - }, - "followers_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/followers" - }, - "following_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/following{/other_user}" - }, - "gists_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/gists{/gist_id}" - }, - "starred_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/starred{/owner}{/repo}" - }, - "subscriptions_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/subscriptions" - }, - "organizations_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/orgs" - }, - "repos_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/repos" - }, - "events_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/events{/privacy}" - }, - "received_events_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/received_events" - }, - "type": { "type": "string", "example": "User" }, - "site_admin": { "type": "boolean" }, - "permissions": { - "type": "object", - "properties": { - "pull": { "type": "boolean" }, - "push": { "type": "boolean" }, - "admin": { "type": "boolean" } - }, - "required": ["pull", "push", "admin"] - } - }, - "required": [ - "avatar_url", - "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", - "html_url", - "id", - "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", - "url" - ] - }, - "repository-invitation": { - "title": "Repository Invitation", - "description": "Repository invitations let you manage who you collaborate with.", - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the repository invitation.", - "example": 42, - "type": "integer" - }, - "repository": { "$ref": "#/components/schemas/minimal-repository" }, - "invitee": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "inviter": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "permissions": { - "description": "The permission associated with the invitation.", - "example": "read", - "type": "string", - "enum": ["read", "write", "admin"] - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2016-06-13T14:52:50-05:00" - }, - "url": { - "description": "URL for the repository invitation", - "example": "https://api.github.com/user/repository-invitations/1", - "type": "string" - }, - "html_url": { - "type": "string", - "example": "https://github.com/octocat/Hello-World/invitations" - }, - "node_id": { "type": "string" } - }, - "required": [ - "id", - "node_id", - "permissions", - "inviter", - "invitee", - "repository", - "url", - "html_url", - "created_at" - ] - }, - "commit-comment": { - "title": "Commit Comment", - "description": "Commit Comment", - "type": "object", - "properties": { - "html_url": { "type": "string", "format": "uri" }, - "url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "body": { "type": "string" }, - "path": { "type": "string", "nullable": true }, - "position": { "type": "integer", "nullable": true }, - "line": { "type": "integer", "nullable": true }, - "commit_id": { "type": "string" }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "author_association": { "type": "string" }, - "reactions": { "$ref": "#/components/schemas/reaction-rollup" } - }, - "required": [ - "url", - "html_url", - "id", - "node_id", - "user", - "position", - "line", - "path", - "commit_id", - "body", - "author_association", - "created_at", - "updated_at" - ] - }, - "scim-error": { - "title": "Scim Error", - "description": "Scim Error", - "type": "object", - "properties": { - "message": { "type": "string", "nullable": true }, - "documentation_url": { "type": "string", "nullable": true }, - "detail": { "type": "string", "nullable": true }, - "status": { "type": "integer" }, - "scimType": { "type": "string", "nullable": true }, - "schemas": { "type": "array", "items": { "type": "string" } } - } - }, - "branch-short": { - "title": "Branch Short", - "description": "Branch Short", - "type": "object", - "properties": { - "name": { "type": "string" }, - "commit": { - "type": "object", - "properties": { - "sha": { "type": "string" }, - "url": { "type": "string" } - } - }, - "protected": { "type": "boolean" } - } - }, - "link": { - "title": "Link", - "description": "Hypermedia Link", - "type": "object", - "properties": { "href": { "type": "string" } }, - "required": ["href"] - }, - "pull-request-simple": { - "title": "Pull Request Simple", - "description": "Pull Request Simple", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347" - }, - "id": { "type": "integer", "example": 1 }, - "node_id": { - "type": "string", - "example": "MDExOlB1bGxSZXF1ZXN0MQ==" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/1347" - }, - "diff_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/1347.diff" - }, - "patch_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/1347.patch" - }, - "issue_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347" - }, - "commits_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits" - }, - "review_comments_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments" - }, - "review_comment_url": { - "type": "string", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}" - }, - "comments_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments" - }, - "statuses_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "number": { "type": "integer", "example": 1347 }, - "state": { "type": "string", "example": "open" }, - "locked": { "type": "boolean", "example": true }, - "title": { "type": "string", "example": "new-feature" }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "body": { - "type": "string", - "example": "Please pull these awesome changes", - "nullable": true - }, - "labels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string" }, - "name": { "type": "string" }, - "description": { "type": "string" }, - "color": { "type": "string" }, - "default": { "type": "boolean" } - } - } - }, - "milestone": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/milestone" }] - }, - "active_lock_reason": { - "type": "string", - "example": "too heated", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z" - }, - "closed_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z", - "nullable": true - }, - "merged_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z", - "nullable": true - }, - "merge_commit_sha": { - "type": "string", - "example": "e5bd3914e2e596debea16f433f57875b5b90bcd6", - "nullable": true - }, - "assignee": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "assignees": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" }, - "nullable": true - }, - "requested_reviewers": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" }, - "nullable": true - }, - "requested_teams": { - "type": "array", - "items": { "$ref": "#/components/schemas/team-simple" }, - "nullable": true - }, - "head": { - "type": "object", - "properties": { - "label": { "type": "string" }, - "ref": { "type": "string" }, - "repo": { "$ref": "#/components/schemas/repository" }, - "sha": { "type": "string" }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - } - }, - "required": ["label", "ref", "repo", "sha", "user"] - }, - "base": { - "type": "object", - "properties": { - "label": { "type": "string" }, - "ref": { "type": "string" }, - "repo": { "$ref": "#/components/schemas/repository" }, - "sha": { "type": "string" }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - } - }, - "required": ["label", "ref", "repo", "sha", "user"] - }, - "_links": { - "type": "object", - "properties": { - "comments": { "$ref": "#/components/schemas/link" }, - "commits": { "$ref": "#/components/schemas/link" }, - "statuses": { "$ref": "#/components/schemas/link" }, - "html": { "$ref": "#/components/schemas/link" }, - "issue": { "$ref": "#/components/schemas/link" }, - "review_comments": { "$ref": "#/components/schemas/link" }, - "review_comment": { "$ref": "#/components/schemas/link" }, - "self": { "$ref": "#/components/schemas/link" } - }, - "required": [ - "comments", - "commits", - "statuses", - "html", - "issue", - "review_comments", - "review_comment", - "self" - ] - }, - "author_association": { "type": "string", "example": "OWNER" }, - "draft": { - "description": "Indicates whether or not the pull request is a draft.", - "example": false, - "type": "boolean" - } - }, - "required": [ - "_links", - "assignee", - "labels", - "base", - "body", - "closed_at", - "comments_url", - "commits_url", - "created_at", - "diff_url", - "head", - "html_url", - "id", - "node_id", - "issue_url", - "merge_commit_sha", - "merged_at", - "milestone", - "number", - "patch_url", - "review_comment_url", - "review_comments_url", - "statuses_url", - "state", - "locked", - "title", - "updated_at", - "url", - "user", - "author_association" - ] - }, - "simple-commit-status": { - "title": "Simple Commit Status", - "type": "object", - "properties": { - "description": { "type": "string", "nullable": true }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "state": { "type": "string" }, - "context": { "type": "string" }, - "target_url": { "type": "string", "format": "uri" }, - "required": { "type": "boolean", "nullable": true }, - "avatar_url": { "type": "string", "nullable": true, "format": "uri" }, - "url": { "type": "string", "format": "uri" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" } - }, - "required": [ - "description", - "id", - "node_id", - "state", - "context", - "target_url", - "avatar_url", - "url", - "created_at", - "updated_at" - ] - }, - "combined-commit-status": { - "title": "Combined Commit Status", - "description": "Combined Commit Status", - "type": "object", - "properties": { - "state": { "type": "string" }, - "statuses": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-commit-status" } - }, - "sha": { "type": "string" }, - "total_count": { "type": "integer" }, - "repository": { "$ref": "#/components/schemas/minimal-repository" }, - "commit_url": { "type": "string", "format": "uri" }, - "url": { "type": "string", "format": "uri" } - }, - "required": [ - "state", - "sha", - "total_count", - "statuses", - "repository", - "commit_url", - "url" - ] - }, - "status": { - "title": "Status", - "description": "The status of a commit.", - "type": "object", - "properties": { - "url": { "type": "string" }, - "avatar_url": { "type": "string", "nullable": true }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "state": { "type": "string" }, - "description": { "type": "string" }, - "target_url": { "type": "string" }, - "context": { "type": "string" }, - "created_at": { "type": "string" }, - "updated_at": { "type": "string" }, - "creator": { "$ref": "#/components/schemas/simple-user" } - } - }, - "code-of-conduct-simple": { - "title": "Code Of Conduct Simple", - "description": "Code of Conduct Simple", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/codes_of_conduct/citizen_code_of_conduct" - }, - "key": { "type": "string", "example": "citizen_code_of_conduct" }, - "name": { "type": "string", "example": "Citizen Code of Conduct" }, - "html_url": { "type": "string", "nullable": true, "format": "uri" } - }, - "required": ["url", "key", "name", "html_url"] - }, - "community-health-file": { - "title": "Community Health File", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" } - }, - "required": ["url", "html_url"] - }, - "community-profile": { - "title": "Community Profile", - "description": "Community Profile", - "type": "object", - "properties": { - "health_percentage": { "type": "integer", "example": 100 }, - "description": { - "type": "string", - "example": "My first repository on GitHub!", - "nullable": true - }, - "documentation": { - "type": "string", - "example": "example.com", - "nullable": true - }, - "files": { - "type": "object", - "properties": { - "code_of_conduct": { - "nullable": true, - "allOf": [ - { "$ref": "#/components/schemas/code-of-conduct-simple" } - ] - }, - "license": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/license-simple" }] - }, - "contributing": { - "nullable": true, - "allOf": [ - { "$ref": "#/components/schemas/community-health-file" } - ] - }, - "readme": { - "nullable": true, - "allOf": [ - { "$ref": "#/components/schemas/community-health-file" } - ] - }, - "issue_template": { - "nullable": true, - "allOf": [ - { "$ref": "#/components/schemas/community-health-file" } - ] - }, - "pull_request_template": { - "nullable": true, - "allOf": [ - { "$ref": "#/components/schemas/community-health-file" } - ] - } - }, - "required": [ - "code_of_conduct", - "license", - "contributing", - "readme", - "issue_template", - "pull_request_template" - ] - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2017-02-28T19:09:29Z", - "nullable": true - }, - "content_reports_enabled": { "type": "boolean", "example": true } - }, - "required": [ - "health_percentage", - "description", - "documentation", - "files", - "updated_at" - ] - }, - "diff-entry": { - "title": "Diff Entry", - "description": "Diff Entry", - "type": "object", - "properties": { - "sha": { - "type": "string", - "example": "bbcd538c8e72b8c175046e27cc8f907076331401" - }, - "filename": { "type": "string", "example": "file1.txt" }, - "status": { "type": "string", "example": "added" }, - "additions": { "type": "integer", "example": 103 }, - "deletions": { "type": "integer", "example": 21 }, - "changes": { "type": "integer", "example": 124 }, - "blob_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt" - }, - "raw_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt" - }, - "contents_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/contents/file1.txt?ref=6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "patch": { - "type": "string", - "example": "@@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test" - }, - "previous_filename": { "type": "string", "example": "file.txt" } - }, - "required": [ - "additions", - "blob_url", - "changes", - "contents_url", - "deletions", - "filename", - "raw_url", - "sha", - "status" - ] - }, - "commit-comparison": { - "title": "Commit Comparison", - "description": "Commit Comparison", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/compare/master...topic" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/compare/master...topic" - }, - "permalink_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/compare/octocat:bbcd538c8e72b8c175046e27cc8f907076331401...octocat:0328041d1152db8ae77652d1618a02e57f745f17" - }, - "diff_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/compare/master...topic.diff" - }, - "patch_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/compare/master...topic.patch" - }, - "base_commit": { "$ref": "#/components/schemas/commit" }, - "merge_base_commit": { "$ref": "#/components/schemas/commit" }, - "status": { - "type": "string", - "enum": ["diverged", "ahead", "behind", "identical"], - "example": "ahead" - }, - "ahead_by": { "type": "integer", "example": 4 }, - "behind_by": { "type": "integer", "example": 5 }, - "total_commits": { "type": "integer", "example": 6 }, - "commits": { - "type": "array", - "items": { "$ref": "#/components/schemas/commit" } - }, - "files": { - "type": "array", - "items": { "$ref": "#/components/schemas/diff-entry" } - } - }, - "required": [ - "url", - "html_url", - "permalink_url", - "diff_url", - "patch_url", - "base_commit", - "merge_base_commit", - "status", - "ahead_by", - "behind_by", - "total_commits", - "commits", - "files" - ] - }, - "content-tree": { - "title": "Content Tree", - "description": "Content Tree", - "type": "object", - "properties": { - "type": { "type": "string" }, - "size": { "type": "integer" }, - "name": { "type": "string" }, - "path": { "type": "string" }, - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "git_url": { "type": "string", "format": "uri", "nullable": true }, - "html_url": { "type": "string", "format": "uri", "nullable": true }, - "download_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { "type": "string" }, - "size": { "type": "integer" }, - "name": { "type": "string" }, - "path": { "type": "string" }, - "content": { "type": "string" }, - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "git_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "html_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "download_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "_links": { - "type": "object", - "properties": { - "git": { - "type": "string", - "format": "uri", - "nullable": true - }, - "html": { - "type": "string", - "format": "uri", - "nullable": true - }, - "self": { "type": "string", "format": "uri" } - }, - "required": ["git", "html", "self"] - } - }, - "required": [ - "_links", - "git_url", - "html_url", - "download_url", - "name", - "path", - "sha", - "size", - "type", - "url" - ] - } - }, - "_links": { - "type": "object", - "properties": { - "git": { "type": "string", "format": "uri", "nullable": true }, - "html": { "type": "string", "format": "uri", "nullable": true }, - "self": { "type": "string", "format": "uri" } - }, - "required": ["git", "html", "self"] - } - }, - "required": [ - "_links", - "git_url", - "html_url", - "download_url", - "name", - "path", - "sha", - "size", - "type", - "url", - "content", - "encoding" - ] - }, - "content-directory": { - "title": "Content Directory", - "description": "A list of directory items", - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { "type": "string" }, - "size": { "type": "integer" }, - "name": { "type": "string" }, - "path": { "type": "string" }, - "content": { "type": "string" }, - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "git_url": { "type": "string", "format": "uri", "nullable": true }, - "html_url": { "type": "string", "format": "uri", "nullable": true }, - "download_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "_links": { - "type": "object", - "properties": { - "git": { "type": "string", "format": "uri", "nullable": true }, - "html": { "type": "string", "format": "uri", "nullable": true }, - "self": { "type": "string", "format": "uri" } - }, - "required": ["git", "html", "self"] - } - }, - "required": [ - "_links", - "git_url", - "html_url", - "download_url", - "name", - "path", - "sha", - "size", - "type", - "url" - ] - } - }, - "content-file": { - "title": "Content File", - "description": "Content File", - "type": "object", - "properties": { - "type": { "type": "string" }, - "encoding": { "type": "string" }, - "size": { "type": "integer" }, - "name": { "type": "string" }, - "path": { "type": "string" }, - "content": { "type": "string" }, - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "git_url": { "type": "string", "format": "uri", "nullable": true }, - "html_url": { "type": "string", "format": "uri", "nullable": true }, - "download_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "_links": { - "type": "object", - "properties": { - "git": { "type": "string", "format": "uri", "nullable": true }, - "html": { "type": "string", "format": "uri", "nullable": true }, - "self": { "type": "string", "format": "uri" } - }, - "required": ["git", "html", "self"] - }, - "target": { "type": "string", "example": "\"actual/actual.md\"" }, - "submodule_git_url": { - "type": "string", - "example": "\"git://example.com/defunkt/dotjs.git\"" - } - }, - "required": [ - "_links", - "git_url", - "html_url", - "download_url", - "name", - "path", - "sha", - "size", - "type", - "url", - "content", - "encoding" - ] - }, - "content-symlink": { - "title": "Symlink Content", - "description": "An object describing a symlink", - "type": "object", - "properties": { - "type": { "type": "string" }, - "target": { "type": "string" }, - "size": { "type": "integer" }, - "name": { "type": "string" }, - "path": { "type": "string" }, - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "git_url": { "type": "string", "format": "uri", "nullable": true }, - "html_url": { "type": "string", "format": "uri", "nullable": true }, - "download_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "_links": { - "type": "object", - "properties": { - "git": { "type": "string", "format": "uri", "nullable": true }, - "html": { "type": "string", "format": "uri", "nullable": true }, - "self": { "type": "string", "format": "uri" } - }, - "required": ["git", "html", "self"] - } - }, - "required": [ - "_links", - "git_url", - "html_url", - "download_url", - "name", - "path", - "sha", - "size", - "type", - "url", - "target" - ] - }, - "content-submodule": { - "title": "Symlink Content", - "description": "An object describing a symlink", - "type": "object", - "properties": { - "type": { "type": "string" }, - "submodule_git_url": { "type": "string", "format": "uri" }, - "size": { "type": "integer" }, - "name": { "type": "string" }, - "path": { "type": "string" }, - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "git_url": { "type": "string", "format": "uri", "nullable": true }, - "html_url": { "type": "string", "format": "uri", "nullable": true }, - "download_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "_links": { - "type": "object", - "properties": { - "git": { "type": "string", "format": "uri", "nullable": true }, - "html": { "type": "string", "format": "uri", "nullable": true }, - "self": { "type": "string", "format": "uri" } - }, - "required": ["git", "html", "self"] - } - }, - "required": [ - "_links", - "git_url", - "html_url", - "download_url", - "name", - "path", - "sha", - "size", - "type", - "url", - "submodule_git_url" - ] - }, - "file-commit": { - "title": "File Commit", - "description": "File Commit", - "type": "object", - "properties": { - "content": { - "type": "object", - "properties": { - "name": { "type": "string" }, - "path": { "type": "string" }, - "sha": { "type": "string" }, - "size": { "type": "integer" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "git_url": { "type": "string" }, - "download_url": { "type": "string" }, - "type": { "type": "string" }, - "_links": { - "type": "object", - "properties": { - "self": { "type": "string" }, - "git": { "type": "string" }, - "html": { "type": "string" } - } - } - }, - "nullable": true - }, - "commit": { - "type": "object", - "properties": { - "sha": { "type": "string" }, - "node_id": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "author": { - "type": "object", - "properties": { - "date": { "type": "string" }, - "name": { "type": "string" }, - "email": { "type": "string" } - } - }, - "committer": { - "type": "object", - "properties": { - "date": { "type": "string" }, - "name": { "type": "string" }, - "email": { "type": "string" } - } - }, - "message": { "type": "string" }, - "tree": { - "type": "object", - "properties": { - "url": { "type": "string" }, - "sha": { "type": "string" } - } - }, - "parents": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "sha": { "type": "string" } - } - } - }, - "verification": { - "type": "object", - "properties": { - "verified": { "type": "boolean" }, - "reason": { "type": "string" }, - "signature": { "type": "string", "nullable": true }, - "payload": { "type": "string", "nullable": true } - } - } - } - } - } - }, - "contributor": { - "title": "Contributor", - "description": "Contributor", - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "avatar_url": { "type": "string", "format": "uri" }, - "gravatar_id": { "type": "string", "nullable": true }, - "url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "followers_url": { "type": "string", "format": "uri" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string", "format": "uri" }, - "organizations_url": { "type": "string", "format": "uri" }, - "repos_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string" }, - "received_events_url": { "type": "string", "format": "uri" }, - "type": { "type": "string" }, - "site_admin": { "type": "boolean" }, - "contributions": { "type": "integer" }, - "email": { "type": "string" }, - "name": { "type": "string" } - }, - "required": ["contributions", "type"] - }, - "deployment": { - "title": "Deployment", - "description": "A request for a specific ref(branch,sha,tag) to be deployed", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/example/deployments/1" - }, - "id": { - "description": "Unique identifier of the deployment", - "example": 42, - "type": "integer" - }, - "node_id": { "type": "string", "example": "MDEwOkRlcGxveW1lbnQx" }, - "sha": { - "type": "string", - "example": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d" - }, - "ref": { - "description": "The ref to deploy. This can be a branch, tag, or sha.", - "example": "topic-branch", - "type": "string" - }, - "task": { - "description": "Parameter to specify a task to execute", - "example": "deploy", - "type": "string" - }, - "payload": { "type": "object", "properties": {} }, - "original_environment": { "type": "string", "example": "staging" }, - "environment": { - "description": "Name for the target deployment environment.", - "example": "production", - "type": "string" - }, - "description": { - "type": "string", - "example": "Deploy request from hubot", - "nullable": true - }, - "creator": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2012-07-20T01:19:13Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2012-07-20T01:19:13Z" - }, - "statuses_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/example/deployments/1/statuses" - }, - "repository_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/example" - }, - "transient_environment": { - "description": "Specifies if the given environment is will no longer exist at some point in the future. Default: false.", - "example": true, - "type": "boolean" - }, - "production_environment": { - "description": "Specifies if the given environment is one that end-users directly interact with. Default: false.", - "example": true, - "type": "boolean" - }, - "performed_via_github_app": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/integration" }] - } - }, - "required": [ - "id", - "node_id", - "sha", - "ref", - "task", - "environment", - "creator", - "payload", - "description", - "statuses_url", - "repository_url", - "url", - "created_at", - "updated_at" - ] - }, - "deployment-status": { - "title": "Deployment Status", - "description": "The status of a deployment.", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/example/deployments/42/statuses/1" - }, - "id": { "type": "integer", "example": 1 }, - "node_id": { - "type": "string", - "example": "MDE2OkRlcGxveW1lbnRTdGF0dXMx" - }, - "state": { - "description": "The state of the status.", - "enum": [ - "error", - "failure", - "inactive", - "pending", - "success", - "queued", - "in_progress" - ], - "example": "success", - "type": "string" - }, - "creator": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "description": { - "description": "A short description of the status.", - "default": "", - "type": "string", - "maxLength": 140, - "example": "Deployment finished successfully." - }, - "environment": { - "description": "The environment of the deployment that the status is for.", - "default": "", - "type": "string", - "example": "production" - }, - "target_url": { - "description": "Deprecated: the URL to associate with this status.", - "default": "", - "type": "string", - "format": "uri", - "example": "https://example.com/deployment/42/output" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2012-07-20T01:19:13Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2012-07-20T01:19:13Z" - }, - "deployment_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/example/deployments/42" - }, - "repository_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/example" - }, - "environment_url": { - "description": "The URL for accessing your environment.", - "default": "", - "type": "string", - "format": "uri", - "example": "" - }, - "log_url": { - "description": "The URL to associate with this status.", - "default": "", - "type": "string", - "format": "uri", - "example": "https://example.com/deployment/42/output" - }, - "performed_via_github_app": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/integration" }] - } - }, - "required": [ - "id", - "node_id", - "state", - "creator", - "description", - "deployment_url", - "target_url", - "repository_url", - "url", - "created_at", - "updated_at" - ] - }, - "short-blob": { - "title": "Short Blob", - "description": "Short Blob", - "type": "object", - "properties": { - "url": { "type": "string" }, - "sha": { "type": "string" } - } - }, - "blob": { - "title": "Blob", - "description": "Blob", - "type": "object", - "properties": { - "content": { "type": "string" }, - "encoding": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "sha": { "type": "string" }, - "size": { "type": "integer", "nullable": true }, - "node_id": { "type": "string" }, - "highlighted_content": { "type": "string" } - }, - "required": ["sha", "url", "node_id", "size", "content", "encoding"] - }, - "git-commit": { - "title": "Git Commit", - "description": "Low-level Git commit operations within a repository", - "type": "object", - "properties": { - "sha": { - "description": "SHA for the commit", - "example": "7638417db6d59f3c431d3e1f261cc637155684cd", - "type": "string" - }, - "node_id": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "author": { - "description": "Identifying information for the git-user", - "type": "object", - "properties": { - "date": { - "description": "Timestamp of the commit", - "example": "2014-08-09T08:02:04+12:00", - "format": "date-time", - "type": "string" - }, - "email": { - "type": "string", - "description": "Git email address of the user", - "example": "monalisa.octocat@example.com" - }, - "name": { - "description": "Name of the git user", - "example": "Monalisa Octocat", - "type": "string" - } - }, - "required": ["email", "name"] - }, - "committer": { - "description": "Identifying information for the git-user", - "type": "object", - "properties": { - "date": { - "description": "Timestamp of the commit", - "example": "2014-08-09T08:02:04+12:00", - "format": "date-time", - "type": "string" - }, - "email": { - "type": "string", - "description": "Git email address of the user", - "example": "monalisa.octocat@example.com" - }, - "name": { - "description": "Name of the git user", - "example": "Monalisa Octocat", - "type": "string" - } - }, - "required": ["email", "name"] - }, - "message": { - "description": "Message describing the purpose of the commit", - "example": "Fix #42", - "type": "string" - }, - "tree": { - "type": "object", - "properties": { - "sha": { - "description": "SHA for the commit", - "example": "7638417db6d59f3c431d3e1f261cc637155684cd", - "type": "string" - }, - "url": { "type": "string", "format": "uri" } - } - }, - "parents": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sha": { - "description": "SHA for the commit", - "example": "7638417db6d59f3c431d3e1f261cc637155684cd", - "type": "string" - }, - "url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" } - } - } - }, - "verification": { - "type": "object", - "properties": { - "verified": { "type": "boolean" }, - "reason": { "type": "string" }, - "signature": { "type": "string", "nullable": true }, - "payload": { "type": "string", "nullable": true } - } - }, - "html_url": { "type": "string", "format": "uri" } - } - }, - "git-ref": { - "title": "Git Reference", - "description": "Git references within a repository", - "type": "object", - "properties": { - "ref": { "type": "string" }, - "node_id": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "object": { - "type": "object", - "properties": { - "type": { "type": "string" }, - "sha": { - "description": "SHA for the reference", - "example": "7638417db6d59f3c431d3e1f261cc637155684cd", - "type": "string", - "minLength": 40, - "maxLength": 40 - }, - "url": { "type": "string", "format": "uri" } - } - } - } - }, - "git-tag": { - "title": "Git Tag", - "description": "Metadata for a Git tag", - "type": "object", - "properties": { - "node_id": { - "type": "string", - "example": "MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==" - }, - "tag": { - "description": "Name of the tag", - "example": "v0.0.1", - "type": "string" - }, - "sha": { - "type": "string", - "example": "940bd336248efae0f9ee5bc7b2d5c985887b16ac" - }, - "url": { - "description": "URL for the tag", - "example": "https://api.github.com/repositories/42/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac", - "type": "string", - "format": "uri" - }, - "message": { - "description": "Message describing the purpose of the tag", - "example": "Initial public release", - "type": "string" - }, - "tagger": { - "type": "object", - "properties": { - "date": { "type": "string" }, - "email": { "type": "string" }, - "name": { "type": "string" } - }, - "required": ["date", "email", "name"] - }, - "object": { - "type": "object", - "properties": { - "sha": { "type": "string" }, - "type": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": ["sha", "type", "url"] - }, - "verification": { "$ref": "#/components/schemas/verification" } - }, - "required": [ - "sha", - "url", - "node_id", - "tagger", - "object", - "tag", - "message" - ] - }, - "git-tree": { - "title": "Git Tree", - "description": "The hierarchy between files in a Git repository.", - "type": "object", - "properties": { - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "truncated": { "type": "boolean" }, - "tree": { - "description": "Objects specifying a tree structure", - "type": "array", - "items": { - "type": "object", - "properties": { - "path": { "type": "string", "example": "\"test/file.rb\"" }, - "mode": { "type": "string", "example": "\"040000\"" }, - "type": { "type": "string", "example": "\"tree\"" }, - "sha": { - "type": "string", - "example": "\"23f6827669e43831def8a7ad935069c8bd418261\"" - }, - "size": { "type": "integer", "example": "12" }, - "url": { - "type": "string", - "example": "\"https://api.github.com/repos/owner-482f3203ecf01f67e9deb18e/BBB_Private_Repo/git/blobs/23f6827669e43831def8a7ad935069c8bd418261\"" - } - } - }, - "example": [ - { - "path": "file.rb", - "mode": "100644", - "type": "blob", - "size": 30, - "sha": "44b4fc6d56897b048c772eb4087f854f46256132", - "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132", - "properties": { - "path": { "type": "string" }, - "mode": { "type": "string" }, - "type": { "type": "string" }, - "size": { "type": "integer" }, - "sha": { "type": "string" }, - "url": { "type": "string" } - }, - "required": ["path", "mode", "type", "sha", "url", "size"] - } - ] - } - }, - "required": ["sha", "url", "tree", "truncated"] - }, - "hook-response": { - "title": "Hook Response", - "type": "object", - "properties": { - "code": { "type": "integer", "nullable": true }, - "status": { "type": "string", "nullable": true }, - "message": { "type": "string", "nullable": true } - }, - "required": ["code", "status", "message"] - }, - "hook": { - "title": "Webhook", - "description": "Webhooks for repositories.", - "type": "object", - "properties": { - "type": { "type": "string" }, - "id": { - "description": "Unique identifier of the webhook.", - "example": 42, - "type": "integer" - }, - "name": { - "description": "The name of a valid service, use 'web' for a webhook.", - "example": "web", - "type": "string" - }, - "active": { - "description": "Determines whether the hook is actually triggered on pushes.", - "type": "boolean", - "example": true - }, - "events": { - "description": "Determines what events the hook is triggered for. Default: ['push'].", - "type": "array", - "items": { "type": "string" }, - "example": ["push", "pull_request"] - }, - "config": { - "type": "object", - "properties": { - "email": { "type": "string", "example": "\"foo@bar.com\"" }, - "password": { "type": "string", "example": "\"foo\"" }, - "room": { "type": "string", "example": "\"roomer\"" }, - "subdomain": { "type": "string", "example": "\"foo\"" }, - "url": { "$ref": "#/components/schemas/webhook-config-url" }, - "insecure_ssl": { - "$ref": "#/components/schemas/webhook-config-insecure-ssl" - }, - "content_type": { - "$ref": "#/components/schemas/webhook-config-content-type" - }, - "digest": { "type": "string", "example": "\"sha256\"" }, - "secret": { - "$ref": "#/components/schemas/webhook-config-secret" - }, - "token": { "type": "string", "example": "\"abc\"" } - } - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-09-06T20:39:23Z" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-09-06T17:26:27Z" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1" - }, - "test_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1/test" - }, - "ping_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1/pings" - }, - "last_response": { "$ref": "#/components/schemas/hook-response" } - }, - "required": [ - "id", - "url", - "type", - "name", - "active", - "events", - "config", - "ping_url", - "created_at", - "updated_at", - "last_response", - "test_url" - ] - }, - "import": { - "title": "Import", - "description": "A repository import from an external source.", - "type": "object", - "properties": { - "vcs": { "type": "string", "nullable": true }, - "use_lfs": { "type": "string" }, - "vcs_url": { - "description": "The URL of the originating repository.", - "type": "string" - }, - "svc_root": { "type": "string" }, - "tfvc_project": { "type": "string" }, - "status": { - "type": "string", - "enum": [ - "auth", - "error", - "none", - "detecting", - "choose", - "auth_failed", - "importing", - "mapping", - "waiting_to_push", - "pushing", - "complete", - "setup", - "unknown", - "detection_found_multiple", - "detection_found_nothing", - "detection_needs_auth" - ] - }, - "status_text": { "type": "string", "nullable": true }, - "failed_step": { "type": "string", "nullable": true }, - "error_message": { "type": "string", "nullable": true }, - "import_percent": { "type": "integer", "nullable": true }, - "commit_count": { "type": "integer", "nullable": true }, - "push_percent": { "type": "integer", "nullable": true }, - "has_large_files": { "type": "boolean" }, - "large_files_size": { "type": "integer" }, - "large_files_count": { "type": "integer" }, - "project_choices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vcs": { "type": "string" }, - "tfvc_project": { "type": "string" }, - "human_name": { "type": "string" } - } - } - }, - "message": { "type": "string" }, - "authors_count": { "type": "integer", "nullable": true }, - "url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "authors_url": { "type": "string", "format": "uri" }, - "repository_url": { "type": "string", "format": "uri" }, - "svn_root": { "type": "string" } - }, - "required": [ - "vcs", - "vcs_url", - "status", - "url", - "repository_url", - "html_url", - "authors_url" - ] - }, - "porter-author": { - "title": "Porter Author", - "description": "Porter Author", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "remote_id": { "type": "string" }, - "remote_name": { "type": "string" }, - "email": { "type": "string" }, - "name": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "import_url": { "type": "string", "format": "uri" } - }, - "required": [ - "id", - "remote_id", - "remote_name", - "email", - "name", - "url", - "import_url" - ] - }, - "porter-large-file": { - "title": "Porter Large File", - "description": "Porter Large File", - "type": "object", - "properties": { - "ref_name": { "type": "string" }, - "path": { "type": "string" }, - "oid": { "type": "string" }, - "size": { "type": "integer" } - }, - "required": ["oid", "path", "ref_name", "size"] - }, - "issue-event-label": { - "title": "Issue Event Label", - "description": "Issue Event Label", - "type": "object", - "properties": { - "name": { "type": "string", "nullable": true }, - "color": { "type": "string", "nullable": true } - }, - "required": ["name", "color"] - }, - "issue-event-dismissed-review": { - "title": "Issue Event Dismissed Review", - "type": "object", - "properties": { - "state": { "type": "string" }, - "review_id": { "type": "integer" }, - "dismissal_message": { "type": "string", "nullable": true }, - "dismissal_commit_id": { "type": "string", "nullable": true } - }, - "required": ["state", "review_id", "dismissal_message"] - }, - "issue-event-milestone": { - "title": "Issue Event Milestone", - "description": "Issue Event Milestone", - "type": "object", - "properties": { "title": { "type": "string" } }, - "required": ["title"] - }, - "issue-event-project-card": { - "title": "Issue Event Project Card", - "description": "Issue Event Project Card", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "project_url": { "type": "string", "format": "uri" }, - "project_id": { "type": "integer" }, - "column_name": { "type": "string" }, - "previous_column_name": { "type": "string" } - }, - "required": ["url", "id", "project_url", "project_id", "column_name"] - }, - "issue-event-rename": { - "title": "Issue Event Rename", - "description": "Issue Event Rename", - "type": "object", - "properties": { - "from": { "type": "string" }, - "to": { "type": "string" } - }, - "required": ["from", "to"] - }, - "issue-event": { - "title": "Issue Event", - "description": "Issue Event", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 1 }, - "node_id": { "type": "string", "example": "MDEwOklzc3VlRXZlbnQx" }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/issues/events/1" - }, - "actor": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "event": { "type": "string", "example": "closed" }, - "commit_id": { - "type": "string", - "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "nullable": true - }, - "commit_url": { - "type": "string", - "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-14T16:00:49Z" - }, - "issue": { "$ref": "#/components/schemas/issue-simple" }, - "label": { "$ref": "#/components/schemas/issue-event-label" }, - "assignee": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "assigner": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "review_requester": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "requested_reviewer": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "requested_team": { "$ref": "#/components/schemas/team" }, - "dismissed_review": { - "$ref": "#/components/schemas/issue-event-dismissed-review" - }, - "milestone": { "$ref": "#/components/schemas/issue-event-milestone" }, - "project_card": { - "$ref": "#/components/schemas/issue-event-project-card" - }, - "rename": { "$ref": "#/components/schemas/issue-event-rename" }, - "author_association": { "type": "string" }, - "lock_reason": { "type": "string", "nullable": true } - }, - "required": [ - "id", - "node_id", - "url", - "actor", - "event", - "commit_id", - "commit_url", - "created_at" - ] - }, - "issue-event-for-issue": { - "title": "Issue Event for Issue", - "description": "Issue Event for Issue", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string" }, - "actor": { "$ref": "#/components/schemas/simple-user" }, - "event": { "type": "string" }, - "commit_id": { "type": "string", "nullable": true }, - "commit_url": { "type": "string", "nullable": true }, - "created_at": { "type": "string" }, - "sha": { - "type": "string", - "example": "\"480d4f47447129f015cb327536c522ca683939a1\"" - }, - "html_url": { - "type": "string", - "example": "\"https://github.com/owner-3906e11a33a3d55ba449d63f/BBB_Private_Repo/commit/480d4f47447129f015cb327536c522ca683939a1\"" - }, - "message": { - "type": "string", - "example": "\"add a bunch of files\"" - }, - "issue_url": { - "type": "string", - "example": "\"https://api.github.com/repos/owner-3906e11a33a3d55ba449d63f/AAA_Public_Repo/issues/1\"" - }, - "updated_at": { - "type": "string", - "example": "\"2020-07-09T00:17:36Z\"" - }, - "author_association": { - "type": "string", - "example": "\"COLLABORATOR\"" - }, - "body": { "type": "string", "example": "\":+1:\"" }, - "lock_reason": { "type": "string", "example": "\"off-topic\"" }, - "submitted_at": { - "type": "string", - "example": "\"2020-07-09T00:17:51Z\"" - }, - "state": { "type": "string", "example": "\"commented\"" }, - "pull_request_url": { - "type": "string", - "example": "\"https://api.github.com/repos/owner-3906e11a33a3d55ba449d63f/AAA_Public_Repo/pulls/2\"" - }, - "body_html": { - "type": "string", - "example": "\"

Accusantium fugiat cumque. Autem qui nostrum. Atque quae ullam.

\"" - }, - "body_text": { - "type": "string", - "example": "\"Accusantium fugiat cumque. Autem qui nostrum. Atque quae ullam.\"" - } - } - }, - "label": { - "title": "Label", - "description": "Color-coded labels help you categorize and filter your issues (just like labels in Gmail).", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 208045946 }, - "node_id": { - "type": "string", - "example": "MDU6TGFiZWwyMDgwNDU5NDY=" - }, - "url": { - "description": "URL for the label", - "example": "https://api.github.com/repositories/42/labels/bug", - "type": "string", - "format": "uri" - }, - "name": { - "description": "The name of the label.", - "example": "bug", - "type": "string" - }, - "description": { - "type": "string", - "example": "Something isn't working", - "nullable": true - }, - "color": { - "description": "6-character hex code, without the leading #, identifying the color", - "example": "FFFFFF", - "type": "string" - }, - "default": { "type": "boolean", "example": true } - }, - "required": ["color", "name", "id", "node_id", "default", "url"] - }, - "deploy-key": { - "title": "Deploy Key", - "description": "An SSH key granting access to a single repository.", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "key": { "type": "string" }, - "url": { "type": "string" }, - "title": { "type": "string" }, - "verified": { "type": "boolean" }, - "created_at": { "type": "string" }, - "read_only": { "type": "boolean" } - } - }, - "language": { - "title": "Language", - "description": "Language", - "type": "object", - "additionalProperties": { "type": "integer" } - }, - "license-content": { - "title": "License Content", - "description": "License Content", - "type": "object", - "properties": { - "name": { "type": "string" }, - "path": { "type": "string" }, - "sha": { "type": "string" }, - "size": { "type": "integer" }, - "url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri", "nullable": true }, - "git_url": { "type": "string", "format": "uri", "nullable": true }, - "download_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "type": { "type": "string" }, - "content": { "type": "string" }, - "encoding": { "type": "string" }, - "_links": { - "type": "object", - "properties": { - "git": { "type": "string", "format": "uri", "nullable": true }, - "html": { "type": "string", "format": "uri", "nullable": true }, - "self": { "type": "string", "format": "uri" } - }, - "required": ["git", "html", "self"] - }, - "license": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/license-simple" }] - } - }, - "required": [ - "_links", - "git_url", - "html_url", - "download_url", - "name", - "path", - "sha", - "size", - "type", - "url", - "content", - "encoding", - "license" - ] - }, - "pages-source-hash": { - "title": "Pages Source Hash", - "type": "object", - "properties": { - "branch": { "type": "string" }, - "path": { "type": "string" } - }, - "required": ["branch", "path"] - }, - "page": { - "title": "GitHub Pages", - "description": "The configuration for GitHub Pages for a repository.", - "type": "object", - "properties": { - "url": { - "type": "string", - "description": "The API address for accessing this Page resource.", - "format": "uri", - "example": "https://api.github.com/repos/github/hello-world/pages" - }, - "status": { - "type": "string", - "description": "The status of the most recent build of the Page.", - "example": "built", - "enum": ["built", "building", "errored"], - "nullable": true - }, - "cname": { - "description": "The Pages site's custom domain", - "example": "example.com", - "type": "string", - "nullable": true - }, - "custom_404": { - "type": "boolean", - "description": "Whether the Page has a custom 404 page.", - "example": false, - "default": false - }, - "html_url": { - "type": "string", - "description": "The web address the Page can be accessed from.", - "format": "uri", - "example": "https://example.com" - }, - "source": { "$ref": "#/components/schemas/pages-source-hash" } - }, - "required": ["url", "status", "cname", "custom_404"] - }, - "page-build": { - "title": "Page Build", - "description": "Page Build", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "status": { "type": "string" }, - "error": { - "type": "object", - "properties": { "message": { "type": "string", "nullable": true } }, - "required": ["message"] - }, - "pusher": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "commit": { "type": "string" }, - "duration": { "type": "integer" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" } - }, - "required": [ - "url", - "status", - "error", - "pusher", - "commit", - "duration", - "created_at", - "updated_at" - ] - }, - "page-build-status": { - "title": "Page Build Status", - "description": "Page Build Status", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/github/hello-world/pages/builds/latest" - }, - "status": { "type": "string", "example": "queued" } - }, - "required": ["url", "status"] - }, - "pull-request": { - "type": "object", - "title": "Pull Request", - "description": "Pull requests let you tell others about changes you've pushed to a repository on GitHub. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary.", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347" - }, - "id": { "type": "integer", "example": 1 }, - "node_id": { - "type": "string", - "example": "MDExOlB1bGxSZXF1ZXN0MQ==" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/1347" - }, - "diff_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/1347.diff" - }, - "patch_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/1347.patch" - }, - "issue_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347" - }, - "commits_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits" - }, - "review_comments_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments" - }, - "review_comment_url": { - "type": "string", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}" - }, - "comments_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments" - }, - "statuses_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "number": { - "description": "Number uniquely identifying the pull request within its repository.", - "example": 42, - "type": "integer" - }, - "state": { - "description": "State of this Pull Request. Either `open` or `closed`.", - "enum": ["open", "closed"], - "example": "open", - "type": "string" - }, - "locked": { "type": "boolean", "example": true }, - "title": { - "description": "The title of the pull request.", - "example": "Amazing new feature", - "type": "string" - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "body": { - "type": "string", - "example": "Please pull these awesome changes", - "nullable": true - }, - "labels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string" }, - "name": { "type": "string" }, - "description": { "type": "string", "nullable": true }, - "color": { "type": "string" }, - "default": { "type": "boolean" } - } - } - }, - "milestone": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/milestone" }] - }, - "active_lock_reason": { - "type": "string", - "example": "too heated", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z" - }, - "closed_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z", - "nullable": true - }, - "merged_at": { - "type": "string", - "format": "date-time", - "example": "2011-01-26T19:01:12Z", - "nullable": true - }, - "merge_commit_sha": { - "type": "string", - "example": "e5bd3914e2e596debea16f433f57875b5b90bcd6", - "nullable": true - }, - "assignee": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "assignees": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" }, - "nullable": true - }, - "requested_reviewers": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" }, - "nullable": true - }, - "requested_teams": { - "type": "array", - "items": { "$ref": "#/components/schemas/team-simple" }, - "nullable": true - }, - "head": { - "type": "object", - "properties": { - "label": { "type": "string" }, - "ref": { "type": "string" }, - "repo": { - "type": "object", - "properties": { - "archive_url": { "type": "string" }, - "assignees_url": { "type": "string" }, - "blobs_url": { "type": "string" }, - "branches_url": { "type": "string" }, - "collaborators_url": { "type": "string" }, - "comments_url": { "type": "string" }, - "commits_url": { "type": "string" }, - "compare_url": { "type": "string" }, - "contents_url": { "type": "string" }, - "contributors_url": { "type": "string", "format": "uri" }, - "deployments_url": { "type": "string", "format": "uri" }, - "description": { "type": "string", "nullable": true }, - "downloads_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string", "format": "uri" }, - "fork": { "type": "boolean" }, - "forks_url": { "type": "string", "format": "uri" }, - "full_name": { "type": "string" }, - "git_commits_url": { "type": "string" }, - "git_refs_url": { "type": "string" }, - "git_tags_url": { "type": "string" }, - "hooks_url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "issue_comment_url": { "type": "string" }, - "issue_events_url": { "type": "string" }, - "issues_url": { "type": "string" }, - "keys_url": { "type": "string" }, - "labels_url": { "type": "string" }, - "languages_url": { "type": "string", "format": "uri" }, - "merges_url": { "type": "string", "format": "uri" }, - "milestones_url": { "type": "string" }, - "name": { "type": "string" }, - "notifications_url": { "type": "string" }, - "owner": { - "type": "object", - "properties": { - "avatar_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string" }, - "followers_url": { "type": "string", "format": "uri" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "gravatar_id": { "type": "string", "nullable": true }, - "html_url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "login": { "type": "string" }, - "organizations_url": { - "type": "string", - "format": "uri" - }, - "received_events_url": { - "type": "string", - "format": "uri" - }, - "repos_url": { "type": "string", "format": "uri" }, - "site_admin": { "type": "boolean" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { - "type": "string", - "format": "uri" - }, - "type": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": [ - "avatar_url", - "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", - "html_url", - "id", - "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", - "url" - ] - }, - "private": { "type": "boolean" }, - "pulls_url": { "type": "string" }, - "releases_url": { "type": "string" }, - "stargazers_url": { "type": "string", "format": "uri" }, - "statuses_url": { "type": "string" }, - "subscribers_url": { "type": "string", "format": "uri" }, - "subscription_url": { "type": "string", "format": "uri" }, - "tags_url": { "type": "string", "format": "uri" }, - "teams_url": { "type": "string", "format": "uri" }, - "trees_url": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "clone_url": { "type": "string" }, - "default_branch": { "type": "string" }, - "forks": { "type": "integer" }, - "forks_count": { "type": "integer" }, - "git_url": { "type": "string" }, - "has_downloads": { "type": "boolean" }, - "has_issues": { "type": "boolean" }, - "has_projects": { "type": "boolean" }, - "has_wiki": { "type": "boolean" }, - "has_pages": { "type": "boolean" }, - "homepage": { - "type": "string", - "format": "uri", - "nullable": true - }, - "language": { "type": "string", "nullable": true }, - "master_branch": { "type": "string" }, - "archived": { "type": "boolean" }, - "disabled": { "type": "boolean" }, - "mirror_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "open_issues": { "type": "integer" }, - "open_issues_count": { "type": "integer" }, - "permissions": { - "type": "object", - "properties": { - "admin": { "type": "boolean" }, - "pull": { "type": "boolean" }, - "push": { "type": "boolean" } - }, - "required": ["admin", "pull", "push"] - }, - "temp_clone_token": { "type": "string" }, - "allow_merge_commit": { "type": "boolean" }, - "allow_squash_merge": { "type": "boolean" }, - "allow_rebase_merge": { "type": "boolean" }, - "license": { - "type": "object", - "properties": { - "key": { "type": "string" }, - "name": { "type": "string" }, - "url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "spdx_id": { "type": "string", "nullable": true }, - "node_id": { "type": "string" } - }, - "required": ["key", "name", "url", "spdx_id", "node_id"], - "nullable": true - }, - "pushed_at": { "type": "string", "format": "date-time" }, - "size": { "type": "integer" }, - "ssh_url": { "type": "string" }, - "stargazers_count": { "type": "integer" }, - "svn_url": { "type": "string", "format": "uri" }, - "topics": { "type": "array", "items": { "type": "string" } }, - "watchers": { "type": "integer" }, - "watchers_count": { "type": "integer" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" } - }, - "required": [ - "archive_url", - "assignees_url", - "blobs_url", - "branches_url", - "collaborators_url", - "comments_url", - "commits_url", - "compare_url", - "contents_url", - "contributors_url", - "deployments_url", - "description", - "downloads_url", - "events_url", - "fork", - "forks_url", - "full_name", - "git_commits_url", - "git_refs_url", - "git_tags_url", - "hooks_url", - "html_url", - "id", - "node_id", - "issue_comment_url", - "issue_events_url", - "issues_url", - "keys_url", - "labels_url", - "languages_url", - "merges_url", - "milestones_url", - "name", - "notifications_url", - "owner", - "private", - "pulls_url", - "releases_url", - "stargazers_url", - "statuses_url", - "subscribers_url", - "subscription_url", - "tags_url", - "teams_url", - "trees_url", - "url", - "clone_url", - "default_branch", - "forks", - "forks_count", - "git_url", - "has_downloads", - "has_issues", - "has_projects", - "has_wiki", - "has_pages", - "homepage", - "language", - "archived", - "disabled", - "mirror_url", - "open_issues", - "open_issues_count", - "license", - "pushed_at", - "size", - "ssh_url", - "stargazers_count", - "svn_url", - "watchers", - "watchers_count", - "created_at", - "updated_at" - ] - }, - "sha": { "type": "string" }, - "user": { - "type": "object", - "properties": { - "avatar_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string" }, - "followers_url": { "type": "string", "format": "uri" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "gravatar_id": { "type": "string", "nullable": true }, - "html_url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "login": { "type": "string" }, - "organizations_url": { "type": "string", "format": "uri" }, - "received_events_url": { "type": "string", "format": "uri" }, - "repos_url": { "type": "string", "format": "uri" }, - "site_admin": { "type": "boolean" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string", "format": "uri" }, - "type": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": [ - "avatar_url", - "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", - "html_url", - "id", - "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", - "url" - ] - } - }, - "required": ["label", "ref", "repo", "sha", "user"] - }, - "base": { - "type": "object", - "properties": { - "label": { "type": "string" }, - "ref": { "type": "string" }, - "repo": { - "type": "object", - "properties": { - "archive_url": { "type": "string" }, - "assignees_url": { "type": "string" }, - "blobs_url": { "type": "string" }, - "branches_url": { "type": "string" }, - "collaborators_url": { "type": "string" }, - "comments_url": { "type": "string" }, - "commits_url": { "type": "string" }, - "compare_url": { "type": "string" }, - "contents_url": { "type": "string" }, - "contributors_url": { "type": "string", "format": "uri" }, - "deployments_url": { "type": "string", "format": "uri" }, - "description": { "type": "string", "nullable": true }, - "downloads_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string", "format": "uri" }, - "fork": { "type": "boolean" }, - "forks_url": { "type": "string", "format": "uri" }, - "full_name": { "type": "string" }, - "git_commits_url": { "type": "string" }, - "git_refs_url": { "type": "string" }, - "git_tags_url": { "type": "string" }, - "hooks_url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "issue_comment_url": { "type": "string" }, - "issue_events_url": { "type": "string" }, - "issues_url": { "type": "string" }, - "keys_url": { "type": "string" }, - "labels_url": { "type": "string" }, - "languages_url": { "type": "string", "format": "uri" }, - "merges_url": { "type": "string", "format": "uri" }, - "milestones_url": { "type": "string" }, - "name": { "type": "string" }, - "notifications_url": { "type": "string" }, - "owner": { - "type": "object", - "properties": { - "avatar_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string" }, - "followers_url": { "type": "string", "format": "uri" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "gravatar_id": { "type": "string", "nullable": true }, - "html_url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "login": { "type": "string" }, - "organizations_url": { - "type": "string", - "format": "uri" - }, - "received_events_url": { - "type": "string", - "format": "uri" - }, - "repos_url": { "type": "string", "format": "uri" }, - "site_admin": { "type": "boolean" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { - "type": "string", - "format": "uri" - }, - "type": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": [ - "avatar_url", - "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", - "html_url", - "id", - "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", - "url" - ] - }, - "private": { "type": "boolean" }, - "pulls_url": { "type": "string" }, - "releases_url": { "type": "string" }, - "stargazers_url": { "type": "string", "format": "uri" }, - "statuses_url": { "type": "string" }, - "subscribers_url": { "type": "string", "format": "uri" }, - "subscription_url": { "type": "string", "format": "uri" }, - "tags_url": { "type": "string", "format": "uri" }, - "teams_url": { "type": "string", "format": "uri" }, - "trees_url": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "clone_url": { "type": "string" }, - "default_branch": { "type": "string" }, - "forks": { "type": "integer" }, - "forks_count": { "type": "integer" }, - "git_url": { "type": "string" }, - "has_downloads": { "type": "boolean" }, - "has_issues": { "type": "boolean" }, - "has_projects": { "type": "boolean" }, - "has_wiki": { "type": "boolean" }, - "has_pages": { "type": "boolean" }, - "homepage": { - "type": "string", - "format": "uri", - "nullable": true - }, - "language": { "type": "string", "nullable": true }, - "master_branch": { "type": "string" }, - "archived": { "type": "boolean" }, - "disabled": { "type": "boolean" }, - "mirror_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "open_issues": { "type": "integer" }, - "open_issues_count": { "type": "integer" }, - "permissions": { - "type": "object", - "properties": { - "admin": { "type": "boolean" }, - "pull": { "type": "boolean" }, - "push": { "type": "boolean" } - }, - "required": ["admin", "pull", "push"] - }, - "temp_clone_token": { "type": "string" }, - "allow_merge_commit": { "type": "boolean" }, - "allow_squash_merge": { "type": "boolean" }, - "allow_rebase_merge": { "type": "boolean" }, - "license": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/license-simple" }] - }, - "pushed_at": { "type": "string", "format": "date-time" }, - "size": { "type": "integer" }, - "ssh_url": { "type": "string" }, - "stargazers_count": { "type": "integer" }, - "svn_url": { "type": "string", "format": "uri" }, - "topics": { "type": "array", "items": { "type": "string" } }, - "watchers": { "type": "integer" }, - "watchers_count": { "type": "integer" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" } - }, - "required": [ - "archive_url", - "assignees_url", - "blobs_url", - "branches_url", - "collaborators_url", - "comments_url", - "commits_url", - "compare_url", - "contents_url", - "contributors_url", - "deployments_url", - "description", - "downloads_url", - "events_url", - "fork", - "forks_url", - "full_name", - "git_commits_url", - "git_refs_url", - "git_tags_url", - "hooks_url", - "html_url", - "id", - "node_id", - "issue_comment_url", - "issue_events_url", - "issues_url", - "keys_url", - "labels_url", - "languages_url", - "merges_url", - "milestones_url", - "name", - "notifications_url", - "owner", - "private", - "pulls_url", - "releases_url", - "stargazers_url", - "statuses_url", - "subscribers_url", - "subscription_url", - "tags_url", - "teams_url", - "trees_url", - "url", - "clone_url", - "default_branch", - "forks", - "forks_count", - "git_url", - "has_downloads", - "has_issues", - "has_projects", - "has_wiki", - "has_pages", - "homepage", - "language", - "archived", - "disabled", - "mirror_url", - "open_issues", - "open_issues_count", - "license", - "pushed_at", - "size", - "ssh_url", - "stargazers_count", - "svn_url", - "watchers", - "watchers_count", - "created_at", - "updated_at" - ] - }, - "sha": { "type": "string" }, - "user": { - "type": "object", - "properties": { - "avatar_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string" }, - "followers_url": { "type": "string", "format": "uri" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "gravatar_id": { "type": "string", "nullable": true }, - "html_url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "login": { "type": "string" }, - "organizations_url": { "type": "string", "format": "uri" }, - "received_events_url": { "type": "string", "format": "uri" }, - "repos_url": { "type": "string", "format": "uri" }, - "site_admin": { "type": "boolean" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string", "format": "uri" }, - "type": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": [ - "avatar_url", - "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", - "html_url", - "id", - "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", - "url" - ] - } - }, - "required": ["label", "ref", "repo", "sha", "user"] - }, - "_links": { - "type": "object", - "properties": { - "comments": { "$ref": "#/components/schemas/link" }, - "commits": { "$ref": "#/components/schemas/link" }, - "statuses": { "$ref": "#/components/schemas/link" }, - "html": { "$ref": "#/components/schemas/link" }, - "issue": { "$ref": "#/components/schemas/link" }, - "review_comments": { "$ref": "#/components/schemas/link" }, - "review_comment": { "$ref": "#/components/schemas/link" }, - "self": { "$ref": "#/components/schemas/link" } - }, - "required": [ - "comments", - "commits", - "statuses", - "html", - "issue", - "review_comments", - "review_comment", - "self" - ] - }, - "author_association": { "type": "string", "example": "OWNER" }, - "draft": { - "description": "Indicates whether or not the pull request is a draft.", - "example": false, - "type": "boolean" - }, - "merged": { "type": "boolean" }, - "mergeable": { "type": "boolean", "example": true, "nullable": true }, - "rebaseable": { - "type": "boolean", - "example": true, - "nullable": true - }, - "mergeable_state": { "type": "string", "example": "clean" }, - "merged_by": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "comments": { "type": "integer", "example": 10 }, - "review_comments": { "type": "integer", "example": 0 }, - "maintainer_can_modify": { - "description": "Indicates whether maintainers can modify the pull request.", - "example": true, - "type": "boolean" - }, - "commits": { "type": "integer", "example": 3 }, - "additions": { "type": "integer", "example": 100 }, - "deletions": { "type": "integer", "example": 3 }, - "changed_files": { "type": "integer", "example": 5 } - }, - "required": [ - "_links", - "assignee", - "labels", - "base", - "body", - "closed_at", - "comments_url", - "commits_url", - "created_at", - "diff_url", - "head", - "html_url", - "id", - "node_id", - "issue_url", - "merge_commit_sha", - "merged_at", - "milestone", - "number", - "patch_url", - "review_comment_url", - "review_comments_url", - "statuses_url", - "state", - "locked", - "title", - "updated_at", - "url", - "user", - "author_association", - "additions", - "changed_files", - "comments", - "commits", - "deletions", - "mergeable", - "mergeable_state", - "merged", - "maintainer_can_modify", - "merged_by", - "review_comments" - ] - }, - "pull-request-review-comment": { - "title": "Pull Request Review Comment", - "description": "Pull Request Review Comments are comments on a portion of the Pull Request's diff.", - "type": "object", - "properties": { - "url": { - "description": "URL for the pull request review comment", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", - "type": "string" - }, - "pull_request_review_id": { - "description": "The ID of the pull request review to which the comment belongs.", - "example": 42, - "type": "integer", - "nullable": true - }, - "id": { - "description": "The ID of the pull request review comment.", - "example": 1, - "type": "integer" - }, - "node_id": { - "description": "The node ID of the pull request review comment.", - "type": "string", - "example": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw" - }, - "diff_hunk": { - "description": "The diff of the line that the comment refers to.", - "type": "string", - "example": "@@ -16,33 +16,40 @@ public class Connection : IConnection..." - }, - "path": { - "description": "The relative path of the file to which the comment applies.", - "example": "config/database.yaml", - "type": "string" - }, - "position": { - "description": "The line index in the diff to which the comment applies.", - "example": 1, - "type": "integer" - }, - "original_position": { - "description": "The index of the original line in the diff to which the comment applies.", - "example": 4, - "type": "integer" - }, - "commit_id": { - "description": "The SHA of the commit to which the comment applies.", - "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "type": "string" - }, - "original_commit_id": { - "description": "The SHA of the original commit to which the comment applies.", - "example": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", - "type": "string" - }, - "in_reply_to_id": { - "description": "The comment ID to reply to.", - "example": 8, - "type": "integer" - }, - "user": { "$ref": "#/components/schemas/simple-user" }, - "body": { - "description": "The text of the comment.", - "example": "We should probably include a check for null values here.", - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-14T16:00:49Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-14T16:00:49Z" - }, - "html_url": { - "description": "HTML URL for the pull request review comment.", - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1" - }, - "pull_request_url": { - "description": "URL for the pull request that the review comment belongs to.", - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1" - }, - "author_association": { - "description": "How the author of the comment is associated with the pull request.", - "type": "string", - "example": "" - }, - "_links": { - "type": "object", - "properties": { - "self": { - "type": "object", - "properties": { - "href": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1" - } - }, - "required": ["href"] - }, - "html": { - "type": "object", - "properties": { - "href": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1" - } - }, - "required": ["href"] - }, - "pull_request": { - "type": "object", - "properties": { - "href": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1" - } - }, - "required": ["href"] - } - }, - "required": ["self", "html", "pull_request"] - }, - "start_line": { - "type": "integer", - "description": "The first line of the range for a multi-line comment.", - "example": 2, - "nullable": true - }, - "original_start_line": { - "type": "integer", - "description": "The first line of the range for a multi-line comment.", - "example": 2, - "nullable": true - }, - "start_side": { - "type": "string", - "description": "The side of the first line of the range for a multi-line comment.", - "enum": ["LEFT", "RIGHT"], - "default": "RIGHT", - "nullable": true - }, - "line": { - "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", - "example": 2, - "type": "integer" - }, - "original_line": { - "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", - "example": 2, - "type": "integer" - }, - "side": { - "description": "The side of the diff to which the comment applies. The side of the last line of the range for a multi-line comment", - "enum": ["LEFT", "RIGHT"], - "default": "RIGHT", - "type": "string" - }, - "reactions": { "$ref": "#/components/schemas/reaction-rollup" }, - "body_html": { - "type": "string", - "example": "\"

comment body

\"" - }, - "body_text": { "type": "string", "example": "\"comment body\"" } - }, - "required": [ - "url", - "id", - "node_id", - "pull_request_review_id", - "diff_hunk", - "path", - "position", - "original_position", - "commit_id", - "original_commit_id", - "user", - "body", - "created_at", - "updated_at", - "html_url", - "pull_request_url", - "author_association", - "_links" - ] - }, - "pull-request-merge-result": { - "title": "Pull Request Merge Result", - "description": "Pull Request Merge Result", - "type": "object", - "properties": { - "sha": { "type": "string" }, - "merged": { "type": "boolean" }, - "message": { "type": "string" } - }, - "required": ["merged", "message", "sha"] - }, - "pull-request-review-request": { - "title": "Pull Request Review Request", - "description": "Pull Request Review Request", - "type": "object", - "properties": { - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "avatar_url": { "type": "string" }, - "gravatar_id": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "followers_url": { "type": "string" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string" }, - "organizations_url": { "type": "string" }, - "repos_url": { "type": "string" }, - "events_url": { "type": "string" }, - "received_events_url": { "type": "string" }, - "type": { "type": "string" }, - "site_admin": { "type": "boolean" } - } - } - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "name": { "type": "string" }, - "slug": { "type": "string" }, - "description": { "type": "string", "nullable": true }, - "privacy": { "type": "string" }, - "permission": { "type": "string" }, - "members_url": { "type": "string" }, - "repositories_url": { "type": "string" }, - "parent": { "type": "string", "nullable": true } - } - } - } - } - }, - "pull-request-review": { - "title": "Pull Request Review", - "description": "Pull Request Reviews are reviews on pull requests.", - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the review", - "example": 42, - "type": "integer" - }, - "node_id": { - "type": "string", - "example": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=" - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "body": { - "description": "The text of the review.", - "example": "This looks great.", - "type": "string" - }, - "state": { "type": "string", "example": "CHANGES_REQUESTED" }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80" - }, - "pull_request_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/12" - }, - "_links": { - "type": "object", - "properties": { - "html": { - "type": "object", - "properties": { "href": { "type": "string" } }, - "required": ["href"] - }, - "pull_request": { - "type": "object", - "properties": { "href": { "type": "string" } }, - "required": ["href"] - } - }, - "required": ["html", "pull_request"] - }, - "submitted_at": { "type": "string", "format": "date-time" }, - "commit_id": { - "description": "A commit SHA for the review.", - "example": "54bb654c9e6025347f57900a4a5c2313a96b8035", - "type": "string" - }, - "body_html": { "type": "string" }, - "body_text": { "type": "string" }, - "author_association": { "type": "string" } - }, - "required": [ - "id", - "node_id", - "user", - "body", - "state", - "commit_id", - "html_url", - "pull_request_url", - "_links", - "author_association" - ] - }, - "review-comment": { - "title": "Legacy Review Comment", - "description": "Legacy Review Comment", - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1" - }, - "pull_request_review_id": { - "type": "integer", - "example": 42, - "nullable": true - }, - "id": { "type": "integer", "example": 10 }, - "node_id": { - "type": "string", - "example": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw" - }, - "diff_hunk": { - "type": "string", - "example": "@@ -16,33 +16,40 @@ public class Connection : IConnection..." - }, - "path": { "type": "string", "example": "file1.txt" }, - "position": { "type": "integer", "example": 1, "nullable": true }, - "original_position": { "type": "integer", "example": 4 }, - "commit_id": { - "type": "string", - "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "original_commit_id": { - "type": "string", - "example": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840" - }, - "in_reply_to_id": { "type": "integer", "example": 8 }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "body": { "type": "string", "example": "Great stuff" }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-14T16:00:49Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2011-04-14T16:00:49Z" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1" - }, - "pull_request_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1" - }, - "author_association": { "type": "string" }, - "_links": { - "type": "object", - "properties": { - "self": { "$ref": "#/components/schemas/link" }, - "html": { "$ref": "#/components/schemas/link" }, - "pull_request": { "$ref": "#/components/schemas/link" } - }, - "required": ["self", "html", "pull_request"] - }, - "body_text": { "type": "string" }, - "body_html": { "type": "string" }, - "side": { - "description": "The side of the first line of the range for a multi-line comment.", - "enum": ["LEFT", "RIGHT"], - "default": "RIGHT", - "type": "string" - }, - "start_side": { - "type": "string", - "description": "The side of the first line of the range for a multi-line comment.", - "enum": ["LEFT", "RIGHT"], - "default": "RIGHT", - "nullable": true - }, - "line": { - "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", - "example": 2, - "type": "integer" - }, - "original_line": { - "description": "The original line of the blob to which the comment applies. The last line of the range for a multi-line comment", - "example": 2, - "type": "integer" - }, - "start_line": { - "description": "The first line of the range for a multi-line comment.", - "example": 2, - "type": "integer", - "nullable": true - }, - "original_start_line": { - "description": "The original first line of the range for a multi-line comment.", - "example": 2, - "type": "integer", - "nullable": true - } - }, - "required": [ - "id", - "node_id", - "url", - "body", - "diff_hunk", - "path", - "position", - "original_position", - "commit_id", - "original_commit_id", - "user", - "pull_request_review_id", - "html_url", - "pull_request_url", - "_links", - "author_association", - "created_at", - "updated_at" - ] - }, - "release-asset": { - "title": "Release Asset", - "description": "Data related to a release.", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "browser_download_url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "name": { - "description": "The file name of the asset.", - "type": "string", - "example": "Team Environment" - }, - "label": { "type": "string", "nullable": true }, - "state": { - "description": "State of the release asset.", - "type": "string", - "enum": ["uploaded"], - "example": "open" - }, - "content_type": { "type": "string" }, - "size": { "type": "integer" }, - "download_count": { "type": "integer" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "uploader": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - } - }, - "required": [ - "id", - "name", - "content_type", - "size", - "state", - "url", - "node_id", - "download_count", - "label", - "uploader", - "browser_download_url", - "created_at", - "updated_at" - ] - }, - "release": { - "title": "Release", - "description": "A release.", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "assets_url": { "type": "string", "format": "uri" }, - "upload_url": { "type": "string" }, - "tarball_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "zipball_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "tag_name": { - "description": "The name of the tag.", - "example": "v1.0.0", - "type": "string" - }, - "target_commitish": { - "description": "Specifies the commitish value that determines where the Git tag is created from.", - "example": "master", - "type": "string" - }, - "name": { "type": "string", "nullable": true }, - "body": { "type": "string", "nullable": true }, - "draft": { - "description": "true to create a draft (unpublished) release, false to create a published one.", - "example": false, - "type": "boolean" - }, - "prerelease": { - "description": "Whether to identify the release as a prerelease or a full release.", - "example": false, - "type": "boolean" - }, - "created_at": { "type": "string", "format": "date-time" }, - "published_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "author": { "$ref": "#/components/schemas/simple-user" }, - "assets": { - "type": "array", - "items": { "$ref": "#/components/schemas/release-asset" } - }, - "body_html": { "type": "string" }, - "body_text": { "type": "string" } - }, - "required": [ - "assets_url", - "upload_url", - "tarball_url", - "zipball_url", - "created_at", - "published_at", - "draft", - "id", - "node_id", - "author", - "html_url", - "name", - "prerelease", - "tag_name", - "target_commitish", - "assets", - "url" - ] - }, - "secret-scanning-alert-state": { - "description": "Sets the state of the secret scanning alert. Can be either `open` or `resolved`. You must provide `resolution` when you set the state to `resolved`.", - "type": "string", - "enum": ["open", "resolved"] - }, - "secret-scanning-alert-resolution": { - "type": "string", - "description": "**Required when the `state` is `resolved`.** The reason for resolving the alert. Can be one of `false_positive`, `wont_fix`, `revoked`, or `used_in_tests`.", - "nullable": true, - "oneOf": [ - { - "enum": ["false_positive", "wont_fix", "revoked", "used_in_tests"] - }, - { "enum": [null] } - ] - }, - "secret-scanning-alert": { - "type": "object", - "properties": { - "number": { "$ref": "#/components/schemas/alert-number" }, - "created_at": { "$ref": "#/components/schemas/alert-created-at" }, - "url": { "$ref": "#/components/schemas/alert-url" }, - "html_url": { "$ref": "#/components/schemas/alert-html-url" }, - "state": { - "$ref": "#/components/schemas/secret-scanning-alert-state" - }, - "resolution": { - "$ref": "#/components/schemas/secret-scanning-alert-resolution" - }, - "resolved_at": { - "type": "string", - "format": "date-time", - "description": "The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.", - "nullable": true - }, - "resolved_by": { "$ref": "#/components/schemas/simple-user" }, - "secret_type": { - "type": "string", - "description": "The type of secret that secret scanning detected." - }, - "secret": { - "type": "string", - "description": "The secret that was detected." - } - } - }, - "stargazer": { - "title": "Stargazer", - "description": "Stargazer", - "type": "object", - "properties": { - "starred_at": { "type": "string", "format": "date-time" }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - } - }, - "required": ["starred_at", "user"] - }, - "code-frequency-stat": { - "title": "Code Frequency Stat", - "description": "Code Frequency Stat", - "type": "array", - "items": { "type": "integer" } - }, - "commit-activity": { - "title": "Commit Activity", - "description": "Commit Activity", - "type": "object", - "properties": { - "days": { - "type": "array", - "example": [0, 3, 26, 20, 39, 1, 0], - "items": { "type": "integer" } - }, - "total": { "type": "integer", "example": 89 }, - "week": { "type": "integer", "example": 1336280400 } - }, - "required": ["days", "total", "week"] - }, - "contributor-activity": { - "title": "Contributor Activity", - "description": "Contributor Activity", - "type": "object", - "properties": { - "author": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "total": { "type": "integer", "example": 135 }, - "weeks": { - "type": "array", - "example": [{ "w": "1367712000", "a": 6898, "d": 77, "c": 10 }], - "items": { - "type": "object", - "properties": { - "w": { "type": "string" }, - "a": { "type": "integer" }, - "d": { "type": "integer" }, - "c": { "type": "integer" } - } - } - } - }, - "required": ["author", "total", "weeks"] - }, - "participation-stats": { - "title": "Participation Stats", - "type": "object", - "properties": { - "all": { "type": "array", "items": { "type": "integer" } }, - "owner": { "type": "array", "items": { "type": "integer" } } - } - }, - "repository-subscription": { - "title": "Repository Invitation", - "description": "Repository invitations let you manage who you collaborate with.", - "type": "object", - "properties": { - "subscribed": { - "description": "Determines if notifications should be received from this repository.", - "type": "boolean", - "example": true - }, - "ignored": { - "description": "Determines if all notifications should be blocked from this repository.", - "type": "boolean" - }, - "reason": { "type": "string", "nullable": true }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2012-10-06T21:34:12Z" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/example/subscription" - }, - "repository_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/repos/octocat/example" - } - }, - "required": [ - "created_at", - "ignored", - "reason", - "subscribed", - "url", - "repository_url" - ] - }, - "tag": { - "title": "Tag", - "description": "Tag", - "type": "object", - "properties": { - "name": { "type": "string", "example": "v0.1" }, - "commit": { - "type": "object", - "properties": { - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": ["sha", "url"] - }, - "zipball_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/zipball/v0.1" - }, - "tarball_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat/Hello-World/tarball/v0.1" - }, - "node_id": { "type": "string" } - }, - "required": ["name", "node_id", "commit", "zipball_url", "tarball_url"] - }, - "topic": { - "title": "Topic", - "description": "A topic aggregates entities that are related to a subject.", - "type": "object", - "properties": { - "names": { "type": "array", "items": { "type": "string" } } - } - }, - "traffic": { - "title": "Traffic", - "type": "object", - "properties": { - "timestamp": { "type": "string", "format": "date-time" }, - "uniques": { "type": "integer" }, - "count": { "type": "integer" } - }, - "required": ["timestamp", "uniques", "count"] - }, - "clone-traffic": { - "title": "Clone Traffic", - "description": "Clone Traffic", - "type": "object", - "properties": { - "count": { "type": "integer", "example": 173 }, - "uniques": { "type": "integer", "example": 128 }, - "clones": { - "type": "array", - "items": { "$ref": "#/components/schemas/traffic" } - } - }, - "required": ["uniques", "count", "clones"] - }, - "content-traffic": { - "title": "Content Traffic", - "description": "Content Traffic", - "type": "object", - "properties": { - "path": { "type": "string", "example": "/github/hubot" }, - "title": { - "type": "string", - "example": "github/hubot: A customizable life embetterment robot." - }, - "count": { "type": "integer", "example": 3542 }, - "uniques": { "type": "integer", "example": 2225 } - }, - "required": ["path", "title", "uniques", "count"] - }, - "referrer-traffic": { - "title": "Referrer Traffic", - "description": "Referrer Traffic", - "type": "object", - "properties": { - "referrer": { "type": "string", "example": "Google" }, - "count": { "type": "integer", "example": 4 }, - "uniques": { "type": "integer", "example": 3 } - }, - "required": ["referrer", "uniques", "count"] - }, - "view-traffic": { - "title": "View Traffic", - "description": "View Traffic", - "type": "object", - "properties": { - "count": { "type": "integer", "example": 14850 }, - "uniques": { "type": "integer", "example": 3782 }, - "views": { - "type": "array", - "items": { "$ref": "#/components/schemas/traffic" } - } - }, - "required": ["uniques", "count", "views"] - }, - "scim-group-list-enterprise": { - "type": "object", - "properties": { - "schemas": { "type": "array", "items": { "type": "string" } }, - "totalResults": { "type": "number" }, - "itemsPerPage": { "type": "number" }, - "startIndex": { "type": "number" }, - "Resources": { - "type": "array", - "items": { - "type": "object", - "properties": { - "schemas": { "type": "array", "items": { "type": "string" } }, - "id": { "type": "string" }, - "externalId": { "type": "string", "nullable": true }, - "displayName": { "type": "string" }, - "members": { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": { "type": "string" }, - "$ref": { "type": "string" }, - "display": { "type": "string" } - } - } - }, - "meta": { - "type": "object", - "properties": { - "resourceType": { "type": "string" }, - "created": { "type": "string" }, - "lastModified": { "type": "string" }, - "location": { "type": "string" } - } - } - } - } - } - } - }, - "scim-enterprise-group": { - "type": "object", - "properties": { - "schemas": { "type": "array", "items": { "type": "string" } }, - "id": { "type": "string" }, - "externalId": { "type": "string", "nullable": true }, - "displayName": { "type": "string" }, - "members": { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": { "type": "string" }, - "$ref": { "type": "string" }, - "display": { "type": "string" } - } - } - }, - "meta": { - "type": "object", - "properties": { - "resourceType": { "type": "string" }, - "created": { "type": "string" }, - "lastModified": { "type": "string" }, - "location": { "type": "string" } - } - } - } - }, - "scim-user-list-enterprise": { - "type": "object", - "properties": { - "schemas": { "type": "array", "items": { "type": "string" } }, - "totalResults": { "type": "number" }, - "itemsPerPage": { "type": "number" }, - "startIndex": { "type": "number" }, - "Resources": { - "type": "array", - "items": { - "type": "object", - "properties": { - "schemas": { "type": "array", "items": { "type": "string" } }, - "id": { "type": "string" }, - "externalId": { "type": "string" }, - "userName": { "type": "string" }, - "name": { - "type": "object", - "properties": { - "givenName": { "type": "string" }, - "familyName": { "type": "string" } - } - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": { "type": "string" }, - "primary": { "type": "boolean" }, - "type": { "type": "string" } - } - } - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { "value": { "type": "string" } } - } - }, - "active": { "type": "boolean" }, - "meta": { - "type": "object", - "properties": { - "resourceType": { "type": "string" }, - "created": { "type": "string" }, - "lastModified": { "type": "string" }, - "location": { "type": "string" } - } - } - } - } - } - } - }, - "scim-enterprise-user": { - "type": "object", - "properties": { - "schemas": { "type": "array", "items": { "type": "string" } }, - "id": { "type": "string" }, - "externalId": { "type": "string" }, - "userName": { "type": "string" }, - "name": { - "type": "object", - "properties": { - "givenName": { "type": "string" }, - "familyName": { "type": "string" } - } - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": { "type": "string" }, - "type": { "type": "string" }, - "primary": { "type": "boolean" } - } - } - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { "value": { "type": "string" } } - } - }, - "active": { "type": "boolean" }, - "meta": { - "type": "object", - "properties": { - "resourceType": { "type": "string" }, - "created": { "type": "string" }, - "lastModified": { "type": "string" }, - "location": { "type": "string" } - } - } - } - }, - "scim-user": { - "title": "SCIM /Users", - "description": "SCIM /Users provisioning endpoints", - "type": "object", - "properties": { - "schemas": { - "description": "SCIM schema used.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "example": "urn:ietf:params:scim:schemas:core:2.0:User" - } - }, - "id": { - "description": "Unique identifier of an external identity", - "example": "1b78eada-9baa-11e6-9eb6-a431576d590e", - "type": "string" - }, - "externalId": { - "description": "The ID of the User.", - "type": "string", - "example": "a7b0f98395", - "nullable": true - }, - "userName": { - "description": "Configured by the admin. Could be an email, login, or username", - "example": "someone@example.com", - "type": "string", - "nullable": true - }, - "displayName": { - "description": "The name of the user, suitable for display to end-users", - "example": "Jon Doe", - "type": "string", - "nullable": true - }, - "name": { - "type": "object", - "properties": { - "givenName": { "type": "string", "nullable": true }, - "familyName": { "type": "string", "nullable": true }, - "formatted": { "type": "string", "nullable": true } - }, - "required": ["givenName", "familyName"], - "example": "Jane User" - }, - "emails": { - "description": "user emails", - "example": ["someone@example.com", "another@example.com"], - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "value": { "type": "string" }, - "primary": { "type": "boolean" } - }, - "required": ["value"] - } - }, - "active": { - "description": "The active status of the User.", - "type": "boolean", - "example": true - }, - "meta": { - "type": "object", - "properties": { - "resourceType": { "type": "string", "example": "User" }, - "created": { - "type": "string", - "format": "date-time", - "example": "2019-01-24T22:45:36.000Z" - }, - "lastModified": { - "type": "string", - "format": "date-time", - "example": "2019-01-24T22:45:36.000Z" - }, - "location": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/scim/v2/organizations/myorg-123abc55141bfd8f/Users/c42772b5-2029-11e9-8543-9264a97dec8d" - } - } - }, - "organization_id": { - "description": "The ID of the organization.", - "type": "integer" - }, - "operations": { - "description": "Set of operations to be performed", - "example": [{ "op": "replace", "value": { "active": false } }], - "type": "array", - "minItems": 1, - "items": { - "properties": { - "op": { - "type": "string", - "enum": ["add", "remove", "replace"] - }, - "path": { "type": "string" }, - "value": { - "oneOf": [ - { "type": "string" }, - { "type": "object" }, - { "type": "array", "items": {} } - ] - } - }, - "required": ["op"], - "type": "object" - } - }, - "groups": { - "description": "associated groups", - "type": "array", - "items": { - "properties": { - "value": { "type": "string" }, - "display": { "type": "string" } - } - } - } - }, - "required": [ - "id", - "schemas", - "externalId", - "userName", - "name", - "emails", - "active", - "meta" - ] - }, - "scim-user-list": { - "title": "SCIM User List", - "description": "SCIM User List", - "type": "object", - "properties": { - "schemas": { - "description": "SCIM schema used.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "example": "urn:ietf:params:scim:api:messages:2.0:ListResponse" - } - }, - "totalResults": { "type": "integer", "example": 3 }, - "itemsPerPage": { "type": "integer", "example": 10 }, - "startIndex": { "type": "integer", "example": 1 }, - "Resources": { - "type": "array", - "items": { "$ref": "#/components/schemas/scim-user" } - } - }, - "required": [ - "schemas", - "totalResults", - "itemsPerPage", - "startIndex", - "Resources" - ] - }, - "search-result-text-matches": { - "title": "Search Result Text Matches", - "type": "array", - "items": { - "type": "object", - "properties": { - "object_url": { "type": "string" }, - "object_type": { "nullable": true, "type": "string" }, - "property": { "type": "string" }, - "fragment": { "type": "string" }, - "matches": { - "type": "array", - "items": { - "type": "object", - "properties": { - "text": { "type": "string" }, - "indices": { "type": "array", "items": { "type": "integer" } } - } - } - } - } - } - }, - "code-search-result-item": { - "title": "Code Search Result Item", - "description": "Code Search Result Item", - "type": "object", - "properties": { - "name": { "type": "string" }, - "path": { "type": "string" }, - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "git_url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "repository": { "$ref": "#/components/schemas/minimal-repository" }, - "score": { "type": "integer" }, - "file_size": { "type": "integer" }, - "language": { "type": "string", "nullable": true }, - "last_modified_at": { "type": "string", "format": "date-time" }, - "line_numbers": { - "type": "array", - "items": { "type": "string", "example": ["73..77", "77..78"] } - }, - "text_matches": { - "$ref": "#/components/schemas/search-result-text-matches" - } - }, - "required": [ - "score", - "name", - "path", - "sha", - "git_url", - "html_url", - "url", - "repository" - ] - }, - "commit-search-result-item": { - "title": "Commit Search Result Item", - "description": "Commit Search Result Item", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "sha": { "type": "string" }, - "html_url": { "type": "string", "format": "uri" }, - "comments_url": { "type": "string", "format": "uri" }, - "commit": { - "type": "object", - "properties": { - "author": { - "type": "object", - "properties": { - "name": { "type": "string" }, - "email": { "type": "string" }, - "date": { "type": "string", "format": "date-time" } - }, - "required": ["name", "email", "date"] - }, - "committer": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/git-user" }] - }, - "comment_count": { "type": "integer" }, - "message": { "type": "string" }, - "tree": { - "type": "object", - "properties": { - "sha": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - }, - "required": ["sha", "url"] - }, - "url": { "type": "string", "format": "uri" }, - "verification": { "$ref": "#/components/schemas/verification" } - }, - "required": [ - "author", - "committer", - "comment_count", - "message", - "tree", - "url" - ] - }, - "author": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "committer": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/git-user" }] - }, - "parents": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { "type": "string" }, - "html_url": { "type": "string" }, - "sha": { "type": "string" } - } - } - }, - "repository": { "$ref": "#/components/schemas/minimal-repository" }, - "score": { "type": "integer" }, - "node_id": { "type": "string" }, - "text_matches": { - "$ref": "#/components/schemas/search-result-text-matches" - } - }, - "required": [ - "sha", - "node_id", - "url", - "html_url", - "author", - "committer", - "parents", - "comments_url", - "commit", - "repository", - "score" - ] - }, - "issue-search-result-item": { - "title": "Issue Search Result Item", - "description": "Issue Search Result Item", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "repository_url": { "type": "string", "format": "uri" }, - "labels_url": { "type": "string" }, - "comments_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "number": { "type": "integer" }, - "title": { "type": "string" }, - "locked": { "type": "boolean" }, - "active_lock_reason": { "type": "string", "nullable": true }, - "assignees": { - "type": "array", - "items": { "$ref": "#/components/schemas/simple-user" }, - "nullable": true - }, - "user": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "labels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string" }, - "name": { "type": "string" }, - "color": { "type": "string" }, - "default": { "type": "boolean" }, - "description": { "type": "string", "nullable": true } - } - } - }, - "state": { "type": "string" }, - "assignee": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "milestone": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/milestone" }] - }, - "comments": { "type": "integer" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "text_matches": { - "$ref": "#/components/schemas/search-result-text-matches" - }, - "pull_request": { - "type": "object", - "properties": { - "merged_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "diff_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "html_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "patch_url": { - "type": "string", - "format": "uri", - "nullable": true - }, - "url": { "type": "string", "format": "uri", "nullable": true } - }, - "required": ["diff_url", "html_url", "patch_url", "url"] - }, - "body": { "type": "string" }, - "score": { "type": "integer" }, - "author_association": { "type": "string" }, - "draft": { "type": "boolean" }, - "repository": { "$ref": "#/components/schemas/repository" }, - "body_html": { "type": "string" }, - "body_text": { "type": "string" }, - "timeline_url": { "type": "string", "format": "uri" }, - "performed_via_github_app": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/integration" }] - } - }, - "required": [ - "assignee", - "closed_at", - "comments", - "comments_url", - "events_url", - "html_url", - "id", - "node_id", - "labels", - "labels_url", - "milestone", - "number", - "repository_url", - "state", - "locked", - "title", - "url", - "user", - "author_association", - "created_at", - "updated_at", - "score" - ] - }, - "label-search-result-item": { - "title": "Label Search Result Item", - "description": "Label Search Result Item", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "url": { "type": "string", "format": "uri" }, - "name": { "type": "string" }, - "color": { "type": "string" }, - "default": { "type": "boolean" }, - "description": { "type": "string", "nullable": true }, - "score": { "type": "integer" }, - "text_matches": { - "$ref": "#/components/schemas/search-result-text-matches" - } - }, - "required": [ - "id", - "node_id", - "url", - "name", - "color", - "default", - "description", - "score" - ] - }, - "repo-search-result-item": { - "title": "Repo Search Result Item", - "description": "Repo Search Result Item", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "name": { "type": "string" }, - "full_name": { "type": "string" }, - "owner": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/simple-user" }] - }, - "private": { "type": "boolean" }, - "html_url": { "type": "string", "format": "uri" }, - "description": { "type": "string", "nullable": true }, - "fork": { "type": "boolean" }, - "url": { "type": "string", "format": "uri" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "pushed_at": { "type": "string", "format": "date-time" }, - "homepage": { "type": "string", "format": "uri", "nullable": true }, - "size": { "type": "integer" }, - "stargazers_count": { "type": "integer" }, - "watchers_count": { "type": "integer" }, - "language": { "type": "string", "nullable": true }, - "forks_count": { "type": "integer" }, - "open_issues_count": { "type": "integer" }, - "master_branch": { "type": "string" }, - "default_branch": { "type": "string" }, - "score": { "type": "integer" }, - "forks_url": { "type": "string", "format": "uri" }, - "keys_url": { "type": "string" }, - "collaborators_url": { "type": "string" }, - "teams_url": { "type": "string", "format": "uri" }, - "hooks_url": { "type": "string", "format": "uri" }, - "issue_events_url": { "type": "string" }, - "events_url": { "type": "string", "format": "uri" }, - "assignees_url": { "type": "string" }, - "branches_url": { "type": "string" }, - "tags_url": { "type": "string", "format": "uri" }, - "blobs_url": { "type": "string" }, - "git_tags_url": { "type": "string" }, - "git_refs_url": { "type": "string" }, - "trees_url": { "type": "string" }, - "statuses_url": { "type": "string" }, - "languages_url": { "type": "string", "format": "uri" }, - "stargazers_url": { "type": "string", "format": "uri" }, - "contributors_url": { "type": "string", "format": "uri" }, - "subscribers_url": { "type": "string", "format": "uri" }, - "subscription_url": { "type": "string", "format": "uri" }, - "commits_url": { "type": "string" }, - "git_commits_url": { "type": "string" }, - "comments_url": { "type": "string" }, - "issue_comment_url": { "type": "string" }, - "contents_url": { "type": "string" }, - "compare_url": { "type": "string" }, - "merges_url": { "type": "string", "format": "uri" }, - "archive_url": { "type": "string" }, - "downloads_url": { "type": "string", "format": "uri" }, - "issues_url": { "type": "string" }, - "pulls_url": { "type": "string" }, - "milestones_url": { "type": "string" }, - "notifications_url": { "type": "string" }, - "labels_url": { "type": "string" }, - "releases_url": { "type": "string" }, - "deployments_url": { "type": "string", "format": "uri" }, - "git_url": { "type": "string" }, - "ssh_url": { "type": "string" }, - "clone_url": { "type": "string" }, - "svn_url": { "type": "string", "format": "uri" }, - "forks": { "type": "integer" }, - "open_issues": { "type": "integer" }, - "watchers": { "type": "integer" }, - "topics": { "type": "array", "items": { "type": "string" } }, - "mirror_url": { "type": "string", "format": "uri", "nullable": true }, - "has_issues": { "type": "boolean" }, - "has_projects": { "type": "boolean" }, - "has_pages": { "type": "boolean" }, - "has_wiki": { "type": "boolean" }, - "has_downloads": { "type": "boolean" }, - "archived": { "type": "boolean" }, - "disabled": { - "type": "boolean", - "description": "Returns whether or not this repository disabled." - }, - "license": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/license-simple" }] - }, - "permissions": { - "type": "object", - "properties": { - "admin": { "type": "boolean" }, - "pull": { "type": "boolean" }, - "push": { "type": "boolean" } - }, - "required": ["admin", "pull", "push"] - }, - "text_matches": { - "$ref": "#/components/schemas/search-result-text-matches" - }, - "temp_clone_token": { "type": "string" }, - "allow_merge_commit": { "type": "boolean" }, - "allow_squash_merge": { "type": "boolean" }, - "allow_rebase_merge": { "type": "boolean" }, - "delete_branch_on_merge": { "type": "boolean" } - }, - "required": [ - "archive_url", - "assignees_url", - "blobs_url", - "branches_url", - "collaborators_url", - "comments_url", - "commits_url", - "compare_url", - "contents_url", - "contributors_url", - "deployments_url", - "description", - "downloads_url", - "events_url", - "fork", - "forks_url", - "full_name", - "git_commits_url", - "git_refs_url", - "git_tags_url", - "hooks_url", - "html_url", - "id", - "node_id", - "issue_comment_url", - "issue_events_url", - "issues_url", - "keys_url", - "labels_url", - "languages_url", - "merges_url", - "milestones_url", - "name", - "notifications_url", - "owner", - "private", - "pulls_url", - "releases_url", - "stargazers_url", - "statuses_url", - "subscribers_url", - "subscription_url", - "tags_url", - "teams_url", - "trees_url", - "url", - "clone_url", - "default_branch", - "forks", - "forks_count", - "git_url", - "has_downloads", - "has_issues", - "has_projects", - "has_wiki", - "has_pages", - "homepage", - "language", - "archived", - "disabled", - "mirror_url", - "open_issues", - "open_issues_count", - "license", - "pushed_at", - "size", - "ssh_url", - "stargazers_count", - "svn_url", - "watchers", - "watchers_count", - "created_at", - "updated_at", - "score" - ] - }, - "topic-search-result-item": { - "title": "Topic Search Result Item", - "description": "Topic Search Result Item", - "type": "object", - "properties": { - "name": { "type": "string" }, - "display_name": { "type": "string", "nullable": true }, - "short_description": { "type": "string", "nullable": true }, - "description": { "type": "string", "nullable": true }, - "created_by": { "type": "string", "nullable": true }, - "released": { "type": "string", "nullable": true }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "featured": { "type": "boolean" }, - "curated": { "type": "boolean" }, - "score": { "type": "integer" }, - "repository_count": { "type": "integer", "nullable": true }, - "logo_url": { "type": "string", "format": "uri", "nullable": true }, - "text_matches": { - "$ref": "#/components/schemas/search-result-text-matches" - }, - "related": { - "type": "array", - "nullable": true, - "items": { - "type": "object", - "properties": { - "topic_relation": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "name": { "type": "string" }, - "topic_id": { "type": "integer" }, - "relation_type": { "type": "string" } - } - } - } - } - }, - "aliases": { - "type": "array", - "nullable": true, - "items": { - "type": "object", - "properties": { - "topic_relation": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "name": { "type": "string" }, - "topic_id": { "type": "integer" }, - "relation_type": { "type": "string" } - } - } - } - } - } - }, - "required": [ - "name", - "display_name", - "short_description", - "description", - "created_by", - "released", - "created_at", - "updated_at", - "featured", - "curated", - "score" - ] - }, - "user-search-result-item": { - "title": "User Search Result Item", - "description": "User Search Result Item", - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "avatar_url": { "type": "string", "format": "uri" }, - "gravatar_id": { "type": "string", "nullable": true }, - "url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "followers_url": { "type": "string", "format": "uri" }, - "subscriptions_url": { "type": "string", "format": "uri" }, - "organizations_url": { "type": "string", "format": "uri" }, - "repos_url": { "type": "string", "format": "uri" }, - "received_events_url": { "type": "string", "format": "uri" }, - "type": { "type": "string" }, - "score": { "type": "integer" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "starred_url": { "type": "string" }, - "events_url": { "type": "string" }, - "public_repos": { "type": "integer" }, - "public_gists": { "type": "integer" }, - "followers": { "type": "integer" }, - "following": { "type": "integer" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "name": { "type": "string", "nullable": true }, - "bio": { "type": "string", "nullable": true }, - "email": { "type": "string", "format": "email", "nullable": true }, - "location": { "type": "string", "nullable": true }, - "site_admin": { "type": "boolean" }, - "hireable": { "type": "boolean", "nullable": true }, - "text_matches": { - "$ref": "#/components/schemas/search-result-text-matches" - }, - "blog": { "type": "string", "nullable": true }, - "company": { "type": "string", "nullable": true }, - "suspended_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "avatar_url", - "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", - "html_url", - "id", - "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", - "url", - "score" - ] - }, - "private-user": { - "title": "Private User", - "description": "Private User", - "type": "object", - "properties": { - "login": { "type": "string", "example": "octocat" }, - "id": { "type": "integer", "example": 1 }, - "node_id": { "type": "string", "example": "MDQ6VXNlcjE=" }, - "avatar_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/images/error/octocat_happy.gif" - }, - "gravatar_id": { "type": "string", "example": "", "nullable": true }, - "url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat" - }, - "html_url": { - "type": "string", - "format": "uri", - "example": "https://github.com/octocat" - }, - "followers_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/followers" - }, - "following_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/following{/other_user}" - }, - "gists_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/gists{/gist_id}" - }, - "starred_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/starred{/owner}{/repo}" - }, - "subscriptions_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/subscriptions" - }, - "organizations_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/orgs" - }, - "repos_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/repos" - }, - "events_url": { - "type": "string", - "example": "https://api.github.com/users/octocat/events{/privacy}" - }, - "received_events_url": { - "type": "string", - "format": "uri", - "example": "https://api.github.com/users/octocat/received_events" - }, - "type": { "type": "string", "example": "User" }, - "site_admin": { "type": "boolean" }, - "name": { - "type": "string", - "example": "monalisa octocat", - "nullable": true - }, - "company": { - "type": "string", - "example": "GitHub", - "nullable": true - }, - "blog": { - "type": "string", - "example": "https://github.com/blog", - "nullable": true - }, - "location": { - "type": "string", - "example": "San Francisco", - "nullable": true - }, - "email": { - "type": "string", - "format": "email", - "example": "octocat@github.com", - "nullable": true - }, - "hireable": { "type": "boolean", "nullable": true }, - "bio": { - "type": "string", - "example": "There once was...", - "nullable": true - }, - "twitter_username": { - "type": "string", - "example": "monalisa", - "nullable": true - }, - "public_repos": { "type": "integer", "example": 2 }, - "public_gists": { "type": "integer", "example": 1 }, - "followers": { "type": "integer", "example": 20 }, - "following": { "type": "integer", "example": 0 }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2008-01-14T04:33:35Z" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2008-01-14T04:33:35Z" - }, - "private_gists": { "type": "integer", "example": 81 }, - "total_private_repos": { "type": "integer", "example": 100 }, - "owned_private_repos": { "type": "integer", "example": 100 }, - "disk_usage": { "type": "integer", "example": 10000 }, - "collaborators": { "type": "integer", "example": 8 }, - "two_factor_authentication": { "type": "boolean", "example": true }, - "plan": { - "type": "object", - "properties": { - "collaborators": { "type": "integer" }, - "name": { "type": "string" }, - "space": { "type": "integer" }, - "private_repos": { "type": "integer" } - }, - "required": ["collaborators", "name", "space", "private_repos"] - }, - "suspended_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "business_plus": { "type": "boolean" }, - "ldap_dn": { "type": "string" } - }, - "required": [ - "avatar_url", - "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", - "html_url", - "id", - "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", - "url", - "bio", - "blog", - "company", - "email", - "followers", - "following", - "hireable", - "location", - "name", - "public_gists", - "public_repos", - "created_at", - "updated_at", - "collaborators", - "disk_usage", - "owned_private_repos", - "private_gists", - "total_private_repos", - "two_factor_authentication" - ] - }, - "public-user": { - "title": "Public User", - "description": "Public User", - "type": "object", - "properties": { - "login": { "type": "string" }, - "id": { "type": "integer" }, - "node_id": { "type": "string" }, - "avatar_url": { "type": "string", "format": "uri" }, - "gravatar_id": { "type": "string", "nullable": true }, - "url": { "type": "string", "format": "uri" }, - "html_url": { "type": "string", "format": "uri" }, - "followers_url": { "type": "string", "format": "uri" }, - "following_url": { "type": "string" }, - "gists_url": { "type": "string" }, - "starred_url": { "type": "string" }, - "subscriptions_url": { "type": "string", "format": "uri" }, - "organizations_url": { "type": "string", "format": "uri" }, - "repos_url": { "type": "string", "format": "uri" }, - "events_url": { "type": "string" }, - "received_events_url": { "type": "string", "format": "uri" }, - "type": { "type": "string" }, - "site_admin": { "type": "boolean" }, - "name": { "type": "string", "nullable": true }, - "company": { "type": "string", "nullable": true }, - "blog": { "type": "string", "nullable": true }, - "location": { "type": "string", "nullable": true }, - "email": { "type": "string", "format": "email", "nullable": true }, - "hireable": { "type": "boolean", "nullable": true }, - "bio": { "type": "string", "nullable": true }, - "twitter_username": { "type": "string", "nullable": true }, - "public_repos": { "type": "integer" }, - "public_gists": { "type": "integer" }, - "followers": { "type": "integer" }, - "following": { "type": "integer" }, - "created_at": { "type": "string", "format": "date-time" }, - "updated_at": { "type": "string", "format": "date-time" }, - "plan": { - "type": "object", - "properties": { - "collaborators": { "type": "integer" }, - "name": { "type": "string" }, - "space": { "type": "integer" }, - "private_repos": { "type": "integer" } - }, - "required": ["collaborators", "name", "space", "private_repos"] - }, - "suspended_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "private_gists": { "type": "integer", "example": "0" }, - "total_private_repos": { "type": "integer", "example": "0" }, - "owned_private_repos": { "type": "integer", "example": "0" }, - "disk_usage": { "type": "integer", "example": "0" }, - "collaborators": { "type": "integer", "example": "0" } - }, - "required": [ - "avatar_url", - "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", - "html_url", - "id", - "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", - "url", - "bio", - "blog", - "company", - "email", - "followers", - "following", - "hireable", - "location", - "name", - "public_gists", - "public_repos", - "created_at", - "updated_at" - ], - "additionalProperties": false - }, - "email": { - "title": "Email", - "description": "Email", - "oneOf": [ - { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "example": "octocat@github.com" - }, - "primary": { "type": "boolean", "example": true }, - "verified": { "type": "boolean", "example": true }, - "visibility": { - "type": "string", - "example": "public", - "nullable": true - } - }, - "required": ["email", "primary", "verified", "visibility"] - }, - { "type": "string" } - ] - }, - "gpg-key": { - "title": "GPG Key", - "description": "A unique encryption key", - "type": "object", - "properties": { - "id": { "type": "integer", "example": 3 }, - "primary_key_id": { "type": "integer", "nullable": true }, - "key_id": { "type": "string", "example": "3262EFF25BA0D270" }, - "public_key": { "type": "string", "example": "xsBNBFayYZ..." }, - "emails": { - "type": "array", - "example": [ - { - "email": "mastahyeti@users.noreply.github.com", - "verified": true - } - ], - "items": { - "type": "object", - "properties": { - "email": { "type": "string" }, - "verified": { "type": "boolean" } - } - } - }, - "subkeys": { - "type": "array", - "example": [ - { - "id": 4, - "primary_key_id": 3, - "key_id": "4A595D4C72EE49C7", - "public_key": "zsBNBFayYZ...", - "emails": [], - "subkeys": [], - "can_sign": false, - "can_encrypt_comms": true, - "can_encrypt_storage": true, - "can_certify": false, - "created_at": "2016-03-24T11:31:04-06:00", - "expires_at": null - } - ], - "items": { - "type": "object", - "properties": { - "id": { "type": "integer" }, - "primary_key_id": { "type": "integer" }, - "key_id": { "type": "string" }, - "public_key": { "type": "string" }, - "emails": { "type": "array", "items": {} }, - "subkeys": { "type": "array", "items": {} }, - "can_sign": { "type": "boolean" }, - "can_encrypt_comms": { "type": "boolean" }, - "can_encrypt_storage": { "type": "boolean" }, - "can_certify": { "type": "boolean" }, - "created_at": { "type": "string" }, - "expires_at": { "type": "string", "nullable": true }, - "raw_key": { "type": "string", "nullable": true } - } - } - }, - "can_sign": { "type": "boolean", "example": true }, - "can_encrypt_comms": { "type": "boolean" }, - "can_encrypt_storage": { "type": "boolean" }, - "can_certify": { "type": "boolean", "example": true }, - "created_at": { - "type": "string", - "format": "date-time", - "example": "2016-03-24T11:31:04-06:00" - }, - "expires_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "raw_key": { "type": "string", "nullable": true } - }, - "required": [ - "id", - "primary_key_id", - "key_id", - "raw_key", - "public_key", - "created_at", - "expires_at", - "can_sign", - "can_encrypt_comms", - "can_encrypt_storage", - "can_certify", - "emails", - "subkeys" - ] - }, - "key": { - "title": "Key", - "description": "Key", - "type": "object", - "properties": { - "key_id": { "type": "string" }, - "key": { "type": "string" }, - "id": { "type": "integer" }, - "url": { "type": "string" }, - "title": { "type": "string" }, - "created_at": { "type": "string", "format": "date-time" }, - "verified": { "type": "boolean" }, - "read_only": { "type": "boolean" } - } - }, - "marketplace-account": { - "title": "Marketplace Account", - "type": "object", - "properties": { - "url": { "type": "string", "format": "uri" }, - "id": { "type": "integer" }, - "type": { "type": "string" }, - "node_id": { "type": "string" }, - "login": { "type": "string" }, - "email": { "type": "string", "nullable": true, "format": "email" }, - "organization_billing_email": { - "type": "string", - "nullable": true, - "format": "email" - } - }, - "required": ["url", "id", "type", "login"] - }, - "user-marketplace-purchase": { - "title": "User Marketplace Purchase", - "description": "User Marketplace Purchase", - "type": "object", - "properties": { - "billing_cycle": { "type": "string", "example": "monthly" }, - "next_billing_date": { - "type": "string", - "format": "date-time", - "example": "2017-11-11T00:00:00Z", - "nullable": true - }, - "unit_count": { "type": "integer", "nullable": true }, - "on_free_trial": { "type": "boolean", "example": true }, - "free_trial_ends_on": { - "type": "string", - "format": "date-time", - "example": "2017-11-11T00:00:00Z", - "nullable": true - }, - "updated_at": { - "type": "string", - "format": "date-time", - "example": "2017-11-02T01:12:12Z", - "nullable": true - }, - "account": { "$ref": "#/components/schemas/marketplace-account" }, - "plan": { "$ref": "#/components/schemas/marketplace-listing-plan" } - }, - "required": [ - "billing_cycle", - "next_billing_date", - "unit_count", - "updated_at", - "on_free_trial", - "free_trial_ends_on", - "account", - "plan" - ] - }, - "starred-repository": { - "title": "Starred Repository", - "description": "Starred Repository", - "type": "object", - "properties": { - "starred_at": { "type": "string", "format": "date-time" }, - "repo": { "$ref": "#/components/schemas/repository" } - }, - "required": ["starred_at", "repo"] - }, - "hovercard": { - "title": "Hovercard", - "description": "Hovercard", - "type": "object", - "properties": { - "contexts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "message": { "type": "string" }, - "octicon": { "type": "string" } - }, - "required": ["message", "octicon"] - } - } - }, - "required": ["contexts"] - }, - "key-simple": { - "title": "Key Simple", - "description": "Key Simple", - "type": "object", - "properties": { - "id": { "type": "integer" }, - "key": { "type": "string" } - }, - "required": ["key", "id"] - } - }, - "examples": { - "integration": { - "value": { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - } - }, - "integration-from-manifest": { - "value": { - "id": 1, - "slug": "octoapp", - "node_id": "MDxOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"], - "client_id": "Iv1.8a61f9b3a7aba766", - "client_secret": "1726be1638095a19edd134c77bde3aa2ece1e5d8", - "webhook_secret": "e340154128314309424b7c8e90325147d99fdafa", - "pem": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAuEPzOUE+kiEH1WLiMeBytTEF856j0hOVcSUSUkZxKvqczkWM\n9vo1gDyC7ZXhdH9fKh32aapba3RSsp4ke+giSmYTk2mGR538ShSDxh0OgpJmjiKP\nX0Bj4j5sFqfXuCtl9SkH4iueivv4R53ktqM+n6hk98l6hRwC39GVIblAh2lEM4L/\n6WvYwuQXPMM5OG2Ryh2tDZ1WS5RKfgq+9ksNJ5Q9UtqtqHkO+E63N5OK9sbzpUUm\noNaOl3udTlZD3A8iqwMPVxH4SxgATBPAc+bmjk6BMJ0qIzDcVGTrqrzUiywCTLma\nszdk8GjzXtPDmuBgNn+o6s02qVGpyydgEuqmTQIDAQABAoIBACL6AvkjQVVLn8kJ\ndBYznJJ4M8ECo+YEgaFwgAHODT0zRQCCgzd+Vxl4YwHmKV2Lr+y2s0drZt8GvYva\nKOK8NYYZyi15IlwFyRXmvvykF1UBpSXluYFDH7KaVroWMgRreHcIys5LqVSIb6Bo\ngDmK0yBLPp8qR29s2b7ScZRtLaqGJiX+j55rNzrZwxHkxFHyG9OG+u9IsBElcKCP\nkYCVE8ZdYexfnKOZbgn2kZB9qu0T/Mdvki8yk3I2bI6xYO24oQmhnT36qnqWoCBX\nNuCNsBQgpYZeZET8mEAUmo9d+ABmIHIvSs005agK8xRaP4+6jYgy6WwoejJRF5yd\nNBuF7aECgYEA50nZ4FiZYV0vcJDxFYeY3kYOvVuKn8OyW+2rg7JIQTremIjv8FkE\nZnwuF9ZRxgqLxUIfKKfzp/5l5LrycNoj2YKfHKnRejxRWXqG+ZETfxxlmlRns0QG\nJ4+BYL0CoanDSeA4fuyn4Bv7cy/03TDhfg/Uq0Aeg+hhcPE/vx3ebPsCgYEAy/Pv\neDLssOSdeyIxf0Brtocg6aPXIVaLdus+bXmLg77rJIFytAZmTTW8SkkSczWtucI3\nFI1I6sei/8FdPzAl62/JDdlf7Wd9K7JIotY4TzT7Tm7QU7xpfLLYIP1bOFjN81rk\n77oOD4LsXcosB/U6s1blPJMZ6AlO2EKs10UuR1cCgYBipzuJ2ADEaOz9RLWwi0AH\nPza2Sj+c2epQD9ZivD7Zo/Sid3ZwvGeGF13JyR7kLEdmAkgsHUdu1rI7mAolXMaB\n1pdrsHureeLxGbRM6za3tzMXWv1Il7FQWoPC8ZwXvMOR1VQDv4nzq7vbbA8z8c+c\n57+8tALQHOTDOgQIzwK61QKBgERGVc0EJy4Uag+VY8J4m1ZQKBluqo7TfP6DQ7O8\nM5MX73maB/7yAX8pVO39RjrhJlYACRZNMbK+v/ckEQYdJSSKmGCVe0JrGYDuPtic\nI9+IGfSorf7KHPoMmMN6bPYQ7Gjh7a++tgRFTMEc8956Hnt4xGahy9NcglNtBpVN\n6G8jAoGBAMCh028pdzJa/xeBHLLaVB2sc0Fe7993WlsPmnVE779dAz7qMscOtXJK\nfgtriltLSSD6rTA9hUAsL/X62rY0wdXuNdijjBb/qvrx7CAV6i37NK1CjABNjsfG\nZM372Ac6zc1EqSrid2IjET1YqyIW2KGLI1R2xbQc98UGlt48OdWu\n-----END RSA PRIVATE KEY-----\n" - } - }, - "webhook-config": { - "value": { - "content_type": "json", - "insecure_ssl": "0", - "secret": "********", - "url": "https://example.com/webhook" - } - }, - "base-installation-items": { - "value": [ - { - "id": 1, - "account": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "access_tokens_url": "https://api.github.com/installations/1/access_tokens", - "repositories_url": "https://api.github.com/installation/repositories", - "html_url": "https://github.com/organizations/github/settings/installations/1", - "app_id": 1, - "target_id": 1, - "target_type": "Organization", - "permissions": { - "checks": "write", - "metadata": "read", - "contents": "read" - }, - "events": ["push", "pull_request"], - "single_file_name": "config.yaml", - "has_multiple_single_files": true, - "single_file_paths": ["config.yml", ".github/issue_TEMPLATE.md"], - "repository_selection": "selected", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "app_slug": "github-actions" - } - ] - }, - "base-installation": { - "value": { - "id": 1, - "account": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "access_tokens_url": "https://api.github.com/installations/1/access_tokens", - "repositories_url": "https://api.github.com/installation/repositories", - "html_url": "https://github.com/organizations/github/settings/installations/1", - "app_id": 1, - "target_id": 1, - "target_type": "Organization", - "permissions": { - "checks": "write", - "metadata": "read", - "contents": "read" - }, - "events": ["push", "pull_request"], - "single_file_name": "config.yaml", - "has_multiple_single_files": true, - "single_file_paths": ["config.yml", ".github/issue_TEMPLATE.md"], - "repository_selection": "selected", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "app_slug": "github-actions" - } - }, - "installation-token": { - "value": { - "token": "v1.1f699f1069f60xxx", - "expires_at": "2016-07-11T22:14:10Z", - "permissions": { "issues": "write", "contents": "read" }, - "repository_selection": "selected", - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ] - } - }, - "application-grant-items": { - "value": [ - { - "id": 1, - "url": "https://api.github.com/applications/grants/1", - "app": { - "url": "http://my-github-app.com", - "name": "my github app", - "client_id": "abcde12345fghij67890" - }, - "created_at": "2011-09-06T17:26:27Z", - "updated_at": "2011-09-06T20:39:23Z", - "scopes": ["public_repo"] - } - ] - }, - "application-grant": { - "value": { - "id": 1, - "url": "https://api.github.com/applications/grants/1", - "app": { - "url": "http://my-github-app.com", - "name": "my github app", - "client_id": "abcde12345fghij67890" - }, - "created_at": "2011-09-06T17:26:27Z", - "updated_at": "2011-09-06T20:39:23Z", - "scopes": ["public_repo"] - } - }, - "authorization-with-user": { - "value": { - "id": 1, - "url": "https://api.github.com/authorizations/1", - "scopes": ["public_repo"], - "token": "abcdefgh12345678", - "token_last_eight": "12345678", - "hashed_token": "25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8", - "app": { - "url": "http://my-github-app.com", - "name": "my github app", - "client_id": "abcde12345fghij67890" - }, - "note": "optional note", - "note_url": "http://optional/note/url", - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "fingerprint": "jklmnop12345678", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "authorization-items": { - "value": [ - { - "id": 1, - "url": "https://api.github.com/authorizations/1", - "scopes": ["public_repo"], - "token": "", - "token_last_eight": "12345678", - "hashed_token": "25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8", - "app": { - "url": "http://my-github-app.com", - "name": "my github app", - "client_id": "abcde12345fghij67890" - }, - "note": "optional note", - "note_url": "http://optional/note/url", - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "fingerprint": "jklmnop12345678" - } - ] - }, - "authorization": { - "value": { - "id": 1, - "url": "https://api.github.com/authorizations/1", - "scopes": ["public_repo"], - "token": "abcdefgh12345678", - "token_last_eight": "12345678", - "hashed_token": "25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8", - "app": { - "url": "http://my-github-app.com", - "name": "my github app", - "client_id": "abcde12345fghij67890" - }, - "note": "optional note", - "note_url": "http://optional/note/url", - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "fingerprint": "" - } - }, - "authorization-response-if-returning-an-existing-token-2": { - "value": { - "id": 1, - "url": "https://api.github.com/authorizations/1", - "scopes": ["public_repo"], - "token": "", - "token_last_eight": "12345678", - "hashed_token": "25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8", - "app": { - "url": "http://my-github-app.com", - "name": "my github app", - "client_id": "abcde12345fghij67890" - }, - "note": "optional note", - "note_url": "http://optional/note/url", - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "fingerprint": "" - } - }, - "authorization-response-if-returning-an-existing-token": { - "value": { - "id": 1, - "url": "https://api.github.com/authorizations/1", - "scopes": ["public_repo"], - "token": "", - "token_last_eight": "12345678", - "hashed_token": "25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8", - "app": { - "url": "http://my-github-app.com", - "name": "my github app", - "client_id": "abcde12345fghij67890" - }, - "note": "optional note", - "note_url": "http://optional/note/url", - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "fingerprint": "jklmnop12345678" - } - }, - "authorization-3": { - "value": { - "id": 1, - "url": "https://api.github.com/authorizations/1", - "scopes": ["public_repo"], - "token": "abcdefgh12345678", - "token_last_eight": "12345678", - "hashed_token": "25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8", - "app": { - "url": "http://my-github-app.com", - "name": "my github app", - "client_id": "abcde12345fghij67890" - }, - "note": "optional note", - "note_url": "http://optional/note/url", - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "fingerprint": "jklmnop12345678" - } - }, - "authorization-2": { - "value": { - "id": 1, - "url": "https://api.github.com/authorizations/1", - "scopes": ["public_repo"], - "token": "", - "token_last_eight": "12345678", - "hashed_token": "25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8", - "app": { - "url": "http://my-github-app.com", - "name": "my github app", - "client_id": "abcde12345fghij67890" - }, - "note": "optional note", - "note_url": "http://optional/note/url", - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "fingerprint": "jklmnop12345678" - } - }, - "code-of-conduct-simple-items": { - "value": [ - { - "key": "citizen_code_of_conduct", - "name": "Citizen Code of Conduct", - "url": "https://api.github.com/codes_of_conduct/citizen_code_of_conduct", - "html_url": "http://citizencodeofconduct.org/" - }, - { - "key": "contributor_covenant", - "name": "Contributor Covenant", - "url": "https://api.github.com/codes_of_conduct/contributor_covenant", - "html_url": "https://www.contributor-covenant.org/version/2/0/code_of_conduct/" - } - ] - }, - "code-of-conduct": { - "value": { - "key": "contributor_covenant", - "name": "Contributor Covenant", - "url": "https://api.github.com/codes_of_conduct/contributor_covenant", - "body": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response\n to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address,\n posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [EMAIL]. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n", - "html_url": "http://contributor-covenant.org/version/1/4/" - } - }, - "content-reference-attachment": { - "value": { - "id": 101, - "title": "[A-1234] Error found in core/models.py file'", - "body": "You have used an email that already exists for the user_email_uniq field.\n ## DETAILS:\n\nThe (email)=(Octocat@github.com) already exists.\n\n The error was found in core/models.py in get_or_create_user at line 62.\n\n self.save()" - } - }, - "actions-enterprise-permissions": { - "value": { - "enabled_organizations": "all", - "allowed_actions": "selected", - "selected_actions_url": "https://api.github.com/enterprises/2/actions/permissions/selected-actions" - } - }, - "organization-targets": { - "value": { - "total_count": 1, - "organizations": [ - { - "login": "octocat", - "id": 161335, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "url": "https://api.github.com/orgs/octo-org", - "repos_url": "https://api.github.com/orgs/octo-org/repos", - "events_url": "https://api.github.com/orgs/octo-org/events", - "hooks_url": "https://api.github.com/orgs/octo-org/hooks", - "issues_url": "https://api.github.com/orgs/octo-org/issues", - "members_url": "https://api.github.com/orgs/octo-org/members{/member}", - "public_members_url": "https://api.github.com/orgs/octo-org/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - } - ] - } - }, - "selected-actions": { - "value": { - "github_owned_allowed": true, - "verified_allowed": false, - "patterns_allowed": ["monalisa/octocat@*", "docker/*"] - } - }, - "runner-groups-enterprise": { - "value": { - "total_count": 3, - "runner_groups": [ - { - "id": 1, - "name": "Default", - "visibility": "all", - "default": true, - "runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner_groups/1/runners" - }, - { - "id": 2, - "name": "octo-runner-group", - "visibility": "selected", - "default": false, - "selected_organizations_url": "https://api.github.com/enterprises/octo-corp/actions/runner_groups/2/organizations", - "runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner_groups/2/runners" - }, - { - "id": 3, - "name": "expensive-hardware", - "visibility": "private", - "default": false, - "runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner_groups/3/runners" - } - ] - } - }, - "runner-group-enterprise": { - "value": { - "id": 2, - "name": "octo-runner-group", - "visibility": "selected", - "default": false, - "selected_organizations_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/organizations", - "runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/runners" - } - }, - "runner-group-update-enterprise": { - "value": { - "id": 2, - "name": "Expensive hardware runners", - "visibility": "selected", - "default": false, - "selected_organizations_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/organizations", - "runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/runners" - } - }, - "runner-paginated": { - "value": { - "total_count": 2, - "runners": [ - { - "id": 23, - "name": "linux_runner", - "os": "linux", - "status": "online", - "busy": true, - "labels": [ - { "id": 5, "name": "self-hosted", "type": "read-only" }, - { "id": 7, "name": "X64", "type": "read-only" }, - { "id": 11, "name": "Linux", "type": "read-only" } - ] - }, - { - "id": 24, - "name": "mac_runner", - "os": "macos", - "status": "offline", - "busy": false, - "labels": [ - { "id": 5, "name": "self-hosted", "type": "read-only" }, - { "id": 7, "name": "X64", "type": "read-only" }, - { "id": 20, "name": "macOS", "type": "read-only" }, - { "id": 21, "name": "no-gpu", "type": "custom" } - ] - } - ] - } - }, - "runner-application-items": { - "value": [ - { - "os": "osx", - "architecture": "x64", - "download_url": "https://github.com/actions/runner/releases/download/v2.164.0/actions-runner-osx-x64-2.164.0.tar.gz", - "filename": "actions-runner-osx-x64-2.164.0.tar.gz" - }, - { - "os": "linux", - "architecture": "x64", - "download_url": "https://github.com/actions/runner/releases/download/v2.164.0/actions-runner-linux-x64-2.164.0.tar.gz", - "filename": "actions-runner-linux-x64-2.164.0.tar.gz" - }, - { - "os": "linux", - "architecture": "arm", - "download_url": "https://github.com/actions/runner/releases/download/v2.164.0/actions-runner-linux-arm-2.164.0.tar.gz", - "filename": "actions-runner-linux-arm-2.164.0.tar.gz" - }, - { - "os": "win", - "architecture": "x64", - "download_url": "https://github.com/actions/runner/releases/download/v2.164.0/actions-runner-win-x64-2.164.0.zip", - "filename": "actions-runner-win-x64-2.164.0.zip" - }, - { - "os": "linux", - "architecture": "arm64", - "download_url": "https://github.com/actions/runner/releases/download/v2.164.0/actions-runner-linux-arm64-2.164.0.tar.gz", - "filename": "actions-runner-linux-arm64-2.164.0.tar.gz" - } - ] - }, - "authentication-token": { - "value": { - "token": "LLBF3JGZDX3P5PMEXLND6TS6FCWO6", - "expires_at": "2020-01-22T12:13:35.123-08:00" - } - }, - "authentication-token-2": { - "value": { - "token": "AABF3JGZDX3P5PMEXLND6TS6FCWO6", - "expires_at": "2020-01-29T12:13:35.123-08:00" - } - }, - "runner": { - "value": { - "id": 23, - "name": "MBP", - "os": "macos", - "status": "online", - "busy": true, - "labels": [ - { "id": 5, "name": "self-hosted", "type": "read-only" }, - { "id": 7, "name": "X64", "type": "read-only" }, - { "id": 20, "name": "macOS", "type": "read-only" }, - { "id": 21, "name": "no-gpu", "type": "custom" } - ] - } - }, - "actions-billing-usage": { - "value": { - "total_minutes_used": 305, - "total_paid_minutes_used": 0, - "included_minutes": 3000, - "minutes_used_breakdown": { - "UBUNTU": 205, - "MACOS": 10, - "WINDOWS": 90 - } - } - }, - "packages-billing-usage": { - "value": { - "total_gigabytes_bandwidth_used": 50, - "total_paid_gigabytes_bandwidth_used": 40, - "included_gigabytes_bandwidth": 10 - } - }, - "combined-billing-usage": { - "value": { - "days_left_in_billing_cycle": 20, - "estimated_paid_storage_for_month": 15, - "estimated_storage_for_month": 40 - } - }, - "feed": { - "value": { - "timeline_url": "https://github.com/timeline", - "user_url": "https://github.com/{user}", - "current_user_public_url": "https://github.com/octocat", - "current_user_url": "https://github.com/octocat.private?token=abc123", - "current_user_actor_url": "https://github.com/octocat.private.actor?token=abc123", - "current_user_organization_url": "", - "current_user_organization_urls": [ - "https://github.com/organizations/github/octocat.private.atom?token=abc123" - ], - "security_advisories_url": "https://github.com/security-advisories", - "_links": { - "timeline": { - "href": "https://github.com/timeline", - "type": "application/atom+xml" - }, - "user": { - "href": "https://github.com/{user}", - "type": "application/atom+xml" - }, - "current_user_public": { - "href": "https://github.com/octocat", - "type": "application/atom+xml" - }, - "current_user": { - "href": "https://github.com/octocat.private?token=abc123", - "type": "application/atom+xml" - }, - "current_user_actor": { - "href": "https://github.com/octocat.private.actor?token=abc123", - "type": "application/atom+xml" - }, - "current_user_organization": { "href": "", "type": "" }, - "current_user_organizations": [ - { - "href": "https://github.com/organizations/github/octocat.private.atom?token=abc123", - "type": "application/atom+xml" - } - ], - "security_advisories": { - "href": "https://github.com/security-advisories", - "type": "application/atom+xml" - } - } - } - }, - "base-gist-items": { - "value": [ - { - "url": "https://api.github.com/gists/aa5a315d61ae9438b18d", - "forks_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/forks", - "commits_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/commits", - "id": "aa5a315d61ae9438b18d", - "node_id": "MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk", - "git_pull_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "git_push_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "html_url": "https://gist.github.com/aa5a315d61ae9438b18d", - "files": { - "hello_world.rb": { - "filename": "hello_world.rb", - "type": "application/x-ruby", - "language": "Ruby", - "raw_url": "https://gist.githubusercontent.com/octocat/6cad326836d38bd3a7ae/raw/db9c55113504e46fa076e7df3a04ce592e2e86d8/hello_world.rb", - "size": 167 - } - }, - "public": true, - "created_at": "2010-04-14T02:15:15Z", - "updated_at": "2011-06-20T11:34:15Z", - "description": "Hello World Examples", - "comments": 0, - "user": null, - "comments_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/comments/", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "truncated": false - } - ] - }, - "gist": { - "value": { - "url": "https://api.github.com/gists/aa5a315d61ae9438b18d", - "forks_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/forks", - "commits_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/commits", - "id": "aa5a315d61ae9438b18d", - "node_id": "MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk", - "git_pull_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "git_push_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "html_url": "https://gist.github.com/aa5a315d61ae9438b18d", - "created_at": "2010-04-14T02:15:15Z", - "updated_at": "2011-06-20T11:34:15Z", - "description": "Hello World Examples", - "comments": 0, - "comments_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/comments/" - } - }, - "gist-3": { - "value": { - "url": "https://api.github.com/gists/aa5a315d61ae9438b18d", - "forks_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/forks", - "commits_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/commits", - "id": "aa5a315d61ae9438b18d", - "node_id": "MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk", - "git_pull_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "git_push_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "html_url": "https://gist.github.com/aa5a315d61ae9438b18d", - "created_at": "2010-04-14T02:15:15Z", - "updated_at": "2011-06-20T11:34:15Z", - "description": "Hello World Examples", - "comments": 0, - "comments_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/comments/" - } - }, - "gist-comment-items": { - "value": [ - { - "id": 1, - "node_id": "MDExOkdpc3RDb21tZW50MQ==", - "url": "https://api.github.com/gists/a6db0bec360bb87e9418/comments/1", - "body": "Just commenting for the sake of commenting", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-18T23:23:56Z", - "updated_at": "2011-04-18T23:23:56Z", - "author_association": "collaborator" - } - ] - }, - "gist-comment": { - "value": { - "id": 1, - "node_id": "MDExOkdpc3RDb21tZW50MQ==", - "url": "https://api.github.com/gists/a6db0bec360bb87e9418/comments/1", - "body": "Just commenting for the sake of commenting", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-18T23:23:56Z", - "updated_at": "2011-04-18T23:23:56Z", - "author_association": "collaborator" - } - }, - "gist-commit-items": { - "value": [ - { - "url": "https://api.github.com/gists/aa5a315d61ae9438b18d/57a7f021a713b1c5a6a199b54cc514735d2d462f", - "version": "57a7f021a713b1c5a6a199b54cc514735d2d462f", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "change_status": { "deletions": 0, "additions": 180, "total": 180 }, - "committed_at": "2010-04-14T02:15:15Z" - } - ] - }, - "gist-fork-items": { - "value": [ - { - "url": "https://api.github.com/gists/dee9c42e4998ce2ea439", - "id": "dee9c42e4998ce2ea439", - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z" - } - ] - }, - "base-gist": { - "value": { - "url": "https://api.github.com/gists/aa5a315d61ae9438b18d", - "forks_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/forks", - "commits_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/commits", - "id": "aa5a315d61ae9438b18d", - "node_id": "MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk", - "git_pull_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "git_push_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "html_url": "https://gist.github.com/aa5a315d61ae9438b18d", - "files": { - "hello_world.rb": { - "filename": "hello_world.rb", - "type": "application/x-ruby", - "language": "Ruby", - "raw_url": "https://gist.githubusercontent.com/octocat/6cad326836d38bd3a7ae/raw/db9c55113504e46fa076e7df3a04ce592e2e86d8/hello_world.rb", - "size": 167 - } - }, - "public": true, - "created_at": "2010-04-14T02:15:15Z", - "updated_at": "2011-06-20T11:34:15Z", - "description": "Hello World Examples", - "comments": 0, - "user": null, - "comments_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/comments/", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "truncated": false - } - }, - "gist-2": { - "value": { - "url": "https://api.github.com/gists/aa5a315d61ae9438b18d/57a7f021a713b1c5a6a199b54cc514735d2d462f", - "forks_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/forks", - "commits_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/commits", - "id": "aa5a315d61ae9438b18d", - "node_id": "MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk", - "git_pull_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "git_push_url": "https://gist.github.com/aa5a315d61ae9438b18d.git", - "html_url": "https://gist.github.com/aa5a315d61ae9438b18d", - "created_at": "2010-04-14T02:15:15Z", - "updated_at": "2011-06-20T11:34:15Z", - "description": "Hello World Examples", - "comments": 0, - "comments_url": "https://api.github.com/gists/aa5a315d61ae9438b18d/comments/" - } - }, - "gitignore-template": { - "value": { - "name": "C", - "source": "# Object files\n*.o\n\n# Libraries\n*.lib\n*.a\n\n# Shared objects (inc. Windows DLLs)\n*.dll\n*.so\n*.so.*\n*.dylib\n\n# Executables\n*.exe\n*.out\n*.app\n" - } - }, - "repository-paginated-2": { - "value": { - "total_count": 1, - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ] - } - }, - "issue-with-repo-items": { - "value": [ - { - "id": 1, - "node_id": "MDU6SXNzdWUx", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "repository_url": "https://api.github.com/repos/octocat/Hello-World", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", - "events_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/events", - "html_url": "https://github.com/octocat/Hello-World/issues/1347", - "number": 1347, - "state": "open", - "title": "Found a bug", - "body": "I'm having a problem with this.", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "labels": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ], - "assignee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "locked": true, - "active_lock_reason": "too heated", - "comments": 0, - "pull_request": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch" - }, - "closed_at": null, - "created_at": "2011-04-22T13:33:48Z", - "updated_at": "2011-04-22T13:33:48Z", - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - }, - "author_association": "collaborator" - } - ] - }, - "license-simple-items": { - "value": [ - { - "key": "mit", - "name": "MIT License", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - { - "key": "lgpl-3.0", - "name": "GNU Lesser General Public License v3.0", - "spdx_id": "LGPL-3.0", - "url": "https://api.github.com/licenses/lgpl-3.0", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - { - "key": "mpl-2.0", - "name": "Mozilla Public License 2.0", - "spdx_id": "MPL-2.0", - "url": "https://api.github.com/licenses/mpl-2.0", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - { - "key": "agpl-3.0", - "name": "GNU Affero General Public License v3.0", - "spdx_id": "AGPL-3.0", - "url": "https://api.github.com/licenses/agpl-3.0", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - { - "key": "unlicense", - "name": "The Unlicense", - "spdx_id": "Unlicense", - "url": "https://api.github.com/licenses/unlicense", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - { - "key": "apache-2.0", - "name": "Apache License 2.0", - "spdx_id": "Apache-2.0", - "url": "https://api.github.com/licenses/apache-2.0", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - { - "key": "gpl-3.0", - "name": "GNU General Public License v3.0", - "spdx_id": "GPL-3.0", - "url": "https://api.github.com/licenses/gpl-3.0", - "node_id": "MDc6TGljZW5zZW1pdA==" - } - ] - }, - "license": { - "value": { - "key": "mit", - "name": "MIT License", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "http://choosealicense.com/licenses/mit/", - "description": "A permissive license that is short and to the point. It lets people do anything with your code with proper attribution and without warranty.", - "implementation": "Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders.", - "permissions": [ - "commercial-use", - "modifications", - "distribution", - "sublicense", - "private-use" - ], - "conditions": ["include-copyright"], - "limitations": ["no-liability"], - "body": "\n\nThe MIT License (MIT)\n\nCopyright (c) [year] [fullname]\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "featured": true - } - }, - "marketplace-purchase": { - "value": { - "url": "https://api.github.com/orgs/github", - "type": "Organization", - "id": 4, - "login": "github", - "organization_billing_email": "billing@github.com", - "marketplace_pending_change": { - "effective_date": "2017-11-11T00:00:00Z", - "unit_count": null, - "id": 77, - "plan": { - "url": "https://api.github.com/marketplace_listing/plans/1111", - "accounts_url": "https://api.github.com/marketplace_listing/plans/1111/accounts", - "id": 1111, - "number": 2, - "name": "Startup", - "description": "A professional-grade CI solution", - "monthly_price_in_cents": 699, - "yearly_price_in_cents": 7870, - "price_model": "flat-rate", - "has_free_trial": true, - "state": "published", - "unit_name": null, - "bullets": [ - "Up to 10 private repositories", - "3 concurrent builds" - ] - } - }, - "marketplace_purchase": { - "billing_cycle": "monthly", - "next_billing_date": "2017-11-11T00:00:00Z", - "unit_count": null, - "on_free_trial": true, - "free_trial_ends_on": "2017-11-11T00:00:00Z", - "updated_at": "2017-11-02T01:12:12Z", - "plan": { - "url": "https://api.github.com/marketplace_listing/plans/1313", - "accounts_url": "https://api.github.com/marketplace_listing/plans/1313/accounts", - "id": 1313, - "number": 3, - "name": "Pro", - "description": "A professional-grade CI solution", - "monthly_price_in_cents": 1099, - "yearly_price_in_cents": 11870, - "price_model": "flat-rate", - "has_free_trial": true, - "unit_name": null, - "state": "published", - "bullets": [ - "Up to 25 private repositories", - "11 concurrent builds" - ] - } - } - } - }, - "marketplace-listing-plan-items": { - "value": [ - { - "url": "https://api.github.com/marketplace_listing/plans/1313", - "accounts_url": "https://api.github.com/marketplace_listing/plans/1313/accounts", - "id": 1313, - "number": 3, - "name": "Pro", - "description": "A professional-grade CI solution", - "monthly_price_in_cents": 1099, - "yearly_price_in_cents": 11870, - "price_model": "flat-rate", - "has_free_trial": true, - "unit_name": null, - "state": "published", - "bullets": ["Up to 25 private repositories", "11 concurrent builds"] - } - ] - }, - "marketplace-purchase-items": { - "value": [ - { - "url": "https://api.github.com/orgs/github", - "type": "Organization", - "id": 4, - "login": "github", - "organization_billing_email": "billing@github.com", - "marketplace_pending_change": { - "effective_date": "2017-11-11T00:00:00Z", - "unit_count": null, - "id": 77, - "plan": { - "url": "https://api.github.com/marketplace_listing/plans/1111", - "accounts_url": "https://api.github.com/marketplace_listing/plans/1111/accounts", - "id": 1111, - "number": 2, - "name": "Startup", - "description": "A professional-grade CI solution", - "monthly_price_in_cents": 699, - "yearly_price_in_cents": 7870, - "price_model": "flat-rate", - "has_free_trial": true, - "state": "published", - "unit_name": null, - "bullets": [ - "Up to 10 private repositories", - "3 concurrent builds" - ] - } - }, - "marketplace_purchase": { - "billing_cycle": "monthly", - "next_billing_date": "2017-11-11T00:00:00Z", - "unit_count": null, - "on_free_trial": true, - "free_trial_ends_on": "2017-11-11T00:00:00Z", - "updated_at": "2017-11-02T01:12:12Z", - "plan": { - "url": "https://api.github.com/marketplace_listing/plans/1313", - "accounts_url": "https://api.github.com/marketplace_listing/plans/1313/accounts", - "id": 1313, - "number": 3, - "name": "Pro", - "description": "A professional-grade CI solution", - "monthly_price_in_cents": 1099, - "yearly_price_in_cents": 11870, - "price_model": "flat-rate", - "has_free_trial": true, - "unit_name": null, - "state": "published", - "bullets": [ - "Up to 25 private repositories", - "11 concurrent builds" - ] - } - } - } - ] - }, - "api-overview": { - "value": { - "verifiable_password_authentication": true, - "ssh_key_fingerprints": { - "SHA256_RSA": "nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8", - "SHA256_DSA": "br9IjFspm1vxR3iA35FWE+4VTyz1hYVLIE2t1/CeyWQ" - }, - "hooks": ["192.30.252.0/22"], - "web": ["192.30.252.0/22", "185.199.108.0/22"], - "api": ["192.30.252.0/22", "185.199.108.0/22"], - "git": ["192.30.252.0/22"], - "pages": ["192.30.252.153/32", "192.30.252.154/32"], - "importer": ["54.158.161.132", "54.226.70.38"] - } - }, - "thread-items": { - "value": [ - { - "id": "1", - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "subject": { - "title": "Greetings", - "url": "https://api.github.com/repos/octokit/octokit.rb/issues/123", - "latest_comment_url": "https://api.github.com/repos/octokit/octokit.rb/issues/comments/123", - "type": "Issue" - }, - "reason": "subscribed", - "unread": true, - "updated_at": "2014-11-07T22:01:45Z", - "last_read_at": "2014-11-07T22:01:45Z", - "url": "https://api.github.com/notifications/threads/1" - } - ] - }, - "thread": { - "value": { - "id": "1", - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "subject": { - "title": "Greetings", - "url": "https://api.github.com/repos/octokit/octokit.rb/issues/123", - "latest_comment_url": "https://api.github.com/repos/octokit/octokit.rb/issues/comments/123", - "type": "Issue" - }, - "reason": "subscribed", - "unread": true, - "updated_at": "2014-11-07T22:01:45Z", - "last_read_at": "2014-11-07T22:01:45Z", - "url": "https://api.github.com/notifications/threads/1" - } - }, - "thread-subscription": { - "value": { - "subscribed": true, - "ignored": false, - "reason": null, - "created_at": "2012-10-06T21:34:12Z", - "url": "https://api.github.com/notifications/threads/1/subscription", - "thread_url": "https://api.github.com/notifications/threads/1" - } - }, - "organization-simple-items": { - "value": [ - { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - } - ] - }, - "organization-full-default-response": { - "summary": "Default response", - "value": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization", - "name": "github", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "twitter_username": "github", - "is_verified": true, - "has_organization_projects": true, - "has_repository_projects": true, - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "html_url": "https://github.com/octocat", - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2014-03-03T18:58:10Z", - "type": "Organization", - "total_private_repos": 100, - "owned_private_repos": 100, - "private_gists": 81, - "disk_usage": 10000, - "collaborators": 8, - "billing_email": "mona@github.com", - "plan": { "name": "Medium", "space": 400, "private_repos": 20 }, - "default_repository_permission": "read", - "members_can_create_repositories": true, - "two_factor_requirement_enabled": true, - "members_allowed_repository_creation_type": "all", - "members_can_create_public_repositories": false, - "members_can_create_private_repositories": false, - "members_can_create_internal_repositories": false, - "members_can_create_pages": true - } - }, - "organization-full-response-with-git-hub-plan-information": { - "summary": "Response with GitHub plan information", - "value": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization", - "name": "github", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "twitter_username": "github", - "is_verified": true, - "has_organization_projects": true, - "has_repository_projects": true, - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "html_url": "https://github.com/octocat", - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2014-03-03T18:58:10Z", - "type": "Organization", - "plan": { - "name": "team", - "space": 976562499, - "private_repos": 999999, - "filled_seats": 4, - "seats": 5 - } - } - }, - "organization-full": { - "value": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization", - "name": "github", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "twitter_username": "github", - "is_verified": true, - "has_organization_projects": true, - "has_repository_projects": true, - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "html_url": "https://github.com/octocat", - "created_at": "2008-01-14T04:33:35Z", - "type": "Organization", - "total_private_repos": 100, - "owned_private_repos": 100, - "private_gists": 81, - "disk_usage": 10000, - "collaborators": 8, - "billing_email": "mona@github.com", - "plan": { "name": "Medium", "space": 400, "private_repos": 20 }, - "default_repository_permission": "read", - "members_can_create_repositories": true, - "two_factor_requirement_enabled": true, - "members_allowed_repository_creation_type": "all", - "members_can_create_public_repositories": false, - "members_can_create_private_repositories": false, - "members_can_create_internal_repositories": false, - "members_can_create_pages": true, - "updated_at": "2014-03-03T18:58:10Z" - } - }, - "actions-organization-permissions": { - "value": { - "enabled_repositories": "all", - "allowed_actions": "selected", - "selected_actions_url": "https://api.github.com/organizations/42/actions/permissions/selected-actions" - } - }, - "repository-paginated": { - "value": { - "total_count": 1, - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ] - } - }, - "runner-groups-org": { - "value": { - "total_count": 3, - "runner_groups": [ - { - "id": 1, - "name": "Default", - "visibility": "all", - "default": true, - "runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/1/runners", - "inherited": false - }, - { - "id": 2, - "name": "octo-runner-group", - "visibility": "selected", - "default": false, - "selected_repositories_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/repositories", - "runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/runners", - "inherited": true - }, - { - "id": 3, - "name": "expensive-hardware", - "visibility": "private", - "default": false, - "runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/3/runners", - "inherited": false - } - ] - } - }, - "runner-group": { - "value": { - "id": 2, - "name": "octo-runner-group", - "visibility": "selected", - "default": false, - "selected_repositories_url": "https://api.github.com/orgs/octo-org/actions/runner-groups/2/repositories", - "runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/runners", - "inherited": false - } - }, - "runner-group-item": { - "value": { - "id": 2, - "name": "octo-runner-group", - "visibility": "selected", - "default": false, - "selected_repositories_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/repositories", - "runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/runners", - "inherited": false - } - }, - "organization-actions-secret-paginated": { - "value": { - "total_count": 3, - "secrets": [ - { - "name": "GIST_ID", - "created_at": "2019-08-10T14:59:22Z", - "updated_at": "2020-01-10T14:59:22Z", - "visibility": "private" - }, - { - "name": "DEPLOY_TOKEN", - "created_at": "2019-08-10T14:59:22Z", - "updated_at": "2020-01-10T14:59:22Z", - "visibility": "all" - }, - { - "name": "GH_TOKEN", - "created_at": "2019-08-10T14:59:22Z", - "updated_at": "2020-01-10T14:59:22Z", - "visibility": "selected", - "selected_repositories_url": "https://api.github.com/orgs/octo-org/actions/secrets/SUPER_SECRET/repositories" - } - ] - } - }, - "actions-public-key": { - "value": { - "key_id": "012345678912345678", - "key": "2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234" - } - }, - "organization-actions-secret": { - "value": { - "name": "GH_TOKEN", - "created_at": "2019-08-10T14:59:22Z", - "updated_at": "2020-01-10T14:59:22Z", - "visibility": "selected", - "selected_repositories_url": "https://api.github.com/orgs/octo-org/actions/secrets/SUPER_SECRET/repositories" - } - }, - "public-repository-paginated": { - "value": { - "total_count": 1, - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - } - ] - } - }, - "simple-user-items": { - "value": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ] - }, - "credential-authorization-items": { - "value": [ - { - "login": "octocat", - "credential_id": 161195, - "credential_type": "personal access token", - "token_last_eight": "71c3fc11", - "credential_authorized_at": "2011-01-26T19:06:43Z", - "scopes": ["user", "repo"] - }, - { - "login": "hubot", - "credential_id": 161196, - "credential_type": "personal access token", - "token_last_eight": "12345678", - "credential_authorized_at": "2019-03-29T19:06:43Z", - "scopes": ["repo"] - } - ] - }, - "org-hook-items": { - "value": [ - { - "id": 1, - "url": "https://api.github.com/orgs/octocat/hooks/1", - "ping_url": "https://api.github.com/orgs/octocat/hooks/1/pings", - "name": "web", - "events": ["push", "pull_request"], - "active": true, - "config": { "url": "http://example.com", "content_type": "json" }, - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "type": "Organization" - } - ] - }, - "org-hook": { - "value": { - "id": 1, - "url": "https://api.github.com/orgs/octocat/hooks/1", - "ping_url": "https://api.github.com/orgs/octocat/hooks/1/pings", - "name": "web", - "events": ["push", "pull_request"], - "active": true, - "config": { "url": "http://example.com", "content_type": "json" }, - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "type": "Organization" - } - }, - "org-hook-2": { - "value": { - "id": 1, - "url": "https://api.github.com/orgs/octocat/hooks/1", - "ping_url": "https://api.github.com/orgs/octocat/hooks/1/pings", - "name": "web", - "events": ["pull_request"], - "active": true, - "config": { "url": "http://example.com", "content_type": "json" }, - "updated_at": "2011-09-06T20:39:23Z", - "created_at": "2011-09-06T17:26:27Z", - "type": "Organization" - } - }, - "installation": { - "value": { - "id": 1, - "account": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "avatar_url": "https://github.com/images/error/hubot_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/orgs/github", - "html_url": "https://github.com/github", - "followers_url": "https://api.github.com/users/github/followers", - "following_url": "https://api.github.com/users/github/following{/other_user}", - "gists_url": "https://api.github.com/users/github/gists{/gist_id}", - "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/github/subscriptions", - "organizations_url": "https://api.github.com/users/github/orgs", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "received_events_url": "https://api.github.com/users/github/received_events", - "type": "Organization", - "site_admin": false - }, - "repository_selection": "all", - "access_tokens_url": "https://api.github.com/installations/1/access_tokens", - "repositories_url": "https://api.github.com/installation/repositories", - "html_url": "https://github.com/organizations/github/settings/installations/1", - "app_id": 1, - "target_id": 1, - "target_type": "Organization", - "permissions": { - "checks": "write", - "metadata": "read", - "contents": "read" - }, - "events": ["push", "pull_request"], - "created_at": "2018-02-09T20:51:14Z", - "updated_at": "2018-02-09T20:51:14Z", - "single_file_name": "config.yml", - "has_multiple_single_files": true, - "single_file_paths": ["config.yml", ".github/issue_TEMPLATE.md"], - "app_slug": "github-actions" - } - }, - "installation-paginated": { - "value": { - "total_count": 1, - "installations": [ - { - "id": 25381, - "account": { - "login": "octo-org", - "id": 6811672, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjY4MTE2NzI=", - "avatar_url": "https://avatars3.githubusercontent.com/u/6811672?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/octo-org", - "html_url": "https://github.com/octo-org", - "followers_url": "https://api.github.com/users/octo-org/followers", - "following_url": "https://api.github.com/users/octo-org/following{/other_user}", - "gists_url": "https://api.github.com/users/octo-org/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octo-org/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octo-org/subscriptions", - "organizations_url": "https://api.github.com/users/octo-org/orgs", - "repos_url": "https://api.github.com/users/octo-org/repos", - "events_url": "https://api.github.com/users/octo-org/events{/privacy}", - "received_events_url": "https://api.github.com/users/octo-org/received_events", - "type": "Organization", - "site_admin": false - }, - "repository_selection": "selected", - "access_tokens_url": "https://api.github.com/app/installations/25381/access_tokens", - "repositories_url": "https://api.github.com/installation/repositories", - "html_url": "https://github.com/organizations/octo-org/settings/installations/25381", - "app_id": 2218, - "target_id": 6811672, - "target_type": "Organization", - "permissions": { - "deployments": "write", - "metadata": "read", - "pull_requests": "read", - "statuses": "read" - }, - "events": ["deployment", "deployment_status"], - "created_at": "2017-05-16T08:47:09.000-07:00", - "updated_at": "2017-06-06T11:23:23.000-07:00", - "single_file_name": "config.yml", - "has_multiple_single_files": true, - "single_file_paths": ["config.yml", ".github/issue_TEMPLATE.md"], - "app_slug": "github-actions" - } - ] - } - }, - "interaction-limit-response": { - "value": { - "limit": "collaborators_only", - "origin": "organization", - "expires_at": "2018-08-17T04:18:39Z" - } - }, - "organization-invitation-items": { - "value": [ - { - "id": 1, - "login": "monalisa", - "email": "octocat@github.com", - "role": "direct_member", - "created_at": "2016-11-30T06:46:10-08:00", - "inviter": { - "login": "other_user", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/other_user_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/other_user", - "html_url": "https://github.com/other_user", - "followers_url": "https://api.github.com/users/other_user/followers", - "following_url": "https://api.github.com/users/other_user/following{/other_user}", - "gists_url": "https://api.github.com/users/other_user/gists{/gist_id}", - "starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/other_user/subscriptions", - "organizations_url": "https://api.github.com/users/other_user/orgs", - "repos_url": "https://api.github.com/users/other_user/repos", - "events_url": "https://api.github.com/users/other_user/events{/privacy}", - "received_events_url": "https://api.github.com/users/other_user/received_events", - "type": "User", - "site_admin": false - }, - "team_count": 2, - "invitation_team_url": "https://api.github.com/organizations/2/invitations/1/teams" - } - ] - }, - "organization-invitation": { - "value": { - "id": 1, - "login": "monalisa", - "email": "octocat@github.com", - "role": "direct_member", - "created_at": "2016-11-30T06:46:10-08:00", - "inviter": { - "login": "other_user", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/other_user_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/other_user", - "html_url": "https://github.com/other_user", - "followers_url": "https://api.github.com/users/other_user/followers", - "following_url": "https://api.github.com/users/other_user/following{/other_user}", - "gists_url": "https://api.github.com/users/other_user/gists{/gist_id}", - "starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/other_user/subscriptions", - "organizations_url": "https://api.github.com/users/other_user/orgs", - "repos_url": "https://api.github.com/users/other_user/repos", - "events_url": "https://api.github.com/users/other_user/events{/privacy}", - "received_events_url": "https://api.github.com/users/other_user/received_events", - "type": "User", - "site_admin": false - }, - "team_count": 2, - "invitation_team_url": "https://api.github.com/organizations/2/invitations/1/teams" - } - }, - "team-items": { - "value": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos", - "parent": null - } - ] - }, - "org-membership-response-if-user-has-an-active-admin-membership-with-organization": { - "summary": "Response if user has an active admin membership with organization", - "value": { - "url": "https://api.github.com/orgs/octocat/memberships/defunkt", - "state": "active", - "role": "admin", - "organization_url": "https://api.github.com/orgs/octocat", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "org-membership-response-if-user-has-an-active-membership-with-organization": { - "summary": "Response if user has an active membership with organization", - "value": { - "url": "https://api.github.com/orgs/octocat/memberships/defunkt", - "state": "active", - "role": "member", - "organization_url": "https://api.github.com/orgs/octocat", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "org-membership-response-if-user-has-a-pending-membership-with-organization": { - "summary": "Response if user has a pending membership with organization", - "value": { - "url": "https://api.github.com/orgs/invitocat/memberships/defunkt", - "state": "pending", - "role": "member", - "organization_url": "https://api.github.com/orgs/invitocat", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "org-membership-response-if-user-was-previously-unaffiliated-with-organization": { - "summary": "Response if user was previously unaffiliated with organization", - "value": { - "url": "https://api.github.com/orgs/invitocat/memberships/defunkt", - "state": "pending", - "role": "admin", - "organization_url": "https://api.github.com/orgs/invitocat", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "org-membership-response-if-user-already-had-membership-with-organization": { - "summary": "Response if user already had membership with organization", - "value": { - "url": "https://api.github.com/orgs/octocat/memberships/defunkt", - "state": "active", - "role": "admin", - "organization_url": "https://api.github.com/orgs/octocat", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "migration-with-short-org-items": { - "value": [ - { - "id": 79, - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516", - "state": "pending", - "lock_repositories": true, - "exclude_attachments": false, - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ], - "url": "https://api.github.com/orgs/octo-org/migrations/79", - "created_at": "2015-07-06T15:33:38-07:00", - "updated_at": "2015-07-06T15:33:38-07:00", - "node_id": "MDQ6VXNlcjE=" - } - ] - }, - "migration-with-short-org-2": { - "value": { - "id": 79, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516", - "state": "pending", - "lock_repositories": true, - "exclude_attachments": false, - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ], - "url": "https://api.github.com/orgs/octo-org/migrations/79", - "created_at": "2015-07-06T15:33:38-07:00", - "updated_at": "2015-07-06T15:33:38-07:00" - } - }, - "migration-with-short-org": { - "value": { - "id": 79, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516", - "state": "exported", - "lock_repositories": true, - "exclude_attachments": false, - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ], - "url": "https://api.github.com/orgs/octo-org/migrations/79", - "created_at": "2015-07-06T15:33:38-07:00", - "updated_at": "2015-07-06T15:33:38-07:00" - } - }, - "minimal-repository-items": { - "value": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "template_repository": "octocat/template", - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "delete_branch_on_merge": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "node_id": "MDc6TGljZW5zZW1pdA==" - } - } - ] - }, - "project-items": { - "value": [ - { - "owner_url": "https://api.github.com/orgs/octocat", - "url": "https://api.github.com/projects/1002605", - "html_url": "https://github.com/orgs/api-playground/projects/1", - "columns_url": "https://api.github.com/projects/1002605/columns", - "id": 1002605, - "node_id": "MDc6UHJvamVjdDEwMDI2MDU=", - "name": "Organization Roadmap", - "body": "High-level roadmap for the upcoming year.", - "number": 1, - "state": "open", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-11T20:09:31Z", - "updated_at": "2014-03-04T18:58:10Z" - } - ] - }, - "project-2": { - "value": { - "owner_url": "https://api.github.com/orgs/octocat", - "url": "https://api.github.com/projects/1002605", - "html_url": "https://github.com/orgs/api-playground/projects/1", - "columns_url": "https://api.github.com/projects/1002605/columns", - "id": 1002605, - "node_id": "MDc6UHJvamVjdDEwMDI2MDU=", - "name": "Organization Roadmap", - "body": "High-level roadmap for the upcoming year.", - "number": 1, - "state": "open", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-11T20:09:31Z", - "updated_at": "2014-03-04T18:58:10Z" - } - }, - "repository": { - "value": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks": 9, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "watchers": 80, - "size": 108, - "default_branch": "master", - "open_issues": 0, - "open_issues_count": 0, - "is_template": true, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0 - } - }, - "group-mapping-3": { - "value": { - "groups": [ - { - "group_id": "123", - "group_name": "Octocat admins", - "group_description": "The people who configure your octoworld." - }, - { - "group_id": "456", - "group_name": "Octocat docs members", - "group_description": "The people who make your octoworld come to life." - } - ] - } - }, - "team-full": { - "value": { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos", - "parent": null, - "members_count": 3, - "repos_count": 10, - "created_at": "2017-07-14T16:53:42Z", - "updated_at": "2017-08-17T12:37:15Z", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization", - "name": "github", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "is_verified": true, - "has_organization_projects": true, - "has_repository_projects": true, - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "html_url": "https://github.com/octocat", - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2017-08-17T12:37:15Z", - "type": "Organization" - } - } - }, - "team-discussion-items": { - "value": [ - { - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Hi! This is an area for us to collaborate as a team.", - "body_html": "

Hi! This is an area for us to collaborate as a team

", - "body_version": "0d495416a700fb06133c612575d92bfb", - "comments_count": 0, - "comments_url": "https://api.github.com/teams/2343027/discussions/1/comments", - "created_at": "2018-01-25T18:56:31Z", - "last_edited_at": null, - "html_url": "https://github.com/orgs/github/teams/justice-league/discussions/1", - "node_id": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==", - "number": 1, - "pinned": false, - "private": false, - "team_url": "https://api.github.com/teams/2343027", - "title": "Our first team post", - "updated_at": "2018-01-25T18:56:31Z", - "url": "https://api.github.com/teams/2343027/discussions/1", - "reactions": { - "url": "https://api.github.com/teams/2343027/discussions/1/reactions", - "total_count": 5, - "+1": 3, - "-1": 1, - "laugh": 0, - "confused": 0, - "heart": 1, - "hooray": 0, - "eyes": 1, - "rocket": 1 - } - } - ] - }, - "team-discussion": { - "value": { - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Hi! This is an area for us to collaborate as a team.", - "body_html": "

Hi! This is an area for us to collaborate as a team

", - "body_version": "0d495416a700fb06133c612575d92bfb", - "comments_count": 0, - "comments_url": "https://api.github.com/teams/2343027/discussions/1/comments", - "created_at": "2018-01-25T18:56:31Z", - "last_edited_at": null, - "html_url": "https://github.com/orgs/github/teams/justice-league/discussions/1", - "node_id": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==", - "number": 1, - "pinned": false, - "private": false, - "team_url": "https://api.github.com/teams/2343027", - "title": "Our first team post", - "updated_at": "2018-01-25T18:56:31Z", - "url": "https://api.github.com/teams/2343027/discussions/1", - "reactions": { - "url": "https://api.github.com/teams/2343027/discussions/1/reactions", - "total_count": 5, - "+1": 3, - "-1": 1, - "laugh": 0, - "confused": 0, - "heart": 1, - "hooray": 0, - "eyes": 1, - "rocket": 1 - } - } - }, - "team-discussion-2": { - "value": { - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Hi! This is an area for us to collaborate as a team.", - "body_html": "

Hi! This is an area for us to collaborate as a team

", - "body_version": "0d495416a700fb06133c612575d92bfb", - "comments_count": 1, - "comments_url": "https://api.github.com/teams/2343027/discussions/1/comments", - "created_at": "2018-01-25T18:56:31Z", - "last_edited_at": "2018-01-26T18:22:20Z", - "html_url": "https://github.com/orgs/github/teams/justice-league/discussions/1", - "node_id": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==", - "number": 1, - "pinned": false, - "private": false, - "team_url": "https://api.github.com/teams/2343027", - "title": "Welcome to our first team post", - "updated_at": "2018-01-26T18:22:20Z", - "url": "https://api.github.com/teams/2343027/discussions/1", - "reactions": { - "url": "https://api.github.com/teams/2343027/discussions/1/reactions", - "total_count": 5, - "+1": 3, - "-1": 1, - "laugh": 0, - "confused": 0, - "heart": 1, - "hooray": 0, - "eyes": 1, - "rocket": 1 - } - } - }, - "team-discussion-comment-items": { - "value": [ - { - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Do you like apples?", - "body_html": "

Do you like apples?

", - "body_version": "5eb32b219cdc6a5a9b29ba5d6caa9c51", - "created_at": "2018-01-15T23:53:58Z", - "last_edited_at": null, - "discussion_url": "https://api.github.com/teams/2403582/discussions/1", - "html_url": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1", - "node_id": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=", - "number": 1, - "updated_at": "2018-01-15T23:53:58Z", - "url": "https://api.github.com/teams/2403582/discussions/1/comments/1", - "reactions": { - "url": "https://api.github.com/teams/2403582/discussions/1/reactions", - "total_count": 5, - "+1": 3, - "-1": 1, - "laugh": 0, - "confused": 0, - "heart": 1, - "hooray": 0, - "eyes": 1, - "rocket": 1 - } - } - ] - }, - "team-discussion-comment": { - "value": { - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Do you like apples?", - "body_html": "

Do you like apples?

", - "body_version": "5eb32b219cdc6a5a9b29ba5d6caa9c51", - "created_at": "2018-01-15T23:53:58Z", - "last_edited_at": null, - "discussion_url": "https://api.github.com/teams/2403582/discussions/1", - "html_url": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1", - "node_id": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=", - "number": 1, - "updated_at": "2018-01-15T23:53:58Z", - "url": "https://api.github.com/teams/2403582/discussions/1/comments/1", - "reactions": { - "url": "https://api.github.com/teams/2403582/discussions/1/reactions", - "total_count": 5, - "+1": 3, - "-1": 1, - "laugh": 0, - "confused": 0, - "heart": 1, - "hooray": 0, - "eyes": 1, - "rocket": 1 - } - } - }, - "team-discussion-comment-2": { - "value": { - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Do you like pineapples?", - "body_html": "

Do you like pineapples?

", - "body_version": "e6907b24d9c93cc0c5024a7af5888116", - "created_at": "2018-01-15T23:53:58Z", - "last_edited_at": "2018-01-26T18:22:20Z", - "discussion_url": "https://api.github.com/teams/2403582/discussions/1", - "html_url": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1", - "node_id": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=", - "number": 1, - "updated_at": "2018-01-26T18:22:20Z", - "url": "https://api.github.com/teams/2403582/discussions/1/comments/1", - "reactions": { - "url": "https://api.github.com/teams/2403582/discussions/1/reactions", - "total_count": 5, - "+1": 3, - "-1": 1, - "laugh": 0, - "confused": 0, - "heart": 1, - "hooray": 0, - "eyes": 1, - "rocket": 1 - } - } - }, - "reaction-items": { - "value": [ - { - "id": 1, - "node_id": "MDg6UmVhY3Rpb24x", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "content": "heart", - "created_at": "2016-05-20T20:09:31Z" - } - ] - }, - "reaction": { - "value": { - "id": 1, - "node_id": "MDg6UmVhY3Rpb24x", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "content": "heart", - "created_at": "2016-05-20T20:09:31Z" - } - }, - "team-membership-response-if-user-has-an-active-membership-with-team": { - "summary": "Response if user has an active membership with team", - "value": { - "url": "https://api.github.com/teams/1/memberships/octocat", - "role": "member", - "state": "active" - } - }, - "team-membership-response-if-user-is-a-team-maintainer": { - "summary": "Response if user is a team maintainer", - "value": { - "url": "https://api.github.com/teams/1/memberships/octocat", - "role": "maintainer", - "state": "active" - } - }, - "team-membership-response-if-user-has-a-pending-membership-with-team": { - "summary": "Response if user has a pending membership with team", - "value": { - "url": "https://api.github.com/teams/1/memberships/octocat", - "role": "member", - "state": "pending" - } - }, - "team-membership-response-if-users-membership-with-team-is-now-active": { - "summary": "Response if user's membership with team is now active", - "value": { - "url": "https://api.github.com/teams/1/memberships/octocat", - "role": "member", - "state": "active" - } - }, - "team-membership-response-if-users-membership-with-team-is-now-pending": { - "summary": "Response if user's membership with team is now pending", - "value": { - "url": "https://api.github.com/teams/1/memberships/octocat", - "role": "member", - "state": "pending" - } - }, - "team-project-items": { - "value": [ - { - "owner_url": "https://api.github.com/orgs/octocat", - "url": "https://api.github.com/projects/1002605", - "html_url": "https://github.com/orgs/api-playground/projects/1", - "columns_url": "https://api.github.com/projects/1002605/columns", - "id": 1002605, - "node_id": "MDc6UHJvamVjdDEwMDI2MDU=", - "name": "Organization Roadmap", - "body": "High-level roadmap for the upcoming year.", - "number": 1, - "state": "open", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-11T20:09:31Z", - "updated_at": "2014-03-04T18:58:10Z", - "organization_permission": "write", - "private": false, - "permissions": { "read": true, "write": true, "admin": false } - } - ] - }, - "team-project": { - "value": { - "owner_url": "https://api.github.com/orgs/octocat", - "url": "https://api.github.com/projects/1002605", - "html_url": "https://github.com/orgs/api-playground/projects/1", - "columns_url": "https://api.github.com/projects/1002605/columns", - "id": 1002605, - "node_id": "MDc6UHJvamVjdDEwMDI2MDU=", - "name": "Organization Roadmap", - "body": "High-level roadmap for the upcoming year.", - "number": 1, - "state": "open", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-11T20:09:31Z", - "updated_at": "2014-03-04T18:58:10Z", - "organization_permission": "write", - "private": false, - "permissions": { "read": true, "write": true, "admin": false } - } - }, - "team-repository-alternative-response-with-repository-permissions": { - "value": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - }, - "group-mapping": { - "value": { - "groups": [ - { - "group_id": "123", - "group_name": "Octocat admins", - "group_description": "The people who configure your octoworld." - }, - { - "group_id": "456", - "group_name": "Octocat docs members", - "group_description": "The people who make your octoworld come to life." - } - ] - } - }, - "team-items-response-if-child-teams-exist": { - "value": [ - { - "id": 2, - "node_id": "MDQ6VGVhbTI=", - "url": "https://api.github.com/teams/2", - "name": "Original Roster", - "slug": "original-roster", - "description": "Started it all.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/2/members{/member}", - "repositories_url": "https://api.github.com/teams/2/repos", - "parent": { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos" - }, - "html_url": "https://github.com/orgs/rails/teams/core" - } - ] - }, - "project-card": { - "value": { - "url": "https://api.github.com/projects/columns/cards/1478", - "id": 1478, - "node_id": "MDExOlByb2plY3RDYXJkMTQ3OA==", - "note": "Add payload for delete Project column", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2016-09-05T14:21:06Z", - "updated_at": "2016-09-05T14:20:22Z", - "archived": false, - "column_url": "https://api.github.com/projects/columns/367", - "content_url": "https://api.github.com/repos/api-playground/projects-test/issues/3", - "project_url": "https://api.github.com/projects/120" - } - }, - "project-column": { - "value": { - "url": "https://api.github.com/projects/columns/367", - "project_url": "https://api.github.com/projects/120", - "cards_url": "https://api.github.com/projects/columns/367/cards", - "id": 367, - "node_id": "MDEzOlByb2plY3RDb2x1bW4zNjc=", - "name": "To Do", - "created_at": "2016-09-05T14:18:44Z", - "updated_at": "2016-09-05T14:22:28Z" - } - }, - "project-card-items": { - "value": [ - { - "url": "https://api.github.com/projects/columns/cards/1478", - "id": 1478, - "node_id": "MDExOlByb2plY3RDYXJkMTQ3OA==", - "note": "Add payload for delete Project column", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2016-09-05T14:21:06Z", - "updated_at": "2016-09-05T14:20:22Z", - "archived": false, - "column_url": "https://api.github.com/projects/columns/367", - "content_url": "https://api.github.com/repos/api-playground/projects-test/issues/3", - "project_url": "https://api.github.com/projects/120" - } - ] - }, - "project-3": { - "value": { - "owner_url": "https://api.github.com/repos/api-playground/projects-test", - "url": "https://api.github.com/projects/1002604", - "html_url": "https://github.com/api-playground/projects-test/projects/1", - "columns_url": "https://api.github.com/projects/1002604/columns", - "id": 1002604, - "node_id": "MDc6UHJvamVjdDEwMDI2MDQ=", - "name": "Projects Documentation", - "body": "Developer documentation project for the developer site.", - "number": 1, - "state": "open", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z" - } - }, - "repository-collaborator-permission": { - "value": { - "permission": "admin", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "project-column-items": { - "value": [ - { - "url": "https://api.github.com/projects/columns/367", - "project_url": "https://api.github.com/projects/120", - "cards_url": "https://api.github.com/projects/columns/367/cards", - "id": 367, - "node_id": "MDEzOlByb2plY3RDb2x1bW4zNjc=", - "name": "To Do", - "created_at": "2016-09-05T14:18:44Z", - "updated_at": "2016-09-05T14:22:28Z" - } - ] - }, - "rate-limit-overview": { - "value": { - "resources": { - "core": { "limit": 5000, "remaining": 4999, "reset": 1372700873 }, - "search": { "limit": 30, "remaining": 18, "reset": 1372697452 }, - "graphql": { - "limit": 5000, - "remaining": 4993, - "reset": 1372700389 - }, - "integration_manifest": { - "limit": 5000, - "remaining": 4999, - "reset": 1551806725 - }, - "code_scanning_upload": { - "limit": 500, - "remaining": 499, - "reset": 1551806725 - } - }, - "rate": { "limit": 5000, "remaining": 4999, "reset": 1372700873 } - } - }, - "full-repository-default-response": { - "summary": "Default response", - "value": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "forks": 9, - "stargazers_count": 80, - "watchers_count": 80, - "watchers": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "open_issues": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "pull": true, "push": false, "admin": false }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - "organization": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "Organization", - "site_admin": false - }, - "parent": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - }, - "source": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - } - }, - "full-repository-response-with-scarlet-witch-preview-media-type": { - "summary": "Response with scarlet-witch-preview media type", - "value": { - "id": 88760408, - "node_id": "MDEwOlJlcG9zaXRvcnk4ODc2MDQwOA==", - "name": "cosee", - "full_name": "LindseyB/cosee", - "disabled": false, - "archived": false, - "owner": { - "login": "LindseyB", - "id": 33750, - "node_id": "MDQ6VXNlcjMzNzUw", - "avatar_url": "https://avatars2.githubusercontent.com/u/33750?v=3", - "gravatar_id": "", - "url": "https://api.github.com/users/LindseyB", - "html_url": "https://github.com/LindseyB", - "followers_url": "https://api.github.com/users/LindseyB/followers", - "following_url": "https://api.github.com/users/LindseyB/following{/other_user}", - "gists_url": "https://api.github.com/users/LindseyB/gists{/gist_id}", - "starred_url": "https://api.github.com/users/LindseyB/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/LindseyB/subscriptions", - "organizations_url": "https://api.github.com/users/LindseyB/orgs", - "repos_url": "https://api.github.com/users/LindseyB/repos", - "events_url": "https://api.github.com/users/LindseyB/events{/privacy}", - "received_events_url": "https://api.github.com/users/LindseyB/received_events", - "type": "User", - "site_admin": true - }, - "private": false, - "html_url": "https://github.com/LindseyB/cosee", - "description": null, - "fork": false, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "url": "https://api.github.com/repos/LindseyB/cosee", - "forks_url": "https://api.github.com/repos/LindseyB/cosee/forks", - "keys_url": "https://api.github.com/repos/LindseyB/cosee/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/LindseyB/cosee/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/LindseyB/cosee/teams", - "hooks_url": "https://api.github.com/repos/LindseyB/cosee/hooks", - "issue_events_url": "https://api.github.com/repos/LindseyB/cosee/issues/events{/number}", - "events_url": "https://api.github.com/repos/LindseyB/cosee/events", - "assignees_url": "https://api.github.com/repos/LindseyB/cosee/assignees{/user}", - "branches_url": "https://api.github.com/repos/LindseyB/cosee/branches{/branch}", - "tags_url": "https://api.github.com/repos/LindseyB/cosee/tags", - "blobs_url": "https://api.github.com/repos/LindseyB/cosee/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/LindseyB/cosee/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/LindseyB/cosee/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/LindseyB/cosee/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/LindseyB/cosee/statuses/{sha}", - "languages_url": "https://api.github.com/repos/LindseyB/cosee/languages", - "stargazers_url": "https://api.github.com/repos/LindseyB/cosee/stargazers", - "contributors_url": "https://api.github.com/repos/LindseyB/cosee/contributors", - "subscribers_url": "https://api.github.com/repos/LindseyB/cosee/subscribers", - "subscription_url": "https://api.github.com/repos/LindseyB/cosee/subscription", - "commits_url": "https://api.github.com/repos/LindseyB/cosee/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/LindseyB/cosee/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/LindseyB/cosee/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/LindseyB/cosee/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/LindseyB/cosee/contents/{+path}", - "compare_url": "https://api.github.com/repos/LindseyB/cosee/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/LindseyB/cosee/merges", - "archive_url": "https://api.github.com/repos/LindseyB/cosee/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/LindseyB/cosee/downloads", - "issues_url": "https://api.github.com/repos/LindseyB/cosee/issues{/number}", - "pulls_url": "https://api.github.com/repos/LindseyB/cosee/pulls{/number}", - "milestones_url": "https://api.github.com/repos/LindseyB/cosee/milestones{/number}", - "notifications_url": "https://api.github.com/repos/LindseyB/cosee/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/LindseyB/cosee/labels{/name}", - "releases_url": "https://api.github.com/repos/LindseyB/cosee/releases{/id}", - "deployments_url": "https://api.github.com/repos/LindseyB/cosee/deployments", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "git_url": "git://github.com/LindseyB/cosee.git", - "ssh_url": "git@github.com=>LindseyB/cosee.git", - "clone_url": "https://github.com/LindseyB/cosee.git", - "svn_url": "https://github.com/LindseyB/cosee", - "homepage": null, - "size": 1, - "stargazers_count": 0, - "watchers_count": 0, - "language": null, - "has_issues": true, - "has_projects": true, - "has_downloads": true, - "has_wiki": true, - "has_pages": false, - "forks_count": 0, - "mirror_url": null, - "open_issues_count": 0, - "forks": 0, - "open_issues": 0, - "watchers": 0, - "default_branch": "master", - "network_count": 0, - "subscribers_count": 0 - } - }, - "full-repository": { - "value": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "language": null, - "forks_count": 9, - "forks": 9, - "stargazers_count": 80, - "watchers_count": 80, - "watchers": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "open_issues": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "pull": true, "push": false, "admin": false }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "organization": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "Organization", - "site_admin": false - }, - "parent": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - }, - "source": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - } - }, - "artifact-paginated": { - "value": { - "total_count": 2, - "artifacts": [ - { - "id": 11, - "node_id": "MDg6QXJ0aWZhY3QxMQ==", - "name": "Rails", - "size_in_bytes": 556, - "url": "https://api.github.com/repos/octo-org/octo-docs/actions/artifacts/11", - "archive_download_url": "https://api.github.com/repos/octo-org/octo-docs/actions/artifacts/11/zip", - "expired": false, - "created_at": "2020-01-10T14:59:22Z", - "expires_at": "2020-03-21T14:59:22Z", - "updated_at": "2020-02-21T14:59:22Z" - }, - { - "id": 13, - "node_id": "MDg6QXJ0aWZhY3QxMw==", - "name": "", - "size_in_bytes": 453, - "url": "https://api.github.com/repos/octo-org/octo-docs/actions/artifacts/13", - "archive_download_url": "https://api.github.com/repos/octo-org/octo-docs/actions/artifacts/13/zip", - "expired": false, - "created_at": "2020-01-10T14:59:22Z", - "expires_at": "2020-03-21T14:59:22Z", - "updated_at": "2020-02-21T14:59:22Z" - } - ] - } - }, - "artifact": { - "value": { - "id": 11, - "node_id": "MDg6QXJ0aWZhY3QxMQ==", - "name": "Rails", - "size_in_bytes": 556, - "url": "https://api.github.com/repos/octo-org/octo-docs/actions/artifacts/11", - "archive_download_url": "https://api.github.com/repos/octo-org/octo-docs/actions/artifacts/11/zip", - "expired": false, - "created_at": "2020-01-10T14:59:22Z", - "expires_at": "2020-01-21T14:59:22Z", - "updated_at": "2020-01-21T14:59:22Z" - } - }, - "job": { - "value": { - "id": 399444496, - "run_id": 29679449, - "run_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/29679449", - "node_id": "MDEyOldvcmtmbG93IEpvYjM5OTQ0NDQ5Ng==", - "head_sha": "f83a356604ae3c5d03e1b46ef4d1ca77d64a90b0", - "url": "https://api.github.com/repos/octo-org/octo-repo/actions/jobs/399444496", - "html_url": "https://github.com/octo-org/octo-repo/runs/399444496", - "status": "completed", - "conclusion": "success", - "started_at": "2020-01-20T17:42:40Z", - "completed_at": "2020-01-20T17:44:39Z", - "name": "build", - "steps": [ - { - "name": "Set up job", - "status": "completed", - "conclusion": "success", - "number": 1, - "started_at": "2020-01-20T09:42:40.000-08:00", - "completed_at": "2020-01-20T09:42:41.000-08:00" - }, - { - "name": "Run actions/checkout@v2", - "status": "completed", - "conclusion": "success", - "number": 2, - "started_at": "2020-01-20T09:42:41.000-08:00", - "completed_at": "2020-01-20T09:42:45.000-08:00" - }, - { - "name": "Set up Ruby", - "status": "completed", - "conclusion": "success", - "number": 3, - "started_at": "2020-01-20T09:42:45.000-08:00", - "completed_at": "2020-01-20T09:42:45.000-08:00" - }, - { - "name": "Run actions/cache@v2", - "status": "completed", - "conclusion": "success", - "number": 4, - "started_at": "2020-01-20T09:42:45.000-08:00", - "completed_at": "2020-01-20T09:42:48.000-08:00" - }, - { - "name": "Install Bundler", - "status": "completed", - "conclusion": "success", - "number": 5, - "started_at": "2020-01-20T09:42:48.000-08:00", - "completed_at": "2020-01-20T09:42:52.000-08:00" - }, - { - "name": "Install Gems", - "status": "completed", - "conclusion": "success", - "number": 6, - "started_at": "2020-01-20T09:42:52.000-08:00", - "completed_at": "2020-01-20T09:42:53.000-08:00" - }, - { - "name": "Run Tests", - "status": "completed", - "conclusion": "success", - "number": 7, - "started_at": "2020-01-20T09:42:53.000-08:00", - "completed_at": "2020-01-20T09:42:59.000-08:00" - }, - { - "name": "Deploy to Heroku", - "status": "completed", - "conclusion": "success", - "number": 8, - "started_at": "2020-01-20T09:42:59.000-08:00", - "completed_at": "2020-01-20T09:44:39.000-08:00" - }, - { - "name": "Post actions/cache@v2", - "status": "completed", - "conclusion": "success", - "number": 16, - "started_at": "2020-01-20T09:44:39.000-08:00", - "completed_at": "2020-01-20T09:44:39.000-08:00" - }, - { - "name": "Complete job", - "status": "completed", - "conclusion": "success", - "number": 17, - "started_at": "2020-01-20T09:44:39.000-08:00", - "completed_at": "2020-01-20T09:44:39.000-08:00" - } - ], - "check_run_url": "https://api.github.com/repos/octo-org/octo-repo/check-runs/399444496" - } - }, - "actions-repository-permissions": { - "value": { - "enabled": true, - "allowed_actions": "selected", - "selected_actions_url": "https://api.github.com/repositories/42/actions/permissions/selected-actions" - } - }, - "workflow-run-paginated": { - "value": { - "total_count": 1, - "workflow_runs": [ - { - "id": 30433642, - "name": "Build", - "node_id": "MDEyOldvcmtmbG93IFJ1bjI2OTI4OQ==", - "head_branch": "master", - "head_sha": "acb5820ced9479c074f688cc328bf03f341a511d", - "run_number": 562, - "event": "push", - "status": "queued", - "conclusion": null, - "workflow_id": 159038, - "url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642", - "html_url": "https://github.com/octo-org/octo-repo/actions/runs/30433642", - "pull_requests": [], - "created_at": "2020-01-22T19:33:08Z", - "updated_at": "2020-01-22T19:33:08Z", - "jobs_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/jobs", - "logs_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/logs", - "check_suite_url": "https://api.github.com/repos/octo-org/octo-repo/check-suites/414944374", - "artifacts_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/artifacts", - "cancel_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/cancel", - "rerun_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/rerun", - "workflow_url": "https://api.github.com/repos/octo-org/octo-repo/actions/workflows/159038", - "head_commit": { - "id": "acb5820ced9479c074f688cc328bf03f341a511d", - "tree_id": "d23f6eedb1e1b9610bbc754ddb5197bfe7271223", - "message": "Create linter.yaml", - "timestamp": "2020-01-22T19:33:05Z", - "author": { "name": "Octo Cat", "email": "octocat@github.com" }, - "committer": { "name": "GitHub", "email": "noreply@github.com" } - }, - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "head_repository": { - "id": 217723378, - "node_id": "MDEwOlJlcG9zaXRvcnkyMTc3MjMzNzg=", - "name": "octo-repo", - "full_name": "octo-org/octo-repo", - "private": true, - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "html_url": "https://github.com/octo-org/octo-repo", - "description": null, - "fork": false, - "url": "https://api.github.com/repos/octo-org/octo-repo", - "forks_url": "https://api.github.com/repos/octo-org/octo-repo/forks", - "keys_url": "https://api.github.com/repos/octo-org/octo-repo/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/octo-org/octo-repo/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/octo-org/octo-repo/teams", - "hooks_url": "https://api.github.com/repos/octo-org/octo-repo/hooks", - "issue_events_url": "https://api.github.com/repos/octo-org/octo-repo/issues/events{/number}", - "events_url": "https://api.github.com/repos/octo-org/octo-repo/events", - "assignees_url": "https://api.github.com/repos/octo-org/octo-repo/assignees{/user}", - "branches_url": "https://api.github.com/repos/octo-org/octo-repo/branches{/branch}", - "tags_url": "https://api.github.com/repos/octo-org/octo-repo/tags", - "blobs_url": "https://api.github.com/repos/octo-org/octo-repo/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/octo-org/octo-repo/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/octo-org/octo-repo/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/octo-org/octo-repo/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/octo-org/octo-repo/statuses/{sha}", - "languages_url": "https://api.github.com/repos/octo-org/octo-repo/languages", - "stargazers_url": "https://api.github.com/repos/octo-org/octo-repo/stargazers", - "contributors_url": "https://api.github.com/repos/octo-org/octo-repo/contributors", - "subscribers_url": "https://api.github.com/repos/octo-org/octo-repo/subscribers", - "subscription_url": "https://api.github.com/repos/octo-org/octo-repo/subscription", - "commits_url": "https://api.github.com/repos/octo-org/octo-repo/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/octo-org/octo-repo/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/octo-org/octo-repo/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/octo-org/octo-repo/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/octo-org/octo-repo/contents/{+path}", - "compare_url": "https://api.github.com/repos/octo-org/octo-repo/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/octo-org/octo-repo/merges", - "archive_url": "https://api.github.com/repos/octo-org/octo-repo/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/octo-org/octo-repo/downloads", - "issues_url": "https://api.github.com/repos/octo-org/octo-repo/issues{/number}", - "pulls_url": "https://api.github.com/repos/octo-org/octo-repo/pulls{/number}", - "milestones_url": "https://api.github.com/repos/octo-org/octo-repo/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octo-org/octo-repo/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/octo-org/octo-repo/labels{/name}", - "releases_url": "https://api.github.com/repos/octo-org/octo-repo/releases{/id}", - "deployments_url": "https://api.github.com/repos/octo-org/octo-repo/deployments" - } - } - ] - } - }, - "workflow-run": { - "value": { - "id": 30433642, - "name": "Build", - "node_id": "MDEyOldvcmtmbG93IFJ1bjI2OTI4OQ==", - "head_branch": "master", - "head_sha": "acb5820ced9479c074f688cc328bf03f341a511d", - "run_number": 562, - "event": "push", - "status": "queued", - "conclusion": null, - "workflow_id": 159038, - "url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642", - "html_url": "https://github.com/octo-org/octo-repo/actions/runs/30433642", - "pull_requests": [], - "created_at": "2020-01-22T19:33:08Z", - "updated_at": "2020-01-22T19:33:08Z", - "jobs_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/jobs", - "logs_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/logs", - "check_suite_url": "https://api.github.com/repos/octo-org/octo-repo/check-suites/414944374", - "artifacts_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/artifacts", - "cancel_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/cancel", - "rerun_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/30433642/rerun", - "workflow_url": "https://api.github.com/repos/octo-org/octo-repo/actions/workflows/159038", - "head_commit": { - "id": "acb5820ced9479c074f688cc328bf03f341a511d", - "tree_id": "d23f6eedb1e1b9610bbc754ddb5197bfe7271223", - "message": "Create linter.yaml", - "timestamp": "2020-01-22T19:33:05Z", - "author": { "name": "Octo Cat", "email": "octocat@github.com" }, - "committer": { "name": "GitHub", "email": "noreply@github.com" } - }, - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "head_repository": { - "id": 217723378, - "node_id": "MDEwOlJlcG9zaXRvcnkyMTc3MjMzNzg=", - "name": "octo-repo", - "full_name": "octo-org/octo-repo", - "private": true, - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "html_url": "https://github.com/octo-org/octo-repo", - "description": null, - "fork": false, - "url": "https://api.github.com/repos/octo-org/octo-repo", - "forks_url": "https://api.github.com/repos/octo-org/octo-repo/forks", - "keys_url": "https://api.github.com/repos/octo-org/octo-repo/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/octo-org/octo-repo/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/octo-org/octo-repo/teams", - "hooks_url": "https://api.github.com/repos/octo-org/octo-repo/hooks", - "issue_events_url": "https://api.github.com/repos/octo-org/octo-repo/issues/events{/number}", - "events_url": "https://api.github.com/repos/octo-org/octo-repo/events", - "assignees_url": "https://api.github.com/repos/octo-org/octo-repo/assignees{/user}", - "branches_url": "https://api.github.com/repos/octo-org/octo-repo/branches{/branch}", - "tags_url": "https://api.github.com/repos/octo-org/octo-repo/tags", - "blobs_url": "https://api.github.com/repos/octo-org/octo-repo/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/octo-org/octo-repo/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/octo-org/octo-repo/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/octo-org/octo-repo/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/octo-org/octo-repo/statuses/{sha}", - "languages_url": "https://api.github.com/repos/octo-org/octo-repo/languages", - "stargazers_url": "https://api.github.com/repos/octo-org/octo-repo/stargazers", - "contributors_url": "https://api.github.com/repos/octo-org/octo-repo/contributors", - "subscribers_url": "https://api.github.com/repos/octo-org/octo-repo/subscribers", - "subscription_url": "https://api.github.com/repos/octo-org/octo-repo/subscription", - "commits_url": "https://api.github.com/repos/octo-org/octo-repo/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/octo-org/octo-repo/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/octo-org/octo-repo/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/octo-org/octo-repo/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/octo-org/octo-repo/contents/{+path}", - "compare_url": "https://api.github.com/repos/octo-org/octo-repo/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/octo-org/octo-repo/merges", - "archive_url": "https://api.github.com/repos/octo-org/octo-repo/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/octo-org/octo-repo/downloads", - "issues_url": "https://api.github.com/repos/octo-org/octo-repo/issues{/number}", - "pulls_url": "https://api.github.com/repos/octo-org/octo-repo/pulls{/number}", - "milestones_url": "https://api.github.com/repos/octo-org/octo-repo/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octo-org/octo-repo/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/octo-org/octo-repo/labels{/name}", - "releases_url": "https://api.github.com/repos/octo-org/octo-repo/releases{/id}", - "deployments_url": "https://api.github.com/repos/octo-org/octo-repo/deployments" - } - } - }, - "job-paginated": { - "value": { - "total_count": 1, - "jobs": [ - { - "id": 399444496, - "run_id": 29679449, - "run_url": "https://api.github.com/repos/octo-org/octo-repo/actions/runs/29679449", - "node_id": "MDEyOldvcmtmbG93IEpvYjM5OTQ0NDQ5Ng==", - "head_sha": "f83a356604ae3c5d03e1b46ef4d1ca77d64a90b0", - "url": "https://api.github.com/repos/octo-org/octo-repo/actions/jobs/399444496", - "html_url": "https://github.com/octo-org/octo-repo/runs/399444496", - "status": "completed", - "conclusion": "success", - "started_at": "2020-01-20T17:42:40Z", - "completed_at": "2020-01-20T17:44:39Z", - "name": "build", - "steps": [ - { - "name": "Set up job", - "status": "completed", - "conclusion": "success", - "number": 1, - "started_at": "2020-01-20T09:42:40.000-08:00", - "completed_at": "2020-01-20T09:42:41.000-08:00" - }, - { - "name": "Run actions/checkout@v2", - "status": "completed", - "conclusion": "success", - "number": 2, - "started_at": "2020-01-20T09:42:41.000-08:00", - "completed_at": "2020-01-20T09:42:45.000-08:00" - }, - { - "name": "Set up Ruby", - "status": "completed", - "conclusion": "success", - "number": 3, - "started_at": "2020-01-20T09:42:45.000-08:00", - "completed_at": "2020-01-20T09:42:45.000-08:00" - }, - { - "name": "Run actions/cache@v2", - "status": "completed", - "conclusion": "success", - "number": 4, - "started_at": "2020-01-20T09:42:45.000-08:00", - "completed_at": "2020-01-20T09:42:48.000-08:00" - }, - { - "name": "Install Bundler", - "status": "completed", - "conclusion": "success", - "number": 5, - "started_at": "2020-01-20T09:42:48.000-08:00", - "completed_at": "2020-01-20T09:42:52.000-08:00" - }, - { - "name": "Install Gems", - "status": "completed", - "conclusion": "success", - "number": 6, - "started_at": "2020-01-20T09:42:52.000-08:00", - "completed_at": "2020-01-20T09:42:53.000-08:00" - }, - { - "name": "Run Tests", - "status": "completed", - "conclusion": "success", - "number": 7, - "started_at": "2020-01-20T09:42:53.000-08:00", - "completed_at": "2020-01-20T09:42:59.000-08:00" - }, - { - "name": "Deploy to Heroku", - "status": "completed", - "conclusion": "success", - "number": 8, - "started_at": "2020-01-20T09:42:59.000-08:00", - "completed_at": "2020-01-20T09:44:39.000-08:00" - }, - { - "name": "Post actions/cache@v2", - "status": "completed", - "conclusion": "success", - "number": 16, - "started_at": "2020-01-20T09:44:39.000-08:00", - "completed_at": "2020-01-20T09:44:39.000-08:00" - }, - { - "name": "Complete job", - "status": "completed", - "conclusion": "success", - "number": 17, - "started_at": "2020-01-20T09:44:39.000-08:00", - "completed_at": "2020-01-20T09:44:39.000-08:00" - } - ], - "check_run_url": "https://api.github.com/repos/octo-org/octo-repo/check-runs/399444496" - } - ] - } - }, - "workflow-run-usage": { - "value": { - "billable": { - "UBUNTU": { "total_ms": 180000, "jobs": 1 }, - "MACOS": { "total_ms": 240000, "jobs": 4 }, - "WINDOWS": { "total_ms": 300000, "jobs": 2 } - }, - "run_duration_ms": 500000 - } - }, - "actions-secret-paginated": { - "value": { - "total_count": 2, - "secrets": [ - { - "name": "GH_TOKEN", - "created_at": "2019-08-10T14:59:22Z", - "updated_at": "2020-01-10T14:59:22Z" - }, - { - "name": "GIST_ID", - "created_at": "2020-01-10T10:59:22Z", - "updated_at": "2020-01-11T11:59:22Z" - } - ] - } - }, - "actions-secret": { - "value": { - "name": "GH_TOKEN", - "created_at": "2019-08-10T14:59:22Z", - "updated_at": "2020-01-10T14:59:22Z" - } - }, - "workflow-paginated": { - "value": { - "total_count": 2, - "workflows": [ - { - "id": 161335, - "node_id": "MDg6V29ya2Zsb3cxNjEzMzU=", - "name": "CI", - "path": ".github/workflows/blank.yaml", - "state": "active", - "created_at": "2020-01-08T23:48:37.000-08:00", - "updated_at": "2020-01-08T23:50:21.000-08:00", - "url": "https://api.github.com/repos/octo-org/octo-repo/actions/workflows/161335", - "html_url": "https://github.com/octo-org/octo-repo/blob/master/.github/workflows/161335", - "badge_url": "https://github.com/octo-org/octo-repo/workflows/CI/badge.svg" - }, - { - "id": 269289, - "node_id": "MDE4OldvcmtmbG93IFNlY29uZGFyeTI2OTI4OQ==", - "name": "Linter", - "path": ".github/workflows/linter.yaml", - "state": "active", - "created_at": "2020-01-08T23:48:37.000-08:00", - "updated_at": "2020-01-08T23:50:21.000-08:00", - "url": "https://api.github.com/repos/octo-org/octo-repo/actions/workflows/269289", - "html_url": "https://github.com/octo-org/octo-repo/blob/master/.github/workflows/269289", - "badge_url": "https://github.com/octo-org/octo-repo/workflows/Linter/badge.svg" - } - ] - } - }, - "workflow": { - "value": { - "id": 161335, - "node_id": "MDg6V29ya2Zsb3cxNjEzMzU=", - "name": "CI", - "path": ".github/workflows/blank.yaml", - "state": "active", - "created_at": "2020-01-08T23:48:37.000-08:00", - "updated_at": "2020-01-08T23:50:21.000-08:00", - "url": "https://api.github.com/repos/octo-org/octo-repo/actions/workflows/161335", - "html_url": "https://github.com/octo-org/octo-repo/blob/master/.github/workflows/161335", - "badge_url": "https://github.com/octo-org/octo-repo/workflows/CI/badge.svg" - } - }, - "workflow-usage": { - "value": { - "billable": { - "UBUNTU": { "total_ms": 180000 }, - "MACOS": { "total_ms": 240000 }, - "WINDOWS": { "total_ms": 300000 } - } - } - }, - "short-branch-items": { - "value": [ - { - "name": "master", - "commit": { - "sha": "c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc", - "url": "https://api.github.com/repos/octocat/Hello-World/commits/c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc" - }, - "protected": true - } - ] - }, - "short-branch-with-protection-items": { - "value": [ - { - "name": "master", - "commit": { - "sha": "c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc", - "url": "https://api.github.com/repos/octocat/Hello-World/commits/c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc" - }, - "protected": true, - "protection": { - "enabled": true, - "required_status_checks": { - "enforcement_level": "non_admins", - "contexts": ["ci-test", "linter"] - } - }, - "protection_url": "https://api.github.com/repos/octocat/hello-world/branches/master/protection" - } - ] - }, - "branch-with-protection": { - "value": { - "name": "master", - "commit": { - "sha": "7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", - "node_id": "MDY6Q29tbWl0N2ZkMWE2MGIwMWY5MWIzMTRmNTk5NTVhNGU0ZDRlODBkOGVkZjExZA==", - "commit": { - "author": { - "name": "The Octocat", - "date": "2012-03-06T15:06:50-08:00", - "email": "octocat@nowhere.com" - }, - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", - "message": "Merge pull request #6 from Spaceghost/patch-1\n\nNew line at end of file.", - "tree": { - "sha": "b4eecafa9be2f2006ce1b709d6857b07069b4608", - "url": "https://api.github.com/repos/octocat/Hello-World/git/trees/b4eecafa9be2f2006ce1b709d6857b07069b4608" - }, - "committer": { - "name": "The Octocat", - "date": "2012-03-06T15:06:50-08:00", - "email": "octocat@nowhere.com" - }, - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - }, - "comment_count": 0 - }, - "author": { - "gravatar_id": "", - "avatar_url": "https://secure.gravatar.com/avatar/7ad39074b0584bc555d0417ae3e7d974?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png", - "url": "https://api.github.com/users/octocat", - "id": 583231, - "login": "octocat", - "node_id": "MDQ6VXNlcjE=", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "parents": [ - { - "sha": "553c2077f0edc3d5dc5d17262f6aa498e69d6f8e", - "url": "https://api.github.com/repos/octocat/Hello-World/commits/553c2077f0edc3d5dc5d17262f6aa498e69d6f8e" - }, - { - "sha": "762941318ee16e59dabbacb1b4049eec22f0d303", - "url": "https://api.github.com/repos/octocat/Hello-World/commits/762941318ee16e59dabbacb1b4049eec22f0d303" - } - ], - "url": "https://api.github.com/repos/octocat/Hello-World/commits/7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", - "committer": { - "gravatar_id": "", - "avatar_url": "https://secure.gravatar.com/avatar/7ad39074b0584bc555d0417ae3e7d974?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png", - "url": "https://api.github.com/users/octocat", - "id": 583231, - "login": "octocat", - "node_id": "MDQ6VXNlcjE=", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "html_url": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments" - }, - "_links": { - "html": "https://github.com/octocat/Hello-World/tree/master", - "self": "https://api.github.com/repos/octocat/Hello-World/branches/master" - }, - "protected": true, - "protection": { - "enabled": true, - "required_status_checks": { - "enforcement_level": "non_admins", - "contexts": ["ci-test", "linter"] - } - }, - "protection_url": "https://api.github.com/repos/octocat/hello-world/branches/master/protection" - } - }, - "branch-protection": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection", - "enabled": true, - "required_status_checks": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks", - "contexts": ["continuous-integration/travis-ci"], - "contexts_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts", - "enforcement_level": "non_admins" - }, - "enforce_admins": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins", - "enabled": true - }, - "required_pull_request_reviews": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_pull_request_reviews", - "dismissal_restrictions": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions", - "users_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/users", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/teams", - "users": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "teams": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos", - "parent": null - } - ] - }, - "dismiss_stale_reviews": true, - "require_code_owner_reviews": true, - "required_approving_review_count": 2 - }, - "restrictions": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions", - "users_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/users", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams", - "apps_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams", - "users": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "teams": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos", - "parent": null - } - ], - "apps": [ - { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - } - ] - }, - "required_linear_history": { "enabled": true }, - "allow_force_pushes": { "enabled": true }, - "allow_deletions": { "enabled": true } - } - }, - "protected-branch-admin-enforced-2": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins", - "enabled": true - } - }, - "protected-branch-pull-request-review": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_pull_request_reviews", - "dismissal_restrictions": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions", - "users_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/users", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/teams", - "users": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "teams": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos", - "parent": null - } - ] - }, - "dismiss_stale_reviews": true, - "require_code_owner_reviews": true, - "required_approving_review_count": 2 - } - }, - "protected-branch-admin-enforced": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures", - "enabled": true - } - }, - "status-check-policy": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks", - "strict": true, - "contexts": ["continuous-integration/travis-ci"], - "contexts_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts" - } - }, - "branch-restriction-policy": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions", - "users_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/users", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams", - "apps_url": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams", - "users": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "teams": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos", - "parent": null - } - ], - "apps": [ - { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - } - ] - } - }, - "integration-items": { - "value": [ - { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - } - ] - }, - "check-run-example-of-in-progress-conclusion": { - "summary": "Example of in_progress conclusion", - "value": { - "id": 4, - "head_sha": "ce587453ced02b1526dfb4cb910479d431683101", - "node_id": "MDg6Q2hlY2tSdW40", - "external_id": "42", - "url": "https://api.github.com/repos/github/hello-world/check-runs/4", - "html_url": "https://github.com/github/hello-world/runs/4", - "details_url": "https://example.com", - "status": "in_progress", - "conclusion": null, - "started_at": "2018-05-04T01:14:52Z", - "completed_at": null, - "output": { - "title": "Mighty Readme Report", - "summary": "", - "text": "", - "annotations_count": 1, - "annotations_url": "https://api.github.com/repos/github/hello-world/check-runs/4/annotations" - }, - "name": "mighty_readme", - "check_suite": { "id": 5 }, - "app": { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - }, - "pull_requests": [ - { - "url": "https://api.github.com/repos/github/hello-world/pulls/1", - "id": 1934, - "number": 3956, - "head": { - "ref": "say-hello", - "sha": "3dca65fa3e8d4b3da3f3d056c59aee1c50f41390", - "repo": { - "id": 526, - "url": "https://api.github.com/repos/github/hello-world", - "name": "hello-world" - } - }, - "base": { - "ref": "master", - "sha": "e7fdf7640066d71ad16a86fbcbb9c6a10a18af4f", - "repo": { - "id": 526, - "url": "https://api.github.com/repos/github/hello-world", - "name": "hello-world" - } - } - } - ] - } - }, - "check-run-example-of-completed-conclusion": { - "summary": "Example of completed conclusion", - "value": { - "id": 4, - "head_sha": "ce587453ced02b1526dfb4cb910479d431683101", - "node_id": "MDg6Q2hlY2tSdW40", - "external_id": "", - "url": "https://api.github.com/repos/github/hello-world/check-runs/4", - "html_url": "https://github.com/github/hello-world/runs/4", - "details_url": "https://example.com", - "status": "completed", - "conclusion": "neutral", - "started_at": "2018-05-04T01:14:52Z", - "completed_at": "2018-05-04T01:14:52Z", - "output": { - "title": "Mighty Readme report", - "summary": "There are 0 failures, 2 warnings, and 1 notice.", - "text": "You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.", - "annotations_count": 2, - "annotations_url": "https://api.github.com/repos/github/hello-world/check-runs/4/annotations" - }, - "name": "mighty_readme", - "check_suite": { "id": 5 }, - "app": { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - }, - "pull_requests": [ - { - "url": "https://api.github.com/repos/github/hello-world/pulls/1", - "id": 1934, - "number": 3956, - "head": { - "ref": "say-hello", - "sha": "3dca65fa3e8d4b3da3f3d056c59aee1c50f41390", - "repo": { - "id": 526, - "url": "https://api.github.com/repos/github/hello-world", - "name": "hello-world" - } - }, - "base": { - "ref": "master", - "sha": "e7fdf7640066d71ad16a86fbcbb9c6a10a18af4f", - "repo": { - "id": 526, - "url": "https://api.github.com/repos/github/hello-world", - "name": "hello-world" - } - } - } - ] - } - }, - "check-run": { - "value": { - "id": 4, - "head_sha": "ce587453ced02b1526dfb4cb910479d431683101", - "node_id": "MDg6Q2hlY2tSdW40", - "external_id": "", - "url": "https://api.github.com/repos/github/hello-world/check-runs/4", - "html_url": "https://github.com/github/hello-world/runs/4", - "details_url": "https://example.com", - "status": "completed", - "conclusion": "neutral", - "started_at": "2018-05-04T01:14:52Z", - "completed_at": "2018-05-04T01:14:52Z", - "output": { - "title": "Mighty Readme report", - "summary": "There are 0 failures, 2 warnings, and 1 notice.", - "text": "You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.", - "annotations_count": 2, - "annotations_url": "https://api.github.com/repos/github/hello-world/check-runs/4/annotations" - }, - "name": "mighty_readme", - "check_suite": { "id": 5 }, - "app": { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - }, - "pull_requests": [ - { - "url": "https://api.github.com/repos/github/hello-world/pulls/1", - "id": 1934, - "number": 3956, - "head": { - "ref": "say-hello", - "sha": "3dca65fa3e8d4b3da3f3d056c59aee1c50f41390", - "repo": { - "id": 526, - "url": "https://api.github.com/repos/github/hello-world", - "name": "hello-world" - } - }, - "base": { - "ref": "master", - "sha": "e7fdf7640066d71ad16a86fbcbb9c6a10a18af4f", - "repo": { - "id": 526, - "url": "https://api.github.com/repos/github/hello-world", - "name": "hello-world" - } - } - } - ] - } - }, - "check-annotation-items": { - "value": [ - { - "path": "README.md", - "start_line": 2, - "end_line": 2, - "start_column": 5, - "end_column": 10, - "annotation_level": "warning", - "title": "Spell Checker", - "message": "Check your spelling for 'banaas'.", - "raw_details": "Do you mean 'bananas' or 'banana'?", - "blob_href": "https://api.github.com/repos/github/rest-api-description/git/blobs/abc" - } - ] - }, - "check-suite": { - "value": { - "id": 5, - "node_id": "MDEwOkNoZWNrU3VpdGU1", - "head_branch": "master", - "head_sha": "d6fde92930d4715a2b49857d24b940956b26d2d3", - "status": "completed", - "conclusion": "neutral", - "url": "https://api.github.com/repos/github/hello-world/check-suites/5", - "before": "146e867f55c26428e5f9fade55a9bbf5e95a7912", - "after": "d6fde92930d4715a2b49857d24b940956b26d2d3", - "pull_requests": [], - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "app": { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - }, - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "template_repository": "octocat/template-repo", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "delete_branch_on_merge": true, - "subscribers_count": 42, - "network_count": 0 - }, - "head_commit": { - "id": "7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", - "tree_id": "7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", - "message": "Merge pull request #6 from Spaceghost/patch-1\n\nNew line at end of file.", - "timestamp": "2016-10-10T00:00:00Z", - "author": { "name": "The Octocat", "email": "octocat@nowhere.com" }, - "committer": { - "name": "The Octocat", - "email": "octocat@nowhere.com" - } - }, - "latest_check_runs_count": 1, - "check_runs_url": "https://api.github.com/repos/octocat/Hello-World/check-suites/5/check-runs" - } - }, - "check-suite-preference": { - "value": { - "preferences": { - "auto_trigger_checks": [ - { "app_id": 2, "setting": true }, - { "app_id": 4, "setting": false } - ] - }, - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "http://choosealicense.com/licenses/mit/" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - } - }, - "check-run-paginated": { - "value": { - "total_count": 1, - "check_runs": [ - { - "id": 4, - "head_sha": "ce587453ced02b1526dfb4cb910479d431683101", - "node_id": "MDg6Q2hlY2tSdW40", - "external_id": "", - "url": "https://api.github.com/repos/github/hello-world/check-runs/4", - "html_url": "https://github.com/github/hello-world/runs/4", - "details_url": "https://example.com", - "status": "completed", - "conclusion": "neutral", - "started_at": "2018-05-04T01:14:52Z", - "completed_at": "2018-05-04T01:14:52Z", - "output": { - "title": "Mighty Readme report", - "summary": "There are 0 failures, 2 warnings, and 1 notice.", - "text": "You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.", - "annotations_count": 2, - "annotations_url": "https://api.github.com/repos/github/hello-world/check-runs/4/annotations" - }, - "name": "mighty_readme", - "check_suite": { "id": 5 }, - "app": { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - }, - "pull_requests": [ - { - "url": "https://api.github.com/repos/github/hello-world/pulls/1", - "id": 1934, - "number": 3956, - "head": { - "ref": "say-hello", - "sha": "3dca65fa3e8d4b3da3f3d056c59aee1c50f41390", - "repo": { - "id": 526, - "url": "https://api.github.com/repos/github/hello-world", - "name": "hello-world" - } - }, - "base": { - "ref": "master", - "sha": "e7fdf7640066d71ad16a86fbcbb9c6a10a18af4f", - "repo": { - "id": 526, - "url": "https://api.github.com/repos/github/hello-world", - "name": "hello-world" - } - } - } - ] - } - ] - } - }, - "code-scanning-alert-code-scanning-alert-items": { - "value": [ - { - "number": 4, - "created_at": "2020-02-13T12:29:18Z", - "url": "https://api.github.com/repos/github/hello-world/code-scanning/alerts/4", - "html_url": "https://github.com/github/hello-world/code-scanning/4", - "state": "open", - "dismissed_by": null, - "dismissed_at": null, - "dismissed_reason": null, - "rule": { - "id": "js/zipslip", - "severity": "error", - "description": "Arbitrary file write during zip extraction" - }, - "tool": { "name": "CodeQL command-line toolchain", "version": null } - }, - { - "number": 3, - "created_at": "2020-02-13T12:29:18Z", - "url": "https://api.github.com/repos/github/hello-world/code-scanning/alerts/3", - "html_url": "https://github.com/github/hello-world/code-scanning/3", - "state": "dismissed", - "dismissed_by": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "dismissed_at": "2020-02-14T12:29:18Z", - "dismissed_reason": "false positive", - "rule": { - "id": "js/zipslip", - "severity": "error", - "description": "Arbitrary file write during zip extraction" - }, - "tool": { "name": "CodeQL command-line toolchain", "version": null } - } - ] - }, - "code-scanning-alert-code-scanning-alert": { - "value": { - "number": 42, - "created_at": "2020-06-19T11:21:34Z", - "url": "https://api.github.com/repos/github/hello-world/code-scanning/alerts/42", - "html_url": "https://github.com/github/hello-world/code-scanning/42", - "instances": [ - { - "ref": "refs/heads/main", - "analysis_key": ".github/workflows/codeql-analysis.yml:CodeQL-Build", - "environment": "", - "state": "fixed" - }, - { - "ref": "refs/pull/3740/head", - "analysis_key": ".github/workflows/codeql-analysis.yml:CodeQL-Build", - "environment": "", - "state": "dismissed" - } - ], - "state": "dismissed", - "dismissed_by": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "dismissed_at": "2020-02-14T12:29:18Z", - "dismissed_reason": "false positive", - "rule": { - "id": "js/polynomial-redos", - "severity": "warning", - "description": "Polynomial regular expression used on uncontrolled data" - }, - "tool": { "name": "CodeQL command-line toolchain", "version": null } - } - }, - "code-scanning-alert-code-scanning-alert-dismissed": { - "value": { - "number": 42, - "created_at": "2020-08-25T21:28:36Z", - "url": "https://api.github.com/repos/github/hello-world/code-scanning/alerts/42", - "html_url": "https://github.com/github/hello-world/code-scanning/42", - "instances": [ - { - "ref": "refs/heads/codeql-analysis-yml", - "analysis_key": ".github/workflows/codeql-analysis.yml:CodeQL-Build", - "environment": "", - "state": "dismissed" - }, - { - "ref": "refs/pull/3740/head", - "analysis_key": ".github/workflows/codeql-analysis.yml:CodeQL-Build", - "environment": "", - "state": "dismissed" - } - ], - "state": "dismissed", - "dismissed_by": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "dismissed_at": "2020-09-02T22:34:56Z", - "dismissed_reason": "false positive", - "rule": { - "id": "js/polynomial-redos", - "severity": "warning", - "description": "Polynomial regular expression used on uncontrolled data" - }, - "tool": { "name": "CodeQL command-line toolchain", "version": null } - } - }, - "code-scanning-analysis-code-scanning-analysis-items": { - "value": [ - { - "ref": "refs/heads/master", - "commit_sha": "d99612c3e1f2970085cfbaeadf8f010ef69bad83", - "analysis_key": ".github/workflows/codeql-analysis.yml:analyze", - "tool_name": "CodeQL command-line toolchain", - "environment": "{}", - "error": "", - "created_at": "2020-08-27T15:05:21Z" - }, - { - "ref": "refs/heads/my-branch", - "commit_sha": "c8cff6510d4d084fb1b4aa13b64b97ca12b07321", - "analysis_key": ".github/workflows/shiftleft.yml:build", - "tool_name": "Python Security Analysis", - "environment": "{}", - "error": "", - "created_at": "2020-08-31T22:46:44Z" - } - ] - }, - "collaborator-items": { - "value": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false, - "permissions": { "pull": true, "push": true, "admin": false } - } - ] - }, - "repository-invitation-response-when-a-new-invitation-is-created": { - "value": { - "id": 1, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "invitee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "inviter": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "permissions": "write", - "created_at": "2016-06-13T14:52:50-05:00", - "url": "https://api.github.com/user/repository_invitations/1296269", - "html_url": "https://github.com/octocat/Hello-World/invitations" - } - }, - "repository-collaborator-permission-response-if-user-has-admin-permissions": { - "value": { - "permission": "admin", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "commit-comment-items": { - "value": [ - { - "html_url": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e#commitcomment-1", - "url": "https://api.github.com/repos/octocat/Hello-World/comments/1", - "id": 1, - "node_id": "MDEzOkNvbW1pdENvbW1lbnQx", - "body": "Great stuff", - "path": "file1.txt", - "position": 4, - "line": 14, - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z", - "author_association": "collaborator" - } - ] - }, - "commit-comment": { - "value": { - "html_url": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e#commitcomment-1", - "url": "https://api.github.com/repos/octocat/Hello-World/comments/1", - "id": 1, - "node_id": "MDEzOkNvbW1pdENvbW1lbnQx", - "body": "Great stuff", - "path": "file1.txt", - "position": 4, - "line": 14, - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "author_association": "collaborator", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z" - } - }, - "commit-comment-2": { - "value": { - "html_url": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e#commitcomment-1", - "url": "https://api.github.com/repos/octocat/Hello-World/comments/1", - "id": 1, - "node_id": "MDEzOkNvbW1pdENvbW1lbnQx", - "body": "Nice change", - "path": "file1.txt", - "position": 4, - "line": 14, - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "author_association": "collaborator", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z" - } - }, - "commit-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "node_id": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==", - "html_url": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments", - "commit": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "author": { - "name": "Monalisa Octocat", - "email": "support@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "committer": { - "name": "Monalisa Octocat", - "email": "support@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "message": "Fix all the bugs", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "comment_count": 0, - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - }, - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - } - ] - } - ] - }, - "branch-short-items": { - "value": [ - { - "name": "branch_5", - "commit": { - "sha": "c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc", - "url": "https://api.github.com/repos/octocat/Hello-World/commits/c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc" - }, - "protected": false - } - ] - }, - "pull-request-simple-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "id": 1, - "node_id": "MDExOlB1bGxSZXF1ZXN0MQ==", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch", - "issue_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", - "review_comments_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", - "review_comment_url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "number": 1347, - "state": "open", - "locked": true, - "title": "Amazing new feature", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Please pull these awesome changes in!", - "labels": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ], - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "active_lock_reason": "too heated", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:01:12Z", - "closed_at": "2011-01-26T19:01:12Z", - "merged_at": "2011-01-26T19:01:12Z", - "merge_commit_sha": "e5bd3914e2e596debea16f433f57875b5b90bcd6", - "assignee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - { - "login": "hubot", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/hubot_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/hubot", - "html_url": "https://github.com/hubot", - "followers_url": "https://api.github.com/users/hubot/followers", - "following_url": "https://api.github.com/users/hubot/following{/other_user}", - "gists_url": "https://api.github.com/users/hubot/gists{/gist_id}", - "starred_url": "https://api.github.com/users/hubot/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/hubot/subscriptions", - "organizations_url": "https://api.github.com/users/hubot/orgs", - "repos_url": "https://api.github.com/users/hubot/repos", - "events_url": "https://api.github.com/users/hubot/events{/privacy}", - "received_events_url": "https://api.github.com/users/hubot/received_events", - "type": "User", - "site_admin": true - } - ], - "requested_reviewers": [ - { - "login": "other_user", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/other_user_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/other_user", - "html_url": "https://github.com/other_user", - "followers_url": "https://api.github.com/users/other_user/followers", - "following_url": "https://api.github.com/users/other_user/following{/other_user}", - "gists_url": "https://api.github.com/users/other_user/gists{/gist_id}", - "starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/other_user/subscriptions", - "organizations_url": "https://api.github.com/users/other_user/orgs", - "repos_url": "https://api.github.com/users/other_user/repos", - "events_url": "https://api.github.com/users/other_user/events{/privacy}", - "received_events_url": "https://api.github.com/users/other_user/received_events", - "type": "User", - "site_admin": false - } - ], - "requested_teams": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos" - } - ], - "head": { - "label": "octocat:new-topic", - "ref": "new-topic", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "repo": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - }, - "base": { - "label": "octocat:master", - "ref": "master", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "repo": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - }, - "_links": { - "self": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347" - }, - "html": { - "href": "https://github.com/octocat/Hello-World/pull/1347" - }, - "issue": { - "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347" - }, - "comments": { - "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments" - }, - "review_comments": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments" - }, - "review_comment": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}" - }, - "commits": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits" - }, - "statuses": { - "href": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e" - } - }, - "author_association": "OWNER", - "draft": false - } - ] - }, - "commit": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "node_id": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==", - "html_url": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments", - "commit": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "author": { - "name": "Monalisa Octocat", - "email": "mona@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "committer": { - "name": "Monalisa Octocat", - "email": "mona@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "message": "Fix all the bugs", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "comment_count": 0, - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - }, - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - } - ], - "stats": { "additions": 104, "deletions": 4, "total": 108 }, - "files": [ - { - "filename": "file1.txt", - "additions": 10, - "deletions": 2, - "changes": 12, - "status": "modified", - "raw_url": "https://github.com/octocat/Hello-World/raw/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt", - "blob_url": "https://github.com/octocat/Hello-World/blob/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt", - "patch": "@@ -29,7 +29,7 @@\n....." - } - ] - } - }, - "check-suite-paginated": { - "value": { - "total_count": 1, - "check_suites": [ - { - "id": 5, - "node_id": "MDEwOkNoZWNrU3VpdGU1", - "head_branch": "master", - "head_sha": "d6fde92930d4715a2b49857d24b940956b26d2d3", - "status": "completed", - "conclusion": "neutral", - "url": "https://api.github.com/repos/github/hello-world/check-suites/5", - "before": "146e867f55c26428e5f9fade55a9bbf5e95a7912", - "after": "d6fde92930d4715a2b49857d24b940956b26d2d3", - "pull_requests": [], - "app": { - "id": 1, - "slug": "octoapp", - "node_id": "MDExOkludGVncmF0aW9uMQ==", - "owner": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": true - }, - "name": "Octocat App", - "description": "", - "external_url": "https://example.com", - "html_url": "https://github.com/apps/octoapp", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "permissions": { - "metadata": "read", - "contents": "read", - "issues": "write", - "single_file": "write" - }, - "events": ["push", "pull_request"] - }, - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "delete_branch_on_merge": true, - "subscribers_count": 42, - "network_count": 0 - }, - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "head_commit": { - "id": "7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", - "tree_id": "7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", - "message": "Merge pull request #6 from Spaceghost/patch-1\n\nNew line at end of file.", - "timestamp": "2016-10-10T00:00:00Z", - "author": { - "name": "The Octocat", - "email": "octocat@nowhere.com" - }, - "committer": { - "name": "The Octocat", - "email": "octocat@nowhere.com" - } - }, - "latest_check_runs_count": 1, - "check_runs_url": "https://api.github.com/repos/octocat/Hello-World/check-suites/5/check-runs" - } - ] - } - }, - "combined-commit-status": { - "value": { - "state": "success", - "statuses": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "avatar_url": "https://github.com/images/error/hubot_happy.gif", - "id": 1, - "node_id": "MDY6U3RhdHVzMQ==", - "state": "success", - "description": "Build has completed successfully", - "target_url": "https://ci.example.com/1000/output", - "context": "continuous-integration/jenkins", - "created_at": "2012-07-20T01:19:13Z", - "updated_at": "2012-07-20T01:19:13Z" - }, - { - "url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "avatar_url": "https://github.com/images/error/other_user_happy.gif", - "id": 2, - "node_id": "MDY6U3RhdHVzMg==", - "state": "success", - "description": "Testing has completed successfully", - "target_url": "https://ci.example.com/2000/output", - "context": "security/brakeman", - "created_at": "2012-08-20T01:19:13Z", - "updated_at": "2012-08-20T01:19:13Z" - } - ], - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "total_count": 2, - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "commit_url": "https://api.github.com/repos/octocat/Hello-World/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "url": "https://api.github.com/repos/octocat/Hello-World/6dcb09b5b57875f334f61aebed695e2e4193db5e/status" - } - }, - "status-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "avatar_url": "https://github.com/images/error/hubot_happy.gif", - "id": 1, - "node_id": "MDY6U3RhdHVzMQ==", - "state": "success", - "description": "Build has completed successfully", - "target_url": "https://ci.example.com/1000/output", - "context": "continuous-integration/jenkins", - "created_at": "2012-07-20T01:19:13Z", - "updated_at": "2012-07-20T01:19:13Z", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - ] - }, - "code-of-conduct-2": { - "value": { - "key": "contributor_covenant", - "name": "Contributor Covenant", - "url": "https://github.com/LindseyB/cosee/blob/master/CODE_OF_CONDUCT.md", - "body": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include=>\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include=>\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response\nto any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address,\nposting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at lindseyb@github.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n", - "html_url": "https://github.com/LindseyB/cosee/blob/master/CODE_OF_CONDUCT.md" - } - }, - "community-profile": { - "value": { - "health_percentage": 100, - "description": "My first repository on GitHub!", - "documentation": null, - "files": { - "code_of_conduct": { - "name": "Contributor Covenant", - "key": "contributor_covenant", - "url": "https://api.github.com/codes_of_conduct/contributor_covenant", - "html_url": "https://github.com/octocat/Hello-World/blob/master/CODE_OF_CONDUCT.md" - }, - "contributing": { - "url": "https://api.github.com/repos/octocat/Hello-World/contents/CONTRIBUTING", - "html_url": "https://github.com/octocat/Hello-World/blob/master/CONTRIBUTING" - }, - "issue_template": { - "url": "https://api.github.com/repos/octocat/Hello-World/contents/ISSUE_TEMPLATE", - "html_url": "https://github.com/octocat/Hello-World/blob/master/ISSUE_TEMPLATE" - }, - "pull_request_template": { - "url": "https://api.github.com/repos/octocat/Hello-World/contents/PULL_REQUEST_TEMPLATE", - "html_url": "https://github.com/octocat/Hello-World/blob/master/PULL_REQUEST_TEMPLATE" - }, - "license": { - "name": "MIT License", - "key": "mit", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "html_url": "https://github.com/octocat/Hello-World/blob/master/LICENSE", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - "readme": { - "url": "https://api.github.com/repos/octocat/Hello-World/contents/README.md", - "html_url": "https://github.com/octocat/Hello-World/blob/master/README.md" - } - }, - "updated_at": "2017-02-28T19:09:29Z", - "content_reports_enabled": true - } - }, - "commit-comparison": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/compare/master...topic", - "html_url": "https://github.com/octocat/Hello-World/compare/master...topic", - "permalink_url": "https://github.com/octocat/Hello-World/compare/octocat:bbcd538c8e72b8c175046e27cc8f907076331401...octocat:0328041d1152db8ae77652d1618a02e57f745f17", - "diff_url": "https://github.com/octocat/Hello-World/compare/master...topic.diff", - "patch_url": "https://github.com/octocat/Hello-World/compare/master...topic.patch", - "base_commit": { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "node_id": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==", - "html_url": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments", - "commit": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "author": { - "name": "Monalisa Octocat", - "email": "mona@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "committer": { - "name": "Monalisa Octocat", - "email": "mona@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "message": "Fix all the bugs", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "comment_count": 0, - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - }, - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - } - ] - }, - "merge_base_commit": { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "node_id": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==", - "html_url": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments", - "commit": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "author": { - "name": "Monalisa Octocat", - "email": "mona@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "committer": { - "name": "Monalisa Octocat", - "email": "mona@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "message": "Fix all the bugs", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "comment_count": 0, - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - }, - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - } - ] - }, - "status": "behind", - "ahead_by": 1, - "behind_by": 2, - "total_commits": 1, - "commits": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "node_id": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==", - "html_url": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments", - "commit": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "author": { - "name": "Monalisa Octocat", - "email": "mona@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "committer": { - "name": "Monalisa Octocat", - "email": "mona@github.com", - "date": "2011-04-14T16:00:49Z" - }, - "message": "Fix all the bugs", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - }, - "comment_count": 0, - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - }, - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e" - } - ] - } - ], - "files": [ - { - "sha": "bbcd538c8e72b8c175046e27cc8f907076331401", - "filename": "file1.txt", - "status": "added", - "additions": 103, - "deletions": 21, - "changes": 124, - "blob_url": "https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt", - "raw_url": "https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/file1.txt?ref=6dcb09b5b57875f334f61aebed695e2e4193db5e", - "patch": "@@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test" - } - ] - } - }, - "content-file-response-if-content-is-a-file": { - "summary": "Response if content is a file", - "value": { - "type": "file", - "encoding": "base64", - "size": 5362, - "name": "README.md", - "path": "README.md", - "content": "encoded content ...", - "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", - "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", - "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", - "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", - "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", - "_links": { - "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", - "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", - "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" - } - } - }, - "content-file-response-if-content-is-a-directory": { - "summary": "Response if content is a directory", - "value": [ - { - "type": "file", - "size": 625, - "name": "octokit.rb", - "path": "lib/octokit.rb", - "sha": "fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b", - "url": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit.rb", - "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b", - "html_url": "https://github.com/octokit/octokit.rb/blob/master/lib/octokit.rb", - "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/lib/octokit.rb", - "_links": { - "self": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit.rb", - "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b", - "html": "https://github.com/octokit/octokit.rb/blob/master/lib/octokit.rb" - } - }, - { - "type": "dir", - "size": 0, - "name": "octokit", - "path": "lib/octokit", - "sha": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d", - "url": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit", - "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d", - "html_url": "https://github.com/octokit/octokit.rb/tree/master/lib/octokit", - "download_url": null, - "_links": { - "self": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit", - "git": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d", - "html": "https://github.com/octokit/octokit.rb/tree/master/lib/octokit" - } - } - ] - }, - "content-file-response-if-content-is-a-symlink": { - "summary": "Response if content is a symlink", - "value": { - "type": "symlink", - "target": "/path/to/symlink/target", - "size": 23, - "name": "some-symlink", - "path": "bin/some-symlink", - "sha": "452a98979c88e093d682cab404a3ec82babebb48", - "url": "https://api.github.com/repos/octokit/octokit.rb/contents/bin/some-symlink", - "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/452a98979c88e093d682cab404a3ec82babebb48", - "html_url": "https://github.com/octokit/octokit.rb/blob/master/bin/some-symlink", - "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/bin/some-symlink", - "_links": { - "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/452a98979c88e093d682cab404a3ec82babebb48", - "self": "https://api.github.com/repos/octokit/octokit.rb/contents/bin/some-symlink", - "html": "https://github.com/octokit/octokit.rb/blob/master/bin/some-symlink" - } - } - }, - "content-file-response-if-content-is-a-submodule": { - "summary": "Response if content is a submodule", - "value": { - "type": "submodule", - "submodule_git_url": "git://github.com/jquery/qunit.git", - "size": 0, - "name": "qunit", - "path": "test/qunit", - "sha": "6ca3721222109997540bd6d9ccd396902e0ad2f9", - "url": "https://api.github.com/repos/jquery/jquery/contents/test/qunit?ref=master", - "git_url": "https://api.github.com/repos/jquery/qunit/git/trees/6ca3721222109997540bd6d9ccd396902e0ad2f9", - "html_url": "https://github.com/jquery/qunit/tree/6ca3721222109997540bd6d9ccd396902e0ad2f9", - "download_url": null, - "_links": { - "git": "https://api.github.com/repos/jquery/qunit/git/trees/6ca3721222109997540bd6d9ccd396902e0ad2f9", - "self": "https://api.github.com/repos/jquery/jquery/contents/test/qunit?ref=master", - "html": "https://github.com/jquery/qunit/tree/6ca3721222109997540bd6d9ccd396902e0ad2f9" - } - } - }, - "file-commit-example-for-updating-a-file": { - "value": { - "content": { - "name": "hello.txt", - "path": "notes/hello.txt", - "sha": "a56507ed892d05a37c6d6128c260937ea4d287bd", - "size": 9, - "url": "https://api.github.com/repos/octocat/Hello-World/contents/notes/hello.txt", - "html_url": "https://github.com/octocat/Hello-World/blob/master/notes/hello.txt", - "git_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/a56507ed892d05a37c6d6128c260937ea4d287bd", - "download_url": "https://raw.githubusercontent.com/octocat/HelloWorld/master/notes/hello.txt", - "type": "file", - "_links": { - "self": "https://api.github.com/repos/octocat/Hello-World/contents/notes/hello.txt", - "git": "https://api.github.com/repos/octocat/Hello-World/git/blobs/a56507ed892d05a37c6d6128c260937ea4d287bd", - "html": "https://github.com/octocat/Hello-World/blob/master/notes/hello.txt" - } - }, - "commit": { - "sha": "18a43cd8e1e3a79c786e3d808a73d23b6d212b16", - "node_id": "MDY6Q29tbWl0MThhNDNjZDhlMWUzYTc5Yzc4NmUzZDgwOGE3M2QyM2I2ZDIxMmIxNg==", - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/18a43cd8e1e3a79c786e3d808a73d23b6d212b16", - "html_url": "https://github.com/octocat/Hello-World/git/commit/18a43cd8e1e3a79c786e3d808a73d23b6d212b16", - "author": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "committer": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "message": "my commit message", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/trees/9a21f8e2018f42ffcf369b24d2cd20bc25c9e66f", - "sha": "9a21f8e2018f42ffcf369b24d2cd20bc25c9e66f" - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/da5a433788da5c255edad7979b328b67d79f53f6", - "html_url": "https://github.com/octocat/Hello-World/git/commit/da5a433788da5c255edad7979b328b67d79f53f6", - "sha": "da5a433788da5c255edad7979b328b67d79f53f6" - } - ], - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - } - } - }, - "file-commit-example-for-creating-a-file": { - "value": { - "content": { - "name": "hello.txt", - "path": "notes/hello.txt", - "sha": "95b966ae1c166bd92f8ae7d1c313e738c731dfc3", - "size": 9, - "url": "https://api.github.com/repos/octocat/Hello-World/contents/notes/hello.txt", - "html_url": "https://github.com/octocat/Hello-World/blob/master/notes/hello.txt", - "git_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/95b966ae1c166bd92f8ae7d1c313e738c731dfc3", - "download_url": "https://raw.githubusercontent.com/octocat/HelloWorld/master/notes/hello.txt", - "type": "file", - "_links": { - "self": "https://api.github.com/repos/octocat/Hello-World/contents/notes/hello.txt", - "git": "https://api.github.com/repos/octocat/Hello-World/git/blobs/95b966ae1c166bd92f8ae7d1c313e738c731dfc3", - "html": "https://github.com/octocat/Hello-World/blob/master/notes/hello.txt" - } - }, - "commit": { - "sha": "7638417db6d59f3c431d3e1f261cc637155684cd", - "node_id": "MDY6Q29tbWl0NzYzODQxN2RiNmQ1OWYzYzQzMWQzZTFmMjYxY2M2MzcxNTU2ODRjZA==", - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd", - "html_url": "https://github.com/octocat/Hello-World/git/commit/7638417db6d59f3c431d3e1f261cc637155684cd", - "author": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "committer": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "message": "my commit message", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/trees/691272480426f78a0138979dd3ce63b77f706feb", - "sha": "691272480426f78a0138979dd3ce63b77f706feb" - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/1acc419d4d6a9ce985db7be48c6349a0475975b5", - "html_url": "https://github.com/octocat/Hello-World/git/commit/1acc419d4d6a9ce985db7be48c6349a0475975b5", - "sha": "1acc419d4d6a9ce985db7be48c6349a0475975b5" - } - ], - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - } - } - }, - "file-commit": { - "value": { - "content": null, - "commit": { - "sha": "7638417db6d59f3c431d3e1f261cc637155684cd", - "node_id": "MDY6Q29tbWl0NzYzODQxN2RiNmQ1OWYzYzQzMWQzZTFmMjYxY2M2MzcxNTU2ODRjZA==", - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd", - "html_url": "https://github.com/octocat/Hello-World/git/commit/7638417db6d59f3c431d3e1f261cc637155684cd", - "author": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "committer": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "message": "my commit message", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/trees/691272480426f78a0138979dd3ce63b77f706feb", - "sha": "691272480426f78a0138979dd3ce63b77f706feb" - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/1acc419d4d6a9ce985db7be48c6349a0475975b5", - "html_url": "https://github.com/octocat/Hello-World/git/commit/1acc419d4d6a9ce985db7be48c6349a0475975b5", - "sha": "1acc419d4d6a9ce985db7be48c6349a0475975b5" - } - ], - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - } - } - }, - "contributor-items-response-if-repository-contains-content": { - "value": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false, - "contributions": 32 - } - ] - }, - "deployment-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/example/deployments/1", - "id": 1, - "node_id": "MDEwOkRlcGxveW1lbnQx", - "sha": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d", - "ref": "topic-branch", - "task": "deploy", - "payload": {}, - "original_environment": "staging", - "environment": "production", - "description": "Deploy request from hubot", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2012-07-20T01:19:13Z", - "updated_at": "2012-07-20T01:19:13Z", - "statuses_url": "https://api.github.com/repos/octocat/example/deployments/1/statuses", - "repository_url": "https://api.github.com/repos/octocat/example", - "transient_environment": false, - "production_environment": true - } - ] - }, - "deployment-simple-example": { - "summary": "Simple example", - "value": { - "url": "https://api.github.com/repos/octocat/example/deployments/1", - "id": 1, - "node_id": "MDEwOkRlcGxveW1lbnQx", - "sha": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d", - "ref": "topic-branch", - "task": "deploy", - "payload": {}, - "original_environment": "staging", - "environment": "production", - "description": "Deploy request from hubot", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2012-07-20T01:19:13Z", - "updated_at": "2012-07-20T01:19:13Z", - "statuses_url": "https://api.github.com/repos/octocat/example/deployments/1/statuses", - "repository_url": "https://api.github.com/repos/octocat/example", - "transient_environment": false, - "production_environment": true - } - }, - "deployment-advanced-example": { - "summary": "Advanced example", - "value": { - "url": "https://api.github.com/repos/octocat/example/deployments/1", - "id": 1, - "node_id": "MDEwOkRlcGxveW1lbnQx", - "sha": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d", - "ref": "topic-branch", - "task": "deploy", - "payload": {}, - "original_environment": "staging", - "environment": "production", - "description": "Deploy request from hubot", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2012-07-20T01:19:13Z", - "updated_at": "2012-07-20T01:19:13Z", - "statuses_url": "https://api.github.com/repos/octocat/example/deployments/1/statuses", - "repository_url": "https://api.github.com/repos/octocat/example", - "transient_environment": false, - "production_environment": true - } - }, - "deployment": { - "value": { - "url": "https://api.github.com/repos/octocat/example/deployments/1", - "id": 1, - "node_id": "MDEwOkRlcGxveW1lbnQx", - "sha": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d", - "ref": "topic-branch", - "task": "deploy", - "payload": {}, - "original_environment": "staging", - "environment": "production", - "description": "Deploy request from hubot", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2012-07-20T01:19:13Z", - "updated_at": "2012-07-20T01:19:13Z", - "statuses_url": "https://api.github.com/repos/octocat/example/deployments/1/statuses", - "repository_url": "https://api.github.com/repos/octocat/example", - "transient_environment": false, - "production_environment": true - } - }, - "deployment-status-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/example/deployments/42/statuses/1", - "id": 1, - "node_id": "MDE2OkRlcGxveW1lbnRTdGF0dXMx", - "state": "success", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "description": "Deployment finished successfully.", - "environment": "production", - "target_url": "https://example.com/deployment/42/output", - "created_at": "2012-07-20T01:19:13Z", - "updated_at": "2012-07-20T01:19:13Z", - "deployment_url": "https://api.github.com/repos/octocat/example/deployments/42", - "repository_url": "https://api.github.com/repos/octocat/example", - "environment_url": "https://test-branch.lab.acme.com", - "log_url": "https://example.com/deployment/42/output" - } - ] - }, - "deployment-status": { - "value": { - "url": "https://api.github.com/repos/octocat/example/deployments/42/statuses/1", - "id": 1, - "node_id": "MDE2OkRlcGxveW1lbnRTdGF0dXMx", - "state": "success", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "description": "Deployment finished successfully.", - "environment": "production", - "target_url": "https://example.com/deployment/42/output", - "created_at": "2012-07-20T01:19:13Z", - "updated_at": "2012-07-20T01:19:13Z", - "deployment_url": "https://api.github.com/repos/octocat/example/deployments/42", - "repository_url": "https://api.github.com/repos/octocat/example", - "environment_url": "https://test-branch.lab.acme.com", - "log_url": "https://example.com/deployment/42/output" - } - }, - "minimal-repository-items-2": { - "value": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": true, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "delete_branch_on_merge": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "node_id": "MDc6TGljZW5zZW1pdA==" - } - } - ] - }, - "short-blob": { - "value": { - "url": "https://api.github.com/repos/octocat/example/git/blobs/3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15", - "sha": "3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15" - } - }, - "blob": { - "value": { - "content": "Q29udGVudCBvZiB0aGUgYmxvYg==", - "encoding": "base64", - "url": "https://api.github.com/repos/octocat/example/git/blobs/3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15", - "sha": "3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15", - "size": 19, - "node_id": "Q29udGVudCBvZiB0aGUgYmxvYg==" - } - }, - "git-commit": { - "value": { - "sha": "7638417db6d59f3c431d3e1f261cc637155684cd", - "node_id": "MDY6Q29tbWl0NzYzODQxN2RiNmQ1OWYzYzQzMWQzZTFmMjYxY2M2MzcxNTU2ODRjZA==", - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd", - "author": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "committer": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "message": "my commit message", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/trees/827efc6d56897b048c772eb4087f854f46256132", - "sha": "827efc6d56897b048c772eb4087f854f46256132" - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7d1b31e74ee336d15cbd21741bc88a537ed063a0", - "sha": "7d1b31e74ee336d15cbd21741bc88a537ed063a0" - } - ], - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - } - }, - "git-commit-2": { - "value": { - "sha": "7638417db6d59f3c431d3e1f261cc637155684cd", - "node_id": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==", - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd", - "author": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "committer": { - "date": "2014-11-07T22:01:45Z", - "name": "Monalisa Octocat", - "email": "octocat@github.com" - }, - "message": "added readme, because im a good github citizen", - "tree": { - "url": "https://api.github.com/repos/octocat/Hello-World/git/trees/691272480426f78a0138979dd3ce63b77f706feb", - "sha": "691272480426f78a0138979dd3ce63b77f706feb" - }, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/1acc419d4d6a9ce985db7be48c6349a0475975b5", - "sha": "1acc419d4d6a9ce985db7be48c6349a0475975b5" - } - ], - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - } - }, - "git-ref-items": { - "value": [ - { - "ref": "refs/heads/feature-a", - "node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlLWE=", - "url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/feature-a", - "object": { - "type": "commit", - "sha": "aa218f56b14c9653891f9e74264a383fa43fefbd", - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd" - } - }, - { - "ref": "refs/heads/feature-b", - "node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlLWI=", - "url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/feature-b", - "object": { - "type": "commit", - "sha": "612077ae6dffb4d2fbd8ce0cccaa58893b07b5ac", - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/612077ae6dffb4d2fbd8ce0cccaa58893b07b5ac" - } - } - ] - }, - "git-ref": { - "value": { - "ref": "refs/heads/featureA", - "node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==", - "url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA", - "object": { - "type": "commit", - "sha": "aa218f56b14c9653891f9e74264a383fa43fefbd", - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd" - } - } - }, - "git-tag": { - "value": { - "node_id": "MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==", - "tag": "v0.0.1", - "sha": "940bd336248efae0f9ee5bc7b2d5c985887b16ac", - "url": "https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac", - "message": "initial version", - "tagger": { - "name": "Monalisa Octocat", - "email": "octocat@github.com", - "date": "2014-11-07T22:01:45Z" - }, - "object": { - "type": "commit", - "sha": "c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c", - "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c" - }, - "verification": { - "verified": false, - "reason": "unsigned", - "signature": null, - "payload": null - } - } - }, - "git-tree": { - "value": { - "sha": "cd8274d15fa3ae2ab983129fb037999f264ba9a7", - "url": "https://api.github.com/repos/octocat/Hello-World/trees/cd8274d15fa3ae2ab983129fb037999f264ba9a7", - "tree": [ - { - "path": "file.rb", - "mode": "100644", - "type": "blob", - "size": 132, - "sha": "7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b", - "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b" - } - ], - "truncated": true - } - }, - "git-tree-default-response": { - "summary": "Default response", - "value": { - "sha": "9fb037999f264ba9a7fc6274d15fa3ae2ab98312", - "url": "https://api.github.com/repos/octocat/Hello-World/trees/9fb037999f264ba9a7fc6274d15fa3ae2ab98312", - "tree": [ - { - "path": "file.rb", - "mode": "100644", - "type": "blob", - "size": 30, - "sha": "44b4fc6d56897b048c772eb4087f854f46256132", - "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132" - }, - { - "path": "subdir", - "mode": "040000", - "type": "tree", - "sha": "f484d249c660418515fb01c2b9662073663c242e", - "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/f484d249c660418515fb01c2b9662073663c242e" - }, - { - "path": "exec_file", - "mode": "100755", - "type": "blob", - "size": 75, - "sha": "45b983be36b73c0788dc9cbcb76cbb80fc7bb057", - "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/45b983be36b73c0788dc9cbcb76cbb80fc7bb057" - } - ], - "truncated": false - } - }, - "git-tree-response-recursively-retrieving-a-tree": { - "summary": "Response recursively retrieving a tree", - "value": { - "sha": "fc6274d15fa3ae2ab983129fb037999f264ba9a7", - "url": "https://api.github.com/repos/octocat/Hello-World/trees/fc6274d15fa3ae2ab983129fb037999f264ba9a7", - "tree": [ - { - "path": "subdir/file.txt", - "mode": "100644", - "type": "blob", - "size": 132, - "sha": "7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b", - "url": "https://api.github.com/repos/octocat/Hello-World/git/7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b" - } - ], - "truncated": false - } - }, - "hook-items": { - "value": [ - { - "type": "Repository", - "id": 12345678, - "name": "web", - "active": true, - "events": ["push", "pull_request"], - "config": { - "content_type": "json", - "insecure_ssl": "0", - "url": "https://example.com/webhook" - }, - "updated_at": "2019-06-03T00:57:16Z", - "created_at": "2019-06-03T00:57:16Z", - "url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678", - "test_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test", - "ping_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings", - "last_response": { - "code": null, - "status": "unused", - "message": null - } - } - ] - }, - "hook": { - "value": { - "type": "Repository", - "id": 12345678, - "name": "web", - "active": true, - "events": ["push", "pull_request"], - "config": { - "content_type": "json", - "insecure_ssl": "0", - "url": "https://example.com/webhook" - }, - "updated_at": "2019-06-03T00:57:16Z", - "created_at": "2019-06-03T00:57:16Z", - "url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678", - "test_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test", - "ping_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings", - "last_response": { "code": null, "status": "unused", "message": null } - } - }, - "import": { - "value": { - "vcs": "subversion", - "use_lfs": "opt_in", - "vcs_url": "http://svn.mycompany.com/svn/myproject", - "status": "complete", - "status_text": "Done", - "has_large_files": true, - "large_files_size": 132331036, - "large_files_count": 1, - "authors_count": 4, - "url": "https://api.github.com/repos/octocat/socm/import", - "html_url": "https://import.github.com/octocat/socm/import", - "authors_url": "https://api.github.com/repos/octocat/socm/import/authors", - "repository_url": "https://api.github.com/repos/octocat/socm" - } - }, - "import-2": { - "value": { - "vcs": "subversion", - "use_lfs": "undecided", - "vcs_url": "http://svn.mycompany.com/svn/myproject", - "status": "importing", - "status_text": "Importing...", - "has_large_files": false, - "large_files_size": 0, - "large_files_count": 0, - "authors_count": 0, - "commit_count": 1042, - "url": "https://api.github.com/repos/octocat/socm/import", - "html_url": "https://import.github.com/octocat/socm/import", - "authors_url": "https://api.github.com/repos/octocat/socm/import/authors", - "repository_url": "https://api.github.com/repos/octocat/socm" - } - }, - "import-example-1": { - "summary": "Example 1", - "value": { - "vcs": "subversion", - "use_lfs": "undecided", - "vcs_url": "http://svn.mycompany.com/svn/myproject", - "status": "detecting", - "url": "https://api.github.com/repos/octocat/socm/import", - "html_url": "https://import.github.com/octocat/socm/import", - "authors_url": "https://api.github.com/repos/octocat/socm/import/authors", - "repository_url": "https://api.github.com/repos/octocat/socm" - } - }, - "import-example-2": { - "summary": "Example 2", - "value": { - "vcs": "tfvc", - "use_lfs": "undecided", - "vcs_url": "http://tfs.mycompany.com/tfs/myproject", - "tfvc_project": "project1", - "status": "importing", - "status_text": "Importing...", - "has_large_files": false, - "large_files_size": 0, - "large_files_count": 0, - "authors_count": 0, - "commit_count": 1042, - "url": "https://api.github.com/repos/octocat/socm/import", - "html_url": "https://import.github.com/octocat/socm/import", - "authors_url": "https://api.github.com/repos/octocat/socm/import/authors", - "repository_url": "https://api.github.com/repos/octocat/socm" - } - }, - "import-response": { - "summary": "Response", - "value": { - "vcs": "subversion", - "use_lfs": "undecided", - "vcs_url": "http://svn.mycompany.com/svn/myproject", - "status": "importing", - "status_text": "Importing...", - "has_large_files": false, - "large_files_size": 0, - "large_files_count": 0, - "authors_count": 0, - "commit_count": 1042, - "url": "https://api.github.com/repos/octocat/socm/import", - "html_url": "https://import.github.com/octocat/socm/import", - "authors_url": "https://api.github.com/repos/octocat/socm/import/authors", - "repository_url": "https://api.github.com/repos/octocat/socm" - } - }, - "porter-author-items": { - "value": [ - { - "id": 2268557, - "remote_id": "nobody@fc7da526-431c-80fe-3c8c-c148ff18d7ef", - "remote_name": "nobody", - "email": "hubot@github.com", - "name": "Hubot", - "url": "https://api.github.com/repos/octocat/socm/import/authors/2268557", - "import_url": "https://api.github.com/repos/octocat/socm/import" - }, - { - "id": 2268558, - "remote_id": "svner@fc7da526-431c-80fe-3c8c-c148ff18d7ef", - "remote_name": "svner", - "email": "svner@fc7da526-431c-80fe-3c8c-c148ff18d7ef", - "name": "svner", - "url": "https://api.github.com/repos/octocat/socm/import/authors/2268558", - "import_url": "https://api.github.com/repos/octocat/socm/import" - }, - { - "id": 2268559, - "remote_id": "svner@example.com@fc7da526-431c-80fe-3c8c-c148ff18d7ef", - "remote_name": "svner@example.com", - "email": "svner@example.com@fc7da526-431c-80fe-3c8c-c148ff18d7ef", - "name": "svner@example.com", - "url": "https://api.github.com/repos/octocat/socm/import/authors/2268559", - "import_url": "https://api.github.com/repos/octocat/socm/import" - } - ] - }, - "porter-author": { - "value": { - "id": 2268557, - "remote_id": "nobody@fc7da526-431c-80fe-3c8c-c148ff18d7ef", - "remote_name": "nobody", - "email": "hubot@github.com", - "name": "Hubot", - "url": "https://api.github.com/repos/octocat/socm/import/authors/2268557", - "import_url": "https://api.github.com/repos/octocat/socm/import" - } - }, - "porter-large-file-items": { - "value": [ - { - "ref_name": "refs/heads/master", - "path": "foo/bar/1", - "oid": "d3d9446802a44259755d38e6d163e820", - "size": 10485760 - }, - { - "ref_name": "refs/heads/master", - "path": "foo/bar/2", - "oid": "6512bd43d9caa6e02c990b0a82652dca", - "size": 11534336 - }, - { - "ref_name": "refs/heads/master", - "path": "foo/bar/3", - "oid": "c20ad4d76fe97759aa27a0c99bff6710", - "size": 12582912 - } - ] - }, - "interaction-limit-2": { - "value": { - "limit": "collaborators_only", - "origin": "repository", - "expires_at": "2018-08-17T04:18:39Z" - } - }, - "repository-invitation-items": { - "value": [ - { - "id": 1, - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "invitee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "inviter": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "permissions": "write", - "created_at": "2016-06-13T14:52:50-05:00", - "url": "https://api.github.com/user/repository_invitations/1296269", - "html_url": "https://github.com/octocat/Hello-World/invitations", - "node_id": "MDQ6VXNlcjE=" - } - ] - }, - "repository-invitation": { - "value": { - "id": 1, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "repository": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - }, - "invitee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "inviter": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "permissions": "write", - "created_at": "2016-06-13T14:52:50-05:00", - "url": "https://api.github.com/user/repository_invitations/1296269", - "html_url": "https://github.com/octocat/Hello-World/invitations" - } - }, - "issue-simple-items": { - "value": [ - { - "id": 1, - "node_id": "MDU6SXNzdWUx", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "repository_url": "https://api.github.com/repos/octocat/Hello-World", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", - "events_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/events", - "html_url": "https://github.com/octocat/Hello-World/issues/1347", - "number": 1347, - "state": "open", - "title": "Found a bug", - "body": "I'm having a problem with this.", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "labels": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ], - "assignee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "locked": true, - "active_lock_reason": "too heated", - "comments": 0, - "pull_request": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch" - }, - "closed_at": null, - "created_at": "2011-04-22T13:33:48Z", - "updated_at": "2011-04-22T13:33:48Z", - "author_association": "collaborator" - } - ] - }, - "issue": { - "value": { - "id": 1, - "node_id": "MDU6SXNzdWUx", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "repository_url": "https://api.github.com/repos/octocat/Hello-World", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", - "events_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/events", - "html_url": "https://github.com/octocat/Hello-World/issues/1347", - "number": 1347, - "state": "open", - "title": "Found a bug", - "body": "I'm having a problem with this.", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "labels": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ], - "assignee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "locked": true, - "active_lock_reason": "too heated", - "comments": 0, - "pull_request": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch" - }, - "closed_at": null, - "created_at": "2011-04-22T13:33:48Z", - "updated_at": "2011-04-22T13:33:48Z", - "closed_by": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "author_association": "collaborator" - } - }, - "issue-comment-items": { - "value": [ - { - "id": 1, - "node_id": "MDEyOklzc3VlQ29tbWVudDE=", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/comments/1", - "html_url": "https://github.com/octocat/Hello-World/issues/1347#issuecomment-1", - "body": "Me too", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z", - "issue_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "author_association": "collaborator" - } - ] - }, - "issue-comment": { - "value": { - "id": 1, - "node_id": "MDEyOklzc3VlQ29tbWVudDE=", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/comments/1", - "html_url": "https://github.com/octocat/Hello-World/issues/1347#issuecomment-1", - "body": "Me too", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z", - "issue_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "author_association": "collaborator" - } - }, - "issue-event-items": { - "value": [ - { - "id": 1, - "node_id": "MDEwOklzc3VlRXZlbnQx", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/events/1", - "actor": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "event": "closed", - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "commit_url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "created_at": "2011-04-14T16:00:49Z", - "issue": { - "id": 1, - "node_id": "MDU6SXNzdWUx", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "repository_url": "https://api.github.com/repos/octocat/Hello-World", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", - "events_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/events", - "html_url": "https://github.com/octocat/Hello-World/issues/1347", - "number": 1347, - "state": "open", - "title": "Found a bug", - "body": "I'm having a problem with this.", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "labels": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ], - "assignee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "locked": true, - "active_lock_reason": "too heated", - "comments": 0, - "pull_request": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch" - }, - "closed_at": null, - "created_at": "2011-04-22T13:33:48Z", - "updated_at": "2011-04-22T13:33:48Z", - "author_association": "collaborator" - } - } - ] - }, - "issue-event": { - "value": { - "id": 1, - "node_id": "MDEwOklzc3VlRXZlbnQx", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/events/1", - "actor": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "event": "closed", - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "commit_url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "created_at": "2011-04-14T16:00:49Z", - "issue": { - "id": 1, - "node_id": "MDU6SXNzdWUx", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "repository_url": "https://api.github.com/repos/octocat/Hello-World", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", - "events_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/events", - "html_url": "https://github.com/octocat/Hello-World/issues/1347", - "number": 1347, - "state": "open", - "title": "Found a bug", - "body": "I'm having a problem with this.", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "labels": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ], - "assignee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "locked": true, - "active_lock_reason": "too heated", - "comments": 0, - "pull_request": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch" - }, - "closed_at": null, - "created_at": "2011-04-22T13:33:48Z", - "updated_at": "2011-04-22T13:33:48Z", - "author_association": "collaborator" - } - } - }, - "issue-simple": { - "value": { - "id": 1, - "node_id": "MDU6SXNzdWUx", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "repository_url": "https://api.github.com/repos/octocat/Hello-World", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", - "events_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/events", - "html_url": "https://github.com/octocat/Hello-World/issues/1347", - "number": 1347, - "state": "open", - "title": "Found a bug", - "body": "I'm having a problem with this.", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "labels": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ], - "assignee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - { - "login": "hubot", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/hubot_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/hubot", - "html_url": "https://github.com/hubot", - "followers_url": "https://api.github.com/users/hubot/followers", - "following_url": "https://api.github.com/users/hubot/following{/other_user}", - "gists_url": "https://api.github.com/users/hubot/gists{/gist_id}", - "starred_url": "https://api.github.com/users/hubot/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/hubot/subscriptions", - "organizations_url": "https://api.github.com/users/hubot/orgs", - "repos_url": "https://api.github.com/users/hubot/repos", - "events_url": "https://api.github.com/users/hubot/events{/privacy}", - "received_events_url": "https://api.github.com/users/hubot/received_events", - "type": "User", - "site_admin": true - }, - { - "login": "other_user", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/other_user_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/other_user", - "html_url": "https://github.com/other_user", - "followers_url": "https://api.github.com/users/other_user/followers", - "following_url": "https://api.github.com/users/other_user/following{/other_user}", - "gists_url": "https://api.github.com/users/other_user/gists{/gist_id}", - "starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/other_user/subscriptions", - "organizations_url": "https://api.github.com/users/other_user/orgs", - "repos_url": "https://api.github.com/users/other_user/repos", - "events_url": "https://api.github.com/users/other_user/events{/privacy}", - "received_events_url": "https://api.github.com/users/other_user/received_events", - "type": "User", - "site_admin": false - } - ], - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "locked": true, - "active_lock_reason": "too heated", - "comments": 0, - "pull_request": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch" - }, - "closed_at": null, - "created_at": "2011-04-22T13:33:48Z", - "updated_at": "2011-04-22T13:33:48Z", - "author_association": "collaborator" - } - }, - "issue-event-for-issue-items": { - "value": [ - { - "id": 1, - "node_id": "MDEwOklzc3VlRXZlbnQx", - "url": "https://api.github.com/repos/octocat/Hello-World/issues/events/1", - "actor": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "event": "closed", - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "commit_url": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "created_at": "2011-04-14T16:00:49Z" - } - ] - }, - "label-items": { - "value": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - }, - { - "id": 208045947, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDc=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/enhancement", - "name": "enhancement", - "description": "New feature or request", - "color": "a2eeef", - "default": false - } - ] - }, - "label-items-2": { - "value": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ] - }, - "deploy-key-items": { - "value": [ - { - "id": 1, - "key": "ssh-rsa AAA...", - "url": "https://api.github.com/repos/octocat/Hello-World/keys/1", - "title": "octocat@octomac", - "verified": true, - "created_at": "2014-12-10T15:53:42Z", - "read_only": true - } - ] - }, - "deploy-key": { - "value": { - "id": 1, - "key": "ssh-rsa AAA...", - "url": "https://api.github.com/repos/octocat/Hello-World/keys/1", - "title": "octocat@octomac", - "verified": true, - "created_at": "2014-12-10T15:53:42Z", - "read_only": true - } - }, - "label": { - "value": { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - }, - "label-2": { - "value": { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug%20:bug:", - "name": "bug :bug:", - "description": "Small bug fix required", - "color": "b01f26", - "default": true - } - }, - "language": { "value": { "C": 78769, "Python": 7769 } }, - "license-content": { - "value": { - "name": "LICENSE", - "path": "LICENSE", - "sha": "401c59dcc4570b954dd6d345e76199e1f4e76266", - "size": 1077, - "url": "https://api.github.com/repos/benbalter/gman/contents/LICENSE?ref=master", - "html_url": "https://github.com/benbalter/gman/blob/master/LICENSE", - "git_url": "https://api.github.com/repos/benbalter/gman/git/blobs/401c59dcc4570b954dd6d345e76199e1f4e76266", - "download_url": "https://raw.githubusercontent.com/benbalter/gman/master/LICENSE?lab=true", - "type": "file", - "content": "VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTMgQmVu\nIEJhbHRlcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv\nZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgp0\naGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls\nZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgp0aGUgU29mdHdhcmUg\nd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh\ndGlvbiB0aGUgcmlnaHRzIHRvCnVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg\ncHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwg\nY29waWVzIG9mCnRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z\nIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywK\nc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJv\ndmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj\nZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50\naWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJ\nUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL\nSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ\nTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBG\nSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO\nR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUgpDT1BZ\nUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF\nUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIKSU4gQU4gQUNUSU9OIE9G\nIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBP\nVVQgT0YgT1IgSU4KQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU\nSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K\n", - "encoding": "base64", - "_links": { - "self": "https://api.github.com/repos/benbalter/gman/contents/LICENSE?ref=master", - "git": "https://api.github.com/repos/benbalter/gman/git/blobs/401c59dcc4570b954dd6d345e76199e1f4e76266", - "html": "https://github.com/benbalter/gman/blob/master/LICENSE" - }, - "license": { - "key": "mit", - "name": "MIT License", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "node_id": "MDc6TGljZW5zZW1pdA==" - } - } - }, - "milestone-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - } - ] - }, - "milestone": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - } - }, - "page": { - "value": { - "url": "https://api.github.com/repos/github/developer.github.com/pages", - "status": "built", - "cname": "developer.github.com", - "custom_404": false, - "html_url": "https://developer.github.com", - "source": { "branch": "master", "path": "/" } - } - }, - "page-build-items": { - "value": [ - { - "url": "https://api.github.com/repos/github/developer.github.com/pages/builds/5472601", - "status": "built", - "error": { "message": null }, - "pusher": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "commit": "351391cdcb88ffae71ec3028c91f375a8036a26b", - "duration": 2104, - "created_at": "2014-02-10T19:00:49Z", - "updated_at": "2014-02-10T19:00:51Z" - } - ] - }, - "page-build-status": { - "value": { - "url": "https://api.github.com/repos/github/developer.github.com/pages/builds/latest", - "status": "queued" - } - }, - "page-build": { - "value": { - "url": "https://api.github.com/repos/github/developer.github.com/pages/builds/5472601", - "status": "built", - "error": { "message": null }, - "pusher": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "commit": "351391cdcb88ffae71ec3028c91f375a8036a26b", - "duration": 2104, - "created_at": "2014-02-10T19:00:49Z", - "updated_at": "2014-02-10T19:00:51Z" - } - }, - "project-items-2": { - "value": [ - { - "owner_url": "https://api.github.com/repos/api-playground/projects-test", - "url": "https://api.github.com/projects/1002604", - "html_url": "https://github.com/api-playground/projects-test/projects/1", - "columns_url": "https://api.github.com/projects/1002604/columns", - "id": 1002604, - "node_id": "MDc6UHJvamVjdDEwMDI2MDQ=", - "name": "Projects Documentation", - "body": "Developer documentation project for the developer site.", - "number": 1, - "state": "open", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z" - } - ] - }, - "pull-request": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "id": 1, - "node_id": "MDExOlB1bGxSZXF1ZXN0MQ==", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch", - "issue_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", - "review_comments_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", - "review_comment_url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "number": 1347, - "state": "open", - "locked": true, - "title": "Amazing new feature", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Please pull these awesome changes in!", - "labels": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ], - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "active_lock_reason": "too heated", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:01:12Z", - "closed_at": "2011-01-26T19:01:12Z", - "merged_at": "2011-01-26T19:01:12Z", - "merge_commit_sha": "e5bd3914e2e596debea16f433f57875b5b90bcd6", - "assignee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - { - "login": "hubot", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/hubot_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/hubot", - "html_url": "https://github.com/hubot", - "followers_url": "https://api.github.com/users/hubot/followers", - "following_url": "https://api.github.com/users/hubot/following{/other_user}", - "gists_url": "https://api.github.com/users/hubot/gists{/gist_id}", - "starred_url": "https://api.github.com/users/hubot/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/hubot/subscriptions", - "organizations_url": "https://api.github.com/users/hubot/orgs", - "repos_url": "https://api.github.com/users/hubot/repos", - "events_url": "https://api.github.com/users/hubot/events{/privacy}", - "received_events_url": "https://api.github.com/users/hubot/received_events", - "type": "User", - "site_admin": true - } - ], - "requested_reviewers": [ - { - "login": "other_user", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/other_user_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/other_user", - "html_url": "https://github.com/other_user", - "followers_url": "https://api.github.com/users/other_user/followers", - "following_url": "https://api.github.com/users/other_user/following{/other_user}", - "gists_url": "https://api.github.com/users/other_user/gists{/gist_id}", - "starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/other_user/subscriptions", - "organizations_url": "https://api.github.com/users/other_user/orgs", - "repos_url": "https://api.github.com/users/other_user/repos", - "events_url": "https://api.github.com/users/other_user/events{/privacy}", - "received_events_url": "https://api.github.com/users/other_user/received_events", - "type": "User", - "site_admin": false - } - ], - "requested_teams": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos" - } - ], - "head": { - "label": "octocat:new-topic", - "ref": "new-topic", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "repo": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "allow_merge_commit": true, - "forks": 123, - "open_issues": 123, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - "watchers": 123 - } - }, - "base": { - "label": "octocat:master", - "ref": "master", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "repo": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "allow_merge_commit": true, - "forks": 123, - "open_issues": 123, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==" - }, - "watchers": 123 - } - }, - "_links": { - "self": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347" - }, - "html": { - "href": "https://github.com/octocat/Hello-World/pull/1347" - }, - "issue": { - "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347" - }, - "comments": { - "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments" - }, - "review_comments": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments" - }, - "review_comment": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}" - }, - "commits": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits" - }, - "statuses": { - "href": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e" - } - }, - "author_association": "OWNER", - "draft": false, - "merged": false, - "mergeable": true, - "rebaseable": true, - "mergeable_state": "clean", - "merged_by": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "comments": 10, - "review_comments": 0, - "maintainer_can_modify": true, - "commits": 3, - "additions": 100, - "deletions": 3, - "changed_files": 5 - } - }, - "pull-request-review-comment-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", - "pull_request_review_id": 42, - "id": 10, - "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw", - "diff_hunk": "@@ -16,33 +16,40 @@ public class Connection : IConnection...", - "path": "file1.txt", - "position": 1, - "original_position": 4, - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "original_commit_id": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", - "in_reply_to_id": 8, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Great stuff!", - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z", - "html_url": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1", - "author_association": "NONE", - "_links": { - "self": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1" - }, - "html": { - "href": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1" - } - }, - "start_line": 1, - "original_start_line": 1, - "start_side": "RIGHT", - "line": 2, - "original_line": 2, - "side": "RIGHT" - } - ] - }, - "pull-request-review-comment-2": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", - "pull_request_review_id": 42, - "id": 10, - "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw", - "diff_hunk": "@@ -16,33 +16,40 @@ public class Connection : IConnection...", - "path": "file1.txt", - "position": 1, - "original_position": 4, - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "original_commit_id": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", - "in_reply_to_id": 8, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Great stuff!", - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z", - "html_url": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1", - "author_association": "NONE", - "_links": { - "self": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1" - }, - "html": { - "href": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1" - } - }, - "start_line": 1, - "original_start_line": 1, - "start_side": "RIGHT", - "line": 2, - "original_line": 2, - "side": "RIGHT" - } - }, - "pull-request-review-comment-example-for-a-multi-line-comment": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", - "pull_request_review_id": 42, - "id": 10, - "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw", - "diff_hunk": "@@ -16,33 +16,40 @@ public class Connection : IConnection...", - "path": "file1.txt", - "position": 1, - "original_position": 4, - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "original_commit_id": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", - "in_reply_to_id": 8, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Great stuff!", - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z", - "html_url": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1", - "author_association": "NONE", - "_links": { - "self": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1" - }, - "html": { - "href": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1" - } - }, - "start_line": 1, - "original_start_line": 1, - "start_side": "RIGHT", - "line": 2, - "original_line": 2, - "side": "RIGHT" - } - }, - "pull-request-review-comment": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", - "pull_request_review_id": 42, - "id": 10, - "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw", - "diff_hunk": "@@ -16,33 +16,40 @@ public class Connection : IConnection...", - "path": "file1.txt", - "position": 1, - "original_position": 4, - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "original_commit_id": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", - "in_reply_to_id": 426899381, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Great stuff!", - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z", - "html_url": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1", - "author_association": "NONE", - "_links": { - "self": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1" - }, - "html": { - "href": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1" - } - }, - "start_line": 1, - "original_start_line": 1, - "start_side": "RIGHT", - "line": 2, - "original_line": 2, - "side": "RIGHT" - } - }, - "diff-entry-items": { - "value": [ - { - "sha": "bbcd538c8e72b8c175046e27cc8f907076331401", - "filename": "file1.txt", - "status": "added", - "additions": 103, - "deletions": 21, - "changes": 124, - "blob_url": "https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt", - "raw_url": "https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/file1.txt?ref=6dcb09b5b57875f334f61aebed695e2e4193db5e", - "patch": "@@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test" - } - ] - }, - "pull-request-merge-result-response-if-merge-was-successful": { - "value": { - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "merged": true, - "message": "Pull Request successfully merged" - } - }, - "simple-pull-request-review-request": { - "value": { - "users": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ], - "teams": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos", - "parent": null - } - ] - } - }, - "pull-request-review-request": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", - "id": 1, - "node_id": "MDExOlB1bGxSZXF1ZXN0MQ==", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch", - "issue_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", - "review_comments_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", - "review_comment_url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "number": 1347, - "state": "open", - "locked": true, - "title": "Amazing new feature", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Please pull these awesome changes in!", - "labels": [ - { - "id": 208045946, - "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", - "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", - "name": "bug", - "description": "Something isn't working", - "color": "f29513", - "default": true - } - ], - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "active_lock_reason": "too heated", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:01:12Z", - "closed_at": "2011-01-26T19:01:12Z", - "merged_at": "2011-01-26T19:01:12Z", - "merge_commit_sha": "e5bd3914e2e596debea16f433f57875b5b90bcd6", - "assignee": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - { - "login": "hubot", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/hubot_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/hubot", - "html_url": "https://github.com/hubot", - "followers_url": "https://api.github.com/users/hubot/followers", - "following_url": "https://api.github.com/users/hubot/following{/other_user}", - "gists_url": "https://api.github.com/users/hubot/gists{/gist_id}", - "starred_url": "https://api.github.com/users/hubot/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/hubot/subscriptions", - "organizations_url": "https://api.github.com/users/hubot/orgs", - "repos_url": "https://api.github.com/users/hubot/repos", - "events_url": "https://api.github.com/users/hubot/events{/privacy}", - "received_events_url": "https://api.github.com/users/hubot/received_events", - "type": "User", - "site_admin": true - } - ], - "requested_reviewers": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - { - "login": "hubot", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/hubot_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/hubot", - "html_url": "https://github.com/hubot", - "followers_url": "https://api.github.com/users/hubot/followers", - "following_url": "https://api.github.com/users/hubot/following{/other_user}", - "gists_url": "https://api.github.com/users/hubot/gists{/gist_id}", - "starred_url": "https://api.github.com/users/hubot/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/hubot/subscriptions", - "organizations_url": "https://api.github.com/users/hubot/orgs", - "repos_url": "https://api.github.com/users/hubot/repos", - "events_url": "https://api.github.com/users/hubot/events{/privacy}", - "received_events_url": "https://api.github.com/users/hubot/received_events", - "type": "User", - "site_admin": true - }, - { - "login": "other_user", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/other_user_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/other_user", - "html_url": "https://github.com/other_user", - "followers_url": "https://api.github.com/users/other_user/followers", - "following_url": "https://api.github.com/users/other_user/following{/other_user}", - "gists_url": "https://api.github.com/users/other_user/gists{/gist_id}", - "starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/other_user/subscriptions", - "organizations_url": "https://api.github.com/users/other_user/orgs", - "repos_url": "https://api.github.com/users/other_user/repos", - "events_url": "https://api.github.com/users/other_user/events{/privacy}", - "received_events_url": "https://api.github.com/users/other_user/received_events", - "type": "User", - "site_admin": false - } - ], - "requested_teams": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos" - } - ], - "head": { - "label": "octocat:new-topic", - "ref": "new-topic", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "repo": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - }, - "base": { - "label": "octocat:master", - "ref": "master", - "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "repo": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - }, - "_links": { - "self": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347" - }, - "html": { - "href": "https://github.com/octocat/Hello-World/pull/1347" - }, - "issue": { - "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347" - }, - "comments": { - "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments" - }, - "review_comments": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments" - }, - "review_comment": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}" - }, - "commits": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits" - }, - "statuses": { - "href": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e" - } - }, - "author_association": "OWNER", - "draft": false - } - }, - "pull-request-review-items": { - "value": [ - { - "id": 80, - "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Here is the body for the review.", - "state": "APPROVED", - "html_url": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/12", - "_links": { - "html": { - "href": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/12" - } - }, - "submitted_at": "2019-11-17T17:43:43Z", - "commit_id": "ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091", - "author_association": "collaborator" - } - ] - }, - "pull-request-review": { - "value": { - "id": 80, - "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "This is close to perfect! Please address the suggested inline change.", - "state": "CHANGES_REQUESTED", - "html_url": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/12", - "_links": { - "html": { - "href": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/12" - } - }, - "submitted_at": "2019-11-17T17:43:43Z", - "commit_id": "ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091", - "author_association": "collaborator" - } - }, - "pull-request-review-4": { - "value": { - "id": 80, - "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Here is the body for the review.", - "state": "APPROVED", - "html_url": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/12", - "_links": { - "html": { - "href": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/12" - } - }, - "submitted_at": "2019-11-17T17:43:43Z", - "commit_id": "ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091", - "author_association": "collaborator" - } - }, - "pull-request-review-5": { - "value": { - "id": 80, - "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "This is close to perfect! Please address the suggested inline change. And add more about this.", - "state": "CHANGES_REQUESTED", - "html_url": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/12", - "_links": { - "html": { - "href": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/12" - } - }, - "submitted_at": "2019-11-17T17:43:43Z", - "commit_id": "ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091", - "author_association": "collaborator" - } - }, - "review-comment-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", - "pull_request_review_id": 42, - "id": 10, - "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw", - "diff_hunk": "@@ -16,33 +16,40 @@ public class Connection : IConnection...", - "path": "file1.txt", - "position": 1, - "original_position": 4, - "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", - "original_commit_id": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", - "in_reply_to_id": 8, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Great stuff!", - "created_at": "2011-04-14T16:00:49Z", - "updated_at": "2011-04-14T16:00:49Z", - "html_url": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1", - "author_association": "NONE", - "_links": { - "self": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1" - }, - "html": { - "href": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1" - } - } - } - ] - }, - "pull-request-review-3": { - "value": { - "id": 80, - "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "body": "Here is the body for the review.", - "state": "DISMISSED", - "html_url": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", - "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/12", - "_links": { - "html": { - "href": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80" - }, - "pull_request": { - "href": "https://api.github.com/repos/octocat/Hello-World/pulls/12" - } - }, - "submitted_at": "2019-11-17T17:43:43Z", - "commit_id": "ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091", - "author_association": "collaborator" - } - }, - "content-file": { - "value": { - "type": "file", - "encoding": "base64", - "size": 5362, - "name": "README.md", - "path": "README.md", - "content": "encoded content ...", - "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", - "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", - "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", - "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", - "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", - "_links": { - "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", - "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", - "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" - } - } - }, - "release-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/releases/1", - "html_url": "https://github.com/octocat/Hello-World/releases/v1.0.0", - "assets_url": "https://api.github.com/repos/octocat/Hello-World/releases/1/assets", - "upload_url": "https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}", - "tarball_url": "https://api.github.com/repos/octocat/Hello-World/tarball/v1.0.0", - "zipball_url": "https://api.github.com/repos/octocat/Hello-World/zipball/v1.0.0", - "id": 1, - "node_id": "MDc6UmVsZWFzZTE=", - "tag_name": "v1.0.0", - "target_commitish": "master", - "name": "v1.0.0", - "body": "Description of the release", - "draft": false, - "prerelease": false, - "created_at": "2013-02-27T19:35:32Z", - "published_at": "2013-02-27T19:35:32Z", - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assets": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", - "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", - "id": 1, - "node_id": "MDEyOlJlbGVhc2VBc3NldDE=", - "name": "example.zip", - "label": "short description", - "state": "uploaded", - "content_type": "application/zip", - "size": 1024, - "download_count": 42, - "created_at": "2013-02-27T19:35:32Z", - "updated_at": "2013-02-27T19:35:32Z", - "uploader": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - ] - } - ] - }, - "release": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/releases/1", - "html_url": "https://github.com/octocat/Hello-World/releases/v1.0.0", - "assets_url": "https://api.github.com/repos/octocat/Hello-World/releases/1/assets", - "upload_url": "https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}", - "tarball_url": "https://api.github.com/repos/octocat/Hello-World/tarball/v1.0.0", - "zipball_url": "https://api.github.com/repos/octocat/Hello-World/zipball/v1.0.0", - "id": 1, - "node_id": "MDc6UmVsZWFzZTE=", - "tag_name": "v1.0.0", - "target_commitish": "master", - "name": "v1.0.0", - "body": "Description of the release", - "draft": false, - "prerelease": false, - "created_at": "2013-02-27T19:35:32Z", - "published_at": "2013-02-27T19:35:32Z", - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "assets": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", - "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", - "id": 1, - "node_id": "MDEyOlJlbGVhc2VBc3NldDE=", - "name": "example.zip", - "label": "short description", - "state": "uploaded", - "content_type": "application/zip", - "size": 1024, - "download_count": 42, - "created_at": "2013-02-27T19:35:32Z", - "updated_at": "2013-02-27T19:35:32Z", - "uploader": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - ] - } - }, - "release-asset": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", - "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", - "id": 1, - "node_id": "MDEyOlJlbGVhc2VBc3NldDE=", - "name": "example.zip", - "label": "short description", - "state": "uploaded", - "content_type": "application/zip", - "size": 1024, - "download_count": 42, - "created_at": "2013-02-27T19:35:32Z", - "updated_at": "2013-02-27T19:35:32Z", - "uploader": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "release-asset-items": { - "value": [ - { - "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", - "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", - "id": 1, - "node_id": "MDEyOlJlbGVhc2VBc3NldDE=", - "name": "example.zip", - "label": "short description", - "state": "uploaded", - "content_type": "application/zip", - "size": 1024, - "download_count": 42, - "created_at": "2013-02-27T19:35:32Z", - "updated_at": "2013-02-27T19:35:32Z", - "uploader": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - ] - }, - "release-asset-response-for-successful-upload": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", - "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", - "id": 1, - "node_id": "MDEyOlJlbGVhc2VBc3NldDE=", - "name": "example.zip", - "label": "short description", - "state": "uploaded", - "content_type": "application/zip", - "size": 1024, - "download_count": 42, - "created_at": "2013-02-27T19:35:32Z", - "updated_at": "2013-02-27T19:35:32Z", - "uploader": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "secret-scanning-alert-list": { - "value": [ - { - "number": 2, - "created_at": "2020-11-06T18:48:51Z", - "url": "https://api.github.com/repos/owner/private-repo/secret-scanning/alerts/2", - "html_url": "https://github.com/owner/private-repo/security/secret-scanning/2", - "state": "resolved", - "resolution": "false_positive", - "resolved_at": "2020-11-07T02:47:13Z", - "resolved_by": { - "login": "monalisa", - "id": 2, - "node_id": "MDQ6VXNlcjI=", - "avatar_url": "https://alambic.github.com/avatars/u/2?", - "gravatar_id": "", - "url": "https://api.github.com/users/monalisa", - "html_url": "https://github.com/monalisa", - "followers_url": "https://api.github.com/users/monalisa/followers", - "following_url": "https://api.github.com/users/monalisa/following{/other_user}", - "gists_url": "https://api.github.com/users/monalisa/gists{/gist_id}", - "starred_url": "https://api.github.com/users/monalisa/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/monalisa/subscriptions", - "organizations_url": "https://api.github.com/users/monalisa/orgs", - "repos_url": "https://api.github.com/users/monalisa/repos", - "events_url": "https://api.github.com/users/monalisa/events{/privacy}", - "received_events_url": "https://api.github.com/users/monalisa/received_events", - "type": "User", - "site_admin": true - }, - "secret_type": "adafruit_io_key", - "secret": "aio_XXXXXXXXXXXXXXXXXXXXXXXXXXXX" - }, - { - "number": 1, - "created_at": "2020-11-06T18:18:30Z", - "url": "https://api.github.com/repos/owner/repo/secret-scanning/alerts/1", - "html_url": "https://github.com/owner/repo/security/secret-scanning/1", - "state": "open", - "resolution": null, - "resolved_at": null, - "resolved_by": null, - "secret_type": "mailchimp_api_key", - "secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-us2" - } - ] - }, - "secret-scanning-alert-open": { - "value": { - "number": 42, - "created_at": "2020-11-06T18:18:30Z", - "url": "https://api.github.com/repos/owner/private-repo/secret-scanning/alerts/42", - "html_url": "https://github.com/owner/private-repo/security/secret-scanning/42", - "state": "open", - "resolution": null, - "resolved_at": null, - "resolved_by": null, - "secret_type": "mailchimp_api_key", - "secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-us2" - } - }, - "secret-scanning-alert-resolved": { - "value": { - "number": 42, - "created_at": "2020-11-06T18:18:30Z", - "url": "https://api.github.com/repos/owner/private-repo/secret-scanning/alerts/42", - "html_url": "https://github.com/owner/private-repo/security/secret-scanning/42", - "state": "resolved", - "resolution": "used_in_tests", - "resolved_at": "2020-11-16T22:42:07Z", - "resolved_by": { - "login": "monalisa", - "id": 2, - "node_id": "MDQ6VXNlcjI=", - "avatar_url": "https://alambic.github.com/avatars/u/2?", - "gravatar_id": "", - "url": "https://api.github.com/users/monalisa", - "html_url": "https://github.com/monalisa", - "followers_url": "https://api.github.com/users/monalisa/followers", - "following_url": "https://api.github.com/users/monalisa/following{/other_user}", - "gists_url": "https://api.github.com/users/monalisa/gists{/gist_id}", - "starred_url": "https://api.github.com/users/monalisa/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/monalisa/subscriptions", - "organizations_url": "https://api.github.com/users/monalisa/orgs", - "repos_url": "https://api.github.com/users/monalisa/repos", - "events_url": "https://api.github.com/users/monalisa/events{/privacy}", - "received_events_url": "https://api.github.com/users/monalisa/received_events", - "type": "User", - "site_admin": true - }, - "secret_type": "mailchimp_api_key", - "secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-us2" - } - }, - "simple-user-items-default-response": { - "summary": "Default response", - "value": [ - { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - ] - }, - "stargazer-items-alternative-response-with-star-creation-timestamps": { - "summary": "Alternative response with star creation timestamps", - "value": [ - { - "starred_at": "2011-01-16T19:06:43Z", - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - ] - }, - "code-frequency-stat-items": { "value": [[1302998400, 1124, -435]] }, - "commit-activity-items": { - "value": [ - { "days": [0, 3, 26, 20, 39, 1, 0], "total": 89, "week": 1336280400 } - ] - }, - "contributor-activity-items": { - "value": [ - { - "author": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "total": 135, - "weeks": [{ "w": "1367712000", "a": 6898, "d": 77, "c": 10 }] - } - ] - }, - "participation-stats": { - "value": { - "all": [ - 11, - 21, - 15, - 2, - 8, - 1, - 8, - 23, - 17, - 21, - 11, - 10, - 33, - 91, - 38, - 34, - 22, - 23, - 32, - 3, - 43, - 87, - 71, - 18, - 13, - 5, - 13, - 16, - 66, - 27, - 12, - 45, - 110, - 117, - 13, - 8, - 18, - 9, - 19, - 26, - 39, - 12, - 20, - 31, - 46, - 91, - 45, - 10, - 24, - 9, - 29, - 7 - ], - "owner": [ - 3, - 2, - 3, - 0, - 2, - 0, - 5, - 14, - 7, - 9, - 1, - 5, - 0, - 48, - 19, - 2, - 0, - 1, - 10, - 2, - 23, - 40, - 35, - 8, - 8, - 2, - 10, - 6, - 30, - 0, - 2, - 9, - 53, - 104, - 3, - 3, - 10, - 4, - 7, - 11, - 21, - 4, - 4, - 22, - 26, - 63, - 11, - 2, - 14, - 1, - 10, - 3 - ] - } - }, - "code-frequency-stat-items-2": { - "value": [ - [0, 0, 5], - [0, 1, 43], - [0, 2, 21] - ] - }, - "status": { - "value": { - "url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", - "avatar_url": "https://github.com/images/error/hubot_happy.gif", - "id": 1, - "node_id": "MDY6U3RhdHVzMQ==", - "state": "success", - "description": "Build has completed successfully", - "target_url": "https://ci.example.com/1000/output", - "context": "continuous-integration/jenkins", - "created_at": "2012-07-20T01:19:13Z", - "updated_at": "2012-07-20T01:19:13Z", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "repository-subscription-response-if-you-subscribe-to-the-repository": { - "value": { - "subscribed": true, - "ignored": false, - "reason": null, - "created_at": "2012-10-06T21:34:12Z", - "url": "https://api.github.com/repos/octocat/example/subscription", - "repository_url": "https://api.github.com/repos/octocat/example" - } - }, - "repository-subscription": { - "value": { - "subscribed": true, - "ignored": false, - "reason": null, - "created_at": "2012-10-06T21:34:12Z", - "url": "https://api.github.com/repos/octocat/example/subscription", - "repository_url": "https://api.github.com/repos/octocat/example" - } - }, - "tag-items": { - "value": [ - { - "name": "v0.1", - "commit": { - "sha": "c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc", - "url": "https://api.github.com/repos/octocat/Hello-World/commits/c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc" - }, - "zipball_url": "https://github.com/octocat/Hello-World/zipball/v0.1", - "tarball_url": "https://github.com/octocat/Hello-World/tarball/v0.1", - "node_id": "MDQ6VXNlcjE=" - } - ] - }, - "topic": { "value": { "names": ["octocat", "atom", "electron", "api"] } }, - "clone-traffic": { - "value": { - "count": 173, - "uniques": 128, - "clones": [ - { "timestamp": "2016-10-10T00:00:00Z", "count": 2, "uniques": 1 }, - { "timestamp": "2016-10-11T00:00:00Z", "count": 17, "uniques": 16 }, - { "timestamp": "2016-10-12T00:00:00Z", "count": 21, "uniques": 15 }, - { "timestamp": "2016-10-13T00:00:00Z", "count": 8, "uniques": 7 }, - { "timestamp": "2016-10-14T00:00:00Z", "count": 5, "uniques": 5 }, - { "timestamp": "2016-10-15T00:00:00Z", "count": 2, "uniques": 2 }, - { "timestamp": "2016-10-16T00:00:00Z", "count": 8, "uniques": 7 }, - { "timestamp": "2016-10-17T00:00:00Z", "count": 26, "uniques": 15 }, - { "timestamp": "2016-10-18T00:00:00Z", "count": 19, "uniques": 17 }, - { "timestamp": "2016-10-19T00:00:00Z", "count": 19, "uniques": 14 }, - { "timestamp": "2016-10-20T00:00:00Z", "count": 19, "uniques": 15 }, - { "timestamp": "2016-10-21T00:00:00Z", "count": 9, "uniques": 7 }, - { "timestamp": "2016-10-22T00:00:00Z", "count": 5, "uniques": 5 }, - { "timestamp": "2016-10-23T00:00:00Z", "count": 6, "uniques": 5 }, - { "timestamp": "2016-10-24T00:00:00Z", "count": 7, "uniques": 5 } - ] - } - }, - "content-traffic-items": { - "value": [ - { - "path": "/github/hubot", - "title": "github/hubot: A customizable life embetterment robot.", - "count": 3542, - "uniques": 2225 - }, - { - "path": "/github/hubot/blob/master/docs/scripting.md", - "title": "hubot/scripting.md at master · github/hubot · GitHub", - "count": 1707, - "uniques": 804 - }, - { - "path": "/github/hubot/tree/master/docs", - "title": "hubot/docs at master · github/hubot · GitHub", - "count": 685, - "uniques": 435 - }, - { - "path": "/github/hubot/tree/master/src", - "title": "hubot/src at master · github/hubot · GitHub", - "count": 577, - "uniques": 347 - }, - { - "path": "/github/hubot/blob/master/docs/index.md", - "title": "hubot/index.md at master · github/hubot · GitHub", - "count": 379, - "uniques": 259 - }, - { - "path": "/github/hubot/blob/master/docs/adapters.md", - "title": "hubot/adapters.md at master · github/hubot · GitHub", - "count": 354, - "uniques": 201 - }, - { - "path": "/github/hubot/tree/master/examples", - "title": "hubot/examples at master · github/hubot · GitHub", - "count": 340, - "uniques": 260 - }, - { - "path": "/github/hubot/blob/master/docs/deploying/heroku.md", - "title": "hubot/heroku.md at master · github/hubot · GitHub", - "count": 324, - "uniques": 217 - }, - { - "path": "/github/hubot/blob/master/src/robot.coffee", - "title": "hubot/robot.coffee at master · github/hubot · GitHub", - "count": 293, - "uniques": 191 - }, - { - "path": "/github/hubot/blob/master/LICENSE.md", - "title": "hubot/LICENSE.md at master · github/hubot · GitHub", - "count": 281, - "uniques": 222 - } - ] - }, - "referrer-traffic-items": { - "value": [ - { "referrer": "Google", "count": 4, "uniques": 3 }, - { "referrer": "stackoverflow.com", "count": 2, "uniques": 2 }, - { "referrer": "eggsonbread.com", "count": 1, "uniques": 1 }, - { "referrer": "yandex.ru", "count": 1, "uniques": 1 } - ] - }, - "view-traffic": { - "value": { - "count": 14850, - "uniques": 3782, - "views": [ - { - "timestamp": "2016-10-10T00:00:00Z", - "count": 440, - "uniques": 143 - }, - { - "timestamp": "2016-10-11T00:00:00Z", - "count": 1308, - "uniques": 414 - }, - { - "timestamp": "2016-10-12T00:00:00Z", - "count": 1486, - "uniques": 452 - }, - { - "timestamp": "2016-10-13T00:00:00Z", - "count": 1170, - "uniques": 401 - }, - { - "timestamp": "2016-10-14T00:00:00Z", - "count": 868, - "uniques": 266 - }, - { - "timestamp": "2016-10-15T00:00:00Z", - "count": 495, - "uniques": 157 - }, - { - "timestamp": "2016-10-16T00:00:00Z", - "count": 524, - "uniques": 175 - }, - { - "timestamp": "2016-10-17T00:00:00Z", - "count": 1263, - "uniques": 412 - }, - { - "timestamp": "2016-10-18T00:00:00Z", - "count": 1402, - "uniques": 417 - }, - { - "timestamp": "2016-10-19T00:00:00Z", - "count": 1394, - "uniques": 424 - }, - { - "timestamp": "2016-10-20T00:00:00Z", - "count": 1492, - "uniques": 448 - }, - { - "timestamp": "2016-10-21T00:00:00Z", - "count": 1153, - "uniques": 332 - }, - { - "timestamp": "2016-10-22T00:00:00Z", - "count": 566, - "uniques": 168 - }, - { - "timestamp": "2016-10-23T00:00:00Z", - "count": 675, - "uniques": 184 - }, - { - "timestamp": "2016-10-24T00:00:00Z", - "count": 614, - "uniques": 237 - } - ] - } - }, - "repository-3": { - "value": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "forks": 9, - "stargazers_count": 80, - "watchers_count": 80, - "watchers": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "open_issues": 0, - "is_template": false, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - } - } - }, - "public-repository-items": { - "value": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" - } - ] - }, - "scim-enterprise-group-list": { - "value": { - "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], - "totalResults": 2, - "itemsPerPage": 2, - "startIndex": 1, - "Resources": [ - { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], - "id": "abcd27f8-a9aa-11ea-8221-f59b2be9cccc", - "externalId": null, - "displayName": "octo-org", - "members": [ - { - "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "display": "octocat@github.com" - }, - { - "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", - "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", - "display": "hubot@example.com" - } - ], - "meta": { - "resourceType": "Group", - "created": "2020-06-09T03:10:17.000+10:00", - "lastModified": "2020-06-09T03:10:17.000+10:00", - "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc" - } - }, - { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], - "id": "5e75bbbb-aa1a-11ea-8644-75ff655cdddd", - "externalId": null, - "displayName": "octo-docs-org", - "members": [ - { - "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "display": "octocat@github.com" - } - ], - "meta": { - "resourceType": "Group", - "created": "2020-06-09T16:28:01.000+10:00", - "lastModified": "2020-06-09T16:28:01.000+10:00", - "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/5e75bbbb-aa1a-11ea-8644-75ff655cdddd" - } - } - ] - } - }, - "scim-enterprise-group": { - "value": { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], - "id": "abcd27f8-a9aa-11ea-8221-f59b2be9cccc", - "externalId": null, - "displayName": "octo-org", - "members": [ - { - "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "display": "octocat@github.com" - }, - { - "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", - "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", - "display": "hubot@example.com" - } - ], - "meta": { - "resourceType": "Group", - "created": "2020-06-09T03:10:17.000+10:0", - "lastModified": "2020-06-09T03:10:17.000+10:00", - "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc" - } - } - }, - "scim-enterprise-group-2": { - "value": { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], - "id": "abcd27f8-a9aa-11ea-8221-f59b2be9cccc", - "externalId": null, - "displayName": "octo-org", - "members": [ - { - "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "display": "octocat@github.com" - } - ], - "meta": { - "resourceType": "Group", - "created": "2020-06-09T03:10:17.000+10:00", - "lastModified": "2020-06-09T03:10:17.000+10:00", - "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc" - } - } - }, - "scim-enterprise-user-list": { - "value": { - "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], - "totalResults": 2, - "itemsPerPage": 2, - "startIndex": 1, - "Resources": [ - { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "id": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "externalId": "00dowz5dr9oSfDFRA0h7", - "userName": "octocat@github.com", - "name": { "givenName": "Mona", "familyName": "Octocat" }, - "emails": [ - { - "value": "octocat@github.com", - "primary": true, - "type": "work" - } - ], - "groups": [{ "value": "468dd3fa-a1d6-11ea-9031-15a1f0d7811d" }], - "active": true, - "meta": { - "resourceType": "User", - "created": "2020-05-30T04:02:34.000+10:00", - "lastModified": "2020-05-30T04:05:04.000+10:00", - "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc" - } - }, - { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "id": "e18b8c34-a6b2-11ea-9d70-54abbd1c8fd5", - "externalId": "sdfoiausdofiua", - "userName": "hubot@example.com", - "name": { "givenName": "hu", "familyName": "bot" }, - "emails": [ - { - "value": "hubot@example.com", - "type": "work", - "primary": true - } - ], - "groups": [], - "active": true, - "meta": { - "resourceType": "User", - "created": "2020-06-05T08:29:40.000+10:00", - "lastModified": "2020-06-05T08:30:19.000+10:00", - "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/e18b8c34-a6b2-11ea-9d70-54abbd1c8fd5" - } - } - ] - } - }, - "scim-enterprise-user": { - "value": { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "id": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "externalId": "00dowz5dr9oSfDFRA0h7", - "userName": "mona.octocat@okta.example.com", - "name": { "givenName": "Mona", "familyName": "Octocat" }, - "emails": [ - { - "value": "mona.octocat@okta.example.com", - "type": "work", - "primary": true - } - ], - "groups": [{ "value": "468dd3fa-a1d6-11ea-9031-15a1f0d7811d" }], - "active": true, - "meta": { - "resourceType": "User", - "created": "2017-03-09T16:11:13-05:00", - "lastModified": "2017-03-09T16:11:13-05:00", - "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc" - } - } - }, - "scim-enterprise-user-2": { - "value": { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "id": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", - "externalId": "00dowz5dr9oSfDFRA0h7", - "userName": "mona.octocat@okta.example.com", - "name": { "givenName": "Monalisa", "familyName": "Octocat" }, - "emails": [ - { - "value": "mona.octocat@okta.example.com", - "type": "work", - "primary": true - }, - { "value": "monalisa@octocat.github.com", "type": "home" } - ], - "groups": [{ "value": "468dd3fa-a1d6-11ea-9031-15a1f0d7811d" }], - "active": true, - "meta": { - "resourceType": "User", - "created": "2017-03-09T16:11:13-05:00", - "lastModified": "2017-03-09T16:11:13-05:00", - "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc" - } - } - }, - "scim-user-list-response-with-filter": { - "summary": "Response with filter", - "value": { - "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], - "totalResults": 1, - "itemsPerPage": 1, - "startIndex": 1, - "Resources": [ - { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "id": "5fc0c238-1112-11e8-8e45-920c87bdbd75", - "externalId": "00u1dhhb1fkIGP7RL1d8", - "userName": "octocat@github.com", - "displayName": "Mona Octocat", - "name": { - "givenName": "Mona", - "familyName": "Octocat", - "formatted": "Mona Octocat" - }, - "emails": [{ "value": "octocat@github.com", "primary": true }], - "active": true, - "meta": { - "resourceType": "User", - "created": "2018-02-13T15:05:24.000-08:00", - "lastModified": "2018-02-13T15:05:55.000-08:00", - "location": "https://api.github.com/scim/v2/organizations/octo-org/Users/5fc0c238-1112-11e8-8e45-920c87bdbd75" - } - } - ] - } - }, - "scim-user-list-response-without-filter": { - "summary": "Response without filter", - "value": { - "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], - "totalResults": 2, - "itemsPerPage": 2, - "startIndex": 1, - "Resources": [ - { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "id": "edefdfedf-050c-11e7-8d32", - "externalId": "a7d0f98382", - "userName": "mona.octocat@okta.example.com", - "displayName": "Mona Octocat", - "name": { - "givenName": "Mona", - "familyName": "Octocat", - "formatted": "Mona Octocat" - }, - "emails": [ - { "value": "mona.octocat@okta.example.com", "primary": true } - ], - "active": true, - "meta": { - "resourceType": "User", - "created": "2017-03-09T16:11:13-05:00", - "lastModified": "2017-03-09T16:11:13-05:00", - "location": "https://api.github.com/scim/v2/organizations/octo-org/Users/edefdfedf-050c-11e7-8d32" - } - }, - { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "id": "77563764-eb6-24-0598234-958243", - "externalId": "sdfoiausdofiua", - "userName": "hubot@example.com", - "displayName": "hu bot", - "name": { - "givenName": "hu", - "familyName": "bot", - "formatted": "hu bot" - }, - "emails": [{ "value": "hubot@example.com", "primary": true }], - "active": true, - "meta": { - "resourceType": "User", - "created": "2017-03-09T16:11:13-05:00", - "lastModified": "2017-03-09T16:11:13-05:00", - "location": "https://api.github.com/scim/v2/organizations/octo-org/Users/77563764-eb6-24-0598234-958243" - } - } - ] - } - }, - "scim-user": { - "value": { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "id": "edefdfedf-050c-11e7-8d32", - "externalId": "a7d0f98382", - "userName": "mona.octocat@okta.example.com", - "displayName": "Monalisa Octocat", - "name": { - "givenName": "Monalisa", - "familyName": "Octocat", - "formatted": "Monalisa Octocat" - }, - "emails": [ - { "value": "mona.octocat@okta.example.com", "primary": true }, - { "value": "monalisa@octocat.github.com" } - ], - "active": true, - "meta": { - "resourceType": "User", - "created": "2017-03-09T16:11:13-05:00", - "lastModified": "2017-03-09T16:11:13-05:00", - "location": "https://api.github.com/scim/v2/organizations/octo-org/Users/edefdfedf-050c-11e7-8d32" - } - } - }, - "code-search-result-item-paginated": { - "value": { - "total_count": 7, - "incomplete_results": false, - "items": [ - { - "name": "classes.js", - "path": "src/attributes/classes.js", - "sha": "d7212f9dee2dcc18f084d7df8f417b80846ded5a", - "url": "https://api.github.com/repositories/167174/contents/src/attributes/classes.js?ref=825ac3773694e0cd23ee74895fd5aeb535b27da4", - "git_url": "https://api.github.com/repositories/167174/git/blobs/d7212f9dee2dcc18f084d7df8f417b80846ded5a", - "html_url": "https://github.com/jquery/jquery/blob/825ac3773694e0cd23ee74895fd5aeb535b27da4/src/attributes/classes.js", - "repository": { - "id": 167174, - "node_id": "MDEwOlJlcG9zaXRvcnkxNjcxNzQ=", - "name": "jquery", - "full_name": "jquery/jquery", - "owner": { - "login": "jquery", - "id": 70142, - "node_id": "MDQ6VXNlcjcwMTQy", - "avatar_url": "https://0.gravatar.com/avatar/6906f317a4733f4379b06c32229ef02f?d=https%3A%2F%2Fidenticons.github.com%2Ff426f04f2f9813718fb806b30e0093de.png", - "gravatar_id": "", - "url": "https://api.github.com/users/jquery", - "html_url": "https://github.com/jquery", - "followers_url": "https://api.github.com/users/jquery/followers", - "following_url": "https://api.github.com/users/jquery/following{/other_user}", - "gists_url": "https://api.github.com/users/jquery/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jquery/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jquery/subscriptions", - "organizations_url": "https://api.github.com/users/jquery/orgs", - "repos_url": "https://api.github.com/users/jquery/repos", - "events_url": "https://api.github.com/users/jquery/events{/privacy}", - "received_events_url": "https://api.github.com/users/jquery/received_events", - "type": "Organization", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/jquery/jquery", - "description": "jQuery JavaScript Library", - "fork": false, - "url": "https://api.github.com/repos/jquery/jquery", - "forks_url": "https://api.github.com/repos/jquery/jquery/forks", - "keys_url": "https://api.github.com/repos/jquery/jquery/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/jquery/jquery/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/jquery/jquery/teams", - "hooks_url": "https://api.github.com/repos/jquery/jquery/hooks", - "issue_events_url": "https://api.github.com/repos/jquery/jquery/issues/events{/number}", - "events_url": "https://api.github.com/repos/jquery/jquery/events", - "assignees_url": "https://api.github.com/repos/jquery/jquery/assignees{/user}", - "branches_url": "https://api.github.com/repos/jquery/jquery/branches{/branch}", - "tags_url": "https://api.github.com/repos/jquery/jquery/tags", - "blobs_url": "https://api.github.com/repos/jquery/jquery/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/jquery/jquery/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/jquery/jquery/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/jquery/jquery/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/jquery/jquery/statuses/{sha}", - "languages_url": "https://api.github.com/repos/jquery/jquery/languages", - "stargazers_url": "https://api.github.com/repos/jquery/jquery/stargazers", - "contributors_url": "https://api.github.com/repos/jquery/jquery/contributors", - "subscribers_url": "https://api.github.com/repos/jquery/jquery/subscribers", - "subscription_url": "https://api.github.com/repos/jquery/jquery/subscription", - "commits_url": "https://api.github.com/repos/jquery/jquery/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/jquery/jquery/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/jquery/jquery/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/jquery/jquery/issues/comments/{number}", - "contents_url": "https://api.github.com/repos/jquery/jquery/contents/{+path}", - "compare_url": "https://api.github.com/repos/jquery/jquery/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/jquery/jquery/merges", - "archive_url": "https://api.github.com/repos/jquery/jquery/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/jquery/jquery/downloads", - "issues_url": "https://api.github.com/repos/jquery/jquery/issues{/number}", - "pulls_url": "https://api.github.com/repos/jquery/jquery/pulls{/number}", - "milestones_url": "https://api.github.com/repos/jquery/jquery/milestones{/number}", - "notifications_url": "https://api.github.com/repos/jquery/jquery/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/jquery/jquery/labels{/name}", - "deployments_url": "http://api.github.com/repos/octocat/Hello-World/deployments", - "releases_url": "http://api.github.com/repos/octocat/Hello-World/releases{/id}" - }, - "score": 1 - } - ] - } - }, - "commit-search-result-item-paginated": { - "value": { - "total_count": 1, - "incomplete_results": false, - "items": [ - { - "url": "https://api.github.com/repos/octocat/Spoon-Knife/commits/bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f", - "sha": "bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f", - "html_url": "https://github.com/octocat/Spoon-Knife/commit/bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f", - "comments_url": "https://api.github.com/repos/octocat/Spoon-Knife/commits/bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f/comments", - "commit": { - "url": "https://api.github.com/repos/octocat/Spoon-Knife/git/commits/bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f", - "author": { - "date": "2014-02-04T14:38:36-08:00", - "name": "The Octocat", - "email": "octocat@nowhere.com" - }, - "committer": { - "date": "2014-02-12T15:18:55-08:00", - "name": "The Octocat", - "email": "octocat@nowhere.com" - }, - "message": "Create styles.css and updated README", - "tree": { - "url": "https://api.github.com/repos/octocat/Spoon-Knife/git/trees/a639e96f9038797fba6e0469f94a4b0cc459fa68", - "sha": "a639e96f9038797fba6e0469f94a4b0cc459fa68" - }, - "comment_count": 8 - }, - "author": { - "login": "octocat", - "id": 583231, - "node_id": "MDQ6VXNlcjU4MzIzMQ==", - "avatar_url": "https://avatars.githubusercontent.com/u/583231?v=3", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "committer": {}, - "parents": [ - { - "url": "https://api.github.com/repos/octocat/Spoon-Knife/commits/a30c19e3f13765a3b48829788bc1cb8b4e95cee4", - "html_url": "https://github.com/octocat/Spoon-Knife/commit/a30c19e3f13765a3b48829788bc1cb8b4e95cee4", - "sha": "a30c19e3f13765a3b48829788bc1cb8b4e95cee4" - } - ], - "repository": { - "id": 1300192, - "node_id": "MDEwOlJlcG9zaXRvcnkxMzAwMTky", - "name": "Spoon-Knife", - "full_name": "octocat/Spoon-Knife", - "owner": { - "login": "octocat", - "id": 583231, - "node_id": "MDQ6VXNlcjU4MzIzMQ==", - "avatar_url": "https://avatars.githubusercontent.com/u/583231?v=3", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Spoon-Knife", - "description": "This repo is for demonstration purposes only.", - "fork": false, - "url": "https://api.github.com/repos/octocat/Spoon-Knife", - "forks_url": "https://api.github.com/repos/octocat/Spoon-Knife/forks", - "keys_url": "https://api.github.com/repos/octocat/Spoon-Knife/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/octocat/Spoon-Knife/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/octocat/Spoon-Knife/teams", - "hooks_url": "https://api.github.com/repos/octocat/Spoon-Knife/hooks", - "issue_events_url": "https://api.github.com/repos/octocat/Spoon-Knife/issues/events{/number}", - "events_url": "https://api.github.com/repos/octocat/Spoon-Knife/events", - "assignees_url": "https://api.github.com/repos/octocat/Spoon-Knife/assignees{/user}", - "branches_url": "https://api.github.com/repos/octocat/Spoon-Knife/branches{/branch}", - "tags_url": "https://api.github.com/repos/octocat/Spoon-Knife/tags", - "blobs_url": "https://api.github.com/repos/octocat/Spoon-Knife/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Spoon-Knife/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Spoon-Knife/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/octocat/Spoon-Knife/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/octocat/Spoon-Knife/statuses/{sha}", - "languages_url": "https://api.github.com/repos/octocat/Spoon-Knife/languages", - "stargazers_url": "https://api.github.com/repos/octocat/Spoon-Knife/stargazers", - "contributors_url": "https://api.github.com/repos/octocat/Spoon-Knife/contributors", - "subscribers_url": "https://api.github.com/repos/octocat/Spoon-Knife/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Spoon-Knife/subscription", - "commits_url": "https://api.github.com/repos/octocat/Spoon-Knife/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/octocat/Spoon-Knife/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/octocat/Spoon-Knife/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/octocat/Spoon-Knife/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/octocat/Spoon-Knife/contents/{+path}", - "compare_url": "https://api.github.com/repos/octocat/Spoon-Knife/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/octocat/Spoon-Knife/merges", - "archive_url": "https://api.github.com/repos/octocat/Spoon-Knife/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/octocat/Spoon-Knife/downloads", - "issues_url": "https://api.github.com/repos/octocat/Spoon-Knife/issues{/number}", - "pulls_url": "https://api.github.com/repos/octocat/Spoon-Knife/pulls{/number}", - "milestones_url": "https://api.github.com/repos/octocat/Spoon-Knife/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Spoon-Knife/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/octocat/Spoon-Knife/labels{/name}", - "releases_url": "https://api.github.com/repos/octocat/Spoon-Knife/releases{/id}", - "deployments_url": "https://api.github.com/repos/octocat/Spoon-Knife/deployments" - }, - "score": 1, - "node_id": "MDQ6VXNlcjU4MzIzMQ==" - } - ] - } - }, - "issue-search-result-item-paginated": { - "value": { - "total_count": 280, - "incomplete_results": false, - "items": [ - { - "url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132", - "repository_url": "https://api.github.com/repos/batterseapower/pinyin-toolkit", - "labels_url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132/labels{/name}", - "comments_url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132/comments", - "events_url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132/events", - "html_url": "https://github.com/batterseapower/pinyin-toolkit/issues/132", - "id": 35802, - "node_id": "MDU6SXNzdWUzNTgwMg==", - "number": 132, - "title": "Line Number Indexes Beyond 20 Not Displayed", - "user": { - "login": "Nick3C", - "id": 90254, - "node_id": "MDQ6VXNlcjkwMjU0", - "avatar_url": "https://secure.gravatar.com/avatar/934442aadfe3b2f4630510de416c5718?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png", - "gravatar_id": "", - "url": "https://api.github.com/users/Nick3C", - "html_url": "https://github.com/Nick3C", - "followers_url": "https://api.github.com/users/Nick3C/followers", - "following_url": "https://api.github.com/users/Nick3C/following{/other_user}", - "gists_url": "https://api.github.com/users/Nick3C/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Nick3C/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Nick3C/subscriptions", - "organizations_url": "https://api.github.com/users/Nick3C/orgs", - "repos_url": "https://api.github.com/users/Nick3C/repos", - "events_url": "https://api.github.com/users/Nick3C/events{/privacy}", - "received_events_url": "https://api.github.com/users/Nick3C/received_events", - "type": "User", - "site_admin": true - }, - "labels": [ - { - "id": 4, - "node_id": "MDU6TGFiZWw0", - "url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/labels/bug", - "name": "bug", - "color": "ff0000" - } - ], - "state": "open", - "assignee": null, - "milestone": { - "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", - "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", - "id": 1002604, - "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", - "number": 1, - "state": "open", - "title": "v1.0", - "description": "Tracking milestone for version 1.0", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 4, - "closed_issues": 8, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z", - "closed_at": "2013-02-12T13:22:01Z", - "due_on": "2012-10-09T23:39:01Z" - }, - "comments": 15, - "created_at": "2009-07-12T20:10:41Z", - "updated_at": "2009-07-19T09:23:43Z", - "closed_at": null, - "pull_request": { - "url": "https://api/github.com/repos/octocat/Hello-World/pull/1347", - "html_url": "https://github.com/octocat/Hello-World/pull/1347", - "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", - "patch_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347" - }, - "body": "...", - "score": 1, - "locked": true, - "author_association": "collaborator" - } - ] - } - }, - "label-search-result-item-paginated": { - "value": { - "total_count": 2, - "incomplete_results": false, - "items": [ - { - "id": 418327088, - "node_id": "MDU6TGFiZWw0MTgzMjcwODg=", - "url": "https://api.github.com/repos/octocat/linguist/labels/enhancement", - "name": "enhancement", - "color": "84b6eb", - "default": true, - "description": "New feature or request.", - "score": 1 - }, - { - "id": 418327086, - "node_id": "MDU6TGFiZWw0MTgzMjcwODY=", - "url": "https://api.github.com/repos/octocat/linguist/labels/bug", - "name": "bug", - "color": "ee0701", - "default": true, - "description": "Something isn't working.", - "score": 1 - } - ] - } - }, - "repo-search-result-item-paginated": { - "value": { - "total_count": 40, - "incomplete_results": false, - "items": [ - { - "id": 3081286, - "node_id": "MDEwOlJlcG9zaXRvcnkzMDgxMjg2", - "name": "Tetris", - "full_name": "dtrupenn/Tetris", - "owner": { - "login": "dtrupenn", - "id": 872147, - "node_id": "MDQ6VXNlcjg3MjE0Nw==", - "avatar_url": "https://secure.gravatar.com/avatar/e7956084e75f239de85d3a31bc172ace?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png", - "gravatar_id": "", - "url": "https://api.github.com/users/dtrupenn", - "received_events_url": "https://api.github.com/users/dtrupenn/received_events", - "type": "User", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "site_admin": true - }, - "private": false, - "html_url": "https://github.com/dtrupenn/Tetris", - "description": "A C implementation of Tetris using Pennsim through LC4", - "fork": false, - "url": "https://api.github.com/repos/dtrupenn/Tetris", - "created_at": "2012-01-01T00:31:50Z", - "updated_at": "2013-01-05T17:58:47Z", - "pushed_at": "2012-01-01T00:37:02Z", - "homepage": "https://github.com", - "size": 524, - "stargazers_count": 1, - "watchers_count": 1, - "language": "Assembly", - "forks_count": 0, - "open_issues_count": 0, - "master_branch": "master", - "default_branch": "master", - "score": 1, - "archive_url": "https://api.github.com/repos/dtrupenn/Tetris/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/dtrupenn/Tetris/assignees{/user}", - "blobs_url": "https://api.github.com/repos/dtrupenn/Tetris/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/dtrupenn/Tetris/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/dtrupenn/Tetris/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/dtrupenn/Tetris/comments{/number}", - "commits_url": "https://api.github.com/repos/dtrupenn/Tetris/commits{/sha}", - "compare_url": "https://api.github.com/repos/dtrupenn/Tetris/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/dtrupenn/Tetris/contents/{+path}", - "contributors_url": "https://api.github.com/repos/dtrupenn/Tetris/contributors", - "deployments_url": "https://api.github.com/repos/dtrupenn/Tetris/deployments", - "downloads_url": "https://api.github.com/repos/dtrupenn/Tetris/downloads", - "events_url": "https://api.github.com/repos/dtrupenn/Tetris/events", - "forks_url": "https://api.github.com/repos/dtrupenn/Tetris/forks", - "git_commits_url": "https://api.github.com/repos/dtrupenn/Tetris/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/dtrupenn/Tetris/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/dtrupenn/Tetris/git/tags{/sha}", - "git_url": "git:github.com/dtrupenn/Tetris.git", - "issue_comment_url": "https://api.github.com/repos/dtrupenn/Tetris/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/dtrupenn/Tetris/issues/events{/number}", - "issues_url": "https://api.github.com/repos/dtrupenn/Tetris/issues{/number}", - "keys_url": "https://api.github.com/repos/dtrupenn/Tetris/keys{/key_id}", - "labels_url": "https://api.github.com/repos/dtrupenn/Tetris/labels{/name}", - "languages_url": "https://api.github.com/repos/dtrupenn/Tetris/languages", - "merges_url": "https://api.github.com/repos/dtrupenn/Tetris/merges", - "milestones_url": "https://api.github.com/repos/dtrupenn/Tetris/milestones{/number}", - "notifications_url": "https://api.github.com/repos/dtrupenn/Tetris/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/dtrupenn/Tetris/pulls{/number}", - "releases_url": "https://api.github.com/repos/dtrupenn/Tetris/releases{/id}", - "ssh_url": "git@github.com:dtrupenn/Tetris.git", - "stargazers_url": "https://api.github.com/repos/dtrupenn/Tetris/stargazers", - "statuses_url": "https://api.github.com/repos/dtrupenn/Tetris/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/dtrupenn/Tetris/subscribers", - "subscription_url": "https://api.github.com/repos/dtrupenn/Tetris/subscription", - "tags_url": "https://api.github.com/repos/dtrupenn/Tetris/tags", - "teams_url": "https://api.github.com/repos/dtrupenn/Tetris/teams", - "trees_url": "https://api.github.com/repos/dtrupenn/Tetris/git/trees{/sha}", - "clone_url": "https://github.com/dtrupenn/Tetris.git", - "mirror_url": "git:git.example.com/dtrupenn/Tetris", - "hooks_url": "https://api.github.com/repos/dtrupenn/Tetris/hooks", - "svn_url": "https://svn.github.com/dtrupenn/Tetris", - "forks": 1, - "open_issues": 1, - "watchers": 1, - "has_issues": true, - "has_projects": true, - "has_pages": true, - "has_wiki": true, - "has_downloads": true, - "archived": true, - "disabled": true, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - } - } - ] - } - }, - "topic-search-result-item-paginated": { - "value": { - "total_count": 6, - "incomplete_results": false, - "items": [ - { - "name": "ruby", - "display_name": "Ruby", - "short_description": "Ruby is a scripting language designed for simplified object-oriented programming.", - "description": "Ruby was developed by Yukihiro \"Matz\" Matsumoto in 1995 with the intent of having an easily readable programming language. It is integrated with the Rails framework to create dynamic web-applications. Ruby's syntax is similar to that of Perl and Python.", - "created_by": "Yukihiro Matsumoto", - "released": "December 21, 1995", - "created_at": "2016-11-28T22:03:59Z", - "updated_at": "2017-10-30T18:16:32Z", - "featured": true, - "curated": true, - "score": 1 - }, - { - "name": "rails", - "display_name": "Rails", - "short_description": "Ruby on Rails (Rails) is a web application framework written in Ruby.", - "description": "Ruby on Rails (Rails) is a web application framework written in Ruby. It is meant to help simplify the building of complex websites.", - "created_by": "David Heinemeier Hansson", - "released": "December 13 2005", - "created_at": "2016-12-09T17:03:50Z", - "updated_at": "2017-10-30T16:20:19Z", - "featured": true, - "curated": true, - "score": 1 - }, - { - "name": "python", - "display_name": "Python", - "short_description": "Python is a dynamically typed programming language.", - "description": "Python is a dynamically typed programming language designed by Guido Van Rossum. Much like the programming language Ruby, Python was designed to be easily read by programmers. Because of its large following and many libraries, Python can be implemented and used to do anything from webpages to scientific research.", - "created_by": "Guido van Rossum", - "released": "February 20, 1991", - "created_at": "2016-12-07T00:07:02Z", - "updated_at": "2017-10-27T22:45:43Z", - "featured": true, - "curated": true, - "score": 1 - }, - { - "name": "jekyll", - "display_name": "Jekyll", - "short_description": "Jekyll is a simple, blog-aware static site generator.", - "description": "Jekyll is a blog-aware, site generator written in Ruby. It takes raw text files, runs it through a renderer and produces a publishable static website.", - "created_by": "Tom Preston-Werner", - "released": "2008", - "created_at": "2016-12-16T21:53:08Z", - "updated_at": "2017-10-27T19:00:24Z", - "featured": true, - "curated": true, - "score": 1 - }, - { - "name": "sass", - "display_name": "Sass", - "short_description": "Sass is a stable extension to classic CSS.", - "description": "Sass is a stylesheet language with a main implementation in Ruby. It is an extension of CSS that makes improvements to the old stylesheet format, such as being able to declare variables and using a cleaner nesting syntax.", - "created_by": "Hampton Catlin, Natalie Weizenbaum, Chris Eppstein", - "released": "November 28, 2006", - "created_at": "2016-12-16T21:53:45Z", - "updated_at": "2018-01-16T16:30:40Z", - "featured": true, - "curated": true, - "score": 1 - }, - { - "name": "homebrew", - "display_name": "Homebrew", - "short_description": "Homebrew is a package manager for macOS.", - "description": "Homebrew is a package manager for Apple's macOS operating system. It simplifies the installation of software and is popular in the Ruby on Rails community.", - "created_by": "Max Howell", - "released": "2009", - "created_at": "2016-12-17T20:30:44Z", - "updated_at": "2018-02-06T16:14:56Z", - "featured": true, - "curated": true, - "score": 1 - } - ] - } - }, - "user-search-result-item-paginated": { - "value": { - "total_count": 12, - "incomplete_results": false, - "items": [ - { - "login": "mojombo", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://secure.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png", - "gravatar_id": "", - "url": "https://api.github.com/users/mojombo", - "html_url": "https://github.com/mojombo", - "followers_url": "https://api.github.com/users/mojombo/followers", - "subscriptions_url": "https://api.github.com/users/mojombo/subscriptions", - "organizations_url": "https://api.github.com/users/mojombo/orgs", - "repos_url": "https://api.github.com/users/mojombo/repos", - "received_events_url": "https://api.github.com/users/mojombo/received_events", - "type": "User", - "score": 1, - "following_url": "https://api.github.com/users/mojombo/following{/other_user}", - "gists_url": "https://api.github.com/users/mojombo/gists{/gist_id}", - "starred_url": "https://api.github.com/users/mojombo/starred{/owner}{/repo}", - "events_url": "https://api.github.com/users/mojombo/events{/privacy}", - "site_admin": true - } - ] - } - }, - "team-repository-alternative-response-with-extra-repository-information": { - "value": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - }, - "group-mapping-2": { - "value": { - "groups": [ - { - "group_id": "123", - "group_name": "Octocat admins", - "group_description": "The people who configure your octoworld." - } - ] - } - }, - "private-user-response-with-public-and-private-profile-information": { - "summary": "Response with public and private profile information", - "value": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false, - "name": "monalisa octocat", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "hireable": false, - "bio": "There once was...", - "twitter_username": "monatheoctocat", - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2008-01-14T04:33:35Z", - "private_gists": 81, - "total_private_repos": 100, - "owned_private_repos": 100, - "disk_usage": 10000, - "collaborators": 8, - "two_factor_authentication": true, - "plan": { - "name": "Medium", - "space": 400, - "private_repos": 20, - "collaborators": 0 - } - } - }, - "private-user-response-with-public-profile-information": { - "summary": "Response with public profile information", - "value": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false, - "name": "monalisa octocat", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "hireable": false, - "bio": "There once was...", - "twitter_username": "monatheoctocat", - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2008-01-14T04:33:35Z" - } - }, - "private-user": { - "value": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false, - "name": "monalisa octocat", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "hireable": false, - "bio": "There once was...", - "twitter_username": "monatheoctocat", - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2008-01-14T04:33:35Z", - "private_gists": 81, - "total_private_repos": 100, - "owned_private_repos": 100, - "disk_usage": 10000, - "collaborators": 8, - "two_factor_authentication": true, - "plan": { - "name": "Medium", - "space": 400, - "private_repos": 20, - "collaborators": 0 - } - } - }, - "email-items-3": { - "value": [ - { - "email": "octocat@github.com", - "primary": true, - "verified": true, - "visibility": "private" - } - ] - }, - "email-items-2": { - "value": [ - { - "email": "octocat@github.com", - "verified": true, - "primary": true, - "visibility": "public" - } - ] - }, - "email-items": { - "value": [ - { - "email": "octocat@octocat.org", - "primary": false, - "verified": false, - "visibility": "public" - }, - { - "email": "octocat@github.com", - "primary": false, - "verified": false, - "visibility": null - }, - { - "email": "mona@github.com", - "primary": false, - "verified": false, - "visibility": null - } - ] - }, - "gpg-key-items": { - "value": [ - { - "id": 3, - "primary_key_id": 2, - "key_id": "3262EFF25BA0D270", - "public_key": "xsBNBFayYZ...", - "emails": [ - { - "email": "mastahyeti@users.noreply.github.com", - "verified": true - } - ], - "subkeys": [ - { - "id": 4, - "primary_key_id": 3, - "key_id": "4A595D4C72EE49C7", - "public_key": "zsBNBFayYZ...", - "emails": [], - "subkeys": [], - "can_sign": false, - "can_encrypt_comms": true, - "can_encrypt_storage": true, - "can_certify": false, - "created_at": "2016-03-24T11:31:04-06:00", - "expires_at": "2016-03-24T11:31:04-07:00" - } - ], - "can_sign": true, - "can_encrypt_comms": false, - "can_encrypt_storage": false, - "can_certify": true, - "created_at": "2016-03-24T11:31:04-06:00", - "expires_at": "2016-03-24T11:31:04-07:00", - "raw_key": "string" - } - ] - }, - "gpg-key": { - "value": { - "id": 3, - "primary_key_id": 2, - "key_id": "3262EFF25BA0D270", - "public_key": "xsBNBFayYZ...", - "emails": [ - { "email": "mastahyeti@users.noreply.github.com", "verified": true } - ], - "subkeys": [ - { - "id": 4, - "primary_key_id": 3, - "key_id": "4A595D4C72EE49C7", - "public_key": "zsBNBFayYZ...", - "emails": [], - "subkeys": [], - "can_sign": false, - "can_encrypt_comms": true, - "can_encrypt_storage": true, - "can_certify": false, - "created_at": "2016-03-24T11:31:04-06:00", - "expires_at": "2016-03-24T11:31:04-07:00" - } - ], - "can_sign": true, - "can_encrypt_comms": false, - "can_encrypt_storage": false, - "can_certify": true, - "created_at": "2016-03-24T11:31:04-06:00", - "expires_at": "2016-03-24T11:31:04-07:00", - "raw_key": "\"-----BEGIN PGP PUBLIC KEY BLOCK-----\\nVersion: GnuPG v2\\n\\nmQENBFayYZ0BCAC4hScoJXXpyR+MXGcrBxElqw3FzCVvkViuyeko+Jp76QJhg8kr\\nucRTxbnOoHfda/FmilEa/wxf9ch5/PSrrL26FxEoPHhJolp8fnIDLQeITn94NYdB\\nZtnnEKslpPrG97qSUWIchvyqCPtvOb8+8fWvGx9K/ZWcEEdh1X8+WFR2jMENMeoX\\nwxHWQoPnS7LpX/85/M7VUcJxvDVfv+eHsnQupmE5bGarKNih0oMe3LbdN3qA5PTz\\nSCm6Iudar1VsQ+xTz08ymL7t4pnEtLguQ7EyatFHCjxNblv5RzxoL0tDgN3HqoDz\\nc7TEA+q4RtDQl9amcvQ95emnXmZ974u7UkYdABEBAAG0HlNvbWUgVXNlciA8c29t\\nZXVzZXJAZ21haWwuY29tPokBOAQTAQIAIgUCVrJhnQIbAwYLCQgHAwIGFQgCCQoL\\nBBYCAwECHgECF4AACgkQMmLv8lug0nAViQgArWjI55+7p48URr2z9Jvak+yrBTx1\\nzkufltQAnHTJkq+Kl9dySSmTnOop8o3rE4++IOpYV5Y36PkKf9EZMk4n1RQiDPKE\\nAFtRVTkRaoWzOir9KQXJPfhKrl01j/QzY+utfiMvUoBJZ9ybq8Pa885SljW9lbaX\\nIYw+hl8ZdJ2KStvGrEyfQvRyq3aN5c9TV//4BdGnwx7Qabq/U+G18lizG6f/yq15\\ned7t0KELaCfeKPvytp4VE9/z/Ksah/h3+Qilx07/oG2Ae5kC1bEC9coD/ogPUhbv\\nb2bsBIoY9E9YwsLoif2lU+o1t76zLgUktuNscRRUKobW028H1zuFS/XQhrkBDQRW\\nsmGdAQgApnyyv3i144OLYy0O4UKQxd3e10Y3WpDwfnGIBefAI1m7RxnUxBag/DsU\\n7gi9qLEC4VHSfq4eiNfr1LJOyCL2edTgCWFgBhVjbXjZe6YAOrAnhxwCErnN0Y7N\\n6s8wVh9fObSOyf8ZE6G7JeKpcq9Q6gd/KxagfD48a1v+fyRHpyQc6J9pUEmtrDJ7\\nBjmsd2VWzLBvNWdHyxDNtZweIaqIO9VUYYpr1mtTliNBOZLUelmgrt7HBRcJpWMA\\nS8muVVbuP5MK0trLBq/JB8qUH3zRzB/PhMgzmkIfjEK1VYDWm4E8DYyTWEJcHqkb\\neqFsNjrIlwPaA122BWC6gUOPwwH+oQARAQABiQEfBBgBAgAJBQJWsmGdAhsMAAoJ\\nEDJi7/JboNJwAyAIALd4xcdmGbZD98gScJzqwzkOMcO8zFHqHNvJ42xIFvGny7c0\\n1Rx7iyrdypOby5AxE+viQcjG4rpLZW/xKYBNGrCfDyQO7511I0v8x20EICMlMfD/\\nNrWQCzesEPcUlKTP07d+sFyP8AyseOidbzY/92CpskTgdSBjY/ntLSaoknl/fjJE\\nQM8OkPqU7IraO1Jzzdnm20d5PZL9+PIwIWdSTedU/vBMTJyNcoqvSfKf1wNC66XP\\nhqfYgXJE564AdWZKA3C0IyCqiv+LHwxLnUHio1a4/r91C8KPzxs6tGxRDjXLd7ms\\nuYFGWymiUGOE/giHlcxdYcHzwLnPDliMQOLiTkK5AQ0EVuxMygEIAOD+bW1cDTmE\\nBxh5JECoqeHuwgl6DlLhnubWPkQ4ZeRzBRAsFcEJQlwlJjrzFDicL+lnm6Qq4tt0\\n560TwHdf15/AKTZIZu7H25axvGNzgeaUkJEJdYAq9zTKWwX7wKyzBszi485nQg97\\nMfAqwhMpDW0Qqf8+7Ug+WEmfBSGv9uL3aQC6WEeIsHfri0n0n8v4XgwhfShXguxO\\nCsOztEsuW7WWKW9P4TngKKv4lCHdPlV6FwxeMzODBJvc2fkHVHnqc0PqszJ5xcF8\\n6gZCpMM027SbpeYWCAD5zwJyYP9ntfO1p2HjnQ1dZaP9FeNcO7uIV1Lnd1eGCu6I\\nsrVp5k1f3isAEQEAAYkCPgQYAQIACQUCVuxMygIbAgEpCRAyYu/yW6DScMBdIAQZ\\nAQIABgUCVuxMygAKCRCKohN4dhq2b4tcCACHxmOHVXNpu47OvUGYQydLgMACUlXN\\nlj+HfE0VReqShxdDmpasAY9IRpuMB2RsGK8GbNP+4SlOlAiPf5SMhS7nZNkNDgQQ\\naZ3HFpgrFmFwmE10BKT4iQtoxELLM57z0qGOAfTsEjWFQa4sF+6IHAQR/ptkdkkI\\nBUEXiMnAwVwBysLIJiLO8qdjB6qp52QkT074JVrwywT/P+DkMfC2k4r/AfEbf6eF\\ndmPDuPk6KD87+hJZsSa5MaMUBQVvRO/mgEkhJRITVu58eWGaBOcQJ8gqurhCqM5P\\nDfUA4TJ7wiqM6sS764vV1rOioTTXkszzhClQqET7hPVnVQjenYgv0EZHNyQH/1f1\\n/CYqvV1vFjM9vJjMbxXsATCkZe6wvBVKD8vLsJAr8N+onKQz+4OPc3kmKq7aESu3\\nCi/iuie5KKVwnuNhr9AzT61vEkKxwHcVFEvHB77F6ZAAInhRvjzmQbD2dlPLLQCC\\nqDj71ODSSAPTEmUy6969bgD9PfWei7kNkBIx7s3eBv8yzytSc2EcuUgopqFazquw\\nFs1+tqGHjBvQfTo6bqbJjp/9Ci2pvde3ElV2rAgUlb3lqXyXjRDqrXosh5GcRPQj\\nK8Nhj1BNhnrCVskE4BP0LYbOHuzgm86uXwGCFsY+w2VOsSm16Jx5GHyG5S5WU3+D\\nIts/HFYRLiFgDLmTlxo=\\n=+OzK\\n-----END PGP PUBLIC KEY BLOCK-----\"" - } - }, - "base-installation-for-auth-user-paginated": { - "value": { - "total_count": 2, - "installations": [ - { - "id": 1, - "account": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "access_tokens_url": "https://api.github.com/installations/1/access_tokens", - "repositories_url": "https://api.github.com/installation/repositories", - "html_url": "https://github.com/organizations/github/settings/installations/1", - "app_id": 1, - "target_id": 1, - "target_type": "Organization", - "permissions": { - "checks": "write", - "metadata": "read", - "contents": "read" - }, - "events": ["push", "pull_request"], - "single_file_name": "config.yaml", - "has_multiple_single_files": true, - "single_file_paths": ["config.yml", ".github/issue_TEMPLATE.md"], - "repository_selection": "all", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "app_slug": "github-actions" - }, - { - "id": 3, - "account": { - "login": "octocat", - "id": 2, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "access_tokens_url": "https://api.github.com/installations/1/access_tokens", - "repositories_url": "https://api.github.com/installation/repositories", - "html_url": "https://github.com/organizations/github/settings/installations/1", - "app_id": 1, - "target_id": 1, - "target_type": "Organization", - "permissions": { - "checks": "write", - "metadata": "read", - "contents": "read" - }, - "events": ["push", "pull_request"], - "single_file_name": "config.yaml", - "has_multiple_single_files": true, - "single_file_paths": ["config.yml", ".github/issue_TEMPLATE.md"], - "repository_selection": "all", - "created_at": "2017-07-08T16:18:44-04:00", - "updated_at": "2017-07-08T16:18:44-04:00", - "app_slug": "github-actions" - } - ] - } - }, - "interaction-limit-user": { - "value": { - "limit": "collaborators_only", - "origin": "user", - "expires_at": "2018-08-17T04:18:39Z" - } - }, - "key-items": { - "value": [ - { - "key_id": "012345678912345678", - "key": "2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234", - "id": 2, - "url": "https://api.github.com/user/keys/2", - "title": "ssh-rsa AAAAB3NzaC1yc2EAAA", - "created_at": "2020-06-11T21:31:57Z", - "verified": false, - "read_only": false - }, - { - "key_id": "012345678912345608", - "key": "2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJy931234", - "id": 3, - "url": "https://api.github.com/user/keys/3", - "title": "ssh-rsa AAAAB3NzaC1yc2EAAB", - "created_at": "2020-07-11T21:31:57Z", - "verified": false, - "read_only": false - } - ] - }, - "key": { - "value": { - "key_id": "012345678912345678", - "key": "2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234", - "id": 2, - "url": "https://api.github.com/user/keys/2", - "title": "ssh-rsa AAAAB3NzaC1yc2EAAA", - "created_at": "2020-06-11T21:31:57Z", - "verified": false, - "read_only": false - } - }, - "user-marketplace-purchase-items": { - "value": [ - { - "billing_cycle": "monthly", - "next_billing_date": "2017-11-11T00:00:00Z", - "unit_count": null, - "on_free_trial": true, - "free_trial_ends_on": "2017-11-11T00:00:00Z", - "updated_at": "2017-11-02T01:12:12Z", - "account": { - "login": "github", - "id": 4, - "url": "https://api.github.com/orgs/github", - "email": null, - "organization_billing_email": "billing@github.com", - "type": "Organization" - }, - "plan": { - "url": "https://api.github.com/marketplace_listing/plans/1313", - "accounts_url": "https://api.github.com/marketplace_listing/plans/1313/accounts", - "id": 1313, - "number": 3, - "name": "Pro", - "description": "A professional-grade CI solution", - "monthly_price_in_cents": 1099, - "yearly_price_in_cents": 11870, - "price_model": "flat-rate", - "has_free_trial": true, - "unit_name": null, - "state": "published", - "bullets": [ - "Up to 25 private repositories", - "11 concurrent builds" - ] - } - } - ] - }, - "org-membership-items": { - "value": [ - { - "url": "https://api.github.com/orgs/octocat/memberships/defunkt", - "state": "active", - "role": "admin", - "organization_url": "https://api.github.com/orgs/octocat", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - }, - { - "url": "https://api.github.com/orgs/invitocat/memberships/defunkt", - "state": "pending", - "role": "admin", - "organization_url": "https://api.github.com/orgs/invitocat", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - ] - }, - "org-membership": { - "value": { - "url": "https://api.github.com/orgs/invitocat/memberships/defunkt", - "state": "pending", - "role": "admin", - "organization_url": "https://api.github.com/orgs/invitocat", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "org-membership-2": { - "value": { - "url": "https://api.github.com/orgs/octocat/memberships/defunkt", - "state": "active", - "role": "admin", - "organization_url": "https://api.github.com/orgs/octocat", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization" - }, - "user": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - } - } - }, - "migration-items": { - "value": [ - { - "id": 79, - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516", - "state": "pending", - "lock_repositories": true, - "exclude_attachments": false, - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ], - "url": "https://api.github.com/orgs/octo-org/migrations/79", - "created_at": "2015-07-06T15:33:38-07:00", - "updated_at": "2015-07-06T15:33:38-07:00", - "node_id": "MDQ6VXNlcjE=" - } - ] - }, - "migration-2": { - "value": { - "id": 79, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516", - "state": "pending", - "lock_repositories": true, - "exclude_attachments": false, - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ], - "url": "https://api.github.com/orgs/octo-org/migrations/79", - "created_at": "2015-07-06T15:33:38-07:00", - "updated_at": "2015-07-06T15:33:38-07:00" - } - }, - "migration": { - "value": { - "id": 79, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516", - "state": "exported", - "lock_repositories": true, - "exclude_attachments": false, - "repositories": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://api.github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ], - "url": "https://api.github.com/orgs/octo-org/migrations/79", - "created_at": "2015-07-06T15:33:38-07:00", - "updated_at": "2015-07-06T15:33:38-07:00" - } - }, - "project": { - "value": { - "owner_url": "https://api.github.com/users/octocat", - "url": "https://api.github.com/projects/1002603", - "html_url": "https://github.com/users/octocat/projects/1", - "columns_url": "https://api.github.com/projects/1002603/columns", - "id": 1002603, - "node_id": "MDc6UHJvamVjdDEwMDI2MDM=", - "name": "My Projects", - "body": "A board to manage my personal projects.", - "number": 1, - "state": "open", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z" - } - }, - "repository-items-default-response": { - "summary": "Default response", - "value": [ - { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - ] - }, - "starred-repository-items-alternative-response-with-star-creation-timestamps": { - "summary": "Alternative response with star creation timestamps", - "value": [ - { - "starred_at": "2011-01-16T19:06:43Z", - "repo": { - "id": 1296269, - "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", - "name": "Hello-World", - "full_name": "octocat/Hello-World", - "owner": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/octocat/Hello-World", - "description": "This your first repo!", - "fork": false, - "url": "https://api.github.com/repos/octocat/Hello-World", - "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", - "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", - "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", - "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", - "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", - "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", - "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", - "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", - "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", - "events_url": "https://api.github.com/repos/octocat/Hello-World/events", - "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", - "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", - "git_url": "git:github.com/octocat/Hello-World.git", - "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", - "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", - "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", - "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", - "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", - "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", - "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", - "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", - "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", - "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", - "ssh_url": "git@github.com:octocat/Hello-World.git", - "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", - "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", - "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", - "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", - "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", - "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", - "clone_url": "https://github.com/octocat/Hello-World.git", - "mirror_url": "git:git.example.com/octocat/Hello-World", - "hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks", - "svn_url": "https://svn.github.com/octocat/Hello-World", - "homepage": "https://github.com", - "language": null, - "forks_count": 9, - "stargazers_count": 80, - "watchers_count": 80, - "size": 108, - "default_branch": "master", - "open_issues_count": 0, - "is_template": true, - "topics": ["octocat", "atom", "electron", "api"], - "has_issues": true, - "has_projects": true, - "has_wiki": true, - "has_pages": false, - "has_downloads": true, - "archived": false, - "disabled": false, - "visibility": "public", - "pushed_at": "2011-01-26T19:06:43Z", - "created_at": "2011-01-26T19:01:12Z", - "updated_at": "2011-01-26T19:14:43Z", - "permissions": { "admin": false, "push": false, "pull": true }, - "allow_rebase_merge": true, - "template_repository": null, - "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", - "allow_squash_merge": true, - "delete_branch_on_merge": true, - "allow_merge_commit": true, - "subscribers_count": 42, - "network_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "url": "https://api.github.com/licenses/mit", - "spdx_id": "MIT", - "node_id": "MDc6TGljZW5zZW1pdA==", - "html_url": "https://github.com/licenses/mit" - }, - "forks": 1, - "open_issues": 1, - "watchers": 1 - } - } - ] - }, - "team-full-items": { - "value": [ - { - "id": 1, - "node_id": "MDQ6VGVhbTE=", - "url": "https://api.github.com/teams/1", - "html_url": "https://api.github.com/teams/justice-league", - "name": "Justice League", - "slug": "justice-league", - "description": "A great team.", - "privacy": "closed", - "permission": "admin", - "members_url": "https://api.github.com/teams/1/members{/member}", - "repositories_url": "https://api.github.com/teams/1/repos", - "parent": null, - "members_count": 3, - "repos_count": 10, - "created_at": "2017-07-14T16:53:42Z", - "updated_at": "2017-08-17T12:37:15Z", - "organization": { - "login": "github", - "id": 1, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", - "url": "https://api.github.com/orgs/github", - "repos_url": "https://api.github.com/orgs/github/repos", - "events_url": "https://api.github.com/orgs/github/events", - "hooks_url": "https://api.github.com/orgs/github/hooks", - "issues_url": "https://api.github.com/orgs/github/issues", - "members_url": "https://api.github.com/orgs/github/members{/member}", - "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "description": "A great organization", - "name": "github", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "is_verified": true, - "has_organization_projects": true, - "has_repository_projects": true, - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "html_url": "https://github.com/octocat", - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2017-08-17T12:37:15Z", - "type": "Organization" - } - } - ] - }, - "public-user-default-response": { - "summary": "Default response", - "value": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false, - "name": "monalisa octocat", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "hireable": false, - "bio": "There once was...", - "twitter_username": "monatheoctocat", - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2008-01-14T04:33:35Z" - } - }, - "public-user-response-with-git-hub-plan-information": { - "summary": "Response with GitHub plan information", - "value": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false, - "name": "monalisa octocat", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "hireable": false, - "bio": "There once was...", - "twitter_username": "monatheoctocat", - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2008-01-14T04:33:35Z", - "plan": { - "name": "pro", - "space": 976562499, - "collaborators": 0, - "private_repos": 9999 - } - } - }, - "hovercard": { - "value": { - "contexts": [{ "message": "Owns this repository", "octicon": "repo" }] - } - }, - "key-simple-items": { "value": [{ "id": 1, "key": "ssh-rsa AAA..." }] }, - "project-items-3": { - "value": [ - { - "owner_url": "https://api.github.com/users/octocat", - "url": "https://api.github.com/projects/1002603", - "html_url": "https://github.com/users/octocat/projects/1", - "columns_url": "https://api.github.com/projects/1002603/columns", - "id": 1002603, - "node_id": "MDc6UHJvamVjdDEwMDI2MDM=", - "name": "My Projects", - "body": "A board to manage my personal projects.", - "number": 1, - "state": "open", - "creator": { - "login": "octocat", - "id": 1, - "node_id": "MDQ6VXNlcjE=", - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false - }, - "created_at": "2011-04-10T20:09:31Z", - "updated_at": "2014-03-03T18:58:10Z" - } - ] - } - }, - "responses": { - "not_found": { - "description": "Resource Not Found", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - }, - "validation_failed_simple": { - "description": "Validation Failed", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/validation-error-simple" } - } - } - }, - "preview_header_missing": { - "description": "Preview Header Missing", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": ["message", "documentation_url"], - "properties": { - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - } - } - } - }, - "forbidden": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - }, - "requires_authentication": { - "description": "Requires Authentication", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - }, - "validation_failed": { - "description": "Validation Failed", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/validation-error" } - } - } - }, - "not_modified": { "description": "Not Modified" }, - "gone": { - "description": "Gone", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - }, - "service_unavailable": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - } - } - } - }, - "forbidden_gist": { - "description": "Forbidden Gist", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "block": { - "type": "object", - "properties": { - "reason": { "type": "string" }, - "created_at": { "type": "string" }, - "html_url": { "type": "string", "nullable": true } - } - }, - "message": { "type": "string" }, - "documentation_url": { "type": "string" } - } - } - } - } - }, - "moved_permanently": { "description": "Moved Permanently" }, - "conflict": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - }, - "internal_error": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - } - } - }, - "bad_request": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/basic-error" } - }, - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - } - } - }, - "found": { "description": "Found" }, - "scim_not_found": { - "description": "Resource Not Found", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - }, - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - } - } - }, - "scim_forbidden": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - }, - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - } - } - }, - "scim_bad_request": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - }, - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - } - } - }, - "scim_internal_error": { - "description": "Internal Error", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - }, - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - } - } - }, - "scim_conflict": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - }, - "application/scim+json": { - "schema": { "$ref": "#/components/schemas/scim-error" } - } - } - } - }, - "parameters": { - "per_page": { - "name": "per_page", - "description": "Results per page (max 100)", - "in": "query", - "schema": { "type": "integer", "default": 30 } - }, - "page": { - "name": "page", - "description": "Page number of the results to fetch.", - "in": "query", - "schema": { "type": "integer", "default": 1 } - }, - "since": { - "name": "since", - "description": "Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - "installation_id": { - "name": "installation_id", - "description": "installation_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "grant_id": { - "name": "grant_id", - "description": "grant_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "client-id": { - "name": "client_id", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "access-token": { - "name": "access_token", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "app_slug": { - "name": "app_slug", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "authorization_id": { - "name": "authorization_id", - "description": "authorization_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "enterprise": { - "name": "enterprise", - "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "org_id": { - "name": "org_id", - "description": "Unique identifier of an organization.", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "runner_group_id": { - "name": "runner_group_id", - "description": "Unique identifier of the self-hosted runner group.", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "runner_id": { - "name": "runner_id", - "description": "Unique identifier of the self-hosted runner.", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "gist_id": { - "name": "gist_id", - "description": "gist_id parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "comment_id": { - "name": "comment_id", - "description": "comment_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "labels": { - "name": "labels", - "description": "A list of comma separated label names. Example: `bug,ui,@high`", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - "direction": { - "name": "direction", - "description": "One of `asc` (ascending) or `desc` (descending).", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["asc", "desc"], - "default": "desc" - } - }, - "account_id": { - "name": "account_id", - "description": "account_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "plan_id": { - "name": "plan_id", - "description": "plan_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "sort": { - "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["created", "updated"], - "default": "created" - } - }, - "owner": { - "name": "owner", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "repo": { - "name": "repo", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "all": { - "name": "all", - "description": "If `true`, show notifications marked as read.", - "in": "query", - "required": false, - "schema": { "type": "boolean", "default": false } - }, - "participating": { - "name": "participating", - "description": "If `true`, only shows notifications in which the user is directly participating or mentioned.", - "in": "query", - "required": false, - "schema": { "type": "boolean", "default": false } - }, - "before": { - "name": "before", - "description": "Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - "thread_id": { - "name": "thread_id", - "description": "thread_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "since-org": { - "name": "since", - "description": "An organization ID. Only return organizations with an ID greater than this ID.", - "in": "query", - "required": false, - "schema": { "type": "integer" } - }, - "org": { - "name": "org", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "repository_id": { - "name": "repository_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "secret_name": { - "name": "secret_name", - "description": "secret_name parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "username": { - "name": "username", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "hook-id": { - "name": "hook_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "invitation_id": { - "name": "invitation_id", - "description": "invitation_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "migration_id": { - "name": "migration_id", - "description": "migration_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "repo_name": { - "name": "repo_name", - "description": "repo_name parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "team_slug": { - "name": "team_slug", - "description": "team_slug parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "discussion-number": { - "name": "discussion_number", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "comment-number": { - "name": "comment_number", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "reaction-id": { - "name": "reaction_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "project-id": { - "name": "project_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "card_id": { - "name": "card_id", - "description": "card_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "column_id": { - "name": "column_id", - "description": "column_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "artifact_id": { - "name": "artifact_id", - "description": "artifact_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "job_id": { - "name": "job_id", - "description": "job_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "actor": { - "name": "actor", - "description": "Returns someone's workflow runs. Use the login for the user who created the `push` associated with the check suite or workflow run.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - "workflow-run-branch": { - "name": "branch", - "description": "Returns workflow runs associated with a branch. Use the name of the branch of the `push`.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - "event": { - "name": "event", - "description": "Returns workflow run triggered by the event you specify. For example, `push`, `pull_request` or `issue`. For more information, see \"[Events that trigger workflows](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows).\"", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - "workflow-run-status": { - "name": "status", - "description": "Returns workflow runs associated with the check run `status` or `conclusion` you specify. For example, a conclusion can be `success` or a status can be `completed`. For more information, see the `status` and `conclusion` options available in \"[Create a check run](https://docs.github.com/rest/reference/checks#create-a-check-run).\"", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["completed", "status", "conclusion"] - } - }, - "run-id": { - "name": "run_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "workflow-id": { - "name": "workflow_id", - "in": "path", - "description": "The ID of the workflow. You can also pass the workflow file name as a string.", - "required": true, - "schema": { "oneOf": [{ "type": "integer" }, { "type": "string" }] } - }, - "branch": { - "name": "branch", - "description": "branch+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "check_run_id": { - "name": "check_run_id", - "description": "check_run_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "check_suite_id": { - "name": "check_suite_id", - "description": "check_suite_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "check_name": { - "name": "check_name", - "description": "Returns check runs with the specified `name`.", - "in": "query", - "required": false, - "schema": { "type": "string" } - }, - "status": { - "name": "status", - "description": "Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["queued", "in_progress", "completed"] - } - }, - "alert_number": { - "name": "alert_number", - "in": "path", - "description": "The security alert number, found at the end of the security alert's URL.", - "required": true, - "schema": { "$ref": "#/components/schemas/alert-number" } - }, - "commit_sha": { - "name": "commit_sha", - "description": "commit_sha+ parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "deployment_id": { - "name": "deployment_id", - "description": "deployment_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "since-user": { - "name": "since", - "description": "A user ID. Only return users with an ID greater than this ID.", - "in": "query", - "required": false, - "schema": { "type": "integer" } - }, - "issue_number": { - "name": "issue_number", - "description": "issue_number parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "key_id": { - "name": "key_id", - "description": "key_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "milestone_number": { - "name": "milestone_number", - "description": "milestone_number parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "pull-number": { - "name": "pull_number", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "review_id": { - "name": "review_id", - "description": "review_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "asset_id": { - "name": "asset_id", - "description": "asset_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "release_id": { - "name": "release_id", - "description": "release_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "per": { - "name": "per", - "description": "Must be one of: `day`, `week`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["day", "week"], - "default": "day" - } - }, - "since-repo": { - "name": "since", - "description": "A repository ID. Only return repositories with an ID greater than this ID.", - "in": "query", - "required": false, - "schema": { "type": "integer" } - }, - "start_index": { - "name": "startIndex", - "description": "Used for pagination: the index of the first result to return.", - "in": "query", - "required": false, - "schema": { "type": "integer" } - }, - "count": { - "name": "count", - "description": "Used for pagination: the number of results to return.", - "in": "query", - "required": false, - "schema": { "type": "integer" } - }, - "scim_group_id": { - "name": "scim_group_id", - "description": "Identifier generated by the GitHub SCIM endpoint.", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "scim_user_id": { - "name": "scim_user_id", - "description": "scim_user_id parameter", - "in": "path", - "required": true, - "schema": { "type": "string" } - }, - "order": { - "name": "order", - "description": "Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.", - "in": "query", - "required": false, - "schema": { - "type": "string", - "enum": ["desc", "asc"], - "default": "desc" - } - }, - "team-id": { - "name": "team_id", - "in": "path", - "required": true, - "schema": { "type": "integer" } - }, - "gpg_key_id": { - "name": "gpg_key_id", - "description": "gpg_key_id parameter", - "in": "path", - "required": true, - "schema": { "type": "integer" } - } - }, - "headers": { - "link": { - "example": "; rel=\"next\", ; rel=\"last\"", - "schema": { "type": "string" } - }, - "content-type": { - "example": "text/html", - "schema": { "type": "string" } - }, - "x-common-marker-version": { - "example": "0.17.4", - "schema": { "type": "string" } - }, - "x-rate-limit-limit": { - "example": "5000", - "schema": { "type": "integer" } - }, - "x-rate-limit-remaining": { - "example": "4999", - "schema": { "type": "integer" } - }, - "x-rate-limit-reset": { - "example": "1590701888", - "schema": { "type": "integer", "format": "timestamp" } - }, - "location": { - "example": "https://pipelines.actions.githubusercontent.com/OhgS4QRKqmgx7bKC27GKU83jnQjyeqG8oIMTge8eqtheppcmw8/_apis/pipelines/1/runs/176/signedlogcontent?urlExpires=2020-01-24T18%3A10%3A31.5729946Z&urlSigningMethod=HMACV1&urlSignature=agG73JakPYkHrh06seAkvmH7rBR4Ji4c2%2B6a2ejYh3E%3D", - "schema": { "type": "string" } - } - } - } -} diff --git a/node_modules/@octokit/openapi-types/generated/types.ts b/node_modules/@octokit/openapi-types/generated/types.ts deleted file mode 100644 index b96985193..000000000 --- a/node_modules/@octokit/openapi-types/generated/types.ts +++ /dev/null @@ -1,27901 +0,0 @@ -/** - * This file was auto-generated by openapi-typescript. - * Do not make direct changes to the file. - */ - -export interface paths { - "/": { - get: operations["meta/root"]; - }; - "/app": { - get: operations["apps/get-authenticated"]; - }; - "/app-manifests/{code}/conversions": { - post: operations["apps/create-from-manifest"]; - }; - "/app/hook/config": { - get: operations["apps/get-webhook-config-for-app"]; - patch: operations["apps/update-webhook-config-for-app"]; - }; - "/app/installations": { - get: operations["apps/list-installations"]; - }; - "/app/installations/{installation_id}": { - get: operations["apps/get-installation"]; - delete: operations["apps/delete-installation"]; - }; - "/app/installations/{installation_id}/access_tokens": { - post: operations["apps/create-installation-access-token"]; - }; - "/app/installations/{installation_id}/suspended": { - put: operations["apps/suspend-installation"]; - delete: operations["apps/unsuspend-installation"]; - }; - "/applications/grants": { - get: operations["oauth-authorizations/list-grants"]; - }; - "/applications/grants/{grant_id}": { - get: operations["oauth-authorizations/get-grant"]; - delete: operations["oauth-authorizations/delete-grant"]; - }; - "/applications/{client_id}/grant": { - delete: operations["apps/delete-authorization"]; - }; - "/applications/{client_id}/grants/{access_token}": { - delete: operations["apps/revoke-grant-for-application"]; - }; - "/applications/{client_id}/token": { - post: operations["apps/check-token"]; - patch: operations["apps/reset-token"]; - delete: operations["apps/delete-token"]; - }; - "/applications/{client_id}/tokens/{access_token}": { - get: operations["apps/check-authorization"]; - post: operations["apps/reset-authorization"]; - delete: operations["apps/revoke-authorization-for-application"]; - }; - "/apps/{app_slug}": { - get: operations["apps/get-by-slug"]; - }; - "/authorizations": { - get: operations["oauth-authorizations/list-authorizations"]; - post: operations["oauth-authorizations/create-authorization"]; - }; - "/authorizations/clients/{client_id}": { - put: operations["oauth-authorizations/get-or-create-authorization-for-app"]; - }; - "/authorizations/clients/{client_id}/{fingerprint}": { - put: operations["oauth-authorizations/get-or-create-authorization-for-app-and-fingerprint"]; - }; - "/authorizations/{authorization_id}": { - get: operations["oauth-authorizations/get-authorization"]; - patch: operations["oauth-authorizations/update-authorization"]; - delete: operations["oauth-authorizations/delete-authorization"]; - }; - "/codes_of_conduct": { - get: operations["codes-of-conduct/get-all-codes-of-conduct"]; - }; - "/codes_of_conduct/{key}": { - get: operations["codes-of-conduct/get-conduct-code"]; - }; - "/content_references/{content_reference_id}/attachments": { - post: operations["apps/create-content-attachment"]; - }; - "/emojis": { - get: operations["emojis/get"]; - }; - "/enterprises/{enterprise}/actions/permissions": { - get: operations["enterprise-admin/get-github-actions-permissions-enterprise"]; - put: operations["enterprise-admin/set-github-actions-permissions-enterprise"]; - }; - "/enterprises/{enterprise}/actions/permissions/organizations": { - get: operations["enterprise-admin/list-selected-organizations-enabled-github-actions-enterprise"]; - put: operations["enterprise-admin/set-selected-organizations-enabled-github-actions-enterprise"]; - }; - "/enterprises/{enterprise}/actions/permissions/organizations/{org_id}": { - put: operations["enterprise-admin/enable-selected-organization-github-actions-enterprise"]; - delete: operations["enterprise-admin/disable-selected-organization-github-actions-enterprise"]; - }; - "/enterprises/{enterprise}/actions/permissions/selected-actions": { - get: operations["enterprise-admin/get-allowed-actions-enterprise"]; - put: operations["enterprise-admin/set-allowed-actions-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runner-groups": { - get: operations["enterprise-admin/list-self-hosted-runner-groups-for-enterprise"]; - post: operations["enterprise-admin/create-self-hosted-runner-group-for-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": { - get: operations["enterprise-admin/get-self-hosted-runner-group-for-enterprise"]; - patch: operations["enterprise-admin/update-self-hosted-runner-group-for-enterprise"]; - delete: operations["enterprise-admin/delete-self-hosted-runner-group-from-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": { - get: operations["enterprise-admin/list-org-access-to-self-hosted-runner-group-in-enterprise"]; - put: operations["enterprise-admin/set-org-access-to-self-hosted-runner-group-in-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}": { - put: operations["enterprise-admin/add-org-access-to-self-hosted-runner-group-in-enterprise"]; - delete: operations["enterprise-admin/remove-org-access-to-self-hosted-runner-group-in-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": { - get: operations["enterprise-admin/list-self-hosted-runners-in-group-for-enterprise"]; - put: operations["enterprise-admin/set-self-hosted-runners-in-group-for-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": { - put: operations["enterprise-admin/add-self-hosted-runner-to-group-for-enterprise"]; - delete: operations["enterprise-admin/remove-self-hosted-runner-from-group-for-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runners": { - get: operations["enterprise-admin/list-self-hosted-runners-for-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runners/downloads": { - get: operations["enterprise-admin/list-runner-applications-for-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runners/registration-token": { - post: operations["enterprise-admin/create-registration-token-for-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runners/remove-token": { - post: operations["enterprise-admin/create-remove-token-for-enterprise"]; - }; - "/enterprises/{enterprise}/actions/runners/{runner_id}": { - get: operations["enterprise-admin/get-self-hosted-runner-for-enterprise"]; - delete: operations["enterprise-admin/delete-self-hosted-runner-from-enterprise"]; - }; - "/enterprises/{enterprise}/settings/billing/actions": { - get: operations["billing/get-github-actions-billing-ghe"]; - }; - "/enterprises/{enterprise}/settings/billing/packages": { - get: operations["billing/get-github-packages-billing-ghe"]; - }; - "/enterprises/{enterprise}/settings/billing/shared-storage": { - get: operations["billing/get-shared-storage-billing-ghe"]; - }; - "/events": { - get: operations["activity/list-public-events"]; - }; - "/feeds": { - get: operations["activity/get-feeds"]; - }; - "/gists": { - get: operations["gists/list"]; - post: operations["gists/create"]; - }; - "/gists/public": { - get: operations["gists/list-public"]; - }; - "/gists/starred": { - get: operations["gists/list-starred"]; - }; - "/gists/{gist_id}": { - get: operations["gists/get"]; - patch: operations["gists/update"]; - delete: operations["gists/delete"]; - }; - "/gists/{gist_id}/comments": { - get: operations["gists/list-comments"]; - post: operations["gists/create-comment"]; - }; - "/gists/{gist_id}/comments/{comment_id}": { - get: operations["gists/get-comment"]; - patch: operations["gists/update-comment"]; - delete: operations["gists/delete-comment"]; - }; - "/gists/{gist_id}/commits": { - get: operations["gists/list-commits"]; - }; - "/gists/{gist_id}/forks": { - get: operations["gists/list-forks"]; - post: operations["gists/fork"]; - }; - "/gists/{gist_id}/star": { - get: operations["gists/check-is-starred"]; - put: operations["gists/star"]; - delete: operations["gists/unstar"]; - }; - "/gists/{gist_id}/{sha}": { - get: operations["gists/get-revision"]; - }; - "/gitignore/templates": { - get: operations["gitignore/get-all-templates"]; - }; - "/gitignore/templates/{name}": { - get: operations["gitignore/get-template"]; - }; - "/installation/repositories": { - get: operations["apps/list-repos-accessible-to-installation"]; - }; - "/installation/token": { - delete: operations["apps/revoke-installation-access-token"]; - }; - "/issues": { - get: operations["issues/list"]; - }; - "/licenses": { - get: operations["licenses/get-all-commonly-used"]; - }; - "/licenses/{license}": { - get: operations["licenses/get"]; - }; - "/markdown": { - post: operations["markdown/render"]; - }; - "/markdown/raw": { - post: operations["markdown/render-raw"]; - }; - "/marketplace_listing/accounts/{account_id}": { - get: operations["apps/get-subscription-plan-for-account"]; - }; - "/marketplace_listing/plans": { - get: operations["apps/list-plans"]; - }; - "/marketplace_listing/plans/{plan_id}/accounts": { - get: operations["apps/list-accounts-for-plan"]; - }; - "/marketplace_listing/stubbed/accounts/{account_id}": { - get: operations["apps/get-subscription-plan-for-account-stubbed"]; - }; - "/marketplace_listing/stubbed/plans": { - get: operations["apps/list-plans-stubbed"]; - }; - "/marketplace_listing/stubbed/plans/{plan_id}/accounts": { - get: operations["apps/list-accounts-for-plan-stubbed"]; - }; - "/meta": { - get: operations["meta/get"]; - }; - "/networks/{owner}/{repo}/events": { - get: operations["activity/list-public-events-for-repo-network"]; - }; - "/notifications": { - get: operations["activity/list-notifications-for-authenticated-user"]; - put: operations["activity/mark-notifications-as-read"]; - }; - "/notifications/threads/{thread_id}": { - get: operations["activity/get-thread"]; - patch: operations["activity/mark-thread-as-read"]; - }; - "/notifications/threads/{thread_id}/subscription": { - get: operations["activity/get-thread-subscription-for-authenticated-user"]; - put: operations["activity/set-thread-subscription"]; - delete: operations["activity/delete-thread-subscription"]; - }; - "/octocat": { - get: operations["meta/get-octocat"]; - }; - "/organizations": { - get: operations["orgs/list"]; - }; - "/orgs/{org}": { - get: operations["orgs/get"]; - patch: operations["orgs/update"]; - }; - "/orgs/{org}/actions/permissions": { - get: operations["actions/get-github-actions-permissions-organization"]; - put: operations["actions/set-github-actions-permissions-organization"]; - }; - "/orgs/{org}/actions/permissions/repositories": { - get: operations["actions/list-selected-repositories-enabled-github-actions-organization"]; - put: operations["actions/set-selected-repositories-enabled-github-actions-organization"]; - }; - "/orgs/{org}/actions/permissions/repositories/{repository_id}": { - put: operations["actions/enable-selected-repository-github-actions-organization"]; - delete: operations["actions/disable-selected-repository-github-actions-organization"]; - }; - "/orgs/{org}/actions/permissions/selected-actions": { - get: operations["actions/get-allowed-actions-organization"]; - put: operations["actions/set-allowed-actions-organization"]; - }; - "/orgs/{org}/actions/runner-groups": { - get: operations["actions/list-self-hosted-runner-groups-for-org"]; - post: operations["actions/create-self-hosted-runner-group-for-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}": { - get: operations["actions/get-self-hosted-runner-group-for-org"]; - patch: operations["actions/update-self-hosted-runner-group-for-org"]; - delete: operations["actions/delete-self-hosted-runner-group-from-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": { - get: operations["actions/list-repo-access-to-self-hosted-runner-group-in-org"]; - put: operations["actions/set-repo-access-to-self-hosted-runner-group-in-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": { - put: operations["actions/add-repo-access-to-self-hosted-runner-group-in-org"]; - delete: operations["actions/remove-repo-access-to-self-hosted-runner-group-in-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners": { - get: operations["actions/list-self-hosted-runners-in-group-for-org"]; - put: operations["actions/set-self-hosted-runners-in-group-for-org"]; - }; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": { - put: operations["actions/add-self-hosted-runner-to-group-for-org"]; - delete: operations["actions/remove-self-hosted-runner-from-group-for-org"]; - }; - "/orgs/{org}/actions/runners": { - get: operations["actions/list-self-hosted-runners-for-org"]; - }; - "/orgs/{org}/actions/runners/downloads": { - get: operations["actions/list-runner-applications-for-org"]; - }; - "/orgs/{org}/actions/runners/registration-token": { - post: operations["actions/create-registration-token-for-org"]; - }; - "/orgs/{org}/actions/runners/remove-token": { - post: operations["actions/create-remove-token-for-org"]; - }; - "/orgs/{org}/actions/runners/{runner_id}": { - get: operations["actions/get-self-hosted-runner-for-org"]; - delete: operations["actions/delete-self-hosted-runner-from-org"]; - }; - "/orgs/{org}/actions/secrets": { - get: operations["actions/list-org-secrets"]; - }; - "/orgs/{org}/actions/secrets/public-key": { - get: operations["actions/get-org-public-key"]; - }; - "/orgs/{org}/actions/secrets/{secret_name}": { - get: operations["actions/get-org-secret"]; - put: operations["actions/create-or-update-org-secret"]; - delete: operations["actions/delete-org-secret"]; - }; - "/orgs/{org}/actions/secrets/{secret_name}/repositories": { - get: operations["actions/list-selected-repos-for-org-secret"]; - put: operations["actions/set-selected-repos-for-org-secret"]; - }; - "/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": { - put: operations["actions/add-selected-repo-to-org-secret"]; - delete: operations["actions/remove-selected-repo-from-org-secret"]; - }; - "/orgs/{org}/blocks": { - get: operations["orgs/list-blocked-users"]; - }; - "/orgs/{org}/blocks/{username}": { - get: operations["orgs/check-blocked-user"]; - put: operations["orgs/block-user"]; - delete: operations["orgs/unblock-user"]; - }; - "/orgs/{org}/credential-authorizations": { - get: operations["orgs/list-saml-sso-authorizations"]; - }; - "/orgs/{org}/credential-authorizations/{credential_id}": { - delete: operations["orgs/remove-saml-sso-authorization"]; - }; - "/orgs/{org}/events": { - get: operations["activity/list-public-org-events"]; - }; - "/orgs/{org}/hooks": { - get: operations["orgs/list-webhooks"]; - post: operations["orgs/create-webhook"]; - }; - "/orgs/{org}/hooks/{hook_id}": { - get: operations["orgs/get-webhook"]; - patch: operations["orgs/update-webhook"]; - delete: operations["orgs/delete-webhook"]; - }; - "/orgs/{org}/hooks/{hook_id}/config": { - get: operations["orgs/get-webhook-config-for-org"]; - patch: operations["orgs/update-webhook-config-for-org"]; - }; - "/orgs/{org}/hooks/{hook_id}/pings": { - post: operations["orgs/ping-webhook"]; - }; - "/orgs/{org}/installation": { - get: operations["apps/get-org-installation"]; - }; - "/orgs/{org}/installations": { - get: operations["orgs/list-app-installations"]; - }; - "/orgs/{org}/interaction-limits": { - get: operations["interactions/get-restrictions-for-org"]; - put: operations["interactions/set-restrictions-for-org"]; - delete: operations["interactions/remove-restrictions-for-org"]; - }; - "/orgs/{org}/invitations": { - get: operations["orgs/list-pending-invitations"]; - post: operations["orgs/create-invitation"]; - }; - "/orgs/{org}/invitations/{invitation_id}/teams": { - get: operations["orgs/list-invitation-teams"]; - }; - "/orgs/{org}/issues": { - get: operations["issues/list-for-org"]; - }; - "/orgs/{org}/members": { - get: operations["orgs/list-members"]; - }; - "/orgs/{org}/members/{username}": { - get: operations["orgs/check-membership-for-user"]; - delete: operations["orgs/remove-member"]; - }; - "/orgs/{org}/memberships/{username}": { - get: operations["orgs/get-membership-for-user"]; - put: operations["orgs/set-membership-for-user"]; - delete: operations["orgs/remove-membership-for-user"]; - }; - "/orgs/{org}/migrations": { - get: operations["migrations/list-for-org"]; - post: operations["migrations/start-for-org"]; - }; - "/orgs/{org}/migrations/{migration_id}": { - get: operations["migrations/get-status-for-org"]; - }; - "/orgs/{org}/migrations/{migration_id}/archive": { - get: operations["migrations/download-archive-for-org"]; - delete: operations["migrations/delete-archive-for-org"]; - }; - "/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": { - delete: operations["migrations/unlock-repo-for-org"]; - }; - "/orgs/{org}/migrations/{migration_id}/repositories": { - get: operations["migrations/list-repos-for-org"]; - }; - "/orgs/{org}/outside_collaborators": { - get: operations["orgs/list-outside-collaborators"]; - }; - "/orgs/{org}/outside_collaborators/{username}": { - put: operations["orgs/convert-member-to-outside-collaborator"]; - delete: operations["orgs/remove-outside-collaborator"]; - }; - "/orgs/{org}/projects": { - get: operations["projects/list-for-org"]; - post: operations["projects/create-for-org"]; - }; - "/orgs/{org}/public_members": { - get: operations["orgs/list-public-members"]; - }; - "/orgs/{org}/public_members/{username}": { - get: operations["orgs/check-public-membership-for-user"]; - put: operations["orgs/set-public-membership-for-authenticated-user"]; - delete: operations["orgs/remove-public-membership-for-authenticated-user"]; - }; - "/orgs/{org}/repos": { - get: operations["repos/list-for-org"]; - post: operations["repos/create-in-org"]; - }; - "/orgs/{org}/settings/billing/actions": { - get: operations["billing/get-github-actions-billing-org"]; - }; - "/orgs/{org}/settings/billing/packages": { - get: operations["billing/get-github-packages-billing-org"]; - }; - "/orgs/{org}/settings/billing/shared-storage": { - get: operations["billing/get-shared-storage-billing-org"]; - }; - "/orgs/{org}/team-sync/groups": { - get: operations["teams/list-idp-groups-for-org"]; - }; - "/orgs/{org}/teams": { - get: operations["teams/list"]; - post: operations["teams/create"]; - }; - "/orgs/{org}/teams/{team_slug}": { - get: operations["teams/get-by-name"]; - patch: operations["teams/update-in-org"]; - delete: operations["teams/delete-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions": { - get: operations["teams/list-discussions-in-org"]; - post: operations["teams/create-discussion-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": { - get: operations["teams/get-discussion-in-org"]; - patch: operations["teams/update-discussion-in-org"]; - delete: operations["teams/delete-discussion-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": { - get: operations["teams/list-discussion-comments-in-org"]; - post: operations["teams/create-discussion-comment-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": { - get: operations["teams/get-discussion-comment-in-org"]; - patch: operations["teams/update-discussion-comment-in-org"]; - delete: operations["teams/delete-discussion-comment-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - get: operations["reactions/list-for-team-discussion-comment-in-org"]; - post: operations["reactions/create-for-team-discussion-comment-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": { - delete: operations["reactions/delete-for-team-discussion-comment"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": { - get: operations["reactions/list-for-team-discussion-in-org"]; - post: operations["reactions/create-for-team-discussion-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": { - delete: operations["reactions/delete-for-team-discussion"]; - }; - "/orgs/{org}/teams/{team_slug}/invitations": { - get: operations["teams/list-pending-invitations-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/members": { - get: operations["teams/list-members-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/memberships/{username}": { - get: operations["teams/get-membership-for-user-in-org"]; - put: operations["teams/add-or-update-membership-for-user-in-org"]; - delete: operations["teams/remove-membership-for-user-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/projects": { - get: operations["teams/list-projects-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/projects/{project_id}": { - get: operations["teams/check-permissions-for-project-in-org"]; - put: operations["teams/add-or-update-project-permissions-in-org"]; - delete: operations["teams/remove-project-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/repos": { - get: operations["teams/list-repos-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": { - get: operations["teams/check-permissions-for-repo-in-org"]; - put: operations["teams/add-or-update-repo-permissions-in-org"]; - delete: operations["teams/remove-repo-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/team-sync/group-mappings": { - get: operations["teams/list-idp-groups-in-org"]; - patch: operations["teams/create-or-update-idp-group-connections-in-org"]; - }; - "/orgs/{org}/teams/{team_slug}/teams": { - get: operations["teams/list-child-in-org"]; - }; - "/projects/columns/cards/{card_id}": { - get: operations["projects/get-card"]; - patch: operations["projects/update-card"]; - delete: operations["projects/delete-card"]; - }; - "/projects/columns/cards/{card_id}/moves": { - post: operations["projects/move-card"]; - }; - "/projects/columns/{column_id}": { - get: operations["projects/get-column"]; - patch: operations["projects/update-column"]; - delete: operations["projects/delete-column"]; - }; - "/projects/columns/{column_id}/cards": { - get: operations["projects/list-cards"]; - post: operations["projects/create-card"]; - }; - "/projects/columns/{column_id}/moves": { - post: operations["projects/move-column"]; - }; - "/projects/{project_id}": { - get: operations["projects/get"]; - patch: operations["projects/update"]; - delete: operations["projects/delete"]; - }; - "/projects/{project_id}/collaborators": { - get: operations["projects/list-collaborators"]; - }; - "/projects/{project_id}/collaborators/{username}": { - put: operations["projects/add-collaborator"]; - delete: operations["projects/remove-collaborator"]; - }; - "/projects/{project_id}/collaborators/{username}/permission": { - get: operations["projects/get-permission-for-user"]; - }; - "/projects/{project_id}/columns": { - get: operations["projects/list-columns"]; - post: operations["projects/create-column"]; - }; - "/rate_limit": { - get: operations["rate-limit/get"]; - }; - "/reactions/{reaction_id}": { - delete: operations["reactions/delete-legacy"]; - }; - "/repos/{owner}/{repo}": { - get: operations["repos/get"]; - patch: operations["repos/update"]; - delete: operations["repos/delete"]; - }; - "/repos/{owner}/{repo}/actions/artifacts": { - get: operations["actions/list-artifacts-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}": { - get: operations["actions/get-artifact"]; - delete: operations["actions/delete-artifact"]; - }; - "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": { - get: operations["actions/download-artifact"]; - }; - "/repos/{owner}/{repo}/actions/jobs/{job_id}": { - get: operations["actions/get-job-for-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/jobs/{job_id}/logs": { - get: operations["actions/download-job-logs-for-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/permissions": { - get: operations["actions/get-github-actions-permissions-repository"]; - put: operations["actions/set-github-actions-permissions-repository"]; - }; - "/repos/{owner}/{repo}/actions/permissions/selected-actions": { - get: operations["actions/get-allowed-actions-repository"]; - put: operations["actions/set-allowed-actions-repository"]; - }; - "/repos/{owner}/{repo}/actions/runners": { - get: operations["actions/list-self-hosted-runners-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/downloads": { - get: operations["actions/list-runner-applications-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/registration-token": { - post: operations["actions/create-registration-token-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/remove-token": { - post: operations["actions/create-remove-token-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runners/{runner_id}": { - get: operations["actions/get-self-hosted-runner-for-repo"]; - delete: operations["actions/delete-self-hosted-runner-from-repo"]; - }; - "/repos/{owner}/{repo}/actions/runs": { - get: operations["actions/list-workflow-runs-for-repo"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}": { - get: operations["actions/get-workflow-run"]; - delete: operations["actions/delete-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": { - get: operations["actions/list-workflow-run-artifacts"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/cancel": { - post: operations["actions/cancel-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/jobs": { - get: operations["actions/list-jobs-for-workflow-run"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/logs": { - get: operations["actions/download-workflow-run-logs"]; - delete: operations["actions/delete-workflow-run-logs"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/rerun": { - post: operations["actions/re-run-workflow"]; - }; - "/repos/{owner}/{repo}/actions/runs/{run_id}/timing": { - get: operations["actions/get-workflow-run-usage"]; - }; - "/repos/{owner}/{repo}/actions/secrets": { - get: operations["actions/list-repo-secrets"]; - }; - "/repos/{owner}/{repo}/actions/secrets/public-key": { - get: operations["actions/get-repo-public-key"]; - }; - "/repos/{owner}/{repo}/actions/secrets/{secret_name}": { - get: operations["actions/get-repo-secret"]; - put: operations["actions/create-or-update-repo-secret"]; - delete: operations["actions/delete-repo-secret"]; - }; - "/repos/{owner}/{repo}/actions/workflows": { - get: operations["actions/list-repo-workflows"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}": { - get: operations["actions/get-workflow"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": { - put: operations["actions/disable-workflow"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": { - post: operations["actions/create-workflow-dispatch"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": { - put: operations["actions/enable-workflow"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": { - get: operations["actions/list-workflow-runs"]; - }; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": { - get: operations["actions/get-workflow-usage"]; - }; - "/repos/{owner}/{repo}/assignees": { - get: operations["issues/list-assignees"]; - }; - "/repos/{owner}/{repo}/assignees/{assignee}": { - get: operations["issues/check-user-can-be-assigned"]; - }; - "/repos/{owner}/{repo}/automated-security-fixes": { - put: operations["repos/enable-automated-security-fixes"]; - delete: operations["repos/disable-automated-security-fixes"]; - }; - "/repos/{owner}/{repo}/branches": { - get: operations["repos/list-branches"]; - }; - "/repos/{owner}/{repo}/branches/{branch}": { - get: operations["repos/get-branch"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection": { - get: operations["repos/get-branch-protection"]; - put: operations["repos/update-branch-protection"]; - delete: operations["repos/delete-branch-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": { - get: operations["repos/get-admin-branch-protection"]; - post: operations["repos/set-admin-branch-protection"]; - delete: operations["repos/delete-admin-branch-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": { - get: operations["repos/get-pull-request-review-protection"]; - patch: operations["repos/update-pull-request-review-protection"]; - delete: operations["repos/delete-pull-request-review-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": { - get: operations["repos/get-commit-signature-protection"]; - post: operations["repos/create-commit-signature-protection"]; - delete: operations["repos/delete-commit-signature-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": { - get: operations["repos/get-status-checks-protection"]; - patch: operations["repos/update-status-check-protection"]; - delete: operations["repos/remove-status-check-protection"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": { - get: operations["repos/get-all-status-check-contexts"]; - post: operations["repos/add-status-check-contexts"]; - put: operations["repos/set-status-check-contexts"]; - delete: operations["repos/remove-status-check-contexts"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions": { - get: operations["repos/get-access-restrictions"]; - delete: operations["repos/delete-access-restrictions"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": { - get: operations["repos/get-apps-with-access-to-protected-branch"]; - post: operations["repos/add-app-access-restrictions"]; - put: operations["repos/set-app-access-restrictions"]; - delete: operations["repos/remove-app-access-restrictions"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": { - get: operations["repos/get-teams-with-access-to-protected-branch"]; - post: operations["repos/add-team-access-restrictions"]; - put: operations["repos/set-team-access-restrictions"]; - delete: operations["repos/remove-team-access-restrictions"]; - }; - "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": { - get: operations["repos/get-users-with-access-to-protected-branch"]; - post: operations["repos/add-user-access-restrictions"]; - put: operations["repos/set-user-access-restrictions"]; - delete: operations["repos/remove-user-access-restrictions"]; - }; - "/repos/{owner}/{repo}/check-runs": { - post: operations["checks/create"]; - }; - "/repos/{owner}/{repo}/check-runs/{check_run_id}": { - get: operations["checks/get"]; - patch: operations["checks/update"]; - }; - "/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": { - get: operations["checks/list-annotations"]; - }; - "/repos/{owner}/{repo}/check-suites": { - post: operations["checks/create-suite"]; - }; - "/repos/{owner}/{repo}/check-suites/preferences": { - patch: operations["checks/set-suites-preferences"]; - }; - "/repos/{owner}/{repo}/check-suites/{check_suite_id}": { - get: operations["checks/get-suite"]; - }; - "/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": { - get: operations["checks/list-for-suite"]; - }; - "/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": { - post: operations["checks/rerequest-suite"]; - }; - "/repos/{owner}/{repo}/code-scanning/alerts": { - get: operations["code-scanning/list-alerts-for-repo"]; - }; - "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": { - get: operations["code-scanning/get-alert"]; - patch: operations["code-scanning/update-alert"]; - }; - "/repos/{owner}/{repo}/code-scanning/analyses": { - get: operations["code-scanning/list-recent-analyses"]; - }; - "/repos/{owner}/{repo}/code-scanning/sarifs": { - post: operations["code-scanning/upload-sarif"]; - }; - "/repos/{owner}/{repo}/collaborators": { - get: operations["repos/list-collaborators"]; - }; - "/repos/{owner}/{repo}/collaborators/{username}": { - get: operations["repos/check-collaborator"]; - put: operations["repos/add-collaborator"]; - delete: operations["repos/remove-collaborator"]; - }; - "/repos/{owner}/{repo}/collaborators/{username}/permission": { - get: operations["repos/get-collaborator-permission-level"]; - }; - "/repos/{owner}/{repo}/comments": { - get: operations["repos/list-commit-comments-for-repo"]; - }; - "/repos/{owner}/{repo}/comments/{comment_id}": { - get: operations["repos/get-commit-comment"]; - patch: operations["repos/update-commit-comment"]; - delete: operations["repos/delete-commit-comment"]; - }; - "/repos/{owner}/{repo}/comments/{comment_id}/reactions": { - get: operations["reactions/list-for-commit-comment"]; - post: operations["reactions/create-for-commit-comment"]; - }; - "/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": { - delete: operations["reactions/delete-for-commit-comment"]; - }; - "/repos/{owner}/{repo}/commits": { - get: operations["repos/list-commits"]; - }; - "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": { - get: operations["repos/list-branches-for-head-commit"]; - }; - "/repos/{owner}/{repo}/commits/{commit_sha}/comments": { - get: operations["repos/list-comments-for-commit"]; - post: operations["repos/create-commit-comment"]; - }; - "/repos/{owner}/{repo}/commits/{commit_sha}/pulls": { - get: operations["repos/list-pull-requests-associated-with-commit"]; - }; - "/repos/{owner}/{repo}/commits/{ref}": { - get: operations["repos/get-commit"]; - }; - "/repos/{owner}/{repo}/commits/{ref}/check-runs": { - get: operations["checks/list-for-ref"]; - }; - "/repos/{owner}/{repo}/commits/{ref}/check-suites": { - get: operations["checks/list-suites-for-ref"]; - }; - "/repos/{owner}/{repo}/commits/{ref}/status": { - get: operations["repos/get-combined-status-for-ref"]; - }; - "/repos/{owner}/{repo}/commits/{ref}/statuses": { - get: operations["repos/list-commit-statuses-for-ref"]; - }; - "/repos/{owner}/{repo}/community/code_of_conduct": { - get: operations["codes-of-conduct/get-for-repo"]; - }; - "/repos/{owner}/{repo}/community/profile": { - get: operations["repos/get-community-profile-metrics"]; - }; - "/repos/{owner}/{repo}/compare/{base}...{head}": { - get: operations["repos/compare-commits"]; - }; - "/repos/{owner}/{repo}/contents/{path}": { - get: operations["repos/get-content"]; - put: operations["repos/create-or-update-file-contents"]; - delete: operations["repos/delete-file"]; - }; - "/repos/{owner}/{repo}/contributors": { - get: operations["repos/list-contributors"]; - }; - "/repos/{owner}/{repo}/deployments": { - get: operations["repos/list-deployments"]; - post: operations["repos/create-deployment"]; - }; - "/repos/{owner}/{repo}/deployments/{deployment_id}": { - get: operations["repos/get-deployment"]; - delete: operations["repos/delete-deployment"]; - }; - "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses": { - get: operations["repos/list-deployment-statuses"]; - post: operations["repos/create-deployment-status"]; - }; - "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": { - get: operations["repos/get-deployment-status"]; - }; - "/repos/{owner}/{repo}/dispatches": { - post: operations["repos/create-dispatch-event"]; - }; - "/repos/{owner}/{repo}/events": { - get: operations["activity/list-repo-events"]; - }; - "/repos/{owner}/{repo}/forks": { - get: operations["repos/list-forks"]; - post: operations["repos/create-fork"]; - }; - "/repos/{owner}/{repo}/git/blobs": { - post: operations["git/create-blob"]; - }; - "/repos/{owner}/{repo}/git/blobs/{file_sha}": { - get: operations["git/get-blob"]; - }; - "/repos/{owner}/{repo}/git/commits": { - post: operations["git/create-commit"]; - }; - "/repos/{owner}/{repo}/git/commits/{commit_sha}": { - get: operations["git/get-commit"]; - }; - "/repos/{owner}/{repo}/git/matching-refs/{ref}": { - get: operations["git/list-matching-refs"]; - }; - "/repos/{owner}/{repo}/git/ref/{ref}": { - get: operations["git/get-ref"]; - }; - "/repos/{owner}/{repo}/git/refs": { - post: operations["git/create-ref"]; - }; - "/repos/{owner}/{repo}/git/refs/{ref}": { - patch: operations["git/update-ref"]; - delete: operations["git/delete-ref"]; - }; - "/repos/{owner}/{repo}/git/tags": { - post: operations["git/create-tag"]; - }; - "/repos/{owner}/{repo}/git/tags/{tag_sha}": { - get: operations["git/get-tag"]; - }; - "/repos/{owner}/{repo}/git/trees": { - post: operations["git/create-tree"]; - }; - "/repos/{owner}/{repo}/git/trees/{tree_sha}": { - get: operations["git/get-tree"]; - }; - "/repos/{owner}/{repo}/hooks": { - get: operations["repos/list-webhooks"]; - post: operations["repos/create-webhook"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}": { - get: operations["repos/get-webhook"]; - patch: operations["repos/update-webhook"]; - delete: operations["repos/delete-webhook"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}/config": { - get: operations["repos/get-webhook-config-for-repo"]; - patch: operations["repos/update-webhook-config-for-repo"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}/pings": { - post: operations["repos/ping-webhook"]; - }; - "/repos/{owner}/{repo}/hooks/{hook_id}/tests": { - post: operations["repos/test-push-webhook"]; - }; - "/repos/{owner}/{repo}/import": { - get: operations["migrations/get-import-status"]; - put: operations["migrations/start-import"]; - patch: operations["migrations/update-import"]; - delete: operations["migrations/cancel-import"]; - }; - "/repos/{owner}/{repo}/import/authors": { - get: operations["migrations/get-commit-authors"]; - }; - "/repos/{owner}/{repo}/import/authors/{author_id}": { - patch: operations["migrations/map-commit-author"]; - }; - "/repos/{owner}/{repo}/import/large_files": { - get: operations["migrations/get-large-files"]; - }; - "/repos/{owner}/{repo}/import/lfs": { - patch: operations["migrations/set-lfs-preference"]; - }; - "/repos/{owner}/{repo}/installation": { - get: operations["apps/get-repo-installation"]; - }; - "/repos/{owner}/{repo}/interaction-limits": { - get: operations["interactions/get-restrictions-for-repo"]; - put: operations["interactions/set-restrictions-for-repo"]; - delete: operations["interactions/remove-restrictions-for-repo"]; - }; - "/repos/{owner}/{repo}/invitations": { - get: operations["repos/list-invitations"]; - }; - "/repos/{owner}/{repo}/invitations/{invitation_id}": { - patch: operations["repos/update-invitation"]; - delete: operations["repos/delete-invitation"]; - }; - "/repos/{owner}/{repo}/issues": { - get: operations["issues/list-for-repo"]; - post: operations["issues/create"]; - }; - "/repos/{owner}/{repo}/issues/comments": { - get: operations["issues/list-comments-for-repo"]; - }; - "/repos/{owner}/{repo}/issues/comments/{comment_id}": { - get: operations["issues/get-comment"]; - patch: operations["issues/update-comment"]; - delete: operations["issues/delete-comment"]; - }; - "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": { - get: operations["reactions/list-for-issue-comment"]; - post: operations["reactions/create-for-issue-comment"]; - }; - "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": { - delete: operations["reactions/delete-for-issue-comment"]; - }; - "/repos/{owner}/{repo}/issues/events": { - get: operations["issues/list-events-for-repo"]; - }; - "/repos/{owner}/{repo}/issues/events/{event_id}": { - get: operations["issues/get-event"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}": { - get: operations["issues/get"]; - patch: operations["issues/update"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/assignees": { - post: operations["issues/add-assignees"]; - delete: operations["issues/remove-assignees"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/comments": { - get: operations["issues/list-comments"]; - post: operations["issues/create-comment"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/events": { - get: operations["issues/list-events"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/labels": { - get: operations["issues/list-labels-on-issue"]; - post: operations["issues/add-labels"]; - put: operations["issues/set-labels"]; - delete: operations["issues/remove-all-labels"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": { - delete: operations["issues/remove-label"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/lock": { - put: operations["issues/lock"]; - delete: operations["issues/unlock"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/reactions": { - get: operations["reactions/list-for-issue"]; - post: operations["reactions/create-for-issue"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": { - delete: operations["reactions/delete-for-issue"]; - }; - "/repos/{owner}/{repo}/issues/{issue_number}/timeline": { - get: operations["issues/list-events-for-timeline"]; - }; - "/repos/{owner}/{repo}/keys": { - get: operations["repos/list-deploy-keys"]; - post: operations["repos/create-deploy-key"]; - }; - "/repos/{owner}/{repo}/keys/{key_id}": { - get: operations["repos/get-deploy-key"]; - delete: operations["repos/delete-deploy-key"]; - }; - "/repos/{owner}/{repo}/labels": { - get: operations["issues/list-labels-for-repo"]; - post: operations["issues/create-label"]; - }; - "/repos/{owner}/{repo}/labels/{name}": { - get: operations["issues/get-label"]; - patch: operations["issues/update-label"]; - delete: operations["issues/delete-label"]; - }; - "/repos/{owner}/{repo}/languages": { - get: operations["repos/list-languages"]; - }; - "/repos/{owner}/{repo}/license": { - get: operations["licenses/get-for-repo"]; - }; - "/repos/{owner}/{repo}/merges": { - post: operations["repos/merge"]; - }; - "/repos/{owner}/{repo}/milestones": { - get: operations["issues/list-milestones"]; - post: operations["issues/create-milestone"]; - }; - "/repos/{owner}/{repo}/milestones/{milestone_number}": { - get: operations["issues/get-milestone"]; - patch: operations["issues/update-milestone"]; - delete: operations["issues/delete-milestone"]; - }; - "/repos/{owner}/{repo}/milestones/{milestone_number}/labels": { - get: operations["issues/list-labels-for-milestone"]; - }; - "/repos/{owner}/{repo}/notifications": { - get: operations["activity/list-repo-notifications-for-authenticated-user"]; - put: operations["activity/mark-repo-notifications-as-read"]; - }; - "/repos/{owner}/{repo}/pages": { - get: operations["repos/get-pages"]; - post: operations["repos/create-pages-site"]; - put: operations["repos/update-information-about-pages-site"]; - delete: operations["repos/delete-pages-site"]; - }; - "/repos/{owner}/{repo}/pages/builds": { - get: operations["repos/list-pages-builds"]; - post: operations["repos/request-pages-build"]; - }; - "/repos/{owner}/{repo}/pages/builds/latest": { - get: operations["repos/get-latest-pages-build"]; - }; - "/repos/{owner}/{repo}/pages/builds/{build_id}": { - get: operations["repos/get-pages-build"]; - }; - "/repos/{owner}/{repo}/projects": { - get: operations["projects/list-for-repo"]; - post: operations["projects/create-for-repo"]; - }; - "/repos/{owner}/{repo}/pulls": { - get: operations["pulls/list"]; - post: operations["pulls/create"]; - }; - "/repos/{owner}/{repo}/pulls/comments": { - get: operations["pulls/list-review-comments-for-repo"]; - }; - "/repos/{owner}/{repo}/pulls/comments/{comment_id}": { - get: operations["pulls/get-review-comment"]; - patch: operations["pulls/update-review-comment"]; - delete: operations["pulls/delete-review-comment"]; - }; - "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": { - get: operations["reactions/list-for-pull-request-review-comment"]; - post: operations["reactions/create-for-pull-request-review-comment"]; - }; - "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": { - delete: operations["reactions/delete-for-pull-request-comment"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}": { - get: operations["pulls/get"]; - patch: operations["pulls/update"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/comments": { - get: operations["pulls/list-review-comments"]; - post: operations["pulls/create-review-comment"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": { - post: operations["pulls/create-reply-for-review-comment"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/commits": { - get: operations["pulls/list-commits"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/files": { - get: operations["pulls/list-files"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/merge": { - get: operations["pulls/check-if-merged"]; - put: operations["pulls/merge"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": { - get: operations["pulls/list-requested-reviewers"]; - post: operations["pulls/request-reviewers"]; - delete: operations["pulls/remove-requested-reviewers"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews": { - get: operations["pulls/list-reviews"]; - post: operations["pulls/create-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": { - get: operations["pulls/get-review"]; - put: operations["pulls/update-review"]; - delete: operations["pulls/delete-pending-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": { - get: operations["pulls/list-comments-for-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": { - put: operations["pulls/dismiss-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": { - post: operations["pulls/submit-review"]; - }; - "/repos/{owner}/{repo}/pulls/{pull_number}/update-branch": { - put: operations["pulls/update-branch"]; - }; - "/repos/{owner}/{repo}/readme": { - get: operations["repos/get-readme"]; - }; - "/repos/{owner}/{repo}/releases": { - get: operations["repos/list-releases"]; - post: operations["repos/create-release"]; - }; - "/repos/{owner}/{repo}/releases/assets/{asset_id}": { - get: operations["repos/get-release-asset"]; - patch: operations["repos/update-release-asset"]; - delete: operations["repos/delete-release-asset"]; - }; - "/repos/{owner}/{repo}/releases/latest": { - get: operations["repos/get-latest-release"]; - }; - "/repos/{owner}/{repo}/releases/tags/{tag}": { - get: operations["repos/get-release-by-tag"]; - }; - "/repos/{owner}/{repo}/releases/{release_id}": { - get: operations["repos/get-release"]; - patch: operations["repos/update-release"]; - delete: operations["repos/delete-release"]; - }; - "/repos/{owner}/{repo}/releases/{release_id}/assets": { - get: operations["repos/list-release-assets"]; - post: operations["repos/upload-release-asset"]; - }; - "/repos/{owner}/{repo}/secret-scanning/alerts": { - get: operations["secret-scanning/list-alerts-for-repo"]; - }; - "/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": { - get: operations["secret-scanning/get-alert"]; - patch: operations["secret-scanning/update-alert"]; - }; - "/repos/{owner}/{repo}/stargazers": { - get: operations["activity/list-stargazers-for-repo"]; - }; - "/repos/{owner}/{repo}/stats/code_frequency": { - get: operations["repos/get-code-frequency-stats"]; - }; - "/repos/{owner}/{repo}/stats/commit_activity": { - get: operations["repos/get-commit-activity-stats"]; - }; - "/repos/{owner}/{repo}/stats/contributors": { - get: operations["repos/get-contributors-stats"]; - }; - "/repos/{owner}/{repo}/stats/participation": { - get: operations["repos/get-participation-stats"]; - }; - "/repos/{owner}/{repo}/stats/punch_card": { - get: operations["repos/get-punch-card-stats"]; - }; - "/repos/{owner}/{repo}/statuses/{sha}": { - post: operations["repos/create-commit-status"]; - }; - "/repos/{owner}/{repo}/subscribers": { - get: operations["activity/list-watchers-for-repo"]; - }; - "/repos/{owner}/{repo}/subscription": { - get: operations["activity/get-repo-subscription"]; - put: operations["activity/set-repo-subscription"]; - delete: operations["activity/delete-repo-subscription"]; - }; - "/repos/{owner}/{repo}/tags": { - get: operations["repos/list-tags"]; - }; - "/repos/{owner}/{repo}/tarball/{ref}": { - get: operations["repos/download-tarball-archive"]; - }; - "/repos/{owner}/{repo}/teams": { - get: operations["repos/list-teams"]; - }; - "/repos/{owner}/{repo}/topics": { - get: operations["repos/get-all-topics"]; - put: operations["repos/replace-all-topics"]; - }; - "/repos/{owner}/{repo}/traffic/clones": { - get: operations["repos/get-clones"]; - }; - "/repos/{owner}/{repo}/traffic/popular/paths": { - get: operations["repos/get-top-paths"]; - }; - "/repos/{owner}/{repo}/traffic/popular/referrers": { - get: operations["repos/get-top-referrers"]; - }; - "/repos/{owner}/{repo}/traffic/views": { - get: operations["repos/get-views"]; - }; - "/repos/{owner}/{repo}/transfer": { - post: operations["repos/transfer"]; - }; - "/repos/{owner}/{repo}/vulnerability-alerts": { - get: operations["repos/check-vulnerability-alerts"]; - put: operations["repos/enable-vulnerability-alerts"]; - delete: operations["repos/disable-vulnerability-alerts"]; - }; - "/repos/{owner}/{repo}/zipball/{ref}": { - get: operations["repos/download-zipball-archive"]; - }; - "/repos/{template_owner}/{template_repo}/generate": { - post: operations["repos/create-using-template"]; - }; - "/repositories": { - get: operations["repos/list-public"]; - }; - "/scim/v2/enterprises/{enterprise}/Groups": { - get: operations["enterprise-admin/list-provisioned-groups-enterprise"]; - post: operations["enterprise-admin/provision-and-invite-enterprise-group"]; - }; - "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": { - get: operations["enterprise-admin/get-provisioning-information-for-enterprise-group"]; - put: operations["enterprise-admin/set-information-for-provisioned-enterprise-group"]; - patch: operations["enterprise-admin/update-attribute-for-enterprise-group"]; - delete: operations["enterprise-admin/delete-scim-group-from-enterprise"]; - }; - "/scim/v2/enterprises/{enterprise}/Users": { - get: operations["enterprise-admin/list-provisioned-identities-enterprise"]; - post: operations["enterprise-admin/provision-and-invite-enterprise-user"]; - }; - "/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": { - get: operations["enterprise-admin/get-provisioning-information-for-enterprise-user"]; - put: operations["enterprise-admin/set-information-for-provisioned-enterprise-user"]; - patch: operations["enterprise-admin/update-attribute-for-enterprise-user"]; - delete: operations["enterprise-admin/delete-user-from-enterprise"]; - }; - "/scim/v2/organizations/{org}/Users": { - get: operations["scim/list-provisioned-identities"]; - post: operations["scim/provision-and-invite-user"]; - }; - "/scim/v2/organizations/{org}/Users/{scim_user_id}": { - get: operations["scim/get-provisioning-information-for-user"]; - put: operations["scim/set-information-for-provisioned-user"]; - patch: operations["scim/update-attribute-for-user"]; - delete: operations["scim/delete-user-from-org"]; - }; - "/search/code": { - get: operations["search/code"]; - }; - "/search/commits": { - get: operations["search/commits"]; - }; - "/search/issues": { - get: operations["search/issues-and-pull-requests"]; - }; - "/search/labels": { - get: operations["search/labels"]; - }; - "/search/repositories": { - get: operations["search/repos"]; - }; - "/search/topics": { - get: operations["search/topics"]; - }; - "/search/users": { - get: operations["search/users"]; - }; - "/teams/{team_id}": { - get: operations["teams/get-legacy"]; - patch: operations["teams/update-legacy"]; - delete: operations["teams/delete-legacy"]; - }; - "/teams/{team_id}/discussions": { - get: operations["teams/list-discussions-legacy"]; - post: operations["teams/create-discussion-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}": { - get: operations["teams/get-discussion-legacy"]; - patch: operations["teams/update-discussion-legacy"]; - delete: operations["teams/delete-discussion-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}/comments": { - get: operations["teams/list-discussion-comments-legacy"]; - post: operations["teams/create-discussion-comment-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": { - get: operations["teams/get-discussion-comment-legacy"]; - patch: operations["teams/update-discussion-comment-legacy"]; - delete: operations["teams/delete-discussion-comment-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - get: operations["reactions/list-for-team-discussion-comment-legacy"]; - post: operations["reactions/create-for-team-discussion-comment-legacy"]; - }; - "/teams/{team_id}/discussions/{discussion_number}/reactions": { - get: operations["reactions/list-for-team-discussion-legacy"]; - post: operations["reactions/create-for-team-discussion-legacy"]; - }; - "/teams/{team_id}/invitations": { - get: operations["teams/list-pending-invitations-legacy"]; - }; - "/teams/{team_id}/members": { - get: operations["teams/list-members-legacy"]; - }; - "/teams/{team_id}/members/{username}": { - get: operations["teams/get-member-legacy"]; - put: operations["teams/add-member-legacy"]; - delete: operations["teams/remove-member-legacy"]; - }; - "/teams/{team_id}/memberships/{username}": { - get: operations["teams/get-membership-for-user-legacy"]; - put: operations["teams/add-or-update-membership-for-user-legacy"]; - delete: operations["teams/remove-membership-for-user-legacy"]; - }; - "/teams/{team_id}/projects": { - get: operations["teams/list-projects-legacy"]; - }; - "/teams/{team_id}/projects/{project_id}": { - get: operations["teams/check-permissions-for-project-legacy"]; - put: operations["teams/add-or-update-project-permissions-legacy"]; - delete: operations["teams/remove-project-legacy"]; - }; - "/teams/{team_id}/repos": { - get: operations["teams/list-repos-legacy"]; - }; - "/teams/{team_id}/repos/{owner}/{repo}": { - get: operations["teams/check-permissions-for-repo-legacy"]; - put: operations["teams/add-or-update-repo-permissions-legacy"]; - delete: operations["teams/remove-repo-legacy"]; - }; - "/teams/{team_id}/team-sync/group-mappings": { - get: operations["teams/list-idp-groups-for-legacy"]; - patch: operations["teams/create-or-update-idp-group-connections-legacy"]; - }; - "/teams/{team_id}/teams": { - get: operations["teams/list-child-legacy"]; - }; - "/user": { - get: operations["users/get-authenticated"]; - patch: operations["users/update-authenticated"]; - }; - "/user/blocks": { - get: operations["users/list-blocked-by-authenticated"]; - }; - "/user/blocks/{username}": { - get: operations["users/check-blocked"]; - put: operations["users/block"]; - delete: operations["users/unblock"]; - }; - "/user/email/visibility": { - patch: operations["users/set-primary-email-visibility-for-authenticated"]; - }; - "/user/emails": { - get: operations["users/list-emails-for-authenticated"]; - post: operations["users/add-email-for-authenticated"]; - delete: operations["users/delete-email-for-authenticated"]; - }; - "/user/followers": { - get: operations["users/list-followers-for-authenticated-user"]; - }; - "/user/following": { - get: operations["users/list-followed-by-authenticated"]; - }; - "/user/following/{username}": { - get: operations["users/check-person-is-followed-by-authenticated"]; - put: operations["users/follow"]; - delete: operations["users/unfollow"]; - }; - "/user/gpg_keys": { - get: operations["users/list-gpg-keys-for-authenticated"]; - post: operations["users/create-gpg-key-for-authenticated"]; - }; - "/user/gpg_keys/{gpg_key_id}": { - get: operations["users/get-gpg-key-for-authenticated"]; - delete: operations["users/delete-gpg-key-for-authenticated"]; - }; - "/user/installations": { - get: operations["apps/list-installations-for-authenticated-user"]; - }; - "/user/installations/{installation_id}/repositories": { - get: operations["apps/list-installation-repos-for-authenticated-user"]; - }; - "/user/installations/{installation_id}/repositories/{repository_id}": { - put: operations["apps/add-repo-to-installation"]; - delete: operations["apps/remove-repo-from-installation"]; - }; - "/user/interaction-limits": { - get: operations["interactions/get-restrictions-for-your-public-repos"]; - put: operations["interactions/set-restrictions-for-your-public-repos"]; - delete: operations["interactions/remove-restrictions-for-your-public-repos"]; - }; - "/user/issues": { - get: operations["issues/list-for-authenticated-user"]; - }; - "/user/keys": { - get: operations["users/list-public-ssh-keys-for-authenticated"]; - post: operations["users/create-public-ssh-key-for-authenticated"]; - }; - "/user/keys/{key_id}": { - get: operations["users/get-public-ssh-key-for-authenticated"]; - delete: operations["users/delete-public-ssh-key-for-authenticated"]; - }; - "/user/marketplace_purchases": { - get: operations["apps/list-subscriptions-for-authenticated-user"]; - }; - "/user/marketplace_purchases/stubbed": { - get: operations["apps/list-subscriptions-for-authenticated-user-stubbed"]; - }; - "/user/memberships/orgs": { - get: operations["orgs/list-memberships-for-authenticated-user"]; - }; - "/user/memberships/orgs/{org}": { - get: operations["orgs/get-membership-for-authenticated-user"]; - patch: operations["orgs/update-membership-for-authenticated-user"]; - }; - "/user/migrations": { - get: operations["migrations/list-for-authenticated-user"]; - post: operations["migrations/start-for-authenticated-user"]; - }; - "/user/migrations/{migration_id}": { - get: operations["migrations/get-status-for-authenticated-user"]; - }; - "/user/migrations/{migration_id}/archive": { - get: operations["migrations/get-archive-for-authenticated-user"]; - delete: operations["migrations/delete-archive-for-authenticated-user"]; - }; - "/user/migrations/{migration_id}/repos/{repo_name}/lock": { - delete: operations["migrations/unlock-repo-for-authenticated-user"]; - }; - "/user/migrations/{migration_id}/repositories": { - get: operations["migrations/list-repos-for-user"]; - }; - "/user/orgs": { - get: operations["orgs/list-for-authenticated-user"]; - }; - "/user/projects": { - post: operations["projects/create-for-authenticated-user"]; - }; - "/user/public_emails": { - get: operations["users/list-public-emails-for-authenticated"]; - }; - "/user/repos": { - get: operations["repos/list-for-authenticated-user"]; - post: operations["repos/create-for-authenticated-user"]; - }; - "/user/repository_invitations": { - get: operations["repos/list-invitations-for-authenticated-user"]; - }; - "/user/repository_invitations/{invitation_id}": { - patch: operations["repos/accept-invitation"]; - delete: operations["repos/decline-invitation"]; - }; - "/user/starred": { - get: operations["activity/list-repos-starred-by-authenticated-user"]; - }; - "/user/starred/{owner}/{repo}": { - get: operations["activity/check-repo-is-starred-by-authenticated-user"]; - put: operations["activity/star-repo-for-authenticated-user"]; - delete: operations["activity/unstar-repo-for-authenticated-user"]; - }; - "/user/subscriptions": { - get: operations["activity/list-watched-repos-for-authenticated-user"]; - }; - "/user/teams": { - get: operations["teams/list-for-authenticated-user"]; - }; - "/users": { - get: operations["users/list"]; - }; - "/users/{username}": { - get: operations["users/get-by-username"]; - }; - "/users/{username}/events": { - get: operations["activity/list-events-for-authenticated-user"]; - }; - "/users/{username}/events/orgs/{org}": { - get: operations["activity/list-org-events-for-authenticated-user"]; - }; - "/users/{username}/events/public": { - get: operations["activity/list-public-events-for-user"]; - }; - "/users/{username}/followers": { - get: operations["users/list-followers-for-user"]; - }; - "/users/{username}/following": { - get: operations["users/list-following-for-user"]; - }; - "/users/{username}/following/{target_user}": { - get: operations["users/check-following-for-user"]; - }; - "/users/{username}/gists": { - get: operations["gists/list-for-user"]; - }; - "/users/{username}/gpg_keys": { - get: operations["users/list-gpg-keys-for-user"]; - }; - "/users/{username}/hovercard": { - get: operations["users/get-context-for-user"]; - }; - "/users/{username}/installation": { - get: operations["apps/get-user-installation"]; - }; - "/users/{username}/keys": { - get: operations["users/list-public-keys-for-user"]; - }; - "/users/{username}/orgs": { - get: operations["orgs/list-for-user"]; - }; - "/users/{username}/projects": { - get: operations["projects/list-for-user"]; - }; - "/users/{username}/received_events": { - get: operations["activity/list-received-events-for-user"]; - }; - "/users/{username}/received_events/public": { - get: operations["activity/list-received-public-events-for-user"]; - }; - "/users/{username}/repos": { - get: operations["repos/list-for-user"]; - }; - "/users/{username}/settings/billing/actions": { - get: operations["billing/get-github-actions-billing-user"]; - }; - "/users/{username}/settings/billing/packages": { - get: operations["billing/get-github-packages-billing-user"]; - }; - "/users/{username}/settings/billing/shared-storage": { - get: operations["billing/get-shared-storage-billing-user"]; - }; - "/users/{username}/starred": { - get: operations["activity/list-repos-starred-by-user"]; - }; - "/users/{username}/subscriptions": { - get: operations["activity/list-repos-watched-by-user"]; - }; - "/zen": { - get: operations["meta/get-zen"]; - }; -} - -export interface operations { - /** - * Get Hypermedia links to resources accessible in GitHub's REST API - */ - "meta/root": { - responses: { - /** - * response - */ - "200": { - "application/json": { - current_user_url: string; - current_user_authorizations_html_url: string; - authorizations_url: string; - code_search_url: string; - commit_search_url: string; - emails_url: string; - emojis_url: string; - events_url: string; - feeds_url: string; - followers_url: string; - following_url: string; - gists_url: string; - hub_url: string; - issue_search_url: string; - issues_url: string; - keys_url: string; - label_search_url: string; - notifications_url: string; - organization_url: string; - organization_repositories_url: string; - organization_teams_url: string; - public_gists_url: string; - rate_limit_url: string; - repository_url: string; - repository_search_url: string; - current_user_repositories_url: string; - starred_url: string; - starred_gists_url: string; - topic_search_url?: string; - user_url: string; - user_organizations_url: string; - user_repositories_url: string; - user_search_url: string; - }; - }; - }; - }; - /** - * Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/reference/apps#list-installations-for-the-authenticated-app)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-authenticated": { - parameters: {}; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["integration"]; - }; - }; - }; - /** - * Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`. - */ - "apps/create-from-manifest": { - parameters: { - path: { - code: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["integration"] & - ({ - client_id: string; - client_secret: string; - webhook_secret: string; - pem: string; - } & { [key: string]: any }); - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-webhook-config-for-app": { - responses: { - /** - * Default response - */ - "200": { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - /** - * Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/update-webhook-config-for-app": { - requestBody: { - "application/json": { - url?: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - }; - responses: { - /** - * Default response - */ - "200": { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - /** - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - * - * The permissions the installation has are included under the `permissions` key. - */ - "apps/list-installations": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - since?: components["parameters"]["since"]; - outdated?: string; - }; - }; - responses: { - /** - * The permissions the installation has are included under the `permissions` key. - */ - "200": { - "application/json": components["schemas"]["installation"][]; - }; - }; - }; - /** - * Enables an authenticated GitHub App to find an installation's information using the installation id. The installation's account type (`target_type`) will be either an organization or a user account, depending which account the repository belongs to. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["installation"]; - }; - "404": unknown; - "415": unknown; - }; - }; - /** - * Uninstalls a GitHub App on a user, organization, or business account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/v3/apps/#suspend-an-app-installation)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/delete-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/create-installation-access-token": { - parameters: { - path: { - installation_id: components["parameters"]["installation_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * List of repository names that the token should have access to - */ - repositories?: string[]; - /** - * List of repository IDs that the token should have access to - */ - repository_ids?: number[]; - permissions?: { - contents?: string; - issues?: string; - deployments?: string; - single_file?: string; - def_not_a_repo?: string; - }; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["installation-token"]; - }; - "401": unknown; - "403": unknown; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * **Note:** Suspending a GitHub App installation is currently in beta and subject to change. Before you can suspend a GitHub App, the app owner must enable suspending installations for the app by opting-in to the beta. For more information, see "[Suspending a GitHub App installation](https://docs.github.com/apps/managing-github-apps/suspending-a-github-app-installation/)." - * - * Suspends a GitHub App on a user, organization, or business account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account. - * - * To suspend a GitHub App, you must be an account owner or have admin permissions in the repository or organization where the app is installed. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/suspend-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * **Note:** Suspending a GitHub App installation is currently in beta and subject to change. Before you can suspend a GitHub App, the app owner must enable suspending installations for the app by opting-in to the beta. For more information, see "[Suspending a GitHub App installation](https://docs.github.com/apps/managing-github-apps/suspending-a-github-app-installation/)." - * - * Removes a GitHub App installation suspension. - * - * To unsuspend a GitHub App, you must be an account owner or have admin permissions in the repository or organization where the app is installed and suspended. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/unsuspend-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - * - * You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the [list your authorizations](https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations) API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). The `scopes` returned are the union of scopes authorized for the application. For example, if an application has one token with `repo` scope and another token with `user` scope, the grant will return `["repo", "user"]`. - */ - "oauth-authorizations/list-grants": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["application-grant"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - */ - "oauth-authorizations/get-grant": { - parameters: { - path: { - grant_id: components["parameters"]["grant_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["application-grant"]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - * - * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for your user. Once deleted, the application has no access to your account and is no longer listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). - */ - "oauth-authorizations/delete-grant": { - parameters: { - path: { - grant_id: components["parameters"]["grant_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted. - * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). - */ - "apps/delete-authorization": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The OAuth access token used to authenticate to the GitHub API. - */ - access_token?: string; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. The OAuth Application API will be removed on May 5, 2021. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/). - * - * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid token as `:access_token` and the grant for the token's owner will be deleted. - * - * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the Applications settings page under "Authorized OAuth Apps" on GitHub](https://github.com/settings/applications#authorized). - */ - "apps/revoke-grant-for-application": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - access_token: components["parameters"]["access-token"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to use this endpoint, where the username is the OAuth application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`. - */ - "apps/check-token": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The access_token of the OAuth application. - */ - access_token: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["authorization"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. - */ - "apps/reset-token": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The access_token of the OAuth application. - */ - access_token: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["authorization"]; - }; - "422": unknown; - }; - }; - /** - * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. - */ - "apps/delete-token": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The OAuth access token used to authenticate to the GitHub API. - */ - access_token?: string; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. The OAuth Application API will be removed on May 5, 2021. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/). - * - * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. - */ - "apps/check-authorization": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - access_token: components["parameters"]["access-token"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["authorization"]; - }; - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. The OAuth Application API will be removed on May 5, 2021. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/). - * - * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. - */ - "apps/reset-authorization": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - access_token: components["parameters"]["access-token"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["authorization"]; - }; - }; - }; - /** - * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. The OAuth Application API will be removed on May 5, 2021. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/). - * - * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. - */ - "apps/revoke-authorization-for-application": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - access_token: components["parameters"]["access-token"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`). - * - * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. - */ - "apps/get-by-slug": { - parameters: { - path: { - app_slug: components["parameters"]["app_slug"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["integration"]; - }; - "403": unknown; - "404": unknown; - "415": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - */ - "oauth-authorizations/list-authorizations": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["authorization"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - * - * **Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api). - * - * Creates OAuth tokens using [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication). If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." - * - * To create tokens for a particular OAuth application using this endpoint, you must authenticate as the user you want to create an authorization for and provide the app's client ID and secret, found on your OAuth application's settings page. If your OAuth application intends to create multiple tokens for one user, use `fingerprint` to differentiate between them. - * - * You can also create tokens on GitHub from the [personal access tokens settings](https://github.com/settings/tokens) page. Read more about these tokens in [the GitHub Help documentation](https://help.github.com/articles/creating-an-access-token-for-command-line-use). - * - * Organizations that enforce SAML SSO require personal access tokens to be allowed. Read more about allowing tokens in [the GitHub Help documentation](https://help.github.com/articles/about-identity-and-access-management-with-saml-single-sign-on). - */ - "oauth-authorizations/create-authorization": { - parameters: {}; - requestBody: { - "application/json": { - /** - * A list of scopes that this authorization is in. - */ - scopes?: string[] | null; - /** - * A note to remind you what the OAuth token is for. - */ - note?: string; - /** - * A URL to remind you what app the OAuth token is for. - */ - note_url?: string; - /** - * The OAuth app client key for which to create the token. - */ - client_id?: string; - /** - * The OAuth app client secret for which to create the token. - */ - client_secret?: string; - /** - * A unique string to distinguish an authorization from others created for the same client ID and user. - */ - fingerprint?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["authorization"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "410": unknown; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - * - * **Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api). - * - * Creates a new authorization for the specified OAuth application, only if an authorization for that application doesn't already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one. - * - * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." - * - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - */ - "oauth-authorizations/get-or-create-authorization-for-app": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The OAuth app client secret for which to create the token. - */ - client_secret: string; - /** - * A list of scopes that this authorization is in. - */ - scopes?: string[] | null; - /** - * A note to remind you what the OAuth token is for. - */ - note?: string; - /** - * A URL to remind you what app the OAuth token is for. - */ - note_url?: string; - /** - * A unique string to distinguish an authorization from others created for the same client ID and user. - */ - fingerprint?: string; - }; - }; - responses: { - /** - * Response if returning an existing token - */ - "200": { - "application/json": components["schemas"]["authorization"]; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - */ - "201": { - "application/json": components["schemas"]["authorization"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - * - * **Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api). - * - * This method will create a new authorization for the specified OAuth application, only if an authorization for that application and fingerprint do not already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. `fingerprint` is a unique string to distinguish an authorization from others created for the same client ID and user. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one. - * - * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." - */ - "oauth-authorizations/get-or-create-authorization-for-app-and-fingerprint": { - parameters: { - path: { - client_id: components["parameters"]["client-id"]; - fingerprint: string; - }; - }; - requestBody: { - "application/json": { - /** - * The OAuth app client secret for which to create the token. - */ - client_secret: string; - /** - * A list of scopes that this authorization is in. - */ - scopes?: string[] | null; - /** - * A note to remind you what the OAuth token is for. - */ - note?: string; - /** - * A URL to remind you what app the OAuth token is for. - */ - note_url?: string; - }; - }; - responses: { - /** - * Response if returning an existing token - */ - "200": { - "application/json": components["schemas"]["authorization"]; - }; - /** - * Response if returning a new token - */ - "201": { - "application/json": components["schemas"]["authorization"]; - }; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - */ - "oauth-authorizations/get-authorization": { - parameters: { - path: { - authorization_id: components["parameters"]["authorization_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["authorization"]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - * - * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." - * - * You can only send one of these scope keys at a time. - */ - "oauth-authorizations/update-authorization": { - parameters: { - path: { - authorization_id: components["parameters"]["authorization_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * A list of scopes that this authorization is in. - */ - scopes?: string[] | null; - /** - * A list of scopes to add to this authorization. - */ - add_scopes?: string[]; - /** - * A list of scopes to remove from this authorization. - */ - remove_scopes?: string[]; - /** - * A note to remind you what the OAuth token is for. - */ - note?: string; - /** - * A URL to remind you what app the OAuth token is for. - */ - note_url?: string; - /** - * A unique string to distinguish an authorization from others created for the same client ID and user. - */ - fingerprint?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["authorization"]; - }; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). - */ - "oauth-authorizations/delete-authorization": { - parameters: { - path: { - authorization_id: components["parameters"]["authorization_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "codes-of-conduct/get-all-codes-of-conduct": { - parameters: {}; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["code-of-conduct"][]; - }; - "304": never; - "415": unknown; - }; - }; - "codes-of-conduct/get-conduct-code": { - parameters: { - path: { - key: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["code-of-conduct"]; - }; - "304": never; - "404": unknown; - "415": unknown; - }; - }; - /** - * Creates an attachment under a content reference URL in the body or comment of an issue or pull request. Use the `id` of the content reference from the [`content_reference` event](https://docs.github.com/webhooks/event-payloads/#content_reference) to create an attachment. - * - * The app must create a content attachment within six hours of the content reference URL being posted. See "[Using content attachments](https://docs.github.com/apps/using-content-attachments/)" for details about content attachments. - * - * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. - */ - "apps/create-content-attachment": { - parameters: { - path: { - content_reference_id: number; - }; - }; - requestBody: { - "application/json": { - /** - * The title of the attachment - */ - title: string; - /** - * The body of the attachment - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["content-reference-attachment"]; - }; - "304": never; - "403": unknown; - "404": unknown; - "410": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * Lists all the emojis available to use on GitHub. - */ - "emojis/get": { - parameters: {}; - responses: { - /** - * response - */ - "200": { - "application/json": { [key: string]: string }; - }; - "304": never; - }; - }; - /** - * Gets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/get-github-actions-permissions-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["actions-enterprise-permissions"]; - }; - }; - }; - /** - * Sets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/set-github-actions-permissions-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - requestBody: { - "application/json": { - enabled_organizations: components["schemas"]["enabled-organizations"]; - allowed_actions?: components["schemas"]["allowed-actions"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists the organizations that are selected to have GitHub Actions enabled in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/list-selected-organizations-enabled-github-actions-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - organizations?: components["schemas"]["organization-simple"][]; - }; - }; - }; - }; - /** - * Replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/set-selected-organizations-enabled-github-actions-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - requestBody: { - "application/json": { - /** - * List of organization IDs to enable for GitHub Actions. - */ - selected_organization_ids: number[]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/enable-selected-organization-github-actions-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - org_id: components["parameters"]["org_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/disable-selected-organization-github-actions-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - org_id: components["parameters"]["org_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Gets the selected actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/get-allowed-actions-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["selected-actions"]; - }; - }; - }; - /** - * Sets the actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/set-allowed-actions-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - requestBody: { - "application/json": components["schemas"]["selected-actions"]; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists all self-hosted runner groups for an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/list-self-hosted-runner-groups-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - runner_groups?: components["schemas"]["runner-groups-enterprise"][]; - }; - }; - }; - }; - /** - * Creates a new self-hosted runner group for an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/create-self-hosted-runner-group-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - requestBody: { - "application/json": { - /** - * Name of the runner group. - */ - name: string; - /** - * Visibility of a runner group. You can select all organizations or select individual organization. Can be one of: `all` or `selected` - */ - visibility?: "selected" | "all"; - /** - * List of organization IDs that can access the runner group. - */ - selected_organization_ids?: number[]; - /** - * List of runner IDs to add to the runner group. - */ - runners?: number[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["runner-groups-enterprise"]; - }; - }; - }; - /** - * Gets a specific self-hosted runner group for an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/get-self-hosted-runner-group-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner-groups-enterprise"]; - }; - }; - }; - /** - * Updates the `name` and `visibility` of a self-hosted runner group in an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/update-self-hosted-runner-group-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * Name of the runner group. - */ - name?: string; - /** - * Visibility of a runner group. You can select all organizations or select individual organizations. Can be one of: `all` or `selected` - */ - visibility?: "selected" | "all"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner-groups-enterprise"]; - }; - }; - }; - /** - * Deletes a self-hosted runner group for an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/delete-self-hosted-runner-group-from-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists the organizations with access to a self-hosted runner group. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/list-org-access-to-self-hosted-runner-group-in-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - organizations?: components["schemas"]["organization-simple"][]; - }; - }; - }; - }; - /** - * Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/set-org-access-to-self-hosted-runner-group-in-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * List of organization IDs that can access the runner group. - */ - selected_organization_ids: number[]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Adds an organization to the list of selected organizations that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an enterprise](#create-a-self-hosted-runner-group-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/add-org-access-to-self-hosted-runner-group-in-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - org_id: components["parameters"]["org_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Removes an organization from the list of selected organizations that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an enterprise](#create-a-self-hosted-runner-group-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/remove-org-access-to-self-hosted-runner-group-in-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - org_id: components["parameters"]["org_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists the self-hosted runners that are in a specific enterprise group. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/list-self-hosted-runners-in-group-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - runners?: components["schemas"]["runner"][]; - }; - }; - }; - }; - /** - * Replaces the list of self-hosted runners that that are part of an enterprise runner group. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/set-self-hosted-runners-in-group-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * List of runner IDs to add to the runner group. - */ - runners: number[]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Adds a self-hosted runner to a runner group configured in an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` - * scope to use this endpoint. - */ - "enterprise-admin/add-self-hosted-runner-to-group-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/remove-self-hosted-runner-from-group-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_group_id: components["parameters"]["runner_group_id"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists all self-hosted runners configured for an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/list-self-hosted-runners-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - runners?: components["schemas"]["runner"][]; - }; - }; - }; - }; - /** - * Lists binaries for the runner application that you can download and run. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/list-runner-applications-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner-application"][]; - }; - }; - }; - /** - * Returns a token that you can pass to the `config` script. The token expires after one hour. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - * - * #### Example using registration token - * - * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. - * - * ``` - * ./config.sh --url https://github.com/enterpises/octo-enterprise --token TOKEN - * ``` - */ - "enterprise-admin/create-registration-token-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - /** - * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an enterprise. The token expires after one hour. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - * - * #### Example using remove token - * - * To remove your self-hosted runner from an enterprise, replace `TOKEN` with the remove token provided by this - * endpoint. - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - */ - "enterprise-admin/create-remove-token-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - /** - * Gets a specific self-hosted runner configured in an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/get-self-hosted-runner-for-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner"]; - }; - }; - }; - /** - * Forces the removal of a self-hosted runner from an enterprise. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - "enterprise-admin/delete-self-hosted-runner-from-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * The authenticated user must be an enterprise admin. - */ - "billing/get-github-actions-billing-ghe": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["actions-billing-usage"]; - }; - }; - }; - /** - * Gets the free and paid storage used for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * The authenticated user must be an enterprise admin. - */ - "billing/get-github-packages-billing-ghe": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["packages-billing-usage"]; - }; - }; - }; - /** - * Gets the estimated paid and estimated total storage used for GitHub Actions and Github Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * The authenticated user must be an enterprise admin. - */ - "billing/get-shared-storage-billing-ghe": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["combined-billing-usage"]; - }; - }; - }; - /** - * We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago. - */ - "activity/list-public-events": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["event"][]; - }; - "304": never; - "403": unknown; - "503": unknown; - }; - }; - /** - * GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user: - * - * * **Timeline**: The GitHub global public timeline - * * **User**: The public timeline for any user, using [URI template](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) - * * **Current user public**: The public timeline for the authenticated user - * * **Current user**: The private timeline for the authenticated user - * * **Current user actor**: The private timeline for activity created by the authenticated user - * * **Current user organizations**: The private timeline for the organizations the authenticated user is a member of. - * * **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub. - * - * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) since current feed URIs use the older, non revocable auth tokens. - */ - "activity/get-feeds": { - parameters: {}; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["feed"]; - }; - }; - }; - /** - * Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists: - */ - "gists/list": { - parameters: { - query: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["base-gist"][]; - }; - "304": never; - "403": unknown; - }; - }; - /** - * Allows you to add a new gist with one or more files. - * - * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally. - */ - "gists/create": { - parameters: {}; - requestBody: { - "application/json": { - /** - * Description of the gist - */ - description?: string; - /** - * Names and content for the files that make up the gist - */ - files: { - [key: string]: { - /** - * Content of the file - */ - content: string; - }; - }; - public?: boolean | ("true" | "false"); - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["gist-full"]; - }; - "304": never; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * List public gists sorted by most recently updated to least recently updated. - * - * Note: With [pagination](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page. - */ - "gists/list-public": { - parameters: { - query: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["base-gist"][]; - }; - "304": never; - "403": unknown; - "422": unknown; - }; - }; - /** - * List the authenticated user's starred gists: - */ - "gists/list-starred": { - parameters: { - query: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["base-gist"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "gists/get": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gist-full"]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Allows you to update or delete a gist file and rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged. - */ - "gists/update": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - }; - requestBody: { - "application/json": Partial<{ [key: string]: any }> & - Partial<{ [key: string]: any }>; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gist-full"]; - }; - "404": unknown; - "422": unknown; - }; - }; - "gists/delete": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - "gists/list-comments": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gist-comment"][]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - "gists/create-comment": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The comment text. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["gist-comment"]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - "gists/get-comment": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gist-comment"]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - "gists/update-comment": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The comment text. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gist-comment"]; - }; - "404": unknown; - }; - }; - "gists/delete-comment": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - "gists/list-commits": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gist-commit"][]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - "gists/list-forks": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gist-full"][]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * **Note**: This was previously `/gists/:gist_id/fork`. - */ - "gists/fork": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["base-gist"]; - }; - "304": never; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - "gists/check-is-starred": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - }; - responses: { - /** - * Response if gist is starred - */ - "204": never; - "304": never; - "403": unknown; - /** - * Response if gist is not starred - */ - "404": { - "application/json": { [key: string]: any }; - }; - }; - }; - /** - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - "gists/star": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - "gists/unstar": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - "gists/get-revision": { - parameters: { - path: { - gist_id: components["parameters"]["gist_id"]; - sha: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gist-full"]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/reference/repos#create-a-repository-for-the-authenticated-user). - */ - "gitignore/get-all-templates": { - parameters: {}; - responses: { - /** - * response - */ - "200": { - "application/json": string[]; - }; - "304": never; - }; - }; - /** - * The API also allows fetching the source of a single template. - * Use the raw [media type](https://docs.github.com/rest/overview/media-types/) to get the raw contents. - */ - "gitignore/get-template": { - parameters: { - path: { - name: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gitignore-template"]; - }; - "304": never; - }; - }; - /** - * List repositories that an app installation can access. - * - * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. - */ - "apps/list-repos-accessible-to-installation": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - repositories?: components["schemas"]["repository"][]; - repository_selection?: string; - }; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * Revokes the installation token you're using to authenticate as an installation and access this endpoint. - * - * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/reference/apps#create-an-installation-access-token-for-an-app)" endpoint. - * - * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. - */ - "apps/revoke-installation-access-token": { - parameters: {}; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * List issues assigned to the authenticated user across all visible repositories including owned repositories, member - * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not - * necessarily assigned to you. - * - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - "issues/list": { - parameters: { - query: { - /** - * Indicates which sorts of issues to return. Can be one of: - * \* `assigned`: Issues assigned to you - * \* `created`: Issues created by you - * \* `mentioned`: Issues mentioning you - * \* `subscribed`: Issues you're subscribed to updates for - * \* `all`: All issues the authenticated user can see, regardless of participation or creation - */ - filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all"; - /** - * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`. - */ - state?: "open" | "closed" | "all"; - labels?: components["parameters"]["labels"]; - /** - * What to sort results by. Can be either `created`, `updated`, `comments`. - */ - sort?: "created" | "updated" | "comments"; - direction?: components["parameters"]["direction"]; - since?: components["parameters"]["since"]; - collab?: boolean; - orgs?: boolean; - owned?: boolean; - pulls?: boolean; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue"][]; - }; - "304": never; - "404": unknown; - "422": unknown; - }; - }; - "licenses/get-all-commonly-used": { - parameters: { - query: { - featured?: boolean; - per_page?: components["parameters"]["per_page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["license-simple"][]; - }; - "304": never; - }; - }; - "licenses/get": { - parameters: { - path: { - license: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["license"]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - "markdown/render": { - parameters: {}; - requestBody: { - "application/json": { - /** - * The Markdown text to render in HTML. - */ - text: string; - /** - * The rendering mode. - */ - mode?: "markdown" | "gfm"; - /** - * The repository context to use when creating references in `gfm` mode. - */ - context?: string; - }; - }; - responses: { - /** - * response - */ - "200": unknown; - "304": never; - }; - }; - /** - * You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less. - */ - "markdown/render-raw": { - parameters: {}; - requestBody: { - "text/plain": string; - "text/x-markdown": string; - }; - responses: { - /** - * response - */ - "200": { - "text/html": string; - }; - "304": never; - }; - }; - /** - * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/get-subscription-plan-for-account": { - parameters: { - path: { - account_id: components["parameters"]["account_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["marketplace-purchase"]; - }; - "401": unknown; - /** - * Response when the account has not purchased the listing - */ - "404": { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - /** - * Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/list-plans": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["marketplace-listing-plan"][]; - }; - "401": unknown; - "404": unknown; - }; - }; - /** - * Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/list-accounts-for-plan": { - parameters: { - path: { - plan_id: components["parameters"]["plan_id"]; - }; - query: { - sort?: components["parameters"]["sort"]; - /** - * To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter. - */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["marketplace-purchase"][]; - }; - "401": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/get-subscription-plan-for-account-stubbed": { - parameters: { - path: { - account_id: components["parameters"]["account_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["marketplace-purchase"]; - }; - "401": unknown; - /** - * Response when the account has not purchased the listing - */ - "404": unknown; - }; - }; - /** - * Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/list-plans-stubbed": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["marketplace-listing-plan"][]; - }; - "401": unknown; - }; - }; - /** - * Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - "apps/list-accounts-for-plan-stubbed": { - parameters: { - path: { - plan_id: components["parameters"]["plan_id"]; - }; - query: { - sort?: components["parameters"]["sort"]; - /** - * To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter. - */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["marketplace-purchase"][]; - }; - "401": unknown; - }; - }; - /** - * This endpoint provides a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://help.github.com/articles/about-github-s-ip-addresses/)." - */ - "meta/get": { - parameters: {}; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["api-overview"]; - }; - "304": never; - }; - }; - "activity/list-public-events-for-repo-network": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["event"][]; - }; - "301": never; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * List all notifications for the current user, sorted by most recently updated. - */ - "activity/list-notifications-for-authenticated-user": { - parameters: { - query: { - all?: components["parameters"]["all"]; - participating?: components["parameters"]["participating"]; - since?: components["parameters"]["since"]; - before?: components["parameters"]["before"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["thread"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "422": unknown; - }; - }; - /** - * Marks all notifications as "read" removes it from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - "activity/mark-notifications-as-read": { - parameters: {}; - requestBody: { - "application/json": { - /** - * Describes the last point that notifications were checked. - */ - last_read_at?: string; - /** - * Whether the notification has been read. - */ - read?: boolean; - }; - }; - responses: { - /** - * response - */ - "202": { - "application/json": { message?: string }; - }; - /** - * response - */ - "205": unknown; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "activity/get-thread": { - parameters: { - path: { - thread_id: components["parameters"]["thread_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["thread"]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "activity/mark-thread-as-read": { - parameters: { - path: { - thread_id: components["parameters"]["thread_id"]; - }; - }; - responses: { - /** - * response - */ - "205": unknown; - "304": never; - "403": unknown; - }; - }; - /** - * This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/reference/activity#get-a-repository-subscription). - * - * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread. - */ - "activity/get-thread-subscription-for-authenticated-user": { - parameters: { - path: { - thread_id: components["parameters"]["thread_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["thread-subscription"]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**. - * - * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored. - * - * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/reference/activity#delete-a-thread-subscription) endpoint. - */ - "activity/set-thread-subscription": { - parameters: { - path: { - thread_id: components["parameters"]["thread_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * Whether to block all notifications from a thread. - */ - ignored?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["thread-subscription"]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/reference/activity#set-a-thread-subscription) endpoint and set `ignore` to `true`. - */ - "activity/delete-thread-subscription": { - parameters: { - path: { - thread_id: components["parameters"]["thread_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * Get the octocat as ASCII art - */ - "meta/get-octocat": { - parameters: { - query: { - /** - * The words to show in Octocat's speech bubble - */ - s?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/octocat-stream": string; - }; - }; - }; - /** - * Lists all organizations, in the order that they were created on GitHub. - * - * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of organizations. - */ - "orgs/list": { - parameters: { - query: { - since?: components["parameters"]["since-org"]; - per_page?: components["parameters"]["per_page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["organization-simple"][]; - }; - "304": never; - }; - }; - /** - * To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). - * - * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see 'Response with GitHub plan information' below." - */ - "orgs/get": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["organization-full"]; - }; - "404": unknown; - }; - }; - /** - * **Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes). - * - * Enables an authenticated organization owner with the `admin:org` scope to update the organization's profile and member privileges. - */ - "orgs/update": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * Billing email address. This address is not publicized. - */ - billing_email?: string; - /** - * The company name. - */ - company?: string; - /** - * The publicly visible email address. - */ - email?: string; - /** - * The Twitter username of the company. - */ - twitter_username?: string; - /** - * The location. - */ - location?: string; - /** - * The shorthand name of the company. - */ - name?: string; - /** - * The description of the company. - */ - description?: string; - /** - * Toggles whether an organization can use organization projects. - */ - has_organization_projects?: boolean; - /** - * Toggles whether repositories that belong to the organization can use repository projects. - */ - has_repository_projects?: boolean; - /** - * Default permission level members have for organization repositories: - * \* `read` - can pull, but not push to or administer this repository. - * \* `write` - can pull and push, but not administer this repository. - * \* `admin` - can pull, push, and administer this repository. - * \* `none` - no permissions granted by default. - */ - default_repository_permission?: "read" | "write" | "admin" | "none"; - /** - * Toggles the ability of non-admin organization members to create repositories. Can be one of: - * \* `true` - all organization members can create repositories. - * \* `false` - only organization owners can create repositories. - * Default: `true` - * **Note:** A parameter can override this parameter. See `members_allowed_repository_creation_type` in this table for details. **Note:** A parameter can override this parameter. See `members_allowed_repository_creation_type` in this table for details. - */ - members_can_create_repositories?: boolean; - /** - * Toggles whether organization members can create internal repositories, which are visible to all enterprise members. You can only allow members to create internal repositories if your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. Can be one of: - * \* `true` - all organization members can create internal repositories. - * \* `false` - only organization owners can create internal repositories. - * Default: `true`. For more information, see "[Restricting repository creation in your organization](https://help.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. - */ - members_can_create_internal_repositories?: boolean; - /** - * Toggles whether organization members can create private repositories, which are visible to organization members with permission. Can be one of: - * \* `true` - all organization members can create private repositories. - * \* `false` - only organization owners can create private repositories. - * Default: `true`. For more information, see "[Restricting repository creation in your organization](https://help.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. - */ - members_can_create_private_repositories?: boolean; - /** - * Toggles whether organization members can create public repositories, which are visible to anyone. Can be one of: - * \* `true` - all organization members can create public repositories. - * \* `false` - only organization owners can create public repositories. - * Default: `true`. For more information, see "[Restricting repository creation in your organization](https://help.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. - */ - members_can_create_public_repositories?: boolean; - /** - * Specifies which types of repositories non-admin organization members can create. Can be one of: - * \* `all` - all organization members can create public and private repositories. - * \* `private` - members can create private repositories. This option is only available to repositories that are part of an organization on GitHub Enterprise Cloud. - * \* `none` - only admin members can create repositories. - * **Note:** This parameter is deprecated and will be removed in the future. Its return value ignores internal repositories. Using this parameter overrides values set in `members_can_create_repositories`. See the parameter deprecation notice in the operation description for details. - */ - members_allowed_repository_creation_type?: "all" | "private" | "none"; - /** - * Toggles whether organization members can create GitHub Pages sites. Can be one of: - * \* `true` - all organization members can create GitHub Pages sites. - * \* `false` - no organization members can create GitHub Pages sites. Existing published sites will not be impacted. - * Default: `true`. - */ - members_can_create_pages?: boolean; - blog?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["organization-full"]; - }; - "409": unknown; - "415": unknown; - /** - * Validation Failed - */ - "422": { - "application/json": - | components["schemas"]["validation-error"] - | components["schemas"]["validation-error-simple"]; - }; - }; - }; - /** - * Gets the GitHub Actions permissions policy for repositories and allowed actions in an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - "actions/get-github-actions-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["actions-organization-permissions"]; - }; - }; - }; - /** - * Sets the GitHub Actions permissions policy for repositories and allowed actions in an organization. - * - * If the organization belongs to an enterprise that has set restrictive permissions at the enterprise level, such as `allowed_actions` to `selected` actions, then you cannot override them for the organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - "actions/set-github-actions-permissions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - enabled_repositories: components["schemas"]["enabled-repositories"]; - allowed_actions?: components["schemas"]["allowed-actions"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - "actions/list-selected-repositories-enabled-github-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - repositories?: components["schemas"]["repository"][]; - }; - }; - }; - }; - /** - * Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - "actions/set-selected-repositories-enabled-github-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * List of repository IDs to enable for GitHub Actions. - */ - selected_repository_ids: number[]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - "actions/enable-selected-repository-github-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - repository_id: components["parameters"]["repository_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - "actions/disable-selected-repository-github-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - repository_id: components["parameters"]["repository_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Gets the selected actions that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)."" - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - "actions/get-allowed-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["selected-actions"]; - }; - }; - }; - /** - * Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * If the organization belongs to an enterprise that has `selected` actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings. - * - * To use the `patterns_allowed` setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories in the organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - "actions/set-allowed-actions-organization": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": components["schemas"]["selected-actions"]; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * Lists all self-hosted runner groups configured in an organization and inherited from an enterprise. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/list-self-hosted-runner-groups-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - runner_groups?: components["schemas"]["runner-groups-org"][]; - }; - }; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud and GitHub Enterprise Server. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * Creates a new self-hosted runner group for an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/create-self-hosted-runner-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * Name of the runner group. - */ - name: string; - /** - * Visibility of a runner group. You can select all repositories, select individual repositories, or limit access to private repositories. Can be one of: `all`, `selected`, or `private`. - */ - visibility?: "selected" | "all" | "private"; - /** - * List of repository IDs that can access the runner group. - */ - selected_repository_ids?: number[]; - /** - * List of runner IDs to add to the runner group. - */ - runners?: number[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["runner-groups-org"]; - }; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * Gets a specific self-hosted runner group for an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/get-self-hosted-runner-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner-groups-org"]; - }; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * Updates the `name` and `visibility` of a self-hosted runner group in an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/update-self-hosted-runner-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * Name of the runner group. - */ - name?: string; - /** - * Visibility of a runner group. You can select all repositories, select individual repositories, or all private repositories. Can be one of: `all`, `selected`, or `private`. - */ - visibility?: "selected" | "all" | "private"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner-groups-org"]; - }; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * Deletes a self-hosted runner group for an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/delete-self-hosted-runner-group-from-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud and GitHub Enterprise Server. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * Lists the repositories with access to a self-hosted runner group configured in an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/list-repo-access-to-self-hosted-runner-group-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - repositories?: components["schemas"]["repository"][]; - }; - }; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * Replaces the list of repositories that have access to a self-hosted runner group configured in an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/set-repo-access-to-self-hosted-runner-group-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * List of repository IDs that can access the runner group. - */ - selected_repository_ids: number[]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * - * Adds a repository to the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` - * scope to use this endpoint. - */ - "actions/add-repo-access-to-self-hosted-runner-group-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - repository_id: components["parameters"]["repository_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * - * Removes a repository from the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/remove-repo-access-to-self-hosted-runner-group-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - repository_id: components["parameters"]["repository_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * Lists self-hosted runners that are in a specific organization group. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/list-self-hosted-runners-in-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - runners?: components["schemas"]["runner"][]; - }; - }; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * Replaces the list of self-hosted runners that are part of an organization runner group. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/set-self-hosted-runners-in-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * List of runner IDs to add to the runner group. - */ - runners: number[]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * - * Adds a self-hosted runner to a runner group configured in an organization. - * - * You must authenticate using an access token with the `admin:org` - * scope to use this endpoint. - */ - "actions/add-self-hosted-runner-to-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." - * - * - * Removes a self-hosted runner from a group configured in an organization. The runner is then returned to the default group. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/remove-self-hosted-runner-from-group-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_group_id: components["parameters"]["runner_group_id"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists all self-hosted runners configured in an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/list-self-hosted-runners-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - runners?: components["schemas"]["runner"][]; - }; - }; - }; - }; - /** - * Lists binaries for the runner application that you can download and run. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/list-runner-applications-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner-application"][]; - }; - }; - }; - /** - * Returns a token that you can pass to the `config` script. The token expires after one hour. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - * - * #### Example using registration token - * - * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. - * - * ``` - * ./config.sh --url https://github.com/octo-org --token TOKEN - * ``` - */ - "actions/create-registration-token-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - /** - * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an organization. The token expires after one hour. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - * - * #### Example using remove token - * - * To remove your self-hosted runner from an organization, replace `TOKEN` with the remove token provided by this - * endpoint. - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - */ - "actions/create-remove-token-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - /** - * Gets a specific self-hosted runner configured in an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/get-self-hosted-runner-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner"]; - }; - }; - }; - /** - * Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - "actions/delete-self-hosted-runner-from-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - "actions/list-org-secrets": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - secrets?: components["schemas"]["organization-actions-secret"][]; - }; - }; - }; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - "actions/get-org-public-key": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["actions-public-key"]; - }; - }; - }; - /** - * Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - "actions/get-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret_name"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["organization-actions-secret"]; - }; - }; - }; - /** - * Creates or updates an organization secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to - * use this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/stable/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - "actions/create-or-update-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret_name"]; - }; - }; - requestBody: { - "application/json": { - /** - * Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/reference/actions#get-an-organization-public-key) endpoint. - */ - encrypted_value?: string; - /** - * ID of the key you used to encrypt the secret. - */ - key_id?: string; - /** - * Configures the access that repositories have to the organization secret. Can be one of: - * \- `all` - All repositories in an organization can access the secret. - * \- `private` - Private repositories in an organization can access the secret. - * \- `selected` - Only specific repositories can access the secret. - */ - visibility?: "all" | "private" | "selected"; - /** - * An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret) endpoints. - */ - selected_repository_ids?: string[]; - }; - }; - responses: { - /** - * Response when creating a secret - */ - "201": unknown; - /** - * Response when updating a secret - */ - "204": never; - }; - }; - /** - * Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - "actions/delete-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret_name"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - "actions/list-selected-repos-for-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret_name"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - repositories?: components["schemas"]["minimal-repository"][]; - }; - }; - }; - }; - /** - * Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - "actions/set-selected-repos-for-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret_name"]; - }; - }; - requestBody: { - "application/json": { - /** - * An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret) endpoints. - */ - selected_repository_ids?: number[]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - "actions/add-selected-repo-to-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret_name"]; - repository_id: number; - }; - }; - responses: { - /** - * Response when repository was added to the selected list - */ - "204": never; - /** - * Response when visibility type is not set to selected - */ - "409": unknown; - }; - }; - /** - * Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - "actions/remove-selected-repo-from-org-secret": { - parameters: { - path: { - org: components["parameters"]["org"]; - secret_name: components["parameters"]["secret_name"]; - repository_id: number; - }; - }; - responses: { - /** - * Response when repository was removed from the selected list - */ - "204": never; - /** - * Response when visibility type not set to selected - */ - "409": unknown; - }; - }; - /** - * List the users blocked by an organization. - */ - "orgs/list-blocked-users": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "415": unknown; - }; - }; - "orgs/check-blocked-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * If the user is blocked: - */ - "204": never; - /** - * If the user is not blocked: - */ - "404": { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - "orgs/block-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "422": unknown; - }; - }; - "orgs/unblock-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Listing and deleting credential authorizations is available to organizations with GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products). - * - * An authenticated organization owner with the `read:org` scope can list all credential authorizations for an organization that uses SAML single sign-on (SSO). The credentials are either personal access tokens or SSH keys that organization members have authorized for the organization. For more information, see [About authentication with SAML single sign-on](https://help.github.com/en/articles/about-authentication-with-saml-single-sign-on). - */ - "orgs/list-saml-sso-authorizations": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["credential-authorization"][]; - }; - }; - }; - /** - * Listing and deleting credential authorizations is available to organizations with GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products). - * - * An authenticated organization owner with the `admin:org` scope can remove a credential authorization for an organization that uses SAML SSO. Once you remove someone's credential authorization, they will need to create a new personal access token or SSH key and authorize it for the organization they want to access. - */ - "orgs/remove-saml-sso-authorization": { - parameters: { - path: { - org: components["parameters"]["org"]; - credential_id: number; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - "activity/list-public-org-events": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - "orgs/list-webhooks": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["org-hook"][]; - }; - "404": unknown; - }; - }; - /** - * Here's how you can create a hook that posts payloads in JSON format: - */ - "orgs/create-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * Must be passed as "web". - */ - name: string; - /** - * Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/orgs#create-hook-config-params). - */ - config: { - url: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - username?: string; - password?: string; - }; - /** - * Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. - */ - events?: string[]; - /** - * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. - */ - active?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["org-hook"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * Returns a webhook configured in an organization. To get only the webhook `config` properties, see "[Get a webhook configuration for an organization](/rest/reference/orgs#get-a-webhook-configuration-for-an-organization)." - */ - "orgs/get-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["org-hook"]; - }; - "404": unknown; - }; - }; - /** - * Updates a webhook configured in an organization. When you update a webhook, the `secret` will be overwritten. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for an organization](/rest/reference/orgs#update-a-webhook-configuration-for-an-organization)." - */ - "orgs/update-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/orgs#update-hook-config-params). - */ - config?: { - url: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - /** - * Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. - */ - events?: string[]; - /** - * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. - */ - active?: boolean; - name?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["org-hook"]; - }; - "404": unknown; - "422": unknown; - }; - }; - "orgs/delete-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/reference/orgs#get-an-organization-webhook)." - * - * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:read` permission. - */ - "orgs/get-webhook-config-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** - * Default response - */ - "200": { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - /** - * Updates the webhook configuration for an organization. To update more information about the webhook, including the `active` state and `events`, use "[Update an organization webhook ](/rest/reference/orgs#update-an-organization-webhook)." - * - * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:write` permission. - */ - "orgs/update-webhook-config-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - requestBody: { - "application/json": { - url?: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - }; - responses: { - /** - * Default response - */ - "200": { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - /** - * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. - */ - "orgs/ping-webhook": { - parameters: { - path: { - org: components["parameters"]["org"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * Enables an authenticated GitHub App to find the organization's installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-org-installation": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["installation"]; - }; - }; - }; - /** - * Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint. - */ - "orgs/list-app-installations": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - installations?: components["schemas"]["installation"][]; - }; - }; - }; - }; - /** - * Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response. - */ - "interactions/get-restrictions-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["interaction-limit-response"]; - }; - }; - }; - /** - * Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization. - */ - "interactions/set-restrictions-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": components["schemas"]["interaction-limit"]; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["interaction-limit-response"]; - }; - "422": unknown; - }; - }; - /** - * Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions. - */ - "interactions/remove-restrictions-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - */ - "orgs/list-pending-invitations": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["organization-invitation"][]; - }; - "404": unknown; - }; - }; - /** - * Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - "orgs/create-invitation": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * **Required unless you provide `email`**. GitHub user ID for the person you are inviting. - */ - invitee_id?: number; - /** - * **Required unless you provide `invitee_id`**. Email address of the person you are inviting, which can be an existing GitHub user. - */ - email?: string; - /** - * Specify role for new member. Can be one of: - * \* `admin` - Organization owners with full administrative rights to the organization and complete access to all repositories and teams. - * \* `direct_member` - Non-owner organization members with ability to see other members and join teams by invitation. - * \* `billing_manager` - Non-owner organization members with ability to manage the billing settings of your organization. - */ - role?: "admin" | "direct_member" | "billing_manager"; - /** - * Specify IDs for the teams you want to invite new members to. - */ - team_ids?: number[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["organization-invitation"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner. - */ - "orgs/list-invitation-teams": { - parameters: { - path: { - org: components["parameters"]["org"]; - invitation_id: components["parameters"]["invitation_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team"][]; - }; - "404": unknown; - }; - }; - /** - * List issues in an organization assigned to the authenticated user. - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - "issues/list-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - /** - * Indicates which sorts of issues to return. Can be one of: - * \* `assigned`: Issues assigned to you - * \* `created`: Issues created by you - * \* `mentioned`: Issues mentioning you - * \* `subscribed`: Issues you're subscribed to updates for - * \* `all`: All issues the authenticated user can see, regardless of participation or creation - */ - filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all"; - /** - * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`. - */ - state?: "open" | "closed" | "all"; - labels?: components["parameters"]["labels"]; - /** - * What to sort results by. Can be either `created`, `updated`, `comments`. - */ - sort?: "created" | "updated" | "comments"; - direction?: components["parameters"]["direction"]; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue"][]; - }; - "404": unknown; - }; - }; - /** - * List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned. - */ - "orgs/list-members": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - /** - * Filter members returned in the list. Can be one of: - * \* `2fa_disabled` - Members without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled. Available for organization owners. - * \* `all` - All members the authenticated user can see. - */ - filter?: "2fa_disabled" | "all"; - /** - * Filter members returned by their role. Can be one of: - * \* `all` - All members of the organization, regardless of role. - * \* `admin` - Organization owners. - * \* `member` - Non-owner organization members. - */ - role?: "all" | "admin" | "member"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - /** - * Response if requester is not an organization member - */ - "302": never; - "422": unknown; - }; - }; - /** - * Check if a user is, publicly or privately, a member of the organization. - */ - "orgs/check-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Response if requester is an organization member and user is a member - */ - "204": never; - /** - * Response if requester is not an organization member - */ - "302": never; - /** - * Response if requester is an organization member and user is not a member - */ - "404": unknown; - }; - }; - /** - * Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories. - */ - "orgs/remove-member": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "403": unknown; - }; - }; - /** - * In order to get a user's membership with an organization, the authenticated user must be an organization member. - */ - "orgs/get-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["org-membership"]; - }; - "403": unknown; - "404": unknown; - }; - }; - /** - * Only authenticated organization owners can add a member to the organization or update the member's role. - * - * * If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user) will be `pending` until they accept the invitation. - * - * * Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent. - * - * **Rate limits** - * - * To prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period. - */ - "orgs/set-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - requestBody: { - "application/json": { - /** - * The role to give the user in the organization. Can be one of: - * \* `admin` - The user will become an owner of the organization. - * \* `member` - The user will become a non-owner member of the organization. - */ - role?: "admin" | "member"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["org-membership"]; - }; - "403": unknown; - "422": unknown; - }; - }; - /** - * In order to remove a user's membership with an organization, the authenticated user must be an organization owner. - * - * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases. - */ - "orgs/remove-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Lists the most recent migrations. - */ - "migrations/list-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["migration"][]; - }; - }; - }; - /** - * Initiates the generation of a migration archive. - */ - "migrations/start-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * A list of arrays indicating which repositories should be migrated. - */ - repositories: string[]; - /** - * Indicates whether repositories should be locked (to prevent manipulation) while migrating data. - */ - lock_repositories?: boolean; - /** - * Indicates whether attachments should be excluded from the migration (to reduce migration archive file size). - */ - exclude_attachments?: boolean; - exclude?: string[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["migration"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * Fetches the status of a migration. - * - * The `state` of a migration can be one of the following values: - * - * * `pending`, which means the migration hasn't started yet. - * * `exporting`, which means the migration is in progress. - * * `exported`, which means the migration finished successfully. - * * `failed`, which means the migration failed. - */ - "migrations/get-status-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration_id"]; - }; - }; - responses: { - /** - * * `pending`, which means the migration hasn't started yet. - * * `exporting`, which means the migration is in progress. - * * `exported`, which means the migration finished successfully. - * * `failed`, which means the migration failed. - */ - "200": { - "application/json": components["schemas"]["migration"]; - }; - "404": unknown; - }; - }; - /** - * Fetches the URL to a migration archive. - */ - "migrations/download-archive-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration_id"]; - }; - }; - responses: { - /** - * response - */ - "302": never; - "404": unknown; - }; - }; - /** - * Deletes a previous migration archive. Migration archives are automatically deleted after seven days. - */ - "migrations/delete-archive-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/reference/repos#delete-a-repository) when the migration is complete and you no longer need the source data. - */ - "migrations/unlock-repo-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration_id"]; - repo_name: components["parameters"]["repo_name"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * List all the repositories for this organization migration. - */ - "migrations/list-repos-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - migration_id: components["parameters"]["migration_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - "404": unknown; - }; - }; - /** - * List all users who are outside collaborators of an organization. - */ - "orgs/list-outside-collaborators": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - /** - * Filter the list of outside collaborators. Can be one of: - * \* `2fa_disabled`: Outside collaborators without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled. - * \* `all`: All outside collaborators. - */ - filter?: "2fa_disabled" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - /** - * When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://help.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". - */ - "orgs/convert-member-to-outside-collaborator": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * User is getting converted asynchronously - */ - "202": unknown; - /** - * User was converted - */ - "204": never; - /** - * response - */ - "403": { - "application/json": { message?: string; documentation_url?: string }; - }; - "404": unknown; - }; - }; - /** - * Removing a user from this list will remove them from all the organization's repositories. - */ - "orgs/remove-outside-collaborator": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - /** - * Response if user is a member of the organization - */ - "422": { - "application/json": { message?: string; documentation_url?: string }; - }; - }; - }; - /** - * Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - "projects/list-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - /** - * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`. - */ - state?: "open" | "closed" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project"][]; - }; - "422": unknown; - }; - }; - /** - * Creates an organization project board. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - "projects/create-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the project. - */ - name: string; - /** - * The description of the project. - */ - body?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["project"]; - }; - "401": unknown; - "403": unknown; - "404": unknown; - "410": unknown; - "422": unknown; - }; - }; - /** - * Members of an organization can choose to have their membership publicized or not. - */ - "orgs/list-public-members": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - "orgs/check-public-membership-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Response if user is a public member - */ - "204": never; - /** - * Response if user is not a public member - */ - "404": unknown; - }; - }; - /** - * The user can publicize their own membership. (A user cannot publicize the membership for another user.) - * - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - "orgs/set-public-membership-for-authenticated-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "403": unknown; - }; - }; - "orgs/remove-public-membership-for-authenticated-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists repositories for the specified organization. - */ - "repos/list-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - /** - * Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`. - */ - type?: - | "all" - | "public" - | "private" - | "forks" - | "sources" - | "member" - | "internal"; - /** - * Can be one of `created`, `updated`, `pushed`, `full_name`. - */ - sort?: "created" | "updated" | "pushed" | "full_name"; - /** - * Can be one of `asc` or `desc`. Default: when using `full_name`: `asc`, otherwise `desc` - */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - }; - /** - * Creates a new repository in the specified organization. The authenticated user must be a member of the organization. - * - * **OAuth scope requirements** - * - * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: - * - * * `public_repo` scope or `repo` scope to create a public repository - * * `repo` scope to create a private repository - */ - "repos/create-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the repository. - */ - name: string; - /** - * A short description of the repository. - */ - description?: string; - /** - * A URL with more information about the repository. - */ - homepage?: string; - /** - * Either `true` to create a private repository or `false` to create a public one. - */ - private?: boolean; - /** - * Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see "[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)" in the GitHub Help documentation. - * The `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header. - */ - visibility?: "public" | "private" | "visibility" | "internal"; - /** - * Either `true` to enable issues for this repository or `false` to disable them. - */ - has_issues?: boolean; - /** - * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error. - */ - has_projects?: boolean; - /** - * Either `true` to enable the wiki for this repository or `false` to disable it. - */ - has_wiki?: boolean; - /** - * Either `true` to make this repo available as a template repository or `false` to prevent it. - */ - is_template?: boolean; - /** - * The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization. - */ - team_id?: number; - /** - * Pass `true` to create an initial commit with empty README. - */ - auto_init?: boolean; - /** - * Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell". - */ - gitignore_template?: string; - /** - * Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0". - */ - license_template?: string; - /** - * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging. - */ - allow_squash_merge?: boolean; - /** - * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits. - */ - allow_merge_commit?: boolean; - /** - * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging. - */ - allow_rebase_merge?: boolean; - /** - * Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion. - */ - delete_branch_on_merge?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["repository"]; - }; - "403": unknown; - "422": unknown; - }; - }; - /** - * Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * Access tokens must have the `read:org` scope. - */ - "billing/get-github-actions-billing-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["actions-billing-usage"]; - }; - }; - }; - /** - * Gets the free and paid storage usued for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * Access tokens must have the `read:org` scope. - */ - "billing/get-github-packages-billing-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["packages-billing-usage"]; - }; - }; - }; - /** - * Gets the estimated paid and estimated total storage used for GitHub Actions and Github Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * Access tokens must have the `read:org` scope. - */ - "billing/get-shared-storage-billing-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["combined-billing-usage"]; - }; - }; - }; - /** - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * List IdP groups available in an organization. You can limit your page results using the `per_page` parameter. GitHub generates a url-encoded `page` token using a cursor value for where the next page begins. For more information on cursor pagination, see "[Offset and Cursor Pagination explained](https://dev.to/jackmarchant/offset-and-cursor-pagination-explained-b89)." - * - * The `per_page` parameter provides pagination for a list of IdP groups the authenticated user can access in an organization. For example, if the user `octocat` wants to see two groups per page in `octo-org` via cURL, it would look like this: - */ - "teams/list-idp-groups-for-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["group-mapping"]; - }; - }; - }; - /** - * Lists all teams in an organization that are visible to the authenticated user. - */ - "teams/list": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team"][]; - }; - "403": unknown; - }; - }; - /** - * To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://help.github.com/en/articles/setting-team-creation-permissions-in-your-organization)." - * - * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/about-teams)". - */ - "teams/create": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the team. - */ - name: string; - /** - * The description of the team. - */ - description?: string; - /** - * List GitHub IDs for organization members who will become team maintainers. - */ - maintainers?: string[]; - /** - * The full name (e.g., "organization-name/repository-name") of repositories to add the team to. - */ - repo_names?: string[]; - /** - * The level of privacy this team should have. The options are: - * **For a non-nested team:** - * \* `secret` - only visible to organization owners and members of this team. - * \* `closed` - visible to all members of this organization. - * Default: `secret` - * **For a parent or child team:** - * \* `closed` - visible to all members of this organization. - * Default for child team: `closed` - */ - privacy?: "secret" | "closed"; - /** - * **Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of: - * \* `pull` - team members can pull, but not push to or administer newly-added repositories. - * \* `push` - team members can pull and push, but not administer newly-added repositories. - * \* `admin` - team members can pull, push and administer newly-added repositories. - */ - permission?: "pull" | "push" | "admin"; - /** - * The ID of a team to set as the parent team. - */ - parent_team_id?: number; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["team-full"]; - }; - "403": unknown; - "422": unknown; - }; - }; - /** - * Gets a team using the team's `slug`. GitHub generates the `slug` from the team `name`. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`. - */ - "teams/get-by-name": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-full"]; - }; - "404": unknown; - }; - }; - /** - * To edit a team, the authenticated user must either be an organization owner or a team maintainer. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`. - */ - "teams/update-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the team. - */ - name: string; - /** - * The description of the team. - */ - description?: string; - /** - * The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. When a team is nested, the `privacy` for parent teams cannot be `secret`. The options are: - * **For a non-nested team:** - * \* `secret` - only visible to organization owners and members of this team. - * \* `closed` - visible to all members of this organization. - * **For a parent or child team:** - * \* `closed` - visible to all members of this organization. - */ - privacy?: "secret" | "closed"; - /** - * **Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of: - * \* `pull` - team members can pull, but not push to or administer newly-added repositories. - * \* `push` - team members can pull and push, but not administer newly-added repositories. - * \* `admin` - team members can pull, push and administer newly-added repositories. - */ - permission?: "pull" | "push" | "admin"; - /** - * The ID of a team to set as the parent team. - */ - parent_team_id?: number; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["team-full"]; - }; - }; - }; - /** - * To delete a team, the authenticated user must be an organization owner or team maintainer. - * - * If you are an organization owner, deleting a parent team will delete all of its child teams as well. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`. - */ - "teams/delete-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`. - */ - "teams/list-discussions-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - query: { - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion"][]; - }; - }; - }; - /** - * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`. - */ - "teams/create-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - }; - requestBody: { - "application/json": { - /** - * The discussion post's title. - */ - title: string; - /** - * The discussion post's body text. - */ - body: string; - /** - * Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post. - */ - private?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - /** - * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - */ - "teams/get-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - /** - * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - */ - "teams/update-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The discussion post's title. - */ - title?: string; - /** - * The discussion post's body text. - */ - body?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - /** - * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - */ - "teams/delete-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - */ - "teams/list-discussion-comments-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - query: { - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion-comment"][]; - }; - }; - }; - /** - * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - */ - "teams/create-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The discussion comment's body text. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - /** - * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - */ - "teams/get-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - /** - * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - */ - "teams/update-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The discussion comment's body text. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - /** - * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - */ - "teams/delete-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * List the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments/). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - */ - "reactions/list-for-team-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - query: { - /** - * Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion comment. - */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["reaction"][]; - }; - }; - }; - /** - * Create a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion comment. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - */ - "reactions/create-for-team-discussion-comment-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion comment. - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["reaction"]; - }; - }; - }; - /** - * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "reactions/delete-for-team-discussion-comment": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * List the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - */ - "reactions/list-for-team-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - query: { - /** - * Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion. - */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["reaction"][]; - }; - }; - }; - /** - * Create a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - */ - "reactions/create-for-team-discussion-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion. - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["reaction"]; - }; - }; - }; - /** - * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "reactions/delete-for-team-discussion": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - discussion_number: components["parameters"]["discussion-number"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`. - */ - "teams/list-pending-invitations-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["organization-invitation"][]; - }; - }; - }; - /** - * Team members will include the members of child teams. - * - * To list members in a team, the team must be visible to the authenticated user. - */ - "teams/list-members-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - query: { - /** - * Filters members returned by their role in the team. Can be one of: - * \* `member` - normal members of the team. - * \* `maintainer` - team maintainers. - * \* `all` - all members of the team. - */ - role?: "member" | "maintainer" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - /** - * Team members will include the members of child teams. - * - * To get a user's membership with a team, the team must be visible to the authenticated user. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`. - * - * **Note:** The `role` for organization owners returns as `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team). - */ - "teams/get-membership-for-user-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-membership"]; - }; - /** - * Response if user has no team membership - */ - "404": unknown; - }; - }; - /** - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team. - * - * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. - * - * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - "teams/add-or-update-membership-for-user-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - username: components["parameters"]["username"]; - }; - }; - requestBody: { - "application/json": { - /** - * The role that this user should have in the team. Can be one of: - * \* `member` - a normal member of the team. - * \* `maintainer` - a team maintainer. Able to add/remove other team members, promote other team members to team maintainer, and edit the team's name and description. - */ - role?: "member" | "maintainer"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-membership"]; - }; - /** - * Response if team synchronization is set up - */ - "403": unknown; - /** - * Response if you attempt to add an organization to a team - */ - "422": { - "application/json": { - message?: string; - errors?: { code?: string; field?: string; resource?: string }[]; - }; - }; - }; - }; - /** - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. - * - * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - "teams/remove-membership-for-user-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - /** - * Response if team synchronization is set up - */ - "403": unknown; - }; - }; - /** - * Lists the organization projects for a team. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`. - */ - "teams/list-projects-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-project"][]; - }; - }; - }; - /** - * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects/{project_id}`. - */ - "teams/check-permissions-for-project-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-project"]; - }; - /** - * Response if project is not managed by this team - */ - "404": unknown; - }; - }; - /** - * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/projects/{project_id}`. - */ - "teams/add-or-update-project-permissions-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - project_id: components["parameters"]["project-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The permission to grant to the team for this project. Can be one of: - * \* `read` - team members can read, but not write to or administer this project. - * \* `write` - team members can read and write, but not administer this project. - * \* `admin` - team members can read, write and administer this project. - * Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - permission?: "read" | "write" | "admin"; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - /** - * Response if the project is not owned by the organization - */ - "403": { - "application/json": { message?: string; documentation_url?: string }; - }; - }; - }; - /** - * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. This endpoint removes the project from the team, but does not delete the project. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/projects/{project_id}`. - */ - "teams/remove-project-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists a team's repositories visible to the authenticated user. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`. - */ - "teams/list-repos-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - }; - /** - * Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked. - * - * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `application/vnd.github.v3.repository+json` accept header. - * - * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - "teams/check-permissions-for-repo-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Alternative response with repository permissions - */ - "200": { - "application/vnd.github.v3.repository+json": components["schemas"]["team-repository"]; - }; - /** - * Response if team has permission for the repository - */ - "204": never; - /** - * Response if team does not have permission for the repository - */ - "404": unknown; - }; - }; - /** - * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - * - * For more information about the permission levels, see "[Repository permission levels for an organization](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". - */ - "teams/add-or-update-repo-permissions-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The permission to grant the team on this repository. Can be one of: - * \* `pull` - team members can pull, but not push to or administer this repository. - * \* `push` - team members can pull and push, but not administer this repository. - * \* `admin` - team members can pull, push and administer this repository. - * \* `maintain` - team members can manage the repository without access to sensitive or destructive actions. Recommended for project managers. Only applies to repositories owned by organizations. - * \* `triage` - team members can proactively manage issues and pull requests without write access. Recommended for contributors who triage a repository. Only applies to repositories owned by organizations. - * - * If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository. - */ - permission?: "pull" | "push" | "admin" | "maintain" | "triage"; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - "teams/remove-repo-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * List IdP groups connected to a team on GitHub. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/team-sync/group-mappings`. - */ - "teams/list-idp-groups-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["group-mapping"]; - }; - }; - }; - /** - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty `groups` array will remove all connections for a team. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/team-sync/group-mappings`. - */ - "teams/create-or-update-idp-group-connections-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - }; - requestBody: { - "application/json": { - /** - * The IdP groups you want to connect to a GitHub team. When updating, the new `groups` object will replace the original one. You must include any existing groups that you don't want to remove. - */ - groups: { - /** - * ID of the IdP group. - */ - group_id: string; - /** - * Name of the IdP group. - */ - group_name: string; - /** - * Description of the IdP group. - */ - group_description: string; - }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["group-mapping"]; - }; - }; - }; - /** - * Lists the child teams of the team specified by `{team_slug}`. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`. - */ - "teams/list-child-in-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - team_slug: components["parameters"]["team_slug"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * Response if child teams exist - */ - "200": { - "application/json": components["schemas"]["team"][]; - }; - }; - }; - "projects/get-card": { - parameters: { - path: { - card_id: components["parameters"]["card_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project-card"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - "projects/update-card": { - parameters: { - path: { - card_id: components["parameters"]["card_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The project card's note - */ - note?: string | null; - /** - * Whether or not the card is archived - */ - archived?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project-card"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - "projects/delete-card": { - parameters: { - path: { - card_id: components["parameters"]["card_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - /** - * Forbidden - */ - "403": { - "application/json": { - message?: string; - documentation_url?: string; - errors?: string[]; - }; - }; - "404": unknown; - }; - }; - "projects/move-card": { - parameters: { - path: { - card_id: components["parameters"]["card_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The position of the card in a column - */ - position: string; - /** - * The unique identifier of the column the card should be moved to - */ - column_id?: number; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": { [key: string]: any }; - }; - "304": never; - "401": unknown; - /** - * Forbidden - */ - "403": { - "application/json": { - message?: string; - documentation_url?: string; - errors?: { - code?: string; - message?: string; - resource?: string; - field?: string; - }[]; - }; - }; - "422": unknown; - /** - * Service Unavailable - */ - "503": { - "application/json": { - code?: string; - message?: string; - documentation_url?: string; - errors?: { code?: string; message?: string }[]; - }; - }; - }; - }; - "projects/get-column": { - parameters: { - path: { - column_id: components["parameters"]["column_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project-column"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - "projects/update-column": { - parameters: { - path: { - column_id: components["parameters"]["column_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * Name of the project column - */ - name: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project-column"]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "projects/delete-column": { - parameters: { - path: { - column_id: components["parameters"]["column_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "projects/list-cards": { - parameters: { - path: { - column_id: components["parameters"]["column_id"]; - }; - query: { - /** - * Filters the project cards that are returned by the card's state. Can be one of `all`,`archived`, or `not_archived`. - */ - archived_state?: "all" | "archived" | "not_archived"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project-card"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. - * - * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - "projects/create-card": { - parameters: { - path: { - column_id: components["parameters"]["column_id"]; - }; - }; - requestBody: { - "application/json": - | { - /** - * The project card's note - */ - note: string | null; - } - | { - /** - * The unique identifier of the content associated with the card - */ - content_id: number; - /** - * The piece of content associated with the card - */ - content_type: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["project-card"]; - }; - "304": never; - "401": unknown; - "403": unknown; - /** - * Validation Failed - */ - "422": { - "application/json": - | components["schemas"]["validation-error"] - | components["schemas"]["validation-error-simple"]; - }; - /** - * Service Unavailable - */ - "503": { - "application/json": { - code?: string; - message?: string; - documentation_url?: string; - errors?: { code?: string; message?: string }[]; - }; - }; - }; - }; - "projects/move-column": { - parameters: { - path: { - column_id: components["parameters"]["column_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The position of the column in a project - */ - position: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": { [key: string]: any }; - }; - "304": never; - "401": unknown; - "403": unknown; - "422": unknown; - }; - }; - /** - * Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - "projects/get": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project"]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - "projects/update": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * Name of the project - */ - name?: string; - /** - * Body of the project - */ - body?: string | null; - /** - * State of the project; either 'open' or 'closed' - */ - state?: string; - /** - * The baseline permission that all organization members have on this project - */ - organization_permission?: "read" | "write" | "admin" | "none"; - /** - * Whether or not this project can be seen by everyone. - */ - private?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project"]; - }; - "304": never; - "401": unknown; - /** - * Forbidden - */ - "403": { - "application/json": { - message?: string; - documentation_url?: string; - errors?: string[]; - }; - }; - /** - * Response if the authenticated user does not have access to the project - */ - "404": unknown; - "410": unknown; - "422": unknown; - }; - }; - /** - * Deletes a project board. Returns a `404 Not Found` status if projects are disabled. - */ - "projects/delete": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** - * Delete Success - */ - "204": never; - "304": never; - "401": unknown; - /** - * Forbidden - */ - "403": { - "application/json": { - message?: string; - documentation_url?: string; - errors?: string[]; - }; - }; - "404": unknown; - "410": unknown; - }; - }; - /** - * Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators. - */ - "projects/list-collaborators": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - }; - query: { - /** - * Filters the collaborators by their affiliation. Can be one of: - * \* `outside`: Outside collaborators of a project that are not a member of the project's organization. - * \* `direct`: Collaborators with permissions to a project, regardless of organization membership status. - * \* `all`: All collaborators the authenticated user can see. - */ - affiliation?: "outside" | "direct" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * Adds a collaborator to an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator. - */ - "projects/add-collaborator": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - username: components["parameters"]["username"]; - }; - }; - requestBody: { - "application/json": { - /** - * The permission to grant the collaborator. - */ - permission?: "read" | "write" | "admin"; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator. - */ - "projects/remove-collaborator": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level. - */ - "projects/get-permission-for-user": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["repository-collaborator-permission"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - "projects/list-columns": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project-column"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "projects/create-column": { - parameters: { - path: { - project_id: components["parameters"]["project-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * Name of the project column - */ - name: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["project-column"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "422": unknown; - }; - }; - /** - * **Note:** Accessing this endpoint does not count against your REST API rate limit. - * - * **Note:** The `rate` object is deprecated. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object. - */ - "rate-limit/get": { - parameters: {}; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["rate-limit-overview"]; - }; - "304": never; - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Reactions API. We recommend migrating your existing code to use the new delete reactions endpoints. For more information, see this [blog post](https://developer.github.com/changes/2020-02-26-new-delete-reactions-endpoints/). - * - * OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), when deleting a [team discussion](https://docs.github.com/rest/reference/teams#discussions) or [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). - */ - "reactions/delete-legacy": { - parameters: { - path: { - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "410": unknown; - "415": unknown; - }; - }; - /** - * When you pass the `scarlet-witch-preview` media type, requests to get a repository will also return the repository's code of conduct if it can be detected from the repository's code of conduct file. - * - * The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network. - */ - "repos/get": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["full-repository"]; - }; - "301": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/reference/repos#replace-all-repository-topics) endpoint. - */ - "repos/update": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the repository. - */ - name?: string; - /** - * A short description of the repository. - */ - description?: string; - /** - * A URL with more information about the repository. - */ - homepage?: string; - /** - * Either `true` to make the repository private or `false` to make it public. Default: `false`. - * **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. - */ - private?: boolean; - /** - * Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. The `visibility` parameter overrides the `private` parameter when you use both along with the `nebula-preview` preview header. - */ - visibility?: "public" | "private" | "visibility" | "internal"; - /** - * Either `true` to enable issues for this repository or `false` to disable them. - */ - has_issues?: boolean; - /** - * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error. - */ - has_projects?: boolean; - /** - * Either `true` to enable the wiki for this repository or `false` to disable it. - */ - has_wiki?: boolean; - /** - * Either `true` to make this repo available as a template repository or `false` to prevent it. - */ - is_template?: boolean; - /** - * Updates the default branch for this repository. - */ - default_branch?: string; - /** - * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging. - */ - allow_squash_merge?: boolean; - /** - * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits. - */ - allow_merge_commit?: boolean; - /** - * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging. - */ - allow_rebase_merge?: boolean; - /** - * Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion. - */ - delete_branch_on_merge?: boolean; - /** - * `true` to archive this repository. **Note**: You cannot unarchive repositories through the API. - */ - archived?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["full-repository"]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required. - * - * If an organization owner has configured the organization to prevent members from deleting organization-owned - * repositories, you will get a `403 Forbidden` response. - */ - "repos/delete": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - /** - * If an organization owner has configured the organization to prevent members from deleting organization-owned repositories, a member will get this response: - */ - "403": { - "application/json": { message?: string; documentation_url?: string }; - }; - "404": unknown; - }; - }; - /** - * Lists all artifacts for a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/list-artifacts-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - artifacts?: components["schemas"]["artifact"][]; - }; - }; - }; - }; - /** - * Gets a specific artifact for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/get-artifact": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - artifact_id: components["parameters"]["artifact_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["artifact"]; - }; - }; - }; - /** - * Deletes an artifact for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - "actions/delete-artifact": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - artifact_id: components["parameters"]["artifact_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in - * the response header to find the URL for the download. The `:archive_format` must be `zip`. Anyone with read access to - * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. - * GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/download-artifact": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - artifact_id: components["parameters"]["artifact_id"]; - archive_format: string; - }; - }; - responses: { - /** - * response - */ - "302": never; - }; - }; - /** - * Gets a specific job in a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/get-job-for-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - job_id: components["parameters"]["job_id"]; - }; - }; - responses: { - /** - * response - */ - "202": { - "application/json": components["schemas"]["job"]; - }; - }; - }; - /** - * Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look - * for `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can - * use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must - * have the `actions:read` permission to use this endpoint. - */ - "actions/download-job-logs-for-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - job_id: components["parameters"]["job_id"]; - }; - }; - responses: { - /** - * response - */ - "302": never; - }; - }; - /** - * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository. - * - * You must authenticate using an access token with the `repo` scope to use this - * endpoint. GitHub Apps must have the `administration` repository permission to use this API. - */ - "actions/get-github-actions-permissions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["actions-repository-permissions"]; - }; - }; - }; - /** - * Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions in the repository. - * - * If the repository belongs to an organization or enterprise that has set restrictive permissions at the organization or enterprise levels, such as `allowed_actions` to `selected` actions, then you cannot override them for the repository. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. - */ - "actions/set-github-actions-permissions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - enabled: components["schemas"]["actions-enabled"]; - allowed_actions?: components["schemas"]["allowed-actions"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Gets the settings for selected actions that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. - */ - "actions/get-allowed-actions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["selected-actions"]; - }; - }; - }; - /** - * Sets the actions that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * If the repository belongs to an organization or enterprise that has `selected` actions set at the organization or enterprise levels, then you cannot override any of the allowed actions settings. - * - * To use the `patterns_allowed` setting for private repositories, the repository must belong to an enterprise. If the repository does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. - */ - "actions/set-allowed-actions-repository": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": components["schemas"]["selected-actions"]; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists all self-hosted runners configured in a repository. You must authenticate using an access token with the `repo` scope to use this endpoint. - */ - "actions/list-self-hosted-runners-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - runners?: components["schemas"]["runner"][]; - }; - }; - }; - }; - /** - * Lists binaries for the runner application that you can download and run. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. - */ - "actions/list-runner-applications-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner-application"][]; - }; - }; - }; - /** - * Returns a token that you can pass to the `config` script. The token expires after one hour. You must authenticate - * using an access token with the `repo` scope to use this endpoint. - * - * #### Example using registration token - * - * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. - * - * ``` - * ./config.sh --url https://github.com/octo-org/octo-repo-artifacts --token TOKEN - * ``` - */ - "actions/create-registration-token-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - /** - * Returns a token that you can pass to remove a self-hosted runner from a repository. The token expires after one hour. - * You must authenticate using an access token with the `repo` scope to use this endpoint. - * - * #### Example using remove token - * - * To remove your self-hosted runner from a repository, replace TOKEN with the remove token provided by this endpoint. - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - */ - "actions/create-remove-token-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["authentication-token"]; - }; - }; - }; - /** - * Gets a specific self-hosted runner configured in a repository. - * - * You must authenticate using an access token with the `repo` scope to use this - * endpoint. - */ - "actions/get-self-hosted-runner-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["runner"]; - }; - }; - }; - /** - * Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * You must authenticate using an access token with the `repo` - * scope to use this endpoint. - */ - "actions/delete-self-hosted-runner-from-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - runner_id: components["parameters"]["runner_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/list-workflow-runs-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - actor?: components["parameters"]["actor"]; - branch?: components["parameters"]["workflow-run-branch"]; - event?: components["parameters"]["event"]; - status?: components["parameters"]["workflow-run-status"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - workflow_runs?: components["schemas"]["workflow-run"][]; - }; - }; - }; - }; - /** - * Gets a specific workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/get-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["workflow-run"]; - }; - }; - }; - /** - * Delete a specific workflow run. Anyone with write access to the repository can use this endpoint. If the repository is - * private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:write` permission to use - * this endpoint. - */ - "actions/delete-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists artifacts for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/list-workflow-run-artifacts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - artifacts?: components["schemas"]["artifact"][]; - }; - }; - }; - }; - /** - * Cancels a workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - "actions/cancel-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** - * response - */ - "202": unknown; - }; - }; - /** - * Lists jobs for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). - */ - "actions/list-jobs-for-workflow-run": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - query: { - /** - * Filters jobs by their `completed_at` timestamp. Can be one of: - * \* `latest`: Returns jobs from the most recent execution of the workflow run. - * \* `all`: Returns all jobs for a workflow run, including from old executions of the workflow run. - */ - filter?: "latest" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - jobs?: components["schemas"]["job"][]; - }; - }; - }; - }; - /** - * Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for - * `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can use - * this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have - * the `actions:read` permission to use this endpoint. - */ - "actions/download-workflow-run-logs": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** - * response - */ - "302": never; - }; - }; - /** - * Deletes all logs for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - "actions/delete-workflow-run-logs": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Re-runs your workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - "actions/re-run-workflow": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** - * response - */ - "201": unknown; - }; - }; - /** - * Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/get-workflow-run-usage": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - run_id: components["parameters"]["run-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["workflow-run-usage"]; - }; - }; - }; - /** - * Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. - */ - "actions/list-repo-secrets": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - secrets?: components["schemas"]["actions-secret"][]; - }; - }; - }; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `secrets` repository permission to use this endpoint. - */ - "actions/get-repo-public-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["actions-public-key"]; - }; - }; - }; - /** - * Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. - */ - "actions/get-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret_name"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["actions-secret"]; - }; - }; - }; - /** - * Creates or updates a repository secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use - * this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/stable/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - "actions/create-or-update-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret_name"]; - }; - }; - requestBody: { - "application/json": { - /** - * Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/reference/actions#get-a-repository-public-key) endpoint. - */ - encrypted_value?: string; - /** - * ID of the key you used to encrypt the secret. - */ - key_id?: string; - }; - }; - responses: { - /** - * Response when creating a secret - */ - "201": unknown; - /** - * Response when updating a secret - */ - "204": never; - }; - }; - /** - * Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. - */ - "actions/delete-repo-secret": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - secret_name: components["parameters"]["secret_name"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists the workflows in a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/list-repo-workflows": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - workflows?: components["schemas"]["workflow"][]; - }; - }; - }; - }; - /** - * Gets a specific workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/get-workflow": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["workflow"]; - }; - }; - }; - /** - * Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - "actions/disable-workflow": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)." - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line)." - */ - "actions/create-workflow-dispatch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The git reference for the workflow. The reference can be a branch or tag name. - */ - ref: string; - /** - * Input keys and values configured in the workflow file. The maximum number of properties is 10. Any default properties configured in the workflow file will be used when `inputs` are omitted. - */ - inputs?: { [key: string]: string }; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - "actions/enable-workflow": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. - */ - "actions/list-workflow-runs": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - query: { - actor?: components["parameters"]["actor"]; - branch?: components["parameters"]["workflow-run-branch"]; - event?: components["parameters"]["event"]; - status?: components["parameters"]["workflow-run-status"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - workflow_runs?: components["schemas"]["workflow-run"][]; - }; - }; - }; - }; - /** - * Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - "actions/get-workflow-usage": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - workflow_id: components["parameters"]["workflow-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["workflow-usage"]; - }; - }; - }; - /** - * Lists the [available assignees](https://help.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository. - */ - "issues/list-assignees": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "404": unknown; - }; - }; - /** - * Checks if a user has permission to be assigned to an issue in this repository. - * - * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. - * - * Otherwise a `404` status code is returned. - */ - "issues/check-user-can-be-assigned": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - assignee: string; - }; - }; - responses: { - /** - * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. - */ - "204": never; - /** - * Otherwise a `404` status code is returned. - */ - "404": { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - /** - * Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)". - */ - "repos/enable-automated-security-fixes": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)". - */ - "repos/disable-automated-security-fixes": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - "repos/list-branches": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * Setting to `true` returns only protected branches. When set to `false`, only unprotected branches are returned. Omitting this parameter returns all branches. - */ - protected?: boolean; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["short-branch"][]; - }; - "404": unknown; - }; - }; - "repos/get-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["branch-with-protection"]; - }; - "404": unknown; - "415": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["branch-protection"]; - }; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Protecting a branch requires admin or owner permissions to the repository. - * - * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. - * - * **Note**: The list of users, apps, and teams in total is limited to 100 items. - */ - "repos/update-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * Require status checks to pass before merging. Set to `null` to disable. - */ - required_status_checks: { - /** - * Require branches to be up to date before merging. - */ - strict: boolean; - /** - * The list of status checks to require in order to merge into this branch - */ - contexts: string[]; - } | null; - /** - * Enforce all configured restrictions for administrators. Set to `true` to enforce required status checks for repository administrators. Set to `null` to disable. - */ - enforce_admins: boolean | null; - /** - * Require at least one approving review on a pull request, before merging. Set to `null` to disable. - */ - required_pull_request_reviews: { - /** - * Specify which users and teams can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories. - */ - dismissal_restrictions?: { - /** - * The list of user `login`s with dismissal access - */ - users?: string[]; - /** - * The list of team `slug`s with dismissal access - */ - teams?: string[]; - }; - /** - * Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit. - */ - dismiss_stale_reviews?: boolean; - /** - * Blocks merging pull requests until [code owners](https://help.github.com/articles/about-code-owners/) review them. - */ - require_code_owner_reviews?: boolean; - /** - * Specify the number of reviewers required to approve pull requests. Use a number between 1 and 6. - */ - required_approving_review_count?: number; - } | null; - /** - * Restrict who can push to the protected branch. User, app, and team `restrictions` are only available for organization-owned repositories. Set to `null` to disable. - */ - restrictions: { - /** - * The list of user `login`s with push access - */ - users: string[]; - /** - * The list of team `slug`s with push access - */ - teams: string[]; - /** - * The list of app `slug`s with push access - */ - apps?: string[]; - } | null; - /** - * Enforces a linear commit Git history, which prevents anyone from pushing merge commits to a branch. Set to `true` to enforce a linear commit history. Set to `false` to disable a linear commit Git history. Your repository must allow squash merging or rebase merging before you can enable a linear commit history. Default: `false`. For more information, see "[Requiring a linear commit history](https://help.github.com/github/administering-a-repository/requiring-a-linear-commit-history)" in the GitHub Help documentation. - */ - required_linear_history?: boolean; - /** - * Permits force pushes to the protected branch by anyone with write access to the repository. Set to `true` to allow force pushes. Set to `false` or `null` to block force pushes. Default: `false`. For more information, see "[Enabling force pushes to a protected branch](https://help.github.com/en/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)" in the GitHub Help documentation." - */ - allow_force_pushes?: boolean | null; - /** - * Allows deletion of the protected branch by anyone with write access to the repository. Set to `false` to prevent deletion of the protected branch. Default: `false`. For more information, see "[Enabling force pushes to a protected branch](https://help.github.com/en/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)" in the GitHub Help documentation. - */ - allow_deletions?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["protected-branch"]; - }; - "403": unknown; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/delete-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "403": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-admin-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["protected-branch-admin-enforced"]; - }; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - "repos/set-admin-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["protected-branch-admin-enforced"]; - }; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - "repos/delete-admin-branch-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * No Content - */ - "204": never; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-pull-request-review-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/vnd.github.luke-cage-preview+json": components["schemas"]["protected-branch-pull-request-review"]; - }; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - * - * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. - */ - "repos/update-pull-request-review-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * Specify which users and teams can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories. - */ - dismissal_restrictions?: { - /** - * The list of user `login`s with dismissal access - */ - users?: string[]; - /** - * The list of team `slug`s with dismissal access - */ - teams?: string[]; - }; - /** - * Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit. - */ - dismiss_stale_reviews?: boolean; - /** - * Blocks merging pull requests until [code owners](https://help.github.com/articles/about-code-owners/) have reviewed. - */ - require_code_owner_reviews?: boolean; - /** - * Specifies the number of reviewers required to approve pull requests. Use a number between 1 and 6. - */ - required_approving_review_count?: number; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["protected-branch-pull-request-review"]; - }; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/delete-pull-request-review-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * No Content - */ - "204": never; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://help.github.com/articles/signing-commits-with-gpg) in GitHub Help. - * - * **Note**: You must enable branch protection to require signed commits. - */ - "repos/get-commit-signature-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["protected-branch-admin-enforced"]; - }; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits. - */ - "repos/create-commit-signature-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["protected-branch-admin-enforced"]; - }; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits. - */ - "repos/delete-commit-signature-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * No Content - */ - "204": never; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-status-checks-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["status-check-policy"]; - }; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. - */ - "repos/update-status-check-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * Require branches to be up to date before merging. - */ - strict?: boolean; - /** - * The list of status checks to require in order to merge into this branch - */ - contexts?: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["status-check-policy"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/remove-status-check-protection": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * No Content - */ - "204": never; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/get-all-status-check-contexts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": string[]; - }; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/add-status-check-contexts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * contexts parameter - */ - contexts: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": string[]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/set-status-check-contexts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * contexts parameter - */ - contexts: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": string[]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "repos/remove-status-check-contexts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * contexts parameter - */ - contexts: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": string[]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists who has access to this protected branch. - * - * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories. - */ - "repos/get-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["branch-restriction-policy"]; - }; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Disables the ability to restrict who can push to this branch. - */ - "repos/delete-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * No Content - */ - "204": never; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. - */ - "repos/get-apps-with-access-to-protected-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["integration"][]; - }; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. - * - * | Type | Description | - * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/add-app-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * apps parameter - */ - apps: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["integration"][]; - }; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. - * - * | Type | Description | - * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/set-app-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * apps parameter - */ - apps: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["integration"][]; - }; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. - * - * | Type | Description | - * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/remove-app-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * apps parameter - */ - apps: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["integration"][]; - }; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the teams who have push access to this branch. The list includes child teams. - */ - "repos/get-teams-with-access-to-protected-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team"][]; - }; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified teams push access for this branch. You can also give push access to child teams. - * - * | Type | Description | - * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | - * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/add-team-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * teams parameter - */ - teams: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team"][]; - }; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams. - * - * | Type | Description | - * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | - * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/set-team-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * teams parameter - */ - teams: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team"][]; - }; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a team to push to this branch. You can also remove push access for child teams. - * - * | Type | Description | - * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Teams that should no longer have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/remove-team-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * teams parameter - */ - teams: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team"][]; - }; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the people who have push access to this branch. - */ - "repos/get-users-with-access-to-protected-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "404": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified people push access for this branch. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/add-user-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * users parameter - */ - users: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/set-user-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * users parameter - */ - users: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "422": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a user to push to this branch. - * - * | Type | Description | - * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - "repos/remove-user-access-restrictions": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - branch: components["parameters"]["branch"]; - }; - }; - requestBody: { - "application/json": { - /** - * users parameter - */ - users: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "422": unknown; - }; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs. - * - * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs. - */ - "checks/create": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the check. For example, "code-coverage". - */ - name: string; - /** - * The SHA of the commit. - */ - head_sha: string; - /** - * The URL of the integrator's site that has the full details of the check. If the integrator does not provide this, then the homepage of the GitHub app is used. - */ - details_url?: string; - /** - * A reference for the run on the integrator's system. - */ - external_id?: string; - /** - * The current status. Can be one of `queued`, `in_progress`, or `completed`. - */ - status?: "queued" | "in_progress" | "completed"; - /** - * The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - started_at?: string; - /** - * **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `skipped`, `timed_out`, or `action_required`. When the conclusion is `action_required`, additional details should be provided on the site specified by `details_url`. - * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. Only GitHub can change a check run conclusion to `stale`. - */ - conclusion?: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "skipped" - | "timed_out" - | "action_required"; - /** - * The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - completed_at?: string; - /** - * Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://docs.github.com/rest/reference/checks#output-object) description. - */ - output?: { - /** - * The title of the check run. - */ - title: string; - /** - * The summary of the check run. This parameter supports Markdown. - */ - summary: string; - /** - * The details of the check run. This parameter supports Markdown. - */ - text?: string; - /** - * Adds information from your analysis to specific lines of code. Annotations are visible on GitHub in the **Checks** and **Files changed** tab of the pull request. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/reference/checks#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. For details about how you can view annotations on GitHub, see "[About status checks](https://help.github.com/articles/about-status-checks#checks)". See the [`annotations` object](https://docs.github.com/rest/reference/checks#annotations-object) description for details about how to use this parameter. - */ - annotations?: { - /** - * The path of the file to add an annotation to. For example, `assets/css/main.css`. - */ - path: string; - /** - * The start line of the annotation. - */ - start_line: number; - /** - * The end line of the annotation. - */ - end_line: number; - /** - * The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. - */ - start_column?: number; - /** - * The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. - */ - end_column?: number; - /** - * The level of the annotation. Can be one of `notice`, `warning`, or `failure`. - */ - annotation_level: "notice" | "warning" | "failure"; - /** - * A short description of the feedback for these lines of code. The maximum size is 64 KB. - */ - message: string; - /** - * The title that represents the annotation. The maximum size is 255 characters. - */ - title?: string; - /** - * Details about this annotation. The maximum size is 64 KB. - */ - raw_details?: string; - }[]; - /** - * Adds images to the output displayed in the GitHub pull request UI. See the [`images` object](https://docs.github.com/rest/reference/checks#images-object) description for details. - */ - images?: { - /** - * The alternative text for the image. - */ - alt: string; - /** - * The full URL of the image. - */ - image_url: string; - /** - * A short image description. - */ - caption?: string; - }[]; - }; - /** - * Displays a button on GitHub that can be clicked to alert your app to do additional tasks. For example, a code linting app can display a button that automatically fixes detected errors. The button created in this object is displayed after the check run completes. When a user clicks the button, GitHub sends the [`check_run.requested_action` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) to your app. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://docs.github.com/rest/reference/checks#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions)." To learn more about check runs and requested actions, see "[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions)." - */ - actions?: { - /** - * The text to be displayed on a button in the web UI. The maximum size is 20 characters. - */ - label: string; - /** - * A short explanation of what this action would do. The maximum size is 40 characters. - */ - description: string; - /** - * A reference for the action on the integrator's system. The maximum size is 20 characters. - */ - identifier: string; - }[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["check-run"]; - }; - }; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. - */ - "checks/get": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_run_id: components["parameters"]["check_run_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["check-run"]; - }; - }; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs. - */ - "checks/update": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_run_id: components["parameters"]["check_run_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the check. For example, "code-coverage". - */ - name?: string; - /** - * The URL of the integrator's site that has the full details of the check. - */ - details_url?: string; - /** - * A reference for the run on the integrator's system. - */ - external_id?: string; - /** - * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - started_at?: string; - /** - * The current status. Can be one of `queued`, `in_progress`, or `completed`. - */ - status?: "queued" | "in_progress" | "completed"; - /** - * **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `skipped`, `timed_out`, or `action_required`. - * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. Only GitHub can change a check run conclusion to `stale`. - */ - conclusion?: - | "success" - | "failure" - | "neutral" - | "cancelled" - | "skipped" - | "timed_out" - | "action_required"; - /** - * The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - completed_at?: string; - /** - * Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://docs.github.com/rest/reference/checks#output-object-1) description. - */ - output?: { - /** - * **Required**. - */ - title?: string; - /** - * Can contain Markdown. - */ - summary: string; - /** - * Can contain Markdown. - */ - text?: string; - /** - * Adds information from your analysis to specific lines of code. Annotations are visible in GitHub's pull request UI. Annotations are visible in GitHub's pull request UI. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/reference/checks#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. For details about annotations in the UI, see "[About status checks](https://help.github.com/articles/about-status-checks#checks)". See the [`annotations` object](https://docs.github.com/rest/reference/checks#annotations-object-1) description for details. - */ - annotations?: { - /** - * The path of the file to add an annotation to. For example, `assets/css/main.css`. - */ - path: string; - /** - * The start line of the annotation. - */ - start_line: number; - /** - * The end line of the annotation. - */ - end_line: number; - /** - * The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. - */ - start_column?: number; - /** - * The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. - */ - end_column?: number; - /** - * The level of the annotation. Can be one of `notice`, `warning`, or `failure`. - */ - annotation_level: "notice" | "warning" | "failure"; - /** - * A short description of the feedback for these lines of code. The maximum size is 64 KB. - */ - message: string; - /** - * The title that represents the annotation. The maximum size is 255 characters. - */ - title?: string; - /** - * Details about this annotation. The maximum size is 64 KB. - */ - raw_details?: string; - }[]; - /** - * Adds images to the output displayed in the GitHub pull request UI. See the [`images` object](https://docs.github.com/rest/reference/checks#annotations-object-1) description for details. - */ - images?: { - /** - * The alternative text for the image. - */ - alt: string; - /** - * The full URL of the image. - */ - image_url: string; - /** - * A short image description. - */ - caption?: string; - }[]; - }; - /** - * Possible further actions the integrator can perform, which a user may trigger. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://docs.github.com/rest/reference/checks#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions)." - */ - actions?: { - /** - * The text to be displayed on a button in the web UI. The maximum size is 20 characters. - */ - label: string; - /** - * A short explanation of what this action would do. The maximum size is 40 characters. - */ - description: string; - /** - * A reference for the action on the integrator's system. The maximum size is 20 characters. - */ - identifier: string; - }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["check-run"]; - }; - }; - }; - /** - * Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth Apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository. - */ - "checks/list-annotations": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_run_id: components["parameters"]["check_run_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["check-annotation"][]; - }; - }; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/reference/checks#check-runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites)". Your GitHub App must have the `checks:write` permission to create check suites. - */ - "checks/create-suite": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The sha of the head commit. - */ - head_sha: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["check-suite"]; - }; - }; - }; - /** - * Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/reference/checks#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites. - */ - "checks/set-suites-preferences": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * Enables or disables automatic creation of CheckSuite events upon pushes to the repository. Enabled by default. See the [`auto_trigger_checks` object](https://docs.github.com/rest/reference/checks#auto_trigger_checks-object) description for details. - */ - auto_trigger_checks?: { - /** - * The `id` of the GitHub App. - */ - app_id: number; - /** - * Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository, or `false` to disable them. - */ - setting: boolean; - }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["check-suite-preference"]; - }; - }; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. - */ - "checks/get-suite": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_suite_id: components["parameters"]["check_suite_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["check-suite"]; - }; - }; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. - */ - "checks/list-for-suite": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_suite_id: components["parameters"]["check_suite_id"]; - }; - query: { - check_name?: components["parameters"]["check_name"]; - status?: components["parameters"]["status"]; - /** - * Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`. - */ - filter?: "latest" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - check_runs?: components["schemas"]["check-run"][]; - }; - }; - }; - }; - /** - * Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. - * - * To rerequest a check suite, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository. - */ - "checks/rerequest-suite": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - check_suite_id: components["parameters"]["check_suite_id"]; - }; - }; - responses: { - /** - * response - */ - "201": unknown; - }; - }; - /** - * Lists all open code scanning alerts for the default branch (usually `main` or `master`). For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. GitHub Apps must have the `security_events` read permission to use this endpoint. - */ - "code-scanning/list-alerts-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * Set to `open`, `fixed`, or `dismissed` to list code scanning alerts in a specific state. - */ - state?: components["schemas"]["code-scanning-alert-state"]; - /** - * Set a full Git reference to list alerts for a specific branch. The `ref` must be formatted as `refs/heads/`. - */ - ref?: components["schemas"]["code-scanning-alert-ref"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["code-scanning-alert-code-scanning-alert-items"][]; - }; - /** - * Response if the ref does not match an existing ref - */ - "404": unknown; - "503": unknown; - }; - }; - /** - * Gets a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` read permission to use this endpoint. - * - * The security `alert_number` is found at the end of the security alert's URL. For example, the security alert ID for `https://github.com/Octo-org/octo-repo/security/code-scanning/88` is `88`. - */ - "code-scanning/get-alert": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: number; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["code-scanning-alert-code-scanning-alert"]; - }; - "404": unknown; - "503": unknown; - }; - }; - /** - * Updates the status of a single code scanning alert. For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. - * GitHub Apps must have the `security_events` write permission to use this endpoint. - */ - "code-scanning/update-alert": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert_number"]; - }; - }; - requestBody: { - "application/json": { - state: components["schemas"]["code-scanning-alert-set-state"]; - dismissed_reason?: components["schemas"]["code-scanning-alert-dismissed-reason"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["code-scanning-alert-code-scanning-alert"]; - }; - /** - * Response if the repository is archived - */ - "403": unknown; - /** - * Response when code scanning is not available and you should try again at a later time - */ - "503": unknown; - }; - }; - /** - * List the details of recent code scanning analyses for a repository. For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. GitHub Apps must have the `security_events` read permission to use this endpoint. - */ - "code-scanning/list-recent-analyses": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * Set a full Git reference to list alerts for a specific branch. The `ref` must be formatted as `refs/heads/`. - */ - ref?: components["schemas"]["code-scanning-analysis-ref"]; - /** - * Set a single code scanning tool name to filter alerts by tool. - */ - tool_name?: components["schemas"]["code-scanning-analysis-tool-name"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["code-scanning-analysis-code-scanning-analysis"][]; - }; - }; - }; - /** - * Upload a SARIF file containing the results of a code scanning analysis to make the results available in a repository. - * For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. GitHub Apps must have the `security_events` write permission to use this endpoint. - */ - "code-scanning/upload-sarif": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - commit_sha: components["schemas"]["code-scanning-analysis-commit-sha"]; - ref: components["schemas"]["code-scanning-analysis-ref"]; - sarif: components["schemas"]["code-scanning-analysis-sarif-file"]; - /** - * The base directory used in the analysis, as it appears in the SARIF file. - * This property is used to convert file paths from absolute to relative, so that alerts can be mapped to their correct location in the repository. - */ - checkout_uri?: string; - /** - * The time that the analysis run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - started_at?: string; - tool_name: components["schemas"]["code-scanning-analysis-tool-name"]; - }; - }; - responses: { - /** - * response - */ - "202": unknown; - /** - * Response if the `sarif` field is invalid - */ - "400": unknown; - /** - * Response if the repository is archived - */ - "403": unknown; - /** - * Response if `commit_sha` or `ref` cannot be found - */ - "404": unknown; - /** - * Response if the `sarif` field is too large - */ - "413": unknown; - }; - }; - /** - * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * - * Team members will include the members of child teams. - */ - "repos/list-collaborators": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * Filter collaborators returned by their affiliation. Can be one of: - * \* `outside`: All outside collaborators of an organization-owned repository. - * \* `direct`: All collaborators with permissions to an organization-owned repository, regardless of organization membership status. - * \* `all`: All collaborators the authenticated user can see. - */ - affiliation?: "outside" | "direct" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["collaborator"][]; - }; - "404": unknown; - }; - }; - /** - * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * - * Team members will include the members of child teams. - */ - "repos/check-collaborator": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Response if user is a collaborator - */ - "204": never; - /** - * Response if user is not a collaborator - */ - "404": unknown; - }; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * For more information the permission levels, see "[Repository permission levels for an organization](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - * - * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [repository invitations API endpoints](https://docs.github.com/rest/reference/repos#invitations). - * - * **Rate limits** - * - * To prevent abuse, you are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository. - */ - "repos/add-collaborator": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - username: components["parameters"]["username"]; - }; - }; - requestBody: { - "application/json": { - /** - * The permission to grant the collaborator. **Only valid on organization-owned repositories.** Can be one of: - * \* `pull` - can pull, but not push to or administer this repository. - * \* `push` - can pull and push, but not administer this repository. - * \* `admin` - can pull, push and administer this repository. - * \* `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions. - * \* `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access. - */ - permission?: "pull" | "push" | "admin" | "maintain" | "triage"; - permissions?: string; - }; - }; - responses: { - /** - * Response when a new invitation is created - */ - "201": { - "application/json": components["schemas"]["repository-invitation"]; - }; - /** - * Response when person is already a collaborator - */ - "204": never; - "403": unknown; - "422": unknown; - }; - }; - "repos/remove-collaborator": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Checks the repository permission of a collaborator. The possible repository permissions are `admin`, `write`, `read`, and `none`. - */ - "repos/get-collaborator-permission-level": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Response if user has admin permissions - */ - "200": { - "application/json": components["schemas"]["repository-collaborator-permission"]; - }; - "404": unknown; - }; - }; - /** - * Commit Comments use [these custom media types](https://docs.github.com/rest/reference/repos#custom-media-types). You can read more about the use of media types in the API [here](https://docs.github.com/rest/overview/media-types/). - * - * Comments are ordered by ascending ID. - */ - "repos/list-commit-comments-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["commit-comment"][]; - }; - }; - }; - "repos/get-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["commit-comment"]; - }; - "404": unknown; - }; - }; - "repos/update-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The contents of the comment - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["commit-comment"]; - }; - "404": unknown; - }; - }; - "repos/delete-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * List the reactions to a [commit comment](https://docs.github.com/rest/reference/repos#comments). - */ - "reactions/list-for-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - query: { - /** - * Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a commit comment. - */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["reaction"][]; - }; - "404": unknown; - "415": unknown; - }; - }; - /** - * Create a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). A response with a `Status: 200 OK` means that you already added the reaction type to this commit comment. - */ - "reactions/create-for-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the commit comment. - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - responses: { - /** - * Reaction exists - */ - "200": { - "application/json": components["schemas"]["reaction"]; - }; - /** - * Reaction created - */ - "201": { - "application/json": components["schemas"]["reaction"]; - }; - "415": unknown; - "422": unknown; - }; - }; - /** - * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). - */ - "reactions/delete-for-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "repos/list-commits": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * SHA or branch to start listing commits from. Default: the repository’s default branch (usually `master`). - */ - sha?: string; - /** - * Only commits containing this file path will be returned. - */ - path?: string; - /** - * GitHub login or email address by which to filter by commit author. - */ - author?: string; - since?: components["parameters"]["since"]; - /** - * Only commits before this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - until?: string; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["commit"][]; - }; - "400": unknown; - "404": unknown; - "409": unknown; - "500": unknown; - }; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch. - */ - "repos/list-branches-for-head-commit": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit_sha"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["branch-short"][]; - }; - "415": unknown; - "422": unknown; - }; - }; - /** - * Use the `:commit_sha` to specify the commit that will have its comments listed. - */ - "repos/list-comments-for-commit": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit_sha"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["commit-comment"][]; - }; - }; - }; - /** - * Create a comment for a commit using its `:commit_sha`. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - "repos/create-commit-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit_sha"]; - }; - }; - requestBody: { - "application/json": { - /** - * The contents of the comment. - */ - body: string; - /** - * Relative path of the file to comment on. - */ - path?: string; - /** - * Line index in the diff to comment on. - */ - position?: number; - /** - * **Deprecated**. Use **position** parameter instead. Line number in the file to comment on. - */ - line?: number; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["commit-comment"]; - }; - "403": unknown; - "422": unknown; - }; - }; - /** - * Lists all pull requests containing the provided commit SHA, which can be from any point in the commit history. The results will include open and closed pull requests. Additional preview headers may be required to see certain details for associated pull requests, such as whether a pull request is in a draft state. For more information about previews that might affect this endpoint, see the [List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests) endpoint. - */ - "repos/list-pull-requests-associated-with-commit": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit_sha"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-simple"][]; - }; - "415": unknown; - }; - }; - /** - * Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint. - * - * **Note:** If there are more than 300 files in the commit diff, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing. - * - * You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property. - * - * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "repos/get-commit": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * ref+ parameter - */ - ref: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["commit"]; - }; - "404": unknown; - "422": unknown; - "500": unknown; - }; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. - */ - "checks/list-for-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * ref+ parameter - */ - ref: string; - }; - query: { - check_name?: components["parameters"]["check_name"]; - status?: components["parameters"]["status"]; - /** - * Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`. - */ - filter?: "latest" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - check_runs?: components["schemas"]["check-run"][]; - }; - }; - }; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. - */ - "checks/list-suites-for-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * ref+ parameter - */ - ref: string; - }; - query: { - /** - * Filters check suites by GitHub App `id`. - */ - app_id?: number; - check_name?: components["parameters"]["check_name"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - check_suites?: components["schemas"]["check-suite"][]; - }; - }; - }; - }; - /** - * Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. - * - * The most recent status for each context is returned, up to 100. This field [paginates](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination) if there are over 100 contexts. - * - * Additionally, a combined `state` is returned. The `state` is one of: - * - * * **failure** if any of the contexts report as `error` or `failure` - * * **pending** if there are no statuses or a context is `pending` - * * **success** if the latest status for all contexts is `success` - */ - "repos/get-combined-status-for-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * ref+ parameter - */ - ref: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["combined-commit-status"]; - }; - "404": unknown; - }; - }; - /** - * Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one. - * - * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`. - */ - "repos/list-commit-statuses-for-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * ref+ parameter - */ - ref: string; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["status"][]; - }; - "301": never; - }; - }; - /** - * This method returns the contents of the repository's code of conduct file, if one is detected. - */ - "codes-of-conduct/get-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["code-of-conduct"]; - }; - }; - }; - /** - * This endpoint will return all community profile metrics, including an - * overall health score, repository description, the presence of documentation, detected - * code of conduct, detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, - * README, and CONTRIBUTING files. - * - * `content_reports_enabled` is only returned for organization-owned repositories. - */ - "repos/get-community-profile-metrics": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["community-profile"]; - }; - }; - }; - /** - * Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `:branch`. - * - * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. - * - * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. - * - * **Working with large comparisons** - * - * The response will include a comparison of up to 250 commits. If you are working with a larger commit range, you can use the [List commits](https://docs.github.com/rest/reference/repos#list-commits) to enumerate all commits in the range. - * - * For comparisons with extremely large diffs, you may receive an error response indicating that the diff took too long - * to generate. You can typically resolve this error by using a smaller commit range. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "repos/compare-commits": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - base: string; - head: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["commit-comparison"]; - }; - "404": unknown; - "500": unknown; - }; - }; - /** - * Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit - * `:path`, you will receive the contents of all files in the repository. - * - * Files and symlinks support [a custom media type](https://docs.github.com/rest/reference/repos#custom-media-types) for - * retrieving the raw content or rendered HTML (when supported). All content types support [a custom media - * type](https://docs.github.com/rest/reference/repos#custom-media-types) to ensure the content is returned in a consistent - * object format. - * - * **Note**: - * * To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/reference/git#trees). - * * This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees - * API](https://docs.github.com/rest/reference/git#get-a-tree). - * * This API supports files up to 1 megabyte in size. - * - * #### If the content is a directory - * The response will be an array of objects, one object for each item in the directory. - * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value - * _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW). - * In the next major version of the API, the type will be returned as "submodule". - * - * #### If the content is a symlink - * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the - * API responds with the content of the file (in the format shown in the example. Otherwise, the API responds with an object - * describing the symlink itself. - * - * #### If the content is a submodule - * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific - * commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out - * the submodule at that specific commit. - * - * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the - * github.com URLs (`html_url` and `_links["html"]`) will have null values. - */ - "repos/get-content": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * path+ parameter - */ - path: string; - }; - query: { - /** - * The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`) - */ - ref?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/vnd.github.v3.object": components["schemas"]["content-tree"]; - "application/json": - | components["schemas"]["content-directory"] - | components["schemas"]["content-file"] - | components["schemas"]["content-symlink"] - | components["schemas"]["content-submodule"]; - }; - "302": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Creates a new file or replaces an existing file in a repository. - */ - "repos/create-or-update-file-contents": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * path+ parameter - */ - path: string; - }; - }; - requestBody: { - "application/json": { - /** - * The commit message. - */ - message: string; - /** - * The new file content, using Base64 encoding. - */ - content: string; - /** - * **Required if you are updating a file**. The blob SHA of the file being replaced. - */ - sha?: string; - /** - * The branch name. Default: the repository’s default branch (usually `master`) - */ - branch?: string; - /** - * The person that committed the file. Default: the authenticated user. - */ - committer?: { - /** - * The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted. - */ - name: string; - /** - * The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted. - */ - email: string; - date?: string; - }; - /** - * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`. - */ - author?: { - /** - * The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted. - */ - name: string; - /** - * The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted. - */ - email: string; - date?: string; - }; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["file-commit"]; - }; - /** - * response - */ - "201": { - "application/json": components["schemas"]["file-commit"]; - }; - "404": unknown; - "409": unknown; - "422": unknown; - }; - }; - /** - * Deletes a file in a repository. - * - * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author. - * - * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used. - * - * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code. - */ - "repos/delete-file": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * path+ parameter - */ - path: string; - }; - }; - requestBody: { - "application/json": { - /** - * The commit message. - */ - message: string; - /** - * The blob SHA of the file being replaced. - */ - sha: string; - /** - * The branch name. Default: the repository’s default branch (usually `master`) - */ - branch?: string; - /** - * object containing information about the committer. - */ - committer?: { - /** - * The name of the author (or committer) of the commit - */ - name?: string; - /** - * The email of the author (or committer) of the commit - */ - email?: string; - }; - /** - * object containing information about the author. - */ - author?: { - /** - * The name of the author (or committer) of the commit - */ - name?: string; - /** - * The email of the author (or committer) of the commit - */ - email?: string; - }; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["file-commit"]; - }; - "404": unknown; - "409": unknown; - "422": unknown; - "503": unknown; - }; - }; - /** - * Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API v3 caches contributor data to improve performance. - * - * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information. - */ - "repos/list-contributors": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * Set to `1` or `true` to include anonymous contributors in results. - */ - anon?: string; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * Response if repository contains content - */ - "200": { - "application/json": components["schemas"]["contributor"][]; - }; - /** - * Response if repository is empty - */ - "204": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Simple filtering of deployments is available via query parameters: - */ - "repos/list-deployments": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * The SHA recorded at creation time. - */ - sha?: string; - /** - * The name of the ref. This can be a branch, tag, or SHA. - */ - ref?: string; - /** - * The name of the task for the deployment (e.g., `deploy` or `deploy:migrations`). - */ - task?: string; - /** - * The name of the environment that was deployed to (e.g., `staging` or `production`). - */ - environment?: string; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["deployment"][]; - }; - }; - }; - /** - * Deployments offer a few configurable parameters with certain defaults. - * - * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them - * before we merge a pull request. - * - * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have - * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter - * makes it easier to track which environments have requested deployments. The default environment is `production`. - * - * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If - * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, - * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will - * return a failure response. - * - * By default, [commit statuses](https://docs.github.com/rest/reference/repos#statuses) for every submitted context must be in a `success` - * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to - * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do - * not require any contexts or create any commit statuses, the deployment will always succeed. - * - * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text - * field that will be passed on when a deployment event is dispatched. - * - * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might - * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an - * application with debugging enabled. - * - * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref. - * - * #### Merged branch response - * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating - * a deployment. This auto-merge happens when: - * * Auto-merge option is enabled in the repository - * * Topic branch does not include the latest changes on the base branch, which is `master` in the response example - * * There are no merge conflicts - * - * If there are no new commits in the base branch, a new request to create a deployment should give a successful - * response. - * - * #### Merge conflict response - * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't - * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts. - * - * #### Failed commit status checks - * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` - * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`. - */ - "repos/create-deployment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The ref to deploy. This can be a branch, tag, or SHA. - */ - ref: string; - /** - * Specifies a task to execute (e.g., `deploy` or `deploy:migrations`). - */ - task?: string; - /** - * Attempts to automatically merge the default branch into the requested ref, if it's behind the default branch. - */ - auto_merge?: boolean; - /** - * The [status](https://docs.github.com/rest/reference/repos#statuses) contexts to verify against commit status checks. If you omit this parameter, GitHub verifies all unique contexts before creating a deployment. To bypass checking entirely, pass an empty array. Defaults to all unique contexts. - */ - required_contexts?: string[]; - /** - * JSON payload with extra information about the deployment. - */ - payload?: string; - /** - * Name for the target deployment environment (e.g., `production`, `staging`, `qa`). - */ - environment?: string; - /** - * Short description of the deployment. - */ - description?: string | null; - /** - * Specifies if the given environment is specific to the deployment and will no longer exist at some point in the future. Default: `false` - * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. - */ - transient_environment?: boolean; - /** - * Specifies if the given environment is one that end-users directly interact with. Default: `true` when `environment` is `production` and `false` otherwise. - * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. - */ - production_environment?: boolean; - created_at?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["deployment"]; - }; - /** - * Merged branch response - */ - "202": { - "application/json": { message?: string }; - }; - /** - * response - */ - "409": { - "application/json": { message?: string; documentation_url?: string }; - }; - "422": unknown; - }; - }; - "repos/get-deployment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["deployment"]; - }; - "404": unknown; - }; - }; - /** - * To ensure there can always be an active deployment, you can only delete an _inactive_ deployment. Anyone with `repo` or `repo_deployment` scopes can delete an inactive deployment. - * - * To set a deployment as inactive, you must: - * - * * Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment. - * * Mark the active deployment as inactive by adding any non-successful deployment status. - * - * For more information, see "[Create a deployment](https://docs.github.com/rest/reference/repos/deployments/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/reference/repos#create-a-deployment-status)." - */ - "repos/delete-deployment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - "422": unknown; - }; - }; - /** - * Users with pull access can view deployment statuses for a deployment: - */ - "repos/list-deployment-statuses": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["deployment-status"][]; - }; - "404": unknown; - }; - }; - /** - * Users with `push` access can create deployment statuses for a given deployment. - * - * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth Apps require the `repo_deployment` scope. - */ - "repos/create-deployment-status": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The state of the status. Can be one of `error`, `failure`, `inactive`, `in_progress`, `queued` `pending`, or `success`. **Note:** To use the `inactive` state, you must provide the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. To use the `in_progress` and `queued` states, you must provide the [`application/vnd.github.flash-preview+json`](https://docs.github.com/rest/overview/api-previews#deployment-statuses) custom media type. When you set a transient deployment to `inactive`, the deployment will be shown as `destroyed` in GitHub. - */ - state: - | "error" - | "failure" - | "inactive" - | "in_progress" - | "queued" - | "pending" - | "success"; - /** - * The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. **Note:** It's recommended to use the `log_url` parameter, which replaces `target_url`. - */ - target_url?: string; - /** - * The full URL of the deployment's output. This parameter replaces `target_url`. We will continue to accept `target_url` to support legacy uses, but we recommend replacing `target_url` with `log_url`. Setting `log_url` will automatically set `target_url` to the same value. Default: `""` - * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. - */ - log_url?: string; - /** - * A short description of the status. The maximum description length is 140 characters. - */ - description?: string; - /** - * Name for the target deployment environment, which can be changed when setting a deploy status. For example, `production`, `staging`, or `qa`. **Note:** This parameter requires you to use the [`application/vnd.github.flash-preview+json`](https://docs.github.com/rest/overview/api-previews#deployment-statuses) custom media type. - */ - environment?: "production" | "staging" | "qa"; - /** - * Sets the URL for accessing your environment. Default: `""` - * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. - */ - environment_url?: string; - /** - * Adds a new `inactive` status to all prior non-transient, non-production environment deployments with the same repository and `environment` name as the created status's deployment. An `inactive` status is only added to deployments that had a `success` state. Default: `true` - * **Note:** To add an `inactive` status to `production` environments, you must use the [`application/vnd.github.flash-preview+json`](https://docs.github.com/rest/overview/api-previews#deployment-statuses) custom media type. - * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://docs.github.com/rest/overview/api-previews#enhanced-deployments) custom media type. - */ - auto_inactive?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["deployment-status"]; - }; - "422": unknown; - }; - }; - /** - * Users with pull access can view a deployment status for a deployment: - */ - "repos/get-deployment-status": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - deployment_id: components["parameters"]["deployment_id"]; - status_id: number; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["deployment-status"]; - }; - "404": unknown; - "415": unknown; - }; - }; - /** - * You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)." - * - * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. - * - * To give you write access to the repository, you must use a personal access token with the `repo` scope. For more information, see "[Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation. - * - * This input example shows how you can use the `client_payload` as a test to debug your workflow. - */ - "repos/create-dispatch-event": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * A custom webhook event name. - */ - event_type: string; - /** - * JSON payload with extra information about the webhook event that your action or worklow may use. - */ - client_payload?: { [key: string]: any }; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "422": unknown; - }; - }; - "activity/list-repo-events": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - "repos/list-forks": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * The sort order. Can be either `newest`, `oldest`, or `stargazers`. - */ - sort?: "newest" | "oldest" | "stargazers"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - "400": unknown; - }; - }; - /** - * Create a fork for the authenticated user. - * - * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://github.com/contact) or [GitHub Premium Support](https://premium.githubsupport.com). - */ - "repos/create-fork": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * Optional parameter to specify the organization name if forking into an organization. - */ - organization?: string; - }; - }; - responses: { - /** - * response - */ - "202": { - "application/json": components["schemas"]["repository"]; - }; - "400": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - "git/create-blob": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The new blob's content. - */ - content: string; - /** - * The encoding used for `content`. Currently, `"utf-8"` and `"base64"` are supported. - */ - encoding?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["short-blob"]; - }; - "403": unknown; - "404": unknown; - "409": unknown; - "422": unknown; - }; - }; - /** - * The `content` in the response will always be Base64 encoded. - * - * _Note_: This API supports blobs up to 100 megabytes in size. - */ - "git/get-blob": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - file_sha: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["blob"]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Creates a new Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "git/create-commit": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The commit message - */ - message: string; - /** - * The SHA of the tree object this commit points to - */ - tree: string; - /** - * The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided. - */ - parents?: string[]; - /** - * Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details. - */ - author?: { - /** - * The name of the author (or committer) of the commit - */ - name?: string; - /** - * The email of the author (or committer) of the commit - */ - email?: string; - /** - * Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - date?: string; - }; - /** - * Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details. - */ - committer?: { - /** - * The name of the author (or committer) of the commit - */ - name?: string; - /** - * The email of the author (or committer) of the commit - */ - email?: string; - /** - * Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - date?: string; - }; - /** - * The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits. - */ - signature?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["git-commit"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * Gets a Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "git/get-commit": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - commit_sha: components["parameters"]["commit_sha"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["git-commit"]; - }; - "404": unknown; - }; - }; - /** - * Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array. - * - * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. - * - * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`. - */ - "git/list-matching-refs": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * ref+ parameter - */ - ref: string; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["git-ref"][]; - }; - }; - }; - /** - * Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned. - * - * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - */ - "git/get-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * ref+ parameter - */ - ref: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["git-ref"]; - }; - "404": unknown; - }; - }; - /** - * Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches. - */ - "git/create-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the fully qualified reference (ie: `refs/heads/master`). If it doesn't start with 'refs' and have at least two slashes, it will be rejected. - */ - ref: string; - /** - * The SHA1 value for this reference. - */ - sha: string; - key?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["git-ref"]; - }; - "422": unknown; - }; - }; - "git/update-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * ref+ parameter - */ - ref: string; - }; - }; - requestBody: { - "application/json": { - /** - * The SHA1 value to set this reference to - */ - sha: string; - /** - * Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to `false` will make sure you're not overwriting work. - */ - force?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["git-ref"]; - }; - "422": unknown; - }; - }; - "git/delete-ref": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * ref+ parameter - */ - ref: string; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "422": unknown; - }; - }; - /** - * Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/reference/git#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/reference/git#create-a-reference) the tag reference - this call would be unnecessary. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "git/create-tag": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The tag's name. This is typically a version (e.g., "v0.0.1"). - */ - tag: string; - /** - * The tag message. - */ - message: string; - /** - * The SHA of the git object this is tagging. - */ - object: string; - /** - * The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`. - */ - type: "commit" | "tree" | "blob"; - /** - * An object with information about the individual creating the tag. - */ - tagger?: { - /** - * The name of the author of the tag - */ - name?: string; - /** - * The email of the author of the tag - */ - email?: string; - /** - * When this object was tagged. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - date?: string; - }; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["git-tag"]; - }; - "422": unknown; - }; - }; - /** - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - "git/get-tag": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - tag_sha: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["git-tag"]; - }; - "404": unknown; - }; - }; - /** - * The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure. - * - * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/reference/git#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/reference/git#update-a-reference)." - */ - "git/create-tree": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure. - */ - tree: { - /** - * The file referenced in the tree. - */ - path?: string; - /** - * The file mode; one of `100644` for file (blob), `100755` for executable (blob), `040000` for subdirectory (tree), `160000` for submodule (commit), or `120000` for a blob that specifies the path of a symlink. - */ - mode?: "100644" | "100755" | "040000" | "160000" | "120000"; - /** - * Either `blob`, `tree`, or `commit`. - */ - type?: "blob" | "tree" | "commit"; - /** - * The SHA1 checksum ID of the object in the tree. Also called `tree.sha`. If the value is `null` then the file will be deleted. - * - * **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error. - */ - sha?: string | null; - /** - * The content you want this file to have. GitHub will write this blob out and use that SHA for this entry. Use either this, or `tree.sha`. - * - * **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error. - */ - content?: string; - }[]; - /** - * The SHA1 of the tree you want to update with new data. If you don't set this, the commit will be created on top of everything; however, it will only contain your change, the rest of your files will show up as deleted. - */ - base_tree?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["git-tree"]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Returns a single tree using the SHA1 value for that tree. - * - * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time. - */ - "git/get-tree": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - tree_sha: string; - }; - query: { - /** - * Setting this parameter to any value returns the objects or subtrees referenced by the tree specified in `:tree_sha`. For example, setting `recursive` to any of the following will enable returning objects or subtrees: `0`, `1`, `"true"`, and `"false"`. Omit this parameter to prevent recursively returning objects or subtrees. - */ - recursive?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["git-tree"]; - }; - "404": unknown; - "422": unknown; - }; - }; - "repos/list-webhooks": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["hook"][]; - }; - "404": unknown; - }; - }; - /** - * Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can - * share the same `config` as long as those webhooks do not have any `events` that overlap. - */ - "repos/create-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * Use `web` to create a webhook. Default: `web`. This parameter only accepts the value `web`. - */ - name?: string; - /** - * Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/repos#create-hook-config-params). - */ - config: { - url: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - token?: string; - digest?: string; - }; - /** - * Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. - */ - events?: string[]; - /** - * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. - */ - active?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["hook"]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/reference/repos#get-a-webhook-configuration-for-a-repository)." - */ - "repos/get-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["hook"]; - }; - "404": unknown; - }; - }; - /** - * Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/reference/repos#update-a-webhook-configuration-for-a-repository)." - */ - "repos/update-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/repos#create-hook-config-params). - */ - config?: { - url: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - address?: string; - room?: string; - }; - /** - * Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. This replaces the entire array of events. - */ - events?: string[]; - /** - * Determines a list of events to be added to the list of events that the Hook triggers for. - */ - add_events?: string[]; - /** - * Determines a list of events to be removed from the list of events that the Hook triggers for. - */ - remove_events?: string[]; - /** - * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. - */ - active?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["hook"]; - }; - "404": unknown; - "422": unknown; - }; - }; - "repos/delete-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/reference/orgs#get-a-repository-webhook)." - * - * Access tokens must have the `read:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:read` permission. - */ - "repos/get-webhook-config-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** - * Default response - */ - "200": { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - /** - * Updates the webhook configuration for a repository. To update more information about the webhook, including the `active` state and `events`, use "[Update a repository webhook](/rest/reference/orgs#update-a-repository-webhook)." - * - * Access tokens must have the `write:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:write` permission. - */ - "repos/update-webhook-config-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - requestBody: { - "application/json": { - url?: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - }; - responses: { - /** - * Default response - */ - "200": { - "application/json": components["schemas"]["webhook-config"]; - }; - }; - }; - /** - * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. - */ - "repos/ping-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated. - * - * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test` - */ - "repos/test-push-webhook": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - hook_id: components["parameters"]["hook-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * View the progress of an import. - * - * **Import status** - * - * This section includes details about the possible values of the `status` field of the Import Progress response. - * - * An import that does not have errors will progress through these steps: - * - * * `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL. - * * `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import). - * * `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information. - * * `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects". - * * `complete` - the import is complete, and the repository is ready on GitHub. - * - * If there are problems, you will see one of these in the `status` field: - * - * * `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. - * * `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://github.com/contact) or [GitHub Premium Support](https://premium.githubsupport.com) for more information. - * * `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. - * * `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/reference/migrations#cancel-an-import) and [retry](https://docs.github.com/rest/reference/migrations#start-an-import) with the correct URL. - * * `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. - * - * **The project_choices field** - * - * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type. - * - * **Git LFS related fields** - * - * This section includes details about Git LFS related fields that may be present in the Import Progress response. - * - * * `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken. - * * `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step. - * * `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository. - * * `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request. - */ - "migrations/get-import-status": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["import"]; - }; - "404": unknown; - }; - }; - /** - * Start a source import to a GitHub repository using GitHub Importer. - */ - "migrations/start-import": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The URL of the originating repository. - */ - vcs_url: string; - /** - * The originating VCS type. Can be one of `subversion`, `git`, `mercurial`, or `tfvc`. Please be aware that without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response. - */ - vcs?: "subversion" | "git" | "mercurial" | "tfvc"; - /** - * If authentication is required, the username to provide to `vcs_url`. - */ - vcs_username?: string; - /** - * If authentication is required, the password to provide to `vcs_url`. - */ - vcs_password?: string; - /** - * For a tfvc import, the name of the project that is being imported. - */ - tfvc_project?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["import"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API - * request. If no parameters are provided, the import will be restarted. - */ - "migrations/update-import": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The username to provide to the originating repository. - */ - vcs_username?: string; - /** - * The password to provide to the originating repository. - */ - vcs_password?: string; - vcs?: string; - tfvc_project?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["import"]; - }; - }; - }; - /** - * Stop an import for a repository. - */ - "migrations/cancel-import": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot `. - * - * This endpoint and the [Map a commit author](https://docs.github.com/rest/reference/migrations#map-a-commit-author) endpoint allow you to provide correct Git author information. - */ - "migrations/get-commit-authors": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - since?: components["parameters"]["since-user"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["porter-author"][]; - }; - "404": unknown; - }; - }; - /** - * Update an author's identity for the import. Your application can continue updating authors any time before you push new commits to the repository. - */ - "migrations/map-commit-author": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - author_id: number; - }; - }; - requestBody: { - "application/json": { - /** - * The new Git author email. - */ - email?: string; - /** - * The new Git author name. - */ - name?: string; - remote_id?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["porter-author"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * List files larger than 100MB found during the import - */ - "migrations/get-large-files": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["porter-large-file"][]; - }; - }; - }; - /** - * You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability is powered by [Git LFS](https://git-lfs.github.com). You can learn more about our LFS feature and working with large files [on our help site](https://help.github.com/articles/versioning-large-files/). - */ - "migrations/set-lfs-preference": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * Can be one of `opt_in` (large files will be stored using Git LFS) or `opt_out` (large files will be removed during the import). - */ - use_lfs: "opt_in" | "opt_out"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["import"]; - }; - "422": unknown; - }; - }; - /** - * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-repo-installation": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["installation"]; - }; - "301": never; - "404": unknown; - }; - }; - /** - * Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response. - */ - "interactions/get-restrictions-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["interaction-limit-response"]; - }; - }; - }; - /** - * Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - "interactions/set-restrictions-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": components["schemas"]["interaction-limit"]; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["interaction-limit-response"]; - }; - /** - * Conflict - */ - "409": unknown; - }; - }; - /** - * Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - "interactions/remove-restrictions-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - /** - * Conflict - */ - "409": unknown; - }; - }; - /** - * When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations. - */ - "repos/list-invitations": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["repository-invitation"][]; - }; - }; - }; - "repos/update-invitation": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - invitation_id: components["parameters"]["invitation_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The permissions that the associated user will have on the repository. Valid values are `read`, `write`, `maintain`, `triage`, and `admin`. - */ - permissions?: "read" | "write" | "maintain" | "triage" | "admin"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["repository-invitation"]; - }; - }; - }; - "repos/delete-invitation": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - invitation_id: components["parameters"]["invitation_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * List issues in a repository. - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - "issues/list-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned. - */ - milestone?: string; - /** - * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`. - */ - state?: "open" | "closed" | "all"; - /** - * Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user. - */ - assignee?: string; - /** - * The user that created the issue. - */ - creator?: string; - /** - * A user that's mentioned in the issue. - */ - mentioned?: string; - labels?: components["parameters"]["labels"]; - /** - * What to sort results by. Can be either `created`, `updated`, `comments`. - */ - sort?: "created" | "updated" | "comments"; - direction?: components["parameters"]["direction"]; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-simple"][]; - }; - "301": never; - "404": unknown; - "422": unknown; - }; - }; - /** - * Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://help.github.com/articles/disabling-issues/), the API returns a `410 Gone` status. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-abuse-rate-limits)" for details. - */ - "issues/create": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The title of the issue. - */ - title: string; - /** - * The contents of the issue. - */ - body?: string; - /** - * Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_ - */ - assignee?: string | null; - /** - * The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._ - */ - milestone?: number | null; - /** - * Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._ - */ - labels?: ( - | string - | { id?: number; name?: string; description?: string; color?: string } - )[]; - /** - * Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._ - */ - assignees?: string[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["issue"]; - }; - "403": unknown; - "404": unknown; - "410": unknown; - "422": unknown; - "503": unknown; - }; - }; - /** - * By default, Issue Comments are ordered by ascending ID. - */ - "issues/list-comments-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - sort?: components["parameters"]["sort"]; - /** - * Either `asc` or `desc`. Ignored without the `sort` parameter. - */ - direction?: "asc" | "desc"; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-comment"][]; - }; - "404": unknown; - "422": unknown; - }; - }; - "issues/get-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-comment"]; - }; - "404": unknown; - }; - }; - "issues/update-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The contents of the comment. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-comment"]; - }; - "422": unknown; - }; - }; - "issues/delete-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * List the reactions to an [issue comment](https://docs.github.com/rest/reference/issues#comments). - */ - "reactions/list-for-issue-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - query: { - /** - * Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to an issue comment. - */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["reaction"][]; - }; - "404": unknown; - "415": unknown; - }; - }; - /** - * Create a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). A response with a `Status: 200 OK` means that you already added the reaction type to this issue comment. - */ - "reactions/create-for-issue-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the issue comment. - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - responses: { - /** - * Reaction exists - */ - "200": { - "application/json": components["schemas"]["reaction"]; - }; - /** - * Reaction created - */ - "201": { - "application/json": components["schemas"]["reaction"]; - }; - "415": unknown; - "422": unknown; - }; - }; - /** - * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). - */ - "reactions/delete-for-issue-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - "issues/list-events-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-event"][]; - }; - "422": unknown; - }; - }; - "issues/get-event": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - event_id: number; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-event"]; - }; - "403": unknown; - "404": unknown; - "410": unknown; - }; - }; - /** - * The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-redirects-redirects) if the issue was - * [transferred](https://help.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If - * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API - * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read - * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe - * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook. - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - "issues/get": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue"]; - }; - "301": never; - "304": never; - "404": unknown; - "410": unknown; - }; - }; - /** - * Issue owners and users with push access can edit an issue. - */ - "issues/update": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The title of the issue. - */ - title?: string; - /** - * The contents of the issue. - */ - body?: string; - /** - * Login for the user that this issue should be assigned to. **This field is deprecated.** - */ - assignee?: string; - /** - * State of the issue. Either `open` or `closed`. - */ - state?: "open" | "closed"; - /** - * The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._ - */ - milestone?: number | null; - /** - * Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._ - */ - labels?: ( - | string - | { id?: number; name?: string; description?: string; color?: string } - )[]; - /** - * Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._ - */ - assignees?: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue"]; - }; - "301": never; - "403": unknown; - "404": unknown; - "410": unknown; - "422": unknown; - "503": unknown; - }; - }; - /** - * Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced. - */ - "issues/add-assignees": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - requestBody: { - "application/json": { - /** - * Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._ - */ - assignees?: string[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["issue-simple"]; - }; - }; - }; - /** - * Removes one or more assignees from an issue. - */ - "issues/remove-assignees": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - requestBody: { - "application/json": { - /** - * Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._ - */ - assignees?: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-simple"]; - }; - }; - }; - /** - * Issue Comments are ordered by ascending ID. - */ - "issues/list-comments": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - query: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-comment"][]; - }; - "404": unknown; - "410": unknown; - }; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-abuse-rate-limits)" for details. - */ - "issues/create-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The contents of the comment. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["issue-comment"]; - }; - "403": unknown; - "404": unknown; - "410": unknown; - "422": unknown; - }; - }; - "issues/list-events": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-event-for-issue"][]; - }; - "410": unknown; - }; - }; - "issues/list-labels-on-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["label"][]; - }; - "410": unknown; - }; - }; - "issues/add-labels": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the label to add to the issue. Must contain at least one label. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key. - */ - labels: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["label"][]; - }; - "410": unknown; - "422": unknown; - }; - }; - /** - * Removes any previous labels and sets the new labels for an issue. - */ - "issues/set-labels": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The names of the labels to add to the issue. You can pass an empty array to remove all labels. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key. - */ - labels?: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["label"][]; - }; - "410": unknown; - "422": unknown; - }; - }; - "issues/remove-all-labels": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "410": unknown; - }; - }; - /** - * Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist. - */ - "issues/remove-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - name: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["label"][]; - }; - "404": unknown; - "410": unknown; - }; - }; - /** - * Users with push access can lock an issue or pull request's conversation. - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - "issues/lock": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons: - * \* `off-topic` - * \* `too heated` - * \* `resolved` - * \* `spam` - */ - lock_reason?: "off-topic" | "too heated" | "resolved" | "spam"; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "403": unknown; - "404": unknown; - "410": unknown; - "422": unknown; - }; - }; - /** - * Users with push access can unlock an issue's conversation. - */ - "issues/unlock": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * List the reactions to an [issue](https://docs.github.com/rest/reference/issues). - */ - "reactions/list-for-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - query: { - /** - * Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to an issue. - */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["reaction"][]; - }; - "404": unknown; - "410": unknown; - "415": unknown; - }; - }; - /** - * Create a reaction to an [issue](https://docs.github.com/rest/reference/issues/). A response with a `Status: 200 OK` means that you already added the reaction type to this issue. - */ - "reactions/create-for-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the issue. - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["reaction"]; - }; - "415": unknown; - "422": unknown; - }; - }; - /** - * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`. - * - * Delete a reaction to an [issue](https://docs.github.com/rest/reference/issues/). - */ - "reactions/delete-for-issue": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - "issues/list-events-for-timeline": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - issue_number: components["parameters"]["issue_number"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue-event-for-issue"][]; - }; - "404": unknown; - "410": unknown; - "415": unknown; - }; - }; - "repos/list-deploy-keys": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["deploy-key"][]; - }; - }; - }; - /** - * You can create a read-only deploy key. - */ - "repos/create-deploy-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * A name for the key. - */ - title?: string; - /** - * The contents of the key. - */ - key: string; - /** - * If `true`, the key will only be able to read repository contents. Otherwise, the key will be able to read and write. - * - * Deploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see "[Repository permission levels for an organization](https://help.github.com/articles/repository-permission-levels-for-an-organization/)" and "[Permission levels for a user account repository](https://help.github.com/articles/permission-levels-for-a-user-account-repository/)." - */ - read_only?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["deploy-key"]; - }; - "422": unknown; - }; - }; - "repos/get-deploy-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - key_id: components["parameters"]["key_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["deploy-key"]; - }; - "404": unknown; - }; - }; - /** - * Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead. - */ - "repos/delete-deploy-key": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - key_id: components["parameters"]["key_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - "issues/list-labels-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["label"][]; - }; - "404": unknown; - }; - }; - "issues/create-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/). - */ - name: string; - /** - * The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`. - */ - color?: string; - /** - * A short description of the label. - */ - description?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["label"]; - }; - "404": unknown; - "422": unknown; - }; - }; - "issues/get-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["label"]; - }; - "404": unknown; - }; - }; - "issues/update-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: string; - }; - }; - requestBody: { - "application/json": { - /** - * The new name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/). - */ - new_name?: string; - /** - * The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`. - */ - color?: string; - /** - * A short description of the label. - */ - description?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["label"]; - }; - }; - }; - "issues/delete-label": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - name: string; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language. - */ - "repos/list-languages": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["language"]; - }; - }; - }; - /** - * This method returns the contents of the repository's license file, if one is detected. - * - * Similar to [Get repository content](https://docs.github.com/rest/reference/repos/contents#get-repository-content), this method also supports [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw license content or rendered license HTML. - */ - "licenses/get-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["license-content"]; - }; - }; - }; - "repos/merge": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the base branch that the head will be merged into. - */ - base: string; - /** - * The head to merge. This can be a branch name or a commit SHA1. - */ - head: string; - /** - * Commit message to use for the merge commit. If omitted, a default message will be used. - */ - commit_message?: string; - }; - }; - responses: { - /** - * Successful Response (The resulting merge commit) - */ - "201": { - "application/json": components["schemas"]["commit"]; - }; - "403": unknown; - /** - * response - */ - "404": { - "application/json": { message?: string; documentation_url?: string }; - }; - /** - * Merge conflict response - */ - "409": { - "application/json": { message?: string; documentation_url?: string }; - }; - "422": unknown; - }; - }; - "issues/list-milestones": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * The state of the milestone. Either `open`, `closed`, or `all`. - */ - state?: "open" | "closed" | "all"; - /** - * What to sort results by. Either `due_on` or `completeness`. - */ - sort?: "due_on" | "completeness"; - /** - * The direction of the sort. Either `asc` or `desc`. - */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["milestone"][]; - }; - "404": unknown; - }; - }; - "issues/create-milestone": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The title of the milestone. - */ - title: string; - /** - * The state of the milestone. Either `open` or `closed`. - */ - state?: "open" | "closed"; - /** - * A description of the milestone. - */ - description?: string; - /** - * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - due_on?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["milestone"]; - }; - "404": unknown; - "422": unknown; - }; - }; - "issues/get-milestone": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - milestone_number: components["parameters"]["milestone_number"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["milestone"]; - }; - "404": unknown; - }; - }; - "issues/update-milestone": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - milestone_number: components["parameters"]["milestone_number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The title of the milestone. - */ - title?: string; - /** - * The state of the milestone. Either `open` or `closed`. - */ - state?: "open" | "closed"; - /** - * A description of the milestone. - */ - description?: string; - /** - * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - due_on?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["milestone"]; - }; - }; - }; - "issues/delete-milestone": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - milestone_number: components["parameters"]["milestone_number"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - "issues/list-labels-for-milestone": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - milestone_number: components["parameters"]["milestone_number"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["label"][]; - }; - }; - }; - /** - * List all notifications for the current user. - */ - "activity/list-repo-notifications-for-authenticated-user": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - all?: components["parameters"]["all"]; - participating?: components["parameters"]["participating"]; - since?: components["parameters"]["since"]; - before?: components["parameters"]["before"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["thread"][]; - }; - }; - }; - /** - * Marks all notifications in a repository as "read" removes them from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - "activity/mark-repo-notifications-as-read": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * Describes the last point that notifications were checked. Anything updated since this time will not be marked as read. If you omit this parameter, all notifications are marked as read. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp. - */ - last_read_at?: string; - }; - }; - responses: { - /** - * response - */ - "202": unknown; - }; - }; - "repos/get-pages": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["page"]; - }; - "404": unknown; - }; - }; - /** - * Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)." - */ - "repos/create-pages-site": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The source branch and directory used to publish your Pages site. - */ - source: { - /** - * The repository branch used to publish your site's source files. - */ - branch: string; - /** - * The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`. Default: `/` - */ - path?: "/" | "/docs"; - }; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["page"]; - }; - "409": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). - */ - "repos/update-information-about-pages-site": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * Specify a custom domain for the repository. Sending a `null` value will remove the custom domain. For more about custom domains, see "[Using a custom domain with GitHub Pages](https://help.github.com/articles/using-a-custom-domain-with-github-pages/)." - */ - cname?: string | null; - source: Partial<"gh-pages" | "master" | "master /docs"> & - Partial<{ - /** - * The repository branch used to publish your site's source files. - */ - branch: string; - /** - * The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`. - */ - path: "/" | "/docs"; - }>; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "400": unknown; - "422": unknown; - }; - }; - "repos/delete-pages-site": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - "repos/list-pages-builds": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["page-build"][]; - }; - }; - }; - /** - * You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures. - * - * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes. - */ - "repos/request-pages-build": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["page-build-status"]; - }; - }; - }; - "repos/get-latest-pages-build": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["page-build"]; - }; - }; - }; - "repos/get-pages-build": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - build_id: number; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["page-build"]; - }; - }; - }; - /** - * Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - "projects/list-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`. - */ - state?: "open" | "closed" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project"][]; - }; - "401": unknown; - "403": unknown; - "404": unknown; - "410": unknown; - "422": unknown; - }; - }; - /** - * Creates a repository project board. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - "projects/create-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the project. - */ - name: string; - /** - * The description of the project. - */ - body?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["project"]; - }; - "401": unknown; - "403": unknown; - "404": unknown; - "410": unknown; - "422": unknown; - }; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - "pulls/list": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * Either `open`, `closed`, or `all` to filter by state. - */ - state?: "open" | "closed" | "all"; - /** - * Filter pulls by head user or head organization and branch name in the format of `user:ref-name` or `organization:ref-name`. For example: `github:new-script-format` or `octocat:test-branch`. - */ - head?: string; - /** - * Filter pulls by base branch name. Example: `gh-pages`. - */ - base?: string; - /** - * What to sort results by. Can be either `created`, `updated`, `popularity` (comment count) or `long-running` (age, filtering by pulls updated in the last month). - */ - sort?: "created" | "updated" | "popularity" | "long-running"; - /** - * The direction of the sort. Can be either `asc` or `desc`. Default: `desc` when sort is `created` or sort is not specified, otherwise `asc`. - */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-simple"][]; - }; - "304": never; - "422": unknown; - }; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - * - * You can create a new pull request. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - "pulls/create": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The title of the new pull request. - */ - title?: string; - /** - * The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`. - */ - head: string; - /** - * The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository. - */ - base: string; - /** - * The contents of the pull request. - */ - body?: string; - /** - * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request. - */ - maintainer_can_modify?: boolean; - /** - * Indicates whether the pull request is a draft. See "[Draft Pull Requests](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests)" in the GitHub Help documentation to learn more. - */ - draft?: boolean; - issue?: number; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["pull-request"]; - }; - "403": unknown; - "422": unknown; - }; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - * - * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions. - */ - "pulls/list-review-comments-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - sort?: components["parameters"]["sort"]; - /** - * Can be either `asc` or `desc`. Ignored without `sort` parameter. - */ - direction?: "asc" | "desc"; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review-comment"][]; - }; - }; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Provides details for a review comment. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - * - * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions. - */ - "pulls/get-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review-comment"]; - }; - "404": unknown; - }; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Enables you to edit a review comment. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - */ - "pulls/update-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The text of the reply to the review comment. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review-comment"]; - }; - }; - }; - /** - * Deletes a review comment. - */ - "pulls/delete-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - }; - }; - /** - * List the reactions to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). - */ - "reactions/list-for-pull-request-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - query: { - /** - * Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a pull request review comment. - */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["reaction"][]; - }; - "404": unknown; - "415": unknown; - }; - }; - /** - * Create a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#comments). A response with a `Status: 200 OK` means that you already added the reaction type to this pull request review comment. - */ - "reactions/create-for-pull-request-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the pull request review comment. - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - responses: { - /** - * Reaction exists - */ - "200": { - "application/json": components["schemas"]["reaction"]; - }; - /** - * Reaction created - */ - "201": { - "application/json": components["schemas"]["reaction"]; - }; - "415": unknown; - "422": unknown; - }; - }; - /** - * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.` - * - * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). - */ - "reactions/delete-for-pull-request-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - comment_id: components["parameters"]["comment_id"]; - reaction_id: components["parameters"]["reaction-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists details of a pull request by providing its number. - * - * When you get, [create](https://docs.github.com/rest/reference/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/reference/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit. - * - * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request: - * - * * If merged as a [merge commit](https://help.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit. - * * If merged via a [squash](https://help.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch. - * * If [rebased](https://help.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to. - * - * Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. - */ - "pulls/get": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - responses: { - /** - * Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. - */ - "200": { - "application/json": components["schemas"]["pull-request"]; - }; - "304": never; - "404": unknown; - "500": unknown; - }; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - */ - "pulls/update": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The title of the pull request. - */ - title?: string; - /** - * The contents of the pull request. - */ - body?: string; - /** - * State of this Pull Request. Either `open` or `closed`. - */ - state?: "open" | "closed"; - /** - * The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository. - */ - base?: string; - /** - * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request. - */ - maintainer_can_modify?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request"]; - }; - "403": unknown; - "422": unknown; - }; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Lists all review comments for a pull request. By default, review comments are in ascending order by ID. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - * - * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions. - */ - "pulls/list-review-comments": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - query: { - sort?: components["parameters"]["sort"]; - /** - * Can be either `asc` or `desc`. Ignored without `sort` parameter. - */ - direction?: "asc" | "desc"; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review-comment"][]; - }; - }; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/reference/issues#create-an-issue-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff. - * - * You can still create a review comment using the `position` parameter. When you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. For more information, see [Multi-line comment summary](https://docs.github.com/rest/reference/pulls#multi-line-comment-summary-3). - * - * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - */ - "pulls/create-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The text of the review comment. - */ - body: string; - /** - * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`. - */ - commit_id?: string; - /** - * The relative path to the file that necessitates a comment. - */ - path: string; - /** - * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above. - */ - position?: number; - /** - * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation. - */ - side?: "LEFT" | "RIGHT"; - /** - * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to. - */ - line?: number; - /** - * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. - */ - start_line?: number; - /** - * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context. - */ - start_side?: "LEFT" | "RIGHT" | "side"; - in_reply_to?: number; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["pull-request-review-comment"]; - }; - "403": unknown; - "422": unknown; - }; - }; - /** - * Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - "pulls/create-reply-for-review-comment": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - comment_id: components["parameters"]["comment_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The text of the review comment. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["pull-request-review-comment"]; - }; - "404": unknown; - }; - }; - /** - * Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/reference/repos#list-commits) endpoint. - */ - "pulls/list-commits": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["commit"][]; - }; - }; - }; - /** - * **Note:** Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default. - */ - "pulls/list-files": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["diff-entry"][]; - }; - "422": unknown; - "500": unknown; - }; - }; - "pulls/check-if-merged": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - responses: { - /** - * Response if pull request has been merged - */ - "204": never; - /** - * Response if pull request has not been merged - */ - "404": unknown; - }; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/reference/guides#dealing-with-abuse-rate-limits)" for details. - */ - "pulls/merge": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * Title for the automatic commit message. - */ - commit_title?: string; - /** - * Extra detail to append to automatic commit message. - */ - commit_message?: string; - /** - * SHA that pull request head must match to allow merge. - */ - sha?: string; - /** - * Merge method to use. Possible values are `merge`, `squash` or `rebase`. Default is `merge`. - */ - merge_method?: "merge" | "squash" | "rebase"; - }; - }; - responses: { - /** - * Response if merge was successful - */ - "200": { - "application/json": components["schemas"]["pull-request-merge-result"]; - }; - "403": unknown; - "404": unknown; - /** - * Response if merge cannot be performed - */ - "405": { - "application/json": { message?: string; documentation_url?: string }; - }; - /** - * Response if sha was provided and pull request head did not match - */ - "409": { - "application/json": { message?: string; documentation_url?: string }; - }; - "422": unknown; - }; - }; - "pulls/list-requested-reviewers": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review-request"]; - }; - }; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/reference/guides#dealing-with-abuse-rate-limits)" for details. - */ - "pulls/request-reviewers": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * An array of user `login`s that will be requested. - */ - reviewers?: string[]; - /** - * An array of team `slug`s that will be requested. - */ - team_reviewers?: string[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["pull-request-simple"]; - }; - "403": unknown; - /** - * Response if user is not a collaborator - */ - "422": unknown; - }; - }; - "pulls/remove-requested-reviewers": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * An array of user `login`s that will be removed. - */ - reviewers?: string[]; - /** - * An array of team `slug`s that will be removed. - */ - team_reviewers?: string[]; - }; - }; - responses: { - /** - * response - */ - "200": unknown; - "422": unknown; - }; - }; - /** - * The list of reviews returns in chronological order. - */ - "pulls/list-reviews": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * The list of reviews returns in chronological order. - */ - "200": { - "application/json": components["schemas"]["pull-request-review"][]; - }; - }; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * Pull request reviews created in the `PENDING` state do not include the `submitted_at` property in the response. - * - * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](https://docs.github.com/rest/reference/media/#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) endpoint. - * - * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. - */ - "pulls/create-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value. - */ - commit_id?: string; - /** - * **Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review. - */ - body?: string; - /** - * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://docs.github.com/rest/reference/pulls#submit-a-review-for-a-pull-request) when you are ready. - */ - event?: "APPROVE" | "REQUEST_CHANGES" | "COMMENT"; - /** - * Use the following table to specify the location, destination, and contents of the draft review comment. - */ - comments?: { - /** - * The relative path to the file that necessitates a review comment. - */ - path: string; - /** - * The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note below. - */ - position?: number; - /** - * Text of the review comment. - */ - body: string; - line?: number; - side?: string; - start_line?: number; - start_side?: string; - }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review"]; - }; - "403": unknown; - "422": unknown; - }; - }; - "pulls/get-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review"]; - }; - "404": unknown; - }; - }; - /** - * Update the review summary comment with new text. - */ - "pulls/update-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The body text of the pull request review. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review"]; - }; - "422": unknown; - }; - }; - "pulls/delete-pending-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * List comments for a specific pull request review. - */ - "pulls/list-comments-for-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["review-comment"][]; - }; - "404": unknown; - }; - }; - /** - * **Note:** To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/reference/repos#branches), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews. - */ - "pulls/dismiss-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The message for the pull request review dismissal - */ - message: string; - event?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review"]; - }; - "404": unknown; - "422": unknown; - }; - }; - "pulls/submit-review": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - review_id: components["parameters"]["review_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The body text of the pull request review - */ - body?: string; - /** - * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action. - */ - event: "APPROVE" | "REQUEST_CHANGES" | "COMMENT"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["pull-request-review"]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch. - */ - "pulls/update-branch": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - pull_number: components["parameters"]["pull-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The expected SHA of the pull request's HEAD ref. This is the most recent commit on the pull request's branch. If the expected SHA does not match the pull request's HEAD, you will receive a `422 Unprocessable Entity` status. You can use the "[List commits](https://docs.github.com/rest/reference/repos#list-commits)" endpoint to find the most recent commit SHA. Default: SHA of the pull request's current HEAD ref. - */ - expected_head_sha?: string; - }; - }; - responses: { - /** - * response - */ - "202": { - "application/json": { message?: string; url?: string }; - }; - "403": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * Gets the preferred README for a repository. - * - * READMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML. - */ - "repos/get-readme": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`) - */ - ref?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["content-file"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/reference/repos#list-repository-tags). - * - * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases. - */ - "repos/list-releases": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["release"][]; - }; - "404": unknown; - }; - }; - /** - * Users with push access to the repository can create a release. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - "repos/create-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the tag. - */ - tag_name: string; - /** - * Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`). - */ - target_commitish?: string; - /** - * The name of the release. - */ - name?: string; - /** - * Text describing the contents of the tag. - */ - body?: string; - /** - * `true` to create a draft (unpublished) release, `false` to create a published one. - */ - draft?: boolean; - /** - * `true` to identify the release as a prerelease. `false` to identify the release as a full release. - */ - prerelease?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["release"]; - }; - "422": unknown; - }; - }; - /** - * To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response. - */ - "repos/get-release-asset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - asset_id: components["parameters"]["asset_id"]; - }; - }; - responses: { - /** - * To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response. - */ - "200": { - "application/json": components["schemas"]["release-asset"]; - }; - "302": never; - "404": unknown; - "415": unknown; - }; - }; - /** - * Users with push access to the repository can edit a release asset. - */ - "repos/update-release-asset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - asset_id: components["parameters"]["asset_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The file name of the asset. - */ - name?: string; - /** - * An alternate short description of the asset. Used in place of the filename. - */ - label?: string; - state?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["release-asset"]; - }; - }; - }; - "repos/delete-release-asset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - asset_id: components["parameters"]["asset_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * View the latest published full release for the repository. - * - * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published. - */ - "repos/get-latest-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["release"]; - }; - }; - }; - /** - * Get a published release with the specified tag. - */ - "repos/get-release-by-tag": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - /** - * tag+ parameter - */ - tag: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["release"]; - }; - "404": unknown; - }; - }; - /** - * **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia). - */ - "repos/get-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release_id"]; - }; - }; - responses: { - /** - * **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia). - */ - "200": { - "application/json": components["schemas"]["release"]; - }; - "404": unknown; - }; - }; - /** - * Users with push access to the repository can edit a release. - */ - "repos/update-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the tag. - */ - tag_name?: string; - /** - * Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`). - */ - target_commitish?: string; - /** - * The name of the release. - */ - name?: string; - /** - * Text describing the contents of the tag. - */ - body?: string; - /** - * `true` makes the release a draft, and `false` publishes the release. - */ - draft?: boolean; - /** - * `true` to identify the release as a prerelease, `false` to identify the release as a full release. - */ - prerelease?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["release"]; - }; - }; - }; - /** - * Users with push access to the repository can delete a release. - */ - "repos/delete-release": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - "repos/list-release-assets": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["release-asset"][]; - }; - }; - }; - /** - * This endpoint makes use of [a Hypermedia relation](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in - * the response of the [Create a release endpoint](https://docs.github.com/rest/reference/repos#create-a-release) to upload a release asset. - * - * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint. - * - * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example: - * - * `application/zip` - * - * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, - * you'll still need to pass your authentication to be able to upload an asset. - * - * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted. - * - * **Notes:** - * * GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List assets for a release](https://docs.github.com/rest/reference/repos#list-assets-for-a-release)" - * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://github.com/contact). - * * If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset. - */ - "repos/upload-release-asset": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - release_id: components["parameters"]["release_id"]; - }; - query: { - name?: string; - label?: string; - }; - }; - requestBody: { - "*/*": string; - }; - responses: { - /** - * Response for successful upload - */ - "201": { - "application/json": components["schemas"]["release-asset"]; - }; - }; - }; - /** - * Lists all secret scanning alerts for a private repository, from newest to oldest. To use this endpoint, you must be an administrator for the repository or organization, and you must use an access token with the `repo` scope or `security_events` scope. - * - * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. - */ - "secret-scanning/list-alerts-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - /** - * Set to `open` or `resolved` to only list secret scanning alerts in a specific state. - */ - state?: "open" | "resolved"; - page?: components["parameters"]["page"]; - per_page?: components["parameters"]["per_page"]; - }; - }; - responses: { - /** - * Response - */ - "200": { - "application/json": components["schemas"]["secret-scanning-alert"][]; - }; - /** - * Repository is public or secret scanning is disabled for the repository - */ - "404": unknown; - "503": unknown; - }; - }; - /** - * Gets a single secret scanning alert detected in a private repository. To use this endpoint, you must be an administrator for the repository or organization, and you must use an access token with the `repo` scope or `security_events` scope. - * - * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. - */ - "secret-scanning/get-alert": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert_number"]; - }; - }; - responses: { - /** - * Default response - */ - "200": { - "application/json": components["schemas"]["secret-scanning-alert"]; - }; - /** - * Repository is public, or secret scanning is disabled for the repository, or the resource is not found - */ - "404": unknown; - "503": unknown; - }; - }; - /** - * Updates the status of a secret scanning alert in a private repository. To use this endpoint, you must be an administrator for the repository or organization, and you must use an access token with the `repo` scope or `security_events` scope. - * - * GitHub Apps must have the `secret_scanning_alerts` write permission to use this endpoint. - */ - "secret-scanning/update-alert": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - alert_number: components["parameters"]["alert_number"]; - }; - }; - requestBody: { - "application/json": { - state: components["schemas"]["secret-scanning-alert-state"]; - resolution?: components["schemas"]["secret-scanning-alert-resolution"]; - }; - }; - responses: { - /** - * Default response - */ - "200": { - "application/json": components["schemas"]["secret-scanning-alert"]; - }; - /** - * Repository is public, or secret scanning is disabled for the repository, or the resource is not found - */ - "404": unknown; - /** - * State does not match the resolution - */ - "422": unknown; - "503": unknown; - }; - }; - /** - * Lists the people that have starred the repository. - * - * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: - */ - "activity/list-stargazers-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - "application/vnd.github.v3.star+json": components["schemas"]["stargazer"][]; - }; - "422": unknown; - }; - }; - /** - * Returns a weekly aggregate of the number of additions and deletions pushed to a repository. - */ - "repos/get-code-frequency-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Returns a weekly aggregate of the number of additions and deletions pushed to a repository. - */ - "200": { - "application/json": components["schemas"]["code-frequency-stat"][]; - }; - }; - }; - /** - * Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`. - */ - "repos/get-commit-activity-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["commit-activity"][]; - }; - }; - }; - /** - * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information: - * - * * `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time). - * * `a` - Number of additions - * * `d` - Number of deletions - * * `c` - Number of commits - */ - "repos/get-contributors-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * * `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time). - * * `a` - Number of additions - * * `d` - Number of deletions - * * `c` - Number of commits - */ - "200": { - "application/json": components["schemas"]["contributor-activity"][]; - }; - }; - }; - /** - * Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`. - * - * The array order is oldest week (index 0) to most recent week. - */ - "repos/get-participation-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * The array order is oldest week (index 0) to most recent week. - */ - "200": { - "application/json": components["schemas"]["participation-stats"]; - }; - "404": unknown; - }; - }; - /** - * Each array contains the day number, hour number, and number of commits: - * - * * `0-6`: Sunday - Saturday - * * `0-23`: Hour of day - * * Number of commits - * - * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. - */ - "repos/get-punch-card-stats": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. - */ - "200": { - "application/json": components["schemas"]["code-frequency-stat"][]; - }; - }; - }; - /** - * Users with push access in a repository can create commit statuses for a given SHA. - * - * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error. - */ - "repos/create-commit-status": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - sha: string; - }; - }; - requestBody: { - "application/json": { - /** - * The state of the status. Can be one of `error`, `failure`, `pending`, or `success`. - */ - state: "error" | "failure" | "pending" | "success"; - /** - * The target URL to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the source of the status. - * For example, if your continuous integration system is posting build status, you would want to provide the deep link for the build output for this specific SHA: - * `http://ci.example.com/user/repo/build/sha` - */ - target_url?: string; - /** - * A short description of the status. - */ - description?: string; - /** - * A string label to differentiate this status from the status of other systems. - */ - context?: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["status"]; - }; - }; - }; - /** - * Lists the people watching the specified repository. - */ - "activity/list-watchers-for-repo": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - "activity/get-repo-subscription": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Response if you subscribe to the repository - */ - "200": { - "application/json": components["schemas"]["repository-subscription"]; - }; - "403": unknown; - /** - * Response if you don't subscribe to the repository - */ - "404": unknown; - }; - }; - /** - * If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/reference/activity#delete-a-repository-subscription) completely. - */ - "activity/set-repo-subscription": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * Determines if notifications should be received from this repository. - */ - subscribed?: boolean; - /** - * Determines if all notifications should be blocked from this repository. - */ - ignored?: boolean; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["repository-subscription"]; - }; - }; - }; - /** - * This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/reference/activity#set-a-repository-subscription). - */ - "activity/delete-repo-subscription": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - "repos/list-tags": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["tag"][]; - }; - }; - }; - /** - * Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * **Note**: For private repositories, these links are temporary and expire after five minutes. - */ - "repos/download-tarball-archive": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: string; - }; - }; - responses: { - /** - * response - */ - "302": never; - }; - }; - "repos/list-teams": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team"][]; - }; - }; - }; - "repos/get-all-topics": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["topic"]; - }; - "404": unknown; - "415": unknown; - }; - }; - "repos/replace-all-topics": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * An array of topics to add to the repository. Pass one or more topics to _replace_ the set of existing topics. Send an empty array (`[]`) to clear all topics from the repository. **Note:** Topic `names` cannot contain uppercase letters. - */ - names: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["topic"]; - }; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - "repos/get-clones": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per?: components["parameters"]["per"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["clone-traffic"]; - }; - "403": unknown; - }; - }; - /** - * Get the top 10 popular contents over the last 14 days. - */ - "repos/get-top-paths": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["content-traffic"][]; - }; - "403": unknown; - }; - }; - /** - * Get the top 10 referrers over the last 14 days. - */ - "repos/get-top-referrers": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["referrer-traffic"][]; - }; - "403": unknown; - }; - }; - /** - * Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - "repos/get-views": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - query: { - per?: components["parameters"]["per"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["view-traffic"]; - }; - "403": unknown; - }; - }; - /** - * A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://help.github.com/articles/about-repository-transfers/). - */ - "repos/transfer": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * **Required:** The username or organization name the repository will be transferred to. - */ - new_owner?: string; - /** - * ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories. - */ - team_ids?: number[]; - }; - }; - responses: { - /** - * response - */ - "202": { - "application/json": components["schemas"]["repository"]; - }; - }; - }; - /** - * Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - "repos/check-vulnerability-alerts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Response if repository is enabled with vulnerability alerts - */ - "204": never; - /** - * Response if repository is not enabled with vulnerability alerts - */ - "404": unknown; - }; - }; - /** - * Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - "repos/enable-vulnerability-alerts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Disables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - "repos/disable-vulnerability-alerts": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * **Note**: For private repositories, these links are temporary and expire after five minutes. - */ - "repos/download-zipball-archive": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - ref: string; - }; - }; - responses: { - /** - * response - */ - "302": never; - }; - }; - /** - * Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`. - * - * **OAuth scope requirements** - * - * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: - * - * * `public_repo` scope or `repo` scope to create a public repository - * * `repo` scope to create a private repository - */ - "repos/create-using-template": { - parameters: { - path: { - template_owner: string; - template_repo: string; - }; - }; - requestBody: { - "application/json": { - /** - * The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization. - */ - owner?: string; - /** - * The name of the new repository. - */ - name: string; - /** - * A short description of the new repository. - */ - description?: string; - /** - * Set to `true` to include the directory structure and files from all branches in the template repository, and not just the default branch. Default: `false`. - */ - include_all_branches?: boolean; - /** - * Either `true` to create a new private repository or `false` to create a new public one. - */ - private?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["repository"]; - }; - }; - }; - /** - * Lists all public repositories in the order that they were created. - * - * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories. - */ - "repos/list-public": { - parameters: { - query: { - since?: components["parameters"]["since-repo"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - "304": never; - "422": unknown; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - */ - "enterprise-admin/list-provisioned-groups-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - query: { - startIndex?: components["parameters"]["start_index"]; - count?: components["parameters"]["count"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["scim-group-list-enterprise"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - * - * Provision an enterprise group, and invite users to the group. This sends invitation emails to the email address of the invited users to join the GitHub organization that the SCIM group corresponds to. - */ - "enterprise-admin/provision-and-invite-enterprise-group": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - requestBody: { - "application/json": { - /** - * The SCIM schema URIs. - */ - schemas: string[]; - /** - * The name of the SCIM group. This must match the GitHub organization that the group maps to. - */ - displayName: string; - members?: { - /** - * The SCIM user ID for a user. - */ - value: string; - }[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["scim-enterprise-group"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - */ - "enterprise-admin/get-provisioning-information-for-enterprise-group": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - scim_group_id: components["parameters"]["scim_group_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["scim-enterprise-group"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - * - * Replaces an existing provisioned group’s information. You must provide all the information required for the group as if you were provisioning it for the first time. Any existing group information that you don't provide will be removed, including group membership. If you want to only update a specific attribute, use the [Update an attribute for a SCIM enterprise group](#update-an-attribute-for-a-scim-enterprise-group) endpoint instead. - */ - "enterprise-admin/set-information-for-provisioned-enterprise-group": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - scim_group_id: components["parameters"]["scim_group_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The SCIM schema URIs. - */ - schemas: string[]; - /** - * The name of the SCIM group. This must match the GitHub organization that the group maps to. - */ - displayName: string; - members?: { - /** - * The SCIM user ID for a user. - */ - value: string; - }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["scim-enterprise-group"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - * - * Allows you to change a provisioned group’s individual attributes. To change a group’s values, you must provide a specific Operations JSON format that contains at least one of the add, remove, or replace operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2). - */ - "enterprise-admin/update-attribute-for-enterprise-group": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - scim_group_id: components["parameters"]["scim_group_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The SCIM schema URIs. - */ - schemas: string[]; - /** - * Array of [SCIM operations](https://tools.ietf.org/html/rfc7644#section-3.5.2). - */ - Operations: { [key: string]: any }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["scim-enterprise-group"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - */ - "enterprise-admin/delete-scim-group-from-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - scim_group_id: components["parameters"]["scim_group_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - * - * Retrieves a paginated list of all provisioned enterprise members, including pending invitations. - * - * When a user with a SAML-provisioned external identity leaves (or is removed from) an enterprise, the account's metadata is immediately removed. However, the returned list of user accounts might not always match the organization or enterprise member list you see on GitHub. This can happen in certain cases where an external identity associated with an organization will not match an organization member: - * - When a user with a SCIM-provisioned external identity is removed from an enterprise, the account's metadata is preserved to allow the user to re-join the organization in the future. - * - When inviting a user to join an organization, you can expect to see their external identity in the results before they accept the invitation, or if the invitation is cancelled (or never accepted). - * - When a user is invited over SCIM, an external identity is created that matches with the invitee's email address. However, this identity is only linked to a user account when the user accepts the invitation by going through SAML SSO. - * - * The returned list of external identities can include an entry for a `null` user. These are unlinked SAML identities that are created when a user goes through the following Single Sign-On (SSO) process but does not sign in to their GitHub account after completing SSO: - * - * 1. The user is granted access by the IdP and is not a member of the GitHub enterprise. - * - * 1. The user attempts to access the GitHub enterprise and initiates the SAML SSO process, and is not currently signed in to their GitHub account. - * - * 1. After successfully authenticating with the SAML SSO IdP, the `null` external identity entry is created and the user is prompted to sign in to their GitHub account: - * - If the user signs in, their GitHub account is linked to this entry. - * - If the user does not sign in (or does not create a new account when prompted), they are not added to the GitHub enterprise, and the external identity `null` entry remains in place. - */ - "enterprise-admin/list-provisioned-identities-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - query: { - startIndex?: components["parameters"]["start_index"]; - count?: components["parameters"]["count"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["scim-user-list-enterprise"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - * - * Provision enterprise membership for a user, and send organization invitation emails to the email address. - * - * You can optionally include the groups a user will be invited to join. If you do not provide a list of `groups`, the user is provisioned for the enterprise, but no organization invitation emails will be sent. - */ - "enterprise-admin/provision-and-invite-enterprise-user": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - }; - }; - requestBody: { - "application/json": { - /** - * The SCIM schema URIs. - */ - schemas: string[]; - /** - * The username for the user. - */ - userName: string; - name: { - /** - * The first name of the user. - */ - givenName: string; - /** - * The last name of the user. - */ - familyName: string; - }; - /** - * List of user emails. - */ - emails: { - /** - * The email address. - */ - value: string; - /** - * The type of email address. - */ - type: string; - /** - * Whether this email address is the primary address. - */ - primary: boolean; - }[]; - /** - * List of SCIM group IDs the user is a member of. - */ - groups?: { value?: string }[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["scim-enterprise-user"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - */ - "enterprise-admin/get-provisioning-information-for-enterprise-user": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - scim_user_id: components["parameters"]["scim_user_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["scim-enterprise-user"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - * - * Replaces an existing provisioned user's information. You must provide all the information required for the user as if you were provisioning them for the first time. Any existing user information that you don't provide will be removed. If you want to only update a specific attribute, use the [Update an attribute for a SCIM user](#update-an-attribute-for-an-enterprise-scim-user) endpoint instead. - * - * You must at least provide the required values for the user: `userName`, `name`, and `emails`. - * - * **Warning:** Setting `active: false` removes the user from the enterprise, deletes the external identity, and deletes the associated `{scim_user_id}`. - */ - "enterprise-admin/set-information-for-provisioned-enterprise-user": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - scim_user_id: components["parameters"]["scim_user_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The SCIM schema URIs. - */ - schemas: string[]; - /** - * The username for the user. - */ - userName: string; - name: { - /** - * The first name of the user. - */ - givenName: string; - /** - * The last name of the user. - */ - familyName: string; - }; - /** - * List of user emails. - */ - emails: { - /** - * The email address. - */ - value: string; - /** - * The type of email address. - */ - type: string; - /** - * Whether this email address is the primary address. - */ - primary: boolean; - }[]; - /** - * List of SCIM group IDs the user is a member of. - */ - groups?: { value?: string }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["scim-enterprise-user"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - * - * Allows you to change a provisioned user's individual attributes. To change a user's values, you must provide a specific `Operations` JSON format that contains at least one of the `add`, `remove`, or `replace` operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2). - * - * **Note:** Complicated SCIM `path` selectors that include filters are not supported. For example, a `path` selector defined as `"path": "emails[type eq \"work\"]"` will not work. - * - * **Warning:** If you set `active:false` using the `replace` operation (as shown in the JSON example below), it removes the user from the enterprise, deletes the external identity, and deletes the associated `:scim_user_id`. - * - * ``` - * { - * "Operations":[{ - * "op":"replace", - * "value":{ - * "active":false - * } - * }] - * } - * ``` - */ - "enterprise-admin/update-attribute-for-enterprise-user": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - scim_user_id: components["parameters"]["scim_user_id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The SCIM schema URIs. - */ - schemas: string[]; - /** - * Array of [SCIM operations](https://tools.ietf.org/html/rfc7644#section-3.5.2). - */ - Operations: { [key: string]: any }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["scim-enterprise-user"]; - }; - }; - }; - /** - * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. - */ - "enterprise-admin/delete-user-from-enterprise": { - parameters: { - path: { - enterprise: components["parameters"]["enterprise"]; - scim_user_id: components["parameters"]["scim_user_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * Retrieves a paginated list of all provisioned organization members, including pending invitations. If you provide the `filter` parameter, the resources for all matching provisions members are returned. - * - * When a user with a SAML-provisioned external identity leaves (or is removed from) an organization, the account's metadata is immediately removed. However, the returned list of user accounts might not always match the organization or enterprise member list you see on GitHub. This can happen in certain cases where an external identity associated with an organization will not match an organization member: - * - When a user with a SCIM-provisioned external identity is removed from an organization, the account's metadata is preserved to allow the user to re-join the organization in the future. - * - When inviting a user to join an organization, you can expect to see their external identity in the results before they accept the invitation, or if the invitation is cancelled (or never accepted). - * - When a user is invited over SCIM, an external identity is created that matches with the invitee's email address. However, this identity is only linked to a user account when the user accepts the invitation by going through SAML SSO. - * - * The returned list of external identities can include an entry for a `null` user. These are unlinked SAML identities that are created when a user goes through the following Single Sign-On (SSO) process but does not sign in to their GitHub account after completing SSO: - * - * 1. The user is granted access by the IdP and is not a member of the GitHub organization. - * - * 1. The user attempts to access the GitHub organization and initiates the SAML SSO process, and is not currently signed in to their GitHub account. - * - * 1. After successfully authenticating with the SAML SSO IdP, the `null` external identity entry is created and the user is prompted to sign in to their GitHub account: - * - If the user signs in, their GitHub account is linked to this entry. - * - If the user does not sign in (or does not create a new account when prompted), they are not added to the GitHub organization, and the external identity `null` entry remains in place. - */ - "scim/list-provisioned-identities": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - query: { - /** - * Used for pagination: the index of the first result to return. - */ - startIndex?: number; - /** - * Used for pagination: the number of results to return. - */ - count?: number; - /** - * Filters results using the equals query parameter operator (`eq`). You can filter results that are equal to `id`, `userName`, `emails`, and `external_id`. For example, to search for an identity with the `userName` Octocat, you would use this query: - * - * `?filter=userName%20eq%20\"Octocat\"`. - * - * To filter results for for the identity with the email `octocat@github.com`, you would use this query: - * - * `?filter=emails%20eq%20\"octocat@github.com\"`. - */ - filter?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/scim+json": components["schemas"]["scim-user-list"]; - }; - "304": never; - "400": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Provision organization membership for a user, and send an activation email to the email address. - */ - "scim/provision-and-invite-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * Configured by the admin. Could be an email, login, or username - */ - userName: string; - /** - * The name of the user, suitable for display to end-users - */ - displayName?: string; - name: { givenName: string; familyName: string; formatted?: string }; - /** - * user emails - */ - emails: { value: string; primary?: boolean; type?: string }[]; - schemas?: string[]; - externalId?: string; - groups?: string[]; - active?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/scim+json": components["schemas"]["scim-user"]; - }; - "304": never; - "400": unknown; - "403": unknown; - "404": unknown; - "409": unknown; - "500": unknown; - }; - }; - "scim/get-provisioning-information-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - scim_user_id: components["parameters"]["scim_user_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/scim+json": components["schemas"]["scim-user"]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Replaces an existing provisioned user's information. You must provide all the information required for the user as if you were provisioning them for the first time. Any existing user information that you don't provide will be removed. If you want to only update a specific attribute, use the [Update an attribute for a SCIM user](https://docs.github.com/rest/reference/scim#update-an-attribute-for-a-scim-user) endpoint instead. - * - * You must at least provide the required values for the user: `userName`, `name`, and `emails`. - * - * **Warning:** Setting `active: false` removes the user from the organization, deletes the external identity, and deletes the associated `{scim_user_id}`. - */ - "scim/set-information-for-provisioned-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - scim_user_id: components["parameters"]["scim_user_id"]; - }; - }; - requestBody: { - "application/json": { - schemas?: string[]; - /** - * The name of the user, suitable for display to end-users - */ - displayName?: string; - externalId?: string; - groups?: string[]; - active?: boolean; - /** - * Configured by the admin. Could be an email, login, or username - */ - userName: string; - name: { givenName: string; familyName: string; formatted?: string }; - /** - * user emails - */ - emails: { type?: string; value: string; primary?: boolean }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/scim+json": components["schemas"]["scim-user"]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Allows you to change a provisioned user's individual attributes. To change a user's values, you must provide a specific `Operations` JSON format that contains at least one of the `add`, `remove`, or `replace` operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2). - * - * **Note:** Complicated SCIM `path` selectors that include filters are not supported. For example, a `path` selector defined as `"path": "emails[type eq \"work\"]"` will not work. - * - * **Warning:** If you set `active:false` using the `replace` operation (as shown in the JSON example below), it removes the user from the organization, deletes the external identity, and deletes the associated `:scim_user_id`. - * - * ``` - * { - * "Operations":[{ - * "op":"replace", - * "value":{ - * "active":false - * } - * }] - * } - * ``` - */ - "scim/update-attribute-for-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - scim_user_id: components["parameters"]["scim_user_id"]; - }; - }; - requestBody: { - "application/json": { - schemas?: string[]; - /** - * Set of operations to be performed - */ - Operations: { - op: "add" | "remove" | "replace"; - path?: string; - value?: - | { - active?: boolean | null; - userName?: string | null; - externalId?: string | null; - givenName?: string | null; - familyName?: string | null; - } - | { value?: string; primary?: boolean }[] - | string; - }[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/scim+json": components["schemas"]["scim-user"]; - }; - "304": never; - "400": unknown; - "403": unknown; - "404": unknown; - /** - * Too many requests - */ - "429": { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - "scim/delete-user-from-org": { - parameters: { - path: { - org: components["parameters"]["org"]; - scim_user_id: components["parameters"]["scim_user_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this: - * - * `q=addClass+in:file+language:js+repo:jquery/jquery` - * - * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository. - * - * #### Considerations for code search - * - * Due to the complexity of searching code, there are a few restrictions on how searches are performed: - * - * * Only the _default branch_ is considered. In most cases, this will be the `master` branch. - * * Only files smaller than 384 KB are searchable. - * * You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing - * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is. - */ - "search/code": { - parameters: { - query: { - /** - * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching code](https://help.github.com/articles/searching-code/)" for a detailed list of qualifiers. - */ - q: string; - /** - * Sorts the results of your query. Can only be `indexed`, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) - */ - sort?: "indexed"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - incomplete_results?: boolean; - items?: components["schemas"]["code-search-result-item"][]; - }; - }; - "304": never; - "403": unknown; - "422": unknown; - "503": unknown; - }; - }; - /** - * Find commits via various criteria on the default branch (usually `master`). This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match - * metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this: - * - * `q=repo:octocat/Spoon-Knife+css` - */ - "search/commits": { - parameters: { - query: { - /** - * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching commits](https://help.github.com/articles/searching-commits/)" for a detailed list of qualifiers. - */ - q: string; - /** - * Sorts the results of your query by `author-date` or `committer-date`. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) - */ - sort?: "author-date" | "committer-date"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - incomplete_results?: boolean; - items?: components["schemas"]["commit-search-result-item"][]; - }; - }; - "304": never; - "415": unknown; - }; - }; - /** - * Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted - * search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this. - * - * `q=windows+label:bug+language:python+state:open&sort=created&order=asc` - * - * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results. - * - * **Note:** For [user-to-server](https://docs.github.com/developers/apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) GitHub App requests, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)." - */ - "search/issues-and-pull-requests": { - parameters: { - query: { - /** - * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)" for a detailed list of qualifiers. - */ - q: string; - /** - * Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) - */ - sort?: - | "comments" - | "reactions" - | "reactions-+1" - | "reactions--1" - | "reactions-smile" - | "reactions-thinking_face" - | "reactions-heart" - | "reactions-tada" - | "interactions" - | "created" - | "updated"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - incomplete_results?: boolean; - items?: components["schemas"]["issue-search-result-item"][]; - }; - }; - "304": never; - "403": unknown; - "422": unknown; - "503": unknown; - }; - }; - /** - * Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this: - * - * `q=bug+defect+enhancement&repository_id=64778136` - * - * The labels that best match the query appear first in the search results. - */ - "search/labels": { - parameters: { - query: { - /** - * The id of the repository. - */ - repository_id: number; - /** - * The search keywords. This endpoint does not accept qualifiers in the query. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). - */ - q: string; - /** - * Sorts the results of your query by when the label was `created` or `updated`. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) - */ - sort?: "created" | "updated"; - order?: components["parameters"]["order"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - incomplete_results?: boolean; - items?: components["schemas"]["label-search-result-item"][]; - }; - }; - "304": never; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this: - * - * `q=tetris+language:assembly&sort=stars&order=desc` - * - * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results. - * - * When you include the `mercy` preview header, you can also search for multiple topics by adding more `topic:` instances. For example, your query might look like this: - * - * `q=topic:ruby+topic:rails` - */ - "search/repos": { - parameters: { - query: { - /** - * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching for repositories](https://help.github.com/articles/searching-for-repositories/)" for a detailed list of qualifiers. - */ - q: string; - /** - * Sorts the results of your query by number of `stars`, `forks`, or `help-wanted-issues` or how recently the items were `updated`. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) - */ - sort?: "stars" | "forks" | "help-wanted-issues" | "updated"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - incomplete_results?: boolean; - items?: components["schemas"]["repo-search-result-item"][]; - }; - }; - "304": never; - "422": unknown; - "503": unknown; - }; - }; - /** - * Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). See "[Searching topics](https://help.github.com/articles/searching-topics/)" for a detailed list of qualifiers. - * - * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this: - * - * `q=ruby+is:featured` - * - * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results. - */ - "search/topics": { - parameters: { - query: { - /** - * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). - */ - q: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - incomplete_results?: boolean; - items?: components["schemas"]["topic-search-result-item"][]; - }; - }; - "304": never; - "415": unknown; - }; - }; - /** - * Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for users, you can get text match metadata for the issue **login**, **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you're looking for a list of popular users, you might try this query: - * - * `q=tom+repos:%3E42+followers:%3E1000` - * - * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers. - */ - "search/users": { - parameters: { - query: { - /** - * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching users](https://help.github.com/articles/searching-users/)" for a detailed list of qualifiers. - */ - q: string; - /** - * Sorts the results of your query by number of `followers` or `repositories`, or when the person `joined` GitHub. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) - */ - sort?: "followers" | "repositories" | "joined"; - order?: components["parameters"]["order"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": { - total_count?: number; - incomplete_results?: boolean; - items?: components["schemas"]["user-search-result-item"][]; - }; - }; - "304": never; - "422": unknown; - "503": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the [Get a team by name](https://docs.github.com/rest/reference/teams#get-a-team-by-name) endpoint. - */ - "teams/get-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-full"]; - }; - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a team](https://docs.github.com/rest/reference/teams#update-a-team) endpoint. - * - * To edit a team, the authenticated user must either be an organization owner or a team maintainer. - * - * **Note:** With nested teams, the `privacy` for parent teams cannot be `secret`. - */ - "teams/update-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The name of the team. - */ - name: string; - /** - * The description of the team. - */ - description?: string; - /** - * The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are: - * **For a non-nested team:** - * \* `secret` - only visible to organization owners and members of this team. - * \* `closed` - visible to all members of this organization. - * **For a parent or child team:** - * \* `closed` - visible to all members of this organization. - */ - privacy?: "secret" | "closed"; - /** - * **Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of: - * \* `pull` - team members can pull, but not push to or administer newly-added repositories. - * \* `push` - team members can pull and push, but not administer newly-added repositories. - * \* `admin` - team members can pull, push and administer newly-added repositories. - */ - permission?: "pull" | "push" | "admin"; - /** - * The ID of a team to set as the parent team. - */ - parent_team_id?: number | null; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["team-full"]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a team](https://docs.github.com/rest/reference/teams#delete-a-team) endpoint. - * - * To delete a team, the authenticated user must be an organization owner or team maintainer. - * - * If you are an organization owner, deleting a parent team will delete all of its child teams as well. - */ - "teams/delete-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List discussions`](https://docs.github.com/rest/reference/teams#list-discussions) endpoint. - * - * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "teams/list-discussions-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - query: { - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion"][]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create a discussion`](https://docs.github.com/rest/reference/teams#create-a-discussion) endpoint. - * - * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - "teams/create-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The discussion post's title. - */ - title: string; - /** - * The discussion post's body text. - */ - body: string; - /** - * Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post. - */ - private?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion](https://docs.github.com/rest/reference/teams#get-a-discussion) endpoint. - * - * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "teams/get-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion](https://docs.github.com/rest/reference/teams#update-a-discussion) endpoint. - * - * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "teams/update-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The discussion post's title. - */ - title?: string; - /** - * The discussion post's body text. - */ - body?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion"]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Delete a discussion`](https://docs.github.com/rest/reference/teams#delete-a-discussion) endpoint. - * - * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "teams/delete-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List discussion comments](https://docs.github.com/rest/reference/teams#list-discussion-comments) endpoint. - * - * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "teams/list-discussion-comments-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - query: { - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion-comment"][]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Create a discussion comment](https://docs.github.com/rest/reference/teams#create-a-discussion-comment) endpoint. - * - * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - "teams/create-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The discussion comment's body text. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion comment](https://docs.github.com/rest/reference/teams#get-a-discussion-comment) endpoint. - * - * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "teams/get-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion comment](https://docs.github.com/rest/reference/teams#update-a-discussion-comment) endpoint. - * - * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "teams/update-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The discussion comment's body text. - */ - body: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-discussion-comment"]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a discussion comment](https://docs.github.com/rest/reference/teams#delete-a-discussion-comment) endpoint. - * - * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "teams/delete-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion comment`](https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion-comment) endpoint. - * - * List the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "reactions/list-for-team-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - query: { - /** - * Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion comment. - */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["reaction"][]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion comment`](https://docs.github.comt/rest/reference/reactions#create-reaction-for-a-team-discussion-comment) endpoint. - * - * Create a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion comment. - */ - "reactions/create-for-team-discussion-comment-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - comment_number: components["parameters"]["comment-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion comment. - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["reaction"]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion`](https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion) endpoint. - * - * List the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "reactions/list-for-team-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - query: { - /** - * Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion. - */ - content?: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["reaction"][]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion`](https://docs.github.com/rest/reference/reactions#create-reaction-for-a-team-discussion) endpoint. - * - * Create a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion. - */ - "reactions/create-for-team-discussion-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - discussion_number: components["parameters"]["discussion-number"]; - }; - }; - requestBody: { - "application/json": { - /** - * The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion. - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["reaction"]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List pending team invitations`](https://docs.github.com/rest/reference/teams#list-pending-team-invitations) endpoint. - * - * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - */ - "teams/list-pending-invitations-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["organization-invitation"][]; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team members`](https://docs.github.com/rest/reference/teams#list-team-members) endpoint. - * - * Team members will include the members of child teams. - */ - "teams/list-members-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - query: { - /** - * Filters members returned by their role in the team. Can be one of: - * \* `member` - normal members of the team. - * \* `maintainer` - team maintainers. - * \* `all` - all members of the team. - */ - role?: "member" | "maintainer" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "404": unknown; - }; - }; - /** - * The "Get team member" endpoint (described below) is deprecated. - * - * We recommend using the [Get team membership for a user](https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user) endpoint instead. It allows you to get both active and pending memberships. - * - * To list members in a team, the team must be visible to the authenticated user. - */ - "teams/get-member-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Response if user is a member - */ - "204": never; - /** - * Response if user is not a member - */ - "404": unknown; - }; - }; - /** - * The "Add team member" endpoint (described below) is deprecated. - * - * We recommend using the [Add or update team membership for a user](https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user) endpoint instead. It allows you to invite new organization members to your teams. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To add someone to a team, the authenticated user must be an organization owner or a team maintainer in the team they're changing. The person being added to the team must be a member of the team's organization. - * - * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - "teams/add-member-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "403": unknown; - /** - * Response if team synchronization is set up - */ - "404": unknown; - /** - * response - */ - "422": { - "application/json": { - message?: string; - errors?: { code?: string; field?: string; resource?: string }[]; - documentation_url?: string; - }; - }; - }; - }; - /** - * The "Remove team member" endpoint (described below) is deprecated. - * - * We recommend using the [Remove team membership for a user](https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user) endpoint instead. It allows you to remove both active and pending memberships. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team. - * - * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - */ - "teams/remove-member-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - /** - * Response if team synchronization is setup - */ - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get team membership for a user](https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user) endpoint. - * - * Team members will include the members of child teams. - * - * To get a user's membership with a team, the team must be visible to the authenticated user. - * - * **Note:** The `role` for organization owners returns as `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team). - */ - "teams/get-membership-for-user-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-membership"]; - }; - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team membership for a user](https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user) endpoint. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * If the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a team maintainer. - * - * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * If the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the "pending" state until the user accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner. - * - * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. - */ - "teams/add-or-update-membership-for-user-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - requestBody: { - "application/json": { - /** - * The role that this user should have in the team. Can be one of: - * \* `member` - a normal member of the team. - * \* `maintainer` - a team maintainer. Able to add/remove other team members, promote other team members to team maintainer, and edit the team's name and description. - */ - role?: "member" | "maintainer"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-membership"]; - }; - /** - * Response if team synchronization is set up - */ - "403": unknown; - "404": unknown; - /** - * Response if you attempt to add an organization to a team - */ - "422": { - "application/json": { - message?: string; - errors?: { code?: string; field?: string; resource?: string }[]; - documentation_url?: string; - }; - }; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove team membership for a user](https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user) endpoint. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. - * - * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - */ - "teams/remove-membership-for-user-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - /** - * Response if team synchronization is set up - */ - "403": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team projects`](https://docs.github.com/rest/reference/teams#list-team-projects) endpoint. - * - * Lists the organization projects for a team. - */ - "teams/list-projects-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-project"][]; - }; - "404": unknown; - "415": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a project](https://docs.github.com/rest/reference/teams#check-team-permissions-for-a-project) endpoint. - * - * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team. - */ - "teams/check-permissions-for-project-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-project"]; - }; - /** - * Response if project is not managed by this team - */ - "404": unknown; - "415": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team project permissions](https://docs.github.com/rest/reference/teams#add-or-update-team-project-permissions) endpoint. - * - * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization. - */ - "teams/add-or-update-project-permissions-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - project_id: components["parameters"]["project-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The permission to grant to the team for this project. Can be one of: - * \* `read` - team members can read, but not write to or administer this project. - * \* `write` - team members can read and write, but not administer this project. - * \* `admin` - team members can read, write and administer this project. - * Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - permission?: "read" | "write" | "admin"; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - /** - * Response if the project is not owned by the organization - */ - "403": { - "application/json": { message?: string; documentation_url?: string }; - }; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a project from a team](https://docs.github.com/rest/reference/teams#remove-a-project-from-a-team) endpoint. - * - * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. **Note:** This endpoint removes the project from the team, but does not delete it. - */ - "teams/remove-project-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - project_id: components["parameters"]["project-id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "404": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List team repositories](https://docs.github.com/rest/reference/teams#list-team-repositories) endpoint. - */ - "teams/list-repos-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - "404": unknown; - }; - }; - /** - * **Note**: Repositories inherited through a parent team will also be checked. - * - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a repository](https://docs.github.com/rest/reference/teams#check-team-permissions-for-a-repository) endpoint. - * - * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: - */ - "teams/check-permissions-for-repo-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Alternative response with extra repository information - */ - "200": { - "application/vnd.github.v3.repository+json": components["schemas"]["team-repository"]; - }; - /** - * Response if repository is managed by this team - */ - "204": never; - /** - * Response if repository is not managed by this team - */ - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team repository permissions](https://docs.github.comt/rest/reference/teams#add-or-update-team-project-permissions) endpoint. - * - * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - "teams/add-or-update-repo-permissions-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - requestBody: { - "application/json": { - /** - * The permission to grant the team on this repository. Can be one of: - * \* `pull` - team members can pull, but not push to or administer this repository. - * \* `push` - team members can pull and push, but not administer this repository. - * \* `admin` - team members can pull, push and administer this repository. - * - * If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository. - */ - permission?: "pull" | "push" | "admin"; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "403": unknown; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a repository from a team](https://docs.github.com/rest/reference/teams#remove-a-repository-from-a-team) endpoint. - * - * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. NOTE: This does not delete the repository, it just removes it from the team. - */ - "teams/remove-repo-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List IdP groups for a team`](https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team) endpoint. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * List IdP groups connected to a team on GitHub. - */ - "teams/list-idp-groups-for-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["group-mapping"]; - }; - "403": unknown; - "404": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create or update IdP group connections`](https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections) endpoint. - * - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty `groups` array will remove all connections for a team. - */ - "teams/create-or-update-idp-group-connections-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - }; - requestBody: { - "application/json": { - /** - * The IdP groups you want to connect to a GitHub team. When updating, the new `groups` object will replace the original one. You must include any existing groups that you don't want to remove. - */ - groups: { - /** - * ID of the IdP group. - */ - group_id: string; - /** - * Name of the IdP group. - */ - group_name: string; - /** - * Description of the IdP group. - */ - group_description: string; - id?: string; - name?: string; - description?: string; - }[]; - synced_at?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["group-mapping"]; - }; - "403": unknown; - "422": unknown; - }; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List child teams`](https://docs.github.com/rest/reference/teams#list-child-teams) endpoint. - */ - "teams/list-child-legacy": { - parameters: { - path: { - team_id: components["parameters"]["team-id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * Response if child teams exist - */ - "200": { - "application/json": components["schemas"]["team"][]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * If the authenticated user is authenticated through basic authentication or OAuth with the `user` scope, then the response lists public and private profile information. - * - * If the authenticated user is authenticated through OAuth without the `user` scope, then the response lists only public profile information. - */ - "users/get-authenticated": { - parameters: {}; - responses: { - /** - * response - */ - "200": { - "application/json": - | components["schemas"]["private-user"] - | components["schemas"]["public-user"]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API. - */ - "users/update-authenticated": { - parameters: {}; - requestBody: { - "application/json": { - /** - * The new name of the user. - */ - name?: string; - /** - * The publicly visible email address of the user. - */ - email?: string; - /** - * The new blog URL of the user. - */ - blog?: string; - /** - * The new Twitter username of the user. - */ - twitter_username?: string | null; - /** - * The new company of the user. - */ - company?: string; - /** - * The new location of the user. - */ - location?: string; - /** - * The new hiring availability of the user. - */ - hireable?: boolean; - /** - * The new short biography of the user. - */ - bio?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["private-user"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * List the users you've blocked on your personal account. - */ - "users/list-blocked-by-authenticated": { - parameters: {}; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "415": unknown; - }; - }; - /** - * If the user is blocked: - * - * If the user is not blocked: - */ - "users/check-blocked": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * If the user is blocked: - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - /** - * If the user is not blocked: - */ - "404": { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - "users/block": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - "users/unblock": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Sets the visibility for your primary email addresses. - */ - "users/set-primary-email-visibility-for-authenticated": { - parameters: {}; - requestBody: { - "application/json": { - /** - * An email address associated with the GitHub user account to manage. - */ - email: string; - /** - * Denotes whether an email is publically visible. - */ - visibility: "public" | "private"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["email"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope. - */ - "users/list-emails-for-authenticated": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["email"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * This endpoint is accessible with the `user` scope. - */ - "users/add-email-for-authenticated": { - parameters: {}; - requestBody: { - "application/json": - | { - /** - * Adds one or more email addresses to your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key. - */ - emails: string[]; - } - | string[] - | string; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["email"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * This endpoint is accessible with the `user` scope. - */ - "users/delete-email-for-authenticated": { - parameters: {}; - requestBody: { - "application/json": - | { - /** - * Email addresses associated with the GitHub user account. - */ - emails: string[]; - } - | string[] - | string; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Lists the people following the authenticated user. - */ - "users/list-followers-for-authenticated-user": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * Lists the people who the authenticated user follows. - */ - "users/list-followed-by-authenticated": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "users/check-person-is-followed-by-authenticated": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Response if the person is followed by the authenticated user - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - /** - * Response if the person is not followed by the authenticated user - */ - "404": { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - /** - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - * - * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. - */ - "users/follow": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. - */ - "users/unfollow": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "users/list-gpg-keys-for-authenticated": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gpg-key"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "users/create-gpg-key-for-authenticated": { - parameters: {}; - requestBody: { - "application/json": { - /** - * A GPG key in ASCII-armored format. - */ - armored_public_key: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["gpg-key"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "users/get-gpg-key-for-authenticated": { - parameters: { - path: { - gpg_key_id: components["parameters"]["gpg_key_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gpg-key"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "users/delete-gpg-key-for-authenticated": { - parameters: { - path: { - gpg_key_id: components["parameters"]["gpg_key_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * You can find the permissions for the installation under the `permissions` key. - */ - "apps/list-installations-for-authenticated-user": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * You can find the permissions for the installation under the `permissions` key. - */ - "200": { - "application/json": { - total_count?: number; - installations?: components["schemas"]["installation"][]; - }; - }; - "304": never; - "401": unknown; - "403": unknown; - "415": unknown; - }; - }; - /** - * List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. - * - * The access the user has to each repository is included in the hash under the `permissions` key. - */ - "apps/list-installation-repos-for-authenticated-user": { - parameters: { - path: { - installation_id: components["parameters"]["installation_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * The access the user has to each repository is included in the hash under the `permissions` key. - */ - "200": { - "application/json": { - total_count?: number; - repository_selection?: string; - repositories?: components["schemas"]["repository"][]; - }; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Add a single repository to an installation. The authenticated user must have admin access to the repository. - * - * You must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to access this endpoint. - */ - "apps/add-repo-to-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation_id"]; - repository_id: components["parameters"]["repository_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Remove a single repository from an installation. The authenticated user must have admin access to the repository. - * - * You must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to access this endpoint. - */ - "apps/remove-repo-from-installation": { - parameters: { - path: { - installation_id: components["parameters"]["installation_id"]; - repository_id: components["parameters"]["repository_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Shows which type of GitHub user can interact with your public repositories and when the restriction expires. If there are no restrictions, you will see an empty response. - */ - "interactions/get-restrictions-for-your-public-repos": { - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["interaction-limit-response"]; - }; - }; - }; - /** - * Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. - */ - "interactions/set-restrictions-for-your-public-repos": { - requestBody: { - "application/json": components["schemas"]["interaction-limit"]; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["interaction-limit-response"]; - }; - "422": unknown; - }; - }; - /** - * Removes any interaction restrictions from your public repositories. - */ - "interactions/remove-restrictions-for-your-public-repos": { - responses: { - /** - * Empty response - */ - "204": never; - }; - }; - /** - * List issues across owned and member repositories assigned to the authenticated user. - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - "issues/list-for-authenticated-user": { - parameters: { - query: { - /** - * Indicates which sorts of issues to return. Can be one of: - * \* `assigned`: Issues assigned to you - * \* `created`: Issues created by you - * \* `mentioned`: Issues mentioning you - * \* `subscribed`: Issues you're subscribed to updates for - * \* `all`: All issues the authenticated user can see, regardless of participation or creation - */ - filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all"; - /** - * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`. - */ - state?: "open" | "closed" | "all"; - labels?: components["parameters"]["labels"]; - /** - * What to sort results by. Can be either `created`, `updated`, `comments`. - */ - sort?: "created" | "updated" | "comments"; - direction?: components["parameters"]["direction"]; - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["issue"][]; - }; - "304": never; - "404": unknown; - }; - }; - /** - * Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "users/list-public-ssh-keys-for-authenticated": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["key"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "users/create-public-ssh-key-for-authenticated": { - parameters: {}; - requestBody: { - "application/json": { - /** - * A descriptive name for the new key. - */ - title?: string; - /** - * The public SSH key to add to your GitHub account. - */ - key: string; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["key"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "users/get-public-ssh-key-for-authenticated": { - parameters: { - path: { - key_id: components["parameters"]["key_id"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["key"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - "users/delete-public-ssh-key-for-authenticated": { - parameters: { - path: { - key_id: components["parameters"]["key_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). - */ - "apps/list-subscriptions-for-authenticated-user": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["user-marketplace-purchase"][]; - }; - "304": never; - "401": unknown; - "404": unknown; - }; - }; - /** - * Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). - */ - "apps/list-subscriptions-for-authenticated-user-stubbed": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["user-marketplace-purchase"][]; - }; - "304": never; - "401": unknown; - }; - }; - "orgs/list-memberships-for-authenticated-user": { - parameters: { - query: { - /** - * Indicates the state of the memberships to return. Can be either `active` or `pending`. If not specified, the API returns both active and pending memberships. - */ - state?: "active" | "pending"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["org-membership"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "422": unknown; - }; - }; - "orgs/get-membership-for-authenticated-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["org-membership"]; - }; - "403": unknown; - "404": unknown; - }; - }; - "orgs/update-membership-for-authenticated-user": { - parameters: { - path: { - org: components["parameters"]["org"]; - }; - }; - requestBody: { - "application/json": { - /** - * The state that the membership should be in. Only `"active"` will be accepted. - */ - state: "active"; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["org-membership"]; - }; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * Lists all migrations a user has started. - */ - "migrations/list-for-authenticated-user": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["migration"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * Initiates the generation of a user migration archive. - */ - "migrations/start-for-authenticated-user": { - parameters: {}; - requestBody: { - "application/json": { - /** - * Lock the repositories being migrated at the start of the migration - */ - lock_repositories?: boolean; - /** - * Do not include attachments in the migration - */ - exclude_attachments?: boolean; - /** - * Exclude attributes from the API response to improve performance - */ - exclude?: "repositories"[]; - repositories: string[]; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["migration"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "422": unknown; - }; - }; - /** - * Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values: - * - * * `pending` - the migration hasn't started yet. - * * `exporting` - the migration is in progress. - * * `exported` - the migration finished successfully. - * * `failed` - the migration failed. - * - * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive). - */ - "migrations/get-status-for-authenticated-user": { - parameters: { - path: { - migration_id: components["parameters"]["migration_id"]; - }; - query: { - exclude?: string[]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["migration"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects: - * - * * attachments - * * bases - * * commit\_comments - * * issue\_comments - * * issue\_events - * * issues - * * milestones - * * organizations - * * projects - * * protected\_branches - * * pull\_request\_reviews - * * pull\_requests - * * releases - * * repositories - * * review\_comments - * * schema - * * users - * - * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data. - */ - "migrations/get-archive-for-authenticated-user": { - parameters: { - path: { - migration_id: components["parameters"]["migration_id"]; - }; - }; - responses: { - /** - * response - */ - "302": never; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/reference/migrations#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/reference/migrations#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted. - */ - "migrations/delete-archive-for-authenticated-user": { - parameters: { - path: { - migration_id: components["parameters"]["migration_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/reference/migrations#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/reference/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked. - */ - "migrations/unlock-repo-for-authenticated-user": { - parameters: { - path: { - migration_id: components["parameters"]["migration_id"]; - repo_name: components["parameters"]["repo_name"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Lists all the repositories for this user migration. - */ - "migrations/list-repos-for-user": { - parameters: { - path: { - migration_id: components["parameters"]["migration_id"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - "404": unknown; - }; - }; - /** - * List organizations for the authenticated user. - * - * **OAuth scope requirements** - * - * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response. - */ - "orgs/list-for-authenticated-user": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["organization-simple"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "projects/create-for-authenticated-user": { - parameters: {}; - requestBody: { - "application/json": { - /** - * Name of the project - */ - name: string; - /** - * Body of the project - */ - body?: string | null; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["project"]; - }; - "304": never; - "401": unknown; - "403": unknown; - "415": unknown; - "422": unknown; - }; - }; - /** - * Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope. - */ - "users/list-public-emails-for-authenticated": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["email"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - */ - "repos/list-for-authenticated-user": { - parameters: { - query: { - /** - * Can be one of `all`, `public`, or `private`. - */ - visibility?: "all" | "public" | "private"; - /** - * Comma-separated list of values. Can include: - * \* `owner`: Repositories that are owned by the authenticated user. - * \* `collaborator`: Repositories that the user has been added to as a collaborator. - * \* `organization_member`: Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on. - */ - affiliation?: string; - /** - * Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` - * - * Will cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**. - */ - type?: "all" | "owner" | "public" | "private" | "member"; - /** - * Can be one of `created`, `updated`, `pushed`, `full_name`. - */ - sort?: "created" | "updated" | "pushed" | "full_name"; - /** - * Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc` - */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - since?: components["parameters"]["since"]; - before?: components["parameters"]["before"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["repository"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - /** - * Response definition missing - */ - "418": unknown; - "422": unknown; - }; - }; - /** - * Creates a new repository for the authenticated user. - * - * **OAuth scope requirements** - * - * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: - * - * * `public_repo` scope or `repo` scope to create a public repository - * * `repo` scope to create a private repository - */ - "repos/create-for-authenticated-user": { - parameters: {}; - requestBody: { - "application/json": { - /** - * The name of the repository. - */ - name: string; - /** - * A short description of the repository. - */ - description?: string; - /** - * A URL with more information about the repository. - */ - homepage?: string; - /** - * Whether the repository is private or public. - */ - private?: boolean; - /** - * Whether issues are enabled. - */ - has_issues?: boolean; - /** - * Whether projects are enabled. - */ - has_projects?: boolean; - /** - * Whether the wiki is enabled. - */ - has_wiki?: boolean; - /** - * The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization. - */ - team_id?: number; - /** - * Whether the repository is initialized with a minimal README. - */ - auto_init?: boolean; - /** - * The desired language or platform to apply to the .gitignore. - */ - gitignore_template?: string; - /** - * The license keyword of the open source license for this repository. - */ - license_template?: string; - /** - * Whether to allow squash merges for pull requests. - */ - allow_squash_merge?: boolean; - /** - * Whether to allow merge commits for pull requests. - */ - allow_merge_commit?: boolean; - /** - * Whether to allow rebase merges for pull requests. - */ - allow_rebase_merge?: boolean; - /** - * Whether to delete head branches when pull requests are merged - */ - delete_branch_on_merge?: boolean; - /** - * Whether downloads are enabled. - */ - has_downloads?: boolean; - /** - * Whether this repository acts as a template that can be used to generate new repositories. - */ - is_template?: boolean; - }; - }; - responses: { - /** - * response - */ - "201": { - "application/json": components["schemas"]["repository"]; - }; - "304": never; - "400": unknown; - "401": unknown; - "403": unknown; - "404": unknown; - "422": unknown; - }; - }; - /** - * When authenticating as a user, this endpoint will list all currently open repository invitations for that user. - */ - "repos/list-invitations-for-authenticated-user": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["repository-invitation"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - "repos/accept-invitation": { - parameters: { - path: { - invitation_id: components["parameters"]["invitation_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "403": unknown; - "404": unknown; - "409": unknown; - }; - }; - "repos/decline-invitation": { - parameters: { - path: { - invitation_id: components["parameters"]["invitation_id"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "403": unknown; - "404": unknown; - "409": unknown; - }; - }; - /** - * Lists repositories the authenticated user has starred. - * - * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: - */ - "activity/list-repos-starred-by-authenticated-user": { - parameters: { - query: { - sort?: components["parameters"]["sort"]; - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["repository"][]; - "application/vnd.github.v3.star+json": components["schemas"]["starred-repository"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - "activity/check-repo-is-starred-by-authenticated-user": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Response if this repository is starred by you - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - /** - * Response if this repository is not starred by you - */ - "404": { - "application/json": components["schemas"]["basic-error"]; - }; - }; - }; - /** - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - "activity/star-repo-for-authenticated-user": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - "activity/unstar-repo-for-authenticated-user": { - parameters: { - path: { - owner: components["parameters"]["owner"]; - repo: components["parameters"]["repo"]; - }; - }; - responses: { - /** - * Empty response - */ - "204": never; - "304": never; - "401": unknown; - "403": unknown; - "404": unknown; - }; - }; - /** - * Lists repositories the authenticated user is watching. - */ - "activity/list-watched-repos-for-authenticated-user": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - "304": never; - "401": unknown; - "403": unknown; - }; - }; - /** - * List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://docs.github.com/apps/building-oauth-apps/). - */ - "teams/list-for-authenticated-user": { - parameters: { - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["team-full"][]; - }; - "304": never; - "403": unknown; - "404": unknown; - }; - }; - /** - * Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts. - * - * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of users. - */ - "users/list": { - parameters: { - query: { - since?: components["parameters"]["since-user"]; - per_page?: components["parameters"]["per_page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - "304": never; - }; - }; - /** - * Provides publicly available information about someone with a GitHub account. - * - * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see 'Response with GitHub plan information' below" - * - * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/overview/resources-in-the-rest-api#authentication). - * - * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://docs.github.com/rest/reference/users#emails)". - */ - "users/get-by-username": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": - | components["schemas"]["private-user"] - | components["schemas"]["public-user"]; - }; - "404": unknown; - }; - }; - /** - * If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. - */ - "activity/list-events-for-authenticated-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - /** - * This is the user's organization dashboard. You must be authenticated as the user to view this. - */ - "activity/list-org-events-for-authenticated-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - org: components["parameters"]["org"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - "activity/list-public-events-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - /** - * Lists the people following the specified user. - */ - "users/list-followers-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - /** - * Lists the people who the specified user follows. - */ - "users/list-following-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["simple-user"][]; - }; - }; - }; - "users/check-following-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - target_user: string; - }; - }; - responses: { - /** - * Response if the user follows the target user - */ - "204": never; - /** - * Response if the user does not follow the target user - */ - "404": unknown; - }; - }; - /** - * Lists public gists for the specified user: - */ - "gists/list-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - since?: components["parameters"]["since"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["base-gist"][]; - }; - "422": unknown; - }; - }; - /** - * Lists the GPG keys for a user. This information is accessible by anyone. - */ - "users/list-gpg-keys-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["gpg-key"][]; - }; - }; - }; - /** - * Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations. - * - * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this: - * - * ```shell - * curl -u username:token - * https://api.github.com/users/octocat/hovercard?subject_type=repository&subject_id=1300192 - * ``` - */ - "users/get-context-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - /** - * Identifies which additional information you'd like to receive about the person's hovercard. Can be `organization`, `repository`, `issue`, `pull_request`. **Required** when using `subject_id`. - */ - subject_type?: "organization" | "repository" | "issue" | "pull_request"; - /** - * Uses the ID for the `subject_type` you specified. **Required** when using `subject_type`. - */ - subject_id?: string; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["hovercard"]; - }; - "404": unknown; - "422": unknown; - }; - }; - /** - * Enables an authenticated GitHub App to find the user’s installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - "apps/get-user-installation": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["installation"]; - }; - }; - }; - /** - * Lists the _verified_ public SSH keys for a user. This is accessible by anyone. - */ - "users/list-public-keys-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["key-simple"][]; - }; - }; - }; - /** - * List [public organization memberships](https://help.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user. - * - * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/reference/orgs#list-organizations-for-the-authenticated-user) API instead. - */ - "orgs/list-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["organization-simple"][]; - }; - }; - }; - "projects/list-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - /** - * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`. - */ - state?: "open" | "closed" | "all"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["project"][]; - }; - "415": unknown; - "422": unknown; - }; - }; - /** - * These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events. - */ - "activity/list-received-events-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - "activity/list-received-public-events-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["event"][]; - }; - }; - }; - /** - * Lists public repositories for the specified user. - */ - "repos/list-for-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - /** - * Can be one of `all`, `owner`, `member`. - */ - type?: "all" | "owner" | "member"; - /** - * Can be one of `created`, `updated`, `pushed`, `full_name`. - */ - sort?: "created" | "updated" | "pushed" | "full_name"; - /** - * Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc` - */ - direction?: "asc" | "desc"; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - }; - /** - * Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * Access tokens must have the `user` scope. - */ - "billing/get-github-actions-billing-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["actions-billing-usage"]; - }; - }; - }; - /** - * Gets the free and paid storage used for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * Access tokens must have the `user` scope. - */ - "billing/get-github-packages-billing-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["packages-billing-usage"]; - }; - }; - }; - /** - * Gets the estimated paid and estimated total storage used for GitHub Actions and Github Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * Access tokens must have the `user` scope. - */ - "billing/get-shared-storage-billing-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["combined-billing-usage"]; - }; - }; - }; - /** - * Lists repositories a user has starred. - * - * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: - */ - "activity/list-repos-starred-by-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - sort?: components["parameters"]["sort"]; - direction?: components["parameters"]["direction"]; - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["repository"][]; - "application/vnd.github.v3.star+json": components["schemas"]["starred-repository"][]; - }; - }; - }; - /** - * Lists repositories a user is watching. - */ - "activity/list-repos-watched-by-user": { - parameters: { - path: { - username: components["parameters"]["username"]; - }; - query: { - per_page?: components["parameters"]["per_page"]; - page?: components["parameters"]["page"]; - }; - }; - responses: { - /** - * response - */ - "200": { - "application/json": components["schemas"]["minimal-repository"][]; - }; - }; - }; - /** - * Get a random sentence from the Zen of GitHub - */ - "meta/get-zen": { - responses: { - /** - * response - */ - "200": { - "text/plain": string; - }; - }; - }; -} - -export interface components { - parameters: { - /** - * Results per page (max 100) - */ - per_page: number; - /** - * Page number of the results to fetch. - */ - page: number; - /** - * Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - since: string; - /** - * installation_id parameter - */ - installation_id: number; - /** - * grant_id parameter - */ - grant_id: number; - "client-id": string; - "access-token": string; - app_slug: string; - /** - * authorization_id parameter - */ - authorization_id: number; - /** - * The slug version of the enterprise name. You can also substitute this value with the enterprise id. - */ - enterprise: string; - /** - * Unique identifier of an organization. - */ - org_id: number; - /** - * Unique identifier of the self-hosted runner group. - */ - runner_group_id: number; - /** - * Unique identifier of the self-hosted runner. - */ - runner_id: number; - /** - * gist_id parameter - */ - gist_id: string; - /** - * comment_id parameter - */ - comment_id: number; - /** - * A list of comma separated label names. Example: `bug,ui,@high` - */ - labels: string; - /** - * One of `asc` (ascending) or `desc` (descending). - */ - direction: "asc" | "desc"; - /** - * account_id parameter - */ - account_id: number; - /** - * plan_id parameter - */ - plan_id: number; - /** - * One of `created` (when the repository was starred) or `updated` (when it was last pushed to). - */ - sort: "created" | "updated"; - owner: string; - repo: string; - /** - * If `true`, show notifications marked as read. - */ - all: boolean; - /** - * If `true`, only shows notifications in which the user is directly participating or mentioned. - */ - participating: boolean; - /** - * Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - before: string; - /** - * thread_id parameter - */ - thread_id: number; - /** - * An organization ID. Only return organizations with an ID greater than this ID. - */ - "since-org": number; - org: string; - repository_id: number; - /** - * secret_name parameter - */ - secret_name: string; - username: string; - "hook-id": number; - /** - * invitation_id parameter - */ - invitation_id: number; - /** - * migration_id parameter - */ - migration_id: number; - /** - * repo_name parameter - */ - repo_name: string; - /** - * team_slug parameter - */ - team_slug: string; - "discussion-number": number; - "comment-number": number; - "reaction-id": number; - "project-id": number; - /** - * card_id parameter - */ - card_id: number; - /** - * column_id parameter - */ - column_id: number; - /** - * artifact_id parameter - */ - artifact_id: number; - /** - * job_id parameter - */ - job_id: number; - /** - * Returns someone's workflow runs. Use the login for the user who created the `push` associated with the check suite or workflow run. - */ - actor: string; - /** - * Returns workflow runs associated with a branch. Use the name of the branch of the `push`. - */ - "workflow-run-branch": string; - /** - * Returns workflow run triggered by the event you specify. For example, `push`, `pull_request` or `issue`. For more information, see "[Events that trigger workflows](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows)." - */ - event: string; - /** - * Returns workflow runs associated with the check run `status` or `conclusion` you specify. For example, a conclusion can be `success` or a status can be `completed`. For more information, see the `status` and `conclusion` options available in "[Create a check run](https://docs.github.com/rest/reference/checks#create-a-check-run)." - */ - "workflow-run-status": "completed" | "status" | "conclusion"; - "run-id": number; - /** - * The ID of the workflow. You can also pass the workflow file name as a string. - */ - "workflow-id": number | string; - /** - * branch+ parameter - */ - branch: string; - /** - * check_run_id parameter - */ - check_run_id: number; - /** - * check_suite_id parameter - */ - check_suite_id: number; - /** - * Returns check runs with the specified `name`. - */ - check_name: string; - /** - * Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`. - */ - status: "queued" | "in_progress" | "completed"; - /** - * The security alert number, found at the end of the security alert's URL. - */ - alert_number: components["schemas"]["alert-number"]; - /** - * commit_sha+ parameter - */ - commit_sha: string; - /** - * deployment_id parameter - */ - deployment_id: number; - /** - * A user ID. Only return users with an ID greater than this ID. - */ - "since-user": number; - /** - * issue_number parameter - */ - issue_number: number; - /** - * key_id parameter - */ - key_id: number; - /** - * milestone_number parameter - */ - milestone_number: number; - "pull-number": number; - /** - * review_id parameter - */ - review_id: number; - /** - * asset_id parameter - */ - asset_id: number; - /** - * release_id parameter - */ - release_id: number; - /** - * Must be one of: `day`, `week`. - */ - per: "day" | "week"; - /** - * A repository ID. Only return repositories with an ID greater than this ID. - */ - "since-repo": number; - /** - * Used for pagination: the index of the first result to return. - */ - start_index: number; - /** - * Used for pagination: the number of results to return. - */ - count: number; - /** - * Identifier generated by the GitHub SCIM endpoint. - */ - scim_group_id: string; - /** - * scim_user_id parameter - */ - scim_user_id: string; - /** - * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. - */ - order: "desc" | "asc"; - "team-id": number; - /** - * gpg_key_id parameter - */ - gpg_key_id: number; - }; - schemas: { - /** - * Simple User - */ - "simple-user": { - login: string; - id: number; - node_id: string; - avatar_url: string; - gravatar_id: string | null; - url: string; - html_url: string; - followers_url: string; - following_url: string; - gists_url: string; - starred_url: string; - subscriptions_url: string; - organizations_url: string; - repos_url: string; - events_url: string; - received_events_url: string; - type: string; - site_admin: boolean; - starred_at?: string; - } | null; - /** - * GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. - */ - integration: { - /** - * Unique identifier of the GitHub app - */ - id: number; - /** - * The slug name of the GitHub app - */ - slug?: string; - node_id: string; - owner: components["schemas"]["simple-user"] | null; - /** - * The name of the GitHub app - */ - name: string; - description: string | null; - external_url: string; - html_url: string; - created_at: string; - updated_at: string; - /** - * The set of permissions for the GitHub app - */ - permissions: { - issues?: string; - checks?: string; - metadata?: string; - contents?: string; - deployments?: string; - } & { [key: string]: string }; - /** - * The list of events for the GitHub app - */ - events: string[]; - /** - * The number of installations associated with the GitHub app - */ - installations_count?: number; - client_id?: string; - client_secret?: string; - webhook_secret?: string; - pem?: string; - } & { [key: string]: any }; - /** - * Basic Error - */ - "basic-error": { message?: string; documentation_url?: string }; - /** - * Validation Error Simple - */ - "validation-error-simple": { - message: string; - documentation_url: string; - errors?: string[]; - }; - /** - * The URL to which the payloads will be delivered. - */ - "webhook-config-url": string; - /** - * The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`. - */ - "webhook-config-content-type": string; - /** - * If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value for [delivery signature headers](https://docs.github.com/webhooks/event-payloads/#delivery-headers). - */ - "webhook-config-secret": string; - /** - * Determines whether the SSL certificate of the host for `url` will be verified when delivering payloads. Supported values include `0` (verification is performed) and `1` (verification is not performed). The default is `0`. **We strongly recommend not setting this to `1` as you are subject to man-in-the-middle and other attacks.** - */ - "webhook-config-insecure-ssl": string; - /** - * Configuration object of the webhook - */ - "webhook-config": { - url?: components["schemas"]["webhook-config-url"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - secret?: components["schemas"]["webhook-config-secret"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - }; - /** - * An enterprise account - */ - enterprise: { - /** - * A short description of the enterprise. - */ - description?: string | null; - html_url: string; - /** - * The enterprise's website URL. - */ - website_url?: string | null; - /** - * Unique identifier of the enterprise - */ - id: number; - node_id: string; - /** - * The name of the enterprise. - */ - name: string; - /** - * The slug url identifier for the enterprise. - */ - slug: string; - created_at: string | null; - updated_at: string | null; - avatar_url: string; - }; - /** - * Installation - */ - installation: { - /** - * The ID of the installation. - */ - id: number; - account: - | (Partial & - Partial) - | null; - /** - * Describe whether all repositories have been selected or there's a selection involved - */ - repository_selection: "all" | "selected"; - access_tokens_url: string; - repositories_url: string; - html_url: string; - app_id: number; - /** - * The ID of the user or organization this token is being scoped to. - */ - target_id: number; - target_type: string; - permissions: { - deployments?: string; - checks?: string; - metadata?: string; - contents?: string; - pull_requests?: string; - statuses?: string; - issues?: string; - organization_administration?: string; - }; - events: string[]; - created_at: string; - updated_at: string; - single_file_name: string | null; - has_multiple_single_files?: boolean; - single_file_paths?: string[]; - app_slug: string; - suspended_by?: components["schemas"]["simple-user"] | null; - suspended_at?: string | null; - contact_email?: string | null; - }; - /** - * License Simple - */ - "license-simple": { - key: string; - name: string; - url: string | null; - spdx_id: string | null; - node_id: string; - html_url?: string; - }; - /** - * A git repository - */ - repository: { - /** - * Unique identifier of the repository - */ - id: number; - node_id: string; - /** - * The name of the repository. - */ - name: string; - full_name: string; - license: components["schemas"]["license-simple"] | null; - forks: number; - permissions?: { - admin: boolean; - pull: boolean; - triage?: boolean; - push: boolean; - maintain?: boolean; - }; - owner: components["schemas"]["simple-user"] | null; - /** - * Whether the repository is private or public. - */ - private: boolean; - html_url: string; - description: string | null; - fork: boolean; - url: string; - archive_url: string; - assignees_url: string; - blobs_url: string; - branches_url: string; - collaborators_url: string; - comments_url: string; - commits_url: string; - compare_url: string; - contents_url: string; - contributors_url: string; - deployments_url: string; - downloads_url: string; - events_url: string; - forks_url: string; - git_commits_url: string; - git_refs_url: string; - git_tags_url: string; - git_url: string; - issue_comment_url: string; - issue_events_url: string; - issues_url: string; - keys_url: string; - labels_url: string; - languages_url: string; - merges_url: string; - milestones_url: string; - notifications_url: string; - pulls_url: string; - releases_url: string; - ssh_url: string; - stargazers_url: string; - statuses_url: string; - subscribers_url: string; - subscription_url: string; - tags_url: string; - teams_url: string; - trees_url: string; - clone_url: string; - mirror_url: string | null; - hooks_url: string; - svn_url: string; - homepage: string | null; - language: string | null; - forks_count: number; - stargazers_count: number; - watchers_count: number; - size: number; - /** - * The default branch of the repository. - */ - default_branch: string; - open_issues_count: number; - /** - * Whether this repository acts as a template that can be used to generate new repositories. - */ - is_template?: boolean; - topics?: string[]; - /** - * Whether issues are enabled. - */ - has_issues: boolean; - /** - * Whether projects are enabled. - */ - has_projects: boolean; - /** - * Whether the wiki is enabled. - */ - has_wiki: boolean; - has_pages: boolean; - /** - * Whether downloads are enabled. - */ - has_downloads: boolean; - /** - * Whether the repository is archived. - */ - archived: boolean; - /** - * Returns whether or not this repository disabled. - */ - disabled: boolean; - /** - * The repository visibility: public, private, or internal. - */ - visibility?: string; - pushed_at: string | null; - created_at: string | null; - updated_at: string | null; - /** - * Whether to allow rebase merges for pull requests. - */ - allow_rebase_merge?: boolean; - template_repository?: { - id?: number; - node_id?: string; - name?: string; - full_name?: string; - owner?: { - login?: string; - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type?: string; - site_admin?: boolean; - }; - private?: boolean; - html_url?: string; - description?: string; - fork?: boolean; - url?: string; - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - downloads_url?: string; - events_url?: string; - forks_url?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - git_url?: string; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - notifications_url?: string; - pulls_url?: string; - releases_url?: string; - ssh_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - clone_url?: string; - mirror_url?: string; - hooks_url?: string; - svn_url?: string; - homepage?: string; - language?: string; - forks_count?: number; - stargazers_count?: number; - watchers_count?: number; - size?: number; - default_branch?: string; - open_issues_count?: number; - is_template?: boolean; - topics?: string[]; - has_issues?: boolean; - has_projects?: boolean; - has_wiki?: boolean; - has_pages?: boolean; - has_downloads?: boolean; - archived?: boolean; - disabled?: boolean; - visibility?: string; - pushed_at?: string; - created_at?: string; - updated_at?: string; - permissions?: { admin?: boolean; push?: boolean; pull?: boolean }; - allow_rebase_merge?: boolean; - template_repository?: string; - temp_clone_token?: string; - allow_squash_merge?: boolean; - delete_branch_on_merge?: boolean; - allow_merge_commit?: boolean; - subscribers_count?: number; - network_count?: number; - } | null; - temp_clone_token?: string; - /** - * Whether to allow squash merges for pull requests. - */ - allow_squash_merge?: boolean; - /** - * Whether to delete head branches when pull requests are merged - */ - delete_branch_on_merge?: boolean; - /** - * Whether to allow merge commits for pull requests. - */ - allow_merge_commit?: boolean; - subscribers_count?: number; - network_count?: number; - open_issues: number; - watchers: number; - master_branch?: string; - starred_at?: string; - }; - /** - * Authentication token for a GitHub App installed on a user or org. - */ - "installation-token": { - token?: string; - expires_at?: string; - permissions?: { - issues?: string; - contents?: string; - metadata?: string; - single_file?: string; - }; - repository_selection?: "all" | "selected"; - repositories?: components["schemas"]["repository"][]; - single_file?: string; - has_multiple_single_files?: boolean; - single_file_paths?: string[]; - }; - /** - * Validation Error - */ - "validation-error": { - message: string; - documentation_url: string; - errors?: { - resource?: string; - field?: string; - message?: string; - code: string; - index?: number; - value?: string | number | string[]; - }[]; - }; - /** - * The authorization associated with an OAuth Access. - */ - "application-grant": { - id: number; - url: string; - app: { client_id: string; name: string; url: string }; - created_at: string; - updated_at: string; - scopes: string[]; - user?: components["schemas"]["simple-user"] | null; - }; - "scoped-installation": { - permissions: { [key: string]: any }; - /** - * Describe whether all repositories have been selected or there's a selection involved - */ - repository_selection: "all" | "selected"; - single_file_name: string | null; - has_multiple_single_files?: boolean; - single_file_paths?: string[]; - repositories_url: string; - account: components["schemas"]["simple-user"]; - }; - /** - * The authorization for an OAuth app, GitHub App, or a Personal Access Token. - */ - authorization: { - id: number; - url: string; - /** - * A list of scopes that this authorization is in. - */ - scopes: string[] | null; - token: string; - token_last_eight: string | null; - hashed_token: string | null; - app: { client_id: string; name: string; url: string }; - note: string | null; - note_url: string | null; - updated_at: string; - created_at: string; - fingerprint: string | null; - user?: components["schemas"]["simple-user"] | null; - installation?: components["schemas"]["scoped-installation"] | null; - }; - /** - * Code Of Conduct - */ - "code-of-conduct": { - key: string; - name: string; - url: string; - body?: string; - html_url: string | null; - }; - /** - * Content Reference attachments allow you to provide context around URLs posted in comments - */ - "content-reference-attachment": { - /** - * The ID of the attachment - */ - id: number; - /** - * The title of the attachment - */ - title: string; - /** - * The body of the attachment - */ - body: string; - /** - * The node_id of the content attachment - */ - node_id?: string; - }; - /** - * The policy that controls the organizations in the enterprise that are allowed to run GitHub Actions. Can be one of: `all`, `none`, or `selected`. - */ - "enabled-organizations": "all" | "none" | "selected"; - /** - * The permissions policy that controls the actions that are allowed to run. Can be one of: `all`, `local_only`, or `selected`. - */ - "allowed-actions": "all" | "local_only" | "selected"; - /** - * The API URL to use to get or set the actions that are allowed to run, when `allowed_actions` is set to `selected`. - */ - "selected-actions-url": string; - "actions-enterprise-permissions": { - enabled_organizations?: components["schemas"]["enabled-organizations"]; - /** - * The API URL to use to get or set the selected organizations that are allowed to run GitHub Actions, when `enabled_organizations` is set to `selected`. - */ - selected_organizations_url?: string; - allowed_actions?: components["schemas"]["allowed-actions"]; - selected_actions_url?: components["schemas"]["selected-actions-url"]; - }; - /** - * Organization Simple - */ - "organization-simple": { - login: string; - id: number; - node_id: string; - url: string; - repos_url: string; - events_url: string; - hooks_url: string; - issues_url: string; - members_url: string; - public_members_url: string; - avatar_url: string; - description: string | null; - }; - "selected-actions": { - /** - * Whether GitHub-owned actions are allowed. For example, this includes the actions in the `actions` organization. - */ - github_owned_allowed?: boolean; - /** - * Whether actions in GitHub Marketplace from verified creators are allowed. Set to `true` to allow all GitHub Marketplace actions by verified creators. - */ - verified_allowed?: boolean; - /** - * Specifies a list of string-matching patterns to allow specific action(s). Wildcards, tags, and SHAs are allowed. For example, `monalisa/octocat@*`, `monalisa/octocat@v2`, `monalisa/*`." - */ - patterns_allowed?: string[]; - }; - "runner-groups-enterprise": { - id?: number; - name?: string; - visibility?: string; - default?: boolean; - selected_organizations_url?: string; - runners_url?: string; - }; - /** - * A self hosted runner - */ - runner: { - /** - * The id of the runner. - */ - id: number; - /** - * The name of the runner. - */ - name: string; - /** - * The Operating System of the runner. - */ - os: string; - /** - * The status of the runner. - */ - status: string; - busy: boolean; - labels: { - /** - * Unique identifier of the label. - */ - id?: number; - /** - * Name of the label. - */ - name?: string; - /** - * The type of label. Read-only labels are applied automatically when the runner is configured. - */ - type?: "read-only" | "custom"; - }[]; - }; - /** - * Runner Application - */ - "runner-application": { - os?: string; - architecture?: string; - download_url?: string; - filename?: string; - }; - /** - * Authentication Token - */ - "authentication-token": { - /** - * The token used for authentication - */ - token: string; - /** - * The time this token expires - */ - expires_at: string; - permissions?: { [key: string]: any }; - /** - * The repositories this token has access to - */ - repositories?: components["schemas"]["repository"][]; - single_file?: string | null; - /** - * Describe whether all repositories have been selected or there's a selection involved - */ - repository_selection?: "all" | "selected"; - }; - "actions-billing-usage": { - /** - * The sum of the free and paid GitHub Actions minutes used. - */ - total_minutes_used?: number; - /** - * The total paid GitHub Actions minutes used. - */ - total_paid_minutes_used?: number; - /** - * The amount of free GitHub Actions minutes available. - */ - included_minutes?: number; - minutes_used_breakdown?: { - /** - * Total minutes used on Ubuntu runner machines. - */ - UBUNTU?: number; - /** - * Total minutes used on macOS runner machines. - */ - MACOS?: number; - /** - * Total minutes used on Windows runner machines. - */ - WINDOWS?: number; - }; - }; - "packages-billing-usage": { - /** - * Sum of the free and paid storage space (GB) for GitHuub Packages. - */ - total_gigabytes_bandwidth_used?: number; - /** - * Total paid storage space (GB) for GitHuub Packages. - */ - total_paid_gigabytes_bandwidth_used?: number; - /** - * Free storage space (GB) for GitHub Packages. - */ - included_gigabytes_bandwidth?: number; - }; - "combined-billing-usage": { - /** - * Numbers of days left in billing cycle. - */ - days_left_in_billing_cycle?: number; - /** - * Estimated storage space (GB) used in billing cycle. - */ - estimated_paid_storage_for_month?: number; - /** - * Estimated sum of free and paid storage space (GB) used in billing cycle. - */ - estimated_storage_for_month?: number; - }; - /** - * Actor - */ - actor: { - id: number; - login: string; - display_login?: string; - gravatar_id: string | null; - url: string; - avatar_url: string; - }; - /** - * A collection of related issues and pull requests. - */ - milestone: { - url: string; - html_url: string; - labels_url: string; - id: number; - node_id: string; - /** - * The number of the milestone. - */ - number: number; - /** - * The state of the milestone. - */ - state: "open" | "closed"; - /** - * The title of the milestone. - */ - title: string; - description: string | null; - creator: components["schemas"]["simple-user"] | null; - open_issues: number; - closed_issues: number; - created_at: string; - updated_at: string; - closed_at: string | null; - due_on: string | null; - }; - /** - * Issue Simple - */ - "issue-simple": { - id: number; - node_id: string; - url: string; - repository_url: string; - labels_url: string; - comments_url: string; - events_url: string; - html_url: string; - number: number; - state: string; - title: string; - body?: string; - user: components["schemas"]["simple-user"] | null; - labels: { - id?: number; - node_id?: string; - url?: string; - name?: string; - description?: string | null; - color?: string; - default?: boolean; - }[]; - assignee: components["schemas"]["simple-user"] | null; - assignees?: components["schemas"]["simple-user"][] | null; - milestone: components["schemas"]["milestone"] | null; - locked: boolean; - active_lock_reason?: string | null; - comments: number; - pull_request?: { - merged_at?: string | null; - diff_url: string | null; - html_url: string | null; - patch_url: string | null; - url: string | null; - }; - closed_at: string | null; - created_at: string; - updated_at: string; - author_association: string; - body_html?: string; - body_text?: string; - timeline_url?: string; - repository?: components["schemas"]["repository"]; - performed_via_github_app?: components["schemas"]["integration"] | null; - }; - "reaction-rollup": { - url: string; - total_count: number; - "+1": number; - "-1": number; - laugh: number; - confused: number; - heart: number; - hooray: number; - eyes: number; - rocket: number; - }; - /** - * Comments provide a way for people to collaborate on an issue. - */ - "issue-comment": { - /** - * Unique identifier of the issue comment - */ - id: number; - node_id: string; - /** - * URL for the issue comment - */ - url: string; - /** - * Contents of the issue comment - */ - body?: string; - body_text?: string; - body_html?: string; - html_url: string; - user: components["schemas"]["simple-user"] | null; - created_at: string; - updated_at: string; - issue_url: string; - author_association: - | "collaborator" - | "contributor" - | "first_timer" - | "first_time_contributor" - | "mannequin" - | "member" - | "none" - | "owner"; - performed_via_github_app?: components["schemas"]["integration"] | null; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Event - */ - event: { - id: string; - type: string | null; - actor: components["schemas"]["actor"]; - repo: { id: number; name: string; url: string }; - org?: components["schemas"]["actor"]; - payload: { - action: string; - issue?: components["schemas"]["issue-simple"]; - comment?: components["schemas"]["issue-comment"]; - pages?: { - page_name?: string; - title?: string; - summary?: string | null; - action?: string; - sha?: string; - html_url?: string; - }[]; - }; - public: boolean; - created_at: string | null; - }; - /** - * Hypermedia Link with Type - */ - "link-with-type": { href: string; type: string }; - /** - * Feed - */ - feed: { - timeline_url: string; - user_url: string; - current_user_public_url?: string; - current_user_url?: string; - current_user_actor_url?: string; - current_user_organization_url?: string; - current_user_organization_urls?: string[]; - security_advisories_url?: string; - _links: { - timeline: components["schemas"]["link-with-type"]; - user: components["schemas"]["link-with-type"]; - security_advisories?: components["schemas"]["link-with-type"]; - current_user?: components["schemas"]["link-with-type"]; - current_user_public?: components["schemas"]["link-with-type"]; - current_user_actor?: components["schemas"]["link-with-type"]; - current_user_organization?: components["schemas"]["link-with-type"]; - current_user_organizations?: components["schemas"]["link-with-type"][]; - }; - }; - /** - * Base Gist - */ - "base-gist": { - url: string; - forks_url: string; - commits_url: string; - id: string; - node_id: string; - git_pull_url: string; - git_push_url: string; - html_url: string; - files: { - [key: string]: { - filename?: string; - type?: string; - language?: string; - raw_url?: string; - size?: number; - }; - }; - public: boolean; - created_at: string; - updated_at: string; - description: string | null; - comments: number; - user: components["schemas"]["simple-user"] | null; - comments_url: string; - owner?: components["schemas"]["simple-user"] | null; - truncated?: boolean; - forks?: { [key: string]: any }[]; - history?: { [key: string]: any }[]; - }; - /** - * Gist Simple - */ - "gist-simple": { - url?: string; - forks_url?: string; - commits_url?: string; - id?: string; - node_id?: string; - git_pull_url?: string; - git_push_url?: string; - html_url?: string; - files?: { - [key: string]: { - filename?: string; - type?: string; - language?: string; - raw_url?: string; - size?: number; - truncated?: boolean; - content?: string; - }; - }; - public?: boolean; - created_at?: string; - updated_at?: string; - description?: string | null; - comments?: number; - user?: string | null; - comments_url?: string; - owner?: components["schemas"]["simple-user"]; - truncated?: boolean; - }; - /** - * Gist Full - */ - "gist-full": components["schemas"]["gist-simple"] & { - forks?: { - user?: { - login?: string; - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type?: string; - site_admin?: boolean; - }; - url?: string; - id?: string; - created_at?: string; - updated_at?: string; - }[]; - history?: { - url?: string; - version?: string; - user?: { - login?: string; - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type?: string; - site_admin?: boolean; - } | null; - change_status?: { - deletions?: number; - additions?: number; - total?: number; - }; - committed_at?: string; - }[]; - fork_of?: components["schemas"]["gist-simple"] | null; - url?: string; - forks_url?: string; - commits_url?: string; - id?: string; - node_id?: string; - git_pull_url?: string; - git_push_url?: string; - html_url?: string; - created_at?: string; - updated_at?: string; - description?: string | null; - comments?: number; - comments_url?: string; - }; - /** - * A comment made to a gist. - */ - "gist-comment": { - id: number; - node_id: string; - url: string; - /** - * The comment text. - */ - body: string; - user: components["schemas"]["simple-user"] | null; - created_at: string; - updated_at: string; - author_association: string; - }; - /** - * Gist Commit - */ - "gist-commit": { - url: string; - version: string; - user: components["schemas"]["simple-user"] | null; - change_status: { total?: number; additions?: number; deletions?: number }; - committed_at: string; - }; - /** - * Gitignore Template - */ - "gitignore-template": { name: string; source: string }; - /** - * Issues are a great way to keep track of tasks, enhancements, and bugs for your projects. - */ - issue: { - id: number; - node_id: string; - /** - * URL for the issue - */ - url: string; - repository_url: string; - labels_url: string; - comments_url: string; - events_url: string; - html_url: string; - /** - * Number uniquely identifying the issue within its repository - */ - number: number; - /** - * State of the issue; either 'open' or 'closed' - */ - state: string; - /** - * Title of the issue - */ - title: string; - /** - * Contents of the issue - */ - body?: string; - user: components["schemas"]["simple-user"] | null; - /** - * Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository - */ - labels: ( - | string - | { - id?: number; - node_id?: string; - url?: string; - name?: string; - description?: string | null; - color?: string | null; - default?: boolean; - } - )[]; - assignee: components["schemas"]["simple-user"] | null; - assignees?: components["schemas"]["simple-user"][] | null; - milestone: components["schemas"]["milestone"] | null; - locked: boolean; - active_lock_reason?: string | null; - comments: number; - pull_request?: { - merged_at?: string | null; - diff_url: string | null; - html_url: string | null; - patch_url: string | null; - url: string | null; - }; - closed_at: string | null; - created_at: string; - updated_at: string; - closed_by?: components["schemas"]["simple-user"] | null; - body_html?: string; - body_text?: string; - timeline_url?: string; - repository?: components["schemas"]["repository"]; - performed_via_github_app?: components["schemas"]["integration"] | null; - author_association: string; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * License - */ - license: { - key: string; - name: string; - spdx_id: string | null; - url: string | null; - node_id: string; - html_url: string; - description: string; - implementation: string; - permissions: string[]; - conditions: string[]; - limitations: string[]; - body: string; - featured: boolean; - }; - /** - * Marketplace Listing Plan - */ - "marketplace-listing-plan": { - url: string; - accounts_url: string; - id: number; - number: number; - name: string; - description: string; - monthly_price_in_cents: number; - yearly_price_in_cents: number; - price_model: string; - has_free_trial: boolean; - unit_name: string | null; - state: string; - bullets: string[]; - }; - /** - * Marketplace Purchase - */ - "marketplace-purchase": { - url: string; - type: string; - id: number; - login: string; - organization_billing_email?: string; - marketplace_pending_change?: { - is_installed?: boolean; - effective_date?: string; - unit_count?: number | null; - id?: number; - plan?: components["schemas"]["marketplace-listing-plan"]; - } | null; - marketplace_purchase: { - billing_cycle?: string; - next_billing_date?: string | null; - is_installed?: boolean; - unit_count?: number | null; - on_free_trial?: boolean; - free_trial_ends_on?: string | null; - updated_at?: string; - plan?: components["schemas"]["marketplace-listing-plan"]; - }; - }; - /** - * Api Overview - */ - "api-overview": { - verifiable_password_authentication: boolean; - ssh_key_fingerprints?: { SHA256_RSA?: string; SHA256_DSA?: string }; - hooks?: string[]; - web?: string[]; - api?: string[]; - git?: string[]; - pages?: string[]; - importer?: string[]; - github_services_sha?: string; - installed_version?: string; - }; - /** - * Minimal Repository - */ - "minimal-repository": { - id: number; - node_id: string; - name: string; - full_name: string; - owner: components["schemas"]["simple-user"] | null; - private: boolean; - html_url: string; - description: string | null; - fork: boolean; - url: string; - archive_url: string; - assignees_url: string; - blobs_url: string; - branches_url: string; - collaborators_url: string; - comments_url: string; - commits_url: string; - compare_url: string; - contents_url: string; - contributors_url: string; - deployments_url: string; - downloads_url: string; - events_url: string; - forks_url: string; - git_commits_url: string; - git_refs_url: string; - git_tags_url: string; - git_url?: string; - issue_comment_url: string; - issue_events_url: string; - issues_url: string; - keys_url: string; - labels_url: string; - languages_url: string; - merges_url: string; - milestones_url: string; - notifications_url: string; - pulls_url: string; - releases_url: string; - ssh_url?: string; - stargazers_url: string; - statuses_url: string; - subscribers_url: string; - subscription_url: string; - tags_url: string; - teams_url: string; - trees_url: string; - clone_url?: string; - mirror_url?: string | null; - hooks_url: string; - svn_url?: string; - homepage?: string | null; - language?: string | null; - forks_count?: number; - stargazers_count?: number; - watchers_count?: number; - size?: number; - default_branch?: string; - open_issues_count?: number; - is_template?: boolean; - topics?: string[]; - has_issues?: boolean; - has_projects?: boolean; - has_wiki?: boolean; - has_pages?: boolean; - has_downloads?: boolean; - archived?: boolean; - disabled?: boolean; - visibility?: string; - pushed_at?: string | null; - created_at?: string | null; - updated_at?: string | null; - permissions?: { admin?: boolean; push?: boolean; pull?: boolean }; - template_repository?: string; - temp_clone_token?: string; - delete_branch_on_merge?: boolean; - subscribers_count?: number; - network_count?: number; - license?: { - key?: string; - name?: string; - spdx_id?: string; - url?: string; - node_id?: string; - } | null; - forks?: number; - open_issues?: number; - watchers?: number; - }; - /** - * Thread - */ - thread: { - id?: string; - repository?: components["schemas"]["minimal-repository"]; - subject?: { - title?: string; - url?: string; - latest_comment_url?: string; - type?: string; - }; - reason?: string; - unread?: boolean; - updated_at?: string; - last_read_at?: string | null; - url?: string; - subscription_url?: string; - }; - /** - * Thread Subscription - */ - "thread-subscription": { - subscribed: boolean; - ignored: boolean; - reason: string | null; - created_at: string | null; - url: string; - thread_url?: string; - repository_url?: string; - }; - /** - * Organization Full - */ - "organization-full": { - login: string; - id: number; - node_id: string; - url: string; - repos_url: string; - events_url: string; - hooks_url: string; - issues_url: string; - members_url: string; - public_members_url: string; - avatar_url: string; - description: string | null; - name?: string; - company?: string; - blog?: string; - location?: string; - email?: string; - twitter_username?: string | null; - is_verified?: boolean; - has_organization_projects: boolean; - has_repository_projects: boolean; - public_repos: number; - public_gists: number; - followers: number; - following: number; - html_url: string; - created_at: string; - type: string; - total_private_repos?: number; - owned_private_repos?: number; - private_gists?: number | null; - disk_usage?: number | null; - collaborators?: number | null; - billing_email?: string | null; - plan?: { - name: string; - space: number; - private_repos: number; - filled_seats?: number; - seats?: number; - }; - default_repository_permission?: string | null; - members_can_create_repositories?: boolean | null; - two_factor_requirement_enabled?: boolean | null; - members_allowed_repository_creation_type?: string; - members_can_create_public_repositories?: boolean; - members_can_create_private_repositories?: boolean; - members_can_create_internal_repositories?: boolean; - members_can_create_pages?: boolean; - updated_at: string; - }; - /** - * The policy that controls the repositories in the organization that are allowed to run GitHub Actions. Can be one of: `all`, `none`, or `selected`. - */ - "enabled-repositories": "all" | "none" | "selected"; - "actions-organization-permissions": { - enabled_repositories?: components["schemas"]["enabled-repositories"]; - /** - * The API URL to use to get or set the selected repositories that are allowed to run GitHub Actions, when `enabled_repositories` is set to `selected`. - */ - selected_repositories_url?: string; - allowed_actions?: components["schemas"]["allowed-actions"]; - selected_actions_url?: components["schemas"]["selected-actions-url"]; - }; - "runner-groups-org": { - id?: number; - name?: string; - visibility?: string; - default?: boolean; - selected_repositories_url?: string; - runners_url?: string; - inherited?: boolean; - }; - /** - * Secrets for GitHub Actions for an organization. - */ - "organization-actions-secret": { - /** - * The name of the secret. - */ - name: string; - created_at: string; - updated_at: string; - /** - * Visibility of a secret - */ - visibility: "all" | "private" | "selected"; - selected_repositories_url?: string; - }; - /** - * The public key used for setting Actions Secrets. - */ - "actions-public-key": { - /** - * The identifier for the key. - */ - key_id: string; - /** - * The Base64 encoded public key. - */ - key: string; - id?: number; - url?: string; - title?: string; - created_at?: string; - }; - /** - * Credential Authorization - */ - "credential-authorization": { - /** - * User login that owns the underlying credential. - */ - login: string; - /** - * Unique identifier for the credential. - */ - credential_id: number; - /** - * Human-readable description of the credential type. - */ - credential_type: string; - /** - * Last eight characters of the credential. Only included in responses with credential_type of personal access token. - */ - token_last_eight?: string; - /** - * Date when the credential was authorized for use. - */ - credential_authorized_at: string; - /** - * List of oauth scopes the token has been granted. - */ - scopes?: string[]; - /** - * Unique string to distinguish the credential. Only included in responses with credential_type of SSH Key. - */ - fingerprint?: string; - /** - * Date when the credential was last accessed. May be null if it was never accessed - */ - credential_accessed_at?: string | null; - }; - /** - * Org Hook - */ - "org-hook": { - id: number; - url: string; - ping_url: string; - name: string; - events: string[]; - active: boolean; - config: { - url?: string; - insecure_ssl?: string; - content_type?: string; - secret?: string; - }; - updated_at: string; - created_at: string; - type: string; - }; - /** - * The type of GitHub user that can comment, open issues, or create pull requests while the interaction limit is in effect. Can be one of: `existing_users`, `contributors_only`, `collaborators_only`. - */ - "interaction-group": - | "existing_users" - | "contributors_only" - | "collaborators_only"; - /** - * Interaction limit settings. - */ - "interaction-limit-response": { - limit: components["schemas"]["interaction-group"]; - origin: string; - expires_at: string; - }; - /** - * The duration of the interaction restriction. Can be one of: `one_day`, `three_days`, `one_week`, `one_month`, `six_months`. Default: `one_day`. - */ - "interaction-expiry": - | "one_day" - | "three_days" - | "one_week" - | "one_month" - | "six_months"; - /** - * Limit interactions to a specific type of user for a specified duration - */ - "interaction-limit": { - limit: components["schemas"]["interaction-group"]; - expiry?: components["schemas"]["interaction-expiry"]; - }; - /** - * Organization Invitation - */ - "organization-invitation": { - id?: number; - login?: string | null; - email?: string | null; - role?: string; - created_at?: string; - inviter?: components["schemas"]["simple-user"]; - team_count?: number; - invitation_team_url?: string; - node_id?: string; - invitation_teams_url?: string; - }; - /** - * Groups of organization members that gives permissions on specified repositories. - */ - "team-simple": { - /** - * Unique identifier of the team - */ - id: number; - node_id: string; - /** - * URL for the team - */ - url: string; - members_url: string; - /** - * Name of the team - */ - name: string; - /** - * Description of the team - */ - description: string | null; - /** - * Permission that the team will have for its repositories - */ - permission: string; - /** - * The level of privacy this team should have - */ - privacy?: string; - html_url: string; - repositories_url: string; - slug: string; - /** - * Distinguished Name (DN) that team maps to within LDAP environment - */ - ldap_dn?: string; - } | null; - /** - * Groups of organization members that gives permissions on specified repositories. - */ - team: { - id: number; - node_id: string; - name: string; - slug: string; - description: string | null; - privacy?: string; - permission: string; - url: string; - html_url: string; - members_url: string; - repositories_url: string; - parent?: components["schemas"]["team-simple"] | null; - }; - /** - * Org Membership - */ - "org-membership": { - url: string; - state: string; - role: string; - organization_url: string; - organization: components["schemas"]["organization-simple"]; - user: components["schemas"]["simple-user"] | null; - permissions?: { can_create_repository: boolean }; - }; - /** - * A migration. - */ - migration: { - id: number; - owner: components["schemas"]["simple-user"] | null; - guid: string; - state: string; - lock_repositories: boolean; - exclude_attachments: boolean; - repositories: components["schemas"]["repository"][]; - url: string; - created_at: string; - updated_at: string; - node_id: string; - archive_url?: string; - exclude?: { [key: string]: any }[]; - }; - /** - * Projects are a way to organize columns and cards of work. - */ - project: { - owner_url: string; - url: string; - html_url: string; - columns_url: string; - id: number; - node_id: string; - /** - * Name of the project - */ - name: string; - /** - * Body of the project - */ - body: string | null; - number: number; - /** - * State of the project; either 'open' or 'closed' - */ - state: string; - creator: components["schemas"]["simple-user"] | null; - created_at: string; - updated_at: string; - /** - * The baseline permission that all organization members have on this project - */ - organization_permission?: "read" | "write" | "admin" | "none"; - /** - * Whether or not this project can be seen by everyone. - */ - private?: boolean; - cards_url?: string; - permissions?: { read: boolean; write: boolean; admin: boolean }; - }; - /** - * External Groups to be mapped to a team for membership - */ - "group-mapping": { - /** - * Array of groups to be mapped to this team - */ - groups?: { - /** - * The ID of the group - */ - group_id: string; - /** - * The name of the group - */ - group_name: string; - /** - * a description of the group - */ - group_description: string; - }[]; - /** - * The ID of the group - */ - group_id?: string; - /** - * The name of the group - */ - group_name?: string; - /** - * a description of the group - */ - group_description?: string; - /** - * synchronization status for this group mapping - */ - status?: string; - /** - * the time of the last sync for this group-mapping - */ - synced_at?: string; - }; - /** - * Groups of organization members that gives permissions on specified repositories. - */ - "team-full": { - /** - * Unique identifier of the team - */ - id: number; - node_id: string; - /** - * URL for the team - */ - url: string; - html_url: string; - /** - * Name of the team - */ - name: string; - slug: string; - description: string | null; - /** - * The level of privacy this team should have - */ - privacy?: "closed" | "secret"; - /** - * Permission that the team will have for its repositories - */ - permission: string; - members_url: string; - repositories_url: string; - parent?: components["schemas"]["team-simple"] | null; - members_count: number; - repos_count: number; - created_at: string; - updated_at: string; - organization: components["schemas"]["organization-full"]; - /** - * Distinguished Name (DN) that team maps to within LDAP environment - */ - ldap_dn?: string; - }; - /** - * A team discussion is a persistent record of a free-form conversation within a team. - */ - "team-discussion": { - author: components["schemas"]["simple-user"] | null; - /** - * The main text of the discussion. - */ - body: string; - body_html: string; - /** - * The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server. - */ - body_version: string; - comments_count: number; - comments_url: string; - created_at: string; - last_edited_at: string | null; - html_url: string; - node_id: string; - /** - * The unique sequence number of a team discussion. - */ - number: number; - /** - * Whether or not this discussion should be pinned for easy retrieval. - */ - pinned: boolean; - /** - * Whether or not this discussion should be restricted to team members and organization administrators. - */ - private: boolean; - team_url: string; - /** - * The title of the discussion. - */ - title: string; - updated_at: string; - url: string; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * A reply to a discussion within a team. - */ - "team-discussion-comment": { - author: components["schemas"]["simple-user"] | null; - /** - * The main text of the comment. - */ - body: string; - body_html: string; - /** - * The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server. - */ - body_version: string; - created_at: string; - last_edited_at: string | null; - discussion_url: string; - html_url: string; - node_id: string; - /** - * The unique sequence number of a team discussion comment. - */ - number: number; - updated_at: string; - url: string; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Reactions to conversations provide a way to help people express their feelings more simply and effectively. - */ - reaction: { - id: number; - node_id: string; - user: components["schemas"]["simple-user"] | null; - /** - * The reaction to use - */ - content: - | "+1" - | "-1" - | "laugh" - | "confused" - | "heart" - | "hooray" - | "rocket" - | "eyes"; - created_at: string; - }; - /** - * Team Membership - */ - "team-membership": { - url: string; - /** - * The role of the user in the team. - */ - role: "member" | "maintainer"; - state: string; - }; - /** - * A team's access to a project. - */ - "team-project": { - owner_url?: string; - url?: string; - html_url?: string; - columns_url?: string; - id?: number; - node_id?: string; - name?: string; - body?: string | null; - number?: number; - state?: string; - creator?: components["schemas"]["simple-user"]; - created_at?: string; - updated_at?: string; - organization_permission?: string; - private?: boolean; - permissions?: { read?: boolean; write?: boolean; admin?: boolean }; - }; - /** - * A team's access to a repository. - */ - "team-repository": { - /** - * Unique identifier of the repository - */ - id: number; - node_id: string; - /** - * The name of the repository. - */ - name: string; - full_name: string; - license: components["schemas"]["license-simple"] | null; - forks: number; - permissions?: { - admin: boolean; - pull: boolean; - triage?: boolean; - push: boolean; - maintain?: boolean; - }; - owner: components["schemas"]["simple-user"] | null; - /** - * Whether the repository is private or public. - */ - private: boolean; - html_url: string; - description: string | null; - fork: boolean; - url: string; - archive_url: string; - assignees_url: string; - blobs_url: string; - branches_url: string; - collaborators_url: string; - comments_url: string; - commits_url: string; - compare_url: string; - contents_url: string; - contributors_url: string; - deployments_url: string; - downloads_url: string; - events_url: string; - forks_url: string; - git_commits_url: string; - git_refs_url: string; - git_tags_url: string; - git_url: string; - issue_comment_url: string; - issue_events_url: string; - issues_url: string; - keys_url: string; - labels_url: string; - languages_url: string; - merges_url: string; - milestones_url: string; - notifications_url: string; - pulls_url: string; - releases_url: string; - ssh_url: string; - stargazers_url: string; - statuses_url: string; - subscribers_url: string; - subscription_url: string; - tags_url: string; - teams_url: string; - trees_url: string; - clone_url: string; - mirror_url: string | null; - hooks_url: string; - svn_url: string; - homepage: string | null; - language: string | null; - forks_count: number; - stargazers_count: number; - watchers_count: number; - size: number; - /** - * The default branch of the repository. - */ - default_branch: string; - open_issues_count: number; - /** - * Whether this repository acts as a template that can be used to generate new repositories. - */ - is_template?: boolean; - topics?: string[]; - /** - * Whether issues are enabled. - */ - has_issues: boolean; - /** - * Whether projects are enabled. - */ - has_projects: boolean; - /** - * Whether the wiki is enabled. - */ - has_wiki: boolean; - has_pages: boolean; - /** - * Whether downloads are enabled. - */ - has_downloads: boolean; - /** - * Whether the repository is archived. - */ - archived: boolean; - /** - * Returns whether or not this repository disabled. - */ - disabled: boolean; - /** - * The repository visibility: public, private, or internal. - */ - visibility?: string; - pushed_at: string | null; - created_at: string | null; - updated_at: string | null; - /** - * Whether to allow rebase merges for pull requests. - */ - allow_rebase_merge?: boolean; - template_repository?: { - id?: number; - node_id?: string; - name?: string; - full_name?: string; - owner?: { - login?: string; - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type?: string; - site_admin?: boolean; - }; - private?: boolean; - html_url?: string; - description?: string; - fork?: boolean; - url?: string; - archive_url?: string; - assignees_url?: string; - blobs_url?: string; - branches_url?: string; - collaborators_url?: string; - comments_url?: string; - commits_url?: string; - compare_url?: string; - contents_url?: string; - contributors_url?: string; - deployments_url?: string; - downloads_url?: string; - events_url?: string; - forks_url?: string; - git_commits_url?: string; - git_refs_url?: string; - git_tags_url?: string; - git_url?: string; - issue_comment_url?: string; - issue_events_url?: string; - issues_url?: string; - keys_url?: string; - labels_url?: string; - languages_url?: string; - merges_url?: string; - milestones_url?: string; - notifications_url?: string; - pulls_url?: string; - releases_url?: string; - ssh_url?: string; - stargazers_url?: string; - statuses_url?: string; - subscribers_url?: string; - subscription_url?: string; - tags_url?: string; - teams_url?: string; - trees_url?: string; - clone_url?: string; - mirror_url?: string; - hooks_url?: string; - svn_url?: string; - homepage?: string; - language?: string; - forks_count?: number; - stargazers_count?: number; - watchers_count?: number; - size?: number; - default_branch?: string; - open_issues_count?: number; - is_template?: boolean; - topics?: string[]; - has_issues?: boolean; - has_projects?: boolean; - has_wiki?: boolean; - has_pages?: boolean; - has_downloads?: boolean; - archived?: boolean; - disabled?: boolean; - visibility?: string; - pushed_at?: string; - created_at?: string; - updated_at?: string; - permissions?: { admin?: boolean; push?: boolean; pull?: boolean }; - allow_rebase_merge?: boolean; - template_repository?: string; - temp_clone_token?: string; - allow_squash_merge?: boolean; - delete_branch_on_merge?: boolean; - allow_merge_commit?: boolean; - subscribers_count?: number; - network_count?: number; - } | null; - temp_clone_token?: string; - /** - * Whether to allow squash merges for pull requests. - */ - allow_squash_merge?: boolean; - /** - * Whether to delete head branches when pull requests are merged - */ - delete_branch_on_merge?: boolean; - /** - * Whether to allow merge commits for pull requests. - */ - allow_merge_commit?: boolean; - subscribers_count?: number; - network_count?: number; - open_issues: number; - watchers: number; - master_branch?: string; - }; - /** - * Project cards represent a scope of work. - */ - "project-card": { - url: string; - /** - * The project card's ID - */ - id: number; - node_id: string; - note: string | null; - creator: components["schemas"]["simple-user"] | null; - created_at: string; - updated_at: string; - /** - * Whether or not the card is archived - */ - archived?: boolean; - column_url: string; - content_url?: string; - project_url: string; - }; - /** - * Project columns contain cards of work. - */ - "project-column": { - url: string; - project_url: string; - cards_url: string; - /** - * The unique identifier of the project column - */ - id: number; - node_id: string; - /** - * Name of the project column - */ - name: string; - created_at: string; - updated_at: string; - }; - /** - * Repository Collaborator Permission - */ - "repository-collaborator-permission": { - permission: string; - user: components["schemas"]["simple-user"] | null; - }; - "rate-limit": { limit: number; remaining: number; reset: number }; - /** - * Rate Limit Overview - */ - "rate-limit-overview": { - resources: { - core: components["schemas"]["rate-limit"]; - graphql?: components["schemas"]["rate-limit"]; - search: components["schemas"]["rate-limit"]; - source_import?: components["schemas"]["rate-limit"]; - integration_manifest?: components["schemas"]["rate-limit"]; - code_scanning_upload?: components["schemas"]["rate-limit"]; - }; - rate: components["schemas"]["rate-limit"]; - }; - /** - * Full Repository - */ - "full-repository": { - id: number; - node_id: string; - name: string; - full_name: string; - owner: components["schemas"]["simple-user"] | null; - private: boolean; - html_url: string; - description: string | null; - fork: boolean; - url: string; - archive_url: string; - assignees_url: string; - blobs_url: string; - branches_url: string; - collaborators_url: string; - comments_url: string; - commits_url: string; - compare_url: string; - contents_url: string; - contributors_url: string; - deployments_url: string; - downloads_url: string; - events_url: string; - forks_url: string; - git_commits_url: string; - git_refs_url: string; - git_tags_url: string; - git_url: string; - issue_comment_url: string; - issue_events_url: string; - issues_url: string; - keys_url: string; - labels_url: string; - languages_url: string; - merges_url: string; - milestones_url: string; - notifications_url: string; - pulls_url: string; - releases_url: string; - ssh_url: string; - stargazers_url: string; - statuses_url: string; - subscribers_url: string; - subscription_url: string; - tags_url: string; - teams_url: string; - trees_url: string; - clone_url: string; - mirror_url: string | null; - hooks_url: string; - svn_url: string; - homepage: string | null; - language: string | null; - forks_count: number; - stargazers_count: number; - watchers_count: number; - size: number; - default_branch: string; - open_issues_count: number; - is_template?: boolean; - topics?: string[]; - has_issues: boolean; - has_projects: boolean; - has_wiki: boolean; - has_pages: boolean; - has_downloads: boolean; - archived: boolean; - /** - * Returns whether or not this repository disabled. - */ - disabled: boolean; - /** - * The repository visibility: public, private, or internal. - */ - visibility?: string; - pushed_at: string; - created_at: string; - updated_at: string; - permissions?: { admin: boolean; pull: boolean; push: boolean }; - allow_rebase_merge?: boolean; - template_repository?: components["schemas"]["repository"] | null; - temp_clone_token?: string | null; - allow_squash_merge?: boolean; - delete_branch_on_merge?: boolean; - allow_merge_commit?: boolean; - subscribers_count: number; - network_count: number; - license: components["schemas"]["license-simple"] | null; - organization?: components["schemas"]["simple-user"] | null; - parent?: components["schemas"]["repository"]; - source?: components["schemas"]["repository"]; - forks: number; - master_branch?: string; - open_issues: number; - watchers: number; - /** - * Whether anonymous git access is allowed. - */ - anonymous_access_enabled?: boolean; - }; - /** - * An artifact - */ - artifact: { - id: number; - node_id: string; - /** - * The name of the artifact. - */ - name: string; - /** - * The size in bytes of the artifact. - */ - size_in_bytes: number; - url: string; - archive_download_url: string; - /** - * Whether or not the artifact has expired. - */ - expired: boolean; - created_at: string | null; - expires_at: string; - updated_at: string | null; - }; - /** - * Information of a job execution in a workflow run - */ - job: { - /** - * The id of the job. - */ - id: number; - /** - * The id of the associated workflow run. - */ - run_id: number; - run_url: string; - node_id: string; - /** - * The SHA of the commit that is being run. - */ - head_sha: string; - url: string; - html_url: string | null; - /** - * The phase of the lifecycle that the job is currently in. - */ - status: "queued" | "in_progress" | "completed"; - /** - * The outcome of the job. - */ - conclusion: string | null; - /** - * The time that the job started, in ISO 8601 format. - */ - started_at: string; - /** - * The time that the job finished, in ISO 8601 format. - */ - completed_at: string | null; - /** - * The name of the job. - */ - name: string; - /** - * Steps in this job. - */ - steps?: { - /** - * The phase of the lifecycle that the job is currently in. - */ - status: "queued" | "in_progress" | "completed"; - /** - * The outcome of the job. - */ - conclusion: string | null; - /** - * The name of the job. - */ - name: string; - number: number; - /** - * The time that the step started, in ISO 8601 format. - */ - started_at?: string | null; - /** - * The time that the job finished, in ISO 8601 format. - */ - completed_at?: string | null; - }[]; - check_run_url: string; - }; - /** - * Whether GitHub Actions is enabled on the repository. - */ - "actions-enabled": boolean; - "actions-repository-permissions": { - enabled?: components["schemas"]["actions-enabled"]; - allowed_actions?: components["schemas"]["allowed-actions"]; - selected_actions_url?: components["schemas"]["selected-actions-url"]; - }; - "pull-request-minimal": { - id: number; - number: number; - url: string; - head: { - ref: string; - sha: string; - repo: { id: number; url: string; name: string }; - }; - base: { - ref: string; - sha: string; - repo: { id: number; url: string; name: string }; - }; - }; - /** - * Simple Commit - */ - "simple-commit": { - id: string; - tree_id: string; - message: string; - timestamp: string; - author: { name: string; email: string } | null; - committer: { name: string; email: string } | null; - }; - /** - * An invocation of a workflow - */ - "workflow-run": { - /** - * The ID of the workflow run. - */ - id: number; - /** - * The name of the workflow run. - */ - name?: string; - node_id: string; - head_branch: string | null; - /** - * The SHA of the head commit that points to the version of the worflow being run. - */ - head_sha: string; - /** - * The auto incrementing run number for the workflow run. - */ - run_number: number; - event: string; - status: string | null; - conclusion: string | null; - /** - * The ID of the parent workflow. - */ - workflow_id: number; - /** - * The URL to the workflow run. - */ - url: string; - html_url: string; - pull_requests: components["schemas"]["pull-request-minimal"][] | null; - created_at: string | null; - updated_at: string | null; - /** - * The URL to the jobs for the workflow run. - */ - jobs_url: string; - /** - * The URL to download the logs for the workflow run. - */ - logs_url: string; - /** - * The URL to the associated check suite. - */ - check_suite_url: string; - /** - * The URL to the artifacts for the workflow run. - */ - artifacts_url: string; - /** - * The URL to cancel the workflow run. - */ - cancel_url: string; - /** - * The URL to rerun the workflow run. - */ - rerun_url: string; - /** - * The URL to the workflow. - */ - workflow_url: string; - head_commit: components["schemas"]["simple-commit"]; - repository: components["schemas"]["minimal-repository"]; - head_repository: components["schemas"]["minimal-repository"]; - head_repository_id?: number; - }; - /** - * Workflow Run Usage - */ - "workflow-run-usage": { - billable?: { - UBUNTU?: { total_ms?: number; jobs?: number }; - MACOS?: { total_ms?: number; jobs?: number }; - WINDOWS?: { total_ms?: number; jobs?: number }; - }; - run_duration_ms?: number; - }; - /** - * Set secrets for GitHub Actions. - */ - "actions-secret": { - /** - * The name of the secret. - */ - name: string; - created_at: string; - updated_at: string; - }; - /** - * A GitHub Actions workflow - */ - workflow: { - id: number; - node_id: string; - name: string; - path: string; - state: "active" | "deleted"; - created_at: string; - updated_at: string; - url: string; - html_url: string; - badge_url: string; - deleted_at?: string; - }; - /** - * Workflow Usage - */ - "workflow-usage": { - billable?: { - UBUNTU?: { total_ms?: number }; - MACOS?: { total_ms?: number }; - WINDOWS?: { total_ms?: number }; - }; - }; - /** - * Protected Branch Admin Enforced - */ - "protected-branch-admin-enforced": { url: string; enabled: boolean }; - /** - * Protected Branch Pull Request Review - */ - "protected-branch-pull-request-review": { - url?: string; - dismissal_restrictions?: { - /** - * The list of users with review dismissal access. - */ - users?: components["schemas"]["simple-user"][]; - /** - * The list of teams with review dismissal access. - */ - teams?: components["schemas"]["team"][]; - url?: string; - users_url?: string; - teams_url?: string; - }; - dismiss_stale_reviews: boolean; - require_code_owner_reviews: boolean; - required_approving_review_count?: number; - }; - /** - * Branch Restriction Policy - */ - "branch-restriction-policy": { - url: string; - users_url: string; - teams_url: string; - apps_url: string; - users: { - login?: string; - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type?: string; - site_admin?: boolean; - }[]; - teams: { - id?: number; - node_id?: string; - url?: string; - html_url?: string; - name?: string; - slug?: string; - description?: string | null; - privacy?: string; - permission?: string; - members_url?: string; - repositories_url?: string; - parent?: string | null; - }[]; - apps: { - id?: number; - slug?: string; - node_id?: string; - owner?: { - login?: string; - id?: number; - node_id?: string; - url?: string; - repos_url?: string; - events_url?: string; - hooks_url?: string; - issues_url?: string; - members_url?: string; - public_members_url?: string; - avatar_url?: string; - description?: string; - gravatar_id?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - received_events_url?: string; - type?: string; - }; - name?: string; - description?: string; - external_url?: string; - html_url?: string; - created_at?: string; - updated_at?: string; - permissions?: { - metadata?: string; - contents?: string; - issues?: string; - single_file?: string; - }; - events?: string[]; - }[]; - }; - /** - * Branch Protection - */ - "branch-protection": { - url?: string; - required_status_checks: { - url?: string; - enforcement_level: string; - contexts: string[]; - contexts_url?: string; - }; - enforce_admins?: components["schemas"]["protected-branch-admin-enforced"]; - required_pull_request_reviews?: components["schemas"]["protected-branch-pull-request-review"]; - restrictions?: components["schemas"]["branch-restriction-policy"]; - required_linear_history?: { enabled?: boolean }; - allow_force_pushes?: { enabled?: boolean }; - allow_deletions?: { enabled?: boolean }; - enabled: boolean; - name?: string; - protection_url?: string; - }; - /** - * Short Branch - */ - "short-branch": { - name: string; - commit: { sha: string; url: string }; - protected: boolean; - protection?: components["schemas"]["branch-protection"]; - protection_url?: string; - }; - /** - * Metaproperties for Git author/committer information. - */ - "git-user": { name?: string; email?: string; date?: string }; - verification: { - verified: boolean; - reason: string; - payload: string | null; - signature: string | null; - }; - /** - * Commit - */ - commit: { - url: string | null; - sha: string | null; - node_id: string; - html_url: string; - comments_url: string; - commit: { - url: string; - author: components["schemas"]["git-user"] | null; - committer: components["schemas"]["git-user"] | null; - message: string; - comment_count: number; - tree: { sha: string; url: string }; - verification?: components["schemas"]["verification"]; - }; - author: components["schemas"]["simple-user"] | null; - committer: components["schemas"]["simple-user"] | null; - parents: { sha: string; url: string; html_url?: string }[]; - stats?: { additions?: number; deletions?: number; total?: number }; - files?: { - filename?: string; - additions?: number; - deletions?: number; - changes?: number; - status?: string; - raw_url?: string; - blob_url?: string; - patch?: string; - sha?: string; - contents_url?: string; - previous_filename?: string; - }[]; - }; - /** - * Branch With Protection - */ - "branch-with-protection": { - name: string; - commit: components["schemas"]["commit"]; - _links: { html: string; self: string }; - protected: boolean; - protection: components["schemas"]["branch-protection"]; - protection_url: string; - pattern?: string; - required_approving_review_count?: number; - }; - /** - * Status Check Policy - */ - "status-check-policy": { - url: string; - strict: boolean; - contexts: string[]; - contexts_url: string; - }; - /** - * Branch protections protect branches - */ - "protected-branch": { - url: string; - required_status_checks?: components["schemas"]["status-check-policy"]; - required_pull_request_reviews?: { - url: string; - dismiss_stale_reviews?: boolean; - require_code_owner_reviews?: boolean; - required_approving_review_count?: number; - dismissal_restrictions?: { - url: string; - users_url: string; - teams_url: string; - users: components["schemas"]["simple-user"][]; - teams: components["schemas"]["team"][]; - }; - }; - required_signatures?: { url: string; enabled: boolean }; - enforce_admins?: { url: string; enabled: boolean }; - required_linear_history?: { enabled: boolean }; - allow_force_pushes?: { enabled: boolean }; - allow_deletions?: { enabled: boolean }; - restrictions?: components["schemas"]["branch-restriction-policy"]; - }; - /** - * A check performed on the code of a given code change - */ - "check-run": { - /** - * The id of the check. - */ - id: number; - /** - * The SHA of the commit that is being checked. - */ - head_sha: string; - node_id: string; - external_id: string | null; - url: string; - html_url: string | null; - details_url: string | null; - /** - * The phase of the lifecycle that the check is currently in. - */ - status: "queued" | "in_progress" | "completed"; - conclusion: string | null; - started_at: string | null; - completed_at: string | null; - output: { - title: string | null; - summary: string | null; - text: string | null; - annotations_count: number; - annotations_url: string; - }; - /** - * The name of the check. - */ - name: string; - check_suite: { id: number } | null; - app: components["schemas"]["integration"] | null; - pull_requests: components["schemas"]["pull-request-minimal"][]; - }; - /** - * Check Annotation - */ - "check-annotation": { - path: string; - start_line: number; - end_line: number; - start_column: number | null; - end_column: number | null; - annotation_level: string | null; - title: string | null; - message: string | null; - raw_details: string | null; - blob_href: string; - }; - /** - * A suite of checks performed on the code of a given code change - */ - "check-suite": { - id: number; - node_id: string; - head_branch: string | null; - /** - * The SHA of the head commit that is being checked. - */ - head_sha: string; - status: string | null; - conclusion: string | null; - url: string | null; - before: string | null; - after: string | null; - pull_requests: components["schemas"]["pull-request-minimal"][] | null; - app: components["schemas"]["integration"] | null; - repository: components["schemas"]["minimal-repository"]; - created_at: string | null; - updated_at: string | null; - head_commit: components["schemas"]["simple-commit"]; - latest_check_runs_count: number; - check_runs_url: string; - }; - /** - * Check suite configuration preferences for a repository. - */ - "check-suite-preference": { - preferences?: { - auto_trigger_checks?: { app_id: number; setting: boolean }[]; - }; - repository?: components["schemas"]["repository"]; - }; - /** - * State of a code scanning alert. - */ - "code-scanning-alert-state": "open" | "dismissed" | "fixed"; - /** - * The full Git reference, formatted as `refs/heads/`. - */ - "code-scanning-alert-ref": string; - /** - * The security alert number. - */ - "alert-number": number; - /** - * The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - "alert-created-at": string; - /** - * The REST API URL of the alert resource. - */ - "alert-url": string; - /** - * The GitHub URL of the alert resource. - */ - "alert-html-url": string; - /** - * The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - "code-scanning-alert-dismissed-at": string | null; - /** - * **Required when the state is dismissed.** The reason for dismissing or closing the alert. Can be one of: `false positive`, `won't fix`, and `used in tests`. - */ - "code-scanning-alert-dismissed-reason": string | null; - "code-scanning-alert-rule": { - /** - * A unique identifier for the rule used to detect the alert. - */ - id?: string | null; - /** - * The severity of the alert. - */ - severity?: ("none" | "note" | "warning" | "error") | null; - /** - * A short description of the rule used to detect the alert. - */ - description?: string; - }; - /** - * The name of the tool used to generate the code scanning analysis alert. - */ - "code-scanning-analysis-tool-name": string; - "code-scanning-analysis-tool": { - name?: components["schemas"]["code-scanning-analysis-tool-name"]; - /** - * The version of the tool used to detect the alert. - */ - version?: string | null; - }; - "code-scanning-alert-code-scanning-alert-items": { - number?: components["schemas"]["alert-number"]; - created_at?: components["schemas"]["alert-created-at"]; - url?: components["schemas"]["alert-url"]; - html_url?: components["schemas"]["alert-html-url"]; - state?: components["schemas"]["code-scanning-alert-state"]; - dismissed_by?: components["schemas"]["simple-user"]; - dismissed_at?: components["schemas"]["code-scanning-alert-dismissed-at"]; - dismissed_reason?: components["schemas"]["code-scanning-alert-dismissed-reason"]; - rule?: components["schemas"]["code-scanning-alert-rule"]; - tool?: components["schemas"]["code-scanning-analysis-tool"]; - }; - /** - * Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. - */ - "code-scanning-analysis-analysis-key": string; - /** - * Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. - */ - "code-scanning-alert-environment": string; - "code-scanning-alert-instances": - | { - ref?: components["schemas"]["code-scanning-alert-ref"]; - analysis_key?: components["schemas"]["code-scanning-analysis-analysis-key"]; - environment?: components["schemas"]["code-scanning-alert-environment"]; - matrix_vars?: string | null; - state?: components["schemas"]["code-scanning-alert-state"]; - }[] - | null; - "code-scanning-alert-code-scanning-alert": { - number?: components["schemas"]["alert-number"]; - created_at?: components["schemas"]["alert-created-at"]; - url?: components["schemas"]["alert-url"]; - html_url?: components["schemas"]["alert-html-url"]; - instances?: components["schemas"]["code-scanning-alert-instances"]; - state?: components["schemas"]["code-scanning-alert-state"]; - dismissed_by?: components["schemas"]["simple-user"]; - dismissed_at?: components["schemas"]["code-scanning-alert-dismissed-at"]; - dismissed_reason?: components["schemas"]["code-scanning-alert-dismissed-reason"]; - rule?: components["schemas"]["code-scanning-alert-rule"]; - tool?: components["schemas"]["code-scanning-analysis-tool"]; - }; - /** - * Sets the state of the code scanning alert. Can be one of `open` or `dismissed`. You must provide `dismissed_reason` when you set the state to `dismissed`. - */ - "code-scanning-alert-set-state": "open" | "dismissed"; - /** - * The full Git reference of the code scanning analysis file, formatted as `refs/heads/`. - */ - "code-scanning-analysis-ref": string; - /** - * The commit SHA of the code scanning analysis file. - */ - "code-scanning-analysis-commit-sha": string; - /** - * The time that the analysis was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - "code-scanning-analysis-created-at": string; - /** - * Identifies the variable values associated with the environment in which this analysis was performed. - */ - "code-scanning-analysis-environment": string; - "code-scanning-analysis-code-scanning-analysis": { - commit_sha?: components["schemas"]["code-scanning-analysis-commit-sha"]; - ref?: components["schemas"]["code-scanning-analysis-ref"]; - analysis_key?: components["schemas"]["code-scanning-analysis-analysis-key"]; - created_at?: components["schemas"]["code-scanning-analysis-created-at"]; - tool_name?: components["schemas"]["code-scanning-analysis-tool-name"]; - error?: string; - environment?: components["schemas"]["code-scanning-analysis-environment"]; - }; - /** - * A Base64 string representing the SARIF file to upload. You must first compress your SARIF file using [`gzip`](http://www.gnu.org/software/gzip/manual/gzip.html) and then translate the contents of the file into a Base64 encoding string. - */ - "code-scanning-analysis-sarif-file": string; - /** - * Collaborator - */ - collaborator: { - login: string; - id: number; - node_id: string; - avatar_url: string; - gravatar_id: string | null; - url: string; - html_url: string; - followers_url: string; - following_url: string; - gists_url: string; - starred_url: string; - subscriptions_url: string; - organizations_url: string; - repos_url: string; - events_url: string; - received_events_url: string; - type: string; - site_admin: boolean; - permissions?: { pull: boolean; push: boolean; admin: boolean }; - }; - /** - * Repository invitations let you manage who you collaborate with. - */ - "repository-invitation": { - /** - * Unique identifier of the repository invitation. - */ - id: number; - repository: components["schemas"]["minimal-repository"]; - invitee: components["schemas"]["simple-user"] | null; - inviter: components["schemas"]["simple-user"] | null; - /** - * The permission associated with the invitation. - */ - permissions: "read" | "write" | "admin"; - created_at: string; - /** - * URL for the repository invitation - */ - url: string; - html_url: string; - node_id: string; - }; - /** - * Commit Comment - */ - "commit-comment": { - html_url: string; - url: string; - id: number; - node_id: string; - body: string; - path: string | null; - position: number | null; - line: number | null; - commit_id: string; - user: components["schemas"]["simple-user"] | null; - created_at: string; - updated_at: string; - author_association: string; - reactions?: components["schemas"]["reaction-rollup"]; - }; - /** - * Scim Error - */ - "scim-error": { - message?: string | null; - documentation_url?: string | null; - detail?: string | null; - status?: number; - scimType?: string | null; - schemas?: string[]; - }; - /** - * Branch Short - */ - "branch-short": { - name?: string; - commit?: { sha?: string; url?: string }; - protected?: boolean; - }; - /** - * Hypermedia Link - */ - link: { href: string }; - /** - * Pull Request Simple - */ - "pull-request-simple": { - url: string; - id: number; - node_id: string; - html_url: string; - diff_url: string; - patch_url: string; - issue_url: string; - commits_url: string; - review_comments_url: string; - review_comment_url: string; - comments_url: string; - statuses_url: string; - number: number; - state: string; - locked: boolean; - title: string; - user: components["schemas"]["simple-user"] | null; - body: string | null; - labels: { - id?: number; - node_id?: string; - url?: string; - name?: string; - description?: string; - color?: string; - default?: boolean; - }[]; - milestone: components["schemas"]["milestone"] | null; - active_lock_reason?: string | null; - created_at: string; - updated_at: string; - closed_at: string | null; - merged_at: string | null; - merge_commit_sha: string | null; - assignee: components["schemas"]["simple-user"] | null; - assignees?: components["schemas"]["simple-user"][] | null; - requested_reviewers?: components["schemas"]["simple-user"][] | null; - requested_teams?: components["schemas"]["team-simple"][] | null; - head: { - label: string; - ref: string; - repo: components["schemas"]["repository"]; - sha: string; - user: components["schemas"]["simple-user"] | null; - }; - base: { - label: string; - ref: string; - repo: components["schemas"]["repository"]; - sha: string; - user: components["schemas"]["simple-user"] | null; - }; - _links: { - comments: components["schemas"]["link"]; - commits: components["schemas"]["link"]; - statuses: components["schemas"]["link"]; - html: components["schemas"]["link"]; - issue: components["schemas"]["link"]; - review_comments: components["schemas"]["link"]; - review_comment: components["schemas"]["link"]; - self: components["schemas"]["link"]; - }; - author_association: string; - /** - * Indicates whether or not the pull request is a draft. - */ - draft?: boolean; - }; - "simple-commit-status": { - description: string | null; - id: number; - node_id: string; - state: string; - context: string; - target_url: string; - required?: boolean | null; - avatar_url: string | null; - url: string; - created_at: string; - updated_at: string; - }; - /** - * Combined Commit Status - */ - "combined-commit-status": { - state: string; - statuses: components["schemas"]["simple-commit-status"][]; - sha: string; - total_count: number; - repository: components["schemas"]["minimal-repository"]; - commit_url: string; - url: string; - }; - /** - * The status of a commit. - */ - status: { - url?: string; - avatar_url?: string | null; - id?: number; - node_id?: string; - state?: string; - description?: string; - target_url?: string; - context?: string; - created_at?: string; - updated_at?: string; - creator?: components["schemas"]["simple-user"]; - }; - /** - * Code of Conduct Simple - */ - "code-of-conduct-simple": { - url: string; - key: string; - name: string; - html_url: string | null; - }; - "community-health-file": { url: string; html_url: string }; - /** - * Community Profile - */ - "community-profile": { - health_percentage: number; - description: string | null; - documentation: string | null; - files: { - code_of_conduct: components["schemas"]["code-of-conduct-simple"] | null; - license: components["schemas"]["license-simple"] | null; - contributing: components["schemas"]["community-health-file"] | null; - readme: components["schemas"]["community-health-file"] | null; - issue_template: components["schemas"]["community-health-file"] | null; - pull_request_template: - | components["schemas"]["community-health-file"] - | null; - }; - updated_at: string | null; - content_reports_enabled?: boolean; - }; - /** - * Diff Entry - */ - "diff-entry": { - sha: string; - filename: string; - status: string; - additions: number; - deletions: number; - changes: number; - blob_url: string; - raw_url: string; - contents_url: string; - patch?: string; - previous_filename?: string; - }; - /** - * Commit Comparison - */ - "commit-comparison": { - url: string; - html_url: string; - permalink_url: string; - diff_url: string; - patch_url: string; - base_commit: components["schemas"]["commit"]; - merge_base_commit: components["schemas"]["commit"]; - status: "diverged" | "ahead" | "behind" | "identical"; - ahead_by: number; - behind_by: number; - total_commits: number; - commits: components["schemas"]["commit"][]; - files: components["schemas"]["diff-entry"][]; - }; - /** - * Content Tree - */ - "content-tree": { - type: string; - size: number; - name: string; - path: string; - sha: string; - url: string; - git_url: string | null; - html_url: string | null; - download_url: string | null; - entries?: { - type: string; - size: number; - name: string; - path: string; - content?: string; - sha: string; - url: string; - git_url: string | null; - html_url: string | null; - download_url: string | null; - _links: { git: string | null; html: string | null; self: string }; - }[]; - _links: { git: string | null; html: string | null; self: string }; - }; - /** - * A list of directory items - */ - "content-directory": { - type: string; - size: number; - name: string; - path: string; - content?: string; - sha: string; - url: string; - git_url: string | null; - html_url: string | null; - download_url: string | null; - _links: { git: string | null; html: string | null; self: string }; - }[]; - /** - * Content File - */ - "content-file": { - type: string; - encoding: string; - size: number; - name: string; - path: string; - content: string; - sha: string; - url: string; - git_url: string | null; - html_url: string | null; - download_url: string | null; - _links: { git: string | null; html: string | null; self: string }; - target?: string; - submodule_git_url?: string; - }; - /** - * An object describing a symlink - */ - "content-symlink": { - type: string; - target: string; - size: number; - name: string; - path: string; - sha: string; - url: string; - git_url: string | null; - html_url: string | null; - download_url: string | null; - _links: { git: string | null; html: string | null; self: string }; - }; - /** - * An object describing a symlink - */ - "content-submodule": { - type: string; - submodule_git_url: string; - size: number; - name: string; - path: string; - sha: string; - url: string; - git_url: string | null; - html_url: string | null; - download_url: string | null; - _links: { git: string | null; html: string | null; self: string }; - }; - /** - * File Commit - */ - "file-commit": { - content?: { - name?: string; - path?: string; - sha?: string; - size?: number; - url?: string; - html_url?: string; - git_url?: string; - download_url?: string; - type?: string; - _links?: { self?: string; git?: string; html?: string }; - } | null; - commit?: { - sha?: string; - node_id?: string; - url?: string; - html_url?: string; - author?: { date?: string; name?: string; email?: string }; - committer?: { date?: string; name?: string; email?: string }; - message?: string; - tree?: { url?: string; sha?: string }; - parents?: { url?: string; html_url?: string; sha?: string }[]; - verification?: { - verified?: boolean; - reason?: string; - signature?: string | null; - payload?: string | null; - }; - }; - }; - /** - * Contributor - */ - contributor: { - login?: string; - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string | null; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type: string; - site_admin?: boolean; - contributions: number; - email?: string; - name?: string; - }; - /** - * A request for a specific ref(branch,sha,tag) to be deployed - */ - deployment: { - url: string; - /** - * Unique identifier of the deployment - */ - id: number; - node_id: string; - sha: string; - /** - * The ref to deploy. This can be a branch, tag, or sha. - */ - ref: string; - /** - * Parameter to specify a task to execute - */ - task: string; - payload: { [key: string]: any }; - original_environment?: string; - /** - * Name for the target deployment environment. - */ - environment: string; - description: string | null; - creator: components["schemas"]["simple-user"] | null; - created_at: string; - updated_at: string; - statuses_url: string; - repository_url: string; - /** - * Specifies if the given environment is will no longer exist at some point in the future. Default: false. - */ - transient_environment?: boolean; - /** - * Specifies if the given environment is one that end-users directly interact with. Default: false. - */ - production_environment?: boolean; - performed_via_github_app?: components["schemas"]["integration"] | null; - }; - /** - * The status of a deployment. - */ - "deployment-status": { - url: string; - id: number; - node_id: string; - /** - * The state of the status. - */ - state: - | "error" - | "failure" - | "inactive" - | "pending" - | "success" - | "queued" - | "in_progress"; - creator: components["schemas"]["simple-user"] | null; - /** - * A short description of the status. - */ - description: string; - /** - * The environment of the deployment that the status is for. - */ - environment?: string; - /** - * Deprecated: the URL to associate with this status. - */ - target_url: string; - created_at: string; - updated_at: string; - deployment_url: string; - repository_url: string; - /** - * The URL for accessing your environment. - */ - environment_url?: string; - /** - * The URL to associate with this status. - */ - log_url?: string; - performed_via_github_app?: components["schemas"]["integration"] | null; - }; - /** - * Short Blob - */ - "short-blob": { url?: string; sha?: string }; - /** - * Blob - */ - blob: { - content: string; - encoding: string; - url: string; - sha: string; - size: number | null; - node_id: string; - highlighted_content?: string; - }; - /** - * Low-level Git commit operations within a repository - */ - "git-commit": { - /** - * SHA for the commit - */ - sha?: string; - node_id?: string; - url?: string; - /** - * Identifying information for the git-user - */ - author?: { - /** - * Timestamp of the commit - */ - date?: string; - /** - * Git email address of the user - */ - email: string; - /** - * Name of the git user - */ - name: string; - }; - /** - * Identifying information for the git-user - */ - committer?: { - /** - * Timestamp of the commit - */ - date?: string; - /** - * Git email address of the user - */ - email: string; - /** - * Name of the git user - */ - name: string; - }; - /** - * Message describing the purpose of the commit - */ - message?: string; - tree?: { - /** - * SHA for the commit - */ - sha?: string; - url?: string; - }; - parents?: { - /** - * SHA for the commit - */ - sha?: string; - url?: string; - html_url?: string; - }[]; - verification?: { - verified?: boolean; - reason?: string; - signature?: string | null; - payload?: string | null; - }; - html_url?: string; - }; - /** - * Git references within a repository - */ - "git-ref": { - ref?: string; - node_id?: string; - url?: string; - object?: { - type?: string; - /** - * SHA for the reference - */ - sha?: string; - url?: string; - }; - }; - /** - * Metadata for a Git tag - */ - "git-tag": { - node_id: string; - /** - * Name of the tag - */ - tag: string; - sha: string; - /** - * URL for the tag - */ - url: string; - /** - * Message describing the purpose of the tag - */ - message: string; - tagger: { date: string; email: string; name: string }; - object: { sha: string; type: string; url: string }; - verification?: components["schemas"]["verification"]; - }; - /** - * The hierarchy between files in a Git repository. - */ - "git-tree": { - sha: string; - url: string; - truncated: boolean; - /** - * Objects specifying a tree structure - */ - tree: { - path?: string; - mode?: string; - type?: string; - sha?: string; - size?: number; - url?: string; - }[]; - }; - "hook-response": { - code: number | null; - status: string | null; - message: string | null; - }; - /** - * Webhooks for repositories. - */ - hook: { - type: string; - /** - * Unique identifier of the webhook. - */ - id: number; - /** - * The name of a valid service, use 'web' for a webhook. - */ - name: string; - /** - * Determines whether the hook is actually triggered on pushes. - */ - active: boolean; - /** - * Determines what events the hook is triggered for. Default: ['push']. - */ - events: string[]; - config: { - email?: string; - password?: string; - room?: string; - subdomain?: string; - url?: components["schemas"]["webhook-config-url"]; - insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; - content_type?: components["schemas"]["webhook-config-content-type"]; - digest?: string; - secret?: components["schemas"]["webhook-config-secret"]; - token?: string; - }; - updated_at: string; - created_at: string; - url: string; - test_url: string; - ping_url: string; - last_response: components["schemas"]["hook-response"]; - }; - /** - * A repository import from an external source. - */ - import: { - vcs: string | null; - use_lfs?: string; - /** - * The URL of the originating repository. - */ - vcs_url: string; - svc_root?: string; - tfvc_project?: string; - status: - | "auth" - | "error" - | "none" - | "detecting" - | "choose" - | "auth_failed" - | "importing" - | "mapping" - | "waiting_to_push" - | "pushing" - | "complete" - | "setup" - | "unknown" - | "detection_found_multiple" - | "detection_found_nothing" - | "detection_needs_auth"; - status_text?: string | null; - failed_step?: string | null; - error_message?: string | null; - import_percent?: number | null; - commit_count?: number | null; - push_percent?: number | null; - has_large_files?: boolean; - large_files_size?: number; - large_files_count?: number; - project_choices?: { - vcs?: string; - tfvc_project?: string; - human_name?: string; - }[]; - message?: string; - authors_count?: number | null; - url: string; - html_url: string; - authors_url: string; - repository_url: string; - svn_root?: string; - }; - /** - * Porter Author - */ - "porter-author": { - id: number; - remote_id: string; - remote_name: string; - email: string; - name: string; - url: string; - import_url: string; - }; - /** - * Porter Large File - */ - "porter-large-file": { - ref_name: string; - path: string; - oid: string; - size: number; - }; - /** - * Issue Event Label - */ - "issue-event-label": { name: string | null; color: string | null }; - "issue-event-dismissed-review": { - state: string; - review_id: number; - dismissal_message: string | null; - dismissal_commit_id?: string | null; - }; - /** - * Issue Event Milestone - */ - "issue-event-milestone": { title: string }; - /** - * Issue Event Project Card - */ - "issue-event-project-card": { - url: string; - id: number; - project_url: string; - project_id: number; - column_name: string; - previous_column_name?: string; - }; - /** - * Issue Event Rename - */ - "issue-event-rename": { from: string; to: string }; - /** - * Issue Event - */ - "issue-event": { - id: number; - node_id: string; - url: string; - actor: components["schemas"]["simple-user"] | null; - event: string; - commit_id: string | null; - commit_url: string | null; - created_at: string; - issue?: components["schemas"]["issue-simple"]; - label?: components["schemas"]["issue-event-label"]; - assignee?: components["schemas"]["simple-user"] | null; - assigner?: components["schemas"]["simple-user"] | null; - review_requester?: components["schemas"]["simple-user"] | null; - requested_reviewer?: components["schemas"]["simple-user"] | null; - requested_team?: components["schemas"]["team"]; - dismissed_review?: components["schemas"]["issue-event-dismissed-review"]; - milestone?: components["schemas"]["issue-event-milestone"]; - project_card?: components["schemas"]["issue-event-project-card"]; - rename?: components["schemas"]["issue-event-rename"]; - author_association?: string; - lock_reason?: string | null; - }; - /** - * Issue Event for Issue - */ - "issue-event-for-issue": { - id?: number; - node_id?: string; - url?: string; - actor?: components["schemas"]["simple-user"]; - event?: string; - commit_id?: string | null; - commit_url?: string | null; - created_at?: string; - sha?: string; - html_url?: string; - message?: string; - issue_url?: string; - updated_at?: string; - author_association?: string; - body?: string; - lock_reason?: string; - submitted_at?: string; - state?: string; - pull_request_url?: string; - body_html?: string; - body_text?: string; - }; - /** - * Color-coded labels help you categorize and filter your issues (just like labels in Gmail). - */ - label: { - id: number; - node_id: string; - /** - * URL for the label - */ - url: string; - /** - * The name of the label. - */ - name: string; - description?: string | null; - /** - * 6-character hex code, without the leading #, identifying the color - */ - color: string; - default: boolean; - }; - /** - * An SSH key granting access to a single repository. - */ - "deploy-key": { - id?: number; - key?: string; - url?: string; - title?: string; - verified?: boolean; - created_at?: string; - read_only?: boolean; - }; - /** - * Language - */ - language: { [key: string]: number }; - /** - * License Content - */ - "license-content": { - name: string; - path: string; - sha: string; - size: number; - url: string; - html_url: string | null; - git_url: string | null; - download_url: string | null; - type: string; - content: string; - encoding: string; - _links: { git: string | null; html: string | null; self: string }; - license: components["schemas"]["license-simple"] | null; - }; - "pages-source-hash": { branch: string; path: string }; - /** - * The configuration for GitHub Pages for a repository. - */ - page: { - /** - * The API address for accessing this Page resource. - */ - url: string; - /** - * The status of the most recent build of the Page. - */ - status: ("built" | "building" | "errored") | null; - /** - * The Pages site's custom domain - */ - cname: string | null; - /** - * Whether the Page has a custom 404 page. - */ - custom_404: boolean; - /** - * The web address the Page can be accessed from. - */ - html_url?: string; - source?: components["schemas"]["pages-source-hash"]; - }; - /** - * Page Build - */ - "page-build": { - url: string; - status: string; - error: { message: string | null }; - pusher: components["schemas"]["simple-user"] | null; - commit: string; - duration: number; - created_at: string; - updated_at: string; - }; - /** - * Page Build Status - */ - "page-build-status": { url: string; status: string }; - /** - * Pull requests let you tell others about changes you've pushed to a repository on GitHub. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary. - */ - "pull-request": { - url: string; - id: number; - node_id: string; - html_url: string; - diff_url: string; - patch_url: string; - issue_url: string; - commits_url: string; - review_comments_url: string; - review_comment_url: string; - comments_url: string; - statuses_url: string; - /** - * Number uniquely identifying the pull request within its repository. - */ - number: number; - /** - * State of this Pull Request. Either `open` or `closed`. - */ - state: "open" | "closed"; - locked: boolean; - /** - * The title of the pull request. - */ - title: string; - user: components["schemas"]["simple-user"] | null; - body: string | null; - labels: { - id?: number; - node_id?: string; - url?: string; - name?: string; - description?: string | null; - color?: string; - default?: boolean; - }[]; - milestone: components["schemas"]["milestone"] | null; - active_lock_reason?: string | null; - created_at: string; - updated_at: string; - closed_at: string | null; - merged_at: string | null; - merge_commit_sha: string | null; - assignee: components["schemas"]["simple-user"] | null; - assignees?: components["schemas"]["simple-user"][] | null; - requested_reviewers?: components["schemas"]["simple-user"][] | null; - requested_teams?: components["schemas"]["team-simple"][] | null; - head: { - label: string; - ref: string; - repo: { - archive_url: string; - assignees_url: string; - blobs_url: string; - branches_url: string; - collaborators_url: string; - comments_url: string; - commits_url: string; - compare_url: string; - contents_url: string; - contributors_url: string; - deployments_url: string; - description: string | null; - downloads_url: string; - events_url: string; - fork: boolean; - forks_url: string; - full_name: string; - git_commits_url: string; - git_refs_url: string; - git_tags_url: string; - hooks_url: string; - html_url: string; - id: number; - node_id: string; - issue_comment_url: string; - issue_events_url: string; - issues_url: string; - keys_url: string; - labels_url: string; - languages_url: string; - merges_url: string; - milestones_url: string; - name: string; - notifications_url: string; - owner: { - avatar_url: string; - events_url: string; - followers_url: string; - following_url: string; - gists_url: string; - gravatar_id: string | null; - html_url: string; - id: number; - node_id: string; - login: string; - organizations_url: string; - received_events_url: string; - repos_url: string; - site_admin: boolean; - starred_url: string; - subscriptions_url: string; - type: string; - url: string; - }; - private: boolean; - pulls_url: string; - releases_url: string; - stargazers_url: string; - statuses_url: string; - subscribers_url: string; - subscription_url: string; - tags_url: string; - teams_url: string; - trees_url: string; - url: string; - clone_url: string; - default_branch: string; - forks: number; - forks_count: number; - git_url: string; - has_downloads: boolean; - has_issues: boolean; - has_projects: boolean; - has_wiki: boolean; - has_pages: boolean; - homepage: string | null; - language: string | null; - master_branch?: string; - archived: boolean; - disabled: boolean; - mirror_url: string | null; - open_issues: number; - open_issues_count: number; - permissions?: { admin: boolean; pull: boolean; push: boolean }; - temp_clone_token?: string; - allow_merge_commit?: boolean; - allow_squash_merge?: boolean; - allow_rebase_merge?: boolean; - license: { - key: string; - name: string; - url: string | null; - spdx_id: string | null; - node_id: string; - } | null; - pushed_at: string; - size: number; - ssh_url: string; - stargazers_count: number; - svn_url: string; - topics?: string[]; - watchers: number; - watchers_count: number; - created_at: string; - updated_at: string; - }; - sha: string; - user: { - avatar_url: string; - events_url: string; - followers_url: string; - following_url: string; - gists_url: string; - gravatar_id: string | null; - html_url: string; - id: number; - node_id: string; - login: string; - organizations_url: string; - received_events_url: string; - repos_url: string; - site_admin: boolean; - starred_url: string; - subscriptions_url: string; - type: string; - url: string; - }; - }; - base: { - label: string; - ref: string; - repo: { - archive_url: string; - assignees_url: string; - blobs_url: string; - branches_url: string; - collaborators_url: string; - comments_url: string; - commits_url: string; - compare_url: string; - contents_url: string; - contributors_url: string; - deployments_url: string; - description: string | null; - downloads_url: string; - events_url: string; - fork: boolean; - forks_url: string; - full_name: string; - git_commits_url: string; - git_refs_url: string; - git_tags_url: string; - hooks_url: string; - html_url: string; - id: number; - node_id: string; - issue_comment_url: string; - issue_events_url: string; - issues_url: string; - keys_url: string; - labels_url: string; - languages_url: string; - merges_url: string; - milestones_url: string; - name: string; - notifications_url: string; - owner: { - avatar_url: string; - events_url: string; - followers_url: string; - following_url: string; - gists_url: string; - gravatar_id: string | null; - html_url: string; - id: number; - node_id: string; - login: string; - organizations_url: string; - received_events_url: string; - repos_url: string; - site_admin: boolean; - starred_url: string; - subscriptions_url: string; - type: string; - url: string; - }; - private: boolean; - pulls_url: string; - releases_url: string; - stargazers_url: string; - statuses_url: string; - subscribers_url: string; - subscription_url: string; - tags_url: string; - teams_url: string; - trees_url: string; - url: string; - clone_url: string; - default_branch: string; - forks: number; - forks_count: number; - git_url: string; - has_downloads: boolean; - has_issues: boolean; - has_projects: boolean; - has_wiki: boolean; - has_pages: boolean; - homepage: string | null; - language: string | null; - master_branch?: string; - archived: boolean; - disabled: boolean; - mirror_url: string | null; - open_issues: number; - open_issues_count: number; - permissions?: { admin: boolean; pull: boolean; push: boolean }; - temp_clone_token?: string; - allow_merge_commit?: boolean; - allow_squash_merge?: boolean; - allow_rebase_merge?: boolean; - license: components["schemas"]["license-simple"] | null; - pushed_at: string; - size: number; - ssh_url: string; - stargazers_count: number; - svn_url: string; - topics?: string[]; - watchers: number; - watchers_count: number; - created_at: string; - updated_at: string; - }; - sha: string; - user: { - avatar_url: string; - events_url: string; - followers_url: string; - following_url: string; - gists_url: string; - gravatar_id: string | null; - html_url: string; - id: number; - node_id: string; - login: string; - organizations_url: string; - received_events_url: string; - repos_url: string; - site_admin: boolean; - starred_url: string; - subscriptions_url: string; - type: string; - url: string; - }; - }; - _links: { - comments: components["schemas"]["link"]; - commits: components["schemas"]["link"]; - statuses: components["schemas"]["link"]; - html: components["schemas"]["link"]; - issue: components["schemas"]["link"]; - review_comments: components["schemas"]["link"]; - review_comment: components["schemas"]["link"]; - self: components["schemas"]["link"]; - }; - author_association: string; - /** - * Indicates whether or not the pull request is a draft. - */ - draft?: boolean; - merged: boolean; - mergeable: boolean | null; - rebaseable?: boolean | null; - mergeable_state: string; - merged_by: components["schemas"]["simple-user"] | null; - comments: number; - review_comments: number; - /** - * Indicates whether maintainers can modify the pull request. - */ - maintainer_can_modify: boolean; - commits: number; - additions: number; - deletions: number; - changed_files: number; - }; - /** - * Pull Request Review Comments are comments on a portion of the Pull Request's diff. - */ - "pull-request-review-comment": { - /** - * URL for the pull request review comment - */ - url: string; - /** - * The ID of the pull request review to which the comment belongs. - */ - pull_request_review_id: number | null; - /** - * The ID of the pull request review comment. - */ - id: number; - /** - * The node ID of the pull request review comment. - */ - node_id: string; - /** - * The diff of the line that the comment refers to. - */ - diff_hunk: string; - /** - * The relative path of the file to which the comment applies. - */ - path: string; - /** - * The line index in the diff to which the comment applies. - */ - position: number; - /** - * The index of the original line in the diff to which the comment applies. - */ - original_position: number; - /** - * The SHA of the commit to which the comment applies. - */ - commit_id: string; - /** - * The SHA of the original commit to which the comment applies. - */ - original_commit_id: string; - /** - * The comment ID to reply to. - */ - in_reply_to_id?: number; - user: components["schemas"]["simple-user"]; - /** - * The text of the comment. - */ - body: string; - created_at: string; - updated_at: string; - /** - * HTML URL for the pull request review comment. - */ - html_url: string; - /** - * URL for the pull request that the review comment belongs to. - */ - pull_request_url: string; - /** - * How the author of the comment is associated with the pull request. - */ - author_association: string; - _links: { - self: { href: string }; - html: { href: string }; - pull_request: { href: string }; - }; - /** - * The first line of the range for a multi-line comment. - */ - start_line?: number | null; - /** - * The first line of the range for a multi-line comment. - */ - original_start_line?: number | null; - /** - * The side of the first line of the range for a multi-line comment. - */ - start_side?: ("LEFT" | "RIGHT") | null; - /** - * The line of the blob to which the comment applies. The last line of the range for a multi-line comment - */ - line?: number; - /** - * The line of the blob to which the comment applies. The last line of the range for a multi-line comment - */ - original_line?: number; - /** - * The side of the diff to which the comment applies. The side of the last line of the range for a multi-line comment - */ - side?: "LEFT" | "RIGHT"; - reactions?: components["schemas"]["reaction-rollup"]; - body_html?: string; - body_text?: string; - }; - /** - * Pull Request Merge Result - */ - "pull-request-merge-result": { - sha: string; - merged: boolean; - message: string; - }; - /** - * Pull Request Review Request - */ - "pull-request-review-request": { - users?: { - login?: string; - id?: number; - node_id?: string; - avatar_url?: string; - gravatar_id?: string; - url?: string; - html_url?: string; - followers_url?: string; - following_url?: string; - gists_url?: string; - starred_url?: string; - subscriptions_url?: string; - organizations_url?: string; - repos_url?: string; - events_url?: string; - received_events_url?: string; - type?: string; - site_admin?: boolean; - }[]; - teams?: { - id?: number; - node_id?: string; - url?: string; - html_url?: string; - name?: string; - slug?: string; - description?: string | null; - privacy?: string; - permission?: string; - members_url?: string; - repositories_url?: string; - parent?: string | null; - }[]; - }; - /** - * Pull Request Reviews are reviews on pull requests. - */ - "pull-request-review": { - /** - * Unique identifier of the review - */ - id: number; - node_id: string; - user: components["schemas"]["simple-user"] | null; - /** - * The text of the review. - */ - body: string; - state: string; - html_url: string; - pull_request_url: string; - _links: { html: { href: string }; pull_request: { href: string } }; - submitted_at?: string; - /** - * A commit SHA for the review. - */ - commit_id: string; - body_html?: string; - body_text?: string; - author_association: string; - }; - /** - * Legacy Review Comment - */ - "review-comment": { - url: string; - pull_request_review_id: number | null; - id: number; - node_id: string; - diff_hunk: string; - path: string; - position: number | null; - original_position: number; - commit_id: string; - original_commit_id: string; - in_reply_to_id?: number; - user: components["schemas"]["simple-user"] | null; - body: string; - created_at: string; - updated_at: string; - html_url: string; - pull_request_url: string; - author_association: string; - _links: { - self: components["schemas"]["link"]; - html: components["schemas"]["link"]; - pull_request: components["schemas"]["link"]; - }; - body_text?: string; - body_html?: string; - /** - * The side of the first line of the range for a multi-line comment. - */ - side?: "LEFT" | "RIGHT"; - /** - * The side of the first line of the range for a multi-line comment. - */ - start_side?: ("LEFT" | "RIGHT") | null; - /** - * The line of the blob to which the comment applies. The last line of the range for a multi-line comment - */ - line?: number; - /** - * The original line of the blob to which the comment applies. The last line of the range for a multi-line comment - */ - original_line?: number; - /** - * The first line of the range for a multi-line comment. - */ - start_line?: number | null; - /** - * The original first line of the range for a multi-line comment. - */ - original_start_line?: number | null; - }; - /** - * Data related to a release. - */ - "release-asset": { - url: string; - browser_download_url: string; - id: number; - node_id: string; - /** - * The file name of the asset. - */ - name: string; - label: string | null; - /** - * State of the release asset. - */ - state: "uploaded"; - content_type: string; - size: number; - download_count: number; - created_at: string; - updated_at: string; - uploader: components["schemas"]["simple-user"] | null; - }; - /** - * A release. - */ - release: { - url: string; - html_url: string; - assets_url: string; - upload_url: string; - tarball_url: string | null; - zipball_url: string | null; - id: number; - node_id: string; - /** - * The name of the tag. - */ - tag_name: string; - /** - * Specifies the commitish value that determines where the Git tag is created from. - */ - target_commitish: string; - name: string | null; - body?: string | null; - /** - * true to create a draft (unpublished) release, false to create a published one. - */ - draft: boolean; - /** - * Whether to identify the release as a prerelease or a full release. - */ - prerelease: boolean; - created_at: string; - published_at: string | null; - author: components["schemas"]["simple-user"]; - assets: components["schemas"]["release-asset"][]; - body_html?: string; - body_text?: string; - }; - /** - * Sets the state of the secret scanning alert. Can be either `open` or `resolved`. You must provide `resolution` when you set the state to `resolved`. - */ - "secret-scanning-alert-state": "open" | "resolved"; - /** - * **Required when the `state` is `resolved`.** The reason for resolving the alert. Can be one of `false_positive`, `wont_fix`, `revoked`, or `used_in_tests`. - */ - "secret-scanning-alert-resolution": string | null; - "secret-scanning-alert": { - number?: components["schemas"]["alert-number"]; - created_at?: components["schemas"]["alert-created-at"]; - url?: components["schemas"]["alert-url"]; - html_url?: components["schemas"]["alert-html-url"]; - state?: components["schemas"]["secret-scanning-alert-state"]; - resolution?: components["schemas"]["secret-scanning-alert-resolution"]; - /** - * The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. - */ - resolved_at?: string | null; - resolved_by?: components["schemas"]["simple-user"]; - /** - * The type of secret that secret scanning detected. - */ - secret_type?: string; - /** - * The secret that was detected. - */ - secret?: string; - }; - /** - * Stargazer - */ - stargazer: { - starred_at: string; - user: components["schemas"]["simple-user"] | null; - }; - /** - * Code Frequency Stat - */ - "code-frequency-stat": number[]; - /** - * Commit Activity - */ - "commit-activity": { days: number[]; total: number; week: number }; - /** - * Contributor Activity - */ - "contributor-activity": { - author: components["schemas"]["simple-user"] | null; - total: number; - weeks: { w?: string; a?: number; d?: number; c?: number }[]; - }; - "participation-stats": { all?: number[]; owner?: number[] }; - /** - * Repository invitations let you manage who you collaborate with. - */ - "repository-subscription": { - /** - * Determines if notifications should be received from this repository. - */ - subscribed: boolean; - /** - * Determines if all notifications should be blocked from this repository. - */ - ignored: boolean; - reason: string | null; - created_at: string; - url: string; - repository_url: string; - }; - /** - * Tag - */ - tag: { - name: string; - commit: { sha: string; url: string }; - zipball_url: string; - tarball_url: string; - node_id: string; - }; - /** - * A topic aggregates entities that are related to a subject. - */ - topic: { names?: string[] }; - traffic: { timestamp: string; uniques: number; count: number }; - /** - * Clone Traffic - */ - "clone-traffic": { - count: number; - uniques: number; - clones: components["schemas"]["traffic"][]; - }; - /** - * Content Traffic - */ - "content-traffic": { - path: string; - title: string; - count: number; - uniques: number; - }; - /** - * Referrer Traffic - */ - "referrer-traffic": { referrer: string; count: number; uniques: number }; - /** - * View Traffic - */ - "view-traffic": { - count: number; - uniques: number; - views: components["schemas"]["traffic"][]; - }; - "scim-group-list-enterprise": { - schemas?: string[]; - totalResults?: number; - itemsPerPage?: number; - startIndex?: number; - Resources?: { - schemas?: string[]; - id?: string; - externalId?: string | null; - displayName?: string; - members?: { value?: string; $ref?: string; display?: string }[]; - meta?: { - resourceType?: string; - created?: string; - lastModified?: string; - location?: string; - }; - }[]; - }; - "scim-enterprise-group": { - schemas?: string[]; - id?: string; - externalId?: string | null; - displayName?: string; - members?: { value?: string; $ref?: string; display?: string }[]; - meta?: { - resourceType?: string; - created?: string; - lastModified?: string; - location?: string; - }; - }; - "scim-user-list-enterprise": { - schemas?: string[]; - totalResults?: number; - itemsPerPage?: number; - startIndex?: number; - Resources?: { - schemas?: string[]; - id?: string; - externalId?: string; - userName?: string; - name?: { givenName?: string; familyName?: string }; - emails?: { value?: string; primary?: boolean; type?: string }[]; - groups?: { value?: string }[]; - active?: boolean; - meta?: { - resourceType?: string; - created?: string; - lastModified?: string; - location?: string; - }; - }[]; - }; - "scim-enterprise-user": { - schemas?: string[]; - id?: string; - externalId?: string; - userName?: string; - name?: { givenName?: string; familyName?: string }; - emails?: { value?: string; type?: string; primary?: boolean }[]; - groups?: { value?: string }[]; - active?: boolean; - meta?: { - resourceType?: string; - created?: string; - lastModified?: string; - location?: string; - }; - }; - /** - * SCIM /Users provisioning endpoints - */ - "scim-user": { - /** - * SCIM schema used. - */ - schemas: string[]; - /** - * Unique identifier of an external identity - */ - id: string; - /** - * The ID of the User. - */ - externalId: string | null; - /** - * Configured by the admin. Could be an email, login, or username - */ - userName: string | null; - /** - * The name of the user, suitable for display to end-users - */ - displayName?: string | null; - name: { - givenName: string | null; - familyName: string | null; - formatted?: string | null; - }; - /** - * user emails - */ - emails: { value: string; primary?: boolean }[]; - /** - * The active status of the User. - */ - active: boolean; - meta: { - resourceType?: string; - created?: string; - lastModified?: string; - location?: string; - }; - /** - * The ID of the organization. - */ - organization_id?: number; - /** - * Set of operations to be performed - */ - operations?: { - op: "add" | "remove" | "replace"; - path?: string; - value?: string | { [key: string]: any } | { [key: string]: any }[]; - }[]; - /** - * associated groups - */ - groups?: { value?: string; display?: string }[]; - }; - /** - * SCIM User List - */ - "scim-user-list": { - /** - * SCIM schema used. - */ - schemas: string[]; - totalResults: number; - itemsPerPage: number; - startIndex: number; - Resources: components["schemas"]["scim-user"][]; - }; - "search-result-text-matches": { - object_url?: string; - object_type?: string | null; - property?: string; - fragment?: string; - matches?: { text?: string; indices?: number[] }[]; - }[]; - /** - * Code Search Result Item - */ - "code-search-result-item": { - name: string; - path: string; - sha: string; - url: string; - git_url: string; - html_url: string; - repository: components["schemas"]["minimal-repository"]; - score: number; - file_size?: number; - language?: string | null; - last_modified_at?: string; - line_numbers?: string[]; - text_matches?: components["schemas"]["search-result-text-matches"]; - }; - /** - * Commit Search Result Item - */ - "commit-search-result-item": { - url: string; - sha: string; - html_url: string; - comments_url: string; - commit: { - author: { name: string; email: string; date: string }; - committer: components["schemas"]["git-user"] | null; - comment_count: number; - message: string; - tree: { sha: string; url: string }; - url: string; - verification?: components["schemas"]["verification"]; - }; - author: components["schemas"]["simple-user"] | null; - committer: components["schemas"]["git-user"] | null; - parents: { url?: string; html_url?: string; sha?: string }[]; - repository: components["schemas"]["minimal-repository"]; - score: number; - node_id: string; - text_matches?: components["schemas"]["search-result-text-matches"]; - }; - /** - * Issue Search Result Item - */ - "issue-search-result-item": { - url: string; - repository_url: string; - labels_url: string; - comments_url: string; - events_url: string; - html_url: string; - id: number; - node_id: string; - number: number; - title: string; - locked: boolean; - active_lock_reason?: string | null; - assignees?: components["schemas"]["simple-user"][] | null; - user: components["schemas"]["simple-user"] | null; - labels: { - id?: number; - node_id?: string; - url?: string; - name?: string; - color?: string; - default?: boolean; - description?: string | null; - }[]; - state: string; - assignee: components["schemas"]["simple-user"] | null; - milestone: components["schemas"]["milestone"] | null; - comments: number; - created_at: string; - updated_at: string; - closed_at: string | null; - text_matches?: components["schemas"]["search-result-text-matches"]; - pull_request?: { - merged_at?: string | null; - diff_url: string | null; - html_url: string | null; - patch_url: string | null; - url: string | null; - }; - body?: string; - score: number; - author_association: string; - draft?: boolean; - repository?: components["schemas"]["repository"]; - body_html?: string; - body_text?: string; - timeline_url?: string; - performed_via_github_app?: components["schemas"]["integration"] | null; - }; - /** - * Label Search Result Item - */ - "label-search-result-item": { - id: number; - node_id: string; - url: string; - name: string; - color: string; - default: boolean; - description: string | null; - score: number; - text_matches?: components["schemas"]["search-result-text-matches"]; - }; - /** - * Repo Search Result Item - */ - "repo-search-result-item": { - id: number; - node_id: string; - name: string; - full_name: string; - owner: components["schemas"]["simple-user"] | null; - private: boolean; - html_url: string; - description: string | null; - fork: boolean; - url: string; - created_at: string; - updated_at: string; - pushed_at: string; - homepage: string | null; - size: number; - stargazers_count: number; - watchers_count: number; - language: string | null; - forks_count: number; - open_issues_count: number; - master_branch?: string; - default_branch: string; - score: number; - forks_url: string; - keys_url: string; - collaborators_url: string; - teams_url: string; - hooks_url: string; - issue_events_url: string; - events_url: string; - assignees_url: string; - branches_url: string; - tags_url: string; - blobs_url: string; - git_tags_url: string; - git_refs_url: string; - trees_url: string; - statuses_url: string; - languages_url: string; - stargazers_url: string; - contributors_url: string; - subscribers_url: string; - subscription_url: string; - commits_url: string; - git_commits_url: string; - comments_url: string; - issue_comment_url: string; - contents_url: string; - compare_url: string; - merges_url: string; - archive_url: string; - downloads_url: string; - issues_url: string; - pulls_url: string; - milestones_url: string; - notifications_url: string; - labels_url: string; - releases_url: string; - deployments_url: string; - git_url: string; - ssh_url: string; - clone_url: string; - svn_url: string; - forks: number; - open_issues: number; - watchers: number; - topics?: string[]; - mirror_url: string | null; - has_issues: boolean; - has_projects: boolean; - has_pages: boolean; - has_wiki: boolean; - has_downloads: boolean; - archived: boolean; - /** - * Returns whether or not this repository disabled. - */ - disabled: boolean; - license: components["schemas"]["license-simple"] | null; - permissions?: { admin: boolean; pull: boolean; push: boolean }; - text_matches?: components["schemas"]["search-result-text-matches"]; - temp_clone_token?: string; - allow_merge_commit?: boolean; - allow_squash_merge?: boolean; - allow_rebase_merge?: boolean; - delete_branch_on_merge?: boolean; - }; - /** - * Topic Search Result Item - */ - "topic-search-result-item": { - name: string; - display_name: string | null; - short_description: string | null; - description: string | null; - created_by: string | null; - released: string | null; - created_at: string; - updated_at: string; - featured: boolean; - curated: boolean; - score: number; - repository_count?: number | null; - logo_url?: string | null; - text_matches?: components["schemas"]["search-result-text-matches"]; - related?: - | { - topic_relation?: { - id?: number; - name?: string; - topic_id?: number; - relation_type?: string; - }; - }[] - | null; - aliases?: - | { - topic_relation?: { - id?: number; - name?: string; - topic_id?: number; - relation_type?: string; - }; - }[] - | null; - }; - /** - * User Search Result Item - */ - "user-search-result-item": { - login: string; - id: number; - node_id: string; - avatar_url: string; - gravatar_id: string | null; - url: string; - html_url: string; - followers_url: string; - subscriptions_url: string; - organizations_url: string; - repos_url: string; - received_events_url: string; - type: string; - score: number; - following_url: string; - gists_url: string; - starred_url: string; - events_url: string; - public_repos?: number; - public_gists?: number; - followers?: number; - following?: number; - created_at?: string; - updated_at?: string; - name?: string | null; - bio?: string | null; - email?: string | null; - location?: string | null; - site_admin: boolean; - hireable?: boolean | null; - text_matches?: components["schemas"]["search-result-text-matches"]; - blog?: string | null; - company?: string | null; - suspended_at?: string | null; - }; - /** - * Private User - */ - "private-user": { - login: string; - id: number; - node_id: string; - avatar_url: string; - gravatar_id: string | null; - url: string; - html_url: string; - followers_url: string; - following_url: string; - gists_url: string; - starred_url: string; - subscriptions_url: string; - organizations_url: string; - repos_url: string; - events_url: string; - received_events_url: string; - type: string; - site_admin: boolean; - name: string | null; - company: string | null; - blog: string | null; - location: string | null; - email: string | null; - hireable: boolean | null; - bio: string | null; - twitter_username?: string | null; - public_repos: number; - public_gists: number; - followers: number; - following: number; - created_at: string; - updated_at: string; - private_gists: number; - total_private_repos: number; - owned_private_repos: number; - disk_usage: number; - collaborators: number; - two_factor_authentication: boolean; - plan?: { - collaborators: number; - name: string; - space: number; - private_repos: number; - }; - suspended_at?: string | null; - business_plus?: boolean; - ldap_dn?: string; - }; - /** - * Public User - */ - "public-user": { - login: string; - id: number; - node_id: string; - avatar_url: string; - gravatar_id: string | null; - url: string; - html_url: string; - followers_url: string; - following_url: string; - gists_url: string; - starred_url: string; - subscriptions_url: string; - organizations_url: string; - repos_url: string; - events_url: string; - received_events_url: string; - type: string; - site_admin: boolean; - name: string | null; - company: string | null; - blog: string | null; - location: string | null; - email: string | null; - hireable: boolean | null; - bio: string | null; - twitter_username?: string | null; - public_repos: number; - public_gists: number; - followers: number; - following: number; - created_at: string; - updated_at: string; - plan?: { - collaborators: number; - name: string; - space: number; - private_repos: number; - }; - suspended_at?: string | null; - private_gists?: number; - total_private_repos?: number; - owned_private_repos?: number; - disk_usage?: number; - collaborators?: number; - }; - /** - * Email - */ - email: - | { - email: string; - primary: boolean; - verified: boolean; - visibility: string | null; - } - | string; - /** - * A unique encryption key - */ - "gpg-key": { - id: number; - primary_key_id: number | null; - key_id: string; - public_key: string; - emails: { email?: string; verified?: boolean }[]; - subkeys: { - id?: number; - primary_key_id?: number; - key_id?: string; - public_key?: string; - emails?: { [key: string]: any }[]; - subkeys?: { [key: string]: any }[]; - can_sign?: boolean; - can_encrypt_comms?: boolean; - can_encrypt_storage?: boolean; - can_certify?: boolean; - created_at?: string; - expires_at?: string | null; - raw_key?: string | null; - }[]; - can_sign: boolean; - can_encrypt_comms: boolean; - can_encrypt_storage: boolean; - can_certify: boolean; - created_at: string; - expires_at: string | null; - raw_key: string | null; - }; - /** - * Key - */ - key: { - key_id?: string; - key?: string; - id?: number; - url?: string; - title?: string; - created_at?: string; - verified?: boolean; - read_only?: boolean; - }; - "marketplace-account": { - url: string; - id: number; - type: string; - node_id?: string; - login: string; - email?: string | null; - organization_billing_email?: string | null; - }; - /** - * User Marketplace Purchase - */ - "user-marketplace-purchase": { - billing_cycle: string; - next_billing_date: string | null; - unit_count: number | null; - on_free_trial: boolean; - free_trial_ends_on: string | null; - updated_at: string | null; - account: components["schemas"]["marketplace-account"]; - plan: components["schemas"]["marketplace-listing-plan"]; - }; - /** - * Starred Repository - */ - "starred-repository": { - starred_at: string; - repo: components["schemas"]["repository"]; - }; - /** - * Hovercard - */ - hovercard: { contexts: { message: string; octicon: string }[] }; - /** - * Key Simple - */ - "key-simple": { id: number; key: string }; - }; - responses: { - /** - * Resource Not Found - */ - not_found: { [key: string]: any }; - /** - * Validation Failed - */ - validation_failed_simple: { [key: string]: any }; - /** - * Preview Header Missing - */ - preview_header_missing: { [key: string]: any }; - /** - * Forbidden - */ - forbidden: { [key: string]: any }; - /** - * Requires Authentication - */ - requires_authentication: { [key: string]: any }; - /** - * Validation Failed - */ - validation_failed: { [key: string]: any }; - /** - * Not Modified - */ - not_modified: { [key: string]: any }; - /** - * Gone - */ - gone: { [key: string]: any }; - /** - * Service Unavailable - */ - service_unavailable: { [key: string]: any }; - /** - * Forbidden Gist - */ - forbidden_gist: { [key: string]: any }; - /** - * Moved Permanently - */ - moved_permanently: { [key: string]: any }; - /** - * Conflict - */ - conflict: { [key: string]: any }; - /** - * Internal Error - */ - internal_error: { [key: string]: any }; - /** - * Bad Request - */ - bad_request: { [key: string]: any }; - /** - * Found - */ - found: { [key: string]: any }; - /** - * Resource Not Found - */ - scim_not_found: { [key: string]: any }; - /** - * Forbidden - */ - scim_forbidden: { [key: string]: any }; - /** - * Bad Request - */ - scim_bad_request: { [key: string]: any }; - /** - * Internal Error - */ - scim_internal_error: { [key: string]: any }; - /** - * Conflict - */ - scim_conflict: { [key: string]: any }; - }; -} diff --git a/node_modules/@octokit/openapi-types/package.json b/node_modules/@octokit/openapi-types/package.json deleted file mode 100644 index 025451a28..000000000 --- a/node_modules/@octokit/openapi-types/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "_from": "@octokit/openapi-types@^2.0.1", - "_id": "@octokit/openapi-types@2.0.1", - "_inBundle": false, - "_integrity": "sha512-9AuC04PUnZrjoLiw3uPtwGh9FE4Q3rTqs51oNlQ0rkwgE8ftYsOC+lsrQyvCvWm85smBbSc0FNRKKumvGyb44Q==", - "_location": "/@octokit/openapi-types", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/openapi-types@^2.0.1", - "name": "@octokit/openapi-types", - "escapedName": "@octokit%2fopenapi-types", - "scope": "@octokit", - "rawSpec": "^2.0.1", - "saveSpec": null, - "fetchSpec": "^2.0.1" - }, - "_requiredBy": [ - "/@octokit/types" - ], - "_resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-2.0.1.tgz", - "_shasum": "7453d8281ce66b8ed1607f7ac7d751c3baffd2cc", - "_spec": "@octokit/openapi-types@^2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\types", - "author": { - "name": "Gregor Martynus", - "url": "https://twitter.com/gr2m" - }, - "bugs": { - "url": "https://github.com/octokit/openapi-types.ts/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Generated TypeScript definitions based on GitHub's OpenAPI spec", - "devDependencies": { - "openapi-typescript": "^2.4.2" - }, - "homepage": "https://github.com/octokit/openapi-types.ts#readme", - "keywords": [], - "license": "MIT", - "main": "generated/types.ts", - "name": "@octokit/openapi-types", - "octokit": { - "openapi-version": "2.0.0" - }, - "publishConfig": { - "access": "public" - }, - "release": { - "branches": "main" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/openapi-types.ts.git" - }, - "scripts": { - "download": "node scripts/download", - "generate-types": "npx openapi-typescript cache/openapi-schema.json -o generated/types.ts", - "postgenerate-types": "node scripts/update-package" - }, - "types": "generated/types.ts", - "version": "2.0.1" -} diff --git a/node_modules/@octokit/openapi-types/scripts/download.js b/node_modules/@octokit/openapi-types/scripts/download.js deleted file mode 100644 index edd1d88aa..000000000 --- a/node_modules/@octokit/openapi-types/scripts/download.js +++ /dev/null @@ -1,35 +0,0 @@ -const { get } = require("https"); -const fs = require("fs"); - -if (!process.env.VERSION) { - throw new Error("VERSION is not set"); -} - -download(process.env.VERSION.replace(/^v/, "")).then( - () => console.log("done"), - console.error -); - -function download(version) { - const path = `cache/openapi-schema.json`; - const url = `https://unpkg.com/@octokit/openapi@${version}/generated/api.github.com.json`; - - const file = fs.createWriteStream(path); - - console.log("Downloading %s", url); - - return new Promise((resolve, reject) => { - get(url, (response) => { - response.pipe(file); - file - .on("finish", () => - file.close((error) => { - if (error) return reject(error); - console.log("%s written", path); - resolve(); - }) - ) - .on("error", (error) => reject(error.message)); - }); - }); -} diff --git a/node_modules/@octokit/openapi-types/scripts/update-package.js b/node_modules/@octokit/openapi-types/scripts/update-package.js deleted file mode 100644 index 2fe394866..000000000 --- a/node_modules/@octokit/openapi-types/scripts/update-package.js +++ /dev/null @@ -1,15 +0,0 @@ -const { writeFileSync } = require("fs"); - -if (!process.env.VERSION) { - throw new Error("VERSION is not set"); -} - -const pkg = require("../package.json"); - -if (!pkg.octokit) { - pkg.octokit = {}; -} - -pkg.octokit["openapi-version"] = process.env.VERSION.replace(/^v/, ""); - -writeFileSync("package.json", JSON.stringify(pkg, null, 2) + "\n"); diff --git a/node_modules/@octokit/plugin-paginate-rest/LICENSE b/node_modules/@octokit/plugin-paginate-rest/LICENSE deleted file mode 100644 index 57bee5f18..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@octokit/plugin-paginate-rest/README.md b/node_modules/@octokit/plugin-paginate-rest/README.md deleted file mode 100644 index f73580a6d..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/README.md +++ /dev/null @@ -1,192 +0,0 @@ -# plugin-paginate-rest.js - -> Octokit plugin to paginate REST API endpoint responses - -[![@latest](https://img.shields.io/npm/v/@octokit/plugin-paginate-rest.svg)](https://www.npmjs.com/package/@octokit/plugin-paginate-rest) -[![Build Status](https://github.com/octokit/plugin-paginate-rest.js/workflows/Test/badge.svg)](https://github.com/octokit/plugin-paginate-rest.js/actions?workflow=Test) - -## Usage - - - - - - -
-Browsers - - -Load `@octokit/plugin-paginate-rest` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [cdn.skypack.dev](https://cdn.skypack.dev) - -```html - -``` - -
-Node - - -Install with `npm install @octokit/core @octokit/plugin-paginate-rest`. Optionally replace `@octokit/core` with a core-compatible module - -```js -const { Octokit } = require("@octokit/core"); -const { - paginateRest, - composePaginateRest, -} = require("@octokit/plugin-paginate-rest"); -``` - -
- -```js -const MyOctokit = Octokit.plugin(paginateRest); -const octokit = new MyOctokit({ auth: "secret123" }); - -// See https://developer.github.com/v3/issues/#list-issues-for-a-repository -const issues = await octokit.paginate("GET /repos/{owner}/{repo}/issues", { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, -}); -``` - -If you want to utilize the pagination methods in another plugin, use `composePaginateRest`. - -```js -function myPlugin(octokit, options) { - return { - allStars({owner, repo}) => { - return composePaginateRest( - octokit, - "GET /repos/{owner}/{repo}/stargazers", - {owner, repo } - ) - } - } -} -``` - -## `octokit.paginate()` - -The `paginateRest` plugin adds a new `octokit.paginate()` method which accepts the same parameters as [`octokit.request`](https://github.com/octokit/request.js#request). Only "List ..." endpoints such as [List issues for a repository](https://developer.github.com/v3/issues/#list-issues-for-a-repository) are supporting pagination. Their [response includes a Link header](https://developer.github.com/v3/issues/#response-1). For other endpoints, `octokit.paginate()` behaves the same as `octokit.request()`. - -The `per_page` parameter is usually defaulting to `30`, and can be set to up to `100`, which helps retrieving a big amount of data without hitting the rate limits too soon. - -An optional `mapFunction` can be passed to map each page response to a new value, usually an array with only the data you need. This can help to reduce memory usage, as only the relevant data has to be kept in memory until the pagination is complete. - -```js -const issueTitles = await octokit.paginate( - "GET /repos/{owner}/{repo}/issues", - { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, - }, - (response) => response.data.map((issue) => issue.title) -); -``` - -The `mapFunction` gets a 2nd argument `done` which can be called to end the pagination early. - -```js -const issues = await octokit.paginate( - "GET /repos/{owner}/{repo}/issues", - { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, - }, - (response, done) => { - if (response.data.find((issues) => issue.title.includes("something"))) { - done(); - } - return response.data; - } -); -``` - -Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/): - -```js -const issues = await octokit.paginate(octokit.issues.listForRepo, { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, -}); -``` - -## `octokit.paginate.iterator()` - -If your target runtime environments supports async iterators (such as most modern browsers and Node 10+), you can iterate through each response - -```js -const parameters = { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, -}; -for await (const response of octokit.paginate.iterator( - "GET /repos/{owner}/{repo}/issues", - parameters -)) { - // do whatever you want with each response, break out of the loop, etc. - console.log(response.data.title); -} -``` - -Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/): - -```js -const parameters = { - owner: "octocat", - repo: "hello-world", - since: "2010-10-01", - per_page: 100, -}; -for await (const response of octokit.paginate.iterator( - octokit.issues.listForRepo, - parameters -)) { - // do whatever you want with each response, break out of the loop, etc. - console.log(response.data.title); -} -``` - -## `composePaginateRest` and `composePaginateRest.iterator` - -The `compose*` methods work just like their `octokit.*` counterparts described above, with the differenct that both methods require an `octokit` instance to be passed as first argument - -## How it works - -`octokit.paginate()` wraps `octokit.request()`. As long as a `rel="next"` link value is present in the response's `Link` header, it sends another request for that URL, and so on. - -Most of GitHub's paginating REST API endpoints return an array, but there are a few exceptions which return an object with a key that includes the items array. For example: - -- [Search repositories](https://developer.github.com/v3/search/#example) (key `items`) -- [List check runs for a specific ref](https://developer.github.com/v3/checks/runs/#response-3) (key: `check_runs`) -- [List check suites for a specific ref](https://developer.github.com/v3/checks/suites/#response-1) (key: `check_suites`) -- [List repositories](https://developer.github.com/v3/apps/installations/#list-repositories) for an installation (key: `repositories`) -- [List installations for a user](https://developer.github.com/v3/apps/installations/#response-1) (key `installations`) - -`octokit.paginate()` is working around these inconsistencies so you don't have to worry about it. - -If a response is lacking the `Link` header, `octokit.paginate()` still resolves with an array, even if the response returns a single object. - -## Contributing - -See [CONTRIBUTING.md](CONTRIBUTING.md) - -## License - -[MIT](LICENSE) diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js b/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js deleted file mode 100644 index 144b0bcf5..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js +++ /dev/null @@ -1,132 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -const VERSION = "2.6.2"; - -/** - * Some “list” response that can be paginated have a different response structure - * - * They have a `total_count` key in the response (search also has `incomplete_results`, - * /installation/repositories also has `repository_selection`), as well as a key with - * the list of the items which name varies from endpoint to endpoint. - * - * Octokit normalizes these responses so that paginated results are always returned following - * the same structure. One challenge is that if the list response has only one page, no Link - * header is provided, so this header alone is not sufficient to check wether a response is - * paginated or not. - * - * We check if a "total_count" key is present in the response data, but also make sure that - * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would - * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref - */ -function normalizePaginatedListResponse(response) { - const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); - if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way - // to retrieve the same information. - - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - - response.data.total_count = totalCount; - return response; -} - -function iterator(octokit, route, parameters) { - const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) return { - done: true - }; - const response = await requestMethod({ - method, - url, - headers - }); - const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format: - // '; rel="next", ; rel="last"' - // sets `url` to undefined if "next" URL is not present or `link` header is not set - - url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; - return { - value: normalizedResponse - }; - } - - }) - }; -} - -function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = undefined; - } - - return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); -} - -function gather(octokit, results, iterator, mapFn) { - return iterator.next().then(result => { - if (result.done) { - return results; - } - - let earlyExit = false; - - function done() { - earlyExit = true; - } - - results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); - - if (earlyExit) { - return results; - } - - return gather(octokit, results, iterator, mapFn); - }); -} - -const composePaginateRest = Object.assign(paginate, { - iterator -}); - -/** - * @param octokit Octokit instance - * @param options Options passed to Octokit constructor - */ - -function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit) - }) - }; -} -paginateRest.VERSION = VERSION; - -exports.composePaginateRest = composePaginateRest; -exports.paginateRest = paginateRest; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map b/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map deleted file mode 100644 index 969e1af8a..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/normalize-paginated-list-response.js","../dist-src/iterator.js","../dist-src/paginate.js","../dist-src/compose-paginate.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"2.6.2\";\n","/**\n * Some “list” response that can be paginated have a different response structure\n *\n * They have a `total_count` key in the response (search also has `incomplete_results`,\n * /installation/repositories also has `repository_selection`), as well as a key with\n * the list of the items which name varies from endpoint to endpoint.\n *\n * Octokit normalizes these responses so that paginated results are always returned following\n * the same structure. One challenge is that if the list response has only one page, no Link\n * header is provided, so this header alone is not sufficient to check wether a response is\n * paginated or not.\n *\n * We check if a \"total_count\" key is present in the response data, but also make sure that\n * a \"url\" property is not, as the \"Get the combined status for a specific ref\" endpoint would\n * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\n */\nexport function normalizePaginatedListResponse(response) {\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n // keep the additional properties intact as there is currently no other way\n // to retrieve the same information.\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n","import { normalizePaginatedListResponse } from \"./normalize-paginated-list-response\";\nexport function iterator(octokit, route, parameters) {\n const options = typeof route === \"function\"\n ? route.endpoint(parameters)\n : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n // `response.headers.link` format:\n // '; rel=\"next\", ; rel=\"last\"'\n // sets `url` to undefined if \"next\" URL is not present or `link` header is not set\n url = ((normalizedResponse.headers.link || \"\").match(/<([^>]+)>;\\s*rel=\"next\"/) || [])[1];\n return { value: normalizedResponse };\n },\n }),\n };\n}\n","import { iterator } from \"./iterator\";\nexport function paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = undefined;\n }\n return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);\n}\nfunction gather(octokit, results, iterator, mapFn) {\n return iterator.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator, mapFn);\n });\n}\n","import { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport const composePaginateRest = Object.assign(paginate, {\n iterator,\n});\n","import { VERSION } from \"./version\";\nimport { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport { composePaginateRest } from \"./compose-paginate\";\n/**\n * @param octokit Octokit instance\n * @param options Options passed to Octokit constructor\n */\nexport function paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit),\n }),\n };\n}\npaginateRest.VERSION = VERSION;\n"],"names":["VERSION","normalizePaginatedListResponse","response","responseNeedsNormalization","data","incompleteResults","incomplete_results","repositorySelection","repository_selection","totalCount","total_count","namespaceKey","Object","keys","iterator","octokit","route","parameters","options","endpoint","request","requestMethod","method","headers","url","Symbol","asyncIterator","next","done","normalizedResponse","link","match","value","paginate","mapFn","undefined","gather","results","then","result","earlyExit","concat","composePaginateRest","assign","paginateRest","bind"],"mappings":";;;;AAAO,MAAMA,OAAO,GAAG,mBAAhB;;ACAP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAASC,8BAAT,CAAwCC,QAAxC,EAAkD;AACrD,QAAMC,0BAA0B,GAAG,iBAAiBD,QAAQ,CAACE,IAA1B,IAAkC,EAAE,SAASF,QAAQ,CAACE,IAApB,CAArE;AACA,MAAI,CAACD,0BAAL,EACI,OAAOD,QAAP,CAHiD;AAKrD;;AACA,QAAMG,iBAAiB,GAAGH,QAAQ,CAACE,IAAT,CAAcE,kBAAxC;AACA,QAAMC,mBAAmB,GAAGL,QAAQ,CAACE,IAAT,CAAcI,oBAA1C;AACA,QAAMC,UAAU,GAAGP,QAAQ,CAACE,IAAT,CAAcM,WAAjC;AACA,SAAOR,QAAQ,CAACE,IAAT,CAAcE,kBAArB;AACA,SAAOJ,QAAQ,CAACE,IAAT,CAAcI,oBAArB;AACA,SAAON,QAAQ,CAACE,IAAT,CAAcM,WAArB;AACA,QAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYX,QAAQ,CAACE,IAArB,EAA2B,CAA3B,CAArB;AACA,QAAMA,IAAI,GAAGF,QAAQ,CAACE,IAAT,CAAcO,YAAd,CAAb;AACAT,EAAAA,QAAQ,CAACE,IAAT,GAAgBA,IAAhB;;AACA,MAAI,OAAOC,iBAAP,KAA6B,WAAjC,EAA8C;AAC1CH,IAAAA,QAAQ,CAACE,IAAT,CAAcE,kBAAd,GAAmCD,iBAAnC;AACH;;AACD,MAAI,OAAOE,mBAAP,KAA+B,WAAnC,EAAgD;AAC5CL,IAAAA,QAAQ,CAACE,IAAT,CAAcI,oBAAd,GAAqCD,mBAArC;AACH;;AACDL,EAAAA,QAAQ,CAACE,IAAT,CAAcM,WAAd,GAA4BD,UAA5B;AACA,SAAOP,QAAP;AACH;;ACtCM,SAASY,QAAT,CAAkBC,OAAlB,EAA2BC,KAA3B,EAAkCC,UAAlC,EAA8C;AACjD,QAAMC,OAAO,GAAG,OAAOF,KAAP,KAAiB,UAAjB,GACVA,KAAK,CAACG,QAAN,CAAeF,UAAf,CADU,GAEVF,OAAO,CAACK,OAAR,CAAgBD,QAAhB,CAAyBH,KAAzB,EAAgCC,UAAhC,CAFN;AAGA,QAAMI,aAAa,GAAG,OAAOL,KAAP,KAAiB,UAAjB,GAA8BA,KAA9B,GAAsCD,OAAO,CAACK,OAApE;AACA,QAAME,MAAM,GAAGJ,OAAO,CAACI,MAAvB;AACA,QAAMC,OAAO,GAAGL,OAAO,CAACK,OAAxB;AACA,MAAIC,GAAG,GAAGN,OAAO,CAACM,GAAlB;AACA,SAAO;AACH,KAACC,MAAM,CAACC,aAAR,GAAwB,OAAO;AAC3B,YAAMC,IAAN,GAAa;AACT,YAAI,CAACH,GAAL,EACI,OAAO;AAAEI,UAAAA,IAAI,EAAE;AAAR,SAAP;AACJ,cAAM1B,QAAQ,GAAG,MAAMmB,aAAa,CAAC;AAAEC,UAAAA,MAAF;AAAUE,UAAAA,GAAV;AAAeD,UAAAA;AAAf,SAAD,CAApC;AACA,cAAMM,kBAAkB,GAAG5B,8BAA8B,CAACC,QAAD,CAAzD,CAJS;AAMT;AACA;;AACAsB,QAAAA,GAAG,GAAG,CAAC,CAACK,kBAAkB,CAACN,OAAnB,CAA2BO,IAA3B,IAAmC,EAApC,EAAwCC,KAAxC,CAA8C,yBAA9C,KAA4E,EAA7E,EAAiF,CAAjF,CAAN;AACA,eAAO;AAAEC,UAAAA,KAAK,EAAEH;AAAT,SAAP;AACH;;AAX0B,KAAP;AADrB,GAAP;AAeH;;ACvBM,SAASI,QAAT,CAAkBlB,OAAlB,EAA2BC,KAA3B,EAAkCC,UAAlC,EAA8CiB,KAA9C,EAAqD;AACxD,MAAI,OAAOjB,UAAP,KAAsB,UAA1B,EAAsC;AAClCiB,IAAAA,KAAK,GAAGjB,UAAR;AACAA,IAAAA,UAAU,GAAGkB,SAAb;AACH;;AACD,SAAOC,MAAM,CAACrB,OAAD,EAAU,EAAV,EAAcD,QAAQ,CAACC,OAAD,EAAUC,KAAV,EAAiBC,UAAjB,CAAR,CAAqCQ,MAAM,CAACC,aAA5C,GAAd,EAA4EQ,KAA5E,CAAb;AACH;;AACD,SAASE,MAAT,CAAgBrB,OAAhB,EAAyBsB,OAAzB,EAAkCvB,QAAlC,EAA4CoB,KAA5C,EAAmD;AAC/C,SAAOpB,QAAQ,CAACa,IAAT,GAAgBW,IAAhB,CAAsBC,MAAD,IAAY;AACpC,QAAIA,MAAM,CAACX,IAAX,EAAiB;AACb,aAAOS,OAAP;AACH;;AACD,QAAIG,SAAS,GAAG,KAAhB;;AACA,aAASZ,IAAT,GAAgB;AACZY,MAAAA,SAAS,GAAG,IAAZ;AACH;;AACDH,IAAAA,OAAO,GAAGA,OAAO,CAACI,MAAR,CAAeP,KAAK,GAAGA,KAAK,CAACK,MAAM,CAACP,KAAR,EAAeJ,IAAf,CAAR,GAA+BW,MAAM,CAACP,KAAP,CAAa5B,IAAhE,CAAV;;AACA,QAAIoC,SAAJ,EAAe;AACX,aAAOH,OAAP;AACH;;AACD,WAAOD,MAAM,CAACrB,OAAD,EAAUsB,OAAV,EAAmBvB,QAAnB,EAA6BoB,KAA7B,CAAb;AACH,GAbM,CAAP;AAcH;;MCrBYQ,mBAAmB,GAAG9B,MAAM,CAAC+B,MAAP,CAAcV,QAAd,EAAwB;AACvDnB,EAAAA;AADuD,CAAxB,CAA5B;;ACEP;AACA;AACA;AACA;;AACA,AAAO,SAAS8B,YAAT,CAAsB7B,OAAtB,EAA+B;AAClC,SAAO;AACHkB,IAAAA,QAAQ,EAAErB,MAAM,CAAC+B,MAAP,CAAcV,QAAQ,CAACY,IAAT,CAAc,IAAd,EAAoB9B,OAApB,CAAd,EAA4C;AAClDD,MAAAA,QAAQ,EAAEA,QAAQ,CAAC+B,IAAT,CAAc,IAAd,EAAoB9B,OAApB;AADwC,KAA5C;AADP,GAAP;AAKH;AACD6B,YAAY,CAAC5C,OAAb,GAAuBA,OAAvB;;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js deleted file mode 100644 index 09ca53f6a..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js +++ /dev/null @@ -1,5 +0,0 @@ -import { paginate } from "./paginate"; -import { iterator } from "./iterator"; -export const composePaginateRest = Object.assign(paginate, { - iterator, -}); diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js deleted file mode 100644 index b2078036d..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import { VERSION } from "./version"; -import { paginate } from "./paginate"; -import { iterator } from "./iterator"; -export { composePaginateRest } from "./compose-paginate"; -/** - * @param octokit Octokit instance - * @param options Options passed to Octokit constructor - */ -export function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit), - }), - }; -} -paginateRest.VERSION = VERSION; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js deleted file mode 100644 index 14684db45..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js +++ /dev/null @@ -1,25 +0,0 @@ -import { normalizePaginatedListResponse } from "./normalize-paginated-list-response"; -export function iterator(octokit, route, parameters) { - const options = typeof route === "function" - ? route.endpoint(parameters) - : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) - return { done: true }; - const response = await requestMethod({ method, url, headers }); - const normalizedResponse = normalizePaginatedListResponse(response); - // `response.headers.link` format: - // '; rel="next", ; rel="last"' - // sets `url` to undefined if "next" URL is not present or `link` header is not set - url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; - return { value: normalizedResponse }; - }, - }), - }; -} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js deleted file mode 100644 index d29c6777c..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Some “list” response that can be paginated have a different response structure - * - * They have a `total_count` key in the response (search also has `incomplete_results`, - * /installation/repositories also has `repository_selection`), as well as a key with - * the list of the items which name varies from endpoint to endpoint. - * - * Octokit normalizes these responses so that paginated results are always returned following - * the same structure. One challenge is that if the list response has only one page, no Link - * header is provided, so this header alone is not sufficient to check wether a response is - * paginated or not. - * - * We check if a "total_count" key is present in the response data, but also make sure that - * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would - * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref - */ -export function normalizePaginatedListResponse(response) { - const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); - if (!responseNeedsNormalization) - return response; - // keep the additional properties intact as there is currently no other way - // to retrieve the same information. - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - response.data.total_count = totalCount; - return response; -} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js deleted file mode 100644 index 8d18a60f1..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js +++ /dev/null @@ -1,24 +0,0 @@ -import { iterator } from "./iterator"; -export function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = undefined; - } - return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); -} -function gather(octokit, results, iterator, mapFn) { - return iterator.next().then((result) => { - if (result.done) { - return results; - } - let earlyExit = false; - function done() { - earlyExit = true; - } - results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); - if (earlyExit) { - return results; - } - return gather(octokit, results, iterator, mapFn); - }); -} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/types.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/types.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-src/types.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js deleted file mode 100644 index c6296149a..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "2.6.2"; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts deleted file mode 100644 index 38a7432f6..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { ComposePaginateInterface } from "./types"; -export declare const composePaginateRest: ComposePaginateInterface; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts deleted file mode 100644 index 7e4bee88e..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts +++ /dev/null @@ -1,1380 +0,0 @@ -import { Endpoints } from "@octokit/types"; -export interface PaginatingEndpoints { - /** - * @see https://docs.github.com/v3/apps/#list-installations-for-the-authenticated-app - */ - "GET /app/installations": { - parameters: Endpoints["GET /app/installations"]["parameters"]; - response: Endpoints["GET /app/installations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-grants - */ - "GET /applications/grants": { - parameters: Endpoints["GET /applications/grants"]["parameters"]; - response: Endpoints["GET /applications/grants"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations - */ - "GET /authorizations": { - parameters: Endpoints["GET /authorizations"]["parameters"]; - response: Endpoints["GET /authorizations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-selected-organizations-enabled-for-github-actions-in-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/permissions/organizations": { - parameters: Endpoints["GET /enterprises/{enterprise}/actions/permissions/organizations"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/actions/permissions/organizations"]["response"] & { - data: Endpoints["GET /enterprises/{enterprise}/actions/permissions/organizations"]["response"]["data"]["organizations"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runner-groups-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runner-groups": { - parameters: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups"]["response"] & { - data: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups"]["response"]["data"]["runner_groups"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-organization-access-to-a-self-hosted-runner-group-in-a-enterprise - */ - "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": { - parameters: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations"]["response"] & { - data: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations"]["response"]["data"]["organizations"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runners-in-a-group-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": { - parameters: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners"]["response"] & { - data: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runners-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runners": { - parameters: Endpoints["GET /enterprises/{enterprise}/actions/runners"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/actions/runners"]["response"] & { - data: Endpoints["GET /enterprises/{enterprise}/actions/runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-runner-applications-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runners/downloads": { - parameters: Endpoints["GET /enterprises/{enterprise}/actions/runners/downloads"]["parameters"]; - response: Endpoints["GET /enterprises/{enterprise}/actions/runners/downloads"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-events - */ - "GET /events": { - parameters: Endpoints["GET /events"]["parameters"]; - response: Endpoints["GET /events"]["response"]; - }; - /** - * @see https://docs.github.com/v3/gists/#list-gists-for-the-authenticated-user - */ - "GET /gists": { - parameters: Endpoints["GET /gists"]["parameters"]; - response: Endpoints["GET /gists"]["response"]; - }; - /** - * @see https://docs.github.com/v3/gists/#list-public-gists - */ - "GET /gists/public": { - parameters: Endpoints["GET /gists/public"]["parameters"]; - response: Endpoints["GET /gists/public"]["response"]; - }; - /** - * @see https://docs.github.com/v3/gists/#list-starred-gists - */ - "GET /gists/starred": { - parameters: Endpoints["GET /gists/starred"]["parameters"]; - response: Endpoints["GET /gists/starred"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/gists#list-gist-comments - */ - "GET /gists/{gist_id}/comments": { - parameters: Endpoints["GET /gists/{gist_id}/comments"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/v3/gists/#list-gist-commits - */ - "GET /gists/{gist_id}/commits": { - parameters: Endpoints["GET /gists/{gist_id}/commits"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/commits"]["response"]; - }; - /** - * @see https://docs.github.com/v3/gists/#list-gist-forks - */ - "GET /gists/{gist_id}/forks": { - parameters: Endpoints["GET /gists/{gist_id}/forks"]["parameters"]; - response: Endpoints["GET /gists/{gist_id}/forks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-app-installation - */ - "GET /installation/repositories": { - parameters: Endpoints["GET /installation/repositories"]["parameters"]; - response: Endpoints["GET /installation/repositories"]["response"] & { - data: Endpoints["GET /installation/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/v3/issues/#list-issues-assigned-to-the-authenticated-user - */ - "GET /issues": { - parameters: Endpoints["GET /issues"]["parameters"]; - response: Endpoints["GET /issues"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/apps#list-plans - */ - "GET /marketplace_listing/plans": { - parameters: Endpoints["GET /marketplace_listing/plans"]["parameters"]; - response: Endpoints["GET /marketplace_listing/plans"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan - */ - "GET /marketplace_listing/plans/{plan_id}/accounts": { - parameters: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["parameters"]; - response: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/apps#list-plans-stubbed - */ - "GET /marketplace_listing/stubbed/plans": { - parameters: Endpoints["GET /marketplace_listing/stubbed/plans"]["parameters"]; - response: Endpoints["GET /marketplace_listing/stubbed/plans"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan-stubbed - */ - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": { - parameters: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["parameters"]; - response: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-network-of-repositories - */ - "GET /networks/{owner}/{repo}/events": { - parameters: Endpoints["GET /networks/{owner}/{repo}/events"]["parameters"]; - response: Endpoints["GET /networks/{owner}/{repo}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user - */ - "GET /notifications": { - parameters: Endpoints["GET /notifications"]["parameters"]; - response: Endpoints["GET /notifications"]["response"]; - }; - /** - * @see https://docs.github.com/v3/orgs/#list-organizations - */ - "GET /organizations": { - parameters: Endpoints["GET /organizations"]["parameters"]; - response: Endpoints["GET /organizations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-enabled-for-github-actions-in-an-organization - */ - "GET /orgs/{org}/actions/permissions/repositories": { - parameters: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runner-groups-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups": { - parameters: Endpoints["GET /orgs/{org}/actions/runner-groups"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runner-groups"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/runner-groups"]["response"]["data"]["runner_groups"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-repository-access-to-a-self-hosted-runner-group-in-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": { - parameters: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-in-a-group-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": { - parameters: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-an-organization - */ - "GET /orgs/{org}/actions/runners": { - parameters: Endpoints["GET /orgs/{org}/actions/runners"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runners"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-runner-applications-for-an-organization - */ - "GET /orgs/{org}/actions/runners/downloads": { - parameters: Endpoints["GET /orgs/{org}/actions/runners/downloads"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/runners/downloads"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-organization-secrets - */ - "GET /orgs/{org}/actions/secrets": { - parameters: Endpoints["GET /orgs/{org}/actions/secrets"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/secrets"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret - */ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": { - parameters: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"] & { - data: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/orgs#list-users-blocked-by-an-organization - */ - "GET /orgs/{org}/blocks": { - parameters: Endpoints["GET /orgs/{org}/blocks"]["parameters"]; - response: Endpoints["GET /orgs/{org}/blocks"]["response"]; - }; - /** - * @see https://docs.github.com/v3/orgs/#list-saml-sso-authorizations-for-an-organization - */ - "GET /orgs/{org}/credential-authorizations": { - parameters: Endpoints["GET /orgs/{org}/credential-authorizations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/credential-authorizations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-organization-events - */ - "GET /orgs/{org}/events": { - parameters: Endpoints["GET /orgs/{org}/events"]["parameters"]; - response: Endpoints["GET /orgs/{org}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/orgs#list-organization-webhooks - */ - "GET /orgs/{org}/hooks": { - parameters: Endpoints["GET /orgs/{org}/hooks"]["parameters"]; - response: Endpoints["GET /orgs/{org}/hooks"]["response"]; - }; - /** - * @see https://docs.github.com/v3/orgs/#list-app-installations-for-an-organization - */ - "GET /orgs/{org}/installations": { - parameters: Endpoints["GET /orgs/{org}/installations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/installations"]["response"] & { - data: Endpoints["GET /orgs/{org}/installations"]["response"]["data"]["installations"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/orgs#list-pending-organization-invitations - */ - "GET /orgs/{org}/invitations": { - parameters: Endpoints["GET /orgs/{org}/invitations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/orgs#list-organization-invitation-teams - */ - "GET /orgs/{org}/invitations/{invitation_id}/teams": { - parameters: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/v3/issues/#list-organization-issues-assigned-to-the-authenticated-user - */ - "GET /orgs/{org}/issues": { - parameters: Endpoints["GET /orgs/{org}/issues"]["parameters"]; - response: Endpoints["GET /orgs/{org}/issues"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/orgs#list-organization-members - */ - "GET /orgs/{org}/members": { - parameters: Endpoints["GET /orgs/{org}/members"]["parameters"]; - response: Endpoints["GET /orgs/{org}/members"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/migrations#list-organization-migrations - */ - "GET /orgs/{org}/migrations": { - parameters: Endpoints["GET /orgs/{org}/migrations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/migrations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/migrations#list-repositories-in-an-organization-migration - */ - "GET /orgs/{org}/migrations/{migration_id}/repositories": { - parameters: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["parameters"]; - response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/orgs#list-outside-collaborators-for-an-organization - */ - "GET /orgs/{org}/outside_collaborators": { - parameters: Endpoints["GET /orgs/{org}/outside_collaborators"]["parameters"]; - response: Endpoints["GET /orgs/{org}/outside_collaborators"]["response"]; - }; - /** - * @see https://docs.github.com/v3/projects/#list-organization-projects - */ - "GET /orgs/{org}/projects": { - parameters: Endpoints["GET /orgs/{org}/projects"]["parameters"]; - response: Endpoints["GET /orgs/{org}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/orgs#list-public-organization-members - */ - "GET /orgs/{org}/public_members": { - parameters: Endpoints["GET /orgs/{org}/public_members"]["parameters"]; - response: Endpoints["GET /orgs/{org}/public_members"]["response"]; - }; - /** - * @see https://docs.github.com/v3/repos/#list-organization-repositories - */ - "GET /orgs/{org}/repos": { - parameters: Endpoints["GET /orgs/{org}/repos"]["parameters"]; - response: Endpoints["GET /orgs/{org}/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-an-organization - */ - "GET /orgs/{org}/team-sync/groups": { - parameters: Endpoints["GET /orgs/{org}/team-sync/groups"]["parameters"]; - response: Endpoints["GET /orgs/{org}/team-sync/groups"]["response"] & { - data: Endpoints["GET /orgs/{org}/team-sync/groups"]["response"]["data"]["groups"]; - }; - }; - /** - * @see https://docs.github.com/v3/teams/#list-teams - */ - "GET /orgs/{org}/teams": { - parameters: Endpoints["GET /orgs/{org}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-discussions - */ - "GET /orgs/{org}/teams/{team_slug}/discussions": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-discussion-comments - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations - */ - "GET /orgs/{org}/teams/{team_slug}/invitations": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-team-members - */ - "GET /orgs/{org}/teams/{team_slug}/members": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["response"]; - }; - /** - * @see https://docs.github.com/v3/teams/#list-team-projects - */ - "GET /orgs/{org}/teams/{team_slug}/projects": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/v3/teams/#list-team-repositories - */ - "GET /orgs/{org}/teams/{team_slug}/repos": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team - */ - "GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings"]["response"] & { - data: Endpoints["GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings"]["response"]["data"]["groups"]; - }; - }; - /** - * @see https://docs.github.com/v3/teams/#list-child-teams - */ - "GET /orgs/{org}/teams/{team_slug}/teams": { - parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["parameters"]; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/projects#list-project-cards - */ - "GET /projects/columns/{column_id}/cards": { - parameters: Endpoints["GET /projects/columns/{column_id}/cards"]["parameters"]; - response: Endpoints["GET /projects/columns/{column_id}/cards"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/projects#list-project-collaborators - */ - "GET /projects/{project_id}/collaborators": { - parameters: Endpoints["GET /projects/{project_id}/collaborators"]["parameters"]; - response: Endpoints["GET /projects/{project_id}/collaborators"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/projects#list-project-columns - */ - "GET /projects/{project_id}/columns": { - parameters: Endpoints["GET /projects/{project_id}/columns"]["parameters"]; - response: Endpoints["GET /projects/{project_id}/columns"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-artifacts-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/artifacts": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"]["data"]["artifacts"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"]["data"]["runners"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-runner-applications-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners/downloads": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runners/downloads"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/downloads"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-workflow-runs-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"]["data"]["workflow_runs"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-workflow-run-artifacts - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"]["data"]["artifacts"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-jobs-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"]["data"]["jobs"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-repository-secrets - */ - "GET /repos/{owner}/{repo}/actions/secrets": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"]["data"]["secrets"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-repository-workflows - */ - "GET /repos/{owner}/{repo}/actions/workflows": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"]["data"]["workflows"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/actions#list-workflow-runs - */ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"]["data"]["workflow_runs"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-assignees - */ - "GET /repos/{owner}/{repo}/assignees": { - parameters: Endpoints["GET /repos/{owner}/{repo}/assignees"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/assignees"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-branches - */ - "GET /repos/{owner}/{repo}/branches": { - parameters: Endpoints["GET /repos/{owner}/{repo}/branches"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/branches"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/checks#list-check-run-annotations - */ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": { - parameters: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite - */ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"]["data"]["check_runs"]; - }; - }; - /** - * @see https://docs.github.com/v3/code-scanning/#list-code-scanning-alerts-for-a-repository - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts": { - parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["response"]; - }; - /** - * @see https://docs.github.com/v3/code-scanning/#list-recent-analyses - */ - "GET /repos/{owner}/{repo}/code-scanning/analyses": { - parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-repository-collaborators - */ - "GET /repos/{owner}/{repo}/collaborators": { - parameters: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-commit-comments-for-a-repository - */ - "GET /repos/{owner}/{repo}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-commit-comment - */ - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": { - parameters: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-commits - */ - "GET /repos/{owner}/{repo}/commits": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-branches-for-head-commit - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-commit-comments - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-pull-requests-associated-with-a-commit - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/checks#list-check-runs-for-a-git-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"]["data"]["check_runs"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"]["data"]["check_suites"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-commit-statuses-for-a-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/statuses": { - parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["response"]; - }; - /** - * @see https://docs.github.com/v3/repos/#list-repository-contributors - */ - "GET /repos/{owner}/{repo}/contributors": { - parameters: Endpoints["GET /repos/{owner}/{repo}/contributors"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/contributors"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-deployments - */ - "GET /repos/{owner}/{repo}/deployments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/deployments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/deployments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-deployment-statuses - */ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": { - parameters: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-repository-events - */ - "GET /repos/{owner}/{repo}/events": { - parameters: Endpoints["GET /repos/{owner}/{repo}/events"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-forks - */ - "GET /repos/{owner}/{repo}/forks": { - parameters: Endpoints["GET /repos/{owner}/{repo}/forks"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/forks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/git#list-matching-references - */ - "GET /repos/{owner}/{repo}/git/matching-refs/{ref}": { - parameters: Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-repository-webhooks - */ - "GET /repos/{owner}/{repo}/hooks": { - parameters: Endpoints["GET /repos/{owner}/{repo}/hooks"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/hooks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-repository-invitations - */ - "GET /repos/{owner}/{repo}/invitations": { - parameters: Endpoints["GET /repos/{owner}/{repo}/invitations"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/invitations"]["response"]; - }; - /** - * @see https://docs.github.com/v3/issues/#list-repository-issues - */ - "GET /repos/{owner}/{repo}/issues": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-issue-comments-for-a-repository - */ - "GET /repos/{owner}/{repo}/issues/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["response"]; - }; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-an-issue-comment - */ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-issue-events-for-a-repository - */ - "GET /repos/{owner}/{repo}/issues/events": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-issue-comments - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-issue-events - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/events": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-labels-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-timeline-events-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": { - parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-deploy-keys - */ - "GET /repos/{owner}/{repo}/keys": { - parameters: Endpoints["GET /repos/{owner}/{repo}/keys"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-labels-for-a-repository - */ - "GET /repos/{owner}/{repo}/labels": { - parameters: Endpoints["GET /repos/{owner}/{repo}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/labels"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-milestones - */ - "GET /repos/{owner}/{repo}/milestones": { - parameters: Endpoints["GET /repos/{owner}/{repo}/milestones"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/milestones"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/issues#list-labels-for-issues-in-a-milestone - */ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": { - parameters: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user - */ - "GET /repos/{owner}/{repo}/notifications": { - parameters: Endpoints["GET /repos/{owner}/{repo}/notifications"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/notifications"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-github-pages-builds - */ - "GET /repos/{owner}/{repo}/pages/builds": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["response"]; - }; - /** - * @see https://docs.github.com/v3/projects/#list-repository-projects - */ - "GET /repos/{owner}/{repo}/projects": { - parameters: Endpoints["GET /repos/{owner}/{repo}/projects"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/v3/pulls/#list-pull-requests - */ - "GET /repos/{owner}/{repo}/pulls": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/pulls#list-review-comments-in-a-repository - */ - "GET /repos/{owner}/{repo}/pulls/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["response"]; - }; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-pull-request-review-comment - */ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/pulls#list-review-comments-on-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/v3/pulls/#list-commits-on-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["response"]; - }; - /** - * @see https://docs.github.com/v3/pulls/#list-pull-requests-files - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/pulls#list-requested-reviewers-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"] & { - data: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]["data"]["users"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/pulls#list-reviews-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/pulls#list-comments-for-a-pull-request-review - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": { - parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-releases - */ - "GET /repos/{owner}/{repo}/releases": { - parameters: Endpoints["GET /repos/{owner}/{repo}/releases"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-release-assets - */ - "GET /repos/{owner}/{repo}/releases/{release_id}/assets": { - parameters: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-stargazers - */ - "GET /repos/{owner}/{repo}/stargazers": { - parameters: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-watchers - */ - "GET /repos/{owner}/{repo}/subscribers": { - parameters: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["response"]; - }; - /** - * @see https://docs.github.com/v3/repos/#list-repository-tags - */ - "GET /repos/{owner}/{repo}/tags": { - parameters: Endpoints["GET /repos/{owner}/{repo}/tags"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/tags"]["response"]; - }; - /** - * @see https://docs.github.com/v3/repos/#list-repository-teams - */ - "GET /repos/{owner}/{repo}/teams": { - parameters: Endpoints["GET /repos/{owner}/{repo}/teams"]["parameters"]; - response: Endpoints["GET /repos/{owner}/{repo}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/v3/repos/#list-public-repositories - */ - "GET /repositories": { - parameters: Endpoints["GET /repositories"]["parameters"]; - response: Endpoints["GET /repositories"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-provisioned-scim groups-for-an-enterprise - */ - "GET /scim/v2/enterprises/{enterprise}/Groups": { - parameters: Endpoints["GET /scim/v2/enterprises/{enterprise}/Groups"]["parameters"]; - response: Endpoints["GET /scim/v2/enterprises/{enterprise}/Groups"]["response"] & { - data: Endpoints["GET /scim/v2/enterprises/{enterprise}/Groups"]["response"]["data"]["Resources"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-scim-provisioned-identities-for-an-enterprise - */ - "GET /scim/v2/enterprises/{enterprise}/Users": { - parameters: Endpoints["GET /scim/v2/enterprises/{enterprise}/Users"]["parameters"]; - response: Endpoints["GET /scim/v2/enterprises/{enterprise}/Users"]["response"] & { - data: Endpoints["GET /scim/v2/enterprises/{enterprise}/Users"]["response"]["data"]["Resources"]; - }; - }; - /** - * @see https://docs.github.com/v3/scim/#list-scim-provisioned-identities - */ - "GET /scim/v2/organizations/{org}/Users": { - parameters: Endpoints["GET /scim/v2/organizations/{org}/Users"]["parameters"]; - response: Endpoints["GET /scim/v2/organizations/{org}/Users"]["response"] & { - data: Endpoints["GET /scim/v2/organizations/{org}/Users"]["response"]["data"]["Resources"]; - }; - }; - /** - * @see https://docs.github.com/v3/search/#search-code - */ - "GET /search/code": { - parameters: Endpoints["GET /search/code"]["parameters"]; - response: Endpoints["GET /search/code"]["response"] & { - data: Endpoints["GET /search/code"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/v3/search/#search-commits - */ - "GET /search/commits": { - parameters: Endpoints["GET /search/commits"]["parameters"]; - response: Endpoints["GET /search/commits"]["response"] & { - data: Endpoints["GET /search/commits"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/v3/search/#search-issues-and-pull-requests - */ - "GET /search/issues": { - parameters: Endpoints["GET /search/issues"]["parameters"]; - response: Endpoints["GET /search/issues"]["response"] & { - data: Endpoints["GET /search/issues"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/v3/search/#search-labels - */ - "GET /search/labels": { - parameters: Endpoints["GET /search/labels"]["parameters"]; - response: Endpoints["GET /search/labels"]["response"] & { - data: Endpoints["GET /search/labels"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/v3/search/#search-repositories - */ - "GET /search/repositories": { - parameters: Endpoints["GET /search/repositories"]["parameters"]; - response: Endpoints["GET /search/repositories"]["response"] & { - data: Endpoints["GET /search/repositories"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/v3/search/#search-topics - */ - "GET /search/topics": { - parameters: Endpoints["GET /search/topics"]["parameters"]; - response: Endpoints["GET /search/topics"]["response"] & { - data: Endpoints["GET /search/topics"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/v3/search/#search-users - */ - "GET /search/users": { - parameters: Endpoints["GET /search/users"]["parameters"]; - response: Endpoints["GET /search/users"]["response"] & { - data: Endpoints["GET /search/users"]["response"]["data"]["items"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-discussions-legacy - */ - "GET /teams/{team_id}/discussions": { - parameters: Endpoints["GET /teams/{team_id}/discussions"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/discussions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-discussion-comments-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments": { - parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["response"]; - }; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": { - parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/reactions": { - parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations-legacy - */ - "GET /teams/{team_id}/invitations": { - parameters: Endpoints["GET /teams/{team_id}/invitations"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-team-members-legacy - */ - "GET /teams/{team_id}/members": { - parameters: Endpoints["GET /teams/{team_id}/members"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/members"]["response"]; - }; - /** - * @see https://docs.github.com/v3/teams/#list-team-projects-legacy - */ - "GET /teams/{team_id}/projects": { - parameters: Endpoints["GET /teams/{team_id}/projects"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/v3/teams/#list-team-repositories-legacy - */ - "GET /teams/{team_id}/repos": { - parameters: Endpoints["GET /teams/{team_id}/repos"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team-legacy - */ - "GET /teams/{team_id}/team-sync/group-mappings": { - parameters: Endpoints["GET /teams/{team_id}/team-sync/group-mappings"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/team-sync/group-mappings"]["response"] & { - data: Endpoints["GET /teams/{team_id}/team-sync/group-mappings"]["response"]["data"]["groups"]; - }; - }; - /** - * @see https://docs.github.com/v3/teams/#list-child-teams-legacy - */ - "GET /teams/{team_id}/teams": { - parameters: Endpoints["GET /teams/{team_id}/teams"]["parameters"]; - response: Endpoints["GET /teams/{team_id}/teams"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-users-blocked-by-the-authenticated-user - */ - "GET /user/blocks": { - parameters: Endpoints["GET /user/blocks"]["parameters"]; - response: Endpoints["GET /user/blocks"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-email-addresses-for-the-authenticated-user - */ - "GET /user/emails": { - parameters: Endpoints["GET /user/emails"]["parameters"]; - response: Endpoints["GET /user/emails"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-followers-of-the-authenticated-user - */ - "GET /user/followers": { - parameters: Endpoints["GET /user/followers"]["parameters"]; - response: Endpoints["GET /user/followers"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-the-people-the-authenticated-user-follows - */ - "GET /user/following": { - parameters: Endpoints["GET /user/following"]["parameters"]; - response: Endpoints["GET /user/following"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-the-authenticated-user - */ - "GET /user/gpg_keys": { - parameters: Endpoints["GET /user/gpg_keys"]["parameters"]; - response: Endpoints["GET /user/gpg_keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/apps#list-app-installations-accessible-to-the-user-access-token - */ - "GET /user/installations": { - parameters: Endpoints["GET /user/installations"]["parameters"]; - response: Endpoints["GET /user/installations"]["response"] & { - data: Endpoints["GET /user/installations"]["response"]["data"]["installations"]; - }; - }; - /** - * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-user-access-token - */ - "GET /user/installations/{installation_id}/repositories": { - parameters: Endpoints["GET /user/installations/{installation_id}/repositories"]["parameters"]; - response: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"] & { - data: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"]["data"]["repositories"]; - }; - }; - /** - * @see https://docs.github.com/v3/issues/#list-user-account-issues-assigned-to-the-authenticated-user - */ - "GET /user/issues": { - parameters: Endpoints["GET /user/issues"]["parameters"]; - response: Endpoints["GET /user/issues"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-public-ssh-keys-for-the-authenticated-user - */ - "GET /user/keys": { - parameters: Endpoints["GET /user/keys"]["parameters"]; - response: Endpoints["GET /user/keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user - */ - "GET /user/marketplace_purchases": { - parameters: Endpoints["GET /user/marketplace_purchases"]["parameters"]; - response: Endpoints["GET /user/marketplace_purchases"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user-stubbed - */ - "GET /user/marketplace_purchases/stubbed": { - parameters: Endpoints["GET /user/marketplace_purchases/stubbed"]["parameters"]; - response: Endpoints["GET /user/marketplace_purchases/stubbed"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/orgs#list-organization-memberships-for-the-authenticated-user - */ - "GET /user/memberships/orgs": { - parameters: Endpoints["GET /user/memberships/orgs"]["parameters"]; - response: Endpoints["GET /user/memberships/orgs"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/migrations#list-user-migrations - */ - "GET /user/migrations": { - parameters: Endpoints["GET /user/migrations"]["parameters"]; - response: Endpoints["GET /user/migrations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/migrations#list-repositories-for-a-user-migration - */ - "GET /user/migrations/{migration_id}/repositories": { - parameters: Endpoints["GET /user/migrations/{migration_id}/repositories"]["parameters"]; - response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"]; - }; - /** - * @see https://docs.github.com/v3/orgs/#list-organizations-for-the-authenticated-user - */ - "GET /user/orgs": { - parameters: Endpoints["GET /user/orgs"]["parameters"]; - response: Endpoints["GET /user/orgs"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-public-email-addresses-for-the-authenticated-user - */ - "GET /user/public_emails": { - parameters: Endpoints["GET /user/public_emails"]["parameters"]; - response: Endpoints["GET /user/public_emails"]["response"]; - }; - /** - * @see https://docs.github.com/v3/repos/#list-repositories-for-the-authenticated-user - */ - "GET /user/repos": { - parameters: Endpoints["GET /user/repos"]["parameters"]; - response: Endpoints["GET /user/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/repos#list-repository-invitations-for-the-authenticated-user - */ - "GET /user/repository_invitations": { - parameters: Endpoints["GET /user/repository_invitations"]["parameters"]; - response: Endpoints["GET /user/repository_invitations"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-the-authenticated-user - */ - "GET /user/starred": { - parameters: Endpoints["GET /user/starred"]["parameters"]; - response: Endpoints["GET /user/starred"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-the-authenticated-user - */ - "GET /user/subscriptions": { - parameters: Endpoints["GET /user/subscriptions"]["parameters"]; - response: Endpoints["GET /user/subscriptions"]["response"]; - }; - /** - * @see https://docs.github.com/v3/teams/#list-teams-for-the-authenticated-user - */ - "GET /user/teams": { - parameters: Endpoints["GET /user/teams"]["parameters"]; - response: Endpoints["GET /user/teams"]["response"]; - }; - /** - * @see https://docs.github.com/v3/users/#list-users - */ - "GET /users": { - parameters: Endpoints["GET /users"]["parameters"]; - response: Endpoints["GET /users"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-events-for-the-authenticated-user - */ - "GET /users/{username}/events": { - parameters: Endpoints["GET /users/{username}/events"]["parameters"]; - response: Endpoints["GET /users/{username}/events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-organization-events-for-the-authenticated-user - */ - "GET /users/{username}/events/orgs/{org}": { - parameters: Endpoints["GET /users/{username}/events/orgs/{org}"]["parameters"]; - response: Endpoints["GET /users/{username}/events/orgs/{org}"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-user - */ - "GET /users/{username}/events/public": { - parameters: Endpoints["GET /users/{username}/events/public"]["parameters"]; - response: Endpoints["GET /users/{username}/events/public"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-followers-of-a-user - */ - "GET /users/{username}/followers": { - parameters: Endpoints["GET /users/{username}/followers"]["parameters"]; - response: Endpoints["GET /users/{username}/followers"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-the-people-a-user-follows - */ - "GET /users/{username}/following": { - parameters: Endpoints["GET /users/{username}/following"]["parameters"]; - response: Endpoints["GET /users/{username}/following"]["response"]; - }; - /** - * @see https://docs.github.com/v3/gists/#list-gists-for-a-user - */ - "GET /users/{username}/gists": { - parameters: Endpoints["GET /users/{username}/gists"]["parameters"]; - response: Endpoints["GET /users/{username}/gists"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-a-user - */ - "GET /users/{username}/gpg_keys": { - parameters: Endpoints["GET /users/{username}/gpg_keys"]["parameters"]; - response: Endpoints["GET /users/{username}/gpg_keys"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/users#list-public-keys-for-a-user - */ - "GET /users/{username}/keys": { - parameters: Endpoints["GET /users/{username}/keys"]["parameters"]; - response: Endpoints["GET /users/{username}/keys"]["response"]; - }; - /** - * @see https://docs.github.com/v3/orgs/#list-organizations-for-a-user - */ - "GET /users/{username}/orgs": { - parameters: Endpoints["GET /users/{username}/orgs"]["parameters"]; - response: Endpoints["GET /users/{username}/orgs"]["response"]; - }; - /** - * @see https://docs.github.com/v3/projects/#list-user-projects - */ - "GET /users/{username}/projects": { - parameters: Endpoints["GET /users/{username}/projects"]["parameters"]; - response: Endpoints["GET /users/{username}/projects"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-events-received-by-the-authenticated-user - */ - "GET /users/{username}/received_events": { - parameters: Endpoints["GET /users/{username}/received_events"]["parameters"]; - response: Endpoints["GET /users/{username}/received_events"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-events-received-by-a-user - */ - "GET /users/{username}/received_events/public": { - parameters: Endpoints["GET /users/{username}/received_events/public"]["parameters"]; - response: Endpoints["GET /users/{username}/received_events/public"]["response"]; - }; - /** - * @see https://docs.github.com/v3/repos/#list-repositories-for-a-user - */ - "GET /users/{username}/repos": { - parameters: Endpoints["GET /users/{username}/repos"]["parameters"]; - response: Endpoints["GET /users/{username}/repos"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-a-user - */ - "GET /users/{username}/starred": { - parameters: Endpoints["GET /users/{username}/starred"]["parameters"]; - response: Endpoints["GET /users/{username}/starred"]["response"]; - }; - /** - * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-a-user - */ - "GET /users/{username}/subscriptions": { - parameters: Endpoints["GET /users/{username}/subscriptions"]["parameters"]; - response: Endpoints["GET /users/{username}/subscriptions"]["response"]; - }; -} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts deleted file mode 100644 index 44fd2341c..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Octokit } from "@octokit/core"; -import { PaginateInterface } from "./types"; -export { PaginateInterface } from "./types"; -export { composePaginateRest } from "./compose-paginate"; -/** - * @param octokit Octokit instance - * @param options Options passed to Octokit constructor - */ -export declare function paginateRest(octokit: Octokit): { - paginate: PaginateInterface; -}; -export declare namespace paginateRest { - var VERSION: string; -} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts deleted file mode 100644 index 276f6d96e..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Octokit } from "@octokit/core"; -import { RequestInterface, RequestParameters, Route } from "./types"; -export declare function iterator(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters): { - [Symbol.asyncIterator]: () => { - next(): Promise<{ - done: boolean; - value?: undefined; - } | { - value: import("@octokit/types/dist-types/OctokitResponse").OctokitResponse; - done?: undefined; - }>; - }; -}; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts deleted file mode 100644 index f948a78f4..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Some “list” response that can be paginated have a different response structure - * - * They have a `total_count` key in the response (search also has `incomplete_results`, - * /installation/repositories also has `repository_selection`), as well as a key with - * the list of the items which name varies from endpoint to endpoint. - * - * Octokit normalizes these responses so that paginated results are always returned following - * the same structure. One challenge is that if the list response has only one page, no Link - * header is provided, so this header alone is not sufficient to check wether a response is - * paginated or not. - * - * We check if a "total_count" key is present in the response data, but also make sure that - * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would - * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref - */ -import { OctokitResponse } from "./types"; -export declare function normalizePaginatedListResponse(response: OctokitResponse): OctokitResponse; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts deleted file mode 100644 index 774c60414..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Octokit } from "@octokit/core"; -import { MapFunction, PaginationResults, RequestParameters, Route, RequestInterface } from "./types"; -export declare function paginate(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters, mapFn?: MapFunction): Promise>; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts deleted file mode 100644 index 3e35fbee1..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts +++ /dev/null @@ -1,241 +0,0 @@ -import { Octokit } from "@octokit/core"; -import * as OctokitTypes from "@octokit/types"; -export { EndpointOptions, RequestInterface, OctokitResponse, RequestParameters, Route, } from "@octokit/types"; -import { PaginatingEndpoints } from "./generated/paginating-endpoints"; -declare type KnownKeys = Extract<{ - [K in keyof T]: string extends K ? never : number extends K ? never : K; -} extends { - [_ in keyof T]: infer U; -} ? U : never, keyof T>; -declare type KeysMatching = { - [K in keyof T]: T[K] extends V ? K : never; -}[keyof T]; -declare type KnownKeysMatching = KeysMatching>, V>; -declare type GetResultsType = T extends { - data: any[]; -} ? T["data"] : T extends { - data: object; -} ? T["data"][KnownKeysMatching] : never; -declare type NormalizeResponse = T & { - data: GetResultsType; -}; -declare type DataType = "data" extends keyof T ? T["data"] : unknown; -export interface MapFunction { - (response: OctokitTypes.OctokitResponse>, done: () => void): R[]; -} -export declare type PaginationResults = T[]; -export interface PaginateInterface { - /** - * Paginate a request using endpoint options and map each response to a custom array - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - * @param {function} mapFn Optional method to map each response to a custom array - */ - (options: OctokitTypes.EndpointOptions, mapFn: MapFunction): Promise>; - /** - * Paginate a request using endpoint options - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (options: OctokitTypes.EndpointOptions): Promise>; - /** - * Paginate a request using a known endpoint route string and map each response to a custom array - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {function} mapFn Optional method to map each response to a custom array - */ - (route: R, mapFn: (response: PaginatingEndpoints[R]["response"], done: () => void) => MR): Promise; - /** - * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - * @param {function} mapFn Optional method to map each response to a custom array - */ - (route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: (response: PaginatingEndpoints[R]["response"], done: () => void) => MR): Promise; - /** - * Paginate a request using an known endpoint route string - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>; - /** - * Paginate a request using an unknown endpoint route string - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise; - /** - * Paginate a request using an endpoint method and a map function - * - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {function} mapFn? Optional method to map each response to a custom array - */ - (request: R, mapFn: (response: NormalizeResponse>, done: () => void) => MR): Promise; - /** - * Paginate a request using an endpoint method, parameters, and a map function - * - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - * @param {function} mapFn? Optional method to map each response to a custom array - */ - (request: R, parameters: Parameters[0], mapFn: (response: NormalizeResponse>, done?: () => void) => MR): Promise; - /** - * Paginate a request using an endpoint method and parameters - * - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (request: R, parameters?: Parameters[0]): Promise>["data"]>; - iterator: { - /** - * Get an async iterator to paginate a request using endpoint options - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (EndpointOptions: OctokitTypes.EndpointOptions): AsyncIterableIterator>>; - /** - * Get an async iterator to paginate a request using a known endpoint route string and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterableIterator>>; - /** - * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterableIterator>>; - /** - * Get an async iterator to paginate a request using a request method and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * @param {string} request `@octokit/request` or `octokit.request` method - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (request: R, parameters?: Parameters[0]): AsyncIterableIterator>>; - }; -} -export interface ComposePaginateInterface { - /** - * Paginate a request using endpoint options and map each response to a custom array - * - * @param {object} octokit Octokit instance - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - * @param {function} mapFn Optional method to map each response to a custom array - */ - (octokit: Octokit, options: OctokitTypes.EndpointOptions, mapFn: MapFunction): Promise>; - /** - * Paginate a request using endpoint options - * - * @param {object} octokit Octokit instance - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (octokit: Octokit, options: OctokitTypes.EndpointOptions): Promise>; - /** - * Paginate a request using a known endpoint route string and map each response to a custom array - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {function} mapFn Optional method to map each response to a custom array - */ - (octokit: Octokit, route: R, mapFn: (response: PaginatingEndpoints[R]["response"], done: () => void) => MR): Promise; - /** - * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - * @param {function} mapFn Optional method to map each response to a custom array - */ - (octokit: Octokit, route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: (response: PaginatingEndpoints[R]["response"], done: () => void) => MR): Promise; - /** - * Paginate a request using an known endpoint route string - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>; - /** - * Paginate a request using an unknown endpoint route string - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise; - /** - * Paginate a request using an endpoint method and a map function - * - * @param {object} octokit Octokit instance - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {function} mapFn? Optional method to map each response to a custom array - */ - (octokit: Octokit, request: R, mapFn: (response: NormalizeResponse>, done: () => void) => MR): Promise; - /** - * Paginate a request using an endpoint method, parameters, and a map function - * - * @param {object} octokit Octokit instance - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - * @param {function} mapFn? Optional method to map each response to a custom array - */ - (octokit: Octokit, request: R, parameters: Parameters[0], mapFn: (response: NormalizeResponse>, done?: () => void) => MR): Promise; - /** - * Paginate a request using an endpoint method and parameters - * - * @param {object} octokit Octokit instance - * @param {string} request Request method (`octokit.request` or `@octokit/request`) - * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (octokit: Octokit, request: R, parameters?: Parameters[0]): Promise>["data"]>; - iterator: { - /** - * Get an async iterator to paginate a request using endpoint options - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * - * @param {object} octokit Octokit instance - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (octokit: Octokit, EndpointOptions: OctokitTypes.EndpointOptions): AsyncIterableIterator>>; - /** - * Get an async iterator to paginate a request using a known endpoint route string and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterableIterator>>; - /** - * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * - * @param {object} octokit Octokit instance - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterableIterator>>; - /** - * Get an async iterator to paginate a request using a request method and optional parameters - * - * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of - * - * @param {object} octokit Octokit instance - * @param {string} request `@octokit/request` or `octokit.request` method - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (octokit: Octokit, request: R, parameters?: Parameters[0]): AsyncIterableIterator>>; - }; -} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts deleted file mode 100644 index a4e08e8e2..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "2.6.2"; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js b/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js deleted file mode 100644 index 8d3e219e5..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js +++ /dev/null @@ -1,111 +0,0 @@ -const VERSION = "2.6.2"; - -/** - * Some “list” response that can be paginated have a different response structure - * - * They have a `total_count` key in the response (search also has `incomplete_results`, - * /installation/repositories also has `repository_selection`), as well as a key with - * the list of the items which name varies from endpoint to endpoint. - * - * Octokit normalizes these responses so that paginated results are always returned following - * the same structure. One challenge is that if the list response has only one page, no Link - * header is provided, so this header alone is not sufficient to check wether a response is - * paginated or not. - * - * We check if a "total_count" key is present in the response data, but also make sure that - * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would - * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref - */ -function normalizePaginatedListResponse(response) { - const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); - if (!responseNeedsNormalization) - return response; - // keep the additional properties intact as there is currently no other way - // to retrieve the same information. - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - response.data.total_count = totalCount; - return response; -} - -function iterator(octokit, route, parameters) { - const options = typeof route === "function" - ? route.endpoint(parameters) - : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) - return { done: true }; - const response = await requestMethod({ method, url, headers }); - const normalizedResponse = normalizePaginatedListResponse(response); - // `response.headers.link` format: - // '; rel="next", ; rel="last"' - // sets `url` to undefined if "next" URL is not present or `link` header is not set - url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; - return { value: normalizedResponse }; - }, - }), - }; -} - -function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = undefined; - } - return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); -} -function gather(octokit, results, iterator, mapFn) { - return iterator.next().then((result) => { - if (result.done) { - return results; - } - let earlyExit = false; - function done() { - earlyExit = true; - } - results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); - if (earlyExit) { - return results; - } - return gather(octokit, results, iterator, mapFn); - }); -} - -const composePaginateRest = Object.assign(paginate, { - iterator, -}); - -/** - * @param octokit Octokit instance - * @param options Options passed to Octokit constructor - */ -function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit), - }), - }; -} -paginateRest.VERSION = VERSION; - -export { composePaginateRest, paginateRest }; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map b/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map deleted file mode 100644 index 22f4c04d8..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/normalize-paginated-list-response.js","../dist-src/iterator.js","../dist-src/paginate.js","../dist-src/compose-paginate.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"2.6.2\";\n","/**\n * Some “list” response that can be paginated have a different response structure\n *\n * They have a `total_count` key in the response (search also has `incomplete_results`,\n * /installation/repositories also has `repository_selection`), as well as a key with\n * the list of the items which name varies from endpoint to endpoint.\n *\n * Octokit normalizes these responses so that paginated results are always returned following\n * the same structure. One challenge is that if the list response has only one page, no Link\n * header is provided, so this header alone is not sufficient to check wether a response is\n * paginated or not.\n *\n * We check if a \"total_count\" key is present in the response data, but also make sure that\n * a \"url\" property is not, as the \"Get the combined status for a specific ref\" endpoint would\n * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\n */\nexport function normalizePaginatedListResponse(response) {\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n // keep the additional properties intact as there is currently no other way\n // to retrieve the same information.\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n","import { normalizePaginatedListResponse } from \"./normalize-paginated-list-response\";\nexport function iterator(octokit, route, parameters) {\n const options = typeof route === \"function\"\n ? route.endpoint(parameters)\n : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n // `response.headers.link` format:\n // '; rel=\"next\", ; rel=\"last\"'\n // sets `url` to undefined if \"next\" URL is not present or `link` header is not set\n url = ((normalizedResponse.headers.link || \"\").match(/<([^>]+)>;\\s*rel=\"next\"/) || [])[1];\n return { value: normalizedResponse };\n },\n }),\n };\n}\n","import { iterator } from \"./iterator\";\nexport function paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = undefined;\n }\n return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);\n}\nfunction gather(octokit, results, iterator, mapFn) {\n return iterator.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator, mapFn);\n });\n}\n","import { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport const composePaginateRest = Object.assign(paginate, {\n iterator,\n});\n","import { VERSION } from \"./version\";\nimport { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport { composePaginateRest } from \"./compose-paginate\";\n/**\n * @param octokit Octokit instance\n * @param options Options passed to Octokit constructor\n */\nexport function paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit),\n }),\n };\n}\npaginateRest.VERSION = VERSION;\n"],"names":[],"mappings":"AAAO,MAAM,OAAO,GAAG,mBAAmB;;ACA1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,8BAA8B,CAAC,QAAQ,EAAE;AACzD,IAAI,MAAM,0BAA0B,GAAG,aAAa,IAAI,QAAQ,CAAC,IAAI,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnG,IAAI,IAAI,CAAC,0BAA0B;AACnC,QAAQ,OAAO,QAAQ,CAAC;AACxB;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC/D,IAAI,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC;AACnE,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC5C,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC9C,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7C,IAAI,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,IAAI,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE;AAClD,QAAQ,QAAQ,CAAC,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;AAC7D,KAAK;AACL,IAAI,IAAI,OAAO,mBAAmB,KAAK,WAAW,EAAE;AACpD,QAAQ,QAAQ,CAAC,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;AACjE,KAAK;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC3C,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;;ACtCM,SAAS,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;AACrD,IAAI,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,UAAU;AAC/C,UAAU,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;AACpC,UAAU,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACtD,IAAI,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;AAChF,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACpC,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AAC1B,IAAI,OAAO;AACX,QAAQ,CAAC,MAAM,CAAC,aAAa,GAAG,OAAO;AACvC,YAAY,MAAM,IAAI,GAAG;AACzB,gBAAgB,IAAI,CAAC,GAAG;AACxB,oBAAoB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC1C,gBAAgB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/E,gBAAgB,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAAC;AACpF;AACA;AACA;AACA,gBAAgB,GAAG,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,yBAAyB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1G,gBAAgB,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;AACrD,aAAa;AACb,SAAS,CAAC;AACV,KAAK,CAAC;AACN,CAAC;;ACvBM,SAAS,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;AAC5D,IAAI,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AAC1C,QAAQ,KAAK,GAAG,UAAU,CAAC;AAC3B,QAAQ,UAAU,GAAG,SAAS,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACpG,CAAC;AACD,SAAS,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;AACnD,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AAC5C,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE;AACzB,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,SAAS,GAAG,KAAK,CAAC;AAC9B,QAAQ,SAAS,IAAI,GAAG;AACxB,YAAY,SAAS,GAAG,IAAI,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxF,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACzD,KAAK,CAAC,CAAC;AACP,CAAC;;ACrBW,MAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC3D,IAAI,QAAQ;AACZ,CAAC,CAAC;;ACAF;AACA;AACA;AACA;AACA,AAAO,SAAS,YAAY,CAAC,OAAO,EAAE;AACtC,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAC9D,YAAY,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AAClD,SAAS,CAAC;AACV,KAAK,CAAC;AACN,CAAC;AACD,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/plugin-paginate-rest/package.json b/node_modules/@octokit/plugin-paginate-rest/package.json deleted file mode 100644 index 60ebd691f..000000000 --- a/node_modules/@octokit/plugin-paginate-rest/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_from": "@octokit/plugin-paginate-rest@^2.2.3", - "_id": "@octokit/plugin-paginate-rest@2.6.2", - "_inBundle": false, - "_integrity": "sha512-3Dy7/YZAwdOaRpGQoNHPeT0VU1fYLpIUdPyvR37IyFLgd6XSij4j9V/xN/+eSjF2KKvmfIulEh9LF1tRPjIiDA==", - "_location": "/@octokit/plugin-paginate-rest", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/plugin-paginate-rest@^2.2.3", - "name": "@octokit/plugin-paginate-rest", - "escapedName": "@octokit%2fplugin-paginate-rest", - "scope": "@octokit", - "rawSpec": "^2.2.3", - "saveSpec": null, - "fetchSpec": "^2.2.3" - }, - "_requiredBy": [ - "/@actions/github" - ], - "_resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.6.2.tgz", - "_shasum": "45d13dbf5ff8aed54f1a3716b1d57fdc62720c5f", - "_spec": "@octokit/plugin-paginate-rest@^2.2.3", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@actions\\github", - "bugs": { - "url": "https://github.com/octokit/plugin-paginate-rest.js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@octokit/types": "^6.0.1" - }, - "deprecated": false, - "description": "Octokit plugin to paginate REST API endpoint responses", - "devDependencies": { - "@octokit/core": "^3.0.0", - "@octokit/plugin-rest-endpoint-methods": "^4.0.0", - "@pika/pack": "^0.5.0", - "@pika/plugin-build-node": "^0.9.0", - "@pika/plugin-build-web": "^0.9.0", - "@pika/plugin-ts-standard-pkg": "^0.9.0", - "@types/fetch-mock": "^7.3.1", - "@types/jest": "^26.0.0", - "@types/node": "^14.0.4", - "fetch-mock": "^9.0.0", - "jest": "^26.0.1", - "npm-run-all": "^4.1.5", - "prettier": "^2.0.4", - "semantic-release": "^17.0.0", - "semantic-release-plugin-update-version-in-files": "^1.0.0", - "ts-jest": "^26.0.0", - "typescript": "^4.0.2" - }, - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/octokit/plugin-paginate-rest.js#readme", - "keywords": [ - "github", - "api", - "sdk", - "toolkit" - ], - "license": "MIT", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "@octokit/plugin-paginate-rest", - "peerDependencies": { - "@octokit/core": ">=2" - }, - "pika": true, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/plugin-paginate-rest.js.git" - }, - "sideEffects": false, - "source": "dist-src/index.js", - "types": "dist-types/index.d.ts", - "version": "2.6.2" -} diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE b/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE deleted file mode 100644 index 57bee5f18..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/README.md b/node_modules/@octokit/plugin-rest-endpoint-methods/README.md deleted file mode 100644 index 0658dee6e..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# plugin-rest-endpoint-methods.js - -> Octokit plugin adding one method for all of api.github.com REST API endpoints - -[![@latest](https://img.shields.io/npm/v/@octokit/plugin-rest-endpoint-methods.svg)](https://www.npmjs.com/package/@octokit/plugin-rest-endpoint-methods) -[![Build Status](https://github.com/octokit/plugin-rest-endpoint-methods.js/workflows/Test/badge.svg)](https://github.com/octokit/plugin-rest-endpoint-methods.js/actions?workflow=Test) - -## Usage - - - - - - -
-Browsers - - -Load `@octokit/plugin-rest-endpoint-methods` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [cdn.skypack.dev](https://cdn.skypack.dev) - -```html - -``` - -
-Node - - -Install with `npm install @octokit/core @octokit/plugin-rest-endpoint-methods`. Optionally replace `@octokit/core` with a compatible module - -```js -const { Octokit } = require("@octokit/core"); -const { - restEndpointMethods, -} = require("@octokit/plugin-rest-endpoint-methods"); -``` - -
- -```js -const MyOctokit = Octokit.plugin(restEndpointMethods); -const octokit = new MyOctokit({ auth: "secret123" }); - -// https://developer.github.com/v3/users/#get-the-authenticated-user -octokit.users.getAuthenticated(); -``` - -There is one method for each REST API endpoint documented at [https://developer.github.com/v3](https://developer.github.com/v3). All endpoint methods are documented in the [docs/](docs/) folder, e.g. [docs/users/getAuthenticated.md](docs/users/getAuthenticated.md) - -## TypeScript - -Parameter and response types for all endpoint methods exported as `{ RestEndpointMethodTypes }`. - -Example - -```ts -import { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods"; - -type UpdateLabelParameters = RestEndpointMethodTypes["issues"]["updateLabel"]["parameters"]; -type UpdateLabelResponse = RestEndpointMethodTypes["issues"]["updateLabel"]["response"]; -``` - -## Contributing - -See [CONTRIBUTING.md](CONTRIBUTING.md) - -## License - -[MIT](LICENSE) diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js deleted file mode 100644 index de56ad025..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js +++ /dev/null @@ -1,1133 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -const Endpoints = { - actions: { - addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], - cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"], - createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], - createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"], - deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"], - deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"], - disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"], - downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"], - downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"], - downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"], - enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], - getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"], - getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"], - getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"], - getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"], - getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], - getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, { - renamed: ["actions", "getGithubActionsPermissionsRepository"] - }], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"], - getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"], - getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"], - listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"], - listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], - listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], - listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"], - listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"], - listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"], - listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], - listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"], - listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"], - listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], - setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], - setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"], - setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"], - setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"], - setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"], - setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"] - }, - activity: { - checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], - deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"], - getFeeds: ["GET /feeds"], - getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], - getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"], - listEventsForAuthenticatedUser: ["GET /users/{username}/events"], - listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"], - listPublicEvents: ["GET /events"], - listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], - listPublicEventsForUser: ["GET /users/{username}/events/public"], - listPublicOrgEvents: ["GET /orgs/{org}/events"], - listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"], - listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"], - listReposStarredByAuthenticatedUser: ["GET /user/starred"], - listReposStarredByUser: ["GET /users/{username}/starred"], - listReposWatchedByUser: ["GET /users/{username}/subscriptions"], - listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], - listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], - listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], - markNotificationsAsRead: ["PUT /notifications"], - markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], - markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], - setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"], - starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], - unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] - }, - apps: { - addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"], - checkToken: ["POST /applications/{client_id}/token"], - createContentAttachment: ["POST /content_references/{content_reference_id}/attachments", { - mediaType: { - previews: ["corsair"] - } - }], - createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"], - deleteAuthorization: ["DELETE /applications/{client_id}/grant"], - deleteInstallation: ["DELETE /app/installations/{installation_id}"], - deleteToken: ["DELETE /applications/{client_id}/token"], - getAuthenticated: ["GET /app"], - getBySlug: ["GET /apps/{app_slug}"], - getInstallation: ["GET /app/installations/{installation_id}"], - getOrgInstallation: ["GET /orgs/{org}/installation"], - getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"], - getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"], - getUserInstallation: ["GET /users/{username}/installation"], - getWebhookConfigForApp: ["GET /app/hook/config"], - listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"], - listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"], - listInstallations: ["GET /app/installations"], - listInstallationsForAuthenticatedUser: ["GET /user/installations"], - listPlans: ["GET /marketplace_listing/plans"], - listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], - listReposAccessibleToInstallation: ["GET /installation/repositories"], - listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"], - removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"], - resetToken: ["PATCH /applications/{client_id}/token"], - revokeInstallationAccessToken: ["DELETE /installation/token"], - suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"], - updateWebhookConfigForApp: ["PATCH /app/hook/config"] - }, - billing: { - getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"], - getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"], - getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"], - getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"] - }, - checks: { - create: ["POST /repos/{owner}/{repo}/check-runs"], - createSuite: ["POST /repos/{owner}/{repo}/check-suites"], - get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], - getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"], - listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"], - listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"], - setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"], - update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] - }, - codeScanning: { - getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, { - renamedParameters: { - alert_id: "alert_number" - } - }], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"], - uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] - }, - codesOfConduct: { - getAllCodesOfConduct: ["GET /codes_of_conduct", { - mediaType: { - previews: ["scarlet-witch"] - } - }], - getConductCode: ["GET /codes_of_conduct/{key}", { - mediaType: { - previews: ["scarlet-witch"] - } - }], - getForRepo: ["GET /repos/{owner}/{repo}/community/code_of_conduct", { - mediaType: { - previews: ["scarlet-witch"] - } - }] - }, - emojis: { - get: ["GET /emojis"] - }, - enterpriseAdmin: { - disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], - enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], - getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"], - getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"], - listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"], - setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"], - setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"], - setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"] - }, - gists: { - checkIsStarred: ["GET /gists/{gist_id}/star"], - create: ["POST /gists"], - createComment: ["POST /gists/{gist_id}/comments"], - delete: ["DELETE /gists/{gist_id}"], - deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], - fork: ["POST /gists/{gist_id}/forks"], - get: ["GET /gists/{gist_id}"], - getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], - getRevision: ["GET /gists/{gist_id}/{sha}"], - list: ["GET /gists"], - listComments: ["GET /gists/{gist_id}/comments"], - listCommits: ["GET /gists/{gist_id}/commits"], - listForUser: ["GET /users/{username}/gists"], - listForks: ["GET /gists/{gist_id}/forks"], - listPublic: ["GET /gists/public"], - listStarred: ["GET /gists/starred"], - star: ["PUT /gists/{gist_id}/star"], - unstar: ["DELETE /gists/{gist_id}/star"], - update: ["PATCH /gists/{gist_id}"], - updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] - }, - git: { - createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], - createCommit: ["POST /repos/{owner}/{repo}/git/commits"], - createRef: ["POST /repos/{owner}/{repo}/git/refs"], - createTag: ["POST /repos/{owner}/{repo}/git/tags"], - createTree: ["POST /repos/{owner}/{repo}/git/trees"], - deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], - getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], - getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], - getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], - getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], - getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], - listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], - updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] - }, - gitignore: { - getAllTemplates: ["GET /gitignore/templates"], - getTemplate: ["GET /gitignore/templates/{name}"] - }, - interactions: { - getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], - getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits"], - removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"], - removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits"], - setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], - setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits"] - }, - issues: { - addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], - checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], - create: ["POST /repos/{owner}/{repo}/issues"], - createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"], - createLabel: ["POST /repos/{owner}/{repo}/labels"], - createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"], - deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"], - get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], - getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], - getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], - getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], - getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], - list: ["GET /issues"], - listAssignees: ["GET /repos/{owner}/{repo}/assignees"], - listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], - listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], - listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], - listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", { - mediaType: { - previews: ["mockingbird"] - } - }], - listForAuthenticatedUser: ["GET /user/issues"], - listForOrg: ["GET /orgs/{org}/issues"], - listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"], - listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"], - listMilestones: ["GET /repos/{owner}/{repo}/milestones"], - lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"], - removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"], - setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], - unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], - update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], - updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], - updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"] - }, - licenses: { - get: ["GET /licenses/{license}"], - getAllCommonlyUsed: ["GET /licenses"], - getForRepo: ["GET /repos/{owner}/{repo}/license"] - }, - markdown: { - render: ["POST /markdown"], - renderRaw: ["POST /markdown/raw", { - headers: { - "content-type": "text/plain; charset=utf-8" - } - }] - }, - meta: { - get: ["GET /meta"], - getOctocat: ["GET /octocat"], - getZen: ["GET /zen"], - root: ["GET /"] - }, - migrations: { - cancelImport: ["DELETE /repos/{owner}/{repo}/import"], - deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive", { - mediaType: { - previews: ["wyandotte"] - } - }], - deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive", { - mediaType: { - previews: ["wyandotte"] - } - }], - downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive", { - mediaType: { - previews: ["wyandotte"] - } - }], - getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive", { - mediaType: { - previews: ["wyandotte"] - } - }], - getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], - getImportStatus: ["GET /repos/{owner}/{repo}/import"], - getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], - getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}", { - mediaType: { - previews: ["wyandotte"] - } - }], - getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}", { - mediaType: { - previews: ["wyandotte"] - } - }], - listForAuthenticatedUser: ["GET /user/migrations", { - mediaType: { - previews: ["wyandotte"] - } - }], - listForOrg: ["GET /orgs/{org}/migrations", { - mediaType: { - previews: ["wyandotte"] - } - }], - listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories", { - mediaType: { - previews: ["wyandotte"] - } - }], - listReposForUser: ["GET /user/migrations/{migration_id}/repositories", { - mediaType: { - previews: ["wyandotte"] - } - }], - mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], - setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], - startForAuthenticatedUser: ["POST /user/migrations"], - startForOrg: ["POST /orgs/{org}/migrations"], - startImport: ["PUT /repos/{owner}/{repo}/import"], - unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock", { - mediaType: { - previews: ["wyandotte"] - } - }], - unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock", { - mediaType: { - previews: ["wyandotte"] - } - }], - updateImport: ["PATCH /repos/{owner}/{repo}/import"] - }, - orgs: { - blockUser: ["PUT /orgs/{org}/blocks/{username}"], - checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], - checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], - checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"], - createInvitation: ["POST /orgs/{org}/invitations"], - createWebhook: ["POST /orgs/{org}/hooks"], - deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], - get: ["GET /orgs/{org}"], - getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], - getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], - getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], - getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - list: ["GET /organizations"], - listAppInstallations: ["GET /orgs/{org}/installations"], - listBlockedUsers: ["GET /orgs/{org}/blocks"], - listForAuthenticatedUser: ["GET /user/orgs"], - listForUser: ["GET /users/{username}/orgs"], - listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], - listMembers: ["GET /orgs/{org}/members"], - listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], - listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], - listPendingInvitations: ["GET /orgs/{org}/invitations"], - listPublicMembers: ["GET /orgs/{org}/public_members"], - listWebhooks: ["GET /orgs/{org}/hooks"], - pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - removeMember: ["DELETE /orgs/{org}/members/{username}"], - removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"], - removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"], - setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"], - unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], - update: ["PATCH /orgs/{org}"], - updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"], - updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], - updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] - }, - projects: { - addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}", { - mediaType: { - previews: ["inertia"] - } - }], - createCard: ["POST /projects/columns/{column_id}/cards", { - mediaType: { - previews: ["inertia"] - } - }], - createColumn: ["POST /projects/{project_id}/columns", { - mediaType: { - previews: ["inertia"] - } - }], - createForAuthenticatedUser: ["POST /user/projects", { - mediaType: { - previews: ["inertia"] - } - }], - createForOrg: ["POST /orgs/{org}/projects", { - mediaType: { - previews: ["inertia"] - } - }], - createForRepo: ["POST /repos/{owner}/{repo}/projects", { - mediaType: { - previews: ["inertia"] - } - }], - delete: ["DELETE /projects/{project_id}", { - mediaType: { - previews: ["inertia"] - } - }], - deleteCard: ["DELETE /projects/columns/cards/{card_id}", { - mediaType: { - previews: ["inertia"] - } - }], - deleteColumn: ["DELETE /projects/columns/{column_id}", { - mediaType: { - previews: ["inertia"] - } - }], - get: ["GET /projects/{project_id}", { - mediaType: { - previews: ["inertia"] - } - }], - getCard: ["GET /projects/columns/cards/{card_id}", { - mediaType: { - previews: ["inertia"] - } - }], - getColumn: ["GET /projects/columns/{column_id}", { - mediaType: { - previews: ["inertia"] - } - }], - getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission", { - mediaType: { - previews: ["inertia"] - } - }], - listCards: ["GET /projects/columns/{column_id}/cards", { - mediaType: { - previews: ["inertia"] - } - }], - listCollaborators: ["GET /projects/{project_id}/collaborators", { - mediaType: { - previews: ["inertia"] - } - }], - listColumns: ["GET /projects/{project_id}/columns", { - mediaType: { - previews: ["inertia"] - } - }], - listForOrg: ["GET /orgs/{org}/projects", { - mediaType: { - previews: ["inertia"] - } - }], - listForRepo: ["GET /repos/{owner}/{repo}/projects", { - mediaType: { - previews: ["inertia"] - } - }], - listForUser: ["GET /users/{username}/projects", { - mediaType: { - previews: ["inertia"] - } - }], - moveCard: ["POST /projects/columns/cards/{card_id}/moves", { - mediaType: { - previews: ["inertia"] - } - }], - moveColumn: ["POST /projects/columns/{column_id}/moves", { - mediaType: { - previews: ["inertia"] - } - }], - removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}", { - mediaType: { - previews: ["inertia"] - } - }], - update: ["PATCH /projects/{project_id}", { - mediaType: { - previews: ["inertia"] - } - }], - updateCard: ["PATCH /projects/columns/cards/{card_id}", { - mediaType: { - previews: ["inertia"] - } - }], - updateColumn: ["PATCH /projects/columns/{column_id}", { - mediaType: { - previews: ["inertia"] - } - }] - }, - pulls: { - checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"], - createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"], - get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"], - listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], - listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], - listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"], - update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch", { - mediaType: { - previews: ["lydian"] - } - }], - updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"] - }, - rateLimit: { - get: ["GET /rate_limit"] - }, - reactions: { - createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - deleteLegacy: ["DELETE /reactions/{reaction_id}", { - mediaType: { - previews: ["squirrel-girl"] - } - }, { - deprecated: "octokit.reactions.deleteLegacy() is deprecated, see https://docs.github.com/v3/reactions/#delete-a-reaction-legacy" - }], - listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }], - listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", { - mediaType: { - previews: ["squirrel-girl"] - } - }] - }, - repos: { - acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}"], - addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], - checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts", { - mediaType: { - previews: ["dorian"] - } - }], - compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", { - mediaType: { - previews: ["zzzax"] - } - }], - createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], - createDeployKey: ["POST /repos/{owner}/{repo}/keys"], - createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], - createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], - createForAuthenticatedUser: ["POST /user/repos"], - createFork: ["POST /repos/{owner}/{repo}/forks"], - createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], - createPagesSite: ["POST /repos/{owner}/{repo}/pages", { - mediaType: { - previews: ["switcheroo"] - } - }], - createRelease: ["POST /repos/{owner}/{repo}/releases"], - createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate", { - mediaType: { - previews: ["baptiste"] - } - }], - createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}"], - delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], - deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"], - deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", { - mediaType: { - previews: ["zzzax"] - } - }], - deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"], - deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"], - deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages", { - mediaType: { - previews: ["switcheroo"] - } - }], - deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], - deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"], - deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes", { - mediaType: { - previews: ["london"] - } - }], - disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts", { - mediaType: { - previews: ["dorian"] - } - }], - downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, { - renamed: ["repos", "downloadZipballArchive"] - }], - downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], - downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes", { - mediaType: { - previews: ["london"] - } - }], - enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts", { - mediaType: { - previews: ["dorian"] - } - }], - get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], - getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"], - getAllTopics: ["GET /repos/{owner}/{repo}/topics", { - mediaType: { - previews: ["mercy"] - } - }], - getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"], - getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"], - getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], - getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"], - getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], - getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], - getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], - getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", { - mediaType: { - previews: ["zzzax"] - } - }], - getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], - getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], - getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], - getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], - getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"], - getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], - getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], - getPages: ["GET /repos/{owner}/{repo}/pages"], - getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], - getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], - getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], - getReadme: ["GET /repos/{owner}/{repo}/readme"], - getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], - getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], - getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"], - getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], - getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"], - getViews: ["GET /repos/{owner}/{repo}/traffic/views"], - getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"], - listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", { - mediaType: { - previews: ["groot"] - } - }], - listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"], - listCommits: ["GET /repos/{owner}/{repo}/commits"], - listContributors: ["GET /repos/{owner}/{repo}/contributors"], - listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], - listDeployments: ["GET /repos/{owner}/{repo}/deployments"], - listForAuthenticatedUser: ["GET /user/repos"], - listForOrg: ["GET /orgs/{org}/repos"], - listForUser: ["GET /users/{username}/repos"], - listForks: ["GET /repos/{owner}/{repo}/forks"], - listInvitations: ["GET /repos/{owner}/{repo}/invitations"], - listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], - listLanguages: ["GET /repos/{owner}/{repo}/languages"], - listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], - listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", { - mediaType: { - previews: ["groot"] - } - }], - listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"], - listReleases: ["GET /repos/{owner}/{repo}/releases"], - listTags: ["GET /repos/{owner}/{repo}/tags"], - listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], - merge: ["POST /repos/{owner}/{repo}/merges"], - pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"], - removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], - replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics", { - mediaType: { - previews: ["mercy"] - } - }], - requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], - testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], - transfer: ["POST /repos/{owner}/{repo}/transfer"], - update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"], - updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], - updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"], - updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], - updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"], - updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, { - renamed: ["repos", "updateStatusCheckProtection"] - }], - updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"], - uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", { - baseUrl: "https://uploads.github.com" - }] - }, - search: { - code: ["GET /search/code"], - commits: ["GET /search/commits", { - mediaType: { - previews: ["cloak"] - } - }], - issuesAndPullRequests: ["GET /search/issues"], - labels: ["GET /search/labels"], - repos: ["GET /search/repositories"], - topics: ["GET /search/topics", { - mediaType: { - previews: ["mercy"] - } - }], - users: ["GET /search/users"] - }, - secretScanning: { - getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"] - }, - teams: { - addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"], - addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}", { - mediaType: { - previews: ["inertia"] - } - }], - addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}", { - mediaType: { - previews: ["inertia"] - } - }], - checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"], - listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects", { - mediaType: { - previews: ["inertia"] - } - }], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"], - removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] - }, - users: { - addEmailForAuthenticated: ["POST /user/emails"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: ["POST /user/keys"], - deleteEmailForAuthenticated: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}"], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}"], - list: ["GET /users"], - listBlockedByAuthenticated: ["GET /user/blocks"], - listEmailsForAuthenticated: ["GET /user/emails"], - listFollowedByAuthenticated: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: ["GET /user/keys"], - setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility"], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"] - } -}; - -const VERSION = "4.4.1"; - -function endpointsToMethods(octokit, endpointsMap) { - const newMethods = {}; - - for (const [scope, endpoints] of Object.entries(endpointsMap)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign({ - method, - url - }, defaults); - - if (!newMethods[scope]) { - newMethods[scope] = {}; - } - - const scopeMethods = newMethods[scope]; - - if (decorations) { - scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations); - continue; - } - - scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); - } - } - - return newMethods; -} - -function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - /* istanbul ignore next */ - - function withDecorations(...args) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData` - - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: undefined - }); - return requestWithDefaults(options); - } - - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); - } - - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } - - if (decorations.renamedParameters) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - const options = requestWithDefaults.endpoint.merge(...args); - - for (const [name, alias] of Object.entries(decorations.renamedParameters)) { - if (name in options) { - octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); - - if (!(alias in options)) { - options[alias] = options[name]; - } - - delete options[name]; - } - } - - return requestWithDefaults(options); - } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - - - return requestWithDefaults(...args); - } - - return Object.assign(withDecorations, requestWithDefaults); -} - -/** - * This plugin is a 1:1 copy of internal @octokit/rest plugins. The primary - * goal is to rebuild @octokit/rest on top of @octokit/core. Once that is - * done, we will remove the registerEndpoints methods and return the methods - * directly as with the other plugins. At that point we will also remove the - * legacy workarounds and deprecations. - * - * See the plan at - * https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/1 - */ - -function restEndpointMethods(octokit) { - return endpointsToMethods(octokit, Endpoints); -} -restEndpointMethods.VERSION = VERSION; - -exports.restEndpointMethods = restEndpointMethods; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map deleted file mode 100644 index 570c48be0..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/generated/endpoints.js","../dist-src/version.js","../dist-src/endpoints-to-methods.js","../dist-src/index.js"],"sourcesContent":["const Endpoints = {\n actions: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\",\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\",\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\",\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\",\n ],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\",\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\",\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\",\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\",\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\",\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\",\n ],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\",\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\",\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] },\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\",\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\",\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\",\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\",\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\",\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\",\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\",\n ],\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\",\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\",\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\",\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\",\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\",\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\",\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"],\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createContentAttachment: [\n \"POST /content_references/{content_reference_id}/attachments\",\n { mediaType: { previews: [\"corsair\"] } },\n ],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\",\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\",\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\",\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\",\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\",\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\",\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"],\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\",\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\",\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\",\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\",\n ],\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\",\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n },\n codeScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } },\n ],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"],\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\n \"GET /codes_of_conduct\",\n { mediaType: { previews: [\"scarlet-witch\"] } },\n ],\n getConductCode: [\n \"GET /codes_of_conduct/{key}\",\n { mediaType: { previews: [\"scarlet-witch\"] } },\n ],\n getForRepo: [\n \"GET /repos/{owner}/{repo}/community/code_of_conduct\",\n { mediaType: { previews: [\"scarlet-witch\"] } },\n ],\n },\n emojis: { get: [\"GET /emojis\"] },\n enterpriseAdmin: {\n disableSelectedOrganizationGithubActionsEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n enableSelectedOrganizationGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n getAllowedActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n getGithubActionsPermissionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions\",\n ],\n listSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n setAllowedActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n setGithubActionsPermissionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions\",\n ],\n setSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"],\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"],\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"],\n },\n interactions: {\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\"GET /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\",\n ],\n removeRestrictionsForYourPublicRepos: [\"DELETE /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\"PUT /user/interaction-limits\"],\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\",\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n { mediaType: { previews: [\"mockingbird\"] } },\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\",\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"],\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } },\n ],\n },\n meta: {\n get: [\"GET /meta\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"],\n },\n migrations: {\n cancelImport: [\"DELETE /repos/{owner}/{repo}/import\"],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n getCommitAuthors: [\"GET /repos/{owner}/{repo}/import/authors\"],\n getImportStatus: [\"GET /repos/{owner}/{repo}/import\"],\n getLargeFiles: [\"GET /repos/{owner}/{repo}/import/large_files\"],\n getStatusForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n getStatusForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n listForAuthenticatedUser: [\n \"GET /user/migrations\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n listForOrg: [\n \"GET /orgs/{org}/migrations\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n listReposForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n mapCommitAuthor: [\"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\"],\n setLfsPreference: [\"PATCH /repos/{owner}/{repo}/import/lfs\"],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\"PUT /repos/{owner}/{repo}/import\"],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n updateImport: [\"PATCH /repos/{owner}/{repo}/import\"],\n },\n orgs: {\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\",\n ],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n get: [\"GET /orgs/{org}\"],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\",\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\",\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\",\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\",\n ],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"],\n },\n projects: {\n addCollaborator: [\n \"PUT /projects/{project_id}/collaborators/{username}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createCard: [\n \"POST /projects/columns/{column_id}/cards\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createColumn: [\n \"POST /projects/{project_id}/columns\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createForAuthenticatedUser: [\n \"POST /user/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createForOrg: [\n \"POST /orgs/{org}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createForRepo: [\n \"POST /repos/{owner}/{repo}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n delete: [\n \"DELETE /projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n deleteCard: [\n \"DELETE /projects/columns/cards/{card_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n deleteColumn: [\n \"DELETE /projects/columns/{column_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n get: [\n \"GET /projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n getCard: [\n \"GET /projects/columns/cards/{card_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n getColumn: [\n \"GET /projects/columns/{column_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listCards: [\n \"GET /projects/columns/{column_id}/cards\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listCollaborators: [\n \"GET /projects/{project_id}/collaborators\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listColumns: [\n \"GET /projects/{project_id}/columns\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listForOrg: [\n \"GET /orgs/{org}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listForRepo: [\n \"GET /repos/{owner}/{repo}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listForUser: [\n \"GET /users/{username}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n moveCard: [\n \"POST /projects/columns/cards/{card_id}/moves\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n moveColumn: [\n \"POST /projects/columns/{column_id}/moves\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n update: [\n \"PATCH /projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n updateCard: [\n \"PATCH /projects/columns/cards/{card_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n updateColumn: [\n \"PATCH /projects/columns/{column_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\",\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\",\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\",\n { mediaType: { previews: [\"lydian\"] } },\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteLegacy: [\n \"DELETE /reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n {\n deprecated: \"octokit.reactions.deleteLegacy() is deprecated, see https://docs.github.com/v3/reactions/#delete-a-reaction-legacy\",\n },\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n },\n repos: {\n acceptInvitation: [\"PATCH /user/repository_invitations/{invitation_id}\"],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\",\n { mediaType: { previews: [\"dorian\"] } },\n ],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n { mediaType: { previews: [\"zzzax\"] } },\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createPagesSite: [\n \"POST /repos/{owner}/{repo}/pages\",\n { mediaType: { previews: [\"switcheroo\"] } },\n ],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\",\n { mediaType: { previews: [\"baptiste\"] } },\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\"DELETE /user/repository_invitations/{invitation_id}\"],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n { mediaType: { previews: [\"zzzax\"] } },\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\",\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n deletePagesSite: [\n \"DELETE /repos/{owner}/{repo}/pages\",\n { mediaType: { previews: [\"switcheroo\"] } },\n ],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\",\n { mediaType: { previews: [\"london\"] } },\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\",\n { mediaType: { previews: [\"dorian\"] } },\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] },\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\",\n { mediaType: { previews: [\"london\"] } },\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\",\n { mediaType: { previews: [\"dorian\"] } },\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n ],\n getAllTopics: [\n \"GET /repos/{owner}/{repo}/topics\",\n { mediaType: { previews: [\"mercy\"] } },\n ],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n ],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\",\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n { mediaType: { previews: [\"zzzax\"] } },\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\",\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\",\n { mediaType: { previews: [\"groot\"] } },\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n { mediaType: { previews: [\"groot\"] } },\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\",\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n replaceAllTopics: [\n \"PUT /repos/{owner}/{repo}/topics\",\n { mediaType: { previews: [\"mercy\"] } },\n ],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] },\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" },\n ],\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\", { mediaType: { previews: [\"cloak\"] } }],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\", { mediaType: { previews: [\"mercy\"] } }],\n users: [\"GET /search/users\"],\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n ],\n listProjectsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"],\n },\n users: {\n addEmailForAuthenticated: [\"POST /user/emails\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\"POST /user/keys\"],\n deleteEmailForAuthenticated: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\"DELETE /user/keys/{key_id}\"],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\"GET /user/keys/{key_id}\"],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\"GET /user/keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\"PATCH /user/email/visibility\"],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"],\n },\n};\nexport default Endpoints;\n","export const VERSION = \"4.4.1\";\n","export function endpointsToMethods(octokit, endpointsMap) {\n const newMethods = {};\n for (const [scope, endpoints] of Object.entries(endpointsMap)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign({ method, url }, defaults);\n if (!newMethods[scope]) {\n newMethods[scope] = {};\n }\n const scopeMethods = newMethods[scope];\n if (decorations) {\n scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);\n continue;\n }\n scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);\n }\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n /* istanbul ignore next */\n function withDecorations(...args) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args);\n // There are currently no other decorations than `.mapToData`\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined,\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(decorations.renamedParameters)) {\n if (name in options) {\n octokit.log.warn(`\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`);\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n delete options[name];\n }\n }\n return requestWithDefaults(options);\n }\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n","import ENDPOINTS from \"./generated/endpoints\";\nimport { VERSION } from \"./version\";\nimport { endpointsToMethods } from \"./endpoints-to-methods\";\n/**\n * This plugin is a 1:1 copy of internal @octokit/rest plugins. The primary\n * goal is to rebuild @octokit/rest on top of @octokit/core. Once that is\n * done, we will remove the registerEndpoints methods and return the methods\n * directly as with the other plugins. At that point we will also remove the\n * legacy workarounds and deprecations.\n *\n * See the plan at\n * https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/1\n */\nexport function restEndpointMethods(octokit) {\n return endpointsToMethods(octokit, ENDPOINTS);\n}\nrestEndpointMethods.VERSION = VERSION;\n"],"names":["Endpoints","actions","addSelectedRepoToOrgSecret","cancelWorkflowRun","createOrUpdateOrgSecret","createOrUpdateRepoSecret","createRegistrationTokenForOrg","createRegistrationTokenForRepo","createRemoveTokenForOrg","createRemoveTokenForRepo","createWorkflowDispatch","deleteArtifact","deleteOrgSecret","deleteRepoSecret","deleteSelfHostedRunnerFromOrg","deleteSelfHostedRunnerFromRepo","deleteWorkflowRun","deleteWorkflowRunLogs","disableSelectedRepositoryGithubActionsOrganization","disableWorkflow","downloadArtifact","downloadJobLogsForWorkflowRun","downloadWorkflowRunLogs","enableSelectedRepositoryGithubActionsOrganization","enableWorkflow","getAllowedActionsOrganization","getAllowedActionsRepository","getArtifact","getGithubActionsPermissionsOrganization","getGithubActionsPermissionsRepository","getJobForWorkflowRun","getOrgPublicKey","getOrgSecret","getRepoPermissions","renamed","getRepoPublicKey","getRepoSecret","getSelfHostedRunnerForOrg","getSelfHostedRunnerForRepo","getWorkflow","getWorkflowRun","getWorkflowRunUsage","getWorkflowUsage","listArtifactsForRepo","listJobsForWorkflowRun","listOrgSecrets","listRepoSecrets","listRepoWorkflows","listRunnerApplicationsForOrg","listRunnerApplicationsForRepo","listSelectedReposForOrgSecret","listSelectedRepositoriesEnabledGithubActionsOrganization","listSelfHostedRunnersForOrg","listSelfHostedRunnersForRepo","listWorkflowRunArtifacts","listWorkflowRuns","listWorkflowRunsForRepo","reRunWorkflow","removeSelectedRepoFromOrgSecret","setAllowedActionsOrganization","setAllowedActionsRepository","setGithubActionsPermissionsOrganization","setGithubActionsPermissionsRepository","setSelectedReposForOrgSecret","setSelectedRepositoriesEnabledGithubActionsOrganization","activity","checkRepoIsStarredByAuthenticatedUser","deleteRepoSubscription","deleteThreadSubscription","getFeeds","getRepoSubscription","getThread","getThreadSubscriptionForAuthenticatedUser","listEventsForAuthenticatedUser","listNotificationsForAuthenticatedUser","listOrgEventsForAuthenticatedUser","listPublicEvents","listPublicEventsForRepoNetwork","listPublicEventsForUser","listPublicOrgEvents","listReceivedEventsForUser","listReceivedPublicEventsForUser","listRepoEvents","listRepoNotificationsForAuthenticatedUser","listReposStarredByAuthenticatedUser","listReposStarredByUser","listReposWatchedByUser","listStargazersForRepo","listWatchedReposForAuthenticatedUser","listWatchersForRepo","markNotificationsAsRead","markRepoNotificationsAsRead","markThreadAsRead","setRepoSubscription","setThreadSubscription","starRepoForAuthenticatedUser","unstarRepoForAuthenticatedUser","apps","addRepoToInstallation","checkToken","createContentAttachment","mediaType","previews","createFromManifest","createInstallationAccessToken","deleteAuthorization","deleteInstallation","deleteToken","getAuthenticated","getBySlug","getInstallation","getOrgInstallation","getRepoInstallation","getSubscriptionPlanForAccount","getSubscriptionPlanForAccountStubbed","getUserInstallation","getWebhookConfigForApp","listAccountsForPlan","listAccountsForPlanStubbed","listInstallationReposForAuthenticatedUser","listInstallations","listInstallationsForAuthenticatedUser","listPlans","listPlansStubbed","listReposAccessibleToInstallation","listSubscriptionsForAuthenticatedUser","listSubscriptionsForAuthenticatedUserStubbed","removeRepoFromInstallation","resetToken","revokeInstallationAccessToken","suspendInstallation","unsuspendInstallation","updateWebhookConfigForApp","billing","getGithubActionsBillingOrg","getGithubActionsBillingUser","getGithubPackagesBillingOrg","getGithubPackagesBillingUser","getSharedStorageBillingOrg","getSharedStorageBillingUser","checks","create","createSuite","get","getSuite","listAnnotations","listForRef","listForSuite","listSuitesForRef","rerequestSuite","setSuitesPreferences","update","codeScanning","getAlert","renamedParameters","alert_id","listAlertsForRepo","listRecentAnalyses","updateAlert","uploadSarif","codesOfConduct","getAllCodesOfConduct","getConductCode","getForRepo","emojis","enterpriseAdmin","disableSelectedOrganizationGithubActionsEnterprise","enableSelectedOrganizationGithubActionsEnterprise","getAllowedActionsEnterprise","getGithubActionsPermissionsEnterprise","listSelectedOrganizationsEnabledGithubActionsEnterprise","setAllowedActionsEnterprise","setGithubActionsPermissionsEnterprise","setSelectedOrganizationsEnabledGithubActionsEnterprise","gists","checkIsStarred","createComment","delete","deleteComment","fork","getComment","getRevision","list","listComments","listCommits","listForUser","listForks","listPublic","listStarred","star","unstar","updateComment","git","createBlob","createCommit","createRef","createTag","createTree","deleteRef","getBlob","getCommit","getRef","getTag","getTree","listMatchingRefs","updateRef","gitignore","getAllTemplates","getTemplate","interactions","getRestrictionsForOrg","getRestrictionsForRepo","getRestrictionsForYourPublicRepos","removeRestrictionsForOrg","removeRestrictionsForRepo","removeRestrictionsForYourPublicRepos","setRestrictionsForOrg","setRestrictionsForRepo","setRestrictionsForYourPublicRepos","issues","addAssignees","addLabels","checkUserCanBeAssigned","createLabel","createMilestone","deleteLabel","deleteMilestone","getEvent","getLabel","getMilestone","listAssignees","listCommentsForRepo","listEvents","listEventsForRepo","listEventsForTimeline","listForAuthenticatedUser","listForOrg","listForRepo","listLabelsForMilestone","listLabelsForRepo","listLabelsOnIssue","listMilestones","lock","removeAllLabels","removeAssignees","removeLabel","setLabels","unlock","updateLabel","updateMilestone","licenses","getAllCommonlyUsed","markdown","render","renderRaw","headers","meta","getOctocat","getZen","root","migrations","cancelImport","deleteArchiveForAuthenticatedUser","deleteArchiveForOrg","downloadArchiveForOrg","getArchiveForAuthenticatedUser","getCommitAuthors","getImportStatus","getLargeFiles","getStatusForAuthenticatedUser","getStatusForOrg","listReposForOrg","listReposForUser","mapCommitAuthor","setLfsPreference","startForAuthenticatedUser","startForOrg","startImport","unlockRepoForAuthenticatedUser","unlockRepoForOrg","updateImport","orgs","blockUser","checkBlockedUser","checkMembershipForUser","checkPublicMembershipForUser","convertMemberToOutsideCollaborator","createInvitation","createWebhook","deleteWebhook","getMembershipForAuthenticatedUser","getMembershipForUser","getWebhook","getWebhookConfigForOrg","listAppInstallations","listBlockedUsers","listInvitationTeams","listMembers","listMembershipsForAuthenticatedUser","listOutsideCollaborators","listPendingInvitations","listPublicMembers","listWebhooks","pingWebhook","removeMember","removeMembershipForUser","removeOutsideCollaborator","removePublicMembershipForAuthenticatedUser","setMembershipForUser","setPublicMembershipForAuthenticatedUser","unblockUser","updateMembershipForAuthenticatedUser","updateWebhook","updateWebhookConfigForOrg","projects","addCollaborator","createCard","createColumn","createForAuthenticatedUser","createForOrg","createForRepo","deleteCard","deleteColumn","getCard","getColumn","getPermissionForUser","listCards","listCollaborators","listColumns","moveCard","moveColumn","removeCollaborator","updateCard","updateColumn","pulls","checkIfMerged","createReplyForReviewComment","createReview","createReviewComment","deletePendingReview","deleteReviewComment","dismissReview","getReview","getReviewComment","listCommentsForReview","listFiles","listRequestedReviewers","listReviewComments","listReviewCommentsForRepo","listReviews","merge","removeRequestedReviewers","requestReviewers","submitReview","updateBranch","updateReview","updateReviewComment","rateLimit","reactions","createForCommitComment","createForIssue","createForIssueComment","createForPullRequestReviewComment","createForTeamDiscussionCommentInOrg","createForTeamDiscussionInOrg","deleteForCommitComment","deleteForIssue","deleteForIssueComment","deleteForPullRequestComment","deleteForTeamDiscussion","deleteForTeamDiscussionComment","deleteLegacy","deprecated","listForCommitComment","listForIssue","listForIssueComment","listForPullRequestReviewComment","listForTeamDiscussionCommentInOrg","listForTeamDiscussionInOrg","repos","acceptInvitation","addAppAccessRestrictions","mapToData","addStatusCheckContexts","addTeamAccessRestrictions","addUserAccessRestrictions","checkCollaborator","checkVulnerabilityAlerts","compareCommits","createCommitComment","createCommitSignatureProtection","createCommitStatus","createDeployKey","createDeployment","createDeploymentStatus","createDispatchEvent","createFork","createInOrg","createOrUpdateFileContents","createPagesSite","createRelease","createUsingTemplate","declineInvitation","deleteAccessRestrictions","deleteAdminBranchProtection","deleteBranchProtection","deleteCommitComment","deleteCommitSignatureProtection","deleteDeployKey","deleteDeployment","deleteFile","deleteInvitation","deletePagesSite","deletePullRequestReviewProtection","deleteRelease","deleteReleaseAsset","disableAutomatedSecurityFixes","disableVulnerabilityAlerts","downloadArchive","downloadTarballArchive","downloadZipballArchive","enableAutomatedSecurityFixes","enableVulnerabilityAlerts","getAccessRestrictions","getAdminBranchProtection","getAllStatusCheckContexts","getAllTopics","getAppsWithAccessToProtectedBranch","getBranch","getBranchProtection","getClones","getCodeFrequencyStats","getCollaboratorPermissionLevel","getCombinedStatusForRef","getCommitActivityStats","getCommitComment","getCommitSignatureProtection","getCommunityProfileMetrics","getContent","getContributorsStats","getDeployKey","getDeployment","getDeploymentStatus","getLatestPagesBuild","getLatestRelease","getPages","getPagesBuild","getParticipationStats","getPullRequestReviewProtection","getPunchCardStats","getReadme","getRelease","getReleaseAsset","getReleaseByTag","getStatusChecksProtection","getTeamsWithAccessToProtectedBranch","getTopPaths","getTopReferrers","getUsersWithAccessToProtectedBranch","getViews","getWebhookConfigForRepo","listBranches","listBranchesForHeadCommit","listCommentsForCommit","listCommitCommentsForRepo","listCommitStatusesForRef","listContributors","listDeployKeys","listDeploymentStatuses","listDeployments","listInvitations","listInvitationsForAuthenticatedUser","listLanguages","listPagesBuilds","listPullRequestsAssociatedWithCommit","listReleaseAssets","listReleases","listTags","listTeams","removeAppAccessRestrictions","removeStatusCheckContexts","removeStatusCheckProtection","removeTeamAccessRestrictions","removeUserAccessRestrictions","replaceAllTopics","requestPagesBuild","setAdminBranchProtection","setAppAccessRestrictions","setStatusCheckContexts","setTeamAccessRestrictions","setUserAccessRestrictions","testPushWebhook","transfer","updateBranchProtection","updateCommitComment","updateInformationAboutPagesSite","updateInvitation","updatePullRequestReviewProtection","updateRelease","updateReleaseAsset","updateStatusCheckPotection","updateStatusCheckProtection","updateWebhookConfigForRepo","uploadReleaseAsset","baseUrl","search","code","commits","issuesAndPullRequests","labels","topics","users","secretScanning","teams","addOrUpdateMembershipForUserInOrg","addOrUpdateProjectPermissionsInOrg","addOrUpdateRepoPermissionsInOrg","checkPermissionsForProjectInOrg","checkPermissionsForRepoInOrg","createDiscussionCommentInOrg","createDiscussionInOrg","deleteDiscussionCommentInOrg","deleteDiscussionInOrg","deleteInOrg","getByName","getDiscussionCommentInOrg","getDiscussionInOrg","getMembershipForUserInOrg","listChildInOrg","listDiscussionCommentsInOrg","listDiscussionsInOrg","listMembersInOrg","listPendingInvitationsInOrg","listProjectsInOrg","listReposInOrg","removeMembershipForUserInOrg","removeProjectInOrg","removeRepoInOrg","updateDiscussionCommentInOrg","updateDiscussionInOrg","updateInOrg","addEmailForAuthenticated","block","checkBlocked","checkFollowingForUser","checkPersonIsFollowedByAuthenticated","createGpgKeyForAuthenticated","createPublicSshKeyForAuthenticated","deleteEmailForAuthenticated","deleteGpgKeyForAuthenticated","deletePublicSshKeyForAuthenticated","follow","getByUsername","getContextForUser","getGpgKeyForAuthenticated","getPublicSshKeyForAuthenticated","listBlockedByAuthenticated","listEmailsForAuthenticated","listFollowedByAuthenticated","listFollowersForAuthenticatedUser","listFollowersForUser","listFollowingForUser","listGpgKeysForAuthenticated","listGpgKeysForUser","listPublicEmailsForAuthenticated","listPublicKeysForUser","listPublicSshKeysForAuthenticated","setPrimaryEmailVisibilityForAuthenticated","unblock","unfollow","updateAuthenticated","VERSION","endpointsToMethods","octokit","endpointsMap","newMethods","scope","endpoints","Object","entries","methodName","endpoint","route","defaults","decorations","method","url","split","endpointDefaults","assign","scopeMethods","decorate","request","requestWithDefaults","withDecorations","args","options","data","undefined","newScope","newMethodName","log","warn","name","alias","restEndpointMethods","ENDPOINTS"],"mappings":";;;;AAAA,MAAMA,SAAS,GAAG;AACdC,EAAAA,OAAO,EAAE;AACLC,IAAAA,0BAA0B,EAAE,CACxB,4EADwB,CADvB;AAILC,IAAAA,iBAAiB,EAAE,CACf,yDADe,CAJd;AAOLC,IAAAA,uBAAuB,EAAE,CAAC,+CAAD,CAPpB;AAQLC,IAAAA,wBAAwB,EAAE,CACtB,yDADsB,CARrB;AAWLC,IAAAA,6BAA6B,EAAE,CAC3B,qDAD2B,CAX1B;AAcLC,IAAAA,8BAA8B,EAAE,CAC5B,+DAD4B,CAd3B;AAiBLC,IAAAA,uBAAuB,EAAE,CAAC,+CAAD,CAjBpB;AAkBLC,IAAAA,wBAAwB,EAAE,CACtB,yDADsB,CAlBrB;AAqBLC,IAAAA,sBAAsB,EAAE,CACpB,uEADoB,CArBnB;AAwBLC,IAAAA,cAAc,EAAE,CACZ,8DADY,CAxBX;AA2BLC,IAAAA,eAAe,EAAE,CAAC,kDAAD,CA3BZ;AA4BLC,IAAAA,gBAAgB,EAAE,CACd,4DADc,CA5Bb;AA+BLC,IAAAA,6BAA6B,EAAE,CAC3B,gDAD2B,CA/B1B;AAkCLC,IAAAA,8BAA8B,EAAE,CAC5B,0DAD4B,CAlC3B;AAqCLC,IAAAA,iBAAiB,EAAE,CAAC,oDAAD,CArCd;AAsCLC,IAAAA,qBAAqB,EAAE,CACnB,yDADmB,CAtClB;AAyCLC,IAAAA,kDAAkD,EAAE,CAChD,qEADgD,CAzC/C;AA4CLC,IAAAA,eAAe,EAAE,CACb,mEADa,CA5CZ;AA+CLC,IAAAA,gBAAgB,EAAE,CACd,4EADc,CA/Cb;AAkDLC,IAAAA,6BAA6B,EAAE,CAC3B,sDAD2B,CAlD1B;AAqDLC,IAAAA,uBAAuB,EAAE,CACrB,sDADqB,CArDpB;AAwDLC,IAAAA,iDAAiD,EAAE,CAC/C,kEAD+C,CAxD9C;AA2DLC,IAAAA,cAAc,EAAE,CACZ,kEADY,CA3DX;AA8DLC,IAAAA,6BAA6B,EAAE,CAC3B,sDAD2B,CA9D1B;AAiELC,IAAAA,2BAA2B,EAAE,CACzB,gEADyB,CAjExB;AAoELC,IAAAA,WAAW,EAAE,CAAC,2DAAD,CApER;AAqELC,IAAAA,uCAAuC,EAAE,CACrC,qCADqC,CArEpC;AAwELC,IAAAA,qCAAqC,EAAE,CACnC,+CADmC,CAxElC;AA2ELC,IAAAA,oBAAoB,EAAE,CAAC,iDAAD,CA3EjB;AA4ELC,IAAAA,eAAe,EAAE,CAAC,4CAAD,CA5EZ;AA6ELC,IAAAA,YAAY,EAAE,CAAC,+CAAD,CA7ET;AA8ELC,IAAAA,kBAAkB,EAAE,CAChB,+CADgB,EAEhB,EAFgB,EAGhB;AAAEC,MAAAA,OAAO,EAAE,CAAC,SAAD,EAAY,uCAAZ;AAAX,KAHgB,CA9Ef;AAmFLC,IAAAA,gBAAgB,EAAE,CAAC,sDAAD,CAnFb;AAoFLC,IAAAA,aAAa,EAAE,CAAC,yDAAD,CApFV;AAqFLC,IAAAA,yBAAyB,EAAE,CAAC,6CAAD,CArFtB;AAsFLC,IAAAA,0BAA0B,EAAE,CACxB,uDADwB,CAtFvB;AAyFLC,IAAAA,WAAW,EAAE,CAAC,2DAAD,CAzFR;AA0FLC,IAAAA,cAAc,EAAE,CAAC,iDAAD,CA1FX;AA2FLC,IAAAA,mBAAmB,EAAE,CACjB,wDADiB,CA3FhB;AA8FLC,IAAAA,gBAAgB,EAAE,CACd,kEADc,CA9Fb;AAiGLC,IAAAA,oBAAoB,EAAE,CAAC,6CAAD,CAjGjB;AAkGLC,IAAAA,sBAAsB,EAAE,CACpB,sDADoB,CAlGnB;AAqGLC,IAAAA,cAAc,EAAE,CAAC,iCAAD,CArGX;AAsGLC,IAAAA,eAAe,EAAE,CAAC,2CAAD,CAtGZ;AAuGLC,IAAAA,iBAAiB,EAAE,CAAC,6CAAD,CAvGd;AAwGLC,IAAAA,4BAA4B,EAAE,CAAC,2CAAD,CAxGzB;AAyGLC,IAAAA,6BAA6B,EAAE,CAC3B,qDAD2B,CAzG1B;AA4GLC,IAAAA,6BAA6B,EAAE,CAC3B,4DAD2B,CA5G1B;AA+GLC,IAAAA,wDAAwD,EAAE,CACtD,kDADsD,CA/GrD;AAkHLC,IAAAA,2BAA2B,EAAE,CAAC,iCAAD,CAlHxB;AAmHLC,IAAAA,4BAA4B,EAAE,CAAC,2CAAD,CAnHzB;AAoHLC,IAAAA,wBAAwB,EAAE,CACtB,2DADsB,CApHrB;AAuHLC,IAAAA,gBAAgB,EAAE,CACd,gEADc,CAvHb;AA0HLC,IAAAA,uBAAuB,EAAE,CAAC,wCAAD,CA1HpB;AA2HLC,IAAAA,aAAa,EAAE,CAAC,wDAAD,CA3HV;AA4HLC,IAAAA,+BAA+B,EAAE,CAC7B,+EAD6B,CA5H5B;AA+HLC,IAAAA,6BAA6B,EAAE,CAC3B,sDAD2B,CA/H1B;AAkILC,IAAAA,2BAA2B,EAAE,CACzB,gEADyB,CAlIxB;AAqILC,IAAAA,uCAAuC,EAAE,CACrC,qCADqC,CArIpC;AAwILC,IAAAA,qCAAqC,EAAE,CACnC,+CADmC,CAxIlC;AA2ILC,IAAAA,4BAA4B,EAAE,CAC1B,4DAD0B,CA3IzB;AA8ILC,IAAAA,uDAAuD,EAAE,CACrD,kDADqD;AA9IpD,GADK;AAmJdC,EAAAA,QAAQ,EAAE;AACNC,IAAAA,qCAAqC,EAAE,CAAC,kCAAD,CADjC;AAENC,IAAAA,sBAAsB,EAAE,CAAC,2CAAD,CAFlB;AAGNC,IAAAA,wBAAwB,EAAE,CACtB,wDADsB,CAHpB;AAMNC,IAAAA,QAAQ,EAAE,CAAC,YAAD,CANJ;AAONC,IAAAA,mBAAmB,EAAE,CAAC,wCAAD,CAPf;AAQNC,IAAAA,SAAS,EAAE,CAAC,wCAAD,CARL;AASNC,IAAAA,yCAAyC,EAAE,CACvC,qDADuC,CATrC;AAYNC,IAAAA,8BAA8B,EAAE,CAAC,8BAAD,CAZ1B;AAaNC,IAAAA,qCAAqC,EAAE,CAAC,oBAAD,CAbjC;AAcNC,IAAAA,iCAAiC,EAAE,CAC/B,yCAD+B,CAd7B;AAiBNC,IAAAA,gBAAgB,EAAE,CAAC,aAAD,CAjBZ;AAkBNC,IAAAA,8BAA8B,EAAE,CAAC,qCAAD,CAlB1B;AAmBNC,IAAAA,uBAAuB,EAAE,CAAC,qCAAD,CAnBnB;AAoBNC,IAAAA,mBAAmB,EAAE,CAAC,wBAAD,CApBf;AAqBNC,IAAAA,yBAAyB,EAAE,CAAC,uCAAD,CArBrB;AAsBNC,IAAAA,+BAA+B,EAAE,CAC7B,8CAD6B,CAtB3B;AAyBNC,IAAAA,cAAc,EAAE,CAAC,kCAAD,CAzBV;AA0BNC,IAAAA,yCAAyC,EAAE,CACvC,yCADuC,CA1BrC;AA6BNC,IAAAA,mCAAmC,EAAE,CAAC,mBAAD,CA7B/B;AA8BNC,IAAAA,sBAAsB,EAAE,CAAC,+BAAD,CA9BlB;AA+BNC,IAAAA,sBAAsB,EAAE,CAAC,qCAAD,CA/BlB;AAgCNC,IAAAA,qBAAqB,EAAE,CAAC,sCAAD,CAhCjB;AAiCNC,IAAAA,oCAAoC,EAAE,CAAC,yBAAD,CAjChC;AAkCNC,IAAAA,mBAAmB,EAAE,CAAC,uCAAD,CAlCf;AAmCNC,IAAAA,uBAAuB,EAAE,CAAC,oBAAD,CAnCnB;AAoCNC,IAAAA,2BAA2B,EAAE,CAAC,yCAAD,CApCvB;AAqCNC,IAAAA,gBAAgB,EAAE,CAAC,0CAAD,CArCZ;AAsCNC,IAAAA,mBAAmB,EAAE,CAAC,wCAAD,CAtCf;AAuCNC,IAAAA,qBAAqB,EAAE,CACnB,qDADmB,CAvCjB;AA0CNC,IAAAA,4BAA4B,EAAE,CAAC,kCAAD,CA1CxB;AA2CNC,IAAAA,8BAA8B,EAAE,CAAC,qCAAD;AA3C1B,GAnJI;AAgMdC,EAAAA,IAAI,EAAE;AACFC,IAAAA,qBAAqB,EAAE,CACnB,wEADmB,CADrB;AAIFC,IAAAA,UAAU,EAAE,CAAC,sCAAD,CAJV;AAKFC,IAAAA,uBAAuB,EAAE,CACrB,6DADqB,EAErB;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFqB,CALvB;AASFC,IAAAA,kBAAkB,EAAE,CAAC,wCAAD,CATlB;AAUFC,IAAAA,6BAA6B,EAAE,CAC3B,yDAD2B,CAV7B;AAaFC,IAAAA,mBAAmB,EAAE,CAAC,wCAAD,CAbnB;AAcFC,IAAAA,kBAAkB,EAAE,CAAC,6CAAD,CAdlB;AAeFC,IAAAA,WAAW,EAAE,CAAC,wCAAD,CAfX;AAgBFC,IAAAA,gBAAgB,EAAE,CAAC,UAAD,CAhBhB;AAiBFC,IAAAA,SAAS,EAAE,CAAC,sBAAD,CAjBT;AAkBFC,IAAAA,eAAe,EAAE,CAAC,0CAAD,CAlBf;AAmBFC,IAAAA,kBAAkB,EAAE,CAAC,8BAAD,CAnBlB;AAoBFC,IAAAA,mBAAmB,EAAE,CAAC,wCAAD,CApBnB;AAqBFC,IAAAA,6BAA6B,EAAE,CAC3B,gDAD2B,CArB7B;AAwBFC,IAAAA,oCAAoC,EAAE,CAClC,wDADkC,CAxBpC;AA2BFC,IAAAA,mBAAmB,EAAE,CAAC,oCAAD,CA3BnB;AA4BFC,IAAAA,sBAAsB,EAAE,CAAC,sBAAD,CA5BtB;AA6BFC,IAAAA,mBAAmB,EAAE,CAAC,mDAAD,CA7BnB;AA8BFC,IAAAA,0BAA0B,EAAE,CACxB,2DADwB,CA9B1B;AAiCFC,IAAAA,yCAAyC,EAAE,CACvC,wDADuC,CAjCzC;AAoCFC,IAAAA,iBAAiB,EAAE,CAAC,wBAAD,CApCjB;AAqCFC,IAAAA,qCAAqC,EAAE,CAAC,yBAAD,CArCrC;AAsCFC,IAAAA,SAAS,EAAE,CAAC,gCAAD,CAtCT;AAuCFC,IAAAA,gBAAgB,EAAE,CAAC,wCAAD,CAvChB;AAwCFC,IAAAA,iCAAiC,EAAE,CAAC,gCAAD,CAxCjC;AAyCFC,IAAAA,qCAAqC,EAAE,CAAC,iCAAD,CAzCrC;AA0CFC,IAAAA,4CAA4C,EAAE,CAC1C,yCAD0C,CA1C5C;AA6CFC,IAAAA,0BAA0B,EAAE,CACxB,2EADwB,CA7C1B;AAgDFC,IAAAA,UAAU,EAAE,CAAC,uCAAD,CAhDV;AAiDFC,IAAAA,6BAA6B,EAAE,CAAC,4BAAD,CAjD7B;AAkDFC,IAAAA,mBAAmB,EAAE,CAAC,oDAAD,CAlDnB;AAmDFC,IAAAA,qBAAqB,EAAE,CACnB,uDADmB,CAnDrB;AAsDFC,IAAAA,yBAAyB,EAAE,CAAC,wBAAD;AAtDzB,GAhMQ;AAwPdC,EAAAA,OAAO,EAAE;AACLC,IAAAA,0BAA0B,EAAE,CAAC,0CAAD,CADvB;AAELC,IAAAA,2BAA2B,EAAE,CACzB,gDADyB,CAFxB;AAKLC,IAAAA,2BAA2B,EAAE,CAAC,2CAAD,CALxB;AAMLC,IAAAA,4BAA4B,EAAE,CAC1B,iDAD0B,CANzB;AASLC,IAAAA,0BAA0B,EAAE,CACxB,iDADwB,CATvB;AAYLC,IAAAA,2BAA2B,EAAE,CACzB,uDADyB;AAZxB,GAxPK;AAwQdC,EAAAA,MAAM,EAAE;AACJC,IAAAA,MAAM,EAAE,CAAC,uCAAD,CADJ;AAEJC,IAAAA,WAAW,EAAE,CAAC,yCAAD,CAFT;AAGJC,IAAAA,GAAG,EAAE,CAAC,qDAAD,CAHD;AAIJC,IAAAA,QAAQ,EAAE,CAAC,yDAAD,CAJN;AAKJC,IAAAA,eAAe,EAAE,CACb,iEADa,CALb;AAQJC,IAAAA,UAAU,EAAE,CAAC,oDAAD,CARR;AASJC,IAAAA,YAAY,EAAE,CACV,oEADU,CATV;AAYJC,IAAAA,gBAAgB,EAAE,CAAC,sDAAD,CAZd;AAaJC,IAAAA,cAAc,EAAE,CACZ,oEADY,CAbZ;AAgBJC,IAAAA,oBAAoB,EAAE,CAClB,sDADkB,CAhBlB;AAmBJC,IAAAA,MAAM,EAAE,CAAC,uDAAD;AAnBJ,GAxQM;AA6RdC,EAAAA,YAAY,EAAE;AACVC,IAAAA,QAAQ,EAAE,CACN,+DADM,EAEN,EAFM,EAGN;AAAEC,MAAAA,iBAAiB,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ;AAArB,KAHM,CADA;AAMVC,IAAAA,iBAAiB,EAAE,CAAC,gDAAD,CANT;AAOVC,IAAAA,kBAAkB,EAAE,CAAC,kDAAD,CAPV;AAQVC,IAAAA,WAAW,EAAE,CACT,iEADS,CARH;AAWVC,IAAAA,WAAW,EAAE,CAAC,iDAAD;AAXH,GA7RA;AA0SdC,EAAAA,cAAc,EAAE;AACZC,IAAAA,oBAAoB,EAAE,CAClB,uBADkB,EAElB;AAAE5D,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFkB,CADV;AAKZ4D,IAAAA,cAAc,EAAE,CACZ,6BADY,EAEZ;AAAE7D,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFY,CALJ;AASZ6D,IAAAA,UAAU,EAAE,CACR,qDADQ,EAER;AAAE9D,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFQ;AATA,GA1SF;AAwTd8D,EAAAA,MAAM,EAAE;AAAErB,IAAAA,GAAG,EAAE,CAAC,aAAD;AAAP,GAxTM;AAyTdsB,EAAAA,eAAe,EAAE;AACbC,IAAAA,kDAAkD,EAAE,CAChD,6EADgD,CADvC;AAIbC,IAAAA,iDAAiD,EAAE,CAC/C,0EAD+C,CAJtC;AAObC,IAAAA,2BAA2B,EAAE,CACzB,oEADyB,CAPhB;AAUbC,IAAAA,qCAAqC,EAAE,CACnC,mDADmC,CAV1B;AAabC,IAAAA,uDAAuD,EAAE,CACrD,iEADqD,CAb5C;AAgBbC,IAAAA,2BAA2B,EAAE,CACzB,oEADyB,CAhBhB;AAmBbC,IAAAA,qCAAqC,EAAE,CACnC,mDADmC,CAnB1B;AAsBbC,IAAAA,sDAAsD,EAAE,CACpD,iEADoD;AAtB3C,GAzTH;AAmVdC,EAAAA,KAAK,EAAE;AACHC,IAAAA,cAAc,EAAE,CAAC,2BAAD,CADb;AAEHlC,IAAAA,MAAM,EAAE,CAAC,aAAD,CAFL;AAGHmC,IAAAA,aAAa,EAAE,CAAC,gCAAD,CAHZ;AAIHC,IAAAA,MAAM,EAAE,CAAC,yBAAD,CAJL;AAKHC,IAAAA,aAAa,EAAE,CAAC,+CAAD,CALZ;AAMHC,IAAAA,IAAI,EAAE,CAAC,6BAAD,CANH;AAOHpC,IAAAA,GAAG,EAAE,CAAC,sBAAD,CAPF;AAQHqC,IAAAA,UAAU,EAAE,CAAC,4CAAD,CART;AASHC,IAAAA,WAAW,EAAE,CAAC,4BAAD,CATV;AAUHC,IAAAA,IAAI,EAAE,CAAC,YAAD,CAVH;AAWHC,IAAAA,YAAY,EAAE,CAAC,+BAAD,CAXX;AAYHC,IAAAA,WAAW,EAAE,CAAC,8BAAD,CAZV;AAaHC,IAAAA,WAAW,EAAE,CAAC,6BAAD,CAbV;AAcHC,IAAAA,SAAS,EAAE,CAAC,4BAAD,CAdR;AAeHC,IAAAA,UAAU,EAAE,CAAC,mBAAD,CAfT;AAgBHC,IAAAA,WAAW,EAAE,CAAC,oBAAD,CAhBV;AAiBHC,IAAAA,IAAI,EAAE,CAAC,2BAAD,CAjBH;AAkBHC,IAAAA,MAAM,EAAE,CAAC,8BAAD,CAlBL;AAmBHvC,IAAAA,MAAM,EAAE,CAAC,wBAAD,CAnBL;AAoBHwC,IAAAA,aAAa,EAAE,CAAC,8CAAD;AApBZ,GAnVO;AAyWdC,EAAAA,GAAG,EAAE;AACDC,IAAAA,UAAU,EAAE,CAAC,sCAAD,CADX;AAEDC,IAAAA,YAAY,EAAE,CAAC,wCAAD,CAFb;AAGDC,IAAAA,SAAS,EAAE,CAAC,qCAAD,CAHV;AAIDC,IAAAA,SAAS,EAAE,CAAC,qCAAD,CAJV;AAKDC,IAAAA,UAAU,EAAE,CAAC,sCAAD,CALX;AAMDC,IAAAA,SAAS,EAAE,CAAC,6CAAD,CANV;AAODC,IAAAA,OAAO,EAAE,CAAC,gDAAD,CAPR;AAQDC,IAAAA,SAAS,EAAE,CAAC,oDAAD,CARV;AASDC,IAAAA,MAAM,EAAE,CAAC,yCAAD,CATP;AAUDC,IAAAA,MAAM,EAAE,CAAC,8CAAD,CAVP;AAWDC,IAAAA,OAAO,EAAE,CAAC,gDAAD,CAXR;AAYDC,IAAAA,gBAAgB,EAAE,CAAC,mDAAD,CAZjB;AAaDC,IAAAA,SAAS,EAAE,CAAC,4CAAD;AAbV,GAzWS;AAwXdC,EAAAA,SAAS,EAAE;AACPC,IAAAA,eAAe,EAAE,CAAC,0BAAD,CADV;AAEPC,IAAAA,WAAW,EAAE,CAAC,iCAAD;AAFN,GAxXG;AA4XdC,EAAAA,YAAY,EAAE;AACVC,IAAAA,qBAAqB,EAAE,CAAC,oCAAD,CADb;AAEVC,IAAAA,sBAAsB,EAAE,CAAC,8CAAD,CAFd;AAGVC,IAAAA,iCAAiC,EAAE,CAAC,8BAAD,CAHzB;AAIVC,IAAAA,wBAAwB,EAAE,CAAC,uCAAD,CAJhB;AAKVC,IAAAA,yBAAyB,EAAE,CACvB,iDADuB,CALjB;AAQVC,IAAAA,oCAAoC,EAAE,CAAC,iCAAD,CAR5B;AASVC,IAAAA,qBAAqB,EAAE,CAAC,oCAAD,CATb;AAUVC,IAAAA,sBAAsB,EAAE,CAAC,8CAAD,CAVd;AAWVC,IAAAA,iCAAiC,EAAE,CAAC,8BAAD;AAXzB,GA5XA;AAyYdC,EAAAA,MAAM,EAAE;AACJC,IAAAA,YAAY,EAAE,CACV,4DADU,CADV;AAIJC,IAAAA,SAAS,EAAE,CAAC,yDAAD,CAJP;AAKJC,IAAAA,sBAAsB,EAAE,CAAC,gDAAD,CALpB;AAMJjF,IAAAA,MAAM,EAAE,CAAC,mCAAD,CANJ;AAOJmC,IAAAA,aAAa,EAAE,CACX,2DADW,CAPX;AAUJ+C,IAAAA,WAAW,EAAE,CAAC,mCAAD,CAVT;AAWJC,IAAAA,eAAe,EAAE,CAAC,uCAAD,CAXb;AAYJ9C,IAAAA,aAAa,EAAE,CACX,2DADW,CAZX;AAeJ+C,IAAAA,WAAW,EAAE,CAAC,4CAAD,CAfT;AAgBJC,IAAAA,eAAe,EAAE,CACb,4DADa,CAhBb;AAmBJnF,IAAAA,GAAG,EAAE,CAAC,iDAAD,CAnBD;AAoBJqC,IAAAA,UAAU,EAAE,CAAC,wDAAD,CApBR;AAqBJ+C,IAAAA,QAAQ,EAAE,CAAC,oDAAD,CArBN;AAsBJC,IAAAA,QAAQ,EAAE,CAAC,yCAAD,CAtBN;AAuBJC,IAAAA,YAAY,EAAE,CAAC,yDAAD,CAvBV;AAwBJ/C,IAAAA,IAAI,EAAE,CAAC,aAAD,CAxBF;AAyBJgD,IAAAA,aAAa,EAAE,CAAC,qCAAD,CAzBX;AA0BJ/C,IAAAA,YAAY,EAAE,CAAC,0DAAD,CA1BV;AA2BJgD,IAAAA,mBAAmB,EAAE,CAAC,2CAAD,CA3BjB;AA4BJC,IAAAA,UAAU,EAAE,CAAC,wDAAD,CA5BR;AA6BJC,IAAAA,iBAAiB,EAAE,CAAC,yCAAD,CA7Bf;AA8BJC,IAAAA,qBAAqB,EAAE,CACnB,0DADmB,EAEnB;AAAErI,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,aAAD;AAAZ;AAAb,KAFmB,CA9BnB;AAkCJqI,IAAAA,wBAAwB,EAAE,CAAC,kBAAD,CAlCtB;AAmCJC,IAAAA,UAAU,EAAE,CAAC,wBAAD,CAnCR;AAoCJC,IAAAA,WAAW,EAAE,CAAC,kCAAD,CApCT;AAqCJC,IAAAA,sBAAsB,EAAE,CACpB,gEADoB,CArCpB;AAwCJC,IAAAA,iBAAiB,EAAE,CAAC,kCAAD,CAxCf;AAyCJC,IAAAA,iBAAiB,EAAE,CACf,wDADe,CAzCf;AA4CJC,IAAAA,cAAc,EAAE,CAAC,sCAAD,CA5CZ;AA6CJC,IAAAA,IAAI,EAAE,CAAC,sDAAD,CA7CF;AA8CJC,IAAAA,eAAe,EAAE,CACb,2DADa,CA9Cb;AAiDJC,IAAAA,eAAe,EAAE,CACb,8DADa,CAjDb;AAoDJC,IAAAA,WAAW,EAAE,CACT,kEADS,CApDT;AAuDJC,IAAAA,SAAS,EAAE,CAAC,wDAAD,CAvDP;AAwDJC,IAAAA,MAAM,EAAE,CAAC,yDAAD,CAxDJ;AAyDJhG,IAAAA,MAAM,EAAE,CAAC,mDAAD,CAzDJ;AA0DJwC,IAAAA,aAAa,EAAE,CAAC,0DAAD,CA1DX;AA2DJyD,IAAAA,WAAW,EAAE,CAAC,2CAAD,CA3DT;AA4DJC,IAAAA,eAAe,EAAE,CACb,2DADa;AA5Db,GAzYM;AAycdC,EAAAA,QAAQ,EAAE;AACN3G,IAAAA,GAAG,EAAE,CAAC,yBAAD,CADC;AAEN4G,IAAAA,kBAAkB,EAAE,CAAC,eAAD,CAFd;AAGNxF,IAAAA,UAAU,EAAE,CAAC,mCAAD;AAHN,GAzcI;AA8cdyF,EAAAA,QAAQ,EAAE;AACNC,IAAAA,MAAM,EAAE,CAAC,gBAAD,CADF;AAENC,IAAAA,SAAS,EAAE,CACP,oBADO,EAEP;AAAEC,MAAAA,OAAO,EAAE;AAAE,wBAAgB;AAAlB;AAAX,KAFO;AAFL,GA9cI;AAqddC,EAAAA,IAAI,EAAE;AACFjH,IAAAA,GAAG,EAAE,CAAC,WAAD,CADH;AAEFkH,IAAAA,UAAU,EAAE,CAAC,cAAD,CAFV;AAGFC,IAAAA,MAAM,EAAE,CAAC,UAAD,CAHN;AAIFC,IAAAA,IAAI,EAAE,CAAC,OAAD;AAJJ,GArdQ;AA2ddC,EAAAA,UAAU,EAAE;AACRC,IAAAA,YAAY,EAAE,CAAC,qCAAD,CADN;AAERC,IAAAA,iCAAiC,EAAE,CAC/B,gDAD+B,EAE/B;AAAEjK,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAF+B,CAF3B;AAMRiK,IAAAA,mBAAmB,EAAE,CACjB,sDADiB,EAEjB;AAAElK,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAFiB,CANb;AAURkK,IAAAA,qBAAqB,EAAE,CACnB,mDADmB,EAEnB;AAAEnK,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAFmB,CAVf;AAcRmK,IAAAA,8BAA8B,EAAE,CAC5B,6CAD4B,EAE5B;AAAEpK,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAF4B,CAdxB;AAkBRoK,IAAAA,gBAAgB,EAAE,CAAC,0CAAD,CAlBV;AAmBRC,IAAAA,eAAe,EAAE,CAAC,kCAAD,CAnBT;AAoBRC,IAAAA,aAAa,EAAE,CAAC,8CAAD,CApBP;AAqBRC,IAAAA,6BAA6B,EAAE,CAC3B,qCAD2B,EAE3B;AAAExK,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAF2B,CArBvB;AAyBRwK,IAAAA,eAAe,EAAE,CACb,2CADa,EAEb;AAAEzK,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAFa,CAzBT;AA6BRqI,IAAAA,wBAAwB,EAAE,CACtB,sBADsB,EAEtB;AAAEtI,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAFsB,CA7BlB;AAiCRsI,IAAAA,UAAU,EAAE,CACR,4BADQ,EAER;AAAEvI,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAFQ,CAjCJ;AAqCRyK,IAAAA,eAAe,EAAE,CACb,wDADa,EAEb;AAAE1K,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAFa,CArCT;AAyCR0K,IAAAA,gBAAgB,EAAE,CACd,kDADc,EAEd;AAAE3K,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAFc,CAzCV;AA6CR2K,IAAAA,eAAe,EAAE,CAAC,wDAAD,CA7CT;AA8CRC,IAAAA,gBAAgB,EAAE,CAAC,wCAAD,CA9CV;AA+CRC,IAAAA,yBAAyB,EAAE,CAAC,uBAAD,CA/CnB;AAgDRC,IAAAA,WAAW,EAAE,CAAC,6BAAD,CAhDL;AAiDRC,IAAAA,WAAW,EAAE,CAAC,kCAAD,CAjDL;AAkDRC,IAAAA,8BAA8B,EAAE,CAC5B,+DAD4B,EAE5B;AAAEjL,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAF4B,CAlDxB;AAsDRiL,IAAAA,gBAAgB,EAAE,CACd,qEADc,EAEd;AAAElL,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,WAAD;AAAZ;AAAb,KAFc,CAtDV;AA0DRkL,IAAAA,YAAY,EAAE,CAAC,oCAAD;AA1DN,GA3dE;AAuhBdC,EAAAA,IAAI,EAAE;AACFC,IAAAA,SAAS,EAAE,CAAC,mCAAD,CADT;AAEFC,IAAAA,gBAAgB,EAAE,CAAC,mCAAD,CAFhB;AAGFC,IAAAA,sBAAsB,EAAE,CAAC,oCAAD,CAHtB;AAIFC,IAAAA,4BAA4B,EAAE,CAAC,2CAAD,CAJ5B;AAKFC,IAAAA,kCAAkC,EAAE,CAChC,kDADgC,CALlC;AAQFC,IAAAA,gBAAgB,EAAE,CAAC,8BAAD,CARhB;AASFC,IAAAA,aAAa,EAAE,CAAC,wBAAD,CATb;AAUFC,IAAAA,aAAa,EAAE,CAAC,oCAAD,CAVb;AAWFlJ,IAAAA,GAAG,EAAE,CAAC,iBAAD,CAXH;AAYFmJ,IAAAA,iCAAiC,EAAE,CAAC,kCAAD,CAZjC;AAaFC,IAAAA,oBAAoB,EAAE,CAAC,wCAAD,CAbpB;AAcFC,IAAAA,UAAU,EAAE,CAAC,iCAAD,CAdV;AAeFC,IAAAA,sBAAsB,EAAE,CAAC,wCAAD,CAftB;AAgBF/G,IAAAA,IAAI,EAAE,CAAC,oBAAD,CAhBJ;AAiBFgH,IAAAA,oBAAoB,EAAE,CAAC,+BAAD,CAjBpB;AAkBFC,IAAAA,gBAAgB,EAAE,CAAC,wBAAD,CAlBhB;AAmBF5D,IAAAA,wBAAwB,EAAE,CAAC,gBAAD,CAnBxB;AAoBFlD,IAAAA,WAAW,EAAE,CAAC,4BAAD,CApBX;AAqBF+G,IAAAA,mBAAmB,EAAE,CAAC,mDAAD,CArBnB;AAsBFC,IAAAA,WAAW,EAAE,CAAC,yBAAD,CAtBX;AAuBFC,IAAAA,mCAAmC,EAAE,CAAC,4BAAD,CAvBnC;AAwBFC,IAAAA,wBAAwB,EAAE,CAAC,uCAAD,CAxBxB;AAyBFC,IAAAA,sBAAsB,EAAE,CAAC,6BAAD,CAzBtB;AA0BFC,IAAAA,iBAAiB,EAAE,CAAC,gCAAD,CA1BjB;AA2BFC,IAAAA,YAAY,EAAE,CAAC,uBAAD,CA3BZ;AA4BFC,IAAAA,WAAW,EAAE,CAAC,wCAAD,CA5BX;AA6BFC,IAAAA,YAAY,EAAE,CAAC,uCAAD,CA7BZ;AA8BFC,IAAAA,uBAAuB,EAAE,CAAC,2CAAD,CA9BvB;AA+BFC,IAAAA,yBAAyB,EAAE,CACvB,qDADuB,CA/BzB;AAkCFC,IAAAA,0CAA0C,EAAE,CACxC,8CADwC,CAlC1C;AAqCFC,IAAAA,oBAAoB,EAAE,CAAC,wCAAD,CArCpB;AAsCFC,IAAAA,uCAAuC,EAAE,CACrC,2CADqC,CAtCvC;AAyCFC,IAAAA,WAAW,EAAE,CAAC,sCAAD,CAzCX;AA0CF/J,IAAAA,MAAM,EAAE,CAAC,mBAAD,CA1CN;AA2CFgK,IAAAA,oCAAoC,EAAE,CAClC,oCADkC,CA3CpC;AA8CFC,IAAAA,aAAa,EAAE,CAAC,mCAAD,CA9Cb;AA+CFC,IAAAA,yBAAyB,EAAE,CAAC,0CAAD;AA/CzB,GAvhBQ;AAwkBdC,EAAAA,QAAQ,EAAE;AACNC,IAAAA,eAAe,EAAE,CACb,qDADa,EAEb;AAAEtN,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFa,CADX;AAKNsN,IAAAA,UAAU,EAAE,CACR,0CADQ,EAER;AAAEvN,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFQ,CALN;AASNuN,IAAAA,YAAY,EAAE,CACV,qCADU,EAEV;AAAExN,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFU,CATR;AAaNwN,IAAAA,0BAA0B,EAAE,CACxB,qBADwB,EAExB;AAAEzN,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFwB,CAbtB;AAiBNyN,IAAAA,YAAY,EAAE,CACV,2BADU,EAEV;AAAE1N,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFU,CAjBR;AAqBN0N,IAAAA,aAAa,EAAE,CACX,qCADW,EAEX;AAAE3N,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFW,CArBT;AAyBN2E,IAAAA,MAAM,EAAE,CACJ,+BADI,EAEJ;AAAE5E,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFI,CAzBF;AA6BN2N,IAAAA,UAAU,EAAE,CACR,0CADQ,EAER;AAAE5N,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFQ,CA7BN;AAiCN4N,IAAAA,YAAY,EAAE,CACV,sCADU,EAEV;AAAE7N,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFU,CAjCR;AAqCNyC,IAAAA,GAAG,EAAE,CACD,4BADC,EAED;AAAE1C,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFC,CArCC;AAyCN6N,IAAAA,OAAO,EAAE,CACL,uCADK,EAEL;AAAE9N,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFK,CAzCH;AA6CN8N,IAAAA,SAAS,EAAE,CACP,mCADO,EAEP;AAAE/N,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFO,CA7CL;AAiDN+N,IAAAA,oBAAoB,EAAE,CAClB,gEADkB,EAElB;AAAEhO,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFkB,CAjDhB;AAqDNgO,IAAAA,SAAS,EAAE,CACP,yCADO,EAEP;AAAEjO,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFO,CArDL;AAyDNiO,IAAAA,iBAAiB,EAAE,CACf,0CADe,EAEf;AAAElO,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFe,CAzDb;AA6DNkO,IAAAA,WAAW,EAAE,CACT,oCADS,EAET;AAAEnO,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFS,CA7DP;AAiENsI,IAAAA,UAAU,EAAE,CACR,0BADQ,EAER;AAAEvI,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFQ,CAjEN;AAqENuI,IAAAA,WAAW,EAAE,CACT,oCADS,EAET;AAAExI,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFS,CArEP;AAyENmF,IAAAA,WAAW,EAAE,CACT,gCADS,EAET;AAAEpF,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFS,CAzEP;AA6ENmO,IAAAA,QAAQ,EAAE,CACN,8CADM,EAEN;AAAEpO,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFM,CA7EJ;AAiFNoO,IAAAA,UAAU,EAAE,CACR,0CADQ,EAER;AAAErO,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFQ,CAjFN;AAqFNqO,IAAAA,kBAAkB,EAAE,CAChB,wDADgB,EAEhB;AAAEtO,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFgB,CArFd;AAyFNiD,IAAAA,MAAM,EAAE,CACJ,8BADI,EAEJ;AAAElD,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFI,CAzFF;AA6FNsO,IAAAA,UAAU,EAAE,CACR,yCADQ,EAER;AAAEvO,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFQ,CA7FN;AAiGNuO,IAAAA,YAAY,EAAE,CACV,qCADU,EAEV;AAAExO,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFU;AAjGR,GAxkBI;AA8qBdwO,EAAAA,KAAK,EAAE;AACHC,IAAAA,aAAa,EAAE,CAAC,qDAAD,CADZ;AAEHlM,IAAAA,MAAM,EAAE,CAAC,kCAAD,CAFL;AAGHmM,IAAAA,2BAA2B,EAAE,CACzB,8EADyB,CAH1B;AAMHC,IAAAA,YAAY,EAAE,CAAC,wDAAD,CANX;AAOHC,IAAAA,mBAAmB,EAAE,CACjB,yDADiB,CAPlB;AAUHC,IAAAA,mBAAmB,EAAE,CACjB,sEADiB,CAVlB;AAaHC,IAAAA,mBAAmB,EAAE,CACjB,0DADiB,CAblB;AAgBHC,IAAAA,aAAa,EAAE,CACX,8EADW,CAhBZ;AAmBHtM,IAAAA,GAAG,EAAE,CAAC,+CAAD,CAnBF;AAoBHuM,IAAAA,SAAS,EAAE,CACP,mEADO,CApBR;AAuBHC,IAAAA,gBAAgB,EAAE,CAAC,uDAAD,CAvBf;AAwBHjK,IAAAA,IAAI,EAAE,CAAC,iCAAD,CAxBH;AAyBHkK,IAAAA,qBAAqB,EAAE,CACnB,4EADmB,CAzBpB;AA4BHhK,IAAAA,WAAW,EAAE,CAAC,uDAAD,CA5BV;AA6BHiK,IAAAA,SAAS,EAAE,CAAC,qDAAD,CA7BR;AA8BHC,IAAAA,sBAAsB,EAAE,CACpB,mEADoB,CA9BrB;AAiCHC,IAAAA,kBAAkB,EAAE,CAChB,wDADgB,CAjCjB;AAoCHC,IAAAA,yBAAyB,EAAE,CAAC,0CAAD,CApCxB;AAqCHC,IAAAA,WAAW,EAAE,CAAC,uDAAD,CArCV;AAsCHC,IAAAA,KAAK,EAAE,CAAC,qDAAD,CAtCJ;AAuCHC,IAAAA,wBAAwB,EAAE,CACtB,sEADsB,CAvCvB;AA0CHC,IAAAA,gBAAgB,EAAE,CACd,oEADc,CA1Cf;AA6CHC,IAAAA,YAAY,EAAE,CACV,2EADU,CA7CX;AAgDH1M,IAAAA,MAAM,EAAE,CAAC,iDAAD,CAhDL;AAiDH2M,IAAAA,YAAY,EAAE,CACV,6DADU,EAEV;AAAE7P,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,QAAD;AAAZ;AAAb,KAFU,CAjDX;AAqDH6P,IAAAA,YAAY,EAAE,CACV,mEADU,CArDX;AAwDHC,IAAAA,mBAAmB,EAAE,CACjB,yDADiB;AAxDlB,GA9qBO;AA0uBdC,EAAAA,SAAS,EAAE;AAAEtN,IAAAA,GAAG,EAAE,CAAC,iBAAD;AAAP,GA1uBG;AA2uBduN,EAAAA,SAAS,EAAE;AACPC,IAAAA,sBAAsB,EAAE,CACpB,4DADoB,EAEpB;AAAElQ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFoB,CADjB;AAKPkQ,IAAAA,cAAc,EAAE,CACZ,4DADY,EAEZ;AAAEnQ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFY,CALT;AASPmQ,IAAAA,qBAAqB,EAAE,CACnB,mEADmB,EAEnB;AAAEpQ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFmB,CAThB;AAaPoQ,IAAAA,iCAAiC,EAAE,CAC/B,kEAD+B,EAE/B;AAAErQ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAF+B,CAb5B;AAiBPqQ,IAAAA,mCAAmC,EAAE,CACjC,wGADiC,EAEjC;AAAEtQ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFiC,CAjB9B;AAqBPsQ,IAAAA,4BAA4B,EAAE,CAC1B,8EAD0B,EAE1B;AAAEvQ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAF0B,CArBvB;AAyBPuQ,IAAAA,sBAAsB,EAAE,CACpB,4EADoB,EAEpB;AAAExQ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFoB,CAzBjB;AA6BPwQ,IAAAA,cAAc,EAAE,CACZ,4EADY,EAEZ;AAAEzQ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFY,CA7BT;AAiCPyQ,IAAAA,qBAAqB,EAAE,CACnB,mFADmB,EAEnB;AAAE1Q,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFmB,CAjChB;AAqCP0Q,IAAAA,2BAA2B,EAAE,CACzB,kFADyB,EAEzB;AAAE3Q,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFyB,CArCtB;AAyCP2Q,IAAAA,uBAAuB,EAAE,CACrB,8FADqB,EAErB;AAAE5Q,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFqB,CAzClB;AA6CP4Q,IAAAA,8BAA8B,EAAE,CAC5B,wHAD4B,EAE5B;AAAE7Q,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAF4B,CA7CzB;AAiDP6Q,IAAAA,YAAY,EAAE,CACV,iCADU,EAEV;AAAE9Q,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFU,EAGV;AACI8Q,MAAAA,UAAU,EAAE;AADhB,KAHU,CAjDP;AAwDPC,IAAAA,oBAAoB,EAAE,CAClB,2DADkB,EAElB;AAAEhR,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFkB,CAxDf;AA4DPgR,IAAAA,YAAY,EAAE,CACV,2DADU,EAEV;AAAEjR,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFU,CA5DP;AAgEPiR,IAAAA,mBAAmB,EAAE,CACjB,kEADiB,EAEjB;AAAElR,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFiB,CAhEd;AAoEPkR,IAAAA,+BAA+B,EAAE,CAC7B,iEAD6B,EAE7B;AAAEnR,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAF6B,CApE1B;AAwEPmR,IAAAA,iCAAiC,EAAE,CAC/B,uGAD+B,EAE/B;AAAEpR,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAF+B,CAxE5B;AA4EPoR,IAAAA,0BAA0B,EAAE,CACxB,6EADwB,EAExB;AAAErR,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,eAAD;AAAZ;AAAb,KAFwB;AA5ErB,GA3uBG;AA4zBdqR,EAAAA,KAAK,EAAE;AACHC,IAAAA,gBAAgB,EAAE,CAAC,oDAAD,CADf;AAEHC,IAAAA,wBAAwB,EAAE,CACtB,2EADsB,EAEtB,EAFsB,EAGtB;AAAEC,MAAAA,SAAS,EAAE;AAAb,KAHsB,CAFvB;AAOHnE,IAAAA,eAAe,EAAE,CAAC,oDAAD,CAPd;AAQHoE,IAAAA,sBAAsB,EAAE,CACpB,yFADoB,EAEpB,EAFoB,EAGpB;AAAED,MAAAA,SAAS,EAAE;AAAb,KAHoB,CARrB;AAaHE,IAAAA,yBAAyB,EAAE,CACvB,4EADuB,EAEvB,EAFuB,EAGvB;AAAEF,MAAAA,SAAS,EAAE;AAAb,KAHuB,CAbxB;AAkBHG,IAAAA,yBAAyB,EAAE,CACvB,4EADuB,EAEvB,EAFuB,EAGvB;AAAEH,MAAAA,SAAS,EAAE;AAAb,KAHuB,CAlBxB;AAuBHI,IAAAA,iBAAiB,EAAE,CAAC,oDAAD,CAvBhB;AAwBHC,IAAAA,wBAAwB,EAAE,CACtB,gDADsB,EAEtB;AAAE9R,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,QAAD;AAAZ;AAAb,KAFsB,CAxBvB;AA4BH8R,IAAAA,cAAc,EAAE,CAAC,mDAAD,CA5Bb;AA6BHC,IAAAA,mBAAmB,EAAE,CACjB,0DADiB,CA7BlB;AAgCHC,IAAAA,+BAA+B,EAAE,CAC7B,6EAD6B,EAE7B;AAAEjS,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,OAAD;AAAZ;AAAb,KAF6B,CAhC9B;AAoCHiS,IAAAA,kBAAkB,EAAE,CAAC,2CAAD,CApCjB;AAqCHC,IAAAA,eAAe,EAAE,CAAC,iCAAD,CArCd;AAsCHC,IAAAA,gBAAgB,EAAE,CAAC,wCAAD,CAtCf;AAuCHC,IAAAA,sBAAsB,EAAE,CACpB,iEADoB,CAvCrB;AA0CHC,IAAAA,mBAAmB,EAAE,CAAC,uCAAD,CA1ClB;AA2CH7E,IAAAA,0BAA0B,EAAE,CAAC,kBAAD,CA3CzB;AA4CH8E,IAAAA,UAAU,EAAE,CAAC,kCAAD,CA5CT;AA6CHC,IAAAA,WAAW,EAAE,CAAC,wBAAD,CA7CV;AA8CHC,IAAAA,0BAA0B,EAAE,CAAC,2CAAD,CA9CzB;AA+CHC,IAAAA,eAAe,EAAE,CACb,kCADa,EAEb;AAAE1S,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,YAAD;AAAZ;AAAb,KAFa,CA/Cd;AAmDH0S,IAAAA,aAAa,EAAE,CAAC,qCAAD,CAnDZ;AAoDHC,IAAAA,mBAAmB,EAAE,CACjB,uDADiB,EAEjB;AAAE5S,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,UAAD;AAAZ;AAAb,KAFiB,CApDlB;AAwDH0L,IAAAA,aAAa,EAAE,CAAC,kCAAD,CAxDZ;AAyDHkH,IAAAA,iBAAiB,EAAE,CAAC,qDAAD,CAzDhB;AA0DHjO,IAAAA,MAAM,EAAE,CAAC,8BAAD,CA1DL;AA2DHkO,IAAAA,wBAAwB,EAAE,CACtB,wEADsB,CA3DvB;AA8DHC,IAAAA,2BAA2B,EAAE,CACzB,0EADyB,CA9D1B;AAiEHC,IAAAA,sBAAsB,EAAE,CACpB,2DADoB,CAjErB;AAoEHC,IAAAA,mBAAmB,EAAE,CAAC,oDAAD,CApElB;AAqEHC,IAAAA,+BAA+B,EAAE,CAC7B,+EAD6B,EAE7B;AAAElT,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,OAAD;AAAZ;AAAb,KAF6B,CArE9B;AAyEHkT,IAAAA,eAAe,EAAE,CAAC,4CAAD,CAzEd;AA0EHC,IAAAA,gBAAgB,EAAE,CACd,0DADc,CA1Ef;AA6EHC,IAAAA,UAAU,EAAE,CAAC,8CAAD,CA7ET;AA8EHC,IAAAA,gBAAgB,EAAE,CACd,0DADc,CA9Ef;AAiFHC,IAAAA,eAAe,EAAE,CACb,oCADa,EAEb;AAAEvT,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,YAAD;AAAZ;AAAb,KAFa,CAjFd;AAqFHuT,IAAAA,iCAAiC,EAAE,CAC/B,yFAD+B,CArFhC;AAwFHC,IAAAA,aAAa,EAAE,CAAC,oDAAD,CAxFZ;AAyFHC,IAAAA,kBAAkB,EAAE,CAChB,yDADgB,CAzFjB;AA4FH9H,IAAAA,aAAa,EAAE,CAAC,8CAAD,CA5FZ;AA6FH+H,IAAAA,6BAA6B,EAAE,CAC3B,uDAD2B,EAE3B;AAAE3T,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,QAAD;AAAZ;AAAb,KAF2B,CA7F5B;AAiGH2T,IAAAA,0BAA0B,EAAE,CACxB,mDADwB,EAExB;AAAE5T,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,QAAD;AAAZ;AAAb,KAFwB,CAjGzB;AAqGH4T,IAAAA,eAAe,EAAE,CACb,yCADa,EAEb,EAFa,EAGb;AAAEhY,MAAAA,OAAO,EAAE,CAAC,OAAD,EAAU,wBAAV;AAAX,KAHa,CArGd;AA0GHiY,IAAAA,sBAAsB,EAAE,CAAC,yCAAD,CA1GrB;AA2GHC,IAAAA,sBAAsB,EAAE,CAAC,yCAAD,CA3GrB;AA4GHC,IAAAA,4BAA4B,EAAE,CAC1B,oDAD0B,EAE1B;AAAEhU,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,QAAD;AAAZ;AAAb,KAF0B,CA5G3B;AAgHHgU,IAAAA,yBAAyB,EAAE,CACvB,gDADuB,EAEvB;AAAEjU,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,QAAD;AAAZ;AAAb,KAFuB,CAhHxB;AAoHHyC,IAAAA,GAAG,EAAE,CAAC,2BAAD,CApHF;AAqHHwR,IAAAA,qBAAqB,EAAE,CACnB,qEADmB,CArHpB;AAwHHC,IAAAA,wBAAwB,EAAE,CACtB,uEADsB,CAxHvB;AA2HHC,IAAAA,yBAAyB,EAAE,CACvB,wFADuB,CA3HxB;AA8HHC,IAAAA,YAAY,EAAE,CACV,kCADU,EAEV;AAAErU,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,OAAD;AAAZ;AAAb,KAFU,CA9HX;AAkIHqU,IAAAA,kCAAkC,EAAE,CAChC,0EADgC,CAlIjC;AAqIHC,IAAAA,SAAS,EAAE,CAAC,6CAAD,CArIR;AAsIHC,IAAAA,mBAAmB,EAAE,CACjB,wDADiB,CAtIlB;AAyIHC,IAAAA,SAAS,EAAE,CAAC,0CAAD,CAzIR;AA0IHC,IAAAA,qBAAqB,EAAE,CAAC,gDAAD,CA1IpB;AA2IHC,IAAAA,8BAA8B,EAAE,CAC5B,+DAD4B,CA3I7B;AA8IHC,IAAAA,uBAAuB,EAAE,CAAC,gDAAD,CA9ItB;AA+IHzO,IAAAA,SAAS,EAAE,CAAC,yCAAD,CA/IR;AAgJH0O,IAAAA,sBAAsB,EAAE,CAAC,iDAAD,CAhJrB;AAiJHC,IAAAA,gBAAgB,EAAE,CAAC,iDAAD,CAjJf;AAkJHC,IAAAA,4BAA4B,EAAE,CAC1B,4EAD0B,EAE1B;AAAE/U,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,OAAD;AAAZ;AAAb,KAF0B,CAlJ3B;AAsJH+U,IAAAA,0BAA0B,EAAE,CAAC,6CAAD,CAtJzB;AAuJHC,IAAAA,UAAU,EAAE,CAAC,2CAAD,CAvJT;AAwJHC,IAAAA,oBAAoB,EAAE,CAAC,8CAAD,CAxJnB;AAyJHC,IAAAA,YAAY,EAAE,CAAC,yCAAD,CAzJX;AA0JHC,IAAAA,aAAa,EAAE,CAAC,uDAAD,CA1JZ;AA2JHC,IAAAA,mBAAmB,EAAE,CACjB,4EADiB,CA3JlB;AA8JHC,IAAAA,mBAAmB,EAAE,CAAC,+CAAD,CA9JlB;AA+JHC,IAAAA,gBAAgB,EAAE,CAAC,2CAAD,CA/Jf;AAgKHC,IAAAA,QAAQ,EAAE,CAAC,iCAAD,CAhKP;AAiKHC,IAAAA,aAAa,EAAE,CAAC,mDAAD,CAjKZ;AAkKHC,IAAAA,qBAAqB,EAAE,CAAC,+CAAD,CAlKpB;AAmKHC,IAAAA,8BAA8B,EAAE,CAC5B,sFAD4B,CAnK7B;AAsKHC,IAAAA,iBAAiB,EAAE,CAAC,4CAAD,CAtKhB;AAuKHC,IAAAA,SAAS,EAAE,CAAC,kCAAD,CAvKR;AAwKHC,IAAAA,UAAU,EAAE,CAAC,iDAAD,CAxKT;AAyKHC,IAAAA,eAAe,EAAE,CAAC,sDAAD,CAzKd;AA0KHC,IAAAA,eAAe,EAAE,CAAC,+CAAD,CA1Kd;AA2KHC,IAAAA,yBAAyB,EAAE,CACvB,+EADuB,CA3KxB;AA8KHC,IAAAA,mCAAmC,EAAE,CACjC,2EADiC,CA9KlC;AAiLHC,IAAAA,WAAW,EAAE,CAAC,iDAAD,CAjLV;AAkLHC,IAAAA,eAAe,EAAE,CAAC,qDAAD,CAlLd;AAmLHC,IAAAA,mCAAmC,EAAE,CACjC,2EADiC,CAnLlC;AAsLHC,IAAAA,QAAQ,EAAE,CAAC,yCAAD,CAtLP;AAuLHvK,IAAAA,UAAU,EAAE,CAAC,2CAAD,CAvLT;AAwLHwK,IAAAA,uBAAuB,EAAE,CACrB,kDADqB,CAxLtB;AA2LHC,IAAAA,YAAY,EAAE,CAAC,oCAAD,CA3LX;AA4LHC,IAAAA,yBAAyB,EAAE,CACvB,oEADuB,EAEvB;AAAEzW,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,OAAD;AAAZ;AAAb,KAFuB,CA5LxB;AAgMHiO,IAAAA,iBAAiB,EAAE,CAAC,yCAAD,CAhMhB;AAiMHwI,IAAAA,qBAAqB,EAAE,CACnB,yDADmB,CAjMpB;AAoMHC,IAAAA,yBAAyB,EAAE,CAAC,oCAAD,CApMxB;AAqMHC,IAAAA,wBAAwB,EAAE,CACtB,kDADsB,CArMvB;AAwMHzR,IAAAA,WAAW,EAAE,CAAC,mCAAD,CAxMV;AAyMH0R,IAAAA,gBAAgB,EAAE,CAAC,wCAAD,CAzMf;AA0MHC,IAAAA,cAAc,EAAE,CAAC,gCAAD,CA1Mb;AA2MHC,IAAAA,sBAAsB,EAAE,CACpB,gEADoB,CA3MrB;AA8MHC,IAAAA,eAAe,EAAE,CAAC,uCAAD,CA9Md;AA+MH1O,IAAAA,wBAAwB,EAAE,CAAC,iBAAD,CA/MvB;AAgNHC,IAAAA,UAAU,EAAE,CAAC,uBAAD,CAhNT;AAiNHnD,IAAAA,WAAW,EAAE,CAAC,6BAAD,CAjNV;AAkNHC,IAAAA,SAAS,EAAE,CAAC,iCAAD,CAlNR;AAmNH4R,IAAAA,eAAe,EAAE,CAAC,uCAAD,CAnNd;AAoNHC,IAAAA,mCAAmC,EAAE,CAAC,kCAAD,CApNlC;AAqNHC,IAAAA,aAAa,EAAE,CAAC,qCAAD,CArNZ;AAsNHC,IAAAA,eAAe,EAAE,CAAC,wCAAD,CAtNd;AAuNH9R,IAAAA,UAAU,EAAE,CAAC,mBAAD,CAvNT;AAwNH+R,IAAAA,oCAAoC,EAAE,CAClC,sDADkC,EAElC;AAAErX,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,OAAD;AAAZ;AAAb,KAFkC,CAxNnC;AA4NHqX,IAAAA,iBAAiB,EAAE,CACf,wDADe,CA5NhB;AA+NHC,IAAAA,YAAY,EAAE,CAAC,oCAAD,CA/NX;AAgOHC,IAAAA,QAAQ,EAAE,CAAC,gCAAD,CAhOP;AAiOHC,IAAAA,SAAS,EAAE,CAAC,iCAAD,CAjOR;AAkOHhL,IAAAA,YAAY,EAAE,CAAC,iCAAD,CAlOX;AAmOHgD,IAAAA,KAAK,EAAE,CAAC,mCAAD,CAnOJ;AAoOH/C,IAAAA,WAAW,EAAE,CAAC,kDAAD,CApOV;AAqOHgL,IAAAA,2BAA2B,EAAE,CACzB,6EADyB,EAEzB,EAFyB,EAGzB;AAAEjG,MAAAA,SAAS,EAAE;AAAb,KAHyB,CArO1B;AA0OHnD,IAAAA,kBAAkB,EAAE,CAChB,uDADgB,CA1OjB;AA6OHqJ,IAAAA,yBAAyB,EAAE,CACvB,2FADuB,EAEvB,EAFuB,EAGvB;AAAElG,MAAAA,SAAS,EAAE;AAAb,KAHuB,CA7OxB;AAkPHmG,IAAAA,2BAA2B,EAAE,CACzB,kFADyB,CAlP1B;AAqPHC,IAAAA,4BAA4B,EAAE,CAC1B,8EAD0B,EAE1B,EAF0B,EAG1B;AAAEpG,MAAAA,SAAS,EAAE;AAAb,KAH0B,CArP3B;AA0PHqG,IAAAA,4BAA4B,EAAE,CAC1B,8EAD0B,EAE1B,EAF0B,EAG1B;AAAErG,MAAAA,SAAS,EAAE;AAAb,KAH0B,CA1P3B;AA+PHsG,IAAAA,gBAAgB,EAAE,CACd,kCADc,EAEd;AAAE/X,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,OAAD;AAAZ;AAAb,KAFc,CA/Pf;AAmQH+X,IAAAA,iBAAiB,EAAE,CAAC,yCAAD,CAnQhB;AAoQHC,IAAAA,wBAAwB,EAAE,CACtB,wEADsB,CApQvB;AAuQHC,IAAAA,wBAAwB,EAAE,CACtB,0EADsB,EAEtB,EAFsB,EAGtB;AAAEzG,MAAAA,SAAS,EAAE;AAAb,KAHsB,CAvQvB;AA4QH0G,IAAAA,sBAAsB,EAAE,CACpB,wFADoB,EAEpB,EAFoB,EAGpB;AAAE1G,MAAAA,SAAS,EAAE;AAAb,KAHoB,CA5QrB;AAiRH2G,IAAAA,yBAAyB,EAAE,CACvB,2EADuB,EAEvB,EAFuB,EAGvB;AAAE3G,MAAAA,SAAS,EAAE;AAAb,KAHuB,CAjRxB;AAsRH4G,IAAAA,yBAAyB,EAAE,CACvB,2EADuB,EAEvB,EAFuB,EAGvB;AAAE5G,MAAAA,SAAS,EAAE;AAAb,KAHuB,CAtRxB;AA2RH6G,IAAAA,eAAe,EAAE,CAAC,kDAAD,CA3Rd;AA4RHC,IAAAA,QAAQ,EAAE,CAAC,qCAAD,CA5RP;AA6RHrV,IAAAA,MAAM,EAAE,CAAC,6BAAD,CA7RL;AA8RHsV,IAAAA,sBAAsB,EAAE,CACpB,wDADoB,CA9RrB;AAiSHC,IAAAA,mBAAmB,EAAE,CAAC,mDAAD,CAjSlB;AAkSHC,IAAAA,+BAA+B,EAAE,CAAC,iCAAD,CAlS9B;AAmSHC,IAAAA,gBAAgB,EAAE,CACd,yDADc,CAnSf;AAsSHC,IAAAA,iCAAiC,EAAE,CAC/B,wFAD+B,CAtShC;AAySHC,IAAAA,aAAa,EAAE,CAAC,mDAAD,CAzSZ;AA0SHC,IAAAA,kBAAkB,EAAE,CAChB,wDADgB,CA1SjB;AA6SHC,IAAAA,0BAA0B,EAAE,CACxB,iFADwB,EAExB,EAFwB,EAGxB;AAAEld,MAAAA,OAAO,EAAE,CAAC,OAAD,EAAU,6BAAV;AAAX,KAHwB,CA7SzB;AAkTHmd,IAAAA,2BAA2B,EAAE,CACzB,iFADyB,CAlT1B;AAqTH7L,IAAAA,aAAa,EAAE,CAAC,6CAAD,CArTZ;AAsTH8L,IAAAA,0BAA0B,EAAE,CACxB,oDADwB,CAtTzB;AAyTHC,IAAAA,kBAAkB,EAAE,CAChB,sEADgB,EAEhB;AAAEC,MAAAA,OAAO,EAAE;AAAX,KAFgB;AAzTjB,GA5zBO;AA0nCdC,EAAAA,MAAM,EAAE;AACJC,IAAAA,IAAI,EAAE,CAAC,kBAAD,CADF;AAEJC,IAAAA,OAAO,EAAE,CAAC,qBAAD,EAAwB;AAAEtZ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,OAAD;AAAZ;AAAb,KAAxB,CAFL;AAGJsZ,IAAAA,qBAAqB,EAAE,CAAC,oBAAD,CAHnB;AAIJC,IAAAA,MAAM,EAAE,CAAC,oBAAD,CAJJ;AAKJlI,IAAAA,KAAK,EAAE,CAAC,0BAAD,CALH;AAMJmI,IAAAA,MAAM,EAAE,CAAC,oBAAD,EAAuB;AAAEzZ,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,OAAD;AAAZ;AAAb,KAAvB,CANJ;AAOJyZ,IAAAA,KAAK,EAAE,CAAC,mBAAD;AAPH,GA1nCM;AAmoCdC,EAAAA,cAAc,EAAE;AACZvW,IAAAA,QAAQ,EAAE,CACN,iEADM,CADE;AAIZG,IAAAA,iBAAiB,EAAE,CAAC,kDAAD,CAJP;AAKZE,IAAAA,WAAW,EAAE,CACT,mEADS;AALD,GAnoCF;AA4oCdmW,EAAAA,KAAK,EAAE;AACHC,IAAAA,iCAAiC,EAAE,CAC/B,0DAD+B,CADhC;AAIHC,IAAAA,kCAAkC,EAAE,CAChC,yDADgC,EAEhC;AAAE9Z,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFgC,CAJjC;AAQH8Z,IAAAA,+BAA+B,EAAE,CAC7B,wDAD6B,CAR9B;AAWHC,IAAAA,+BAA+B,EAAE,CAC7B,yDAD6B,EAE7B;AAAEha,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAF6B,CAX9B;AAeHga,IAAAA,4BAA4B,EAAE,CAC1B,wDAD0B,CAf3B;AAkBHzX,IAAAA,MAAM,EAAE,CAAC,wBAAD,CAlBL;AAmBH0X,IAAAA,4BAA4B,EAAE,CAC1B,6EAD0B,CAnB3B;AAsBHC,IAAAA,qBAAqB,EAAE,CAAC,gDAAD,CAtBpB;AAuBHC,IAAAA,4BAA4B,EAAE,CAC1B,gGAD0B,CAvB3B;AA0BHC,IAAAA,qBAAqB,EAAE,CACnB,sEADmB,CA1BpB;AA6BHC,IAAAA,WAAW,EAAE,CAAC,sCAAD,CA7BV;AA8BHC,IAAAA,SAAS,EAAE,CAAC,mCAAD,CA9BR;AA+BHC,IAAAA,yBAAyB,EAAE,CACvB,6FADuB,CA/BxB;AAkCHC,IAAAA,kBAAkB,EAAE,CAChB,mEADgB,CAlCjB;AAqCHC,IAAAA,yBAAyB,EAAE,CACvB,0DADuB,CArCxB;AAwCHzV,IAAAA,IAAI,EAAE,CAAC,uBAAD,CAxCH;AAyCH0V,IAAAA,cAAc,EAAE,CAAC,yCAAD,CAzCb;AA0CHC,IAAAA,2BAA2B,EAAE,CACzB,4EADyB,CA1C1B;AA6CHC,IAAAA,oBAAoB,EAAE,CAAC,+CAAD,CA7CnB;AA8CHvS,IAAAA,wBAAwB,EAAE,CAAC,iBAAD,CA9CvB;AA+CHwS,IAAAA,gBAAgB,EAAE,CAAC,2CAAD,CA/Cf;AAgDHC,IAAAA,2BAA2B,EAAE,CACzB,+CADyB,CAhD1B;AAmDHC,IAAAA,iBAAiB,EAAE,CACf,4CADe,EAEf;AAAEhb,MAAAA,SAAS,EAAE;AAAEC,QAAAA,QAAQ,EAAE,CAAC,SAAD;AAAZ;AAAb,KAFe,CAnDhB;AAuDHgb,IAAAA,cAAc,EAAE,CAAC,yCAAD,CAvDb;AAwDHC,IAAAA,4BAA4B,EAAE,CAC1B,6DAD0B,CAxD3B;AA2DHC,IAAAA,kBAAkB,EAAE,CAChB,4DADgB,CA3DjB;AA8DHC,IAAAA,eAAe,EAAE,CACb,2DADa,CA9Dd;AAiEHC,IAAAA,4BAA4B,EAAE,CAC1B,+FAD0B,CAjE3B;AAoEHC,IAAAA,qBAAqB,EAAE,CACnB,qEADmB,CApEpB;AAuEHC,IAAAA,WAAW,EAAE,CAAC,qCAAD;AAvEV,GA5oCO;AAqtCd7B,EAAAA,KAAK,EAAE;AACH8B,IAAAA,wBAAwB,EAAE,CAAC,mBAAD,CADvB;AAEHC,IAAAA,KAAK,EAAE,CAAC,6BAAD,CAFJ;AAGHC,IAAAA,YAAY,EAAE,CAAC,6BAAD,CAHX;AAIHC,IAAAA,qBAAqB,EAAE,CAAC,+CAAD,CAJpB;AAKHC,IAAAA,oCAAoC,EAAE,CAAC,gCAAD,CALnC;AAMHC,IAAAA,4BAA4B,EAAE,CAAC,qBAAD,CAN3B;AAOHC,IAAAA,kCAAkC,EAAE,CAAC,iBAAD,CAPjC;AAQHC,IAAAA,2BAA2B,EAAE,CAAC,qBAAD,CAR1B;AASHC,IAAAA,4BAA4B,EAAE,CAAC,oCAAD,CAT3B;AAUHC,IAAAA,kCAAkC,EAAE,CAAC,4BAAD,CAVjC;AAWHC,IAAAA,MAAM,EAAE,CAAC,gCAAD,CAXL;AAYH3b,IAAAA,gBAAgB,EAAE,CAAC,WAAD,CAZf;AAaH4b,IAAAA,aAAa,EAAE,CAAC,uBAAD,CAbZ;AAcHC,IAAAA,iBAAiB,EAAE,CAAC,iCAAD,CAdhB;AAeHC,IAAAA,yBAAyB,EAAE,CAAC,iCAAD,CAfxB;AAgBHC,IAAAA,+BAA+B,EAAE,CAAC,yBAAD,CAhB9B;AAiBHrX,IAAAA,IAAI,EAAE,CAAC,YAAD,CAjBH;AAkBHsX,IAAAA,0BAA0B,EAAE,CAAC,kBAAD,CAlBzB;AAmBHC,IAAAA,0BAA0B,EAAE,CAAC,kBAAD,CAnBzB;AAoBHC,IAAAA,2BAA2B,EAAE,CAAC,qBAAD,CApB1B;AAqBHC,IAAAA,iCAAiC,EAAE,CAAC,qBAAD,CArBhC;AAsBHC,IAAAA,oBAAoB,EAAE,CAAC,iCAAD,CAtBnB;AAuBHC,IAAAA,oBAAoB,EAAE,CAAC,iCAAD,CAvBnB;AAwBHC,IAAAA,2BAA2B,EAAE,CAAC,oBAAD,CAxB1B;AAyBHC,IAAAA,kBAAkB,EAAE,CAAC,gCAAD,CAzBjB;AA0BHC,IAAAA,gCAAgC,EAAE,CAAC,yBAAD,CA1B/B;AA2BHC,IAAAA,qBAAqB,EAAE,CAAC,4BAAD,CA3BpB;AA4BHC,IAAAA,iCAAiC,EAAE,CAAC,gBAAD,CA5BhC;AA6BHC,IAAAA,yCAAyC,EAAE,CAAC,8BAAD,CA7BxC;AA8BHC,IAAAA,OAAO,EAAE,CAAC,gCAAD,CA9BN;AA+BHC,IAAAA,QAAQ,EAAE,CAAC,mCAAD,CA/BP;AAgCHC,IAAAA,mBAAmB,EAAE,CAAC,aAAD;AAhClB;AArtCO,CAAlB;;ACAO,MAAMC,OAAO,GAAG,mBAAhB;;ACAA,SAASC,kBAAT,CAA4BC,OAA5B,EAAqCC,YAArC,EAAmD;AACtD,QAAMC,UAAU,GAAG,EAAnB;;AACA,OAAK,MAAM,CAACC,KAAD,EAAQC,SAAR,CAAX,IAAiCC,MAAM,CAACC,OAAP,CAAeL,YAAf,CAAjC,EAA+D;AAC3D,SAAK,MAAM,CAACM,UAAD,EAAaC,QAAb,CAAX,IAAqCH,MAAM,CAACC,OAAP,CAAeF,SAAf,CAArC,EAAgE;AAC5D,YAAM,CAACK,KAAD,EAAQC,QAAR,EAAkBC,WAAlB,IAAiCH,QAAvC;AACA,YAAM,CAACI,MAAD,EAASC,GAAT,IAAgBJ,KAAK,CAACK,KAAN,CAAY,GAAZ,CAAtB;AACA,YAAMC,gBAAgB,GAAGV,MAAM,CAACW,MAAP,CAAc;AAAEJ,QAAAA,MAAF;AAAUC,QAAAA;AAAV,OAAd,EAA+BH,QAA/B,CAAzB;;AACA,UAAI,CAACR,UAAU,CAACC,KAAD,CAAf,EAAwB;AACpBD,QAAAA,UAAU,CAACC,KAAD,CAAV,GAAoB,EAApB;AACH;;AACD,YAAMc,YAAY,GAAGf,UAAU,CAACC,KAAD,CAA/B;;AACA,UAAIQ,WAAJ,EAAiB;AACbM,QAAAA,YAAY,CAACV,UAAD,CAAZ,GAA2BW,QAAQ,CAAClB,OAAD,EAAUG,KAAV,EAAiBI,UAAjB,EAA6BQ,gBAA7B,EAA+CJ,WAA/C,CAAnC;AACA;AACH;;AACDM,MAAAA,YAAY,CAACV,UAAD,CAAZ,GAA2BP,OAAO,CAACmB,OAAR,CAAgBT,QAAhB,CAAyBK,gBAAzB,CAA3B;AACH;AACJ;;AACD,SAAOb,UAAP;AACH;;AACD,SAASgB,QAAT,CAAkBlB,OAAlB,EAA2BG,KAA3B,EAAkCI,UAAlC,EAA8CG,QAA9C,EAAwDC,WAAxD,EAAqE;AACjE,QAAMS,mBAAmB,GAAGpB,OAAO,CAACmB,OAAR,CAAgBT,QAAhB,CAAyBA,QAAzB,CAA5B;AACA;;AACA,WAASW,eAAT,CAAyB,GAAGC,IAA5B,EAAkC;AAC9B;AACA,QAAIC,OAAO,GAAGH,mBAAmB,CAACZ,QAApB,CAA6BvO,KAA7B,CAAmC,GAAGqP,IAAtC,CAAd,CAF8B;;AAI9B,QAAIX,WAAW,CAAC1M,SAAhB,EAA2B;AACvBsN,MAAAA,OAAO,GAAGlB,MAAM,CAACW,MAAP,CAAc,EAAd,EAAkBO,OAAlB,EAA2B;AACjCC,QAAAA,IAAI,EAAED,OAAO,CAACZ,WAAW,CAAC1M,SAAb,CADoB;AAEjC,SAAC0M,WAAW,CAAC1M,SAAb,GAAyBwN;AAFQ,OAA3B,CAAV;AAIA,aAAOL,mBAAmB,CAACG,OAAD,CAA1B;AACH;;AACD,QAAIZ,WAAW,CAACtiB,OAAhB,EAAyB;AACrB,YAAM,CAACqjB,QAAD,EAAWC,aAAX,IAA4BhB,WAAW,CAACtiB,OAA9C;AACA2hB,MAAAA,OAAO,CAAC4B,GAAR,CAAYC,IAAZ,CAAkB,WAAU1B,KAAM,IAAGI,UAAW,kCAAiCmB,QAAS,IAAGC,aAAc,IAA3G;AACH;;AACD,QAAIhB,WAAW,CAACpN,UAAhB,EAA4B;AACxByM,MAAAA,OAAO,CAAC4B,GAAR,CAAYC,IAAZ,CAAiBlB,WAAW,CAACpN,UAA7B;AACH;;AACD,QAAIoN,WAAW,CAAC9a,iBAAhB,EAAmC;AAC/B;AACA,YAAM0b,OAAO,GAAGH,mBAAmB,CAACZ,QAApB,CAA6BvO,KAA7B,CAAmC,GAAGqP,IAAtC,CAAhB;;AACA,WAAK,MAAM,CAACQ,IAAD,EAAOC,KAAP,CAAX,IAA4B1B,MAAM,CAACC,OAAP,CAAeK,WAAW,CAAC9a,iBAA3B,CAA5B,EAA2E;AACvE,YAAIic,IAAI,IAAIP,OAAZ,EAAqB;AACjBvB,UAAAA,OAAO,CAAC4B,GAAR,CAAYC,IAAZ,CAAkB,IAAGC,IAAK,0CAAyC3B,KAAM,IAAGI,UAAW,aAAYwB,KAAM,WAAzG;;AACA,cAAI,EAAEA,KAAK,IAAIR,OAAX,CAAJ,EAAyB;AACrBA,YAAAA,OAAO,CAACQ,KAAD,CAAP,GAAiBR,OAAO,CAACO,IAAD,CAAxB;AACH;;AACD,iBAAOP,OAAO,CAACO,IAAD,CAAd;AACH;AACJ;;AACD,aAAOV,mBAAmB,CAACG,OAAD,CAA1B;AACH,KA/B6B;;;AAiC9B,WAAOH,mBAAmB,CAAC,GAAGE,IAAJ,CAA1B;AACH;;AACD,SAAOjB,MAAM,CAACW,MAAP,CAAcK,eAAd,EAA+BD,mBAA/B,CAAP;AACH;;ACxDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,AAAO,SAASY,mBAAT,CAA6BhC,OAA7B,EAAsC;AACzC,SAAOD,kBAAkB,CAACC,OAAD,EAAUiC,SAAV,CAAzB;AACH;AACDD,mBAAmB,CAAClC,OAApB,GAA8BA,OAA9B;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js deleted file mode 100644 index 32c2f39a3..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js +++ /dev/null @@ -1,60 +0,0 @@ -export function endpointsToMethods(octokit, endpointsMap) { - const newMethods = {}; - for (const [scope, endpoints] of Object.entries(endpointsMap)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign({ method, url }, defaults); - if (!newMethods[scope]) { - newMethods[scope] = {}; - } - const scopeMethods = newMethods[scope]; - if (decorations) { - scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations); - continue; - } - scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); - } - } - return newMethods; -} -function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - /* istanbul ignore next */ - function withDecorations(...args) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - let options = requestWithDefaults.endpoint.merge(...args); - // There are currently no other decorations than `.mapToData` - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: undefined, - }); - return requestWithDefaults(options); - } - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); - } - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } - if (decorations.renamedParameters) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - const options = requestWithDefaults.endpoint.merge(...args); - for (const [name, alias] of Object.entries(decorations.renamedParameters)) { - if (name in options) { - octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); - if (!(alias in options)) { - options[alias] = options[name]; - } - delete options[name]; - } - } - return requestWithDefaults(options); - } - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - return requestWithDefaults(...args); - } - return Object.assign(withDecorations, requestWithDefaults); -} diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js deleted file mode 100644 index 9d6c4cf6c..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js +++ /dev/null @@ -1,1273 +0,0 @@ -const Endpoints = { - actions: { - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", - ], - cancelWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel", - ], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: [ - "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}", - ], - createRegistrationTokenForOrg: [ - "POST /orgs/{org}/actions/runners/registration-token", - ], - createRegistrationTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/registration-token", - ], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/remove-token", - ], - createWorkflowDispatch: [ - "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", - ], - deleteArtifact: [ - "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}", - ], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteRepoSecret: [ - "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}", - ], - deleteSelfHostedRunnerFromOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}", - ], - deleteSelfHostedRunnerFromRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}", - ], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: [ - "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs", - ], - disableSelectedRepositoryGithubActionsOrganization: [ - "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}", - ], - disableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable", - ], - downloadArtifact: [ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}", - ], - downloadJobLogsForWorkflowRun: [ - "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs", - ], - downloadWorkflowRunLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs", - ], - enableSelectedRepositoryGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}", - ], - enableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable", - ], - getAllowedActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/selected-actions", - ], - getAllowedActionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/selected-actions", - ], - getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getGithubActionsPermissionsOrganization: [ - "GET /orgs/{org}/actions/permissions", - ], - getGithubActionsPermissionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions", - ], - getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], - getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getRepoPermissions: [ - "GET /repos/{owner}/{repo}/actions/permissions", - {}, - { renamed: ["actions", "getGithubActionsPermissionsRepository"] }, - ], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}", - ], - getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunUsage: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing", - ], - getWorkflowUsage: [ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing", - ], - listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listJobsForWorkflowRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", - ], - listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], - listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], - listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/downloads", - ], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", - ], - listSelectedRepositoriesEnabledGithubActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/repositories", - ], - listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], - listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", - ], - listWorkflowRuns: [ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", - ], - listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", - ], - setAllowedActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/selected-actions", - ], - setAllowedActionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions", - ], - setGithubActionsPermissionsOrganization: [ - "PUT /orgs/{org}/actions/permissions", - ], - setGithubActionsPermissionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions", - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories", - ], - setSelectedRepositoriesEnabledGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories", - ], - }, - activity: { - checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], - deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: [ - "DELETE /notifications/threads/{thread_id}/subscription", - ], - getFeeds: ["GET /feeds"], - getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], - getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: [ - "GET /notifications/threads/{thread_id}/subscription", - ], - listEventsForAuthenticatedUser: ["GET /users/{username}/events"], - listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: [ - "GET /users/{username}/events/orgs/{org}", - ], - listPublicEvents: ["GET /events"], - listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], - listPublicEventsForUser: ["GET /users/{username}/events/public"], - listPublicOrgEvents: ["GET /orgs/{org}/events"], - listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: [ - "GET /users/{username}/received_events/public", - ], - listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/notifications", - ], - listReposStarredByAuthenticatedUser: ["GET /user/starred"], - listReposStarredByUser: ["GET /users/{username}/starred"], - listReposWatchedByUser: ["GET /users/{username}/subscriptions"], - listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], - listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], - listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], - markNotificationsAsRead: ["PUT /notifications"], - markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], - markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], - setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: [ - "PUT /notifications/threads/{thread_id}/subscription", - ], - starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], - unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"], - }, - apps: { - addRepoToInstallation: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}", - ], - checkToken: ["POST /applications/{client_id}/token"], - createContentAttachment: [ - "POST /content_references/{content_reference_id}/attachments", - { mediaType: { previews: ["corsair"] } }, - ], - createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: [ - "POST /app/installations/{installation_id}/access_tokens", - ], - deleteAuthorization: ["DELETE /applications/{client_id}/grant"], - deleteInstallation: ["DELETE /app/installations/{installation_id}"], - deleteToken: ["DELETE /applications/{client_id}/token"], - getAuthenticated: ["GET /app"], - getBySlug: ["GET /apps/{app_slug}"], - getInstallation: ["GET /app/installations/{installation_id}"], - getOrgInstallation: ["GET /orgs/{org}/installation"], - getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: [ - "GET /marketplace_listing/accounts/{account_id}", - ], - getSubscriptionPlanForAccountStubbed: [ - "GET /marketplace_listing/stubbed/accounts/{account_id}", - ], - getUserInstallation: ["GET /users/{username}/installation"], - getWebhookConfigForApp: ["GET /app/hook/config"], - listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: [ - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", - ], - listInstallationReposForAuthenticatedUser: [ - "GET /user/installations/{installation_id}/repositories", - ], - listInstallations: ["GET /app/installations"], - listInstallationsForAuthenticatedUser: ["GET /user/installations"], - listPlans: ["GET /marketplace_listing/plans"], - listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], - listReposAccessibleToInstallation: ["GET /installation/repositories"], - listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: [ - "GET /user/marketplace_purchases/stubbed", - ], - removeRepoFromInstallation: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}", - ], - resetToken: ["PATCH /applications/{client_id}/token"], - revokeInstallationAccessToken: ["DELETE /installation/token"], - suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: [ - "DELETE /app/installations/{installation_id}/suspended", - ], - updateWebhookConfigForApp: ["PATCH /app/hook/config"], - }, - billing: { - getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: [ - "GET /users/{username}/settings/billing/actions", - ], - getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: [ - "GET /users/{username}/settings/billing/packages", - ], - getSharedStorageBillingOrg: [ - "GET /orgs/{org}/settings/billing/shared-storage", - ], - getSharedStorageBillingUser: [ - "GET /users/{username}/settings/billing/shared-storage", - ], - }, - checks: { - create: ["POST /repos/{owner}/{repo}/check-runs"], - createSuite: ["POST /repos/{owner}/{repo}/check-suites"], - get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], - getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: [ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", - ], - listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: [ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", - ], - listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestSuite: [ - "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest", - ], - setSuitesPreferences: [ - "PATCH /repos/{owner}/{repo}/check-suites/preferences", - ], - update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"], - }, - codeScanning: { - getAlert: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", - {}, - { renamedParameters: { alert_id: "alert_number" } }, - ], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", - ], - uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"], - }, - codesOfConduct: { - getAllCodesOfConduct: [ - "GET /codes_of_conduct", - { mediaType: { previews: ["scarlet-witch"] } }, - ], - getConductCode: [ - "GET /codes_of_conduct/{key}", - { mediaType: { previews: ["scarlet-witch"] } }, - ], - getForRepo: [ - "GET /repos/{owner}/{repo}/community/code_of_conduct", - { mediaType: { previews: ["scarlet-witch"] } }, - ], - }, - emojis: { get: ["GET /emojis"] }, - enterpriseAdmin: { - disableSelectedOrganizationGithubActionsEnterprise: [ - "DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}", - ], - enableSelectedOrganizationGithubActionsEnterprise: [ - "PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}", - ], - getAllowedActionsEnterprise: [ - "GET /enterprises/{enterprise}/actions/permissions/selected-actions", - ], - getGithubActionsPermissionsEnterprise: [ - "GET /enterprises/{enterprise}/actions/permissions", - ], - listSelectedOrganizationsEnabledGithubActionsEnterprise: [ - "GET /enterprises/{enterprise}/actions/permissions/organizations", - ], - setAllowedActionsEnterprise: [ - "PUT /enterprises/{enterprise}/actions/permissions/selected-actions", - ], - setGithubActionsPermissionsEnterprise: [ - "PUT /enterprises/{enterprise}/actions/permissions", - ], - setSelectedOrganizationsEnabledGithubActionsEnterprise: [ - "PUT /enterprises/{enterprise}/actions/permissions/organizations", - ], - }, - gists: { - checkIsStarred: ["GET /gists/{gist_id}/star"], - create: ["POST /gists"], - createComment: ["POST /gists/{gist_id}/comments"], - delete: ["DELETE /gists/{gist_id}"], - deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], - fork: ["POST /gists/{gist_id}/forks"], - get: ["GET /gists/{gist_id}"], - getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], - getRevision: ["GET /gists/{gist_id}/{sha}"], - list: ["GET /gists"], - listComments: ["GET /gists/{gist_id}/comments"], - listCommits: ["GET /gists/{gist_id}/commits"], - listForUser: ["GET /users/{username}/gists"], - listForks: ["GET /gists/{gist_id}/forks"], - listPublic: ["GET /gists/public"], - listStarred: ["GET /gists/starred"], - star: ["PUT /gists/{gist_id}/star"], - unstar: ["DELETE /gists/{gist_id}/star"], - update: ["PATCH /gists/{gist_id}"], - updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"], - }, - git: { - createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], - createCommit: ["POST /repos/{owner}/{repo}/git/commits"], - createRef: ["POST /repos/{owner}/{repo}/git/refs"], - createTag: ["POST /repos/{owner}/{repo}/git/tags"], - createTree: ["POST /repos/{owner}/{repo}/git/trees"], - deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], - getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], - getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], - getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], - getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], - getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], - listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], - updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"], - }, - gitignore: { - getAllTemplates: ["GET /gitignore/templates"], - getTemplate: ["GET /gitignore/templates/{name}"], - }, - interactions: { - getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], - getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits"], - removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: [ - "DELETE /repos/{owner}/{repo}/interaction-limits", - ], - removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits"], - setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], - setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits"], - }, - issues: { - addAssignees: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees", - ], - addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], - checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], - create: ["POST /repos/{owner}/{repo}/issues"], - createComment: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/comments", - ], - createLabel: ["POST /repos/{owner}/{repo}/labels"], - createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}", - ], - deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: [ - "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}", - ], - get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], - getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], - getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], - getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], - getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], - list: ["GET /issues"], - listAssignees: ["GET /repos/{owner}/{repo}/assignees"], - listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], - listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], - listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], - listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", - { mediaType: { previews: ["mockingbird"] } }, - ], - listForAuthenticatedUser: ["GET /user/issues"], - listForOrg: ["GET /orgs/{org}/issues"], - listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: [ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", - ], - listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", - ], - listMilestones: ["GET /repos/{owner}/{repo}/milestones"], - lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels", - ], - removeAssignees: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees", - ], - removeLabel: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}", - ], - setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], - unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], - update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], - updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], - updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: [ - "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}", - ], - }, - licenses: { - get: ["GET /licenses/{license}"], - getAllCommonlyUsed: ["GET /licenses"], - getForRepo: ["GET /repos/{owner}/{repo}/license"], - }, - markdown: { - render: ["POST /markdown"], - renderRaw: [ - "POST /markdown/raw", - { headers: { "content-type": "text/plain; charset=utf-8" } }, - ], - }, - meta: { - get: ["GET /meta"], - getOctocat: ["GET /octocat"], - getZen: ["GET /zen"], - root: ["GET /"], - }, - migrations: { - cancelImport: ["DELETE /repos/{owner}/{repo}/import"], - deleteArchiveForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/archive", - { mediaType: { previews: ["wyandotte"] } }, - ], - deleteArchiveForOrg: [ - "DELETE /orgs/{org}/migrations/{migration_id}/archive", - { mediaType: { previews: ["wyandotte"] } }, - ], - downloadArchiveForOrg: [ - "GET /orgs/{org}/migrations/{migration_id}/archive", - { mediaType: { previews: ["wyandotte"] } }, - ], - getArchiveForAuthenticatedUser: [ - "GET /user/migrations/{migration_id}/archive", - { mediaType: { previews: ["wyandotte"] } }, - ], - getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], - getImportStatus: ["GET /repos/{owner}/{repo}/import"], - getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], - getStatusForAuthenticatedUser: [ - "GET /user/migrations/{migration_id}", - { mediaType: { previews: ["wyandotte"] } }, - ], - getStatusForOrg: [ - "GET /orgs/{org}/migrations/{migration_id}", - { mediaType: { previews: ["wyandotte"] } }, - ], - listForAuthenticatedUser: [ - "GET /user/migrations", - { mediaType: { previews: ["wyandotte"] } }, - ], - listForOrg: [ - "GET /orgs/{org}/migrations", - { mediaType: { previews: ["wyandotte"] } }, - ], - listReposForOrg: [ - "GET /orgs/{org}/migrations/{migration_id}/repositories", - { mediaType: { previews: ["wyandotte"] } }, - ], - listReposForUser: [ - "GET /user/migrations/{migration_id}/repositories", - { mediaType: { previews: ["wyandotte"] } }, - ], - mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], - setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], - startForAuthenticatedUser: ["POST /user/migrations"], - startForOrg: ["POST /orgs/{org}/migrations"], - startImport: ["PUT /repos/{owner}/{repo}/import"], - unlockRepoForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock", - { mediaType: { previews: ["wyandotte"] } }, - ], - unlockRepoForOrg: [ - "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock", - { mediaType: { previews: ["wyandotte"] } }, - ], - updateImport: ["PATCH /repos/{owner}/{repo}/import"], - }, - orgs: { - blockUser: ["PUT /orgs/{org}/blocks/{username}"], - checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], - checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], - checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: [ - "PUT /orgs/{org}/outside_collaborators/{username}", - ], - createInvitation: ["POST /orgs/{org}/invitations"], - createWebhook: ["POST /orgs/{org}/hooks"], - deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], - get: ["GET /orgs/{org}"], - getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], - getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], - getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], - getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - list: ["GET /organizations"], - listAppInstallations: ["GET /orgs/{org}/installations"], - listBlockedUsers: ["GET /orgs/{org}/blocks"], - listForAuthenticatedUser: ["GET /user/orgs"], - listForUser: ["GET /users/{username}/orgs"], - listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], - listMembers: ["GET /orgs/{org}/members"], - listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], - listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], - listPendingInvitations: ["GET /orgs/{org}/invitations"], - listPublicMembers: ["GET /orgs/{org}/public_members"], - listWebhooks: ["GET /orgs/{org}/hooks"], - pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - removeMember: ["DELETE /orgs/{org}/members/{username}"], - removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: [ - "DELETE /orgs/{org}/outside_collaborators/{username}", - ], - removePublicMembershipForAuthenticatedUser: [ - "DELETE /orgs/{org}/public_members/{username}", - ], - setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: [ - "PUT /orgs/{org}/public_members/{username}", - ], - unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], - update: ["PATCH /orgs/{org}"], - updateMembershipForAuthenticatedUser: [ - "PATCH /user/memberships/orgs/{org}", - ], - updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], - updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"], - }, - projects: { - addCollaborator: [ - "PUT /projects/{project_id}/collaborators/{username}", - { mediaType: { previews: ["inertia"] } }, - ], - createCard: [ - "POST /projects/columns/{column_id}/cards", - { mediaType: { previews: ["inertia"] } }, - ], - createColumn: [ - "POST /projects/{project_id}/columns", - { mediaType: { previews: ["inertia"] } }, - ], - createForAuthenticatedUser: [ - "POST /user/projects", - { mediaType: { previews: ["inertia"] } }, - ], - createForOrg: [ - "POST /orgs/{org}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - createForRepo: [ - "POST /repos/{owner}/{repo}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - delete: [ - "DELETE /projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - deleteCard: [ - "DELETE /projects/columns/cards/{card_id}", - { mediaType: { previews: ["inertia"] } }, - ], - deleteColumn: [ - "DELETE /projects/columns/{column_id}", - { mediaType: { previews: ["inertia"] } }, - ], - get: [ - "GET /projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - getCard: [ - "GET /projects/columns/cards/{card_id}", - { mediaType: { previews: ["inertia"] } }, - ], - getColumn: [ - "GET /projects/columns/{column_id}", - { mediaType: { previews: ["inertia"] } }, - ], - getPermissionForUser: [ - "GET /projects/{project_id}/collaborators/{username}/permission", - { mediaType: { previews: ["inertia"] } }, - ], - listCards: [ - "GET /projects/columns/{column_id}/cards", - { mediaType: { previews: ["inertia"] } }, - ], - listCollaborators: [ - "GET /projects/{project_id}/collaborators", - { mediaType: { previews: ["inertia"] } }, - ], - listColumns: [ - "GET /projects/{project_id}/columns", - { mediaType: { previews: ["inertia"] } }, - ], - listForOrg: [ - "GET /orgs/{org}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - listForRepo: [ - "GET /repos/{owner}/{repo}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - listForUser: [ - "GET /users/{username}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - moveCard: [ - "POST /projects/columns/cards/{card_id}/moves", - { mediaType: { previews: ["inertia"] } }, - ], - moveColumn: [ - "POST /projects/columns/{column_id}/moves", - { mediaType: { previews: ["inertia"] } }, - ], - removeCollaborator: [ - "DELETE /projects/{project_id}/collaborators/{username}", - { mediaType: { previews: ["inertia"] } }, - ], - update: [ - "PATCH /projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - updateCard: [ - "PATCH /projects/columns/cards/{card_id}", - { mediaType: { previews: ["inertia"] } }, - ], - updateColumn: [ - "PATCH /projects/columns/{column_id}", - { mediaType: { previews: ["inertia"] } }, - ], - }, - pulls: { - checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies", - ], - createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments", - ], - deletePendingReview: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", - ], - deleteReviewComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}", - ], - dismissReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals", - ], - get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", - ], - getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", - ], - listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], - listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - listReviewComments: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", - ], - listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], - listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - requestReviewers: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - submitReview: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events", - ], - update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch", - { mediaType: { previews: ["lydian"] } }, - ], - updateReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", - ], - updateReviewComment: [ - "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}", - ], - }, - rateLimit: { get: ["GET /rate_limit"] }, - reactions: { - createForCommitComment: [ - "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForIssue: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForIssueComment: [ - "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForPullRequestReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForTeamDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForTeamDiscussionInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForCommitComment: [ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForIssue: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForIssueComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForPullRequestComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForTeamDiscussion: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForTeamDiscussionComment: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteLegacy: [ - "DELETE /reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - { - deprecated: "octokit.reactions.deleteLegacy() is deprecated, see https://docs.github.com/v3/reactions/#delete-a-reaction-legacy", - }, - ], - listForCommitComment: [ - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForIssueComment: [ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForPullRequestReviewComment: [ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForTeamDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForTeamDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - }, - repos: { - acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}"], - addAppAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - addTeamAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - addUserAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkVulnerabilityAlerts: [ - "GET /repos/{owner}/{repo}/vulnerability-alerts", - { mediaType: { previews: ["dorian"] } }, - ], - compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - createCommitComment: [ - "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments", - ], - createCommitSignatureProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - { mediaType: { previews: ["zzzax"] } }, - ], - createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], - createDeployKey: ["POST /repos/{owner}/{repo}/keys"], - createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentStatus: [ - "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - ], - createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], - createForAuthenticatedUser: ["POST /user/repos"], - createFork: ["POST /repos/{owner}/{repo}/forks"], - createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], - createPagesSite: [ - "POST /repos/{owner}/{repo}/pages", - { mediaType: { previews: ["switcheroo"] } }, - ], - createRelease: ["POST /repos/{owner}/{repo}/releases"], - createUsingTemplate: [ - "POST /repos/{template_owner}/{template_repo}/generate", - { mediaType: { previews: ["baptiste"] } }, - ], - createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}"], - delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions", - ], - deleteAdminBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - deleteBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection", - ], - deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - { mediaType: { previews: ["zzzax"] } }, - ], - deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: [ - "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}", - ], - deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: [ - "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}", - ], - deletePagesSite: [ - "DELETE /repos/{owner}/{repo}/pages", - { mediaType: { previews: ["switcheroo"] } }, - ], - deletePullRequestReviewProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: [ - "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}", - ], - deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: [ - "DELETE /repos/{owner}/{repo}/automated-security-fixes", - { mediaType: { previews: ["london"] } }, - ], - disableVulnerabilityAlerts: [ - "DELETE /repos/{owner}/{repo}/vulnerability-alerts", - { mediaType: { previews: ["dorian"] } }, - ], - downloadArchive: [ - "GET /repos/{owner}/{repo}/zipball/{ref}", - {}, - { renamed: ["repos", "downloadZipballArchive"] }, - ], - downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], - downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: [ - "PUT /repos/{owner}/{repo}/automated-security-fixes", - { mediaType: { previews: ["london"] } }, - ], - enableVulnerabilityAlerts: [ - "PUT /repos/{owner}/{repo}/vulnerability-alerts", - { mediaType: { previews: ["dorian"] } }, - ], - get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions", - ], - getAdminBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - getAllStatusCheckContexts: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - ], - getAllTopics: [ - "GET /repos/{owner}/{repo}/topics", - { mediaType: { previews: ["mercy"] } }, - ], - getAppsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - ], - getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection", - ], - getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], - getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: [ - "GET /repos/{owner}/{repo}/collaborators/{username}/permission", - ], - getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], - getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], - getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], - getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - { mediaType: { previews: ["zzzax"] } }, - ], - getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], - getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], - getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], - getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], - getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentStatus: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}", - ], - getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], - getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], - getPages: ["GET /repos/{owner}/{repo}/pages"], - getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], - getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], - getReadme: ["GET /repos/{owner}/{repo}/readme"], - getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], - getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], - getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getStatusChecksProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - getTeamsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - ], - getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], - getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - ], - getViews: ["GET /repos/{owner}/{repo}/traffic/views"], - getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/config", - ], - listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", - { mediaType: { previews: ["groot"] } }, - ], - listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", - ], - listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: [ - "GET /repos/{owner}/{repo}/commits/{ref}/statuses", - ], - listCommits: ["GET /repos/{owner}/{repo}/commits"], - listContributors: ["GET /repos/{owner}/{repo}/contributors"], - listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentStatuses: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - ], - listDeployments: ["GET /repos/{owner}/{repo}/deployments"], - listForAuthenticatedUser: ["GET /user/repos"], - listForOrg: ["GET /orgs/{org}/repos"], - listForUser: ["GET /users/{username}/repos"], - listForks: ["GET /repos/{owner}/{repo}/forks"], - listInvitations: ["GET /repos/{owner}/{repo}/invitations"], - listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], - listLanguages: ["GET /repos/{owner}/{repo}/languages"], - listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], - listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", - { mediaType: { previews: ["groot"] } }, - ], - listReleaseAssets: [ - "GET /repos/{owner}/{repo}/releases/{release_id}/assets", - ], - listReleases: ["GET /repos/{owner}/{repo}/releases"], - listTags: ["GET /repos/{owner}/{repo}/tags"], - listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], - merge: ["POST /repos/{owner}/{repo}/merges"], - pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - removeAppAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - removeCollaborator: [ - "DELETE /repos/{owner}/{repo}/collaborators/{username}", - ], - removeStatusCheckContexts: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - removeStatusCheckProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - removeTeamAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - removeUserAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - replaceAllTopics: [ - "PUT /repos/{owner}/{repo}/topics", - { mediaType: { previews: ["mercy"] } }, - ], - requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - setAppAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - setStatusCheckContexts: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - setTeamAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - setUserAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], - transfer: ["POST /repos/{owner}/{repo}/transfer"], - update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection", - ], - updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], - updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: [ - "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}", - ], - updatePullRequestReviewProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: [ - "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}", - ], - updateStatusCheckPotection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - {}, - { renamed: ["repos", "updateStatusCheckProtection"] }, - ], - updateStatusCheckProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: [ - "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config", - ], - uploadReleaseAsset: [ - "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", - { baseUrl: "https://uploads.github.com" }, - ], - }, - search: { - code: ["GET /search/code"], - commits: ["GET /search/commits", { mediaType: { previews: ["cloak"] } }], - issuesAndPullRequests: ["GET /search/issues"], - labels: ["GET /search/labels"], - repos: ["GET /search/repositories"], - topics: ["GET /search/topics", { mediaType: { previews: ["mercy"] } }], - users: ["GET /search/users"], - }, - secretScanning: { - getAlert: [ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", - ], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", - ], - }, - teams: { - addOrUpdateMembershipForUserInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - addOrUpdateProjectPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - addOrUpdateRepoPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", - ], - checkPermissionsForProjectInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - checkPermissionsForRepoInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", - ], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - ], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - deleteDiscussionInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - getDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - getMembershipForUserInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - ], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/invitations", - ], - listProjectsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - removeProjectInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}", - ], - removeRepoInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", - ], - updateDiscussionCommentInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - updateDiscussionInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"], - }, - users: { - addEmailForAuthenticated: ["POST /user/emails"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: ["POST /user/keys"], - deleteEmailForAuthenticated: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}"], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}"], - list: ["GET /users"], - listBlockedByAuthenticated: ["GET /user/blocks"], - listEmailsForAuthenticated: ["GET /user/emails"], - listFollowedByAuthenticated: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: ["GET /user/keys"], - setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility"], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"], - }, -}; -export default Endpoints; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js deleted file mode 100644 index 0535b19eb..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import ENDPOINTS from "./generated/endpoints"; -import { VERSION } from "./version"; -import { endpointsToMethods } from "./endpoints-to-methods"; -/** - * This plugin is a 1:1 copy of internal @octokit/rest plugins. The primary - * goal is to rebuild @octokit/rest on top of @octokit/core. Once that is - * done, we will remove the registerEndpoints methods and return the methods - * directly as with the other plugins. At that point we will also remove the - * legacy workarounds and deprecations. - * - * See the plan at - * https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/1 - */ -export function restEndpointMethods(octokit) { - return endpointsToMethods(octokit, ENDPOINTS); -} -restEndpointMethods.VERSION = VERSION; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/types.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/types.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/types.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js deleted file mode 100644 index f2c83e1dc..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "4.4.1"; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts deleted file mode 100644 index 2a97a4b4e..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Octokit } from "@octokit/core"; -import { EndpointsDefaultsAndDecorations } from "./types"; -import { RestEndpointMethods } from "./generated/method-types"; -export declare function endpointsToMethods(octokit: Octokit, endpointsMap: EndpointsDefaultsAndDecorations): RestEndpointMethods; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts deleted file mode 100644 index a3c1d92ad..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { EndpointsDefaultsAndDecorations } from "../types"; -declare const Endpoints: EndpointsDefaultsAndDecorations; -export default Endpoints; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts deleted file mode 100644 index 89af191d4..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts +++ /dev/null @@ -1,7180 +0,0 @@ -import { EndpointInterface, RequestInterface } from "@octokit/types"; -import { RestEndpointMethodTypes } from "./parameters-and-response-types"; -export declare type RestEndpointMethods = { - actions: { - /** - * Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - addSelectedRepoToOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["addSelectedRepoToOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Cancels a workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - cancelWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["cancelWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates an organization secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to - * use this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/stable/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - createOrUpdateOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["createOrUpdateOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates or updates a repository secret with an encrypted value. Encrypt your secret using - * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access - * token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use - * this endpoint. - * - * #### Example encrypting a secret using Node.js - * - * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. - * - * ``` - * const sodium = require('tweetsodium'); - * - * const key = "base64-encoded-public-key"; - * const value = "plain-text-secret"; - * - * // Convert the message and key to Uint8Array's (Buffer implements that interface) - * const messageBytes = Buffer.from(value); - * const keyBytes = Buffer.from(key, 'base64'); - * - * // Encrypt using LibSodium. - * const encryptedBytes = sodium.seal(messageBytes, keyBytes); - * - * // Base64 the encrypted secret - * const encrypted = Buffer.from(encryptedBytes).toString('base64'); - * - * console.log(encrypted); - * ``` - * - * - * #### Example encrypting a secret using Python - * - * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/stable/public/#nacl-public-sealedbox) with Python 3. - * - * ``` - * from base64 import b64encode - * from nacl import encoding, public - * - * def encrypt(public_key: str, secret_value: str) -> str: - * """Encrypt a Unicode string using the public key.""" - * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) - * sealed_box = public.SealedBox(public_key) - * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) - * return b64encode(encrypted).decode("utf-8") - * ``` - * - * #### Example encrypting a secret using C# - * - * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. - * - * ``` - * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); - * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); - * - * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); - * - * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); - * ``` - * - * #### Example encrypting a secret using Ruby - * - * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. - * - * ```ruby - * require "rbnacl" - * require "base64" - * - * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") - * public_key = RbNaCl::PublicKey.new(key) - * - * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) - * encrypted_secret = box.encrypt("my_secret") - * - * # Print the base64 encoded secret - * puts Base64.strict_encode64(encrypted_secret) - * ``` - */ - createOrUpdateRepoSecret: { - (params?: RestEndpointMethodTypes["actions"]["createOrUpdateRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a token that you can pass to the `config` script. The token expires after one hour. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - * - * #### Example using registration token - * - * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. - * - * ``` - * ./config.sh --url https://github.com/octo-org --token TOKEN - * ``` - */ - createRegistrationTokenForOrg: { - (params?: RestEndpointMethodTypes["actions"]["createRegistrationTokenForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a token that you can pass to the `config` script. The token expires after one hour. You must authenticate - * using an access token with the `repo` scope to use this endpoint. - * - * #### Example using registration token - * - * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. - * - * ``` - * ./config.sh --url https://github.com/octo-org/octo-repo-artifacts --token TOKEN - * ``` - */ - createRegistrationTokenForRepo: { - (params?: RestEndpointMethodTypes["actions"]["createRegistrationTokenForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an organization. The token expires after one hour. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - * - * #### Example using remove token - * - * To remove your self-hosted runner from an organization, replace `TOKEN` with the remove token provided by this - * endpoint. - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - */ - createRemoveTokenForOrg: { - (params?: RestEndpointMethodTypes["actions"]["createRemoveTokenForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a token that you can pass to remove a self-hosted runner from a repository. The token expires after one hour. - * You must authenticate using an access token with the `repo` scope to use this endpoint. - * - * #### Example using remove token - * - * To remove your self-hosted runner from a repository, replace TOKEN with the remove token provided by this endpoint. - * - * ``` - * ./config.sh remove --token TOKEN - * ``` - */ - createRemoveTokenForRepo: { - (params?: RestEndpointMethodTypes["actions"]["createRemoveTokenForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)." - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line)." - */ - createWorkflowDispatch: { - (params?: RestEndpointMethodTypes["actions"]["createWorkflowDispatch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes an artifact for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - deleteArtifact: { - (params?: RestEndpointMethodTypes["actions"]["deleteArtifact"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - deleteOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["deleteOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. - */ - deleteRepoSecret: { - (params?: RestEndpointMethodTypes["actions"]["deleteRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - deleteSelfHostedRunnerFromOrg: { - (params?: RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. - * - * You must authenticate using an access token with the `repo` - * scope to use this endpoint. - */ - deleteSelfHostedRunnerFromRepo: { - (params?: RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a specific workflow run. Anyone with write access to the repository can use this endpoint. If the repository is - * private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:write` permission to use - * this endpoint. - */ - deleteWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["deleteWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes all logs for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - deleteWorkflowRunLogs: { - (params?: RestEndpointMethodTypes["actions"]["deleteWorkflowRunLogs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - disableSelectedRepositoryGithubActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["disableSelectedRepositoryGithubActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - disableWorkflow: { - (params?: RestEndpointMethodTypes["actions"]["disableWorkflow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in - * the response header to find the URL for the download. The `:archive_format` must be `zip`. Anyone with read access to - * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. - * GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - downloadArtifact: { - (params?: RestEndpointMethodTypes["actions"]["downloadArtifact"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look - * for `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can - * use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must - * have the `actions:read` permission to use this endpoint. - */ - downloadJobLogsForWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["downloadJobLogsForWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for - * `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can use - * this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have - * the `actions:read` permission to use this endpoint. - */ - downloadWorkflowRunLogs: { - (params?: RestEndpointMethodTypes["actions"]["downloadWorkflowRunLogs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - enableSelectedRepositoryGithubActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["enableSelectedRepositoryGithubActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - enableWorkflow: { - (params?: RestEndpointMethodTypes["actions"]["enableWorkflow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the selected actions that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)."" - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - getAllowedActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["getAllowedActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the settings for selected actions that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. - */ - getAllowedActionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["getAllowedActionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific artifact for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - getArtifact: { - (params?: RestEndpointMethodTypes["actions"]["getArtifact"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the GitHub Actions permissions policy for repositories and allowed actions in an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - getGithubActionsPermissionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository. - * - * You must authenticate using an access token with the `repo` scope to use this - * endpoint. GitHub Apps must have the `administration` repository permission to use this API. - */ - getGithubActionsPermissionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific job in a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - getJobForWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["getJobForWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - getOrgPublicKey: { - (params?: RestEndpointMethodTypes["actions"]["getOrgPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - getOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["getOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository. - * - * You must authenticate using an access token with the `repo` scope to use this - * endpoint. GitHub Apps must have the `administration` repository permission to use this API. - * @deprecated octokit.actions.getRepoPermissions() has been renamed to octokit.actions.getGithubActionsPermissionsRepository() (2020-11-10) - */ - getRepoPermissions: { - (params?: RestEndpointMethodTypes["actions"]["getRepoPermissions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `secrets` repository permission to use this endpoint. - */ - getRepoPublicKey: { - (params?: RestEndpointMethodTypes["actions"]["getRepoPublicKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. - */ - getRepoSecret: { - (params?: RestEndpointMethodTypes["actions"]["getRepoSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific self-hosted runner configured in an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - getSelfHostedRunnerForOrg: { - (params?: RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific self-hosted runner configured in a repository. - * - * You must authenticate using an access token with the `repo` scope to use this - * endpoint. - */ - getSelfHostedRunnerForRepo: { - (params?: RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - getWorkflow: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a specific workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - getWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - getWorkflowRunUsage: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflowRunUsage"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - getWorkflowUsage: { - (params?: RestEndpointMethodTypes["actions"]["getWorkflowUsage"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all artifacts for a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - listArtifactsForRepo: { - (params?: RestEndpointMethodTypes["actions"]["listArtifactsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists jobs for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). - */ - listJobsForWorkflowRun: { - (params?: RestEndpointMethodTypes["actions"]["listJobsForWorkflowRun"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - listOrgSecrets: { - (params?: RestEndpointMethodTypes["actions"]["listOrgSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. - */ - listRepoSecrets: { - (params?: RestEndpointMethodTypes["actions"]["listRepoSecrets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the workflows in a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - listRepoWorkflows: { - (params?: RestEndpointMethodTypes["actions"]["listRepoWorkflows"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists binaries for the runner application that you can download and run. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - listRunnerApplicationsForOrg: { - (params?: RestEndpointMethodTypes["actions"]["listRunnerApplicationsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists binaries for the runner application that you can download and run. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. - */ - listRunnerApplicationsForRepo: { - (params?: RestEndpointMethodTypes["actions"]["listRunnerApplicationsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - listSelectedReposForOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["listSelectedReposForOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - listSelectedRepositoriesEnabledGithubActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["listSelectedRepositoriesEnabledGithubActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all self-hosted runners configured in an organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. - */ - listSelfHostedRunnersForOrg: { - (params?: RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all self-hosted runners configured in a repository. You must authenticate using an access token with the `repo` scope to use this endpoint. - */ - listSelfHostedRunnersForRepo: { - (params?: RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists artifacts for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - listWorkflowRunArtifacts: { - (params?: RestEndpointMethodTypes["actions"]["listWorkflowRunArtifacts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. - */ - listWorkflowRuns: { - (params?: RestEndpointMethodTypes["actions"]["listWorkflowRuns"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). - * - * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. - */ - listWorkflowRunsForRepo: { - (params?: RestEndpointMethodTypes["actions"]["listWorkflowRunsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Re-runs your workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. - */ - reRunWorkflow: { - (params?: RestEndpointMethodTypes["actions"]["reRunWorkflow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - removeSelectedRepoFromOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["removeSelectedRepoFromOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * If the organization belongs to an enterprise that has `selected` actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings. - * - * To use the `patterns_allowed` setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories in the organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - setAllowedActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["setAllowedActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the actions that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." - * - * If the repository belongs to an organization or enterprise that has `selected` actions set at the organization or enterprise levels, then you cannot override any of the allowed actions settings. - * - * To use the `patterns_allowed` setting for private repositories, the repository must belong to an enterprise. If the repository does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. - */ - setAllowedActionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["setAllowedActionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the GitHub Actions permissions policy for repositories and allowed actions in an organization. - * - * If the organization belongs to an enterprise that has set restrictive permissions at the enterprise level, such as `allowed_actions` to `selected` actions, then you cannot override them for the organization. - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - setGithubActionsPermissionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions in the repository. - * - * If the repository belongs to an organization or enterprise that has set restrictive permissions at the organization or enterprise levels, such as `allowed_actions` to `selected` actions, then you cannot override them for the repository. - * - * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. - */ - setGithubActionsPermissionsRepository: { - (params?: RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsRepository"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. - */ - setSelectedReposForOrgSecret: { - (params?: RestEndpointMethodTypes["actions"]["setSelectedReposForOrgSecret"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." - * - * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. - */ - setSelectedRepositoriesEnabledGithubActionsOrganization: { - (params?: RestEndpointMethodTypes["actions"]["setSelectedRepositoriesEnabledGithubActionsOrganization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - activity: { - checkRepoIsStarredByAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["checkRepoIsStarredByAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/reference/activity#set-a-repository-subscription). - */ - deleteRepoSubscription: { - (params?: RestEndpointMethodTypes["activity"]["deleteRepoSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/reference/activity#set-a-thread-subscription) endpoint and set `ignore` to `true`. - */ - deleteThreadSubscription: { - (params?: RestEndpointMethodTypes["activity"]["deleteThreadSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user: - * - * * **Timeline**: The GitHub global public timeline - * * **User**: The public timeline for any user, using [URI template](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) - * * **Current user public**: The public timeline for the authenticated user - * * **Current user**: The private timeline for the authenticated user - * * **Current user actor**: The private timeline for activity created by the authenticated user - * * **Current user organizations**: The private timeline for the organizations the authenticated user is a member of. - * * **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub. - * - * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) since current feed URIs use the older, non revocable auth tokens. - */ - getFeeds: { - (params?: RestEndpointMethodTypes["activity"]["getFeeds"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getRepoSubscription: { - (params?: RestEndpointMethodTypes["activity"]["getRepoSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getThread: { - (params?: RestEndpointMethodTypes["activity"]["getThread"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/reference/activity#get-a-repository-subscription). - * - * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread. - */ - getThreadSubscriptionForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["getThreadSubscriptionForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. - */ - listEventsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listEventsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all notifications for the current user, sorted by most recently updated. - */ - listNotificationsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listNotificationsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This is the user's organization dashboard. You must be authenticated as the user to view this. - */ - listOrgEventsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listOrgEventsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago. - */ - listPublicEvents: { - (params?: RestEndpointMethodTypes["activity"]["listPublicEvents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listPublicEventsForRepoNetwork: { - (params?: RestEndpointMethodTypes["activity"]["listPublicEventsForRepoNetwork"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listPublicEventsForUser: { - (params?: RestEndpointMethodTypes["activity"]["listPublicEventsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listPublicOrgEvents: { - (params?: RestEndpointMethodTypes["activity"]["listPublicOrgEvents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events. - */ - listReceivedEventsForUser: { - (params?: RestEndpointMethodTypes["activity"]["listReceivedEventsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listReceivedPublicEventsForUser: { - (params?: RestEndpointMethodTypes["activity"]["listReceivedPublicEventsForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listRepoEvents: { - (params?: RestEndpointMethodTypes["activity"]["listRepoEvents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all notifications for the current user. - */ - listRepoNotificationsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listRepoNotificationsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories the authenticated user has starred. - * - * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: - */ - listReposStarredByAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listReposStarredByAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories a user has starred. - * - * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: - */ - listReposStarredByUser: { - (params?: RestEndpointMethodTypes["activity"]["listReposStarredByUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories a user is watching. - */ - listReposWatchedByUser: { - (params?: RestEndpointMethodTypes["activity"]["listReposWatchedByUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people that have starred the repository. - * - * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: - */ - listStargazersForRepo: { - (params?: RestEndpointMethodTypes["activity"]["listStargazersForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories the authenticated user is watching. - */ - listWatchedReposForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["listWatchedReposForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people watching the specified repository. - */ - listWatchersForRepo: { - (params?: RestEndpointMethodTypes["activity"]["listWatchersForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Marks all notifications as "read" removes it from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - markNotificationsAsRead: { - (params?: RestEndpointMethodTypes["activity"]["markNotificationsAsRead"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Marks all notifications in a repository as "read" removes them from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. - */ - markRepoNotificationsAsRead: { - (params?: RestEndpointMethodTypes["activity"]["markRepoNotificationsAsRead"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - markThreadAsRead: { - (params?: RestEndpointMethodTypes["activity"]["markThreadAsRead"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/reference/activity#delete-a-repository-subscription) completely. - */ - setRepoSubscription: { - (params?: RestEndpointMethodTypes["activity"]["setRepoSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**. - * - * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored. - * - * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/reference/activity#delete-a-thread-subscription) endpoint. - */ - setThreadSubscription: { - (params?: RestEndpointMethodTypes["activity"]["setThreadSubscription"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - starRepoForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["starRepoForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - unstarRepoForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["activity"]["unstarRepoForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - apps: { - /** - * Add a single repository to an installation. The authenticated user must have admin access to the repository. - * - * You must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to access this endpoint. - */ - addRepoToInstallation: { - (params?: RestEndpointMethodTypes["apps"]["addRepoToInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to use this endpoint, where the username is the OAuth application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`. - */ - checkToken: { - (params?: RestEndpointMethodTypes["apps"]["checkToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates an attachment under a content reference URL in the body or comment of an issue or pull request. Use the `id` of the content reference from the [`content_reference` event](https://docs.github.com/webhooks/event-payloads/#content_reference) to create an attachment. - * - * The app must create a content attachment within six hours of the content reference URL being posted. See "[Using content attachments](https://docs.github.com/apps/using-content-attachments/)" for details about content attachments. - * - * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. - */ - createContentAttachment: { - (params?: RestEndpointMethodTypes["apps"]["createContentAttachment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`. - */ - createFromManifest: { - (params?: RestEndpointMethodTypes["apps"]["createFromManifest"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - createInstallationAccessToken: { - (params?: RestEndpointMethodTypes["apps"]["createInstallationAccessToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted. - * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). - */ - deleteAuthorization: { - (params?: RestEndpointMethodTypes["apps"]["deleteAuthorization"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Uninstalls a GitHub App on a user, organization, or business account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/v3/apps/#suspend-an-app-installation)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - deleteInstallation: { - (params?: RestEndpointMethodTypes["apps"]["deleteInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. - */ - deleteToken: { - (params?: RestEndpointMethodTypes["apps"]["deleteToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/reference/apps#list-installations-for-the-authenticated-app)" endpoint. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getAuthenticated: { - (params?: RestEndpointMethodTypes["apps"]["getAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`). - * - * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. - */ - getBySlug: { - (params?: RestEndpointMethodTypes["apps"]["getBySlug"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables an authenticated GitHub App to find an installation's information using the installation id. The installation's account type (`target_type`) will be either an organization or a user account, depending which account the repository belongs to. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getInstallation: { - (params?: RestEndpointMethodTypes["apps"]["getInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables an authenticated GitHub App to find the organization's installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getOrgInstallation: { - (params?: RestEndpointMethodTypes["apps"]["getOrgInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getRepoInstallation: { - (params?: RestEndpointMethodTypes["apps"]["getRepoInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - getSubscriptionPlanForAccount: { - (params?: RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccount"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - getSubscriptionPlanForAccountStubbed: { - (params?: RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccountStubbed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables an authenticated GitHub App to find the user’s installation information. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getUserInstallation: { - (params?: RestEndpointMethodTypes["apps"]["getUserInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - getWebhookConfigForApp: { - (params?: RestEndpointMethodTypes["apps"]["getWebhookConfigForApp"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - listAccountsForPlan: { - (params?: RestEndpointMethodTypes["apps"]["listAccountsForPlan"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - listAccountsForPlanStubbed: { - (params?: RestEndpointMethodTypes["apps"]["listAccountsForPlanStubbed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. - * - * The access the user has to each repository is included in the hash under the `permissions` key. - */ - listInstallationReposForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["apps"]["listInstallationReposForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - * - * The permissions the installation has are included under the `permissions` key. - */ - listInstallations: { - (params?: RestEndpointMethodTypes["apps"]["listInstallations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - * - * You can find the permissions for the installation under the `permissions` key. - */ - listInstallationsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["apps"]["listInstallationsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - listPlans: { - (params?: RestEndpointMethodTypes["apps"]["listPlans"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all plans that are part of your GitHub Marketplace listing. - * - * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. - */ - listPlansStubbed: { - (params?: RestEndpointMethodTypes["apps"]["listPlansStubbed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List repositories that an app installation can access. - * - * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. - */ - listReposAccessibleToInstallation: { - (params?: RestEndpointMethodTypes["apps"]["listReposAccessibleToInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). - */ - listSubscriptionsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). - */ - listSubscriptionsForAuthenticatedUserStubbed: { - (params?: RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUserStubbed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Remove a single repository from an installation. The authenticated user must have admin access to the repository. - * - * You must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to access this endpoint. - */ - removeRepoFromInstallation: { - (params?: RestEndpointMethodTypes["apps"]["removeRepoFromInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. - */ - resetToken: { - (params?: RestEndpointMethodTypes["apps"]["resetToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Revokes the installation token you're using to authenticate as an installation and access this endpoint. - * - * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/reference/apps#create-an-installation-access-token-for-an-app)" endpoint. - * - * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. - */ - revokeInstallationAccessToken: { - (params?: RestEndpointMethodTypes["apps"]["revokeInstallationAccessToken"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** Suspending a GitHub App installation is currently in beta and subject to change. Before you can suspend a GitHub App, the app owner must enable suspending installations for the app by opting-in to the beta. For more information, see "[Suspending a GitHub App installation](https://docs.github.com/apps/managing-github-apps/suspending-a-github-app-installation/)." - * - * Suspends a GitHub App on a user, organization, or business account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account. - * - * To suspend a GitHub App, you must be an account owner or have admin permissions in the repository or organization where the app is installed. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - suspendInstallation: { - (params?: RestEndpointMethodTypes["apps"]["suspendInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** Suspending a GitHub App installation is currently in beta and subject to change. Before you can suspend a GitHub App, the app owner must enable suspending installations for the app by opting-in to the beta. For more information, see "[Suspending a GitHub App installation](https://docs.github.com/apps/managing-github-apps/suspending-a-github-app-installation/)." - * - * Removes a GitHub App installation suspension. - * - * To unsuspend a GitHub App, you must be an account owner or have admin permissions in the repository or organization where the app is installed and suspended. - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - unsuspendInstallation: { - (params?: RestEndpointMethodTypes["apps"]["unsuspendInstallation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." - * - * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. - */ - updateWebhookConfigForApp: { - (params?: RestEndpointMethodTypes["apps"]["updateWebhookConfigForApp"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - billing: { - /** - * Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * Access tokens must have the `read:org` scope. - */ - getGithubActionsBillingOrg: { - (params?: RestEndpointMethodTypes["billing"]["getGithubActionsBillingOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the summary of the free and paid GitHub Actions minutes used. - * - * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - * - * Access tokens must have the `user` scope. - */ - getGithubActionsBillingUser: { - (params?: RestEndpointMethodTypes["billing"]["getGithubActionsBillingUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the free and paid storage usued for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * Access tokens must have the `read:org` scope. - */ - getGithubPackagesBillingOrg: { - (params?: RestEndpointMethodTypes["billing"]["getGithubPackagesBillingOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the free and paid storage used for GitHub Packages in gigabytes. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * Access tokens must have the `user` scope. - */ - getGithubPackagesBillingUser: { - (params?: RestEndpointMethodTypes["billing"]["getGithubPackagesBillingUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the estimated paid and estimated total storage used for GitHub Actions and Github Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * Access tokens must have the `read:org` scope. - */ - getSharedStorageBillingOrg: { - (params?: RestEndpointMethodTypes["billing"]["getSharedStorageBillingOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the estimated paid and estimated total storage used for GitHub Actions and Github Packages. - * - * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." - * - * Access tokens must have the `user` scope. - */ - getSharedStorageBillingUser: { - (params?: RestEndpointMethodTypes["billing"]["getSharedStorageBillingUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - checks: { - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs. - * - * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs. - */ - create: { - (params?: RestEndpointMethodTypes["checks"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/reference/checks#check-runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites)". Your GitHub App must have the `checks:write` permission to create check suites. - */ - createSuite: { - (params?: RestEndpointMethodTypes["checks"]["createSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. - */ - get: { - (params?: RestEndpointMethodTypes["checks"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. - */ - getSuite: { - (params?: RestEndpointMethodTypes["checks"]["getSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth Apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository. - */ - listAnnotations: { - (params?: RestEndpointMethodTypes["checks"]["listAnnotations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. - */ - listForRef: { - (params?: RestEndpointMethodTypes["checks"]["listForRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. - */ - listForSuite: { - (params?: RestEndpointMethodTypes["checks"]["listForSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. - * - * Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. - */ - listSuitesForRef: { - (params?: RestEndpointMethodTypes["checks"]["listSuitesForRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. - * - * To rerequest a check suite, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository. - */ - rerequestSuite: { - (params?: RestEndpointMethodTypes["checks"]["rerequestSuite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/reference/checks#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites. - */ - setSuitesPreferences: { - (params?: RestEndpointMethodTypes["checks"]["setSuitesPreferences"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. - * - * Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs. - */ - update: { - (params?: RestEndpointMethodTypes["checks"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - codeScanning: { - /** - * Gets a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` read permission to use this endpoint. - * - * The security `alert_number` is found at the end of the security alert's URL. For example, the security alert ID for `https://github.com/Octo-org/octo-repo/security/code-scanning/88` is `88`. - */ - getAlert: { - (params?: RestEndpointMethodTypes["codeScanning"]["getAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all open code scanning alerts for the default branch (usually `main` or `master`). For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. GitHub Apps must have the `security_events` read permission to use this endpoint. - */ - listAlertsForRepo: { - (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the details of recent code scanning analyses for a repository. For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. GitHub Apps must have the `security_events` read permission to use this endpoint. - */ - listRecentAnalyses: { - (params?: RestEndpointMethodTypes["codeScanning"]["listRecentAnalyses"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the status of a single code scanning alert. For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. - * GitHub Apps must have the `security_events` write permission to use this endpoint. - */ - updateAlert: { - (params?: RestEndpointMethodTypes["codeScanning"]["updateAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Upload a SARIF file containing the results of a code scanning analysis to make the results available in a repository. - * For private repos, you must use an access token with the `repo` scope. For public repos, you must use an access token with `public_repo` and `repo:security_events` scopes. GitHub Apps must have the `security_events` write permission to use this endpoint. - */ - uploadSarif: { - (params?: RestEndpointMethodTypes["codeScanning"]["uploadSarif"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - codesOfConduct: { - getAllCodesOfConduct: { - (params?: RestEndpointMethodTypes["codesOfConduct"]["getAllCodesOfConduct"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getConductCode: { - (params?: RestEndpointMethodTypes["codesOfConduct"]["getConductCode"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This method returns the contents of the repository's code of conduct file, if one is detected. - */ - getForRepo: { - (params?: RestEndpointMethodTypes["codesOfConduct"]["getForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - emojis: { - /** - * Lists all the emojis available to use on GitHub. - */ - get: { - (params?: RestEndpointMethodTypes["emojis"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - enterpriseAdmin: { - /** - * Removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - disableSelectedOrganizationGithubActionsEnterprise: { - (params?: RestEndpointMethodTypes["enterpriseAdmin"]["disableSelectedOrganizationGithubActionsEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - enableSelectedOrganizationGithubActionsEnterprise: { - (params?: RestEndpointMethodTypes["enterpriseAdmin"]["enableSelectedOrganizationGithubActionsEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the selected actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - getAllowedActionsEnterprise: { - (params?: RestEndpointMethodTypes["enterpriseAdmin"]["getAllowedActionsEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - getGithubActionsPermissionsEnterprise: { - (params?: RestEndpointMethodTypes["enterpriseAdmin"]["getGithubActionsPermissionsEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the organizations that are selected to have GitHub Actions enabled in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - listSelectedOrganizationsEnabledGithubActionsEnterprise: { - (params?: RestEndpointMethodTypes["enterpriseAdmin"]["listSelectedOrganizationsEnabledGithubActionsEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - setAllowedActionsEnterprise: { - (params?: RestEndpointMethodTypes["enterpriseAdmin"]["setAllowedActionsEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise. - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - setGithubActionsPermissionsEnterprise: { - (params?: RestEndpointMethodTypes["enterpriseAdmin"]["setGithubActionsPermissionsEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." - * - * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. - */ - setSelectedOrganizationsEnabledGithubActionsEnterprise: { - (params?: RestEndpointMethodTypes["enterpriseAdmin"]["setSelectedOrganizationsEnabledGithubActionsEnterprise"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - gists: { - checkIsStarred: { - (params?: RestEndpointMethodTypes["gists"]["checkIsStarred"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Allows you to add a new gist with one or more files. - * - * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally. - */ - create: { - (params?: RestEndpointMethodTypes["gists"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - createComment: { - (params?: RestEndpointMethodTypes["gists"]["createComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - delete: { - (params?: RestEndpointMethodTypes["gists"]["delete"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteComment: { - (params?: RestEndpointMethodTypes["gists"]["deleteComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note**: This was previously `/gists/:gist_id/fork`. - */ - fork: { - (params?: RestEndpointMethodTypes["gists"]["fork"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - get: { - (params?: RestEndpointMethodTypes["gists"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getComment: { - (params?: RestEndpointMethodTypes["gists"]["getComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getRevision: { - (params?: RestEndpointMethodTypes["gists"]["getRevision"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists: - */ - list: { - (params?: RestEndpointMethodTypes["gists"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listComments: { - (params?: RestEndpointMethodTypes["gists"]["listComments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listCommits: { - (params?: RestEndpointMethodTypes["gists"]["listCommits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists public gists for the specified user: - */ - listForUser: { - (params?: RestEndpointMethodTypes["gists"]["listForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listForks: { - (params?: RestEndpointMethodTypes["gists"]["listForks"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List public gists sorted by most recently updated to least recently updated. - * - * Note: With [pagination](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page. - */ - listPublic: { - (params?: RestEndpointMethodTypes["gists"]["listPublic"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the authenticated user's starred gists: - */ - listStarred: { - (params?: RestEndpointMethodTypes["gists"]["listStarred"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - star: { - (params?: RestEndpointMethodTypes["gists"]["star"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - unstar: { - (params?: RestEndpointMethodTypes["gists"]["unstar"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Allows you to update or delete a gist file and rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged. - */ - update: { - (params?: RestEndpointMethodTypes["gists"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateComment: { - (params?: RestEndpointMethodTypes["gists"]["updateComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - git: { - createBlob: { - (params?: RestEndpointMethodTypes["git"]["createBlob"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - createCommit: { - (params?: RestEndpointMethodTypes["git"]["createCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches. - */ - createRef: { - (params?: RestEndpointMethodTypes["git"]["createRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/reference/git#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/reference/git#create-a-reference) the tag reference - this call would be unnecessary. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - createTag: { - (params?: RestEndpointMethodTypes["git"]["createTag"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure. - * - * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/reference/git#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/reference/git#update-a-reference)." - */ - createTree: { - (params?: RestEndpointMethodTypes["git"]["createTree"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteRef: { - (params?: RestEndpointMethodTypes["git"]["deleteRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The `content` in the response will always be Base64 encoded. - * - * _Note_: This API supports blobs up to 100 megabytes in size. - */ - getBlob: { - (params?: RestEndpointMethodTypes["git"]["getBlob"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - getCommit: { - (params?: RestEndpointMethodTypes["git"]["getCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned. - * - * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - */ - getRef: { - (params?: RestEndpointMethodTypes["git"]["getRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - getTag: { - (params?: RestEndpointMethodTypes["git"]["getTag"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a single tree using the SHA1 value for that tree. - * - * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time. - */ - getTree: { - (params?: RestEndpointMethodTypes["git"]["getTree"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array. - * - * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. - * - * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`. - */ - listMatchingRefs: { - (params?: RestEndpointMethodTypes["git"]["listMatchingRefs"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateRef: { - (params?: RestEndpointMethodTypes["git"]["updateRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - gitignore: { - /** - * List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/reference/repos#create-a-repository-for-the-authenticated-user). - */ - getAllTemplates: { - (params?: RestEndpointMethodTypes["gitignore"]["getAllTemplates"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The API also allows fetching the source of a single template. - * Use the raw [media type](https://docs.github.com/rest/overview/media-types/) to get the raw contents. - */ - getTemplate: { - (params?: RestEndpointMethodTypes["gitignore"]["getTemplate"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - interactions: { - /** - * Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response. - */ - getRestrictionsForOrg: { - (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response. - */ - getRestrictionsForRepo: { - (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows which type of GitHub user can interact with your public repositories and when the restriction expires. If there are no restrictions, you will see an empty response. - */ - getRestrictionsForYourPublicRepos: { - (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForYourPublicRepos"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions. - */ - removeRestrictionsForOrg: { - (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - removeRestrictionsForRepo: { - (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes any interaction restrictions from your public repositories. - */ - removeRestrictionsForYourPublicRepos: { - (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForYourPublicRepos"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization. - */ - setRestrictionsForOrg: { - (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. - */ - setRestrictionsForRepo: { - (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. - */ - setRestrictionsForYourPublicRepos: { - (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForYourPublicRepos"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - issues: { - /** - * Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced. - */ - addAssignees: { - (params?: RestEndpointMethodTypes["issues"]["addAssignees"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - addLabels: { - (params?: RestEndpointMethodTypes["issues"]["addLabels"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Checks if a user has permission to be assigned to an issue in this repository. - * - * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. - * - * Otherwise a `404` status code is returned. - */ - checkUserCanBeAssigned: { - (params?: RestEndpointMethodTypes["issues"]["checkUserCanBeAssigned"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://help.github.com/articles/disabling-issues/), the API returns a `410 Gone` status. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-abuse-rate-limits)" for details. - */ - create: { - (params?: RestEndpointMethodTypes["issues"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-abuse-rate-limits)" for details. - */ - createComment: { - (params?: RestEndpointMethodTypes["issues"]["createComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - createLabel: { - (params?: RestEndpointMethodTypes["issues"]["createLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - createMilestone: { - (params?: RestEndpointMethodTypes["issues"]["createMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteComment: { - (params?: RestEndpointMethodTypes["issues"]["deleteComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteLabel: { - (params?: RestEndpointMethodTypes["issues"]["deleteLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteMilestone: { - (params?: RestEndpointMethodTypes["issues"]["deleteMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-redirects-redirects) if the issue was - * [transferred](https://help.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If - * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API - * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read - * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe - * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook. - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - get: { - (params?: RestEndpointMethodTypes["issues"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getComment: { - (params?: RestEndpointMethodTypes["issues"]["getComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getEvent: { - (params?: RestEndpointMethodTypes["issues"]["getEvent"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getLabel: { - (params?: RestEndpointMethodTypes["issues"]["getLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getMilestone: { - (params?: RestEndpointMethodTypes["issues"]["getMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List issues assigned to the authenticated user across all visible repositories including owned repositories, member - * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not - * necessarily assigned to you. - * - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - list: { - (params?: RestEndpointMethodTypes["issues"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the [available assignees](https://help.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository. - */ - listAssignees: { - (params?: RestEndpointMethodTypes["issues"]["listAssignees"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Issue Comments are ordered by ascending ID. - */ - listComments: { - (params?: RestEndpointMethodTypes["issues"]["listComments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * By default, Issue Comments are ordered by ascending ID. - */ - listCommentsForRepo: { - (params?: RestEndpointMethodTypes["issues"]["listCommentsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listEvents: { - (params?: RestEndpointMethodTypes["issues"]["listEvents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listEventsForRepo: { - (params?: RestEndpointMethodTypes["issues"]["listEventsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listEventsForTimeline: { - (params?: RestEndpointMethodTypes["issues"]["listEventsForTimeline"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List issues across owned and member repositories assigned to the authenticated user. - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["issues"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List issues in an organization assigned to the authenticated user. - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - listForOrg: { - (params?: RestEndpointMethodTypes["issues"]["listForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List issues in a repository. - * - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this - * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by - * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull - * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - listForRepo: { - (params?: RestEndpointMethodTypes["issues"]["listForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listLabelsForMilestone: { - (params?: RestEndpointMethodTypes["issues"]["listLabelsForMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listLabelsForRepo: { - (params?: RestEndpointMethodTypes["issues"]["listLabelsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listLabelsOnIssue: { - (params?: RestEndpointMethodTypes["issues"]["listLabelsOnIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listMilestones: { - (params?: RestEndpointMethodTypes["issues"]["listMilestones"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access can lock an issue or pull request's conversation. - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - lock: { - (params?: RestEndpointMethodTypes["issues"]["lock"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - removeAllLabels: { - (params?: RestEndpointMethodTypes["issues"]["removeAllLabels"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes one or more assignees from an issue. - */ - removeAssignees: { - (params?: RestEndpointMethodTypes["issues"]["removeAssignees"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist. - */ - removeLabel: { - (params?: RestEndpointMethodTypes["issues"]["removeLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes any previous labels and sets the new labels for an issue. - */ - setLabels: { - (params?: RestEndpointMethodTypes["issues"]["setLabels"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access can unlock an issue's conversation. - */ - unlock: { - (params?: RestEndpointMethodTypes["issues"]["unlock"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Issue owners and users with push access can edit an issue. - */ - update: { - (params?: RestEndpointMethodTypes["issues"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateComment: { - (params?: RestEndpointMethodTypes["issues"]["updateComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateLabel: { - (params?: RestEndpointMethodTypes["issues"]["updateLabel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateMilestone: { - (params?: RestEndpointMethodTypes["issues"]["updateMilestone"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - licenses: { - get: { - (params?: RestEndpointMethodTypes["licenses"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getAllCommonlyUsed: { - (params?: RestEndpointMethodTypes["licenses"]["getAllCommonlyUsed"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This method returns the contents of the repository's license file, if one is detected. - * - * Similar to [Get repository content](https://docs.github.com/rest/reference/repos/contents#get-repository-content), this method also supports [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw license content or rendered license HTML. - */ - getForRepo: { - (params?: RestEndpointMethodTypes["licenses"]["getForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - markdown: { - render: { - (params?: RestEndpointMethodTypes["markdown"]["render"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less. - */ - renderRaw: { - (params?: RestEndpointMethodTypes["markdown"]["renderRaw"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - meta: { - /** - * This endpoint provides a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://help.github.com/articles/about-github-s-ip-addresses/)." - */ - get: { - (params?: RestEndpointMethodTypes["meta"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the octocat as ASCII art - */ - getOctocat: { - (params?: RestEndpointMethodTypes["meta"]["getOctocat"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a random sentence from the Zen of GitHub - */ - getZen: { - (params?: RestEndpointMethodTypes["meta"]["getZen"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get Hypermedia links to resources accessible in GitHub's REST API - */ - root: { - (params?: RestEndpointMethodTypes["meta"]["root"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - migrations: { - /** - * Stop an import for a repository. - */ - cancelImport: { - (params?: RestEndpointMethodTypes["migrations"]["cancelImport"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/reference/migrations#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/reference/migrations#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted. - */ - deleteArchiveForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["deleteArchiveForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a previous migration archive. Migration archives are automatically deleted after seven days. - */ - deleteArchiveForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["deleteArchiveForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Fetches the URL to a migration archive. - */ - downloadArchiveForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["downloadArchiveForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects: - * - * * attachments - * * bases - * * commit\_comments - * * issue\_comments - * * issue\_events - * * issues - * * milestones - * * organizations - * * projects - * * protected\_branches - * * pull\_request\_reviews - * * pull\_requests - * * releases - * * repositories - * * review\_comments - * * schema - * * users - * - * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data. - */ - getArchiveForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["getArchiveForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot `. - * - * This endpoint and the [Map a commit author](https://docs.github.com/rest/reference/migrations#map-a-commit-author) endpoint allow you to provide correct Git author information. - */ - getCommitAuthors: { - (params?: RestEndpointMethodTypes["migrations"]["getCommitAuthors"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * View the progress of an import. - * - * **Import status** - * - * This section includes details about the possible values of the `status` field of the Import Progress response. - * - * An import that does not have errors will progress through these steps: - * - * * `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL. - * * `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import). - * * `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information. - * * `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects". - * * `complete` - the import is complete, and the repository is ready on GitHub. - * - * If there are problems, you will see one of these in the `status` field: - * - * * `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. - * * `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://github.com/contact) or [GitHub Premium Support](https://premium.githubsupport.com) for more information. - * * `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. - * * `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/reference/migrations#cancel-an-import) and [retry](https://docs.github.com/rest/reference/migrations#start-an-import) with the correct URL. - * * `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. - * - * **The project_choices field** - * - * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type. - * - * **Git LFS related fields** - * - * This section includes details about Git LFS related fields that may be present in the Import Progress response. - * - * * `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken. - * * `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step. - * * `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository. - * * `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request. - */ - getImportStatus: { - (params?: RestEndpointMethodTypes["migrations"]["getImportStatus"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List files larger than 100MB found during the import - */ - getLargeFiles: { - (params?: RestEndpointMethodTypes["migrations"]["getLargeFiles"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values: - * - * * `pending` - the migration hasn't started yet. - * * `exporting` - the migration is in progress. - * * `exported` - the migration finished successfully. - * * `failed` - the migration failed. - * - * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive). - */ - getStatusForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["getStatusForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Fetches the status of a migration. - * - * The `state` of a migration can be one of the following values: - * - * * `pending`, which means the migration hasn't started yet. - * * `exporting`, which means the migration is in progress. - * * `exported`, which means the migration finished successfully. - * * `failed`, which means the migration failed. - */ - getStatusForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["getStatusForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all migrations a user has started. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the most recent migrations. - */ - listForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["listForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all the repositories for this organization migration. - */ - listReposForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["listReposForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all the repositories for this user migration. - */ - listReposForUser: { - (params?: RestEndpointMethodTypes["migrations"]["listReposForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Update an author's identity for the import. Your application can continue updating authors any time before you push new commits to the repository. - */ - mapCommitAuthor: { - (params?: RestEndpointMethodTypes["migrations"]["mapCommitAuthor"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability is powered by [Git LFS](https://git-lfs.github.com). You can learn more about our LFS feature and working with large files [on our help site](https://help.github.com/articles/versioning-large-files/). - */ - setLfsPreference: { - (params?: RestEndpointMethodTypes["migrations"]["setLfsPreference"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Initiates the generation of a user migration archive. - */ - startForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["startForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Initiates the generation of a migration archive. - */ - startForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["startForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Start a source import to a GitHub repository using GitHub Importer. - */ - startImport: { - (params?: RestEndpointMethodTypes["migrations"]["startImport"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/reference/migrations#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/reference/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked. - */ - unlockRepoForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["migrations"]["unlockRepoForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/reference/repos#delete-a-repository) when the migration is complete and you no longer need the source data. - */ - unlockRepoForOrg: { - (params?: RestEndpointMethodTypes["migrations"]["unlockRepoForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API - * request. If no parameters are provided, the import will be restarted. - */ - updateImport: { - (params?: RestEndpointMethodTypes["migrations"]["updateImport"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - orgs: { - blockUser: { - (params?: RestEndpointMethodTypes["orgs"]["blockUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - checkBlockedUser: { - (params?: RestEndpointMethodTypes["orgs"]["checkBlockedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Check if a user is, publicly or privately, a member of the organization. - */ - checkMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["checkMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - checkPublicMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["checkPublicMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://help.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". - */ - convertMemberToOutsideCollaborator: { - (params?: RestEndpointMethodTypes["orgs"]["convertMemberToOutsideCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - createInvitation: { - (params?: RestEndpointMethodTypes["orgs"]["createInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Here's how you can create a hook that posts payloads in JSON format: - */ - createWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["createWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["deleteWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). - * - * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see 'Response with GitHub plan information' below." - */ - get: { - (params?: RestEndpointMethodTypes["orgs"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getMembershipForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["getMembershipForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * In order to get a user's membership with an organization, the authenticated user must be an organization member. - */ - getMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["getMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a webhook configured in an organization. To get only the webhook `config` properties, see "[Get a webhook configuration for an organization](/rest/reference/orgs#get-a-webhook-configuration-for-an-organization)." - */ - getWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["getWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/reference/orgs#get-an-organization-webhook)." - * - * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:read` permission. - */ - getWebhookConfigForOrg: { - (params?: RestEndpointMethodTypes["orgs"]["getWebhookConfigForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all organizations, in the order that they were created on GitHub. - * - * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of organizations. - */ - list: { - (params?: RestEndpointMethodTypes["orgs"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint. - */ - listAppInstallations: { - (params?: RestEndpointMethodTypes["orgs"]["listAppInstallations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the users blocked by an organization. - */ - listBlockedUsers: { - (params?: RestEndpointMethodTypes["orgs"]["listBlockedUsers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List organizations for the authenticated user. - * - * **OAuth scope requirements** - * - * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List [public organization memberships](https://help.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user. - * - * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/reference/orgs#list-organizations-for-the-authenticated-user) API instead. - */ - listForUser: { - (params?: RestEndpointMethodTypes["orgs"]["listForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner. - */ - listInvitationTeams: { - (params?: RestEndpointMethodTypes["orgs"]["listInvitationTeams"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned. - */ - listMembers: { - (params?: RestEndpointMethodTypes["orgs"]["listMembers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listMembershipsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["listMembershipsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all users who are outside collaborators of an organization. - */ - listOutsideCollaborators: { - (params?: RestEndpointMethodTypes["orgs"]["listOutsideCollaborators"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - */ - listPendingInvitations: { - (params?: RestEndpointMethodTypes["orgs"]["listPendingInvitations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Members of an organization can choose to have their membership publicized or not. - */ - listPublicMembers: { - (params?: RestEndpointMethodTypes["orgs"]["listPublicMembers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listWebhooks: { - (params?: RestEndpointMethodTypes["orgs"]["listWebhooks"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. - */ - pingWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["pingWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories. - */ - removeMember: { - (params?: RestEndpointMethodTypes["orgs"]["removeMember"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * In order to remove a user's membership with an organization, the authenticated user must be an organization owner. - * - * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases. - */ - removeMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["removeMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removing a user from this list will remove them from all the organization's repositories. - */ - removeOutsideCollaborator: { - (params?: RestEndpointMethodTypes["orgs"]["removeOutsideCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - removePublicMembershipForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["removePublicMembershipForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Only authenticated organization owners can add a member to the organization or update the member's role. - * - * * If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user) will be `pending` until they accept the invitation. - * - * * Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent. - * - * **Rate limits** - * - * To prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period. - */ - setMembershipForUser: { - (params?: RestEndpointMethodTypes["orgs"]["setMembershipForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The user can publicize their own membership. (A user cannot publicize the membership for another user.) - * - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - */ - setPublicMembershipForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["setPublicMembershipForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - unblockUser: { - (params?: RestEndpointMethodTypes["orgs"]["unblockUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes). - * - * Enables an authenticated organization owner with the `admin:org` scope to update the organization's profile and member privileges. - */ - update: { - (params?: RestEndpointMethodTypes["orgs"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateMembershipForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["orgs"]["updateMembershipForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a webhook configured in an organization. When you update a webhook, the `secret` will be overwritten. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for an organization](/rest/reference/orgs#update-a-webhook-configuration-for-an-organization)." - */ - updateWebhook: { - (params?: RestEndpointMethodTypes["orgs"]["updateWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the webhook configuration for an organization. To update more information about the webhook, including the `active` state and `events`, use "[Update an organization webhook ](/rest/reference/orgs#update-an-organization-webhook)." - * - * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:write` permission. - */ - updateWebhookConfigForOrg: { - (params?: RestEndpointMethodTypes["orgs"]["updateWebhookConfigForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - projects: { - /** - * Adds a collaborator to an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator. - */ - addCollaborator: { - (params?: RestEndpointMethodTypes["projects"]["addCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key. - * - * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. - */ - createCard: { - (params?: RestEndpointMethodTypes["projects"]["createCard"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - createColumn: { - (params?: RestEndpointMethodTypes["projects"]["createColumn"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - createForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["projects"]["createForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates an organization project board. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - createForOrg: { - (params?: RestEndpointMethodTypes["projects"]["createForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a repository project board. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - createForRepo: { - (params?: RestEndpointMethodTypes["projects"]["createForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a project board. Returns a `404 Not Found` status if projects are disabled. - */ - delete: { - (params?: RestEndpointMethodTypes["projects"]["delete"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteCard: { - (params?: RestEndpointMethodTypes["projects"]["deleteCard"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteColumn: { - (params?: RestEndpointMethodTypes["projects"]["deleteColumn"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - get: { - (params?: RestEndpointMethodTypes["projects"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getCard: { - (params?: RestEndpointMethodTypes["projects"]["getCard"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getColumn: { - (params?: RestEndpointMethodTypes["projects"]["getColumn"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level. - */ - getPermissionForUser: { - (params?: RestEndpointMethodTypes["projects"]["getPermissionForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listCards: { - (params?: RestEndpointMethodTypes["projects"]["listCards"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators. - */ - listCollaborators: { - (params?: RestEndpointMethodTypes["projects"]["listCollaborators"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listColumns: { - (params?: RestEndpointMethodTypes["projects"]["listColumns"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - listForOrg: { - (params?: RestEndpointMethodTypes["projects"]["listForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - listForRepo: { - (params?: RestEndpointMethodTypes["projects"]["listForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listForUser: { - (params?: RestEndpointMethodTypes["projects"]["listForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - moveCard: { - (params?: RestEndpointMethodTypes["projects"]["moveCard"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - moveColumn: { - (params?: RestEndpointMethodTypes["projects"]["moveColumn"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator. - */ - removeCollaborator: { - (params?: RestEndpointMethodTypes["projects"]["removeCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. - */ - update: { - (params?: RestEndpointMethodTypes["projects"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateCard: { - (params?: RestEndpointMethodTypes["projects"]["updateCard"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateColumn: { - (params?: RestEndpointMethodTypes["projects"]["updateColumn"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - pulls: { - checkIfMerged: { - (params?: RestEndpointMethodTypes["pulls"]["checkIfMerged"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - * - * You can create a new pull request. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - create: { - (params?: RestEndpointMethodTypes["pulls"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - createReplyForReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["createReplyForReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * Pull request reviews created in the `PENDING` state do not include the `submitted_at` property in the response. - * - * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](https://docs.github.com/rest/reference/media/#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) endpoint. - * - * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. - */ - createReview: { - (params?: RestEndpointMethodTypes["pulls"]["createReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/reference/issues#create-an-issue-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff. - * - * You can still create a review comment using the `position` parameter. When you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. For more information, see [Multi-line comment summary](https://docs.github.com/rest/reference/pulls#multi-line-comment-summary-3). - * - * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - */ - createReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["createReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deletePendingReview: { - (params?: RestEndpointMethodTypes["pulls"]["deletePendingReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a review comment. - */ - deleteReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["deleteReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/reference/repos#branches), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews. - */ - dismissReview: { - (params?: RestEndpointMethodTypes["pulls"]["dismissReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists details of a pull request by providing its number. - * - * When you get, [create](https://docs.github.com/rest/reference/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/reference/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". - * - * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit. - * - * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request: - * - * * If merged as a [merge commit](https://help.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit. - * * If merged via a [squash](https://help.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch. - * * If [rebased](https://help.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to. - * - * Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. - */ - get: { - (params?: RestEndpointMethodTypes["pulls"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getReview: { - (params?: RestEndpointMethodTypes["pulls"]["getReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Provides details for a review comment. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - * - * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions. - */ - getReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["getReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - list: { - (params?: RestEndpointMethodTypes["pulls"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List comments for a specific pull request review. - */ - listCommentsForReview: { - (params?: RestEndpointMethodTypes["pulls"]["listCommentsForReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/reference/repos#list-commits) endpoint. - */ - listCommits: { - (params?: RestEndpointMethodTypes["pulls"]["listCommits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default. - */ - listFiles: { - (params?: RestEndpointMethodTypes["pulls"]["listFiles"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listRequestedReviewers: { - (params?: RestEndpointMethodTypes["pulls"]["listRequestedReviewers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Lists all review comments for a pull request. By default, review comments are in ascending order by ID. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - * - * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions. - */ - listReviewComments: { - (params?: RestEndpointMethodTypes["pulls"]["listReviewComments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - * - * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://docs.github.com/rest/reference/reactions) reactions. - */ - listReviewCommentsForRepo: { - (params?: RestEndpointMethodTypes["pulls"]["listReviewCommentsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The list of reviews returns in chronological order. - */ - listReviews: { - (params?: RestEndpointMethodTypes["pulls"]["listReviews"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/reference/guides#dealing-with-abuse-rate-limits)" for details. - */ - merge: { - (params?: RestEndpointMethodTypes["pulls"]["merge"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - removeRequestedReviewers: { - (params?: RestEndpointMethodTypes["pulls"]["removeRequestedReviewers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/reference/guides#dealing-with-abuse-rate-limits)" for details. - */ - requestReviewers: { - (params?: RestEndpointMethodTypes["pulls"]["requestReviewers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - submitReview: { - (params?: RestEndpointMethodTypes["pulls"]["submitReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. - */ - update: { - (params?: RestEndpointMethodTypes["pulls"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch. - */ - updateBranch: { - (params?: RestEndpointMethodTypes["pulls"]["updateBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Update the review summary comment with new text. - */ - updateReview: { - (params?: RestEndpointMethodTypes["pulls"]["updateReview"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change. - * - * Enables you to edit a review comment. - * - * **Multi-line comment summary** - * - * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details. - * - * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response. - * - * If you use the `comfort-fade` preview header, your response will show: - * - * * For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`. - * * For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`. - * - * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show: - * - * * For multi-line comments, the last line of the comment range for the `position` attribute. - * * For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://docs.github.com/rest/reference/pulls#parameters-2) table. - */ - updateReviewComment: { - (params?: RestEndpointMethodTypes["pulls"]["updateReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - rateLimit: { - /** - * **Note:** Accessing this endpoint does not count against your REST API rate limit. - * - * **Note:** The `rate` object is deprecated. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object. - */ - get: { - (params?: RestEndpointMethodTypes["rateLimit"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - reactions: { - /** - * Create a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). A response with a `Status: 200 OK` means that you already added the reaction type to this commit comment. - */ - createForCommitComment: { - (params?: RestEndpointMethodTypes["reactions"]["createForCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to an [issue](https://docs.github.com/rest/reference/issues/). A response with a `Status: 200 OK` means that you already added the reaction type to this issue. - */ - createForIssue: { - (params?: RestEndpointMethodTypes["reactions"]["createForIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). A response with a `Status: 200 OK` means that you already added the reaction type to this issue comment. - */ - createForIssueComment: { - (params?: RestEndpointMethodTypes["reactions"]["createForIssueComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#comments). A response with a `Status: 200 OK` means that you already added the reaction type to this pull request review comment. - */ - createForPullRequestReviewComment: { - (params?: RestEndpointMethodTypes["reactions"]["createForPullRequestReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion comment. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - */ - createForTeamDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["reactions"]["createForTeamDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - */ - createForTeamDiscussionInOrg: { - (params?: RestEndpointMethodTypes["reactions"]["createForTeamDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). - */ - deleteForCommitComment: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`. - * - * Delete a reaction to an [issue](https://docs.github.com/rest/reference/issues/). - */ - deleteForIssue: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`. - * - * Delete a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). - */ - deleteForIssueComment: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForIssueComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.` - * - * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). - */ - deleteForPullRequestComment: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForPullRequestComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - deleteForTeamDiscussion: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussion"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`. - * - * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - deleteForTeamDiscussionComment: { - (params?: RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussionComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Reactions API. We recommend migrating your existing code to use the new delete reactions endpoints. For more information, see this [blog post](https://developer.github.com/changes/2020-02-26-new-delete-reactions-endpoints/). - * - * OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), when deleting a [team discussion](https://docs.github.com/rest/reference/teams#discussions) or [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). - * @deprecated octokit.reactions.deleteLegacy() is deprecated, see https://docs.github.com/v3/reactions/#delete-a-reaction-legacy - */ - deleteLegacy: { - (params?: RestEndpointMethodTypes["reactions"]["deleteLegacy"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to a [commit comment](https://docs.github.com/rest/reference/repos#comments). - */ - listForCommitComment: { - (params?: RestEndpointMethodTypes["reactions"]["listForCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to an [issue](https://docs.github.com/rest/reference/issues). - */ - listForIssue: { - (params?: RestEndpointMethodTypes["reactions"]["listForIssue"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to an [issue comment](https://docs.github.com/rest/reference/issues#comments). - */ - listForIssueComment: { - (params?: RestEndpointMethodTypes["reactions"]["listForIssueComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). - */ - listForPullRequestReviewComment: { - (params?: RestEndpointMethodTypes["reactions"]["listForPullRequestReviewComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments/). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. - */ - listForTeamDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["reactions"]["listForTeamDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. - */ - listForTeamDiscussionInOrg: { - (params?: RestEndpointMethodTypes["reactions"]["listForTeamDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - repos: { - acceptInvitation: { - (params?: RestEndpointMethodTypes["repos"]["acceptInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. - * - * | Type | Description | - * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - addAppAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["addAppAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * For more information the permission levels, see "[Repository permission levels for an organization](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". - * - * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - * - * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [repository invitations API endpoints](https://docs.github.com/rest/reference/repos#invitations). - * - * **Rate limits** - * - * To prevent abuse, you are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository. - */ - addCollaborator: { - (params?: RestEndpointMethodTypes["repos"]["addCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - addStatusCheckContexts: { - (params?: RestEndpointMethodTypes["repos"]["addStatusCheckContexts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified teams push access for this branch. You can also give push access to child teams. - * - * | Type | Description | - * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | - * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - addTeamAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["addTeamAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Grants the specified people push access for this branch. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - addUserAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["addUserAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * - * Team members will include the members of child teams. - */ - checkCollaborator: { - (params?: RestEndpointMethodTypes["repos"]["checkCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - checkVulnerabilityAlerts: { - (params?: RestEndpointMethodTypes["repos"]["checkVulnerabilityAlerts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `:branch`. - * - * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. - * - * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. - * - * **Working with large comparisons** - * - * The response will include a comparison of up to 250 commits. If you are working with a larger commit range, you can use the [List commits](https://docs.github.com/rest/reference/repos#list-commits) to enumerate all commits in the range. - * - * For comparisons with extremely large diffs, you may receive an error response indicating that the diff took too long - * to generate. You can typically resolve this error by using a smaller commit range. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - compareCommits: { - (params?: RestEndpointMethodTypes["repos"]["compareCommits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a comment for a commit using its `:commit_sha`. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - createCommitComment: { - (params?: RestEndpointMethodTypes["repos"]["createCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits. - */ - createCommitSignatureProtection: { - (params?: RestEndpointMethodTypes["repos"]["createCommitSignatureProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access in a repository can create commit statuses for a given SHA. - * - * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error. - */ - createCommitStatus: { - (params?: RestEndpointMethodTypes["repos"]["createCommitStatus"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can create a read-only deploy key. - */ - createDeployKey: { - (params?: RestEndpointMethodTypes["repos"]["createDeployKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deployments offer a few configurable parameters with certain defaults. - * - * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them - * before we merge a pull request. - * - * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have - * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter - * makes it easier to track which environments have requested deployments. The default environment is `production`. - * - * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If - * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, - * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will - * return a failure response. - * - * By default, [commit statuses](https://docs.github.com/rest/reference/repos#statuses) for every submitted context must be in a `success` - * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to - * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do - * not require any contexts or create any commit statuses, the deployment will always succeed. - * - * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text - * field that will be passed on when a deployment event is dispatched. - * - * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might - * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an - * application with debugging enabled. - * - * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref. - * - * #### Merged branch response - * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating - * a deployment. This auto-merge happens when: - * * Auto-merge option is enabled in the repository - * * Topic branch does not include the latest changes on the base branch, which is `master` in the response example - * * There are no merge conflicts - * - * If there are no new commits in the base branch, a new request to create a deployment should give a successful - * response. - * - * #### Merge conflict response - * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't - * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts. - * - * #### Failed commit status checks - * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` - * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`. - */ - createDeployment: { - (params?: RestEndpointMethodTypes["repos"]["createDeployment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with `push` access can create deployment statuses for a given deployment. - * - * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth Apps require the `repo_deployment` scope. - */ - createDeploymentStatus: { - (params?: RestEndpointMethodTypes["repos"]["createDeploymentStatus"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)." - * - * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. - * - * To give you write access to the repository, you must use a personal access token with the `repo` scope. For more information, see "[Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation. - * - * This input example shows how you can use the `client_payload` as a test to debug your workflow. - */ - createDispatchEvent: { - (params?: RestEndpointMethodTypes["repos"]["createDispatchEvent"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new repository for the authenticated user. - * - * **OAuth scope requirements** - * - * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: - * - * * `public_repo` scope or `repo` scope to create a public repository - * * `repo` scope to create a private repository - */ - createForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["repos"]["createForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Create a fork for the authenticated user. - * - * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://github.com/contact) or [GitHub Premium Support](https://premium.githubsupport.com). - */ - createFork: { - (params?: RestEndpointMethodTypes["repos"]["createFork"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new repository in the specified organization. The authenticated user must be a member of the organization. - * - * **OAuth scope requirements** - * - * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: - * - * * `public_repo` scope or `repo` scope to create a public repository - * * `repo` scope to create a private repository - */ - createInOrg: { - (params?: RestEndpointMethodTypes["repos"]["createInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new file or replaces an existing file in a repository. - */ - createOrUpdateFileContents: { - (params?: RestEndpointMethodTypes["repos"]["createOrUpdateFileContents"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)." - */ - createPagesSite: { - (params?: RestEndpointMethodTypes["repos"]["createPagesSite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access to the repository can create a release. - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - */ - createRelease: { - (params?: RestEndpointMethodTypes["repos"]["createRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`. - * - * **OAuth scope requirements** - * - * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: - * - * * `public_repo` scope or `repo` scope to create a public repository - * * `repo` scope to create a private repository - */ - createUsingTemplate: { - (params?: RestEndpointMethodTypes["repos"]["createUsingTemplate"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can - * share the same `config` as long as those webhooks do not have any `events` that overlap. - */ - createWebhook: { - (params?: RestEndpointMethodTypes["repos"]["createWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - declineInvitation: { - (params?: RestEndpointMethodTypes["repos"]["declineInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required. - * - * If an organization owner has configured the organization to prevent members from deleting organization-owned - * repositories, you will get a `403 Forbidden` response. - */ - delete: { - (params?: RestEndpointMethodTypes["repos"]["delete"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Disables the ability to restrict who can push to this branch. - */ - deleteAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["deleteAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - deleteAdminBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["deleteAdminBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - deleteBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["deleteBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteCommitComment: { - (params?: RestEndpointMethodTypes["repos"]["deleteCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits. - */ - deleteCommitSignatureProtection: { - (params?: RestEndpointMethodTypes["repos"]["deleteCommitSignatureProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead. - */ - deleteDeployKey: { - (params?: RestEndpointMethodTypes["repos"]["deleteDeployKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To ensure there can always be an active deployment, you can only delete an _inactive_ deployment. Anyone with `repo` or `repo_deployment` scopes can delete an inactive deployment. - * - * To set a deployment as inactive, you must: - * - * * Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment. - * * Mark the active deployment as inactive by adding any non-successful deployment status. - * - * For more information, see "[Create a deployment](https://docs.github.com/rest/reference/repos/deployments/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/reference/repos#create-a-deployment-status)." - */ - deleteDeployment: { - (params?: RestEndpointMethodTypes["repos"]["deleteDeployment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a file in a repository. - * - * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author. - * - * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used. - * - * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code. - */ - deleteFile: { - (params?: RestEndpointMethodTypes["repos"]["deleteFile"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteInvitation: { - (params?: RestEndpointMethodTypes["repos"]["deleteInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deletePagesSite: { - (params?: RestEndpointMethodTypes["repos"]["deletePagesSite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - deletePullRequestReviewProtection: { - (params?: RestEndpointMethodTypes["repos"]["deletePullRequestReviewProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access to the repository can delete a release. - */ - deleteRelease: { - (params?: RestEndpointMethodTypes["repos"]["deleteRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteReleaseAsset: { - (params?: RestEndpointMethodTypes["repos"]["deleteReleaseAsset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - deleteWebhook: { - (params?: RestEndpointMethodTypes["repos"]["deleteWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)". - */ - disableAutomatedSecurityFixes: { - (params?: RestEndpointMethodTypes["repos"]["disableAutomatedSecurityFixes"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Disables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - disableVulnerabilityAlerts: { - (params?: RestEndpointMethodTypes["repos"]["disableVulnerabilityAlerts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * **Note**: For private repositories, these links are temporary and expire after five minutes. - * @deprecated octokit.repos.downloadArchive() has been renamed to octokit.repos.downloadZipballArchive() (2020-09-17) - */ - downloadArchive: { - (params?: RestEndpointMethodTypes["repos"]["downloadArchive"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * **Note**: For private repositories, these links are temporary and expire after five minutes. - */ - downloadTarballArchive: { - (params?: RestEndpointMethodTypes["repos"]["downloadTarballArchive"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually - * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use - * the `Location` header to make a second `GET` request. - * **Note**: For private repositories, these links are temporary and expire after five minutes. - */ - downloadZipballArchive: { - (params?: RestEndpointMethodTypes["repos"]["downloadZipballArchive"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)". - */ - enableAutomatedSecurityFixes: { - (params?: RestEndpointMethodTypes["repos"]["enableAutomatedSecurityFixes"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". - */ - enableVulnerabilityAlerts: { - (params?: RestEndpointMethodTypes["repos"]["enableVulnerabilityAlerts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * When you pass the `scarlet-witch-preview` media type, requests to get a repository will also return the repository's code of conduct if it can be detected from the repository's code of conduct file. - * - * The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network. - */ - get: { - (params?: RestEndpointMethodTypes["repos"]["get"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists who has access to this protected branch. - * - * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories. - */ - getAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["getAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getAdminBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["getAdminBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getAllStatusCheckContexts: { - (params?: RestEndpointMethodTypes["repos"]["getAllStatusCheckContexts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getAllTopics: { - (params?: RestEndpointMethodTypes["repos"]["getAllTopics"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. - */ - getAppsWithAccessToProtectedBranch: { - (params?: RestEndpointMethodTypes["repos"]["getAppsWithAccessToProtectedBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getBranch: { - (params?: RestEndpointMethodTypes["repos"]["getBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["getBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - getClones: { - (params?: RestEndpointMethodTypes["repos"]["getClones"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a weekly aggregate of the number of additions and deletions pushed to a repository. - */ - getCodeFrequencyStats: { - (params?: RestEndpointMethodTypes["repos"]["getCodeFrequencyStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Checks the repository permission of a collaborator. The possible repository permissions are `admin`, `write`, `read`, and `none`. - */ - getCollaboratorPermissionLevel: { - (params?: RestEndpointMethodTypes["repos"]["getCollaboratorPermissionLevel"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. - * - * The most recent status for each context is returned, up to 100. This field [paginates](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination) if there are over 100 contexts. - * - * Additionally, a combined `state` is returned. The `state` is one of: - * - * * **failure** if any of the contexts report as `error` or `failure` - * * **pending** if there are no statuses or a context is `pending` - * * **success** if the latest status for all contexts is `success` - */ - getCombinedStatusForRef: { - (params?: RestEndpointMethodTypes["repos"]["getCombinedStatusForRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint. - * - * **Note:** If there are more than 300 files in the commit diff, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing. - * - * You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property. - * - * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag. - * - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - getCommit: { - (params?: RestEndpointMethodTypes["repos"]["getCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`. - */ - getCommitActivityStats: { - (params?: RestEndpointMethodTypes["repos"]["getCommitActivityStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getCommitComment: { - (params?: RestEndpointMethodTypes["repos"]["getCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://help.github.com/articles/signing-commits-with-gpg) in GitHub Help. - * - * **Note**: You must enable branch protection to require signed commits. - */ - getCommitSignatureProtection: { - (params?: RestEndpointMethodTypes["repos"]["getCommitSignatureProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint will return all community profile metrics, including an - * overall health score, repository description, the presence of documentation, detected - * code of conduct, detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, - * README, and CONTRIBUTING files. - * - * `content_reports_enabled` is only returned for organization-owned repositories. - */ - getCommunityProfileMetrics: { - (params?: RestEndpointMethodTypes["repos"]["getCommunityProfileMetrics"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit - * `:path`, you will receive the contents of all files in the repository. - * - * Files and symlinks support [a custom media type](https://docs.github.com/rest/reference/repos#custom-media-types) for - * retrieving the raw content or rendered HTML (when supported). All content types support [a custom media - * type](https://docs.github.com/rest/reference/repos#custom-media-types) to ensure the content is returned in a consistent - * object format. - * - * **Note**: - * * To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/reference/git#trees). - * * This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees - * API](https://docs.github.com/rest/reference/git#get-a-tree). - * * This API supports files up to 1 megabyte in size. - * - * #### If the content is a directory - * The response will be an array of objects, one object for each item in the directory. - * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value - * _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW). - * In the next major version of the API, the type will be returned as "submodule". - * - * #### If the content is a symlink - * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the - * API responds with the content of the file (in the format shown in the example. Otherwise, the API responds with an object - * describing the symlink itself. - * - * #### If the content is a submodule - * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific - * commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out - * the submodule at that specific commit. - * - * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the - * github.com URLs (`html_url` and `_links["html"]`) will have null values. - */ - getContent: { - (params?: RestEndpointMethodTypes["repos"]["getContent"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information: - * - * * `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time). - * * `a` - Number of additions - * * `d` - Number of deletions - * * `c` - Number of commits - */ - getContributorsStats: { - (params?: RestEndpointMethodTypes["repos"]["getContributorsStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getDeployKey: { - (params?: RestEndpointMethodTypes["repos"]["getDeployKey"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getDeployment: { - (params?: RestEndpointMethodTypes["repos"]["getDeployment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with pull access can view a deployment status for a deployment: - */ - getDeploymentStatus: { - (params?: RestEndpointMethodTypes["repos"]["getDeploymentStatus"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getLatestPagesBuild: { - (params?: RestEndpointMethodTypes["repos"]["getLatestPagesBuild"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * View the latest published full release for the repository. - * - * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published. - */ - getLatestRelease: { - (params?: RestEndpointMethodTypes["repos"]["getLatestRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getPages: { - (params?: RestEndpointMethodTypes["repos"]["getPages"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - getPagesBuild: { - (params?: RestEndpointMethodTypes["repos"]["getPagesBuild"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`. - * - * The array order is oldest week (index 0) to most recent week. - */ - getParticipationStats: { - (params?: RestEndpointMethodTypes["repos"]["getParticipationStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getPullRequestReviewProtection: { - (params?: RestEndpointMethodTypes["repos"]["getPullRequestReviewProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Each array contains the day number, hour number, and number of commits: - * - * * `0-6`: Sunday - Saturday - * * `0-23`: Hour of day - * * Number of commits - * - * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. - */ - getPunchCardStats: { - (params?: RestEndpointMethodTypes["repos"]["getPunchCardStats"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets the preferred README for a repository. - * - * READMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML. - */ - getReadme: { - (params?: RestEndpointMethodTypes["repos"]["getReadme"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia). - */ - getRelease: { - (params?: RestEndpointMethodTypes["repos"]["getRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response. - */ - getReleaseAsset: { - (params?: RestEndpointMethodTypes["repos"]["getReleaseAsset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a published release with the specified tag. - */ - getReleaseByTag: { - (params?: RestEndpointMethodTypes["repos"]["getReleaseByTag"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - getStatusChecksProtection: { - (params?: RestEndpointMethodTypes["repos"]["getStatusChecksProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the teams who have push access to this branch. The list includes child teams. - */ - getTeamsWithAccessToProtectedBranch: { - (params?: RestEndpointMethodTypes["repos"]["getTeamsWithAccessToProtectedBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the top 10 popular contents over the last 14 days. - */ - getTopPaths: { - (params?: RestEndpointMethodTypes["repos"]["getTopPaths"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the top 10 referrers over the last 14 days. - */ - getTopReferrers: { - (params?: RestEndpointMethodTypes["repos"]["getTopReferrers"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Lists the people who have push access to this branch. - */ - getUsersWithAccessToProtectedBranch: { - (params?: RestEndpointMethodTypes["repos"]["getUsersWithAccessToProtectedBranch"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. - */ - getViews: { - (params?: RestEndpointMethodTypes["repos"]["getViews"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/reference/repos#get-a-webhook-configuration-for-a-repository)." - */ - getWebhook: { - (params?: RestEndpointMethodTypes["repos"]["getWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/reference/orgs#get-a-repository-webhook)." - * - * Access tokens must have the `read:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:read` permission. - */ - getWebhookConfigForRepo: { - (params?: RestEndpointMethodTypes["repos"]["getWebhookConfigForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listBranches: { - (params?: RestEndpointMethodTypes["repos"]["listBranches"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch. - */ - listBranchesForHeadCommit: { - (params?: RestEndpointMethodTypes["repos"]["listBranchesForHeadCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. - * - * Team members will include the members of child teams. - */ - listCollaborators: { - (params?: RestEndpointMethodTypes["repos"]["listCollaborators"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Use the `:commit_sha` to specify the commit that will have its comments listed. - */ - listCommentsForCommit: { - (params?: RestEndpointMethodTypes["repos"]["listCommentsForCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Commit Comments use [these custom media types](https://docs.github.com/rest/reference/repos#custom-media-types). You can read more about the use of media types in the API [here](https://docs.github.com/rest/overview/media-types/). - * - * Comments are ordered by ascending ID. - */ - listCommitCommentsForRepo: { - (params?: RestEndpointMethodTypes["repos"]["listCommitCommentsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one. - * - * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`. - */ - listCommitStatusesForRef: { - (params?: RestEndpointMethodTypes["repos"]["listCommitStatusesForRef"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Signature verification object** - * - * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: - * - * | Name | Type | Description | - * | ---- | ---- | ----------- | - * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | - * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | - * | `signature` | `string` | The signature that was extracted from the commit. | - * | `payload` | `string` | The value that was signed. | - * - * These are the possible values for `reason` in the `verification` object: - * - * | Value | Description | - * | ----- | ----------- | - * | `expired_key` | The key that made the signature is expired. | - * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | - * | `gpgverify_error` | There was an error communicating with the signature verification service. | - * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | - * | `unsigned` | The object does not include a signature. | - * | `unknown_signature_type` | A non-PGP signature was found in the commit. | - * | `no_user` | No user was associated with the `committer` email address in the commit. | - * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | - * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | - * | `unknown_key` | The key that made the signature has not been registered with any user's account. | - * | `malformed_signature` | There was an error parsing the signature. | - * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | - * | `valid` | None of the above errors applied, so the signature is considered to be verified. | - */ - listCommits: { - (params?: RestEndpointMethodTypes["repos"]["listCommits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API v3 caches contributor data to improve performance. - * - * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information. - */ - listContributors: { - (params?: RestEndpointMethodTypes["repos"]["listContributors"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listDeployKeys: { - (params?: RestEndpointMethodTypes["repos"]["listDeployKeys"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with pull access can view deployment statuses for a deployment: - */ - listDeploymentStatuses: { - (params?: RestEndpointMethodTypes["repos"]["listDeploymentStatuses"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Simple filtering of deployments is available via query parameters: - */ - listDeployments: { - (params?: RestEndpointMethodTypes["repos"]["listDeployments"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. - * - * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["repos"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists repositories for the specified organization. - */ - listForOrg: { - (params?: RestEndpointMethodTypes["repos"]["listForOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists public repositories for the specified user. - */ - listForUser: { - (params?: RestEndpointMethodTypes["repos"]["listForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listForks: { - (params?: RestEndpointMethodTypes["repos"]["listForks"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations. - */ - listInvitations: { - (params?: RestEndpointMethodTypes["repos"]["listInvitations"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * When authenticating as a user, this endpoint will list all currently open repository invitations for that user. - */ - listInvitationsForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["repos"]["listInvitationsForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language. - */ - listLanguages: { - (params?: RestEndpointMethodTypes["repos"]["listLanguages"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listPagesBuilds: { - (params?: RestEndpointMethodTypes["repos"]["listPagesBuilds"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all public repositories in the order that they were created. - * - * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories. - */ - listPublic: { - (params?: RestEndpointMethodTypes["repos"]["listPublic"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all pull requests containing the provided commit SHA, which can be from any point in the commit history. The results will include open and closed pull requests. Additional preview headers may be required to see certain details for associated pull requests, such as whether a pull request is in a draft state. For more information about previews that might affect this endpoint, see the [List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests) endpoint. - */ - listPullRequestsAssociatedWithCommit: { - (params?: RestEndpointMethodTypes["repos"]["listPullRequestsAssociatedWithCommit"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listReleaseAssets: { - (params?: RestEndpointMethodTypes["repos"]["listReleaseAssets"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/reference/repos#list-repository-tags). - * - * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases. - */ - listReleases: { - (params?: RestEndpointMethodTypes["repos"]["listReleases"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listTags: { - (params?: RestEndpointMethodTypes["repos"]["listTags"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listTeams: { - (params?: RestEndpointMethodTypes["repos"]["listTeams"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - listWebhooks: { - (params?: RestEndpointMethodTypes["repos"]["listWebhooks"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - merge: { - (params?: RestEndpointMethodTypes["repos"]["merge"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. - */ - pingWebhook: { - (params?: RestEndpointMethodTypes["repos"]["pingWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. - * - * | Type | Description | - * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - removeAppAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["removeAppAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - removeCollaborator: { - (params?: RestEndpointMethodTypes["repos"]["removeCollaborator"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - removeStatusCheckContexts: { - (params?: RestEndpointMethodTypes["repos"]["removeStatusCheckContexts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - removeStatusCheckProtection: { - (params?: RestEndpointMethodTypes["repos"]["removeStatusCheckProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a team to push to this branch. You can also remove push access for child teams. - * - * | Type | Description | - * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Teams that should no longer have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - removeTeamAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["removeTeamAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Removes the ability of a user to push to this branch. - * - * | Type | Description | - * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - removeUserAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["removeUserAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - replaceAllTopics: { - (params?: RestEndpointMethodTypes["repos"]["replaceAllTopics"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures. - * - * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes. - */ - requestPagesBuild: { - (params?: RestEndpointMethodTypes["repos"]["requestPagesBuild"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - */ - setAdminBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["setAdminBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. - * - * | Type | Description | - * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | - * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - setAppAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["setAppAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - */ - setStatusCheckContexts: { - (params?: RestEndpointMethodTypes["repos"]["setStatusCheckContexts"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams. - * - * | Type | Description | - * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | - * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - setTeamAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["setTeamAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people. - * - * | Type | Description | - * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | - * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | - */ - setUserAccessRestrictions: { - (params?: RestEndpointMethodTypes["repos"]["setUserAccessRestrictions"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated. - * - * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test` - */ - testPushWebhook: { - (params?: RestEndpointMethodTypes["repos"]["testPushWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://help.github.com/articles/about-repository-transfers/). - */ - transfer: { - (params?: RestEndpointMethodTypes["repos"]["transfer"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/reference/repos#replace-all-repository-topics) endpoint. - */ - update: { - (params?: RestEndpointMethodTypes["repos"]["update"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Protecting a branch requires admin or owner permissions to the repository. - * - * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. - * - * **Note**: The list of users, apps, and teams in total is limited to 100 items. - */ - updateBranchProtection: { - (params?: RestEndpointMethodTypes["repos"]["updateBranchProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateCommitComment: { - (params?: RestEndpointMethodTypes["repos"]["updateCommitComment"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). - */ - updateInformationAboutPagesSite: { - (params?: RestEndpointMethodTypes["repos"]["updateInformationAboutPagesSite"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - updateInvitation: { - (params?: RestEndpointMethodTypes["repos"]["updateInvitation"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled. - * - * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. - */ - updatePullRequestReviewProtection: { - (params?: RestEndpointMethodTypes["repos"]["updatePullRequestReviewProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access to the repository can edit a release. - */ - updateRelease: { - (params?: RestEndpointMethodTypes["repos"]["updateRelease"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Users with push access to the repository can edit a release asset. - */ - updateReleaseAsset: { - (params?: RestEndpointMethodTypes["repos"]["updateReleaseAsset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. - * @deprecated octokit.repos.updateStatusCheckPotection() has been renamed to octokit.repos.updateStatusCheckProtection() (2020-09-17) - */ - updateStatusCheckPotection: { - (params?: RestEndpointMethodTypes["repos"]["updateStatusCheckPotection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. - */ - updateStatusCheckProtection: { - (params?: RestEndpointMethodTypes["repos"]["updateStatusCheckProtection"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/reference/repos#update-a-webhook-configuration-for-a-repository)." - */ - updateWebhook: { - (params?: RestEndpointMethodTypes["repos"]["updateWebhook"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the webhook configuration for a repository. To update more information about the webhook, including the `active` state and `events`, use "[Update a repository webhook](/rest/reference/orgs#update-a-repository-webhook)." - * - * Access tokens must have the `write:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:write` permission. - */ - updateWebhookConfigForRepo: { - (params?: RestEndpointMethodTypes["repos"]["updateWebhookConfigForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint makes use of [a Hypermedia relation](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in - * the response of the [Create a release endpoint](https://docs.github.com/rest/reference/repos#create-a-release) to upload a release asset. - * - * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint. - * - * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example: - * - * `application/zip` - * - * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, - * you'll still need to pass your authentication to be able to upload an asset. - * - * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted. - * - * **Notes:** - * * GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List assets for a release](https://docs.github.com/rest/reference/repos#list-assets-for-a-release)" - * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://github.com/contact). - * * If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset. - */ - uploadReleaseAsset: { - (params?: RestEndpointMethodTypes["repos"]["uploadReleaseAsset"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - search: { - /** - * Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this: - * - * `q=addClass+in:file+language:js+repo:jquery/jquery` - * - * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository. - * - * #### Considerations for code search - * - * Due to the complexity of searching code, there are a few restrictions on how searches are performed: - * - * * Only the _default branch_ is considered. In most cases, this will be the `master` branch. - * * Only files smaller than 384 KB are searchable. - * * You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing - * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is. - */ - code: { - (params?: RestEndpointMethodTypes["search"]["code"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find commits via various criteria on the default branch (usually `master`). This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match - * metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this: - * - * `q=repo:octocat/Spoon-Knife+css` - */ - commits: { - (params?: RestEndpointMethodTypes["search"]["commits"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted - * search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this. - * - * `q=windows+label:bug+language:python+state:open&sort=created&order=asc` - * - * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results. - * - * **Note:** For [user-to-server](https://docs.github.com/developers/apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) GitHub App requests, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)." - */ - issuesAndPullRequests: { - (params?: RestEndpointMethodTypes["search"]["issuesAndPullRequests"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this: - * - * `q=bug+defect+enhancement&repository_id=64778136` - * - * The labels that best match the query appear first in the search results. - */ - labels: { - (params?: RestEndpointMethodTypes["search"]["labels"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this: - * - * `q=tetris+language:assembly&sort=stars&order=desc` - * - * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results. - * - * When you include the `mercy` preview header, you can also search for multiple topics by adding more `topic:` instances. For example, your query might look like this: - * - * `q=topic:ruby+topic:rails` - */ - repos: { - (params?: RestEndpointMethodTypes["search"]["repos"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). See "[Searching topics](https://help.github.com/articles/searching-topics/)" for a detailed list of qualifiers. - * - * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this: - * - * `q=ruby+is:featured` - * - * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results. - */ - topics: { - (params?: RestEndpointMethodTypes["search"]["topics"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). - * - * When searching for users, you can get text match metadata for the issue **login**, **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). - * - * For example, if you're looking for a list of popular users, you might try this query: - * - * `q=tom+repos:%3E42+followers:%3E1000` - * - * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers. - */ - users: { - (params?: RestEndpointMethodTypes["search"]["users"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - secretScanning: { - /** - * Gets a single secret scanning alert detected in a private repository. To use this endpoint, you must be an administrator for the repository or organization, and you must use an access token with the `repo` scope or `security_events` scope. - * - * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. - */ - getAlert: { - (params?: RestEndpointMethodTypes["secretScanning"]["getAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all secret scanning alerts for a private repository, from newest to oldest. To use this endpoint, you must be an administrator for the repository or organization, and you must use an access token with the `repo` scope or `security_events` scope. - * - * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. - */ - listAlertsForRepo: { - (params?: RestEndpointMethodTypes["secretScanning"]["listAlertsForRepo"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Updates the status of a secret scanning alert in a private repository. To use this endpoint, you must be an administrator for the repository or organization, and you must use an access token with the `repo` scope or `security_events` scope. - * - * GitHub Apps must have the `secret_scanning_alerts` write permission to use this endpoint. - */ - updateAlert: { - (params?: RestEndpointMethodTypes["secretScanning"]["updateAlert"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - teams: { - /** - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team. - * - * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. - * - * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - addOrUpdateMembershipForUserInOrg: { - (params?: RestEndpointMethodTypes["teams"]["addOrUpdateMembershipForUserInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/projects/{project_id}`. - */ - addOrUpdateProjectPermissionsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["addOrUpdateProjectPermissionsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - * - * For more information about the permission levels, see "[Repository permission levels for an organization](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". - */ - addOrUpdateRepoPermissionsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["addOrUpdateRepoPermissionsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects/{project_id}`. - */ - checkPermissionsForProjectInOrg: { - (params?: RestEndpointMethodTypes["teams"]["checkPermissionsForProjectInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked. - * - * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `application/vnd.github.v3.repository+json` accept header. - * - * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - checkPermissionsForRepoInOrg: { - (params?: RestEndpointMethodTypes["teams"]["checkPermissionsForRepoInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://help.github.com/en/articles/setting-team-creation-permissions-in-your-organization)." - * - * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/about-teams)". - */ - create: { - (params?: RestEndpointMethodTypes["teams"]["create"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - */ - createDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["teams"]["createDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`. - */ - createDiscussionInOrg: { - (params?: RestEndpointMethodTypes["teams"]["createDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - */ - deleteDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["teams"]["deleteDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - */ - deleteDiscussionInOrg: { - (params?: RestEndpointMethodTypes["teams"]["deleteDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To delete a team, the authenticated user must be an organization owner or team maintainer. - * - * If you are an organization owner, deleting a parent team will delete all of its child teams as well. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`. - */ - deleteInOrg: { - (params?: RestEndpointMethodTypes["teams"]["deleteInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Gets a team using the team's `slug`. GitHub generates the `slug` from the team `name`. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`. - */ - getByName: { - (params?: RestEndpointMethodTypes["teams"]["getByName"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - */ - getDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["teams"]["getDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - */ - getDiscussionInOrg: { - (params?: RestEndpointMethodTypes["teams"]["getDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Team members will include the members of child teams. - * - * To get a user's membership with a team, the team must be visible to the authenticated user. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`. - * - * **Note:** The `role` for organization owners returns as `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team). - */ - getMembershipForUserInOrg: { - (params?: RestEndpointMethodTypes["teams"]["getMembershipForUserInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all teams in an organization that are visible to the authenticated user. - */ - list: { - (params?: RestEndpointMethodTypes["teams"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the child teams of the team specified by `{team_slug}`. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`. - */ - listChildInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listChildInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. - */ - listDiscussionCommentsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listDiscussionCommentsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`. - */ - listDiscussionsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listDiscussionsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://docs.github.com/apps/building-oauth-apps/). - */ - listForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["teams"]["listForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Team members will include the members of child teams. - * - * To list members in a team, the team must be visible to the authenticated user. - */ - listMembersInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listMembersInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`. - */ - listPendingInvitationsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listPendingInvitationsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the organization projects for a team. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`. - */ - listProjectsInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listProjectsInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists a team's repositories visible to the authenticated user. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`. - */ - listReposInOrg: { - (params?: RestEndpointMethodTypes["teams"]["listReposInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. - * - * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. - * - * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`. - */ - removeMembershipForUserInOrg: { - (params?: RestEndpointMethodTypes["teams"]["removeMembershipForUserInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. This endpoint removes the project from the team, but does not delete the project. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/projects/{project_id}`. - */ - removeProjectInOrg: { - (params?: RestEndpointMethodTypes["teams"]["removeProjectInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. - */ - removeRepoInOrg: { - (params?: RestEndpointMethodTypes["teams"]["removeRepoInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. - */ - updateDiscussionCommentInOrg: { - (params?: RestEndpointMethodTypes["teams"]["updateDiscussionCommentInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. - */ - updateDiscussionInOrg: { - (params?: RestEndpointMethodTypes["teams"]["updateDiscussionInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * To edit a team, the authenticated user must either be an organization owner or a team maintainer. - * - * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`. - */ - updateInOrg: { - (params?: RestEndpointMethodTypes["teams"]["updateInOrg"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; - users: { - /** - * This endpoint is accessible with the `user` scope. - */ - addEmailForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["addEmailForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - block: { - (params?: RestEndpointMethodTypes["users"]["block"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If the user is blocked: - * - * If the user is not blocked: - */ - checkBlocked: { - (params?: RestEndpointMethodTypes["users"]["checkBlocked"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - checkFollowingForUser: { - (params?: RestEndpointMethodTypes["users"]["checkFollowingForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - checkPersonIsFollowedByAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["checkPersonIsFollowedByAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - createGpgKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["createGpgKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - createPublicSshKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["createPublicSshKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * This endpoint is accessible with the `user` scope. - */ - deleteEmailForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["deleteEmailForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - deleteGpgKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["deleteGpgKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - deletePublicSshKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["deletePublicSshKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." - * - * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. - */ - follow: { - (params?: RestEndpointMethodTypes["users"]["follow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * If the authenticated user is authenticated through basic authentication or OAuth with the `user` scope, then the response lists public and private profile information. - * - * If the authenticated user is authenticated through OAuth without the `user` scope, then the response lists only public profile information. - */ - getAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["getAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Provides publicly available information about someone with a GitHub account. - * - * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see 'Response with GitHub plan information' below" - * - * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/overview/resources-in-the-rest-api#authentication). - * - * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://docs.github.com/rest/reference/users#emails)". - */ - getByUsername: { - (params?: RestEndpointMethodTypes["users"]["getByUsername"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations. - * - * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this: - * - * ```shell - * curl -u username:token - * https://api.github.com/users/octocat/hovercard?subject_type=repository&subject_id=1300192 - * ``` - */ - getContextForUser: { - (params?: RestEndpointMethodTypes["users"]["getContextForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - getGpgKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["getGpgKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - getPublicSshKeyForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["getPublicSshKeyForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts. - * - * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of users. - */ - list: { - (params?: RestEndpointMethodTypes["users"]["list"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * List the users you've blocked on your personal account. - */ - listBlockedByAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listBlockedByAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope. - */ - listEmailsForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listEmailsForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people who the authenticated user follows. - */ - listFollowedByAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listFollowedByAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people following the authenticated user. - */ - listFollowersForAuthenticatedUser: { - (params?: RestEndpointMethodTypes["users"]["listFollowersForAuthenticatedUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people following the specified user. - */ - listFollowersForUser: { - (params?: RestEndpointMethodTypes["users"]["listFollowersForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the people who the specified user follows. - */ - listFollowingForUser: { - (params?: RestEndpointMethodTypes["users"]["listFollowingForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - listGpgKeysForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listGpgKeysForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the GPG keys for a user. This information is accessible by anyone. - */ - listGpgKeysForUser: { - (params?: RestEndpointMethodTypes["users"]["listGpgKeysForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope. - */ - listPublicEmailsForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listPublicEmailsForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the _verified_ public SSH keys for a user. This is accessible by anyone. - */ - listPublicKeysForUser: { - (params?: RestEndpointMethodTypes["users"]["listPublicKeysForUser"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - */ - listPublicSshKeysForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["listPublicSshKeysForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Sets the visibility for your primary email addresses. - */ - setPrimaryEmailVisibilityForAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["setPrimaryEmailVisibilityForAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - unblock: { - (params?: RestEndpointMethodTypes["users"]["unblock"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. - */ - unfollow: { - (params?: RestEndpointMethodTypes["users"]["unfollow"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - /** - * **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API. - */ - updateAuthenticated: { - (params?: RestEndpointMethodTypes["users"]["updateAuthenticated"]["parameters"]): Promise; - defaults: RequestInterface["defaults"]; - endpoint: EndpointInterface<{ - url: string; - }>; - }; - }; -}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts deleted file mode 100644 index 080eb973d..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts +++ /dev/null @@ -1,2455 +0,0 @@ -import { Endpoints, RequestParameters } from "@octokit/types"; -export declare type RestEndpointMethodTypes = { - actions: { - addSelectedRepoToOrgSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - cancelWorkflowRun: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"]["response"]; - }; - createOrUpdateOrgSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}"]["response"]; - }; - createOrUpdateRepoSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"]; - }; - createRegistrationTokenForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/actions/runners/registration-token"]["response"]; - }; - createRegistrationTokenForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/registration-token"]["response"]; - }; - createRemoveTokenForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/actions/runners/remove-token"]["response"]; - }; - createRemoveTokenForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/remove-token"]["response"]; - }; - createWorkflowDispatch: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"]["response"]; - }; - deleteArtifact: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["response"]; - }; - deleteOrgSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}"]["response"]; - }; - deleteRepoSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"]; - }; - deleteSelfHostedRunnerFromOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}"]["response"]; - }; - deleteSelfHostedRunnerFromRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"]["response"]; - }; - deleteWorkflowRun: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"]["response"]; - }; - deleteWorkflowRunLogs: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["response"]; - }; - disableSelectedRepositoryGithubActionsOrganization: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"]["response"]; - }; - disableWorkflow: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"]["response"]; - }; - downloadArtifact: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"]["response"]; - }; - downloadJobLogsForWorkflowRun: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"]["response"]; - }; - downloadWorkflowRunLogs: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["response"]; - }; - enableSelectedRepositoryGithubActionsOrganization: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"]["response"]; - }; - enableWorkflow: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"]["response"]; - }; - getAllowedActionsOrganization: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/permissions/selected-actions"]["response"]; - }; - getAllowedActionsRepository: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"]["response"]; - }; - getArtifact: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["response"]; - }; - getGithubActionsPermissionsOrganization: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/permissions"]["response"]; - }; - getGithubActionsPermissionsRepository: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["response"]; - }; - getJobForWorkflowRun: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"]["response"]; - }; - getOrgPublicKey: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/secrets/public-key"]["response"]; - }; - getOrgSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}"]["response"]; - }; - getRepoPermissions: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["response"]; - }; - getRepoPublicKey: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets/public-key"]["response"]; - }; - getRepoSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"]; - }; - getSelfHostedRunnerForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/runners/{runner_id}"]["response"]; - }; - getSelfHostedRunnerForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"]["response"]; - }; - getWorkflow: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"]["response"]; - }; - getWorkflowRun: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}"]["response"]; - }; - getWorkflowRunUsage: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"]["response"]; - }; - getWorkflowUsage: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"]["response"]; - }; - listArtifactsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"]; - }; - listJobsForWorkflowRun: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"]; - }; - listOrgSecrets: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/secrets"]["response"]; - }; - listRepoSecrets: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"]; - }; - listRepoWorkflows: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"]; - }; - listRunnerApplicationsForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/runners/downloads"]["response"]; - }; - listRunnerApplicationsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/downloads"]["response"]; - }; - listSelectedReposForOrgSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]; - }; - listSelectedRepositoriesEnabledGithubActionsOrganization: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"]; - }; - listSelfHostedRunnersForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/actions/runners"]["response"]; - }; - listSelfHostedRunnersForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"]; - }; - listWorkflowRunArtifacts: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"]; - }; - listWorkflowRuns: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"]; - }; - listWorkflowRunsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"]; - }; - reRunWorkflow: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"]["response"]; - }; - removeSelectedRepoFromOrgSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["response"]; - }; - setAllowedActionsOrganization: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/actions/permissions/selected-actions"]["response"]; - }; - setAllowedActionsRepository: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"]["response"]; - }; - setGithubActionsPermissionsOrganization: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/actions/permissions"]["response"]; - }; - setGithubActionsPermissionsRepository: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions"]["response"]; - }; - setSelectedReposForOrgSecret: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]; - }; - setSelectedRepositoriesEnabledGithubActionsOrganization: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/actions/permissions/repositories"]["response"]; - }; - }; - activity: { - checkRepoIsStarredByAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/starred/{owner}/{repo}"]["response"]; - }; - deleteRepoSubscription: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/subscription"]["response"]; - }; - deleteThreadSubscription: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /notifications/threads/{thread_id}/subscription"]["response"]; - }; - getFeeds: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /feeds"]["response"]; - }; - getRepoSubscription: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/subscription"]["response"]; - }; - getThread: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /notifications/threads/{thread_id}"]["response"]; - }; - getThreadSubscriptionForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /notifications/threads/{thread_id}/subscription"]["response"]; - }; - listEventsForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/events"]["response"]; - }; - listNotificationsForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /notifications"]["response"]; - }; - listOrgEventsForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/events/orgs/{org}"]["response"]; - }; - listPublicEvents: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /events"]["response"]; - }; - listPublicEventsForRepoNetwork: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /networks/{owner}/{repo}/events"]["response"]; - }; - listPublicEventsForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/events/public"]["response"]; - }; - listPublicOrgEvents: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/events"]["response"]; - }; - listReceivedEventsForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/received_events"]["response"]; - }; - listReceivedPublicEventsForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/received_events/public"]["response"]; - }; - listRepoEvents: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/events"]["response"]; - }; - listRepoNotificationsForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/notifications"]["response"]; - }; - listReposStarredByAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/starred"]["response"]; - }; - listReposStarredByUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/starred"]["response"]; - }; - listReposWatchedByUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/subscriptions"]["response"]; - }; - listStargazersForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["response"]; - }; - listWatchedReposForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/subscriptions"]["response"]; - }; - listWatchersForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["response"]; - }; - markNotificationsAsRead: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /notifications"]["response"]; - }; - markRepoNotificationsAsRead: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/notifications"]["response"]; - }; - markThreadAsRead: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /notifications/threads/{thread_id}"]["response"]; - }; - setRepoSubscription: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/subscription"]["response"]; - }; - setThreadSubscription: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /notifications/threads/{thread_id}/subscription"]["response"]; - }; - starRepoForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /user/starred/{owner}/{repo}"]["response"]; - }; - unstarRepoForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/starred/{owner}/{repo}"]["response"]; - }; - }; - apps: { - addRepoToInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; - }; - checkToken: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /applications/{client_id}/token"]["response"]; - }; - createContentAttachment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /content_references/{content_reference_id}/attachments"]["response"]; - }; - createFromManifest: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /app-manifests/{code}/conversions"]["response"]; - }; - createInstallationAccessToken: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /app/installations/{installation_id}/access_tokens"]["response"]; - }; - deleteAuthorization: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /applications/{client_id}/grant"]["response"]; - }; - deleteInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /app/installations/{installation_id}"]["response"]; - }; - deleteToken: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /applications/{client_id}/token"]["response"]; - }; - getAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /app"]["response"]; - }; - getBySlug: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /apps/{app_slug}"]["response"]; - }; - getInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /app/installations/{installation_id}"]["response"]; - }; - getOrgInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/installation"]["response"]; - }; - getRepoInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/installation"]["response"]; - }; - getSubscriptionPlanForAccount: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /marketplace_listing/accounts/{account_id}"]["response"]; - }; - getSubscriptionPlanForAccountStubbed: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /marketplace_listing/stubbed/accounts/{account_id}"]["response"]; - }; - getUserInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/installation"]["response"]; - }; - getWebhookConfigForApp: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /app/hook/config"]["response"]; - }; - listAccountsForPlan: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["response"]; - }; - listAccountsForPlanStubbed: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["response"]; - }; - listInstallationReposForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"]; - }; - listInstallations: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /app/installations"]["response"]; - }; - listInstallationsForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/installations"]["response"]; - }; - listPlans: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /marketplace_listing/plans"]["response"]; - }; - listPlansStubbed: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /marketplace_listing/stubbed/plans"]["response"]; - }; - listReposAccessibleToInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /installation/repositories"]["response"]; - }; - listSubscriptionsForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/marketplace_purchases"]["response"]; - }; - listSubscriptionsForAuthenticatedUserStubbed: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/marketplace_purchases/stubbed"]["response"]; - }; - removeRepoFromInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; - }; - resetToken: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /applications/{client_id}/token"]["response"]; - }; - revokeInstallationAccessToken: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /installation/token"]["response"]; - }; - suspendInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /app/installations/{installation_id}/suspended"]["response"]; - }; - unsuspendInstallation: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /app/installations/{installation_id}/suspended"]["response"]; - }; - updateWebhookConfigForApp: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /app/hook/config"]["response"]; - }; - }; - billing: { - getGithubActionsBillingOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/settings/billing/actions"]["response"]; - }; - getGithubActionsBillingUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/settings/billing/actions"]["response"]; - }; - getGithubPackagesBillingOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/settings/billing/packages"]["response"]; - }; - getGithubPackagesBillingUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/settings/billing/packages"]["response"]; - }; - getSharedStorageBillingOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/settings/billing/shared-storage"]["response"]; - }; - getSharedStorageBillingUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/settings/billing/shared-storage"]["response"]; - }; - }; - checks: { - create: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/check-runs"]["response"]; - }; - createSuite: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/check-suites"]["response"]; - }; - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"]["response"]; - }; - getSuite: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"]["response"]; - }; - listAnnotations: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["response"]; - }; - listForRef: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"]; - }; - listForSuite: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"]; - }; - listSuitesForRef: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"]; - }; - rerequestSuite: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"]["response"]; - }; - setSuitesPreferences: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/check-suites/preferences"]["response"]; - }; - update: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]["response"]; - }; - }; - codeScanning: { - getAlert: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["response"]; - }; - listAlertsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["response"]; - }; - listRecentAnalyses: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["response"]; - }; - updateAlert: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["response"]; - }; - uploadSarif: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/code-scanning/sarifs"]["response"]; - }; - }; - codesOfConduct: { - getAllCodesOfConduct: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /codes_of_conduct"]["response"]; - }; - getConductCode: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /codes_of_conduct/{key}"]["response"]; - }; - getForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/community/code_of_conduct"]["response"]; - }; - }; - emojis: { - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /emojis"]["response"]; - }; - }; - enterpriseAdmin: { - disableSelectedOrganizationGithubActionsEnterprise: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"]["response"]; - }; - enableSelectedOrganizationGithubActionsEnterprise: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"]["response"]; - }; - getAllowedActionsEnterprise: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /enterprises/{enterprise}/actions/permissions/selected-actions"]["response"]; - }; - getGithubActionsPermissionsEnterprise: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /enterprises/{enterprise}/actions/permissions"]["response"]; - }; - listSelectedOrganizationsEnabledGithubActionsEnterprise: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /enterprises/{enterprise}/actions/permissions/organizations"]["response"]; - }; - setAllowedActionsEnterprise: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"]["response"]; - }; - setGithubActionsPermissionsEnterprise: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /enterprises/{enterprise}/actions/permissions"]["response"]; - }; - setSelectedOrganizationsEnabledGithubActionsEnterprise: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /enterprises/{enterprise}/actions/permissions/organizations"]["response"]; - }; - }; - gists: { - checkIsStarred: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists/{gist_id}/star"]["response"]; - }; - create: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /gists"]["response"]; - }; - createComment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /gists/{gist_id}/comments"]["response"]; - }; - delete: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /gists/{gist_id}"]["response"]; - }; - deleteComment: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /gists/{gist_id}/comments/{comment_id}"]["response"]; - }; - fork: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /gists/{gist_id}/forks"]["response"]; - }; - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists/{gist_id}"]["response"]; - }; - getComment: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists/{gist_id}/comments/{comment_id}"]["response"]; - }; - getRevision: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists/{gist_id}/{sha}"]["response"]; - }; - list: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists"]["response"]; - }; - listComments: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists/{gist_id}/comments"]["response"]; - }; - listCommits: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists/{gist_id}/commits"]["response"]; - }; - listForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/gists"]["response"]; - }; - listForks: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists/{gist_id}/forks"]["response"]; - }; - listPublic: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists/public"]["response"]; - }; - listStarred: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gists/starred"]["response"]; - }; - star: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /gists/{gist_id}/star"]["response"]; - }; - unstar: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /gists/{gist_id}/star"]["response"]; - }; - update: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /gists/{gist_id}"]["response"]; - }; - updateComment: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /gists/{gist_id}/comments/{comment_id}"]["response"]; - }; - }; - git: { - createBlob: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/git/blobs"]["response"]; - }; - createCommit: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/git/commits"]["response"]; - }; - createRef: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/git/refs"]["response"]; - }; - createTag: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/git/tags"]["response"]; - }; - createTree: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/git/trees"]["response"]; - }; - deleteRef: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/git/refs/{ref}"]["response"]; - }; - getBlob: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"]["response"]; - }; - getCommit: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"]["response"]; - }; - getRef: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/git/ref/{ref}"]["response"]; - }; - getTag: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"]["response"]; - }; - getTree: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"]["response"]; - }; - listMatchingRefs: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["response"]; - }; - updateRef: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]["response"]; - }; - }; - gitignore: { - getAllTemplates: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gitignore/templates"]["response"]; - }; - getTemplate: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /gitignore/templates/{name}"]["response"]; - }; - }; - interactions: { - getRestrictionsForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/interaction-limits"]["response"]; - }; - getRestrictionsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/interaction-limits"]["response"]; - }; - getRestrictionsForYourPublicRepos: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/interaction-limits"]["response"]; - }; - removeRestrictionsForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/interaction-limits"]["response"]; - }; - removeRestrictionsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/interaction-limits"]["response"]; - }; - removeRestrictionsForYourPublicRepos: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/interaction-limits"]["response"]; - }; - setRestrictionsForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/interaction-limits"]["response"]; - }; - setRestrictionsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/interaction-limits"]["response"]; - }; - setRestrictionsForYourPublicRepos: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /user/interaction-limits"]["response"]; - }; - }; - issues: { - addAssignees: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["response"]; - }; - addLabels: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - checkUserCanBeAssigned: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/assignees/{assignee}"]["response"]; - }; - create: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/issues"]["response"]; - }; - createComment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"]; - }; - createLabel: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/labels"]["response"]; - }; - createMilestone: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/milestones"]["response"]; - }; - deleteComment: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"]; - }; - deleteLabel: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/labels/{name}"]["response"]; - }; - deleteMilestone: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"]; - }; - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}"]["response"]; - }; - getComment: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"]; - }; - getEvent: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/events/{event_id}"]["response"]; - }; - getLabel: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/labels/{name}"]["response"]; - }; - getMilestone: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"]; - }; - list: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /issues"]["response"]; - }; - listAssignees: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/assignees"]["response"]; - }; - listComments: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"]; - }; - listCommentsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["response"]; - }; - listEvents: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["response"]; - }; - listEventsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["response"]; - }; - listEventsForTimeline: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/issues"]["response"]; - }; - listForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/issues"]["response"]; - }; - listForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues"]["response"]; - }; - listLabelsForMilestone: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["response"]; - }; - listLabelsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/labels"]["response"]; - }; - listLabelsOnIssue: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - listMilestones: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/milestones"]["response"]; - }; - lock: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"]["response"]; - }; - removeAllLabels: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - removeAssignees: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["response"]; - }; - removeLabel: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"]["response"]; - }; - setLabels: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; - }; - unlock: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"]["response"]; - }; - update: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/issues/{issue_number}"]["response"]; - }; - updateComment: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"]; - }; - updateLabel: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/labels/{name}"]["response"]; - }; - updateMilestone: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"]; - }; - }; - licenses: { - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /licenses/{license}"]["response"]; - }; - getAllCommonlyUsed: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /licenses"]["response"]; - }; - getForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/license"]["response"]; - }; - }; - markdown: { - render: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /markdown"]["response"]; - }; - renderRaw: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /markdown/raw"]["response"]; - }; - }; - meta: { - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /meta"]["response"]; - }; - getOctocat: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /octocat"]["response"]; - }; - getZen: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /zen"]["response"]; - }; - root: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /"]["response"]; - }; - }; - migrations: { - cancelImport: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/import"]["response"]; - }; - deleteArchiveForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/migrations/{migration_id}/archive"]["response"]; - }; - deleteArchiveForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/archive"]["response"]; - }; - downloadArchiveForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/archive"]["response"]; - }; - getArchiveForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/migrations/{migration_id}/archive"]["response"]; - }; - getCommitAuthors: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/import/authors"]["response"]; - }; - getImportStatus: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/import"]["response"]; - }; - getLargeFiles: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/import/large_files"]["response"]; - }; - getStatusForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/migrations/{migration_id}"]["response"]; - }; - getStatusForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/migrations/{migration_id}"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/migrations"]["response"]; - }; - listForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/migrations"]["response"]; - }; - listReposForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["response"]; - }; - listReposForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"]; - }; - mapCommitAuthor: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"]["response"]; - }; - setLfsPreference: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/import/lfs"]["response"]; - }; - startForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /user/migrations"]["response"]; - }; - startForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/migrations"]["response"]; - }; - startImport: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/import"]["response"]; - }; - unlockRepoForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"]["response"]; - }; - unlockRepoForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]["response"]; - }; - updateImport: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/import"]["response"]; - }; - }; - orgs: { - blockUser: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/blocks/{username}"]["response"]; - }; - checkBlockedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/blocks/{username}"]["response"]; - }; - checkMembershipForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/members/{username}"]["response"]; - }; - checkPublicMembershipForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/public_members/{username}"]["response"]; - }; - convertMemberToOutsideCollaborator: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/outside_collaborators/{username}"]["response"]; - }; - createInvitation: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/invitations"]["response"]; - }; - createWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/hooks"]["response"]; - }; - deleteWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/hooks/{hook_id}"]["response"]; - }; - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}"]["response"]; - }; - getMembershipForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/memberships/orgs/{org}"]["response"]; - }; - getMembershipForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/memberships/{username}"]["response"]; - }; - getWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/hooks/{hook_id}"]["response"]; - }; - getWebhookConfigForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/config"]["response"]; - }; - list: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /organizations"]["response"]; - }; - listAppInstallations: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/installations"]["response"]; - }; - listBlockedUsers: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/blocks"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/orgs"]["response"]; - }; - listForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/orgs"]["response"]; - }; - listInvitationTeams: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["response"]; - }; - listMembers: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/members"]["response"]; - }; - listMembershipsForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/memberships/orgs"]["response"]; - }; - listOutsideCollaborators: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/outside_collaborators"]["response"]; - }; - listPendingInvitations: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/invitations"]["response"]; - }; - listPublicMembers: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/public_members"]["response"]; - }; - listWebhooks: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/hooks"]["response"]; - }; - pingWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/hooks/{hook_id}/pings"]["response"]; - }; - removeMember: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/members/{username}"]["response"]; - }; - removeMembershipForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/memberships/{username}"]["response"]; - }; - removeOutsideCollaborator: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/outside_collaborators/{username}"]["response"]; - }; - removePublicMembershipForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/public_members/{username}"]["response"]; - }; - setMembershipForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/memberships/{username}"]["response"]; - }; - setPublicMembershipForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/public_members/{username}"]["response"]; - }; - unblockUser: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/blocks/{username}"]["response"]; - }; - update: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /orgs/{org}"]["response"]; - }; - updateMembershipForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /user/memberships/orgs/{org}"]["response"]; - }; - updateWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /orgs/{org}/hooks/{hook_id}"]["response"]; - }; - updateWebhookConfigForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /orgs/{org}/hooks/{hook_id}/config"]["response"]; - }; - }; - projects: { - addCollaborator: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /projects/{project_id}/collaborators/{username}"]["response"]; - }; - createCard: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /projects/columns/{column_id}/cards"]["response"]; - }; - createColumn: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /projects/{project_id}/columns"]["response"]; - }; - createForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /user/projects"]["response"]; - }; - createForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/projects"]["response"]; - }; - createForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/projects"]["response"]; - }; - delete: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /projects/{project_id}"]["response"]; - }; - deleteCard: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /projects/columns/cards/{card_id}"]["response"]; - }; - deleteColumn: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /projects/columns/{column_id}"]["response"]; - }; - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /projects/{project_id}"]["response"]; - }; - getCard: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /projects/columns/cards/{card_id}"]["response"]; - }; - getColumn: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /projects/columns/{column_id}"]["response"]; - }; - getPermissionForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /projects/{project_id}/collaborators/{username}/permission"]["response"]; - }; - listCards: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /projects/columns/{column_id}/cards"]["response"]; - }; - listCollaborators: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /projects/{project_id}/collaborators"]["response"]; - }; - listColumns: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /projects/{project_id}/columns"]["response"]; - }; - listForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/projects"]["response"]; - }; - listForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/projects"]["response"]; - }; - listForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/projects"]["response"]; - }; - moveCard: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /projects/columns/cards/{card_id}/moves"]["response"]; - }; - moveColumn: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /projects/columns/{column_id}/moves"]["response"]; - }; - removeCollaborator: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /projects/{project_id}/collaborators/{username}"]["response"]; - }; - update: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /projects/{project_id}"]["response"]; - }; - updateCard: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /projects/columns/cards/{card_id}"]["response"]; - }; - updateColumn: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /projects/columns/{column_id}"]["response"]; - }; - }; - pulls: { - checkIfMerged: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["response"]; - }; - create: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/pulls"]["response"]; - }; - createReplyForReviewComment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"]["response"]; - }; - createReview: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"]; - }; - createReviewComment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"]; - }; - deletePendingReview: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"]; - }; - deleteReviewComment: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"]; - }; - dismissReview: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"]["response"]; - }; - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}"]["response"]; - }; - getReview: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"]; - }; - getReviewComment: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"]; - }; - list: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls"]["response"]; - }; - listCommentsForReview: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["response"]; - }; - listCommits: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["response"]; - }; - listFiles: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["response"]; - }; - listRequestedReviewers: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]; - }; - listReviewComments: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"]; - }; - listReviewCommentsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["response"]; - }; - listReviews: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"]; - }; - merge: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["response"]; - }; - removeRequestedReviewers: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]; - }; - requestReviewers: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]; - }; - submitReview: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"]["response"]; - }; - update: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"]["response"]; - }; - updateBranch: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"]["response"]; - }; - updateReview: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"]; - }; - updateReviewComment: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"]; - }; - }; - rateLimit: { - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /rate_limit"]["response"]; - }; - }; - reactions: { - createForCommitComment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"]; - }; - createForIssue: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"]; - }; - createForIssueComment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"]; - }; - createForPullRequestReviewComment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"]; - }; - createForTeamDiscussionCommentInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; - }; - createForTeamDiscussionInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"]; - }; - deleteForCommitComment: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"]["response"]; - }; - deleteForIssue: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"]["response"]; - }; - deleteForIssueComment: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"]["response"]; - }; - deleteForPullRequestComment: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"]["response"]; - }; - deleteForTeamDiscussion: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"]["response"]; - }; - deleteForTeamDiscussionComment: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"]["response"]; - }; - deleteLegacy: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /reactions/{reaction_id}"]["response"]; - }; - listForCommitComment: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"]; - }; - listForIssue: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"]; - }; - listForIssueComment: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"]; - }; - listForPullRequestReviewComment: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"]; - }; - listForTeamDiscussionCommentInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; - }; - listForTeamDiscussionInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"]; - }; - }; - repos: { - acceptInvitation: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["response"]; - }; - addAppAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; - }; - addCollaborator: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/collaborators/{username}"]["response"]; - }; - addStatusCheckContexts: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; - }; - addTeamAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; - }; - addUserAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; - }; - checkCollaborator: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}"]["response"]; - }; - checkVulnerabilityAlerts: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/vulnerability-alerts"]["response"]; - }; - compareCommits: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/compare/{base}...{head}"]["response"]; - }; - createCommitComment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"]; - }; - createCommitSignatureProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"]; - }; - createCommitStatus: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/statuses/{sha}"]["response"]; - }; - createDeployKey: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/keys"]["response"]; - }; - createDeployment: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/deployments"]["response"]; - }; - createDeploymentStatus: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"]; - }; - createDispatchEvent: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/dispatches"]["response"]; - }; - createForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /user/repos"]["response"]; - }; - createFork: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/forks"]["response"]; - }; - createInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/repos"]["response"]; - }; - createOrUpdateFileContents: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/contents/{path}"]["response"]; - }; - createPagesSite: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/pages"]["response"]; - }; - createRelease: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/releases"]["response"]; - }; - createUsingTemplate: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{template_owner}/{template_repo}/generate"]["response"]; - }; - createWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/hooks"]["response"]; - }; - declineInvitation: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["response"]; - }; - delete: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}"]["response"]; - }; - deleteAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["response"]; - }; - deleteAdminBranchProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"]; - }; - deleteBranchProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"]["response"]; - }; - deleteCommitComment: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}"]["response"]; - }; - deleteCommitSignatureProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"]; - }; - deleteDeployKey: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/keys/{key_id}"]["response"]; - }; - deleteDeployment: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"]["response"]; - }; - deleteFile: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/contents/{path}"]["response"]; - }; - deleteInvitation: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"]["response"]; - }; - deletePagesSite: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/pages"]["response"]; - }; - deletePullRequestReviewProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"]; - }; - deleteRelease: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}"]["response"]; - }; - deleteReleaseAsset: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"]; - }; - deleteWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"]["response"]; - }; - disableAutomatedSecurityFixes: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/automated-security-fixes"]["response"]; - }; - disableVulnerabilityAlerts: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/vulnerability-alerts"]["response"]; - }; - downloadArchive: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["response"]; - }; - downloadTarballArchive: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/tarball/{ref}"]["response"]; - }; - downloadZipballArchive: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["response"]; - }; - enableAutomatedSecurityFixes: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/automated-security-fixes"]["response"]; - }; - enableVulnerabilityAlerts: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/vulnerability-alerts"]["response"]; - }; - get: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}"]["response"]; - }; - getAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["response"]; - }; - getAdminBranchProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"]; - }; - getAllStatusCheckContexts: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; - }; - getAllTopics: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"]; - }; - getAppsWithAccessToProtectedBranch: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; - }; - getBranch: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}"]["response"]; - }; - getBranchProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection"]["response"]; - }; - getClones: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/traffic/clones"]["response"]; - }; - getCodeFrequencyStats: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/stats/code_frequency"]["response"]; - }; - getCollaboratorPermissionLevel: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}/permission"]["response"]; - }; - getCombinedStatusForRef: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"]; - }; - getCommit: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}"]["response"]; - }; - getCommitActivityStats: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/stats/commit_activity"]["response"]; - }; - getCommitComment: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}"]["response"]; - }; - getCommitSignatureProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"]; - }; - getCommunityProfileMetrics: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/community/profile"]["response"]; - }; - getContent: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/contents/{path}"]["response"]; - }; - getContributorsStats: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/stats/contributors"]["response"]; - }; - getDeployKey: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/keys/{key_id}"]["response"]; - }; - getDeployment: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}"]["response"]; - }; - getDeploymentStatus: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"]["response"]; - }; - getLatestPagesBuild: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pages/builds/latest"]["response"]; - }; - getLatestRelease: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/releases/latest"]["response"]; - }; - getPages: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pages"]["response"]; - }; - getPagesBuild: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pages/builds/{build_id}"]["response"]; - }; - getParticipationStats: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/stats/participation"]["response"]; - }; - getPullRequestReviewProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"]; - }; - getPunchCardStats: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/stats/punch_card"]["response"]; - }; - getReadme: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/readme"]["response"]; - }; - getRelease: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}"]["response"]; - }; - getReleaseAsset: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"]; - }; - getReleaseByTag: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/releases/tags/{tag}"]["response"]; - }; - getStatusChecksProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; - }; - getTeamsWithAccessToProtectedBranch: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; - }; - getTopPaths: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/traffic/popular/paths"]["response"]; - }; - getTopReferrers: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/traffic/popular/referrers"]["response"]; - }; - getUsersWithAccessToProtectedBranch: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; - }; - getViews: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/traffic/views"]["response"]; - }; - getWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}"]["response"]; - }; - getWebhookConfigForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"]["response"]; - }; - listBranches: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/branches"]["response"]; - }; - listBranchesForHeadCommit: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"]["response"]; - }; - listCollaborators: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["response"]; - }; - listCommentsForCommit: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"]; - }; - listCommitCommentsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/comments"]["response"]; - }; - listCommitStatusesForRef: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["response"]; - }; - listCommits: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/commits"]["response"]; - }; - listContributors: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/contributors"]["response"]; - }; - listDeployKeys: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/keys"]["response"]; - }; - listDeploymentStatuses: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"]; - }; - listDeployments: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/deployments"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/repos"]["response"]; - }; - listForOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/repos"]["response"]; - }; - listForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/repos"]["response"]; - }; - listForks: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/forks"]["response"]; - }; - listInvitations: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/invitations"]["response"]; - }; - listInvitationsForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/repository_invitations"]["response"]; - }; - listLanguages: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/languages"]["response"]; - }; - listPagesBuilds: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["response"]; - }; - listPublic: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repositories"]["response"]; - }; - listPullRequestsAssociatedWithCommit: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["response"]; - }; - listReleaseAssets: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["response"]; - }; - listReleases: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/releases"]["response"]; - }; - listTags: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/tags"]["response"]; - }; - listTeams: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/teams"]["response"]; - }; - listWebhooks: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/hooks"]["response"]; - }; - merge: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/merges"]["response"]; - }; - pingWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"]["response"]; - }; - removeAppAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; - }; - removeCollaborator: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/collaborators/{username}"]["response"]; - }; - removeStatusCheckContexts: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; - }; - removeStatusCheckProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; - }; - removeTeamAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; - }; - removeUserAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; - }; - replaceAllTopics: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/topics"]["response"]; - }; - requestPagesBuild: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/pages/builds"]["response"]; - }; - setAdminBranchProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"]; - }; - setAppAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; - }; - setStatusCheckContexts: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; - }; - setTeamAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; - }; - setUserAccessRestrictions: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; - }; - testPushWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"]["response"]; - }; - transfer: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /repos/{owner}/{repo}/transfer"]["response"]; - }; - update: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}"]["response"]; - }; - updateBranchProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection"]["response"]; - }; - updateCommitComment: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/comments/{comment_id}"]["response"]; - }; - updateInformationAboutPagesSite: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /repos/{owner}/{repo}/pages"]["response"]; - }; - updateInvitation: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"]["response"]; - }; - updatePullRequestReviewProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"]; - }; - updateRelease: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/releases/{release_id}"]["response"]; - }; - updateReleaseAsset: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"]; - }; - updateStatusCheckPotection: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; - }; - updateStatusCheckProtection: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; - }; - updateWebhook: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"]["response"]; - }; - updateWebhookConfigForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"]["response"]; - }; - uploadReleaseAsset: { - parameters: RequestParameters & Omit; - response: Endpoints["POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}"]["response"]; - }; - }; - search: { - code: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /search/code"]["response"]; - }; - commits: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /search/commits"]["response"]; - }; - issuesAndPullRequests: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /search/issues"]["response"]; - }; - labels: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /search/labels"]["response"]; - }; - repos: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /search/repositories"]["response"]; - }; - topics: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /search/topics"]["response"]; - }; - users: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /search/users"]["response"]; - }; - }; - secretScanning: { - getAlert: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["response"]; - }; - listAlertsForRepo: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["response"]; - }; - updateAlert: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["response"]; - }; - }; - teams: { - addOrUpdateMembershipForUserInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"]; - }; - addOrUpdateProjectPermissionsInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["response"]; - }; - addOrUpdateRepoPermissionsInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"]; - }; - checkPermissionsForProjectInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["response"]; - }; - checkPermissionsForRepoInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"]; - }; - create: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/teams"]["response"]; - }; - createDiscussionCommentInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"]; - }; - createDiscussionInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions"]["response"]; - }; - deleteDiscussionCommentInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"]; - }; - deleteDiscussionInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"]; - }; - deleteInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}"]["response"]; - }; - getByName: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}"]["response"]; - }; - getDiscussionCommentInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"]; - }; - getDiscussionInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"]; - }; - getMembershipForUserInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"]; - }; - list: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams"]["response"]; - }; - listChildInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["response"]; - }; - listDiscussionCommentsInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"]; - }; - listDiscussionsInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["response"]; - }; - listForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/teams"]["response"]; - }; - listMembersInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["response"]; - }; - listPendingInvitationsInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["response"]; - }; - listProjectsInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["response"]; - }; - listReposInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["response"]; - }; - removeMembershipForUserInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"]; - }; - removeProjectInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["response"]; - }; - removeRepoInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"]; - }; - updateDiscussionCommentInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"]; - }; - updateDiscussionInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"]; - }; - updateInOrg: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}"]["response"]; - }; - }; - users: { - addEmailForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /user/emails"]["response"]; - }; - block: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /user/blocks/{username}"]["response"]; - }; - checkBlocked: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/blocks/{username}"]["response"]; - }; - checkFollowingForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/following/{target_user}"]["response"]; - }; - checkPersonIsFollowedByAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/following/{username}"]["response"]; - }; - createGpgKeyForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /user/gpg_keys"]["response"]; - }; - createPublicSshKeyForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["POST /user/keys"]["response"]; - }; - deleteEmailForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/emails"]["response"]; - }; - deleteGpgKeyForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["response"]; - }; - deletePublicSshKeyForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/keys/{key_id}"]["response"]; - }; - follow: { - parameters: RequestParameters & Omit; - response: Endpoints["PUT /user/following/{username}"]["response"]; - }; - getAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user"]["response"]; - }; - getByUsername: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}"]["response"]; - }; - getContextForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/hovercard"]["response"]; - }; - getGpgKeyForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["response"]; - }; - getPublicSshKeyForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/keys/{key_id}"]["response"]; - }; - list: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users"]["response"]; - }; - listBlockedByAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/blocks"]["response"]; - }; - listEmailsForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/emails"]["response"]; - }; - listFollowedByAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/following"]["response"]; - }; - listFollowersForAuthenticatedUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/followers"]["response"]; - }; - listFollowersForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/followers"]["response"]; - }; - listFollowingForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/following"]["response"]; - }; - listGpgKeysForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/gpg_keys"]["response"]; - }; - listGpgKeysForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/gpg_keys"]["response"]; - }; - listPublicEmailsForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/public_emails"]["response"]; - }; - listPublicKeysForUser: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /users/{username}/keys"]["response"]; - }; - listPublicSshKeysForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["GET /user/keys"]["response"]; - }; - setPrimaryEmailVisibilityForAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /user/email/visibility"]["response"]; - }; - unblock: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/blocks/{username}"]["response"]; - }; - unfollow: { - parameters: RequestParameters & Omit; - response: Endpoints["DELETE /user/following/{username}"]["response"]; - }; - updateAuthenticated: { - parameters: RequestParameters & Omit; - response: Endpoints["PATCH /user"]["response"]; - }; - }; -}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts deleted file mode 100644 index 455e99898..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Octokit } from "@octokit/core"; -export { RestEndpointMethodTypes } from "./generated/parameters-and-response-types"; -import { Api } from "./types"; -/** - * This plugin is a 1:1 copy of internal @octokit/rest plugins. The primary - * goal is to rebuild @octokit/rest on top of @octokit/core. Once that is - * done, we will remove the registerEndpoints methods and return the methods - * directly as with the other plugins. At that point we will also remove the - * legacy workarounds and deprecations. - * - * See the plan at - * https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/1 - */ -export declare function restEndpointMethods(octokit: Octokit): Api; -export declare namespace restEndpointMethods { - var VERSION: string; -} diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts deleted file mode 100644 index e9b177b40..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Route, RequestParameters } from "@octokit/types"; -import { RestEndpointMethods } from "./generated/method-types"; -export declare type Api = RestEndpointMethods; -export declare type EndpointDecorations = { - mapToData?: string; - deprecated?: string; - renamed?: [string, string]; - renamedParameters?: { - [name: string]: string; - }; -}; -export declare type EndpointsDefaultsAndDecorations = { - [scope: string]: { - [methodName: string]: [Route, RequestParameters?, EndpointDecorations?]; - }; -}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts deleted file mode 100644 index 9feaddaab..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "4.4.1"; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js deleted file mode 100644 index 4436309ea..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js +++ /dev/null @@ -1,1353 +0,0 @@ -const Endpoints = { - actions: { - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", - ], - cancelWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel", - ], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: [ - "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}", - ], - createRegistrationTokenForOrg: [ - "POST /orgs/{org}/actions/runners/registration-token", - ], - createRegistrationTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/registration-token", - ], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/remove-token", - ], - createWorkflowDispatch: [ - "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", - ], - deleteArtifact: [ - "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}", - ], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteRepoSecret: [ - "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}", - ], - deleteSelfHostedRunnerFromOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}", - ], - deleteSelfHostedRunnerFromRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}", - ], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: [ - "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs", - ], - disableSelectedRepositoryGithubActionsOrganization: [ - "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}", - ], - disableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable", - ], - downloadArtifact: [ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}", - ], - downloadJobLogsForWorkflowRun: [ - "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs", - ], - downloadWorkflowRunLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs", - ], - enableSelectedRepositoryGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}", - ], - enableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable", - ], - getAllowedActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/selected-actions", - ], - getAllowedActionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/selected-actions", - ], - getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getGithubActionsPermissionsOrganization: [ - "GET /orgs/{org}/actions/permissions", - ], - getGithubActionsPermissionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions", - ], - getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], - getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getRepoPermissions: [ - "GET /repos/{owner}/{repo}/actions/permissions", - {}, - { renamed: ["actions", "getGithubActionsPermissionsRepository"] }, - ], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}", - ], - getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunUsage: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing", - ], - getWorkflowUsage: [ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing", - ], - listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listJobsForWorkflowRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", - ], - listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], - listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], - listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/downloads", - ], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", - ], - listSelectedRepositoriesEnabledGithubActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/repositories", - ], - listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], - listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", - ], - listWorkflowRuns: [ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", - ], - listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", - ], - setAllowedActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/selected-actions", - ], - setAllowedActionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions", - ], - setGithubActionsPermissionsOrganization: [ - "PUT /orgs/{org}/actions/permissions", - ], - setGithubActionsPermissionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions", - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories", - ], - setSelectedRepositoriesEnabledGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories", - ], - }, - activity: { - checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], - deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: [ - "DELETE /notifications/threads/{thread_id}/subscription", - ], - getFeeds: ["GET /feeds"], - getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], - getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: [ - "GET /notifications/threads/{thread_id}/subscription", - ], - listEventsForAuthenticatedUser: ["GET /users/{username}/events"], - listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: [ - "GET /users/{username}/events/orgs/{org}", - ], - listPublicEvents: ["GET /events"], - listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], - listPublicEventsForUser: ["GET /users/{username}/events/public"], - listPublicOrgEvents: ["GET /orgs/{org}/events"], - listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: [ - "GET /users/{username}/received_events/public", - ], - listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/notifications", - ], - listReposStarredByAuthenticatedUser: ["GET /user/starred"], - listReposStarredByUser: ["GET /users/{username}/starred"], - listReposWatchedByUser: ["GET /users/{username}/subscriptions"], - listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], - listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], - listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], - markNotificationsAsRead: ["PUT /notifications"], - markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], - markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], - setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: [ - "PUT /notifications/threads/{thread_id}/subscription", - ], - starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], - unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"], - }, - apps: { - addRepoToInstallation: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}", - ], - checkToken: ["POST /applications/{client_id}/token"], - createContentAttachment: [ - "POST /content_references/{content_reference_id}/attachments", - { mediaType: { previews: ["corsair"] } }, - ], - createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: [ - "POST /app/installations/{installation_id}/access_tokens", - ], - deleteAuthorization: ["DELETE /applications/{client_id}/grant"], - deleteInstallation: ["DELETE /app/installations/{installation_id}"], - deleteToken: ["DELETE /applications/{client_id}/token"], - getAuthenticated: ["GET /app"], - getBySlug: ["GET /apps/{app_slug}"], - getInstallation: ["GET /app/installations/{installation_id}"], - getOrgInstallation: ["GET /orgs/{org}/installation"], - getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: [ - "GET /marketplace_listing/accounts/{account_id}", - ], - getSubscriptionPlanForAccountStubbed: [ - "GET /marketplace_listing/stubbed/accounts/{account_id}", - ], - getUserInstallation: ["GET /users/{username}/installation"], - getWebhookConfigForApp: ["GET /app/hook/config"], - listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: [ - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", - ], - listInstallationReposForAuthenticatedUser: [ - "GET /user/installations/{installation_id}/repositories", - ], - listInstallations: ["GET /app/installations"], - listInstallationsForAuthenticatedUser: ["GET /user/installations"], - listPlans: ["GET /marketplace_listing/plans"], - listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], - listReposAccessibleToInstallation: ["GET /installation/repositories"], - listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: [ - "GET /user/marketplace_purchases/stubbed", - ], - removeRepoFromInstallation: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}", - ], - resetToken: ["PATCH /applications/{client_id}/token"], - revokeInstallationAccessToken: ["DELETE /installation/token"], - suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: [ - "DELETE /app/installations/{installation_id}/suspended", - ], - updateWebhookConfigForApp: ["PATCH /app/hook/config"], - }, - billing: { - getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: [ - "GET /users/{username}/settings/billing/actions", - ], - getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: [ - "GET /users/{username}/settings/billing/packages", - ], - getSharedStorageBillingOrg: [ - "GET /orgs/{org}/settings/billing/shared-storage", - ], - getSharedStorageBillingUser: [ - "GET /users/{username}/settings/billing/shared-storage", - ], - }, - checks: { - create: ["POST /repos/{owner}/{repo}/check-runs"], - createSuite: ["POST /repos/{owner}/{repo}/check-suites"], - get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], - getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: [ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", - ], - listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: [ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", - ], - listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestSuite: [ - "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest", - ], - setSuitesPreferences: [ - "PATCH /repos/{owner}/{repo}/check-suites/preferences", - ], - update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"], - }, - codeScanning: { - getAlert: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", - {}, - { renamedParameters: { alert_id: "alert_number" } }, - ], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", - ], - uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"], - }, - codesOfConduct: { - getAllCodesOfConduct: [ - "GET /codes_of_conduct", - { mediaType: { previews: ["scarlet-witch"] } }, - ], - getConductCode: [ - "GET /codes_of_conduct/{key}", - { mediaType: { previews: ["scarlet-witch"] } }, - ], - getForRepo: [ - "GET /repos/{owner}/{repo}/community/code_of_conduct", - { mediaType: { previews: ["scarlet-witch"] } }, - ], - }, - emojis: { get: ["GET /emojis"] }, - enterpriseAdmin: { - disableSelectedOrganizationGithubActionsEnterprise: [ - "DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}", - ], - enableSelectedOrganizationGithubActionsEnterprise: [ - "PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}", - ], - getAllowedActionsEnterprise: [ - "GET /enterprises/{enterprise}/actions/permissions/selected-actions", - ], - getGithubActionsPermissionsEnterprise: [ - "GET /enterprises/{enterprise}/actions/permissions", - ], - listSelectedOrganizationsEnabledGithubActionsEnterprise: [ - "GET /enterprises/{enterprise}/actions/permissions/organizations", - ], - setAllowedActionsEnterprise: [ - "PUT /enterprises/{enterprise}/actions/permissions/selected-actions", - ], - setGithubActionsPermissionsEnterprise: [ - "PUT /enterprises/{enterprise}/actions/permissions", - ], - setSelectedOrganizationsEnabledGithubActionsEnterprise: [ - "PUT /enterprises/{enterprise}/actions/permissions/organizations", - ], - }, - gists: { - checkIsStarred: ["GET /gists/{gist_id}/star"], - create: ["POST /gists"], - createComment: ["POST /gists/{gist_id}/comments"], - delete: ["DELETE /gists/{gist_id}"], - deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], - fork: ["POST /gists/{gist_id}/forks"], - get: ["GET /gists/{gist_id}"], - getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], - getRevision: ["GET /gists/{gist_id}/{sha}"], - list: ["GET /gists"], - listComments: ["GET /gists/{gist_id}/comments"], - listCommits: ["GET /gists/{gist_id}/commits"], - listForUser: ["GET /users/{username}/gists"], - listForks: ["GET /gists/{gist_id}/forks"], - listPublic: ["GET /gists/public"], - listStarred: ["GET /gists/starred"], - star: ["PUT /gists/{gist_id}/star"], - unstar: ["DELETE /gists/{gist_id}/star"], - update: ["PATCH /gists/{gist_id}"], - updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"], - }, - git: { - createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], - createCommit: ["POST /repos/{owner}/{repo}/git/commits"], - createRef: ["POST /repos/{owner}/{repo}/git/refs"], - createTag: ["POST /repos/{owner}/{repo}/git/tags"], - createTree: ["POST /repos/{owner}/{repo}/git/trees"], - deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], - getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], - getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], - getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], - getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], - getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], - listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], - updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"], - }, - gitignore: { - getAllTemplates: ["GET /gitignore/templates"], - getTemplate: ["GET /gitignore/templates/{name}"], - }, - interactions: { - getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], - getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits"], - removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: [ - "DELETE /repos/{owner}/{repo}/interaction-limits", - ], - removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits"], - setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], - setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits"], - }, - issues: { - addAssignees: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees", - ], - addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], - checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], - create: ["POST /repos/{owner}/{repo}/issues"], - createComment: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/comments", - ], - createLabel: ["POST /repos/{owner}/{repo}/labels"], - createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}", - ], - deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: [ - "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}", - ], - get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], - getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], - getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], - getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], - getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], - list: ["GET /issues"], - listAssignees: ["GET /repos/{owner}/{repo}/assignees"], - listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], - listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], - listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], - listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", - { mediaType: { previews: ["mockingbird"] } }, - ], - listForAuthenticatedUser: ["GET /user/issues"], - listForOrg: ["GET /orgs/{org}/issues"], - listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: [ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", - ], - listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", - ], - listMilestones: ["GET /repos/{owner}/{repo}/milestones"], - lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels", - ], - removeAssignees: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees", - ], - removeLabel: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}", - ], - setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], - unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], - update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], - updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], - updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: [ - "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}", - ], - }, - licenses: { - get: ["GET /licenses/{license}"], - getAllCommonlyUsed: ["GET /licenses"], - getForRepo: ["GET /repos/{owner}/{repo}/license"], - }, - markdown: { - render: ["POST /markdown"], - renderRaw: [ - "POST /markdown/raw", - { headers: { "content-type": "text/plain; charset=utf-8" } }, - ], - }, - meta: { - get: ["GET /meta"], - getOctocat: ["GET /octocat"], - getZen: ["GET /zen"], - root: ["GET /"], - }, - migrations: { - cancelImport: ["DELETE /repos/{owner}/{repo}/import"], - deleteArchiveForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/archive", - { mediaType: { previews: ["wyandotte"] } }, - ], - deleteArchiveForOrg: [ - "DELETE /orgs/{org}/migrations/{migration_id}/archive", - { mediaType: { previews: ["wyandotte"] } }, - ], - downloadArchiveForOrg: [ - "GET /orgs/{org}/migrations/{migration_id}/archive", - { mediaType: { previews: ["wyandotte"] } }, - ], - getArchiveForAuthenticatedUser: [ - "GET /user/migrations/{migration_id}/archive", - { mediaType: { previews: ["wyandotte"] } }, - ], - getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], - getImportStatus: ["GET /repos/{owner}/{repo}/import"], - getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], - getStatusForAuthenticatedUser: [ - "GET /user/migrations/{migration_id}", - { mediaType: { previews: ["wyandotte"] } }, - ], - getStatusForOrg: [ - "GET /orgs/{org}/migrations/{migration_id}", - { mediaType: { previews: ["wyandotte"] } }, - ], - listForAuthenticatedUser: [ - "GET /user/migrations", - { mediaType: { previews: ["wyandotte"] } }, - ], - listForOrg: [ - "GET /orgs/{org}/migrations", - { mediaType: { previews: ["wyandotte"] } }, - ], - listReposForOrg: [ - "GET /orgs/{org}/migrations/{migration_id}/repositories", - { mediaType: { previews: ["wyandotte"] } }, - ], - listReposForUser: [ - "GET /user/migrations/{migration_id}/repositories", - { mediaType: { previews: ["wyandotte"] } }, - ], - mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], - setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], - startForAuthenticatedUser: ["POST /user/migrations"], - startForOrg: ["POST /orgs/{org}/migrations"], - startImport: ["PUT /repos/{owner}/{repo}/import"], - unlockRepoForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock", - { mediaType: { previews: ["wyandotte"] } }, - ], - unlockRepoForOrg: [ - "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock", - { mediaType: { previews: ["wyandotte"] } }, - ], - updateImport: ["PATCH /repos/{owner}/{repo}/import"], - }, - orgs: { - blockUser: ["PUT /orgs/{org}/blocks/{username}"], - checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], - checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], - checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: [ - "PUT /orgs/{org}/outside_collaborators/{username}", - ], - createInvitation: ["POST /orgs/{org}/invitations"], - createWebhook: ["POST /orgs/{org}/hooks"], - deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], - get: ["GET /orgs/{org}"], - getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], - getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], - getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], - getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - list: ["GET /organizations"], - listAppInstallations: ["GET /orgs/{org}/installations"], - listBlockedUsers: ["GET /orgs/{org}/blocks"], - listForAuthenticatedUser: ["GET /user/orgs"], - listForUser: ["GET /users/{username}/orgs"], - listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], - listMembers: ["GET /orgs/{org}/members"], - listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], - listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], - listPendingInvitations: ["GET /orgs/{org}/invitations"], - listPublicMembers: ["GET /orgs/{org}/public_members"], - listWebhooks: ["GET /orgs/{org}/hooks"], - pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - removeMember: ["DELETE /orgs/{org}/members/{username}"], - removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: [ - "DELETE /orgs/{org}/outside_collaborators/{username}", - ], - removePublicMembershipForAuthenticatedUser: [ - "DELETE /orgs/{org}/public_members/{username}", - ], - setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: [ - "PUT /orgs/{org}/public_members/{username}", - ], - unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], - update: ["PATCH /orgs/{org}"], - updateMembershipForAuthenticatedUser: [ - "PATCH /user/memberships/orgs/{org}", - ], - updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], - updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"], - }, - projects: { - addCollaborator: [ - "PUT /projects/{project_id}/collaborators/{username}", - { mediaType: { previews: ["inertia"] } }, - ], - createCard: [ - "POST /projects/columns/{column_id}/cards", - { mediaType: { previews: ["inertia"] } }, - ], - createColumn: [ - "POST /projects/{project_id}/columns", - { mediaType: { previews: ["inertia"] } }, - ], - createForAuthenticatedUser: [ - "POST /user/projects", - { mediaType: { previews: ["inertia"] } }, - ], - createForOrg: [ - "POST /orgs/{org}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - createForRepo: [ - "POST /repos/{owner}/{repo}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - delete: [ - "DELETE /projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - deleteCard: [ - "DELETE /projects/columns/cards/{card_id}", - { mediaType: { previews: ["inertia"] } }, - ], - deleteColumn: [ - "DELETE /projects/columns/{column_id}", - { mediaType: { previews: ["inertia"] } }, - ], - get: [ - "GET /projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - getCard: [ - "GET /projects/columns/cards/{card_id}", - { mediaType: { previews: ["inertia"] } }, - ], - getColumn: [ - "GET /projects/columns/{column_id}", - { mediaType: { previews: ["inertia"] } }, - ], - getPermissionForUser: [ - "GET /projects/{project_id}/collaborators/{username}/permission", - { mediaType: { previews: ["inertia"] } }, - ], - listCards: [ - "GET /projects/columns/{column_id}/cards", - { mediaType: { previews: ["inertia"] } }, - ], - listCollaborators: [ - "GET /projects/{project_id}/collaborators", - { mediaType: { previews: ["inertia"] } }, - ], - listColumns: [ - "GET /projects/{project_id}/columns", - { mediaType: { previews: ["inertia"] } }, - ], - listForOrg: [ - "GET /orgs/{org}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - listForRepo: [ - "GET /repos/{owner}/{repo}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - listForUser: [ - "GET /users/{username}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - moveCard: [ - "POST /projects/columns/cards/{card_id}/moves", - { mediaType: { previews: ["inertia"] } }, - ], - moveColumn: [ - "POST /projects/columns/{column_id}/moves", - { mediaType: { previews: ["inertia"] } }, - ], - removeCollaborator: [ - "DELETE /projects/{project_id}/collaborators/{username}", - { mediaType: { previews: ["inertia"] } }, - ], - update: [ - "PATCH /projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - updateCard: [ - "PATCH /projects/columns/cards/{card_id}", - { mediaType: { previews: ["inertia"] } }, - ], - updateColumn: [ - "PATCH /projects/columns/{column_id}", - { mediaType: { previews: ["inertia"] } }, - ], - }, - pulls: { - checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies", - ], - createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments", - ], - deletePendingReview: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", - ], - deleteReviewComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}", - ], - dismissReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals", - ], - get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", - ], - getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", - ], - listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], - listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - listReviewComments: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", - ], - listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], - listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - requestReviewers: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - submitReview: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events", - ], - update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch", - { mediaType: { previews: ["lydian"] } }, - ], - updateReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", - ], - updateReviewComment: [ - "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}", - ], - }, - rateLimit: { get: ["GET /rate_limit"] }, - reactions: { - createForCommitComment: [ - "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForIssue: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForIssueComment: [ - "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForPullRequestReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForTeamDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - createForTeamDiscussionInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForCommitComment: [ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForIssue: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForIssueComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForPullRequestComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForTeamDiscussion: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteForTeamDiscussionComment: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - deleteLegacy: [ - "DELETE /reactions/{reaction_id}", - { mediaType: { previews: ["squirrel-girl"] } }, - { - deprecated: "octokit.reactions.deleteLegacy() is deprecated, see https://docs.github.com/v3/reactions/#delete-a-reaction-legacy", - }, - ], - listForCommitComment: [ - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForIssueComment: [ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForPullRequestReviewComment: [ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForTeamDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - listForTeamDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - { mediaType: { previews: ["squirrel-girl"] } }, - ], - }, - repos: { - acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}"], - addAppAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - addTeamAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - addUserAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkVulnerabilityAlerts: [ - "GET /repos/{owner}/{repo}/vulnerability-alerts", - { mediaType: { previews: ["dorian"] } }, - ], - compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - createCommitComment: [ - "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments", - ], - createCommitSignatureProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - { mediaType: { previews: ["zzzax"] } }, - ], - createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], - createDeployKey: ["POST /repos/{owner}/{repo}/keys"], - createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentStatus: [ - "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - ], - createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], - createForAuthenticatedUser: ["POST /user/repos"], - createFork: ["POST /repos/{owner}/{repo}/forks"], - createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], - createPagesSite: [ - "POST /repos/{owner}/{repo}/pages", - { mediaType: { previews: ["switcheroo"] } }, - ], - createRelease: ["POST /repos/{owner}/{repo}/releases"], - createUsingTemplate: [ - "POST /repos/{template_owner}/{template_repo}/generate", - { mediaType: { previews: ["baptiste"] } }, - ], - createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}"], - delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions", - ], - deleteAdminBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - deleteBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection", - ], - deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - { mediaType: { previews: ["zzzax"] } }, - ], - deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: [ - "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}", - ], - deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: [ - "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}", - ], - deletePagesSite: [ - "DELETE /repos/{owner}/{repo}/pages", - { mediaType: { previews: ["switcheroo"] } }, - ], - deletePullRequestReviewProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: [ - "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}", - ], - deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: [ - "DELETE /repos/{owner}/{repo}/automated-security-fixes", - { mediaType: { previews: ["london"] } }, - ], - disableVulnerabilityAlerts: [ - "DELETE /repos/{owner}/{repo}/vulnerability-alerts", - { mediaType: { previews: ["dorian"] } }, - ], - downloadArchive: [ - "GET /repos/{owner}/{repo}/zipball/{ref}", - {}, - { renamed: ["repos", "downloadZipballArchive"] }, - ], - downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], - downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: [ - "PUT /repos/{owner}/{repo}/automated-security-fixes", - { mediaType: { previews: ["london"] } }, - ], - enableVulnerabilityAlerts: [ - "PUT /repos/{owner}/{repo}/vulnerability-alerts", - { mediaType: { previews: ["dorian"] } }, - ], - get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions", - ], - getAdminBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - getAllStatusCheckContexts: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - ], - getAllTopics: [ - "GET /repos/{owner}/{repo}/topics", - { mediaType: { previews: ["mercy"] } }, - ], - getAppsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - ], - getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection", - ], - getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], - getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: [ - "GET /repos/{owner}/{repo}/collaborators/{username}/permission", - ], - getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], - getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], - getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], - getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - { mediaType: { previews: ["zzzax"] } }, - ], - getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], - getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], - getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], - getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], - getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentStatus: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}", - ], - getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], - getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], - getPages: ["GET /repos/{owner}/{repo}/pages"], - getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], - getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], - getReadme: ["GET /repos/{owner}/{repo}/readme"], - getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], - getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], - getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getStatusChecksProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - getTeamsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - ], - getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], - getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - ], - getViews: ["GET /repos/{owner}/{repo}/traffic/views"], - getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/config", - ], - listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", - { mediaType: { previews: ["groot"] } }, - ], - listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", - ], - listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: [ - "GET /repos/{owner}/{repo}/commits/{ref}/statuses", - ], - listCommits: ["GET /repos/{owner}/{repo}/commits"], - listContributors: ["GET /repos/{owner}/{repo}/contributors"], - listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentStatuses: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - ], - listDeployments: ["GET /repos/{owner}/{repo}/deployments"], - listForAuthenticatedUser: ["GET /user/repos"], - listForOrg: ["GET /orgs/{org}/repos"], - listForUser: ["GET /users/{username}/repos"], - listForks: ["GET /repos/{owner}/{repo}/forks"], - listInvitations: ["GET /repos/{owner}/{repo}/invitations"], - listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], - listLanguages: ["GET /repos/{owner}/{repo}/languages"], - listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], - listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", - { mediaType: { previews: ["groot"] } }, - ], - listReleaseAssets: [ - "GET /repos/{owner}/{repo}/releases/{release_id}/assets", - ], - listReleases: ["GET /repos/{owner}/{repo}/releases"], - listTags: ["GET /repos/{owner}/{repo}/tags"], - listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], - merge: ["POST /repos/{owner}/{repo}/merges"], - pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - removeAppAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - removeCollaborator: [ - "DELETE /repos/{owner}/{repo}/collaborators/{username}", - ], - removeStatusCheckContexts: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - removeStatusCheckProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - removeTeamAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - removeUserAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - replaceAllTopics: [ - "PUT /repos/{owner}/{repo}/topics", - { mediaType: { previews: ["mercy"] } }, - ], - requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - setAppAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - setStatusCheckContexts: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - setTeamAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - setUserAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], - transfer: ["POST /repos/{owner}/{repo}/transfer"], - update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection", - ], - updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], - updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: [ - "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}", - ], - updatePullRequestReviewProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: [ - "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}", - ], - updateStatusCheckPotection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - {}, - { renamed: ["repos", "updateStatusCheckProtection"] }, - ], - updateStatusCheckProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: [ - "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config", - ], - uploadReleaseAsset: [ - "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", - { baseUrl: "https://uploads.github.com" }, - ], - }, - search: { - code: ["GET /search/code"], - commits: ["GET /search/commits", { mediaType: { previews: ["cloak"] } }], - issuesAndPullRequests: ["GET /search/issues"], - labels: ["GET /search/labels"], - repos: ["GET /search/repositories"], - topics: ["GET /search/topics", { mediaType: { previews: ["mercy"] } }], - users: ["GET /search/users"], - }, - secretScanning: { - getAlert: [ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", - ], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", - ], - }, - teams: { - addOrUpdateMembershipForUserInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - addOrUpdateProjectPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - addOrUpdateRepoPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", - ], - checkPermissionsForProjectInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}", - { mediaType: { previews: ["inertia"] } }, - ], - checkPermissionsForRepoInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", - ], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - ], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - deleteDiscussionInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - getDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - getMembershipForUserInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - ], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/invitations", - ], - listProjectsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/projects", - { mediaType: { previews: ["inertia"] } }, - ], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - removeProjectInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}", - ], - removeRepoInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", - ], - updateDiscussionCommentInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - updateDiscussionInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"], - }, - users: { - addEmailForAuthenticated: ["POST /user/emails"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: ["POST /user/keys"], - deleteEmailForAuthenticated: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}"], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}"], - list: ["GET /users"], - listBlockedByAuthenticated: ["GET /user/blocks"], - listEmailsForAuthenticated: ["GET /user/emails"], - listFollowedByAuthenticated: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: ["GET /user/keys"], - setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility"], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"], - }, -}; - -const VERSION = "4.4.1"; - -function endpointsToMethods(octokit, endpointsMap) { - const newMethods = {}; - for (const [scope, endpoints] of Object.entries(endpointsMap)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign({ method, url }, defaults); - if (!newMethods[scope]) { - newMethods[scope] = {}; - } - const scopeMethods = newMethods[scope]; - if (decorations) { - scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations); - continue; - } - scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); - } - } - return newMethods; -} -function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - /* istanbul ignore next */ - function withDecorations(...args) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - let options = requestWithDefaults.endpoint.merge(...args); - // There are currently no other decorations than `.mapToData` - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: undefined, - }); - return requestWithDefaults(options); - } - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); - } - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } - if (decorations.renamedParameters) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - const options = requestWithDefaults.endpoint.merge(...args); - for (const [name, alias] of Object.entries(decorations.renamedParameters)) { - if (name in options) { - octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); - if (!(alias in options)) { - options[alias] = options[name]; - } - delete options[name]; - } - } - return requestWithDefaults(options); - } - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - return requestWithDefaults(...args); - } - return Object.assign(withDecorations, requestWithDefaults); -} - -/** - * This plugin is a 1:1 copy of internal @octokit/rest plugins. The primary - * goal is to rebuild @octokit/rest on top of @octokit/core. Once that is - * done, we will remove the registerEndpoints methods and return the methods - * directly as with the other plugins. At that point we will also remove the - * legacy workarounds and deprecations. - * - * See the plan at - * https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/1 - */ -function restEndpointMethods(octokit) { - return endpointsToMethods(octokit, Endpoints); -} -restEndpointMethods.VERSION = VERSION; - -export { restEndpointMethods }; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map deleted file mode 100644 index a9868d86a..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/generated/endpoints.js","../dist-src/version.js","../dist-src/endpoints-to-methods.js","../dist-src/index.js"],"sourcesContent":["const Endpoints = {\n actions: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\",\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\",\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\",\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\",\n ],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\",\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\",\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\",\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\",\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\",\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\",\n ],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\",\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\",\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] },\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\",\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\",\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\",\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\",\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\",\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\",\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\",\n ],\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\",\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\",\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\",\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\",\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\",\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\",\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"],\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createContentAttachment: [\n \"POST /content_references/{content_reference_id}/attachments\",\n { mediaType: { previews: [\"corsair\"] } },\n ],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\",\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\",\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\",\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\",\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\",\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\",\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"],\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\",\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\",\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\",\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\",\n ],\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\",\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n },\n codeScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } },\n ],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"],\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\n \"GET /codes_of_conduct\",\n { mediaType: { previews: [\"scarlet-witch\"] } },\n ],\n getConductCode: [\n \"GET /codes_of_conduct/{key}\",\n { mediaType: { previews: [\"scarlet-witch\"] } },\n ],\n getForRepo: [\n \"GET /repos/{owner}/{repo}/community/code_of_conduct\",\n { mediaType: { previews: [\"scarlet-witch\"] } },\n ],\n },\n emojis: { get: [\"GET /emojis\"] },\n enterpriseAdmin: {\n disableSelectedOrganizationGithubActionsEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n enableSelectedOrganizationGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n getAllowedActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n getGithubActionsPermissionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions\",\n ],\n listSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n setAllowedActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n setGithubActionsPermissionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions\",\n ],\n setSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"],\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"],\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"],\n },\n interactions: {\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\"GET /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\",\n ],\n removeRestrictionsForYourPublicRepos: [\"DELETE /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\"PUT /user/interaction-limits\"],\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\",\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n { mediaType: { previews: [\"mockingbird\"] } },\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\",\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"],\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } },\n ],\n },\n meta: {\n get: [\"GET /meta\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"],\n },\n migrations: {\n cancelImport: [\"DELETE /repos/{owner}/{repo}/import\"],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n getCommitAuthors: [\"GET /repos/{owner}/{repo}/import/authors\"],\n getImportStatus: [\"GET /repos/{owner}/{repo}/import\"],\n getLargeFiles: [\"GET /repos/{owner}/{repo}/import/large_files\"],\n getStatusForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n getStatusForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n listForAuthenticatedUser: [\n \"GET /user/migrations\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n listForOrg: [\n \"GET /orgs/{org}/migrations\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n listReposForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n mapCommitAuthor: [\"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\"],\n setLfsPreference: [\"PATCH /repos/{owner}/{repo}/import/lfs\"],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\"PUT /repos/{owner}/{repo}/import\"],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\",\n { mediaType: { previews: [\"wyandotte\"] } },\n ],\n updateImport: [\"PATCH /repos/{owner}/{repo}/import\"],\n },\n orgs: {\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\",\n ],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n get: [\"GET /orgs/{org}\"],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\",\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\",\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\",\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\",\n ],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"],\n },\n projects: {\n addCollaborator: [\n \"PUT /projects/{project_id}/collaborators/{username}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createCard: [\n \"POST /projects/columns/{column_id}/cards\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createColumn: [\n \"POST /projects/{project_id}/columns\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createForAuthenticatedUser: [\n \"POST /user/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createForOrg: [\n \"POST /orgs/{org}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n createForRepo: [\n \"POST /repos/{owner}/{repo}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n delete: [\n \"DELETE /projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n deleteCard: [\n \"DELETE /projects/columns/cards/{card_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n deleteColumn: [\n \"DELETE /projects/columns/{column_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n get: [\n \"GET /projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n getCard: [\n \"GET /projects/columns/cards/{card_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n getColumn: [\n \"GET /projects/columns/{column_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listCards: [\n \"GET /projects/columns/{column_id}/cards\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listCollaborators: [\n \"GET /projects/{project_id}/collaborators\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listColumns: [\n \"GET /projects/{project_id}/columns\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listForOrg: [\n \"GET /orgs/{org}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listForRepo: [\n \"GET /repos/{owner}/{repo}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listForUser: [\n \"GET /users/{username}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n moveCard: [\n \"POST /projects/columns/cards/{card_id}/moves\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n moveColumn: [\n \"POST /projects/columns/{column_id}/moves\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n update: [\n \"PATCH /projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n updateCard: [\n \"PATCH /projects/columns/cards/{card_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n updateColumn: [\n \"PATCH /projects/columns/{column_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\",\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\",\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\",\n { mediaType: { previews: [\"lydian\"] } },\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n deleteLegacy: [\n \"DELETE /reactions/{reaction_id}\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n {\n deprecated: \"octokit.reactions.deleteLegacy() is deprecated, see https://docs.github.com/v3/reactions/#delete-a-reaction-legacy\",\n },\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n { mediaType: { previews: [\"squirrel-girl\"] } },\n ],\n },\n repos: {\n acceptInvitation: [\"PATCH /user/repository_invitations/{invitation_id}\"],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\",\n { mediaType: { previews: [\"dorian\"] } },\n ],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n { mediaType: { previews: [\"zzzax\"] } },\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createPagesSite: [\n \"POST /repos/{owner}/{repo}/pages\",\n { mediaType: { previews: [\"switcheroo\"] } },\n ],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\",\n { mediaType: { previews: [\"baptiste\"] } },\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\"DELETE /user/repository_invitations/{invitation_id}\"],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n { mediaType: { previews: [\"zzzax\"] } },\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\",\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n deletePagesSite: [\n \"DELETE /repos/{owner}/{repo}/pages\",\n { mediaType: { previews: [\"switcheroo\"] } },\n ],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\",\n { mediaType: { previews: [\"london\"] } },\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\",\n { mediaType: { previews: [\"dorian\"] } },\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] },\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\",\n { mediaType: { previews: [\"london\"] } },\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\",\n { mediaType: { previews: [\"dorian\"] } },\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n ],\n getAllTopics: [\n \"GET /repos/{owner}/{repo}/topics\",\n { mediaType: { previews: [\"mercy\"] } },\n ],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n ],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\",\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n { mediaType: { previews: [\"zzzax\"] } },\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\",\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\",\n { mediaType: { previews: [\"groot\"] } },\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n { mediaType: { previews: [\"groot\"] } },\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\",\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n replaceAllTopics: [\n \"PUT /repos/{owner}/{repo}/topics\",\n { mediaType: { previews: [\"mercy\"] } },\n ],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] },\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" },\n ],\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\", { mediaType: { previews: [\"cloak\"] } }],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\", { mediaType: { previews: [\"mercy\"] } }],\n users: [\"GET /search/users\"],\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n ],\n listProjectsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n { mediaType: { previews: [\"inertia\"] } },\n ],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"],\n },\n users: {\n addEmailForAuthenticated: [\"POST /user/emails\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\"POST /user/keys\"],\n deleteEmailForAuthenticated: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\"DELETE /user/keys/{key_id}\"],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\"GET /user/keys/{key_id}\"],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\"GET /user/keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\"PATCH /user/email/visibility\"],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"],\n },\n};\nexport default Endpoints;\n","export const VERSION = \"4.4.1\";\n","export function endpointsToMethods(octokit, endpointsMap) {\n const newMethods = {};\n for (const [scope, endpoints] of Object.entries(endpointsMap)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign({ method, url }, defaults);\n if (!newMethods[scope]) {\n newMethods[scope] = {};\n }\n const scopeMethods = newMethods[scope];\n if (decorations) {\n scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);\n continue;\n }\n scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);\n }\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n /* istanbul ignore next */\n function withDecorations(...args) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args);\n // There are currently no other decorations than `.mapToData`\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined,\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(decorations.renamedParameters)) {\n if (name in options) {\n octokit.log.warn(`\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`);\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n delete options[name];\n }\n }\n return requestWithDefaults(options);\n }\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n","import ENDPOINTS from \"./generated/endpoints\";\nimport { VERSION } from \"./version\";\nimport { endpointsToMethods } from \"./endpoints-to-methods\";\n/**\n * This plugin is a 1:1 copy of internal @octokit/rest plugins. The primary\n * goal is to rebuild @octokit/rest on top of @octokit/core. Once that is\n * done, we will remove the registerEndpoints methods and return the methods\n * directly as with the other plugins. At that point we will also remove the\n * legacy workarounds and deprecations.\n *\n * See the plan at\n * https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/1\n */\nexport function restEndpointMethods(octokit) {\n return endpointsToMethods(octokit, ENDPOINTS);\n}\nrestEndpointMethods.VERSION = VERSION;\n"],"names":["ENDPOINTS"],"mappings":"AAAA,MAAM,SAAS,GAAG;AAClB,IAAI,OAAO,EAAE;AACb,QAAQ,0BAA0B,EAAE;AACpC,YAAY,4EAA4E;AACxF,SAAS;AACT,QAAQ,iBAAiB,EAAE;AAC3B,YAAY,yDAAyD;AACrE,SAAS;AACT,QAAQ,uBAAuB,EAAE,CAAC,+CAA+C,CAAC;AAClF,QAAQ,wBAAwB,EAAE;AAClC,YAAY,yDAAyD;AACrE,SAAS;AACT,QAAQ,6BAA6B,EAAE;AACvC,YAAY,qDAAqD;AACjE,SAAS;AACT,QAAQ,8BAA8B,EAAE;AACxC,YAAY,+DAA+D;AAC3E,SAAS;AACT,QAAQ,uBAAuB,EAAE,CAAC,+CAA+C,CAAC;AAClF,QAAQ,wBAAwB,EAAE;AAClC,YAAY,yDAAyD;AACrE,SAAS;AACT,QAAQ,sBAAsB,EAAE;AAChC,YAAY,uEAAuE;AACnF,SAAS;AACT,QAAQ,cAAc,EAAE;AACxB,YAAY,8DAA8D;AAC1E,SAAS;AACT,QAAQ,eAAe,EAAE,CAAC,kDAAkD,CAAC;AAC7E,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,4DAA4D;AACxE,SAAS;AACT,QAAQ,6BAA6B,EAAE;AACvC,YAAY,gDAAgD;AAC5D,SAAS;AACT,QAAQ,8BAA8B,EAAE;AACxC,YAAY,0DAA0D;AACtE,SAAS;AACT,QAAQ,iBAAiB,EAAE,CAAC,oDAAoD,CAAC;AACjF,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,yDAAyD;AACrE,SAAS;AACT,QAAQ,kDAAkD,EAAE;AAC5D,YAAY,qEAAqE;AACjF,SAAS;AACT,QAAQ,eAAe,EAAE;AACzB,YAAY,mEAAmE;AAC/E,SAAS;AACT,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,4EAA4E;AACxF,SAAS;AACT,QAAQ,6BAA6B,EAAE;AACvC,YAAY,sDAAsD;AAClE,SAAS;AACT,QAAQ,uBAAuB,EAAE;AACjC,YAAY,sDAAsD;AAClE,SAAS;AACT,QAAQ,iDAAiD,EAAE;AAC3D,YAAY,kEAAkE;AAC9E,SAAS;AACT,QAAQ,cAAc,EAAE;AACxB,YAAY,kEAAkE;AAC9E,SAAS;AACT,QAAQ,6BAA6B,EAAE;AACvC,YAAY,sDAAsD;AAClE,SAAS;AACT,QAAQ,2BAA2B,EAAE;AACrC,YAAY,gEAAgE;AAC5E,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,2DAA2D,CAAC;AAClF,QAAQ,uCAAuC,EAAE;AACjD,YAAY,qCAAqC;AACjD,SAAS;AACT,QAAQ,qCAAqC,EAAE;AAC/C,YAAY,+CAA+C;AAC3D,SAAS;AACT,QAAQ,oBAAoB,EAAE,CAAC,iDAAiD,CAAC;AACjF,QAAQ,eAAe,EAAE,CAAC,4CAA4C,CAAC;AACvE,QAAQ,YAAY,EAAE,CAAC,+CAA+C,CAAC;AACvE,QAAQ,kBAAkB,EAAE;AAC5B,YAAY,+CAA+C;AAC3D,YAAY,EAAE;AACd,YAAY,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,uCAAuC,CAAC,EAAE;AAC7E,SAAS;AACT,QAAQ,gBAAgB,EAAE,CAAC,sDAAsD,CAAC;AAClF,QAAQ,aAAa,EAAE,CAAC,yDAAyD,CAAC;AAClF,QAAQ,yBAAyB,EAAE,CAAC,6CAA6C,CAAC;AAClF,QAAQ,0BAA0B,EAAE;AACpC,YAAY,uDAAuD;AACnE,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,2DAA2D,CAAC;AAClF,QAAQ,cAAc,EAAE,CAAC,iDAAiD,CAAC;AAC3E,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,kEAAkE;AAC9E,SAAS;AACT,QAAQ,oBAAoB,EAAE,CAAC,6CAA6C,CAAC;AAC7E,QAAQ,sBAAsB,EAAE;AAChC,YAAY,sDAAsD;AAClE,SAAS;AACT,QAAQ,cAAc,EAAE,CAAC,iCAAiC,CAAC;AAC3D,QAAQ,eAAe,EAAE,CAAC,2CAA2C,CAAC;AACtE,QAAQ,iBAAiB,EAAE,CAAC,6CAA6C,CAAC;AAC1E,QAAQ,4BAA4B,EAAE,CAAC,2CAA2C,CAAC;AACnF,QAAQ,6BAA6B,EAAE;AACvC,YAAY,qDAAqD;AACjE,SAAS;AACT,QAAQ,6BAA6B,EAAE;AACvC,YAAY,4DAA4D;AACxE,SAAS;AACT,QAAQ,wDAAwD,EAAE;AAClE,YAAY,kDAAkD;AAC9D,SAAS;AACT,QAAQ,2BAA2B,EAAE,CAAC,iCAAiC,CAAC;AACxE,QAAQ,4BAA4B,EAAE,CAAC,2CAA2C,CAAC;AACnF,QAAQ,wBAAwB,EAAE;AAClC,YAAY,2DAA2D;AACvE,SAAS;AACT,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,gEAAgE;AAC5E,SAAS;AACT,QAAQ,uBAAuB,EAAE,CAAC,wCAAwC,CAAC;AAC3E,QAAQ,aAAa,EAAE,CAAC,wDAAwD,CAAC;AACjF,QAAQ,+BAA+B,EAAE;AACzC,YAAY,+EAA+E;AAC3F,SAAS;AACT,QAAQ,6BAA6B,EAAE;AACvC,YAAY,sDAAsD;AAClE,SAAS;AACT,QAAQ,2BAA2B,EAAE;AACrC,YAAY,gEAAgE;AAC5E,SAAS;AACT,QAAQ,uCAAuC,EAAE;AACjD,YAAY,qCAAqC;AACjD,SAAS;AACT,QAAQ,qCAAqC,EAAE;AAC/C,YAAY,+CAA+C;AAC3D,SAAS;AACT,QAAQ,4BAA4B,EAAE;AACtC,YAAY,4DAA4D;AACxE,SAAS;AACT,QAAQ,uDAAuD,EAAE;AACjE,YAAY,kDAAkD;AAC9D,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,QAAQ,qCAAqC,EAAE,CAAC,kCAAkC,CAAC;AACnF,QAAQ,sBAAsB,EAAE,CAAC,2CAA2C,CAAC;AAC7E,QAAQ,wBAAwB,EAAE;AAClC,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,QAAQ,EAAE,CAAC,YAAY,CAAC;AAChC,QAAQ,mBAAmB,EAAE,CAAC,wCAAwC,CAAC;AACvE,QAAQ,SAAS,EAAE,CAAC,wCAAwC,CAAC;AAC7D,QAAQ,yCAAyC,EAAE;AACnD,YAAY,qDAAqD;AACjE,SAAS;AACT,QAAQ,8BAA8B,EAAE,CAAC,8BAA8B,CAAC;AACxE,QAAQ,qCAAqC,EAAE,CAAC,oBAAoB,CAAC;AACrE,QAAQ,iCAAiC,EAAE;AAC3C,YAAY,yCAAyC;AACrD,SAAS;AACT,QAAQ,gBAAgB,EAAE,CAAC,aAAa,CAAC;AACzC,QAAQ,8BAA8B,EAAE,CAAC,qCAAqC,CAAC;AAC/E,QAAQ,uBAAuB,EAAE,CAAC,qCAAqC,CAAC;AACxE,QAAQ,mBAAmB,EAAE,CAAC,wBAAwB,CAAC;AACvD,QAAQ,yBAAyB,EAAE,CAAC,uCAAuC,CAAC;AAC5E,QAAQ,+BAA+B,EAAE;AACzC,YAAY,8CAA8C;AAC1D,SAAS;AACT,QAAQ,cAAc,EAAE,CAAC,kCAAkC,CAAC;AAC5D,QAAQ,yCAAyC,EAAE;AACnD,YAAY,yCAAyC;AACrD,SAAS;AACT,QAAQ,mCAAmC,EAAE,CAAC,mBAAmB,CAAC;AAClE,QAAQ,sBAAsB,EAAE,CAAC,+BAA+B,CAAC;AACjE,QAAQ,sBAAsB,EAAE,CAAC,qCAAqC,CAAC;AACvE,QAAQ,qBAAqB,EAAE,CAAC,sCAAsC,CAAC;AACvE,QAAQ,oCAAoC,EAAE,CAAC,yBAAyB,CAAC;AACzE,QAAQ,mBAAmB,EAAE,CAAC,uCAAuC,CAAC;AACtE,QAAQ,uBAAuB,EAAE,CAAC,oBAAoB,CAAC;AACvD,QAAQ,2BAA2B,EAAE,CAAC,yCAAyC,CAAC;AAChF,QAAQ,gBAAgB,EAAE,CAAC,0CAA0C,CAAC;AACtE,QAAQ,mBAAmB,EAAE,CAAC,wCAAwC,CAAC;AACvE,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,qDAAqD;AACjE,SAAS;AACT,QAAQ,4BAA4B,EAAE,CAAC,kCAAkC,CAAC;AAC1E,QAAQ,8BAA8B,EAAE,CAAC,qCAAqC,CAAC;AAC/E,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,wEAAwE;AACpF,SAAS;AACT,QAAQ,UAAU,EAAE,CAAC,sCAAsC,CAAC;AAC5D,QAAQ,uBAAuB,EAAE;AACjC,YAAY,6DAA6D;AACzE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,kBAAkB,EAAE,CAAC,wCAAwC,CAAC;AACtE,QAAQ,6BAA6B,EAAE;AACvC,YAAY,yDAAyD;AACrE,SAAS;AACT,QAAQ,mBAAmB,EAAE,CAAC,wCAAwC,CAAC;AACvE,QAAQ,kBAAkB,EAAE,CAAC,6CAA6C,CAAC;AAC3E,QAAQ,WAAW,EAAE,CAAC,wCAAwC,CAAC;AAC/D,QAAQ,gBAAgB,EAAE,CAAC,UAAU,CAAC;AACtC,QAAQ,SAAS,EAAE,CAAC,sBAAsB,CAAC;AAC3C,QAAQ,eAAe,EAAE,CAAC,0CAA0C,CAAC;AACrE,QAAQ,kBAAkB,EAAE,CAAC,8BAA8B,CAAC;AAC5D,QAAQ,mBAAmB,EAAE,CAAC,wCAAwC,CAAC;AACvE,QAAQ,6BAA6B,EAAE;AACvC,YAAY,gDAAgD;AAC5D,SAAS;AACT,QAAQ,oCAAoC,EAAE;AAC9C,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,mBAAmB,EAAE,CAAC,oCAAoC,CAAC;AACnE,QAAQ,sBAAsB,EAAE,CAAC,sBAAsB,CAAC;AACxD,QAAQ,mBAAmB,EAAE,CAAC,mDAAmD,CAAC;AAClF,QAAQ,0BAA0B,EAAE;AACpC,YAAY,2DAA2D;AACvE,SAAS;AACT,QAAQ,yCAAyC,EAAE;AACnD,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,iBAAiB,EAAE,CAAC,wBAAwB,CAAC;AACrD,QAAQ,qCAAqC,EAAE,CAAC,yBAAyB,CAAC;AAC1E,QAAQ,SAAS,EAAE,CAAC,gCAAgC,CAAC;AACrD,QAAQ,gBAAgB,EAAE,CAAC,wCAAwC,CAAC;AACpE,QAAQ,iCAAiC,EAAE,CAAC,gCAAgC,CAAC;AAC7E,QAAQ,qCAAqC,EAAE,CAAC,iCAAiC,CAAC;AAClF,QAAQ,4CAA4C,EAAE;AACtD,YAAY,yCAAyC;AACrD,SAAS;AACT,QAAQ,0BAA0B,EAAE;AACpC,YAAY,2EAA2E;AACvF,SAAS;AACT,QAAQ,UAAU,EAAE,CAAC,uCAAuC,CAAC;AAC7D,QAAQ,6BAA6B,EAAE,CAAC,4BAA4B,CAAC;AACrE,QAAQ,mBAAmB,EAAE,CAAC,oDAAoD,CAAC;AACnF,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,uDAAuD;AACnE,SAAS;AACT,QAAQ,yBAAyB,EAAE,CAAC,wBAAwB,CAAC;AAC7D,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,0BAA0B,EAAE,CAAC,0CAA0C,CAAC;AAChF,QAAQ,2BAA2B,EAAE;AACrC,YAAY,gDAAgD;AAC5D,SAAS;AACT,QAAQ,2BAA2B,EAAE,CAAC,2CAA2C,CAAC;AAClF,QAAQ,4BAA4B,EAAE;AACtC,YAAY,iDAAiD;AAC7D,SAAS;AACT,QAAQ,0BAA0B,EAAE;AACpC,YAAY,iDAAiD;AAC7D,SAAS;AACT,QAAQ,2BAA2B,EAAE;AACrC,YAAY,uDAAuD;AACnE,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,MAAM,EAAE,CAAC,uCAAuC,CAAC;AACzD,QAAQ,WAAW,EAAE,CAAC,yCAAyC,CAAC;AAChE,QAAQ,GAAG,EAAE,CAAC,qDAAqD,CAAC;AACpE,QAAQ,QAAQ,EAAE,CAAC,yDAAyD,CAAC;AAC7E,QAAQ,eAAe,EAAE;AACzB,YAAY,iEAAiE;AAC7E,SAAS;AACT,QAAQ,UAAU,EAAE,CAAC,oDAAoD,CAAC;AAC1E,QAAQ,YAAY,EAAE;AACtB,YAAY,oEAAoE;AAChF,SAAS;AACT,QAAQ,gBAAgB,EAAE,CAAC,sDAAsD,CAAC;AAClF,QAAQ,cAAc,EAAE;AACxB,YAAY,oEAAoE;AAChF,SAAS;AACT,QAAQ,oBAAoB,EAAE;AAC9B,YAAY,sDAAsD;AAClE,SAAS;AACT,QAAQ,MAAM,EAAE,CAAC,uDAAuD,CAAC;AACzE,KAAK;AACL,IAAI,YAAY,EAAE;AAClB,QAAQ,QAAQ,EAAE;AAClB,YAAY,+DAA+D;AAC3E,YAAY,EAAE;AACd,YAAY,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE;AAC/D,SAAS;AACT,QAAQ,iBAAiB,EAAE,CAAC,gDAAgD,CAAC;AAC7E,QAAQ,kBAAkB,EAAE,CAAC,kDAAkD,CAAC;AAChF,QAAQ,WAAW,EAAE;AACrB,YAAY,iEAAiE;AAC7E,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,iDAAiD,CAAC;AACxE,KAAK;AACL,IAAI,cAAc,EAAE;AACpB,QAAQ,oBAAoB,EAAE;AAC9B,YAAY,uBAAuB;AACnC,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,cAAc,EAAE;AACxB,YAAY,6BAA6B;AACzC,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,UAAU,EAAE;AACpB,YAAY,qDAAqD;AACjE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE;AACpC,IAAI,eAAe,EAAE;AACrB,QAAQ,kDAAkD,EAAE;AAC5D,YAAY,6EAA6E;AACzF,SAAS;AACT,QAAQ,iDAAiD,EAAE;AAC3D,YAAY,0EAA0E;AACtF,SAAS;AACT,QAAQ,2BAA2B,EAAE;AACrC,YAAY,oEAAoE;AAChF,SAAS;AACT,QAAQ,qCAAqC,EAAE;AAC/C,YAAY,mDAAmD;AAC/D,SAAS;AACT,QAAQ,uDAAuD,EAAE;AACjE,YAAY,iEAAiE;AAC7E,SAAS;AACT,QAAQ,2BAA2B,EAAE;AACrC,YAAY,oEAAoE;AAChF,SAAS;AACT,QAAQ,qCAAqC,EAAE;AAC/C,YAAY,mDAAmD;AAC/D,SAAS;AACT,QAAQ,sDAAsD,EAAE;AAChE,YAAY,iEAAiE;AAC7E,SAAS;AACT,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,cAAc,EAAE,CAAC,2BAA2B,CAAC;AACrD,QAAQ,MAAM,EAAE,CAAC,aAAa,CAAC;AAC/B,QAAQ,aAAa,EAAE,CAAC,gCAAgC,CAAC;AACzD,QAAQ,MAAM,EAAE,CAAC,yBAAyB,CAAC;AAC3C,QAAQ,aAAa,EAAE,CAAC,+CAA+C,CAAC;AACxE,QAAQ,IAAI,EAAE,CAAC,6BAA6B,CAAC;AAC7C,QAAQ,GAAG,EAAE,CAAC,sBAAsB,CAAC;AACrC,QAAQ,UAAU,EAAE,CAAC,4CAA4C,CAAC;AAClE,QAAQ,WAAW,EAAE,CAAC,4BAA4B,CAAC;AACnD,QAAQ,IAAI,EAAE,CAAC,YAAY,CAAC;AAC5B,QAAQ,YAAY,EAAE,CAAC,+BAA+B,CAAC;AACvD,QAAQ,WAAW,EAAE,CAAC,8BAA8B,CAAC;AACrD,QAAQ,WAAW,EAAE,CAAC,6BAA6B,CAAC;AACpD,QAAQ,SAAS,EAAE,CAAC,4BAA4B,CAAC;AACjD,QAAQ,UAAU,EAAE,CAAC,mBAAmB,CAAC;AACzC,QAAQ,WAAW,EAAE,CAAC,oBAAoB,CAAC;AAC3C,QAAQ,IAAI,EAAE,CAAC,2BAA2B,CAAC;AAC3C,QAAQ,MAAM,EAAE,CAAC,8BAA8B,CAAC;AAChD,QAAQ,MAAM,EAAE,CAAC,wBAAwB,CAAC;AAC1C,QAAQ,aAAa,EAAE,CAAC,8CAA8C,CAAC;AACvE,KAAK;AACL,IAAI,GAAG,EAAE;AACT,QAAQ,UAAU,EAAE,CAAC,sCAAsC,CAAC;AAC5D,QAAQ,YAAY,EAAE,CAAC,wCAAwC,CAAC;AAChE,QAAQ,SAAS,EAAE,CAAC,qCAAqC,CAAC;AAC1D,QAAQ,SAAS,EAAE,CAAC,qCAAqC,CAAC;AAC1D,QAAQ,UAAU,EAAE,CAAC,sCAAsC,CAAC;AAC5D,QAAQ,SAAS,EAAE,CAAC,6CAA6C,CAAC;AAClE,QAAQ,OAAO,EAAE,CAAC,gDAAgD,CAAC;AACnE,QAAQ,SAAS,EAAE,CAAC,oDAAoD,CAAC;AACzE,QAAQ,MAAM,EAAE,CAAC,yCAAyC,CAAC;AAC3D,QAAQ,MAAM,EAAE,CAAC,8CAA8C,CAAC;AAChE,QAAQ,OAAO,EAAE,CAAC,gDAAgD,CAAC;AACnE,QAAQ,gBAAgB,EAAE,CAAC,mDAAmD,CAAC;AAC/E,QAAQ,SAAS,EAAE,CAAC,4CAA4C,CAAC;AACjE,KAAK;AACL,IAAI,SAAS,EAAE;AACf,QAAQ,eAAe,EAAE,CAAC,0BAA0B,CAAC;AACrD,QAAQ,WAAW,EAAE,CAAC,iCAAiC,CAAC;AACxD,KAAK;AACL,IAAI,YAAY,EAAE;AAClB,QAAQ,qBAAqB,EAAE,CAAC,oCAAoC,CAAC;AACrE,QAAQ,sBAAsB,EAAE,CAAC,8CAA8C,CAAC;AAChF,QAAQ,iCAAiC,EAAE,CAAC,8BAA8B,CAAC;AAC3E,QAAQ,wBAAwB,EAAE,CAAC,uCAAuC,CAAC;AAC3E,QAAQ,yBAAyB,EAAE;AACnC,YAAY,iDAAiD;AAC7D,SAAS;AACT,QAAQ,oCAAoC,EAAE,CAAC,iCAAiC,CAAC;AACjF,QAAQ,qBAAqB,EAAE,CAAC,oCAAoC,CAAC;AACrE,QAAQ,sBAAsB,EAAE,CAAC,8CAA8C,CAAC;AAChF,QAAQ,iCAAiC,EAAE,CAAC,8BAA8B,CAAC;AAC3E,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,YAAY,EAAE;AACtB,YAAY,4DAA4D;AACxE,SAAS;AACT,QAAQ,SAAS,EAAE,CAAC,yDAAyD,CAAC;AAC9E,QAAQ,sBAAsB,EAAE,CAAC,gDAAgD,CAAC;AAClF,QAAQ,MAAM,EAAE,CAAC,mCAAmC,CAAC;AACrD,QAAQ,aAAa,EAAE;AACvB,YAAY,2DAA2D;AACvE,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,mCAAmC,CAAC;AAC1D,QAAQ,eAAe,EAAE,CAAC,uCAAuC,CAAC;AAClE,QAAQ,aAAa,EAAE;AACvB,YAAY,2DAA2D;AACvE,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,4CAA4C,CAAC;AACnE,QAAQ,eAAe,EAAE;AACzB,YAAY,4DAA4D;AACxE,SAAS;AACT,QAAQ,GAAG,EAAE,CAAC,iDAAiD,CAAC;AAChE,QAAQ,UAAU,EAAE,CAAC,wDAAwD,CAAC;AAC9E,QAAQ,QAAQ,EAAE,CAAC,oDAAoD,CAAC;AACxE,QAAQ,QAAQ,EAAE,CAAC,yCAAyC,CAAC;AAC7D,QAAQ,YAAY,EAAE,CAAC,yDAAyD,CAAC;AACjF,QAAQ,IAAI,EAAE,CAAC,aAAa,CAAC;AAC7B,QAAQ,aAAa,EAAE,CAAC,qCAAqC,CAAC;AAC9D,QAAQ,YAAY,EAAE,CAAC,0DAA0D,CAAC;AAClF,QAAQ,mBAAmB,EAAE,CAAC,2CAA2C,CAAC;AAC1E,QAAQ,UAAU,EAAE,CAAC,wDAAwD,CAAC;AAC9E,QAAQ,iBAAiB,EAAE,CAAC,yCAAyC,CAAC;AACtE,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,0DAA0D;AACtE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE;AACxD,SAAS;AACT,QAAQ,wBAAwB,EAAE,CAAC,kBAAkB,CAAC;AACtD,QAAQ,UAAU,EAAE,CAAC,wBAAwB,CAAC;AAC9C,QAAQ,WAAW,EAAE,CAAC,kCAAkC,CAAC;AACzD,QAAQ,sBAAsB,EAAE;AAChC,YAAY,gEAAgE;AAC5E,SAAS;AACT,QAAQ,iBAAiB,EAAE,CAAC,kCAAkC,CAAC;AAC/D,QAAQ,iBAAiB,EAAE;AAC3B,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,cAAc,EAAE,CAAC,sCAAsC,CAAC;AAChE,QAAQ,IAAI,EAAE,CAAC,sDAAsD,CAAC;AACtE,QAAQ,eAAe,EAAE;AACzB,YAAY,2DAA2D;AACvE,SAAS;AACT,QAAQ,eAAe,EAAE;AACzB,YAAY,8DAA8D;AAC1E,SAAS;AACT,QAAQ,WAAW,EAAE;AACrB,YAAY,kEAAkE;AAC9E,SAAS;AACT,QAAQ,SAAS,EAAE,CAAC,wDAAwD,CAAC;AAC7E,QAAQ,MAAM,EAAE,CAAC,yDAAyD,CAAC;AAC3E,QAAQ,MAAM,EAAE,CAAC,mDAAmD,CAAC;AACrE,QAAQ,aAAa,EAAE,CAAC,0DAA0D,CAAC;AACnF,QAAQ,WAAW,EAAE,CAAC,2CAA2C,CAAC;AAClE,QAAQ,eAAe,EAAE;AACzB,YAAY,2DAA2D;AACvE,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,yBAAyB,CAAC;AACxC,QAAQ,kBAAkB,EAAE,CAAC,eAAe,CAAC;AAC7C,QAAQ,UAAU,EAAE,CAAC,mCAAmC,CAAC;AACzD,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,QAAQ,MAAM,EAAE,CAAC,gBAAgB,CAAC;AAClC,QAAQ,SAAS,EAAE;AACnB,YAAY,oBAAoB;AAChC,YAAY,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,2BAA2B,EAAE,EAAE;AACxE,SAAS;AACT,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC;AAC1B,QAAQ,UAAU,EAAE,CAAC,cAAc,CAAC;AACpC,QAAQ,MAAM,EAAE,CAAC,UAAU,CAAC;AAC5B,QAAQ,IAAI,EAAE,CAAC,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,UAAU,EAAE;AAChB,QAAQ,YAAY,EAAE,CAAC,qCAAqC,CAAC;AAC7D,QAAQ,iCAAiC,EAAE;AAC3C,YAAY,gDAAgD;AAC5D,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,sDAAsD;AAClE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,mDAAmD;AAC/D,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,8BAA8B,EAAE;AACxC,YAAY,6CAA6C;AACzD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,gBAAgB,EAAE,CAAC,0CAA0C,CAAC;AACtE,QAAQ,eAAe,EAAE,CAAC,kCAAkC,CAAC;AAC7D,QAAQ,aAAa,EAAE,CAAC,8CAA8C,CAAC;AACvE,QAAQ,6BAA6B,EAAE;AACvC,YAAY,qCAAqC;AACjD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,eAAe,EAAE;AACzB,YAAY,2CAA2C;AACvD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,wBAAwB,EAAE;AAClC,YAAY,sBAAsB;AAClC,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,UAAU,EAAE;AACpB,YAAY,4BAA4B;AACxC,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,eAAe,EAAE;AACzB,YAAY,wDAAwD;AACpE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,kDAAkD;AAC9D,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,eAAe,EAAE,CAAC,wDAAwD,CAAC;AACnF,QAAQ,gBAAgB,EAAE,CAAC,wCAAwC,CAAC;AACpE,QAAQ,yBAAyB,EAAE,CAAC,uBAAuB,CAAC;AAC5D,QAAQ,WAAW,EAAE,CAAC,6BAA6B,CAAC;AACpD,QAAQ,WAAW,EAAE,CAAC,kCAAkC,CAAC;AACzD,QAAQ,8BAA8B,EAAE;AACxC,YAAY,+DAA+D;AAC3E,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,qEAAqE;AACjF,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;AACtD,SAAS;AACT,QAAQ,YAAY,EAAE,CAAC,oCAAoC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,SAAS,EAAE,CAAC,mCAAmC,CAAC;AACxD,QAAQ,gBAAgB,EAAE,CAAC,mCAAmC,CAAC;AAC/D,QAAQ,sBAAsB,EAAE,CAAC,oCAAoC,CAAC;AACtE,QAAQ,4BAA4B,EAAE,CAAC,2CAA2C,CAAC;AACnF,QAAQ,kCAAkC,EAAE;AAC5C,YAAY,kDAAkD;AAC9D,SAAS;AACT,QAAQ,gBAAgB,EAAE,CAAC,8BAA8B,CAAC;AAC1D,QAAQ,aAAa,EAAE,CAAC,wBAAwB,CAAC;AACjD,QAAQ,aAAa,EAAE,CAAC,oCAAoC,CAAC;AAC7D,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC;AAChC,QAAQ,iCAAiC,EAAE,CAAC,kCAAkC,CAAC;AAC/E,QAAQ,oBAAoB,EAAE,CAAC,wCAAwC,CAAC;AACxE,QAAQ,UAAU,EAAE,CAAC,iCAAiC,CAAC;AACvD,QAAQ,sBAAsB,EAAE,CAAC,wCAAwC,CAAC;AAC1E,QAAQ,IAAI,EAAE,CAAC,oBAAoB,CAAC;AACpC,QAAQ,oBAAoB,EAAE,CAAC,+BAA+B,CAAC;AAC/D,QAAQ,gBAAgB,EAAE,CAAC,wBAAwB,CAAC;AACpD,QAAQ,wBAAwB,EAAE,CAAC,gBAAgB,CAAC;AACpD,QAAQ,WAAW,EAAE,CAAC,4BAA4B,CAAC;AACnD,QAAQ,mBAAmB,EAAE,CAAC,mDAAmD,CAAC;AAClF,QAAQ,WAAW,EAAE,CAAC,yBAAyB,CAAC;AAChD,QAAQ,mCAAmC,EAAE,CAAC,4BAA4B,CAAC;AAC3E,QAAQ,wBAAwB,EAAE,CAAC,uCAAuC,CAAC;AAC3E,QAAQ,sBAAsB,EAAE,CAAC,6BAA6B,CAAC;AAC/D,QAAQ,iBAAiB,EAAE,CAAC,gCAAgC,CAAC;AAC7D,QAAQ,YAAY,EAAE,CAAC,uBAAuB,CAAC;AAC/C,QAAQ,WAAW,EAAE,CAAC,wCAAwC,CAAC;AAC/D,QAAQ,YAAY,EAAE,CAAC,uCAAuC,CAAC;AAC/D,QAAQ,uBAAuB,EAAE,CAAC,2CAA2C,CAAC;AAC9E,QAAQ,yBAAyB,EAAE;AACnC,YAAY,qDAAqD;AACjE,SAAS;AACT,QAAQ,0CAA0C,EAAE;AACpD,YAAY,8CAA8C;AAC1D,SAAS;AACT,QAAQ,oBAAoB,EAAE,CAAC,wCAAwC,CAAC;AACxE,QAAQ,uCAAuC,EAAE;AACjD,YAAY,2CAA2C;AACvD,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,sCAAsC,CAAC;AAC7D,QAAQ,MAAM,EAAE,CAAC,mBAAmB,CAAC;AACrC,QAAQ,oCAAoC,EAAE;AAC9C,YAAY,oCAAoC;AAChD,SAAS;AACT,QAAQ,aAAa,EAAE,CAAC,mCAAmC,CAAC;AAC5D,QAAQ,yBAAyB,EAAE,CAAC,0CAA0C,CAAC;AAC/E,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,QAAQ,eAAe,EAAE;AACzB,YAAY,qDAAqD;AACjE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,UAAU,EAAE;AACpB,YAAY,0CAA0C;AACtD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,qCAAqC;AACjD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,0BAA0B,EAAE;AACpC,YAAY,qBAAqB;AACjC,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,2BAA2B;AACvC,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,aAAa,EAAE;AACvB,YAAY,qCAAqC;AACjD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,MAAM,EAAE;AAChB,YAAY,+BAA+B;AAC3C,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,UAAU,EAAE;AACpB,YAAY,0CAA0C;AACtD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,sCAAsC;AAClD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,GAAG,EAAE;AACb,YAAY,4BAA4B;AACxC,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,OAAO,EAAE;AACjB,YAAY,uCAAuC;AACnD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,SAAS,EAAE;AACnB,YAAY,mCAAmC;AAC/C,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,oBAAoB,EAAE;AAC9B,YAAY,gEAAgE;AAC5E,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,SAAS,EAAE;AACnB,YAAY,yCAAyC;AACrD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,iBAAiB,EAAE;AAC3B,YAAY,0CAA0C;AACtD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,WAAW,EAAE;AACrB,YAAY,oCAAoC;AAChD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,UAAU,EAAE;AACpB,YAAY,0BAA0B;AACtC,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,WAAW,EAAE;AACrB,YAAY,oCAAoC;AAChD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,WAAW,EAAE;AACrB,YAAY,gCAAgC;AAC5C,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,QAAQ,EAAE;AAClB,YAAY,8CAA8C;AAC1D,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,UAAU,EAAE;AACpB,YAAY,0CAA0C;AACtD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,kBAAkB,EAAE;AAC5B,YAAY,wDAAwD;AACpE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,MAAM,EAAE;AAChB,YAAY,8BAA8B;AAC1C,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,UAAU,EAAE;AACpB,YAAY,yCAAyC;AACrD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,qCAAqC;AACjD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,aAAa,EAAE,CAAC,qDAAqD,CAAC;AAC9E,QAAQ,MAAM,EAAE,CAAC,kCAAkC,CAAC;AACpD,QAAQ,2BAA2B,EAAE;AACrC,YAAY,8EAA8E;AAC1F,SAAS;AACT,QAAQ,YAAY,EAAE,CAAC,wDAAwD,CAAC;AAChF,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,yDAAyD;AACrE,SAAS;AACT,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,sEAAsE;AAClF,SAAS;AACT,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,0DAA0D;AACtE,SAAS;AACT,QAAQ,aAAa,EAAE;AACvB,YAAY,8EAA8E;AAC1F,SAAS;AACT,QAAQ,GAAG,EAAE,CAAC,+CAA+C,CAAC;AAC9D,QAAQ,SAAS,EAAE;AACnB,YAAY,mEAAmE;AAC/E,SAAS;AACT,QAAQ,gBAAgB,EAAE,CAAC,uDAAuD,CAAC;AACnF,QAAQ,IAAI,EAAE,CAAC,iCAAiC,CAAC;AACjD,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,4EAA4E;AACxF,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,uDAAuD,CAAC;AAC9E,QAAQ,SAAS,EAAE,CAAC,qDAAqD,CAAC;AAC1E,QAAQ,sBAAsB,EAAE;AAChC,YAAY,mEAAmE;AAC/E,SAAS;AACT,QAAQ,kBAAkB,EAAE;AAC5B,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,yBAAyB,EAAE,CAAC,0CAA0C,CAAC;AAC/E,QAAQ,WAAW,EAAE,CAAC,uDAAuD,CAAC;AAC9E,QAAQ,KAAK,EAAE,CAAC,qDAAqD,CAAC;AACtE,QAAQ,wBAAwB,EAAE;AAClC,YAAY,sEAAsE;AAClF,SAAS;AACT,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,oEAAoE;AAChF,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,2EAA2E;AACvF,SAAS;AACT,QAAQ,MAAM,EAAE,CAAC,iDAAiD,CAAC;AACnE,QAAQ,YAAY,EAAE;AACtB,YAAY,6DAA6D;AACzE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnD,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,mEAAmE;AAC/E,SAAS;AACT,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,yDAAyD;AACrE,SAAS;AACT,KAAK;AACL,IAAI,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE;AAC3C,IAAI,SAAS,EAAE;AACf,QAAQ,sBAAsB,EAAE;AAChC,YAAY,4DAA4D;AACxE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,cAAc,EAAE;AACxB,YAAY,4DAA4D;AACxE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,mEAAmE;AAC/E,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,iCAAiC,EAAE;AAC3C,YAAY,kEAAkE;AAC9E,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,mCAAmC,EAAE;AAC7C,YAAY,wGAAwG;AACpH,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,4BAA4B,EAAE;AACtC,YAAY,8EAA8E;AAC1F,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,sBAAsB,EAAE;AAChC,YAAY,4EAA4E;AACxF,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,cAAc,EAAE;AACxB,YAAY,4EAA4E;AACxF,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,mFAAmF;AAC/F,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,2BAA2B,EAAE;AACrC,YAAY,kFAAkF;AAC9F,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,uBAAuB,EAAE;AACjC,YAAY,8FAA8F;AAC1G,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,8BAA8B,EAAE;AACxC,YAAY,wHAAwH;AACpI,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,iCAAiC;AAC7C,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,YAAY;AACZ,gBAAgB,UAAU,EAAE,oHAAoH;AAChJ,aAAa;AACb,SAAS;AACT,QAAQ,oBAAoB,EAAE;AAC9B,YAAY,2DAA2D;AACvE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,2DAA2D;AACvE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,kEAAkE;AAC9E,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,+BAA+B,EAAE;AACzC,YAAY,iEAAiE;AAC7E,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,iCAAiC,EAAE;AAC3C,YAAY,uGAAuG;AACnH,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,QAAQ,0BAA0B,EAAE;AACpC,YAAY,6EAA6E;AACzF,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE;AAC1D,SAAS;AACT,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,gBAAgB,EAAE,CAAC,oDAAoD,CAAC;AAChF,QAAQ,wBAAwB,EAAE;AAClC,YAAY,2EAA2E;AACvF,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;AACjC,SAAS;AACT,QAAQ,eAAe,EAAE,CAAC,oDAAoD,CAAC;AAC/E,QAAQ,sBAAsB,EAAE;AAChC,YAAY,yFAAyF;AACrG,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;AACrC,SAAS;AACT,QAAQ,yBAAyB,EAAE;AACnC,YAAY,4EAA4E;AACxF,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE;AAClC,SAAS;AACT,QAAQ,yBAAyB,EAAE;AACnC,YAAY,4EAA4E;AACxF,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE;AAClC,SAAS;AACT,QAAQ,iBAAiB,EAAE,CAAC,oDAAoD,CAAC;AACjF,QAAQ,wBAAwB,EAAE;AAClC,YAAY,gDAAgD;AAC5D,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnD,SAAS;AACT,QAAQ,cAAc,EAAE,CAAC,mDAAmD,CAAC;AAC7E,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,0DAA0D;AACtE,SAAS;AACT,QAAQ,+BAA+B,EAAE;AACzC,YAAY,6EAA6E;AACzF,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AAClD,SAAS;AACT,QAAQ,kBAAkB,EAAE,CAAC,2CAA2C,CAAC;AACzE,QAAQ,eAAe,EAAE,CAAC,iCAAiC,CAAC;AAC5D,QAAQ,gBAAgB,EAAE,CAAC,wCAAwC,CAAC;AACpE,QAAQ,sBAAsB,EAAE;AAChC,YAAY,iEAAiE;AAC7E,SAAS;AACT,QAAQ,mBAAmB,EAAE,CAAC,uCAAuC,CAAC;AACtE,QAAQ,0BAA0B,EAAE,CAAC,kBAAkB,CAAC;AACxD,QAAQ,UAAU,EAAE,CAAC,kCAAkC,CAAC;AACxD,QAAQ,WAAW,EAAE,CAAC,wBAAwB,CAAC;AAC/C,QAAQ,0BAA0B,EAAE,CAAC,2CAA2C,CAAC;AACjF,QAAQ,eAAe,EAAE;AACzB,YAAY,kCAAkC;AAC9C,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;AACvD,SAAS;AACT,QAAQ,aAAa,EAAE,CAAC,qCAAqC,CAAC;AAC9D,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,uDAAuD;AACnE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE;AACrD,SAAS;AACT,QAAQ,aAAa,EAAE,CAAC,kCAAkC,CAAC;AAC3D,QAAQ,iBAAiB,EAAE,CAAC,qDAAqD,CAAC;AAClF,QAAQ,MAAM,EAAE,CAAC,8BAA8B,CAAC;AAChD,QAAQ,wBAAwB,EAAE;AAClC,YAAY,wEAAwE;AACpF,SAAS;AACT,QAAQ,2BAA2B,EAAE;AACrC,YAAY,0EAA0E;AACtF,SAAS;AACT,QAAQ,sBAAsB,EAAE;AAChC,YAAY,2DAA2D;AACvE,SAAS;AACT,QAAQ,mBAAmB,EAAE,CAAC,oDAAoD,CAAC;AACnF,QAAQ,+BAA+B,EAAE;AACzC,YAAY,+EAA+E;AAC3F,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AAClD,SAAS;AACT,QAAQ,eAAe,EAAE,CAAC,4CAA4C,CAAC;AACvE,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,0DAA0D;AACtE,SAAS;AACT,QAAQ,UAAU,EAAE,CAAC,8CAA8C,CAAC;AACpE,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,0DAA0D;AACtE,SAAS;AACT,QAAQ,eAAe,EAAE;AACzB,YAAY,oCAAoC;AAChD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;AACvD,SAAS;AACT,QAAQ,iCAAiC,EAAE;AAC3C,YAAY,yFAAyF;AACrG,SAAS;AACT,QAAQ,aAAa,EAAE,CAAC,oDAAoD,CAAC;AAC7E,QAAQ,kBAAkB,EAAE;AAC5B,YAAY,yDAAyD;AACrE,SAAS;AACT,QAAQ,aAAa,EAAE,CAAC,8CAA8C,CAAC;AACvE,QAAQ,6BAA6B,EAAE;AACvC,YAAY,uDAAuD;AACnE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnD,SAAS;AACT,QAAQ,0BAA0B,EAAE;AACpC,YAAY,mDAAmD;AAC/D,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnD,SAAS;AACT,QAAQ,eAAe,EAAE;AACzB,YAAY,yCAAyC;AACrD,YAAY,EAAE;AACd,YAAY,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,wBAAwB,CAAC,EAAE;AAC5D,SAAS;AACT,QAAQ,sBAAsB,EAAE,CAAC,yCAAyC,CAAC;AAC3E,QAAQ,sBAAsB,EAAE,CAAC,yCAAyC,CAAC;AAC3E,QAAQ,4BAA4B,EAAE;AACtC,YAAY,oDAAoD;AAChE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnD,SAAS;AACT,QAAQ,yBAAyB,EAAE;AACnC,YAAY,gDAAgD;AAC5D,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnD,SAAS;AACT,QAAQ,GAAG,EAAE,CAAC,2BAA2B,CAAC;AAC1C,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,qEAAqE;AACjF,SAAS;AACT,QAAQ,wBAAwB,EAAE;AAClC,YAAY,uEAAuE;AACnF,SAAS;AACT,QAAQ,yBAAyB,EAAE;AACnC,YAAY,wFAAwF;AACpG,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,kCAAkC;AAC9C,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AAClD,SAAS;AACT,QAAQ,kCAAkC,EAAE;AAC5C,YAAY,0EAA0E;AACtF,SAAS;AACT,QAAQ,SAAS,EAAE,CAAC,6CAA6C,CAAC;AAClE,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,SAAS,EAAE,CAAC,0CAA0C,CAAC;AAC/D,QAAQ,qBAAqB,EAAE,CAAC,gDAAgD,CAAC;AACjF,QAAQ,8BAA8B,EAAE;AACxC,YAAY,+DAA+D;AAC3E,SAAS;AACT,QAAQ,uBAAuB,EAAE,CAAC,gDAAgD,CAAC;AACnF,QAAQ,SAAS,EAAE,CAAC,yCAAyC,CAAC;AAC9D,QAAQ,sBAAsB,EAAE,CAAC,iDAAiD,CAAC;AACnF,QAAQ,gBAAgB,EAAE,CAAC,iDAAiD,CAAC;AAC7E,QAAQ,4BAA4B,EAAE;AACtC,YAAY,4EAA4E;AACxF,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AAClD,SAAS;AACT,QAAQ,0BAA0B,EAAE,CAAC,6CAA6C,CAAC;AACnF,QAAQ,UAAU,EAAE,CAAC,2CAA2C,CAAC;AACjE,QAAQ,oBAAoB,EAAE,CAAC,8CAA8C,CAAC;AAC9E,QAAQ,YAAY,EAAE,CAAC,yCAAyC,CAAC;AACjE,QAAQ,aAAa,EAAE,CAAC,uDAAuD,CAAC;AAChF,QAAQ,mBAAmB,EAAE;AAC7B,YAAY,4EAA4E;AACxF,SAAS;AACT,QAAQ,mBAAmB,EAAE,CAAC,+CAA+C,CAAC;AAC9E,QAAQ,gBAAgB,EAAE,CAAC,2CAA2C,CAAC;AACvE,QAAQ,QAAQ,EAAE,CAAC,iCAAiC,CAAC;AACrD,QAAQ,aAAa,EAAE,CAAC,mDAAmD,CAAC;AAC5E,QAAQ,qBAAqB,EAAE,CAAC,+CAA+C,CAAC;AAChF,QAAQ,8BAA8B,EAAE;AACxC,YAAY,sFAAsF;AAClG,SAAS;AACT,QAAQ,iBAAiB,EAAE,CAAC,4CAA4C,CAAC;AACzE,QAAQ,SAAS,EAAE,CAAC,kCAAkC,CAAC;AACvD,QAAQ,UAAU,EAAE,CAAC,iDAAiD,CAAC;AACvE,QAAQ,eAAe,EAAE,CAAC,sDAAsD,CAAC;AACjF,QAAQ,eAAe,EAAE,CAAC,+CAA+C,CAAC;AAC1E,QAAQ,yBAAyB,EAAE;AACnC,YAAY,+EAA+E;AAC3F,SAAS;AACT,QAAQ,mCAAmC,EAAE;AAC7C,YAAY,2EAA2E;AACvF,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,iDAAiD,CAAC;AACxE,QAAQ,eAAe,EAAE,CAAC,qDAAqD,CAAC;AAChF,QAAQ,mCAAmC,EAAE;AAC7C,YAAY,2EAA2E;AACvF,SAAS;AACT,QAAQ,QAAQ,EAAE,CAAC,yCAAyC,CAAC;AAC7D,QAAQ,UAAU,EAAE,CAAC,2CAA2C,CAAC;AACjE,QAAQ,uBAAuB,EAAE;AACjC,YAAY,kDAAkD;AAC9D,SAAS;AACT,QAAQ,YAAY,EAAE,CAAC,oCAAoC,CAAC;AAC5D,QAAQ,yBAAyB,EAAE;AACnC,YAAY,oEAAoE;AAChF,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AAClD,SAAS;AACT,QAAQ,iBAAiB,EAAE,CAAC,yCAAyC,CAAC;AACtE,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,yDAAyD;AACrE,SAAS;AACT,QAAQ,yBAAyB,EAAE,CAAC,oCAAoC,CAAC;AACzE,QAAQ,wBAAwB,EAAE;AAClC,YAAY,kDAAkD;AAC9D,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,mCAAmC,CAAC;AAC1D,QAAQ,gBAAgB,EAAE,CAAC,wCAAwC,CAAC;AACpE,QAAQ,cAAc,EAAE,CAAC,gCAAgC,CAAC;AAC1D,QAAQ,sBAAsB,EAAE;AAChC,YAAY,gEAAgE;AAC5E,SAAS;AACT,QAAQ,eAAe,EAAE,CAAC,uCAAuC,CAAC;AAClE,QAAQ,wBAAwB,EAAE,CAAC,iBAAiB,CAAC;AACrD,QAAQ,UAAU,EAAE,CAAC,uBAAuB,CAAC;AAC7C,QAAQ,WAAW,EAAE,CAAC,6BAA6B,CAAC;AACpD,QAAQ,SAAS,EAAE,CAAC,iCAAiC,CAAC;AACtD,QAAQ,eAAe,EAAE,CAAC,uCAAuC,CAAC;AAClE,QAAQ,mCAAmC,EAAE,CAAC,kCAAkC,CAAC;AACjF,QAAQ,aAAa,EAAE,CAAC,qCAAqC,CAAC;AAC9D,QAAQ,eAAe,EAAE,CAAC,wCAAwC,CAAC;AACnE,QAAQ,UAAU,EAAE,CAAC,mBAAmB,CAAC;AACzC,QAAQ,oCAAoC,EAAE;AAC9C,YAAY,sDAAsD;AAClE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AAClD,SAAS;AACT,QAAQ,iBAAiB,EAAE;AAC3B,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,YAAY,EAAE,CAAC,oCAAoC,CAAC;AAC5D,QAAQ,QAAQ,EAAE,CAAC,gCAAgC,CAAC;AACpD,QAAQ,SAAS,EAAE,CAAC,iCAAiC,CAAC;AACtD,QAAQ,YAAY,EAAE,CAAC,iCAAiC,CAAC;AACzD,QAAQ,KAAK,EAAE,CAAC,mCAAmC,CAAC;AACpD,QAAQ,WAAW,EAAE,CAAC,kDAAkD,CAAC;AACzE,QAAQ,2BAA2B,EAAE;AACrC,YAAY,6EAA6E;AACzF,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;AACjC,SAAS;AACT,QAAQ,kBAAkB,EAAE;AAC5B,YAAY,uDAAuD;AACnE,SAAS;AACT,QAAQ,yBAAyB,EAAE;AACnC,YAAY,2FAA2F;AACvG,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;AACrC,SAAS;AACT,QAAQ,2BAA2B,EAAE;AACrC,YAAY,kFAAkF;AAC9F,SAAS;AACT,QAAQ,4BAA4B,EAAE;AACtC,YAAY,8EAA8E;AAC1F,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE;AAClC,SAAS;AACT,QAAQ,4BAA4B,EAAE;AACtC,YAAY,8EAA8E;AAC1F,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE;AAClC,SAAS;AACT,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,kCAAkC;AAC9C,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AAClD,SAAS;AACT,QAAQ,iBAAiB,EAAE,CAAC,yCAAyC,CAAC;AACtE,QAAQ,wBAAwB,EAAE;AAClC,YAAY,wEAAwE;AACpF,SAAS;AACT,QAAQ,wBAAwB,EAAE;AAClC,YAAY,0EAA0E;AACtF,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;AACjC,SAAS;AACT,QAAQ,sBAAsB,EAAE;AAChC,YAAY,wFAAwF;AACpG,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;AACrC,SAAS;AACT,QAAQ,yBAAyB,EAAE;AACnC,YAAY,2EAA2E;AACvF,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE;AAClC,SAAS;AACT,QAAQ,yBAAyB,EAAE;AACnC,YAAY,2EAA2E;AACvF,YAAY,EAAE;AACd,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE;AAClC,SAAS;AACT,QAAQ,eAAe,EAAE,CAAC,kDAAkD,CAAC;AAC7E,QAAQ,QAAQ,EAAE,CAAC,qCAAqC,CAAC;AACzD,QAAQ,MAAM,EAAE,CAAC,6BAA6B,CAAC;AAC/C,QAAQ,sBAAsB,EAAE;AAChC,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,mBAAmB,EAAE,CAAC,mDAAmD,CAAC;AAClF,QAAQ,+BAA+B,EAAE,CAAC,iCAAiC,CAAC;AAC5E,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,yDAAyD;AACrE,SAAS;AACT,QAAQ,iCAAiC,EAAE;AAC3C,YAAY,wFAAwF;AACpG,SAAS;AACT,QAAQ,aAAa,EAAE,CAAC,mDAAmD,CAAC;AAC5E,QAAQ,kBAAkB,EAAE;AAC5B,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,0BAA0B,EAAE;AACpC,YAAY,iFAAiF;AAC7F,YAAY,EAAE;AACd,YAAY,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,6BAA6B,CAAC,EAAE;AACjE,SAAS;AACT,QAAQ,2BAA2B,EAAE;AACrC,YAAY,iFAAiF;AAC7F,SAAS;AACT,QAAQ,aAAa,EAAE,CAAC,6CAA6C,CAAC;AACtE,QAAQ,0BAA0B,EAAE;AACpC,YAAY,oDAAoD;AAChE,SAAS;AACT,QAAQ,kBAAkB,EAAE;AAC5B,YAAY,sEAAsE;AAClF,YAAY,EAAE,OAAO,EAAE,4BAA4B,EAAE;AACrD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,IAAI,EAAE,CAAC,kBAAkB,CAAC;AAClC,QAAQ,OAAO,EAAE,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;AAChF,QAAQ,qBAAqB,EAAE,CAAC,oBAAoB,CAAC;AACrD,QAAQ,MAAM,EAAE,CAAC,oBAAoB,CAAC;AACtC,QAAQ,KAAK,EAAE,CAAC,0BAA0B,CAAC;AAC3C,QAAQ,MAAM,EAAE,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;AAC9E,QAAQ,KAAK,EAAE,CAAC,mBAAmB,CAAC;AACpC,KAAK;AACL,IAAI,cAAc,EAAE;AACpB,QAAQ,QAAQ,EAAE;AAClB,YAAY,iEAAiE;AAC7E,SAAS;AACT,QAAQ,iBAAiB,EAAE,CAAC,kDAAkD,CAAC;AAC/E,QAAQ,WAAW,EAAE;AACrB,YAAY,mEAAmE;AAC/E,SAAS;AACT,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,iCAAiC,EAAE;AAC3C,YAAY,0DAA0D;AACtE,SAAS;AACT,QAAQ,kCAAkC,EAAE;AAC5C,YAAY,yDAAyD;AACrE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,+BAA+B,EAAE;AACzC,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,+BAA+B,EAAE;AACzC,YAAY,yDAAyD;AACrE,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,4BAA4B,EAAE;AACtC,YAAY,wDAAwD;AACpE,SAAS;AACT,QAAQ,MAAM,EAAE,CAAC,wBAAwB,CAAC;AAC1C,QAAQ,4BAA4B,EAAE;AACtC,YAAY,6EAA6E;AACzF,SAAS;AACT,QAAQ,qBAAqB,EAAE,CAAC,gDAAgD,CAAC;AACjF,QAAQ,4BAA4B,EAAE;AACtC,YAAY,gGAAgG;AAC5G,SAAS;AACT,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,sEAAsE;AAClF,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,sCAAsC,CAAC;AAC7D,QAAQ,SAAS,EAAE,CAAC,mCAAmC,CAAC;AACxD,QAAQ,yBAAyB,EAAE;AACnC,YAAY,6FAA6F;AACzG,SAAS;AACT,QAAQ,kBAAkB,EAAE;AAC5B,YAAY,mEAAmE;AAC/E,SAAS;AACT,QAAQ,yBAAyB,EAAE;AACnC,YAAY,0DAA0D;AACtE,SAAS;AACT,QAAQ,IAAI,EAAE,CAAC,uBAAuB,CAAC;AACvC,QAAQ,cAAc,EAAE,CAAC,yCAAyC,CAAC;AACnE,QAAQ,2BAA2B,EAAE;AACrC,YAAY,4EAA4E;AACxF,SAAS;AACT,QAAQ,oBAAoB,EAAE,CAAC,+CAA+C,CAAC;AAC/E,QAAQ,wBAAwB,EAAE,CAAC,iBAAiB,CAAC;AACrD,QAAQ,gBAAgB,EAAE,CAAC,2CAA2C,CAAC;AACvE,QAAQ,2BAA2B,EAAE;AACrC,YAAY,+CAA+C;AAC3D,SAAS;AACT,QAAQ,iBAAiB,EAAE;AAC3B,YAAY,4CAA4C;AACxD,YAAY,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACpD,SAAS;AACT,QAAQ,cAAc,EAAE,CAAC,yCAAyC,CAAC;AACnE,QAAQ,4BAA4B,EAAE;AACtC,YAAY,6DAA6D;AACzE,SAAS;AACT,QAAQ,kBAAkB,EAAE;AAC5B,YAAY,4DAA4D;AACxE,SAAS;AACT,QAAQ,eAAe,EAAE;AACzB,YAAY,2DAA2D;AACvE,SAAS;AACT,QAAQ,4BAA4B,EAAE;AACtC,YAAY,+FAA+F;AAC3G,SAAS;AACT,QAAQ,qBAAqB,EAAE;AAC/B,YAAY,qEAAqE;AACjF,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,qCAAqC,CAAC;AAC5D,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,wBAAwB,EAAE,CAAC,mBAAmB,CAAC;AACvD,QAAQ,KAAK,EAAE,CAAC,6BAA6B,CAAC;AAC9C,QAAQ,YAAY,EAAE,CAAC,6BAA6B,CAAC;AACrD,QAAQ,qBAAqB,EAAE,CAAC,+CAA+C,CAAC;AAChF,QAAQ,oCAAoC,EAAE,CAAC,gCAAgC,CAAC;AAChF,QAAQ,4BAA4B,EAAE,CAAC,qBAAqB,CAAC;AAC7D,QAAQ,kCAAkC,EAAE,CAAC,iBAAiB,CAAC;AAC/D,QAAQ,2BAA2B,EAAE,CAAC,qBAAqB,CAAC;AAC5D,QAAQ,4BAA4B,EAAE,CAAC,oCAAoC,CAAC;AAC5E,QAAQ,kCAAkC,EAAE,CAAC,4BAA4B,CAAC;AAC1E,QAAQ,MAAM,EAAE,CAAC,gCAAgC,CAAC;AAClD,QAAQ,gBAAgB,EAAE,CAAC,WAAW,CAAC;AACvC,QAAQ,aAAa,EAAE,CAAC,uBAAuB,CAAC;AAChD,QAAQ,iBAAiB,EAAE,CAAC,iCAAiC,CAAC;AAC9D,QAAQ,yBAAyB,EAAE,CAAC,iCAAiC,CAAC;AACtE,QAAQ,+BAA+B,EAAE,CAAC,yBAAyB,CAAC;AACpE,QAAQ,IAAI,EAAE,CAAC,YAAY,CAAC;AAC5B,QAAQ,0BAA0B,EAAE,CAAC,kBAAkB,CAAC;AACxD,QAAQ,0BAA0B,EAAE,CAAC,kBAAkB,CAAC;AACxD,QAAQ,2BAA2B,EAAE,CAAC,qBAAqB,CAAC;AAC5D,QAAQ,iCAAiC,EAAE,CAAC,qBAAqB,CAAC;AAClE,QAAQ,oBAAoB,EAAE,CAAC,iCAAiC,CAAC;AACjE,QAAQ,oBAAoB,EAAE,CAAC,iCAAiC,CAAC;AACjE,QAAQ,2BAA2B,EAAE,CAAC,oBAAoB,CAAC;AAC3D,QAAQ,kBAAkB,EAAE,CAAC,gCAAgC,CAAC;AAC9D,QAAQ,gCAAgC,EAAE,CAAC,yBAAyB,CAAC;AACrE,QAAQ,qBAAqB,EAAE,CAAC,4BAA4B,CAAC;AAC7D,QAAQ,iCAAiC,EAAE,CAAC,gBAAgB,CAAC;AAC7D,QAAQ,yCAAyC,EAAE,CAAC,8BAA8B,CAAC;AACnF,QAAQ,OAAO,EAAE,CAAC,gCAAgC,CAAC;AACnD,QAAQ,QAAQ,EAAE,CAAC,mCAAmC,CAAC;AACvD,QAAQ,mBAAmB,EAAE,CAAC,aAAa,CAAC;AAC5C,KAAK;AACL,CAAC;;ACvvCM,MAAM,OAAO,GAAG,mBAAmB,CAAC;;ACApC,SAAS,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE;AAC1D,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC;AAC1B,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACnE,QAAQ,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACxE,YAAY,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC;AAC5D,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnD,YAAY,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9E,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACpC,gBAAgB,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACvC,aAAa;AACb,YAAY,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACnD,YAAY,IAAI,WAAW,EAAE;AAC7B,gBAAgB,YAAY,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;AAC/G,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,YAAY,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAClF,SAAS;AACT,KAAK;AACL,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC;AACD,SAAS,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE;AACrE,IAAI,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnE;AACA,IAAI,SAAS,eAAe,CAAC,GAAG,IAAI,EAAE;AACtC;AACA,QAAQ,IAAI,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAClE;AACA,QAAQ,IAAI,WAAW,CAAC,SAAS,EAAE;AACnC,YAAY,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE;AACjD,gBAAgB,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;AACpD,gBAAgB,CAAC,WAAW,CAAC,SAAS,GAAG,SAAS;AAClD,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,OAAO,EAAE;AACjC,YAAY,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC;AAClE,YAAY,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,+BAA+B,EAAE,QAAQ,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5H,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,UAAU,EAAE;AACpC,YAAY,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,iBAAiB,EAAE;AAC3C;AACA,YAAY,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AACxE,YAAY,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE;AACvF,gBAAgB,IAAI,IAAI,IAAI,OAAO,EAAE;AACrC,oBAAoB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACzI,oBAAoB,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC,EAAE;AAC7C,wBAAwB,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACvD,qBAAqB;AACrB,oBAAoB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAChD,SAAS;AACT;AACA,QAAQ,OAAO,mBAAmB,CAAC,GAAG,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;AAC/D,CAAC;;ACxDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,mBAAmB,CAAC,OAAO,EAAE;AAC7C,IAAI,OAAO,kBAAkB,CAAC,OAAO,EAAEA,SAAS,CAAC,CAAC;AAClD,CAAC;AACD,mBAAmB,CAAC,OAAO,GAAG,OAAO,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/package.json b/node_modules/@octokit/plugin-rest-endpoint-methods/package.json deleted file mode 100644 index fe18ddc82..000000000 --- a/node_modules/@octokit/plugin-rest-endpoint-methods/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_from": "@octokit/plugin-rest-endpoint-methods@^4.0.0", - "_id": "@octokit/plugin-rest-endpoint-methods@4.4.1", - "_inBundle": false, - "_integrity": "sha512-+v5PcvrUcDeFXf8hv1gnNvNLdm4C0+2EiuWt9EatjjUmfriM1pTMM+r4j1lLHxeBQ9bVDmbywb11e3KjuavieA==", - "_location": "/@octokit/plugin-rest-endpoint-methods", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/plugin-rest-endpoint-methods@^4.0.0", - "name": "@octokit/plugin-rest-endpoint-methods", - "escapedName": "@octokit%2fplugin-rest-endpoint-methods", - "scope": "@octokit", - "rawSpec": "^4.0.0", - "saveSpec": null, - "fetchSpec": "^4.0.0" - }, - "_requiredBy": [ - "/@actions/github" - ], - "_resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.4.1.tgz", - "_shasum": "105cf93255432155de078c9efc33bd4e14d1cd63", - "_spec": "@octokit/plugin-rest-endpoint-methods@^4.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@actions\\github", - "bugs": { - "url": "https://github.com/octokit/plugin-rest-endpoint-methods.js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@octokit/types": "^6.1.0", - "deprecation": "^2.3.1" - }, - "deprecated": false, - "description": "Octokit plugin adding one method for all of api.github.com REST API endpoints", - "devDependencies": { - "@gimenete/type-writer": "^0.1.5", - "@octokit/core": "^3.0.0", - "@octokit/graphql": "^4.3.1", - "@pika/pack": "^0.5.0", - "@pika/plugin-build-node": "^0.9.0", - "@pika/plugin-build-web": "^0.9.0", - "@pika/plugin-ts-standard-pkg": "^0.9.0", - "@types/fetch-mock": "^7.3.1", - "@types/jest": "^26.0.0", - "@types/node": "^14.0.4", - "fetch-mock": "^9.0.0", - "fs-extra": "^9.0.0", - "jest": "^26.1.0", - "lodash.camelcase": "^4.3.0", - "lodash.set": "^4.3.2", - "lodash.upperfirst": "^4.3.1", - "mustache": "^4.0.0", - "npm-run-all": "^4.1.5", - "prettier": "^2.0.1", - "semantic-release": "^17.0.0", - "semantic-release-plugin-update-version-in-files": "^1.0.0", - "sort-keys": "^4.0.0", - "string-to-jsdoc-comment": "^1.0.0", - "ts-jest": "^26.1.3", - "typescript": "^4.0.2" - }, - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/octokit/plugin-rest-endpoint-methods.js#readme", - "keywords": [ - "github", - "api", - "sdk", - "toolkit" - ], - "license": "MIT", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "@octokit/plugin-rest-endpoint-methods", - "peerDependencies": { - "@octokit/core": ">=3" - }, - "pika": true, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/plugin-rest-endpoint-methods.js.git" - }, - "sideEffects": false, - "source": "dist-src/index.js", - "types": "dist-types/index.d.ts", - "version": "4.4.1" -} diff --git a/node_modules/@octokit/request-error/LICENSE b/node_modules/@octokit/request-error/LICENSE deleted file mode 100644 index ef2c18ee5..000000000 --- a/node_modules/@octokit/request-error/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/@octokit/request-error/README.md b/node_modules/@octokit/request-error/README.md deleted file mode 100644 index c939cdaee..000000000 --- a/node_modules/@octokit/request-error/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# http-error.js - -> Error class for Octokit request errors - -[![@latest](https://img.shields.io/npm/v/@octokit/request-error.svg)](https://www.npmjs.com/package/@octokit/request-error) -[![Build Status](https://github.com/octokit/request-error.js/workflows/Test/badge.svg)](https://github.com/octokit/request-error.js/actions?query=workflow%3ATest) - -## Usage - - - - - - -
-Browsers - -Load @octokit/request-error directly from cdn.skypack.dev - -```html - -``` - -
-Node - - -Install with npm install @octokit/request-error - -```js -const { RequestError } = require("@octokit/request-error"); -// or: import { RequestError } from "@octokit/request-error"; -``` - -
- -```js -const error = new RequestError("Oops", 500, { - headers: { - "x-github-request-id": "1:2:3:4", - }, // response headers - request: { - method: "POST", - url: "https://api.github.com/foo", - body: { - bar: "baz", - }, - headers: { - authorization: "token secret123", - }, - }, -}); - -error.message; // Oops -error.status; // 500 -error.headers; // { 'x-github-request-id': '1:2:3:4' } -error.request.method; // POST -error.request.url; // https://api.github.com/foo -error.request.body; // { bar: 'baz' } -error.request.headers; // { authorization: 'token [REDACTED]' } -``` - -## LICENSE - -[MIT](LICENSE) diff --git a/node_modules/@octokit/request-error/dist-node/index.js b/node_modules/@octokit/request-error/dist-node/index.js deleted file mode 100644 index 95b9c5796..000000000 --- a/node_modules/@octokit/request-error/dist-node/index.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var deprecation = require('deprecation'); -var once = _interopDefault(require('once')); - -const logOnce = once(deprecation => console.warn(deprecation)); -/** - * Error with extra properties to help with debugging - */ - -class RequestError extends Error { - constructor(message, statusCode, options) { - super(message); // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = "HttpError"; - this.status = statusCode; - Object.defineProperty(this, "code", { - get() { - logOnce(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); - return statusCode; - } - - }); - this.headers = options.headers || {}; // redact request credentials without mutating original request options - - const requestCopy = Object.assign({}, options.request); - - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") - }); - } - - requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit - // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications - .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended - // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header - .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; - } - -} - -exports.RequestError = RequestError; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/request-error/dist-node/index.js.map b/node_modules/@octokit/request-error/dist-node/index.js.map deleted file mode 100644 index 25620064f..000000000 --- a/node_modules/@octokit/request-error/dist-node/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnce = once((deprecation) => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\nexport class RequestError extends Error {\n constructor(message, statusCode, options) {\n super(message);\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n Object.defineProperty(this, \"code\", {\n get() {\n logOnce(new Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n return statusCode;\n },\n });\n this.headers = options.headers || {};\n // redact request credentials without mutating original request options\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\"),\n });\n }\n requestCopy.url = requestCopy.url\n // client_id & client_secret can be passed as URL query parameters to increase rate limit\n // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\")\n // OAuth tokens can be passed as URL query parameters, although it is not recommended\n // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n }\n}\n"],"names":["logOnce","once","deprecation","console","warn","RequestError","Error","constructor","message","statusCode","options","captureStackTrace","name","status","Object","defineProperty","get","Deprecation","headers","requestCopy","assign","request","authorization","replace","url"],"mappings":";;;;;;;;;AAEA,MAAMA,OAAO,GAAGC,IAAI,CAAEC,WAAD,IAAiBC,OAAO,CAACC,IAAR,CAAaF,WAAb,CAAlB,CAApB;AACA;;;;AAGO,MAAMG,YAAN,SAA2BC,KAA3B,CAAiC;AACpCC,EAAAA,WAAW,CAACC,OAAD,EAAUC,UAAV,EAAsBC,OAAtB,EAA+B;AACtC,UAAMF,OAAN,EADsC;;AAGtC;;AACA,QAAIF,KAAK,CAACK,iBAAV,EAA6B;AACzBL,MAAAA,KAAK,CAACK,iBAAN,CAAwB,IAAxB,EAA8B,KAAKJ,WAAnC;AACH;;AACD,SAAKK,IAAL,GAAY,WAAZ;AACA,SAAKC,MAAL,GAAcJ,UAAd;AACAK,IAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;AAChCC,MAAAA,GAAG,GAAG;AACFhB,QAAAA,OAAO,CAAC,IAAIiB,uBAAJ,CAAgB,0EAAhB,CAAD,CAAP;AACA,eAAOR,UAAP;AACH;;AAJ+B,KAApC;AAMA,SAAKS,OAAL,GAAeR,OAAO,CAACQ,OAAR,IAAmB,EAAlC,CAfsC;;AAiBtC,UAAMC,WAAW,GAAGL,MAAM,CAACM,MAAP,CAAc,EAAd,EAAkBV,OAAO,CAACW,OAA1B,CAApB;;AACA,QAAIX,OAAO,CAACW,OAAR,CAAgBH,OAAhB,CAAwBI,aAA5B,EAA2C;AACvCH,MAAAA,WAAW,CAACD,OAAZ,GAAsBJ,MAAM,CAACM,MAAP,CAAc,EAAd,EAAkBV,OAAO,CAACW,OAAR,CAAgBH,OAAlC,EAA2C;AAC7DI,QAAAA,aAAa,EAAEZ,OAAO,CAACW,OAAR,CAAgBH,OAAhB,CAAwBI,aAAxB,CAAsCC,OAAtC,CAA8C,MAA9C,EAAsD,aAAtD;AAD8C,OAA3C,CAAtB;AAGH;;AACDJ,IAAAA,WAAW,CAACK,GAAZ,GAAkBL,WAAW,CAACK,GAAZ;AAEd;AAFc,KAGbD,OAHa,CAGL,sBAHK,EAGmB,0BAHnB;AAKd;AALc,KAMbA,OANa,CAML,qBANK,EAMkB,yBANlB,CAAlB;AAOA,SAAKF,OAAL,GAAeF,WAAf;AACH;;AAhCmC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/request-error/dist-src/index.js b/node_modules/@octokit/request-error/dist-src/index.js deleted file mode 100644 index c880b450f..000000000 --- a/node_modules/@octokit/request-error/dist-src/index.js +++ /dev/null @@ -1,40 +0,0 @@ -import { Deprecation } from "deprecation"; -import once from "once"; -const logOnce = once((deprecation) => console.warn(deprecation)); -/** - * Error with extra properties to help with debugging - */ -export class RequestError extends Error { - constructor(message, statusCode, options) { - super(message); - // Maintains proper stack trace (only available on V8) - /* istanbul ignore next */ - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - this.name = "HttpError"; - this.status = statusCode; - Object.defineProperty(this, "code", { - get() { - logOnce(new Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); - return statusCode; - }, - }); - this.headers = options.headers || {}; - // redact request credentials without mutating original request options - const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]"), - }); - } - requestCopy.url = requestCopy.url - // client_id & client_secret can be passed as URL query parameters to increase rate limit - // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications - .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") - // OAuth tokens can be passed as URL query parameters, although it is not recommended - // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header - .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; - } -} diff --git a/node_modules/@octokit/request-error/dist-src/types.js b/node_modules/@octokit/request-error/dist-src/types.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/node_modules/@octokit/request-error/dist-types/index.d.ts b/node_modules/@octokit/request-error/dist-types/index.d.ts deleted file mode 100644 index baa8a0eb7..000000000 --- a/node_modules/@octokit/request-error/dist-types/index.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { RequestOptions, ResponseHeaders } from "@octokit/types"; -import { RequestErrorOptions } from "./types"; -/** - * Error with extra properties to help with debugging - */ -export declare class RequestError extends Error { - name: "HttpError"; - /** - * http status code - */ - status: number; - /** - * http status code - * - * @deprecated `error.code` is deprecated in favor of `error.status` - */ - code: number; - /** - * error response headers - */ - headers: ResponseHeaders; - /** - * Request options that lead to the error. - */ - request: RequestOptions; - constructor(message: string, statusCode: number, options: RequestErrorOptions); -} diff --git a/node_modules/@octokit/request-error/dist-types/types.d.ts b/node_modules/@octokit/request-error/dist-types/types.d.ts deleted file mode 100644 index 865d2139f..000000000 --- a/node_modules/@octokit/request-error/dist-types/types.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { RequestOptions, ResponseHeaders } from "@octokit/types"; -export declare type RequestErrorOptions = { - headers?: ResponseHeaders; - request: RequestOptions; -}; diff --git a/node_modules/@octokit/request-error/dist-web/index.js b/node_modules/@octokit/request-error/dist-web/index.js deleted file mode 100644 index feec58ef6..000000000 --- a/node_modules/@octokit/request-error/dist-web/index.js +++ /dev/null @@ -1,44 +0,0 @@ -import { Deprecation } from 'deprecation'; -import once from 'once'; - -const logOnce = once((deprecation) => console.warn(deprecation)); -/** - * Error with extra properties to help with debugging - */ -class RequestError extends Error { - constructor(message, statusCode, options) { - super(message); - // Maintains proper stack trace (only available on V8) - /* istanbul ignore next */ - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - this.name = "HttpError"; - this.status = statusCode; - Object.defineProperty(this, "code", { - get() { - logOnce(new Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); - return statusCode; - }, - }); - this.headers = options.headers || {}; - // redact request credentials without mutating original request options - const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]"), - }); - } - requestCopy.url = requestCopy.url - // client_id & client_secret can be passed as URL query parameters to increase rate limit - // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications - .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") - // OAuth tokens can be passed as URL query parameters, although it is not recommended - // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header - .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; - } -} - -export { RequestError }; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/request-error/dist-web/index.js.map b/node_modules/@octokit/request-error/dist-web/index.js.map deleted file mode 100644 index 130740d7f..000000000 --- a/node_modules/@octokit/request-error/dist-web/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnce = once((deprecation) => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\nexport class RequestError extends Error {\n constructor(message, statusCode, options) {\n super(message);\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n Object.defineProperty(this, \"code\", {\n get() {\n logOnce(new Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n return statusCode;\n },\n });\n this.headers = options.headers || {};\n // redact request credentials without mutating original request options\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\"),\n });\n }\n requestCopy.url = requestCopy.url\n // client_id & client_secret can be passed as URL query parameters to increase rate limit\n // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\")\n // OAuth tokens can be passed as URL query parameters, although it is not recommended\n // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n }\n}\n"],"names":[],"mappings":";;;AAEA,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACjE;AACA;AACA;AACO,MAAM,YAAY,SAAS,KAAK,CAAC;AACxC,IAAI,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE;AAC9C,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB;AACA;AACA,QAAQ,IAAI,KAAK,CAAC,iBAAiB,EAAE;AACrC,YAAY,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;AAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACjC,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,GAAG,GAAG;AAClB,gBAAgB,OAAO,CAAC,IAAI,WAAW,CAAC,0EAA0E,CAAC,CAAC,CAAC;AACrH,gBAAgB,OAAO,UAAU,CAAC;AAClC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AAC7C;AACA,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/D,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;AACnD,YAAY,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;AAC7E,gBAAgB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;AACnG,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG;AACzC;AACA;AACA,aAAa,OAAO,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;AACxE;AACA;AACA,aAAa,OAAO,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;AACvE,QAAQ,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;AACnC,KAAK;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/request-error/package.json b/node_modules/@octokit/request-error/package.json deleted file mode 100644 index 43b491346..000000000 --- a/node_modules/@octokit/request-error/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "_from": "@octokit/request-error@^2.0.0", - "_id": "@octokit/request-error@2.0.4", - "_inBundle": false, - "_integrity": "sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA==", - "_location": "/@octokit/request-error", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/request-error@^2.0.0", - "name": "@octokit/request-error", - "escapedName": "@octokit%2frequest-error", - "scope": "@octokit", - "rawSpec": "^2.0.0", - "saveSpec": null, - "fetchSpec": "^2.0.0" - }, - "_requiredBy": [ - "/@octokit/request" - ], - "_resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.4.tgz", - "_shasum": "07dd5c0521d2ee975201274c472a127917741262", - "_spec": "@octokit/request-error@^2.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\request", - "bugs": { - "url": "https://github.com/octokit/request-error.js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@octokit/types": "^6.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "deprecated": false, - "description": "Error class for Octokit request errors", - "devDependencies": { - "@pika/pack": "^0.5.0", - "@pika/plugin-build-node": "^0.9.0", - "@pika/plugin-build-web": "^0.9.0", - "@pika/plugin-bundle-web": "^0.9.0", - "@pika/plugin-ts-standard-pkg": "^0.9.0", - "@types/jest": "^26.0.0", - "@types/node": "^14.0.4", - "@types/once": "^1.4.0", - "jest": "^25.1.0", - "pika-plugin-unpkg-field": "^1.1.0", - "prettier": "^2.0.1", - "semantic-release": "^17.0.0", - "ts-jest": "^25.1.0", - "typescript": "^3.4.5" - }, - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/octokit/request-error.js#readme", - "keywords": [ - "octokit", - "github", - "api", - "error" - ], - "license": "MIT", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "@octokit/request-error", - "pika": true, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/request-error.js.git" - }, - "sideEffects": false, - "source": "dist-src/index.js", - "types": "dist-types/index.d.ts", - "version": "2.0.4" -} diff --git a/node_modules/@octokit/request/LICENSE b/node_modules/@octokit/request/LICENSE deleted file mode 100644 index af5366d0d..000000000 --- a/node_modules/@octokit/request/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/@octokit/request/README.md b/node_modules/@octokit/request/README.md deleted file mode 100644 index 514eb6e28..000000000 --- a/node_modules/@octokit/request/README.md +++ /dev/null @@ -1,541 +0,0 @@ -# request.js - -> Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node - -[![@latest](https://img.shields.io/npm/v/@octokit/request.svg)](https://www.npmjs.com/package/@octokit/request) -[![Build Status](https://github.com/octokit/request.js/workflows/Test/badge.svg)](https://github.com/octokit/request.js/actions?query=workflow%3ATest+branch%3Amaster) - -`@octokit/request` is a request library for browsers & node that makes it easier -to interact with [GitHub’s REST API](https://developer.github.com/v3/) and -[GitHub’s GraphQL API](https://developer.github.com/v4/guides/forming-calls/#the-graphql-endpoint). - -It uses [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) to parse -the passed options and sends the request using [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) -([node-fetch](https://github.com/bitinn/node-fetch) in Node). - - - - - -- [Features](#features) -- [Usage](#usage) - - [REST API example](#rest-api-example) - - [GraphQL example](#graphql-example) - - [Alternative: pass `method` & `url` as part of options](#alternative-pass-method--url-as-part-of-options) -- [Authentication](#authentication) -- [request()](#request) -- [`request.defaults()`](#requestdefaults) -- [`request.endpoint`](#requestendpoint) -- [Special cases](#special-cases) - - [The `data` parameter – set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly) - - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body) -- [LICENSE](#license) - - - -## Features - -🤩 1:1 mapping of REST API endpoint documentation, e.g. [Add labels to an issue](https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue) becomes - -```js -request("POST /repos/{owner}/{repo}/issues/{number}/labels", { - mediaType: { - previews: ["symmetra"], - }, - owner: "octokit", - repo: "request.js", - number: 1, - labels: ["🐛 bug"], -}); -``` - -👶 [Small bundle size](https://bundlephobia.com/result?p=@octokit/request@5.0.3) (\<4kb minified + gzipped) - -😎 [Authenticate](#authentication) with any of [GitHubs Authentication Strategies](https://github.com/octokit/auth.js). - -👍 Sensible defaults - -- `baseUrl`: `https://api.github.com` -- `headers.accept`: `application/vnd.github.v3+json` -- `headers.agent`: `octokit-request.js/ `, e.g. `octokit-request.js/1.2.3 Node.js/10.15.0 (macOS Mojave; x64)` - -👌 Simple to test: mock requests by passing a custom fetch method. - -🧐 Simple to debug: Sets `error.request` to request options causing the error (with redacted credentials). - -## Usage - - - - - - -
-Browsers - -Load @octokit/request directly from cdn.skypack.dev - -```html - -``` - -
-Node - - -Install with npm install @octokit/request - -```js -const { request } = require("@octokit/request"); -// or: import { request } from "@octokit/request"; -``` - -
- -### REST API example - -```js -// Following GitHub docs formatting: -// https://developer.github.com/v3/repos/#list-organization-repositories -const result = await request("GET /orgs/{org}/repos", { - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, - org: "octokit", - type: "private", -}); - -console.log(`${result.data.length} repos found.`); -``` - -### GraphQL example - -For GraphQL request we recommend using [`@octokit/graphql`](https://github.com/octokit/graphql.js#readme) - -```js -const result = await request("POST /graphql", { - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, - query: `query ($login: String!) { - organization(login: $login) { - repositories(privacy: PRIVATE) { - totalCount - } - } - }`, - variables: { - login: "octokit", - }, -}); -``` - -### Alternative: pass `method` & `url` as part of options - -Alternatively, pass in a method and a url - -```js -const result = await request({ - method: "GET", - url: "/orgs/{org}/repos", - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, - org: "octokit", - type: "private", -}); -``` - -## Authentication - -The simplest way to authenticate a request is to set the `Authorization` header directly, e.g. to a [personal access token](https://github.com/settings/tokens/). - -```js -const requestWithAuth = request.defaults({ - headers: { - authorization: "token 0000000000000000000000000000000000000001", - }, -}); -const result = await requestWithAuth("GET /user"); -``` - -For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js). - -```js -const { createAppAuth } = require("@octokit/auth-app"); -const auth = createAppAuth({ - appId: process.env.APP_ID, - privateKey: process.env.PRIVATE_KEY, - installationId: 123, -}); -const requestWithAuth = request.defaults({ - request: { - hook: auth.hook, - }, - mediaType: { - previews: ["machine-man"], - }, -}); - -const { data: app } = await requestWithAuth("GET /app"); -const { data: app } = await requestWithAuth( - "POST /repos/{owner}/{repo}/issues", - { - owner: "octocat", - repo: "hello-world", - title: "Hello from the engine room", - } -); -``` - -## request() - -`request(route, options)` or `request(options)`. - -**Options** - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- name - - type - - description -
- route - - String - - If route is set it has to be a string consisting of the request method and URL, e.g. GET /orgs/{org} -
- options.baseUrl - - String - - Required. Any supported http verb, case insensitive. Defaults to https://api.github.com. -
- options.headers - - Object - - Custom headers. Passed headers are merged with defaults:
- headers['user-agent'] defaults to octokit-rest.js/1.2.3 (where 1.2.3 is the released version).
- headers['accept'] defaults to application/vnd.github.v3+json.
Use options.mediaType.{format,previews} to request API previews and custom media types. -
- options.mediaType.format - - String - - Media type param, such as `raw`, `html`, or `full`. See Media Types. -
- options.mediaType.previews - - Array of strings - - Name of previews, such as `mercy`, `symmetra`, or `scarlet-witch`. See API Previews. -
- options.method - - String - - Required. Any supported http verb, case insensitive. Defaults to Get. -
- options.url - - String - - Required. A path or full URL which may contain :variable or {variable} placeholders, - e.g. /orgs/{org}/repos. The url is parsed using url-template. -
- options.data - - Any - - Set request body directly instead of setting it to JSON based on additional parameters. See "The `data` parameter" below. -
- options.request.agent - - http(s).Agent instance - - Node only. Useful for custom proxy, certificate, or dns lookup. -
- options.request.fetch - - Function - - Custom replacement for built-in fetch method. Useful for testing or request hooks. -
- options.request.hook - - Function - - Function with the signature hook(request, endpointOptions), where endpointOptions are the parsed options as returned by endpoint.merge(), and request is request(). This option works great in conjuction with before-after-hook. -
- options.request.signal - - new AbortController().signal - - Use an AbortController instance to cancel a request. In node you can only cancel streamed requests. -
- options.request.timeout - - Number - - Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). options.request.signal is recommended instead. -
- -All other options except `options.request.*` will be passed depending on the `method` and `url` options. - -1. If the option key is a placeholder in the `url`, it will be used as replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos` -2. If the `method` is `GET` or `HEAD`, the option is passed as query parameter -3. Otherwise the parameter is passed in the request body as JSON key. - -**Result** - -`request` returns a promise and resolves with 4 keys - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- key - - type - - description -
statusIntegerResponse status status
urlStringURL of response. If a request results in redirects, this is the final URL. You can send a HEAD request to retrieve it without loading the full response body.
headersObjectAll response headers
dataAnyThe response body as returned from server. If the response is JSON then it will be parsed into an object
- -If an error occurs, the `error` instance has additional properties to help with debugging - -- `error.status` The http response status code -- `error.headers` The http response headers as an object -- `error.request` The request options such as `method`, `url` and `data` - -## `request.defaults()` - -Override or set default options. Example: - -```js -const myrequest = require("@octokit/request").defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - authorization: `token 0000000000000000000000000000000000000001`, - }, - org: "my-project", - per_page: 100, -}); - -myrequest(`GET /orgs/{org}/repos`); -``` - -You can call `.defaults()` again on the returned method, the defaults will cascade. - -```js -const myProjectRequest = request.defaults({ - baseUrl: "https://github-enterprise.acme-inc.com/api/v3", - headers: { - "user-agent": "myApp/1.2.3", - }, - org: "my-project", -}); -const myProjectRequestWithAuth = myProjectRequest.defaults({ - headers: { - authorization: `token 0000000000000000000000000000000000000001`, - }, -}); -``` - -`myProjectRequest` now defaults the `baseUrl`, `headers['user-agent']`, -`org` and `headers['authorization']` on top of `headers['accept']` that is set -by the global default. - -## `request.endpoint` - -See https://github.com/octokit/endpoint.js. Example - -```js -const options = request.endpoint("GET /orgs/{org}/repos", { - org: "my-project", - type: "private", -}); - -// { -// method: 'GET', -// url: 'https://api.github.com/orgs/my-project/repos?type=private', -// headers: { -// accept: 'application/vnd.github.v3+json', -// authorization: 'token 0000000000000000000000000000000000000001', -// 'user-agent': 'octokit/endpoint.js v1.2.3' -// } -// } -``` - -All of the [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) API can be used: - -- [`octokitRequest.endpoint()`](#endpoint) -- [`octokitRequest.endpoint.defaults()`](#endpointdefaults) -- [`octokitRequest.endpoint.merge()`](#endpointdefaults) -- [`octokitRequest.endpoint.parse()`](#endpointmerge) - -## Special cases - - - -### The `data` parameter – set request body directly - -Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead the request body needs to be set directly. In these cases, set the `data` parameter. - -```js -const response = await request("POST /markdown/raw", { - data: "Hello world github/linguist#1 **cool**, and #1!", - headers: { - accept: "text/html;charset=utf-8", - "content-type": "text/plain", - }, -}); - -// Request is sent as -// -// { -// method: 'post', -// url: 'https://api.github.com/markdown/raw', -// headers: { -// accept: 'text/html;charset=utf-8', -// 'content-type': 'text/plain', -// 'user-agent': userAgent -// }, -// body: 'Hello world github/linguist#1 **cool**, and #1!' -// } -// -// not as -// -// { -// ... -// body: '{"data": "Hello world github/linguist#1 **cool**, and #1!"}' -// } -``` - -### Set parameters for both the URL/query and the request body - -There are API endpoints that accept both query parameters as well as a body. In that case you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570). - -Example - -```js -request( - "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}", - { - name: "example.zip", - label: "short description", - headers: { - "content-type": "text/plain", - "content-length": 14, - authorization: `token 0000000000000000000000000000000000000001`, - }, - data: "Hello, world!", - } -); -``` - -## LICENSE - -[MIT](LICENSE) diff --git a/node_modules/@octokit/request/dist-node/index.js b/node_modules/@octokit/request/dist-node/index.js deleted file mode 100644 index 808deb661..000000000 --- a/node_modules/@octokit/request/dist-node/index.js +++ /dev/null @@ -1,148 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var endpoint = require('@octokit/endpoint'); -var universalUserAgent = require('universal-user-agent'); -var isPlainObject = require('is-plain-object'); -var nodeFetch = _interopDefault(require('node-fetch')); -var requestError = require('@octokit/request-error'); - -const VERSION = "5.4.12"; - -function getBufferResponse(response) { - return response.arrayBuffer(); -} - -function fetchWrapper(requestOptions) { - if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - - let headers = {}; - let status; - let url; - const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch; - return fetch(requestOptions.url, Object.assign({ - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - redirect: requestOptions.redirect - }, requestOptions.request)).then(response => { - url = response.url; - status = response.status; - - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - - if (status === 204 || status === 205) { - return; - } // GitHub API returns 200 for HEAD requests - - - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } - - throw new requestError.RequestError(response.statusText, status, { - headers, - request: requestOptions - }); - } - - if (status === 304) { - throw new requestError.RequestError("Not modified", status, { - headers, - request: requestOptions - }); - } - - if (status >= 400) { - return response.text().then(message => { - const error = new requestError.RequestError(message, status, { - headers, - request: requestOptions - }); - - try { - let responseBody = JSON.parse(error.message); - Object.assign(error, responseBody); - let errors = responseBody.errors; // Assumption `errors` would always be in Array format - - error.message = error.message + ": " + errors.map(JSON.stringify).join(", "); - } catch (e) {// ignore, see octokit/rest.js#684 - } - - throw error; - }); - } - - const contentType = response.headers.get("content-type"); - - if (/application\/json/.test(contentType)) { - return response.json(); - } - - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } - - return getBufferResponse(response); - }).then(data => { - return { - status, - url, - headers, - data - }; - }).catch(error => { - if (error instanceof requestError.RequestError) { - throw error; - } - - throw new requestError.RequestError(error.message, 500, { - headers, - request: requestOptions - }); - }); -} - -function withDefaults(oldEndpoint, newDefaults) { - const endpoint = oldEndpoint.defaults(newDefaults); - - const newApi = function (route, parameters) { - const endpointOptions = endpoint.merge(route, parameters); - - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint.parse(endpointOptions)); - } - - const request = (route, parameters) => { - return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); - }; - - Object.assign(request, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); - return endpointOptions.request.hook(request, endpointOptions); - }; - - return Object.assign(newApi, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); -} - -const request = withDefaults(endpoint.endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` - } -}); - -exports.request = request; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/request/dist-node/index.js.map b/node_modules/@octokit/request/dist-node/index.js.map deleted file mode 100644 index cfa7cc056..000000000 --- a/node_modules/@octokit/request/dist-node/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/get-buffer-response.js","../dist-src/fetch-wrapper.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"5.4.12\";\n","export default function getBufferResponse(response) {\n return response.arrayBuffer();\n}\n","import { isPlainObject } from \"is-plain-object\";\nimport nodeFetch from \"node-fetch\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nexport default function fetchWrapper(requestOptions) {\n if (isPlainObject(requestOptions.body) ||\n Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;\n return fetch(requestOptions.url, Object.assign({\n method: requestOptions.method,\n body: requestOptions.body,\n headers: requestOptions.headers,\n redirect: requestOptions.redirect,\n }, requestOptions.request))\n .then((response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (status === 204 || status === 205) {\n return;\n }\n // GitHub API returns 200 for HEAD requests\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new RequestError(response.statusText, status, {\n headers,\n request: requestOptions,\n });\n }\n if (status === 304) {\n throw new RequestError(\"Not modified\", status, {\n headers,\n request: requestOptions,\n });\n }\n if (status >= 400) {\n return response\n .text()\n .then((message) => {\n const error = new RequestError(message, status, {\n headers,\n request: requestOptions,\n });\n try {\n let responseBody = JSON.parse(error.message);\n Object.assign(error, responseBody);\n let errors = responseBody.errors;\n // Assumption `errors` would always be in Array format\n error.message =\n error.message + \": \" + errors.map(JSON.stringify).join(\", \");\n }\n catch (e) {\n // ignore, see octokit/rest.js#684\n }\n throw error;\n });\n }\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json();\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBuffer(response);\n })\n .then((data) => {\n return {\n status,\n url,\n headers,\n data,\n };\n })\n .catch((error) => {\n if (error instanceof RequestError) {\n throw error;\n }\n throw new RequestError(error.message, 500, {\n headers,\n request: requestOptions,\n });\n });\n}\n","import fetchWrapper from \"./fetch-wrapper\";\nexport default function withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n const newApi = function (route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n const request = (route, parameters) => {\n return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n };\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n}\n","import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nexport const request = withDefaults(endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`,\n },\n});\n"],"names":["VERSION","getBufferResponse","response","arrayBuffer","fetchWrapper","requestOptions","isPlainObject","body","Array","isArray","JSON","stringify","headers","status","url","fetch","request","nodeFetch","Object","assign","method","redirect","then","keyAndValue","RequestError","statusText","text","message","error","responseBody","parse","errors","map","join","e","contentType","get","test","json","getBuffer","data","catch","withDefaults","oldEndpoint","newDefaults","endpoint","defaults","newApi","route","parameters","endpointOptions","merge","hook","bind","getUserAgent"],"mappings":";;;;;;;;;;;;AAAO,MAAMA,OAAO,GAAG,mBAAhB;;ACAQ,SAASC,iBAAT,CAA2BC,QAA3B,EAAqC;AAChD,SAAOA,QAAQ,CAACC,WAAT,EAAP;AACH;;ACEc,SAASC,YAAT,CAAsBC,cAAtB,EAAsC;AACjD,MAAIC,2BAAa,CAACD,cAAc,CAACE,IAAhB,CAAb,IACAC,KAAK,CAACC,OAAN,CAAcJ,cAAc,CAACE,IAA7B,CADJ,EACwC;AACpCF,IAAAA,cAAc,CAACE,IAAf,GAAsBG,IAAI,CAACC,SAAL,CAAeN,cAAc,CAACE,IAA9B,CAAtB;AACH;;AACD,MAAIK,OAAO,GAAG,EAAd;AACA,MAAIC,MAAJ;AACA,MAAIC,GAAJ;AACA,QAAMC,KAAK,GAAIV,cAAc,CAACW,OAAf,IAA0BX,cAAc,CAACW,OAAf,CAAuBD,KAAlD,IAA4DE,SAA1E;AACA,SAAOF,KAAK,CAACV,cAAc,CAACS,GAAhB,EAAqBI,MAAM,CAACC,MAAP,CAAc;AAC3CC,IAAAA,MAAM,EAAEf,cAAc,CAACe,MADoB;AAE3Cb,IAAAA,IAAI,EAAEF,cAAc,CAACE,IAFsB;AAG3CK,IAAAA,OAAO,EAAEP,cAAc,CAACO,OAHmB;AAI3CS,IAAAA,QAAQ,EAAEhB,cAAc,CAACgB;AAJkB,GAAd,EAK9BhB,cAAc,CAACW,OALe,CAArB,CAAL,CAMFM,IANE,CAMIpB,QAAD,IAAc;AACpBY,IAAAA,GAAG,GAAGZ,QAAQ,CAACY,GAAf;AACAD,IAAAA,MAAM,GAAGX,QAAQ,CAACW,MAAlB;;AACA,SAAK,MAAMU,WAAX,IAA0BrB,QAAQ,CAACU,OAAnC,EAA4C;AACxCA,MAAAA,OAAO,CAACW,WAAW,CAAC,CAAD,CAAZ,CAAP,GAA0BA,WAAW,CAAC,CAAD,CAArC;AACH;;AACD,QAAIV,MAAM,KAAK,GAAX,IAAkBA,MAAM,KAAK,GAAjC,EAAsC;AAClC;AACH,KARmB;;;AAUpB,QAAIR,cAAc,CAACe,MAAf,KAA0B,MAA9B,EAAsC;AAClC,UAAIP,MAAM,GAAG,GAAb,EAAkB;AACd;AACH;;AACD,YAAM,IAAIW,yBAAJ,CAAiBtB,QAAQ,CAACuB,UAA1B,EAAsCZ,MAAtC,EAA8C;AAChDD,QAAAA,OADgD;AAEhDI,QAAAA,OAAO,EAAEX;AAFuC,OAA9C,CAAN;AAIH;;AACD,QAAIQ,MAAM,KAAK,GAAf,EAAoB;AAChB,YAAM,IAAIW,yBAAJ,CAAiB,cAAjB,EAAiCX,MAAjC,EAAyC;AAC3CD,QAAAA,OAD2C;AAE3CI,QAAAA,OAAO,EAAEX;AAFkC,OAAzC,CAAN;AAIH;;AACD,QAAIQ,MAAM,IAAI,GAAd,EAAmB;AACf,aAAOX,QAAQ,CACVwB,IADE,GAEFJ,IAFE,CAEIK,OAAD,IAAa;AACnB,cAAMC,KAAK,GAAG,IAAIJ,yBAAJ,CAAiBG,OAAjB,EAA0Bd,MAA1B,EAAkC;AAC5CD,UAAAA,OAD4C;AAE5CI,UAAAA,OAAO,EAAEX;AAFmC,SAAlC,CAAd;;AAIA,YAAI;AACA,cAAIwB,YAAY,GAAGnB,IAAI,CAACoB,KAAL,CAAWF,KAAK,CAACD,OAAjB,CAAnB;AACAT,UAAAA,MAAM,CAACC,MAAP,CAAcS,KAAd,EAAqBC,YAArB;AACA,cAAIE,MAAM,GAAGF,YAAY,CAACE,MAA1B,CAHA;;AAKAH,UAAAA,KAAK,CAACD,OAAN,GACIC,KAAK,CAACD,OAAN,GAAgB,IAAhB,GAAuBI,MAAM,CAACC,GAAP,CAAWtB,IAAI,CAACC,SAAhB,EAA2BsB,IAA3B,CAAgC,IAAhC,CAD3B;AAEH,SAPD,CAQA,OAAOC,CAAP,EAAU;AAET;;AACD,cAAMN,KAAN;AACH,OAnBM,CAAP;AAoBH;;AACD,UAAMO,WAAW,GAAGjC,QAAQ,CAACU,OAAT,CAAiBwB,GAAjB,CAAqB,cAArB,CAApB;;AACA,QAAI,oBAAoBC,IAApB,CAAyBF,WAAzB,CAAJ,EAA2C;AACvC,aAAOjC,QAAQ,CAACoC,IAAT,EAAP;AACH;;AACD,QAAI,CAACH,WAAD,IAAgB,yBAAyBE,IAAzB,CAA8BF,WAA9B,CAApB,EAAgE;AAC5D,aAAOjC,QAAQ,CAACwB,IAAT,EAAP;AACH;;AACD,WAAOa,iBAAS,CAACrC,QAAD,CAAhB;AACH,GA7DM,EA8DFoB,IA9DE,CA8DIkB,IAAD,IAAU;AAChB,WAAO;AACH3B,MAAAA,MADG;AAEHC,MAAAA,GAFG;AAGHF,MAAAA,OAHG;AAIH4B,MAAAA;AAJG,KAAP;AAMH,GArEM,EAsEFC,KAtEE,CAsEKb,KAAD,IAAW;AAClB,QAAIA,KAAK,YAAYJ,yBAArB,EAAmC;AAC/B,YAAMI,KAAN;AACH;;AACD,UAAM,IAAIJ,yBAAJ,CAAiBI,KAAK,CAACD,OAAvB,EAAgC,GAAhC,EAAqC;AACvCf,MAAAA,OADuC;AAEvCI,MAAAA,OAAO,EAAEX;AAF8B,KAArC,CAAN;AAIH,GA9EM,CAAP;AA+EH;;AC3Fc,SAASqC,YAAT,CAAsBC,WAAtB,EAAmCC,WAAnC,EAAgD;AAC3D,QAAMC,QAAQ,GAAGF,WAAW,CAACG,QAAZ,CAAqBF,WAArB,CAAjB;;AACA,QAAMG,MAAM,GAAG,UAAUC,KAAV,EAAiBC,UAAjB,EAA6B;AACxC,UAAMC,eAAe,GAAGL,QAAQ,CAACM,KAAT,CAAeH,KAAf,EAAsBC,UAAtB,CAAxB;;AACA,QAAI,CAACC,eAAe,CAAClC,OAAjB,IAA4B,CAACkC,eAAe,CAAClC,OAAhB,CAAwBoC,IAAzD,EAA+D;AAC3D,aAAOhD,YAAY,CAACyC,QAAQ,CAACf,KAAT,CAAeoB,eAAf,CAAD,CAAnB;AACH;;AACD,UAAMlC,OAAO,GAAG,CAACgC,KAAD,EAAQC,UAAR,KAAuB;AACnC,aAAO7C,YAAY,CAACyC,QAAQ,CAACf,KAAT,CAAee,QAAQ,CAACM,KAAT,CAAeH,KAAf,EAAsBC,UAAtB,CAAf,CAAD,CAAnB;AACH,KAFD;;AAGA/B,IAAAA,MAAM,CAACC,MAAP,CAAcH,OAAd,EAAuB;AACnB6B,MAAAA,QADmB;AAEnBC,MAAAA,QAAQ,EAAEJ,YAAY,CAACW,IAAb,CAAkB,IAAlB,EAAwBR,QAAxB;AAFS,KAAvB;AAIA,WAAOK,eAAe,CAAClC,OAAhB,CAAwBoC,IAAxB,CAA6BpC,OAA7B,EAAsCkC,eAAtC,CAAP;AACH,GAbD;;AAcA,SAAOhC,MAAM,CAACC,MAAP,CAAc4B,MAAd,EAAsB;AACzBF,IAAAA,QADyB;AAEzBC,IAAAA,QAAQ,EAAEJ,YAAY,CAACW,IAAb,CAAkB,IAAlB,EAAwBR,QAAxB;AAFe,GAAtB,CAAP;AAIH;;MCjBY7B,OAAO,GAAG0B,YAAY,CAACG,iBAAD,EAAW;AAC1CjC,EAAAA,OAAO,EAAE;AACL,kBAAe,sBAAqBZ,OAAQ,IAAGsD,+BAAY,EAAG;AADzD;AADiC,CAAX,CAA5B;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/request/dist-src/fetch-wrapper.js b/node_modules/@octokit/request/dist-src/fetch-wrapper.js deleted file mode 100644 index e4ae1b0b4..000000000 --- a/node_modules/@octokit/request/dist-src/fetch-wrapper.js +++ /dev/null @@ -1,93 +0,0 @@ -import { isPlainObject } from "is-plain-object"; -import nodeFetch from "node-fetch"; -import { RequestError } from "@octokit/request-error"; -import getBuffer from "./get-buffer-response"; -export default function fetchWrapper(requestOptions) { - if (isPlainObject(requestOptions.body) || - Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - let headers = {}; - let status; - let url; - const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch; - return fetch(requestOptions.url, Object.assign({ - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - redirect: requestOptions.redirect, - }, requestOptions.request)) - .then((response) => { - url = response.url; - status = response.status; - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - if (status === 204 || status === 205) { - return; - } - // GitHub API returns 200 for HEAD requests - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } - throw new RequestError(response.statusText, status, { - headers, - request: requestOptions, - }); - } - if (status === 304) { - throw new RequestError("Not modified", status, { - headers, - request: requestOptions, - }); - } - if (status >= 400) { - return response - .text() - .then((message) => { - const error = new RequestError(message, status, { - headers, - request: requestOptions, - }); - try { - let responseBody = JSON.parse(error.message); - Object.assign(error, responseBody); - let errors = responseBody.errors; - // Assumption `errors` would always be in Array format - error.message = - error.message + ": " + errors.map(JSON.stringify).join(", "); - } - catch (e) { - // ignore, see octokit/rest.js#684 - } - throw error; - }); - } - const contentType = response.headers.get("content-type"); - if (/application\/json/.test(contentType)) { - return response.json(); - } - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } - return getBuffer(response); - }) - .then((data) => { - return { - status, - url, - headers, - data, - }; - }) - .catch((error) => { - if (error instanceof RequestError) { - throw error; - } - throw new RequestError(error.message, 500, { - headers, - request: requestOptions, - }); - }); -} diff --git a/node_modules/@octokit/request/dist-src/get-buffer-response.js b/node_modules/@octokit/request/dist-src/get-buffer-response.js deleted file mode 100644 index 845a3947b..000000000 --- a/node_modules/@octokit/request/dist-src/get-buffer-response.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function getBufferResponse(response) { - return response.arrayBuffer(); -} diff --git a/node_modules/@octokit/request/dist-src/index.js b/node_modules/@octokit/request/dist-src/index.js deleted file mode 100644 index 2460e992c..000000000 --- a/node_modules/@octokit/request/dist-src/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import { endpoint } from "@octokit/endpoint"; -import { getUserAgent } from "universal-user-agent"; -import { VERSION } from "./version"; -import withDefaults from "./with-defaults"; -export const request = withDefaults(endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`, - }, -}); diff --git a/node_modules/@octokit/request/dist-src/version.js b/node_modules/@octokit/request/dist-src/version.js deleted file mode 100644 index 7644e7735..000000000 --- a/node_modules/@octokit/request/dist-src/version.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "5.4.12"; diff --git a/node_modules/@octokit/request/dist-src/with-defaults.js b/node_modules/@octokit/request/dist-src/with-defaults.js deleted file mode 100644 index e20642945..000000000 --- a/node_modules/@octokit/request/dist-src/with-defaults.js +++ /dev/null @@ -1,22 +0,0 @@ -import fetchWrapper from "./fetch-wrapper"; -export default function withDefaults(oldEndpoint, newDefaults) { - const endpoint = oldEndpoint.defaults(newDefaults); - const newApi = function (route, parameters) { - const endpointOptions = endpoint.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint.parse(endpointOptions)); - } - const request = (route, parameters) => { - return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); - }; - Object.assign(request, { - endpoint, - defaults: withDefaults.bind(null, endpoint), - }); - return endpointOptions.request.hook(request, endpointOptions); - }; - return Object.assign(newApi, { - endpoint, - defaults: withDefaults.bind(null, endpoint), - }); -} diff --git a/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts b/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts deleted file mode 100644 index 4901c79e7..000000000 --- a/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { EndpointInterface } from "@octokit/types"; -export default function fetchWrapper(requestOptions: ReturnType & { - redirect?: "error" | "follow" | "manual"; -}): Promise<{ - status: number; - url: string; - headers: { - [header: string]: string; - }; - data: any; -}>; diff --git a/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts b/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts deleted file mode 100644 index 915b70577..000000000 --- a/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Response } from "node-fetch"; -export default function getBufferResponse(response: Response): Promise; diff --git a/node_modules/@octokit/request/dist-types/index.d.ts b/node_modules/@octokit/request/dist-types/index.d.ts deleted file mode 100644 index 1030809f9..000000000 --- a/node_modules/@octokit/request/dist-types/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const request: import("@octokit/types").RequestInterface; diff --git a/node_modules/@octokit/request/dist-types/version.d.ts b/node_modules/@octokit/request/dist-types/version.d.ts deleted file mode 100644 index 0e4434ff6..000000000 --- a/node_modules/@octokit/request/dist-types/version.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "5.4.12"; diff --git a/node_modules/@octokit/request/dist-types/with-defaults.d.ts b/node_modules/@octokit/request/dist-types/with-defaults.d.ts deleted file mode 100644 index 00804693a..000000000 --- a/node_modules/@octokit/request/dist-types/with-defaults.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { EndpointInterface, RequestInterface, RequestParameters } from "@octokit/types"; -export default function withDefaults(oldEndpoint: EndpointInterface, newDefaults: RequestParameters): RequestInterface; diff --git a/node_modules/@octokit/request/dist-web/index.js b/node_modules/@octokit/request/dist-web/index.js deleted file mode 100644 index 46c862516..000000000 --- a/node_modules/@octokit/request/dist-web/index.js +++ /dev/null @@ -1,132 +0,0 @@ -import { endpoint } from '@octokit/endpoint'; -import { getUserAgent } from 'universal-user-agent'; -import { isPlainObject } from 'is-plain-object'; -import nodeFetch from 'node-fetch'; -import { RequestError } from '@octokit/request-error'; - -const VERSION = "5.4.12"; - -function getBufferResponse(response) { - return response.arrayBuffer(); -} - -function fetchWrapper(requestOptions) { - if (isPlainObject(requestOptions.body) || - Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - let headers = {}; - let status; - let url; - const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch; - return fetch(requestOptions.url, Object.assign({ - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - redirect: requestOptions.redirect, - }, requestOptions.request)) - .then((response) => { - url = response.url; - status = response.status; - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - if (status === 204 || status === 205) { - return; - } - // GitHub API returns 200 for HEAD requests - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } - throw new RequestError(response.statusText, status, { - headers, - request: requestOptions, - }); - } - if (status === 304) { - throw new RequestError("Not modified", status, { - headers, - request: requestOptions, - }); - } - if (status >= 400) { - return response - .text() - .then((message) => { - const error = new RequestError(message, status, { - headers, - request: requestOptions, - }); - try { - let responseBody = JSON.parse(error.message); - Object.assign(error, responseBody); - let errors = responseBody.errors; - // Assumption `errors` would always be in Array format - error.message = - error.message + ": " + errors.map(JSON.stringify).join(", "); - } - catch (e) { - // ignore, see octokit/rest.js#684 - } - throw error; - }); - } - const contentType = response.headers.get("content-type"); - if (/application\/json/.test(contentType)) { - return response.json(); - } - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } - return getBufferResponse(response); - }) - .then((data) => { - return { - status, - url, - headers, - data, - }; - }) - .catch((error) => { - if (error instanceof RequestError) { - throw error; - } - throw new RequestError(error.message, 500, { - headers, - request: requestOptions, - }); - }); -} - -function withDefaults(oldEndpoint, newDefaults) { - const endpoint = oldEndpoint.defaults(newDefaults); - const newApi = function (route, parameters) { - const endpointOptions = endpoint.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint.parse(endpointOptions)); - } - const request = (route, parameters) => { - return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); - }; - Object.assign(request, { - endpoint, - defaults: withDefaults.bind(null, endpoint), - }); - return endpointOptions.request.hook(request, endpointOptions); - }; - return Object.assign(newApi, { - endpoint, - defaults: withDefaults.bind(null, endpoint), - }); -} - -const request = withDefaults(endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`, - }, -}); - -export { request }; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/request/dist-web/index.js.map b/node_modules/@octokit/request/dist-web/index.js.map deleted file mode 100644 index 0bddd0d14..000000000 --- a/node_modules/@octokit/request/dist-web/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/get-buffer-response.js","../dist-src/fetch-wrapper.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"5.4.12\";\n","export default function getBufferResponse(response) {\n return response.arrayBuffer();\n}\n","import { isPlainObject } from \"is-plain-object\";\nimport nodeFetch from \"node-fetch\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nexport default function fetchWrapper(requestOptions) {\n if (isPlainObject(requestOptions.body) ||\n Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;\n return fetch(requestOptions.url, Object.assign({\n method: requestOptions.method,\n body: requestOptions.body,\n headers: requestOptions.headers,\n redirect: requestOptions.redirect,\n }, requestOptions.request))\n .then((response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (status === 204 || status === 205) {\n return;\n }\n // GitHub API returns 200 for HEAD requests\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new RequestError(response.statusText, status, {\n headers,\n request: requestOptions,\n });\n }\n if (status === 304) {\n throw new RequestError(\"Not modified\", status, {\n headers,\n request: requestOptions,\n });\n }\n if (status >= 400) {\n return response\n .text()\n .then((message) => {\n const error = new RequestError(message, status, {\n headers,\n request: requestOptions,\n });\n try {\n let responseBody = JSON.parse(error.message);\n Object.assign(error, responseBody);\n let errors = responseBody.errors;\n // Assumption `errors` would always be in Array format\n error.message =\n error.message + \": \" + errors.map(JSON.stringify).join(\", \");\n }\n catch (e) {\n // ignore, see octokit/rest.js#684\n }\n throw error;\n });\n }\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json();\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBuffer(response);\n })\n .then((data) => {\n return {\n status,\n url,\n headers,\n data,\n };\n })\n .catch((error) => {\n if (error instanceof RequestError) {\n throw error;\n }\n throw new RequestError(error.message, 500, {\n headers,\n request: requestOptions,\n });\n });\n}\n","import fetchWrapper from \"./fetch-wrapper\";\nexport default function withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n const newApi = function (route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n const request = (route, parameters) => {\n return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n };\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n}\n","import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nexport const request = withDefaults(endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`,\n },\n});\n"],"names":["getBuffer"],"mappings":";;;;;;AAAO,MAAM,OAAO,GAAG,mBAAmB;;ACA3B,SAAS,iBAAiB,CAAC,QAAQ,EAAE;AACpD,IAAI,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;;ACEc,SAAS,YAAY,CAAC,cAAc,EAAE;AACrD,IAAI,IAAI,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;AAC1C,QAAQ,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC5C,QAAQ,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;AACxF,IAAI,OAAO,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;AACnD,QAAQ,MAAM,EAAE,cAAc,CAAC,MAAM;AACrC,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI;AACjC,QAAQ,OAAO,EAAE,cAAc,CAAC,OAAO;AACvC,QAAQ,QAAQ,EAAE,cAAc,CAAC,QAAQ;AACzC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK;AAC5B,QAAQ,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC3B,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACjC,QAAQ,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE;AACpD,YAAY,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE;AAC9C,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM,EAAE;AAC9C,YAAY,IAAI,MAAM,GAAG,GAAG,EAAE;AAC9B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE;AAChE,gBAAgB,OAAO;AACvB,gBAAgB,OAAO,EAAE,cAAc;AACvC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE;AAC5B,YAAY,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE;AAC3D,gBAAgB,OAAO;AACvB,gBAAgB,OAAO,EAAE,cAAc;AACvC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE;AAC3B,YAAY,OAAO,QAAQ;AAC3B,iBAAiB,IAAI,EAAE;AACvB,iBAAiB,IAAI,CAAC,CAAC,OAAO,KAAK;AACnC,gBAAgB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE;AAChE,oBAAoB,OAAO;AAC3B,oBAAoB,OAAO,EAAE,cAAc;AAC3C,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,IAAI;AACpB,oBAAoB,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjE,oBAAoB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACvD,oBAAoB,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AACrD;AACA,oBAAoB,KAAK,CAAC,OAAO;AACjC,wBAAwB,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE;AAC1B;AACA,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,CAAC;AAC5B,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACjE,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACnD,YAAY,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,IAAI,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACxE,YAAY,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,SAAS;AACT,QAAQ,OAAOA,iBAAS,CAAC,QAAQ,CAAC,CAAC;AACnC,KAAK,CAAC;AACN,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK;AACxB,QAAQ,OAAO;AACf,YAAY,MAAM;AAClB,YAAY,GAAG;AACf,YAAY,OAAO;AACnB,YAAY,IAAI;AAChB,SAAS,CAAC;AACV,KAAK,CAAC;AACN,SAAS,KAAK,CAAC,CAAC,KAAK,KAAK;AAC1B,QAAQ,IAAI,KAAK,YAAY,YAAY,EAAE;AAC3C,YAAY,MAAM,KAAK,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE;AACnD,YAAY,OAAO;AACnB,YAAY,OAAO,EAAE,cAAc;AACnC,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC;;AC3Fc,SAAS,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE;AAC/D,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACvD,IAAI,MAAM,MAAM,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE;AAChD,QAAQ,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE;AACvE,YAAY,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AACjE,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK;AAC/C,YAAY,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACnF,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/B,YAAY,QAAQ;AACpB,YAAY,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACvD,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACtE,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AACjC,QAAQ,QAAQ;AAChB,QAAQ,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACnD,KAAK,CAAC,CAAC;AACP,CAAC;;ACjBW,MAAC,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE;AAC9C,IAAI,OAAO,EAAE;AACb,QAAQ,YAAY,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AACvE,KAAK;AACL,CAAC,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/request/node_modules/is-plain-object/LICENSE b/node_modules/@octokit/request/node_modules/is-plain-object/LICENSE deleted file mode 100644 index 3f2eca18f..000000000 --- a/node_modules/@octokit/request/node_modules/is-plain-object/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/@octokit/request/node_modules/is-plain-object/README.md b/node_modules/@octokit/request/node_modules/is-plain-object/README.md deleted file mode 100644 index 5c074ab06..000000000 --- a/node_modules/@octokit/request/node_modules/is-plain-object/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# is-plain-object [![NPM version](https://img.shields.io/npm/v/is-plain-object.svg?style=flat)](https://www.npmjs.com/package/is-plain-object) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![NPM total downloads](https://img.shields.io/npm/dt/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-plain-object.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-plain-object) - -> Returns true if an object was created by the `Object` constructor, or Object.create(null). - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-plain-object -``` - -Use [isobject](https://github.com/jonschlinkert/isobject) if you only want to check if the value is an object and not an array or null. - -## Usage - -with es modules -```js -import { isPlainObject } from 'is-plain-object'; -``` - -or with commonjs -```js -const { isPlainObject } = require('is-plain-object'); -``` - -**true** when created by the `Object` constructor, or Object.create(null). - -```js -isPlainObject(Object.create({})); -//=> true -isPlainObject(Object.create(Object.prototype)); -//=> true -isPlainObject({foo: 'bar'}); -//=> true -isPlainObject({}); -//=> true -isPlainObject(null); -//=> true -``` - -**false** when not created by the `Object` constructor. - -```js -isPlainObject(1); -//=> false -isPlainObject(['foo', 'bar']); -//=> false -isPlainObject([]); -//=> false -isPlainObject(new Foo); -//=> false -isPlainObject(Object.create(null)); -//=> false -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-number](https://www.npmjs.com/package/is-number): Returns true if a number or string value is a finite number. Useful for regex… [more](https://github.com/jonschlinkert/is-number) | [homepage](https://github.com/jonschlinkert/is-number "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") -* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 19 | [jonschlinkert](https://github.com/jonschlinkert) | -| 6 | [TrySound](https://github.com/TrySound) | -| 6 | [stevenvachon](https://github.com/stevenvachon) | -| 3 | [onokumus](https://github.com/onokumus) | -| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Author - -**Jon Schlinkert** - -* [GitHub Profile](https://github.com/jonschlinkert) -* [Twitter Profile](https://twitter.com/jonschlinkert) -* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) - -### License - -Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._ diff --git a/node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.js b/node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.js deleted file mode 100644 index d134e4f28..000000000 --- a/node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObject(o) { - return Object.prototype.toString.call(o) === '[object Object]'; -} - -function isPlainObject(o) { - var ctor,prot; - - if (isObject(o) === false) return false; - - // If has modified constructor - ctor = o.constructor; - if (ctor === undefined) return true; - - // If has modified prototype - prot = ctor.prototype; - if (isObject(prot) === false) return false; - - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - - // Most likely a plain Object - return true; -} - -exports.isPlainObject = isPlainObject; diff --git a/node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.mjs b/node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.mjs deleted file mode 100644 index c2d9f351f..000000000 --- a/node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.mjs +++ /dev/null @@ -1,34 +0,0 @@ -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObject(o) { - return Object.prototype.toString.call(o) === '[object Object]'; -} - -function isPlainObject(o) { - var ctor,prot; - - if (isObject(o) === false) return false; - - // If has modified constructor - ctor = o.constructor; - if (ctor === undefined) return true; - - // If has modified prototype - prot = ctor.prototype; - if (isObject(prot) === false) return false; - - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - - // Most likely a plain Object - return true; -} - -export { isPlainObject }; diff --git a/node_modules/@octokit/request/node_modules/is-plain-object/is-plain-object.d.ts b/node_modules/@octokit/request/node_modules/is-plain-object/is-plain-object.d.ts deleted file mode 100644 index a359940d5..000000000 --- a/node_modules/@octokit/request/node_modules/is-plain-object/is-plain-object.d.ts +++ /dev/null @@ -1 +0,0 @@ -export function isPlainObject(o: any): boolean; diff --git a/node_modules/@octokit/request/node_modules/is-plain-object/package.json b/node_modules/@octokit/request/node_modules/is-plain-object/package.json deleted file mode 100644 index 820c15d40..000000000 --- a/node_modules/@octokit/request/node_modules/is-plain-object/package.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_from": "is-plain-object@^5.0.0", - "_id": "is-plain-object@5.0.0", - "_inBundle": false, - "_integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "_location": "/@octokit/request/is-plain-object", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "is-plain-object@^5.0.0", - "name": "is-plain-object", - "escapedName": "is-plain-object", - "rawSpec": "^5.0.0", - "saveSpec": null, - "fetchSpec": "^5.0.0" - }, - "_requiredBy": [ - "/@octokit/request" - ], - "_resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "_shasum": "4427f50ab3429e9025ea7d52e9043a9ef4159344", - "_spec": "is-plain-object@^5.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\request", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-plain-object/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Osman Nuri Okumuş", - "url": "http://onokumus.com" - }, - { - "name": "Steven Vachon", - "url": "https://svachon.com" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - }, - { - "name": "Bogdan Chadkin", - "url": "https://github.com/TrySound" - } - ], - "deprecated": false, - "description": "Returns true if an object was created by the `Object` constructor, or Object.create(null).", - "devDependencies": { - "chai": "^4.2.0", - "esm": "^3.2.22", - "gulp-format-md": "^1.0.0", - "mocha": "^6.1.4", - "mocha-headless-chrome": "^3.1.0", - "rollup": "^2.22.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "exports": { - ".": { - "import": "./dist/is-plain-object.mjs", - "require": "./dist/is-plain-object.js" - }, - "./package.json": "./package.json" - }, - "files": [ - "is-plain-object.d.ts", - "dist" - ], - "homepage": "https://github.com/jonschlinkert/is-plain-object", - "keywords": [ - "check", - "is", - "is-object", - "isobject", - "javascript", - "kind", - "kind-of", - "object", - "plain", - "type", - "typeof", - "value" - ], - "license": "MIT", - "main": "dist/is-plain-object.js", - "module": "dist/is-plain-object.mjs", - "name": "is-plain-object", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-plain-object.git" - }, - "scripts": { - "build": "rollup -c", - "prepare": "rollup -c", - "test": "npm run test_node && npm run build && npm run test_browser", - "test_browser": "mocha-headless-chrome --args=disable-web-security -f test/browser.html", - "test_node": "mocha -r esm" - }, - "types": "is-plain-object.d.ts", - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-number", - "isobject", - "kind-of" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "5.0.0" -} diff --git a/node_modules/@octokit/request/package.json b/node_modules/@octokit/request/package.json deleted file mode 100644 index 2b213a999..000000000 --- a/node_modules/@octokit/request/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_from": "@octokit/request@^5.4.12", - "_id": "@octokit/request@5.4.12", - "_inBundle": false, - "_integrity": "sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg==", - "_location": "/@octokit/request", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/request@^5.4.12", - "name": "@octokit/request", - "escapedName": "@octokit%2frequest", - "scope": "@octokit", - "rawSpec": "^5.4.12", - "saveSpec": null, - "fetchSpec": "^5.4.12" - }, - "_requiredBy": [ - "/@octokit/core", - "/@octokit/graphql" - ], - "_resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.12.tgz", - "_shasum": "b04826fa934670c56b135a81447be2c1723a2ffc", - "_spec": "@octokit/request@^5.4.12", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\core", - "bugs": { - "url": "https://github.com/octokit/request.js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "once": "^1.4.0", - "universal-user-agent": "^6.0.0" - }, - "deprecated": false, - "description": "Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node", - "devDependencies": { - "@octokit/auth-app": "^2.1.2", - "@pika/pack": "^0.5.0", - "@pika/plugin-build-node": "^0.9.0", - "@pika/plugin-build-web": "^0.9.0", - "@pika/plugin-ts-standard-pkg": "^0.9.0", - "@types/fetch-mock": "^7.2.4", - "@types/jest": "^26.0.0", - "@types/lolex": "^5.1.0", - "@types/node": "^14.0.0", - "@types/node-fetch": "^2.3.3", - "@types/once": "^1.4.0", - "fetch-mock": "^9.3.1", - "jest": "^26.0.1", - "lolex": "^6.0.0", - "prettier": "^2.0.1", - "semantic-release": "^17.0.0", - "semantic-release-plugin-update-version-in-files": "^1.0.0", - "ts-jest": "^26.1.0", - "typescript": "^4.0.2" - }, - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/octokit/request.js#readme", - "keywords": [ - "octokit", - "github", - "api", - "request" - ], - "license": "MIT", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "@octokit/request", - "pika": true, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/request.js.git" - }, - "sideEffects": false, - "source": "dist-src/index.js", - "types": "dist-types/index.d.ts", - "version": "5.4.12" -} diff --git a/node_modules/@octokit/types/LICENSE b/node_modules/@octokit/types/LICENSE deleted file mode 100644 index 57bee5f18..000000000 --- a/node_modules/@octokit/types/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@octokit/types/README.md b/node_modules/@octokit/types/README.md deleted file mode 100644 index 3c34447c3..000000000 --- a/node_modules/@octokit/types/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# types.ts - -> Shared TypeScript definitions for Octokit projects - -[![@latest](https://img.shields.io/npm/v/@octokit/types.svg)](https://www.npmjs.com/package/@octokit/types) -[![Build Status](https://github.com/octokit/types.ts/workflows/Test/badge.svg)](https://github.com/octokit/types.ts/actions?workflow=Test) - - - -- [Usage](#usage) -- [Examples](#examples) - - [Get parameter and response data types for a REST API endpoint](#get-parameter-and-response-data-types-for-a-rest-api-endpoint) - - [Get response types from endpoint methods](#get-response-types-from-endpoint-methods) -- [Contributing](#contributing) -- [License](#license) - - - -## Usage - -See all exported types at https://octokit.github.io/types.ts - -## Examples - -### Get parameter and response data types for a REST API endpoint - -```ts -import { Endpoints } from "@octokit/types"; - -type listUserReposParameters = Endpoints["GET /repos/{owner}/{repo}"]["parameters"]; -type listUserReposResponse = Endpoints["GET /repos/{owner}/{repo}"]["response"]; - -async function listRepos( - options: listUserReposParameters -): listUserReposResponse["data"] { - // ... -} -``` - -### Get response types from endpoint methods - -```ts -import { - GetResponseTypeFromEndpointMethod, - GetResponseDataTypeFromEndpointMethod, -} from "@octokit/types"; -import { Octokit } from "@octokit/rest"; - -const octokit = new Octokit(); -type CreateLabelResponseType = GetResponseTypeFromEndpointMethod< - typeof octokit.issues.createLabel ->; -type CreateLabelResponseDataType = GetResponseDataTypeFromEndpointMethod< - typeof octokit.issues.createLabel ->; -``` - -## Contributing - -See [CONTRIBUTING.md](CONTRIBUTING.md) - -## License - -[MIT](LICENSE) diff --git a/node_modules/@octokit/types/dist-node/index.js b/node_modules/@octokit/types/dist-node/index.js deleted file mode 100644 index 974ab9bf9..000000000 --- a/node_modules/@octokit/types/dist-node/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -const VERSION = "6.1.2"; - -exports.VERSION = VERSION; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/types/dist-node/index.js.map b/node_modules/@octokit/types/dist-node/index.js.map deleted file mode 100644 index 2d148d3b9..000000000 --- a/node_modules/@octokit/types/dist-node/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/VERSION.js"],"sourcesContent":["export const VERSION = \"0.0.0-development\";\n"],"names":["VERSION"],"mappings":";;;;MAAaA,OAAO,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/types/dist-src/AuthInterface.js b/node_modules/@octokit/types/dist-src/AuthInterface.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/AuthInterface.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/EndpointDefaults.js b/node_modules/@octokit/types/dist-src/EndpointDefaults.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/EndpointDefaults.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/EndpointInterface.js b/node_modules/@octokit/types/dist-src/EndpointInterface.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/EndpointInterface.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/EndpointOptions.js b/node_modules/@octokit/types/dist-src/EndpointOptions.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/EndpointOptions.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/Fetch.js b/node_modules/@octokit/types/dist-src/Fetch.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/Fetch.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/GetResponseTypeFromEndpointMethod.js b/node_modules/@octokit/types/dist-src/GetResponseTypeFromEndpointMethod.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/GetResponseTypeFromEndpointMethod.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/OctokitResponse.js b/node_modules/@octokit/types/dist-src/OctokitResponse.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/OctokitResponse.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestError.js b/node_modules/@octokit/types/dist-src/RequestError.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/RequestError.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestHeaders.js b/node_modules/@octokit/types/dist-src/RequestHeaders.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/RequestHeaders.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestInterface.js b/node_modules/@octokit/types/dist-src/RequestInterface.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/RequestInterface.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestMethod.js b/node_modules/@octokit/types/dist-src/RequestMethod.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/RequestMethod.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestOptions.js b/node_modules/@octokit/types/dist-src/RequestOptions.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/RequestOptions.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestParameters.js b/node_modules/@octokit/types/dist-src/RequestParameters.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/RequestParameters.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestRequestOptions.js b/node_modules/@octokit/types/dist-src/RequestRequestOptions.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/RequestRequestOptions.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/ResponseHeaders.js b/node_modules/@octokit/types/dist-src/ResponseHeaders.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/ResponseHeaders.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/Route.js b/node_modules/@octokit/types/dist-src/Route.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/Route.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/Signal.js b/node_modules/@octokit/types/dist-src/Signal.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/Signal.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/StrategyInterface.js b/node_modules/@octokit/types/dist-src/StrategyInterface.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/StrategyInterface.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/Url.js b/node_modules/@octokit/types/dist-src/Url.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/Url.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/VERSION.js b/node_modules/@octokit/types/dist-src/VERSION.js deleted file mode 100644 index 272c1099a..000000000 --- a/node_modules/@octokit/types/dist-src/VERSION.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "6.1.2"; diff --git a/node_modules/@octokit/types/dist-src/generated/Endpoints.js b/node_modules/@octokit/types/dist-src/generated/Endpoints.js deleted file mode 100644 index cb0ff5c3b..000000000 --- a/node_modules/@octokit/types/dist-src/generated/Endpoints.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@octokit/types/dist-src/index.js b/node_modules/@octokit/types/dist-src/index.js deleted file mode 100644 index 004ae9b22..000000000 --- a/node_modules/@octokit/types/dist-src/index.js +++ /dev/null @@ -1,21 +0,0 @@ -export * from "./AuthInterface"; -export * from "./EndpointDefaults"; -export * from "./EndpointInterface"; -export * from "./EndpointOptions"; -export * from "./Fetch"; -export * from "./OctokitResponse"; -export * from "./RequestError"; -export * from "./RequestHeaders"; -export * from "./RequestInterface"; -export * from "./RequestMethod"; -export * from "./RequestOptions"; -export * from "./RequestParameters"; -export * from "./RequestRequestOptions"; -export * from "./ResponseHeaders"; -export * from "./Route"; -export * from "./Signal"; -export * from "./StrategyInterface"; -export * from "./Url"; -export * from "./VERSION"; -export * from "./GetResponseTypeFromEndpointMethod"; -export * from "./generated/Endpoints"; diff --git a/node_modules/@octokit/types/dist-types/AuthInterface.d.ts b/node_modules/@octokit/types/dist-types/AuthInterface.d.ts deleted file mode 100644 index 8b39d6128..000000000 --- a/node_modules/@octokit/types/dist-types/AuthInterface.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { EndpointOptions } from "./EndpointOptions"; -import { OctokitResponse } from "./OctokitResponse"; -import { RequestInterface } from "./RequestInterface"; -import { RequestParameters } from "./RequestParameters"; -import { Route } from "./Route"; -/** - * Interface to implement complex authentication strategies for Octokit. - * An object Implementing the AuthInterface can directly be passed as the - * `auth` option in the Octokit constructor. - * - * For the official implementations of the most common authentication - * strategies, see https://github.com/octokit/auth.js - */ -export interface AuthInterface { - (...args: AuthOptions): Promise; - hook: { - /** - * Sends a request using the passed `request` instance - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (request: RequestInterface, options: EndpointOptions): Promise>; - /** - * Sends a request using the passed `request` instance - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (request: RequestInterface, route: Route, parameters?: RequestParameters): Promise>; - }; -} diff --git a/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts b/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts deleted file mode 100644 index a2c230782..000000000 --- a/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { RequestHeaders } from "./RequestHeaders"; -import { RequestMethod } from "./RequestMethod"; -import { RequestParameters } from "./RequestParameters"; -import { Url } from "./Url"; -/** - * The `.endpoint()` method is guaranteed to set all keys defined by RequestParameters - * as well as the method property. - */ -export declare type EndpointDefaults = RequestParameters & { - baseUrl: Url; - method: RequestMethod; - url?: Url; - headers: RequestHeaders & { - accept: string; - "user-agent": string; - }; - mediaType: { - format: string; - previews: string[]; - }; -}; diff --git a/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts b/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts deleted file mode 100644 index d7b400924..000000000 --- a/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { EndpointDefaults } from "./EndpointDefaults"; -import { RequestOptions } from "./RequestOptions"; -import { RequestParameters } from "./RequestParameters"; -import { Route } from "./Route"; -import { Endpoints } from "./generated/Endpoints"; -export interface EndpointInterface { - /** - * Transforms a GitHub REST API endpoint into generic request options - * - * @param {object} endpoint Must set `url` unless it's set defaults. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (options: O & { - method?: string; - } & ("url" extends keyof D ? { - url?: string; - } : { - url: string; - })): RequestOptions & Pick; - /** - * Transforms a GitHub REST API endpoint into generic request options - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (route: keyof Endpoints | R, parameters?: P): (R extends keyof Endpoints ? Endpoints[R]["request"] : RequestOptions) & Pick; - /** - * Object with current default route and parameters - */ - DEFAULTS: D & EndpointDefaults; - /** - * Returns a new `endpoint` interface with new defaults - */ - defaults: (newDefaults: O) => EndpointInterface; - merge: { - /** - * Merges current endpoint defaults with passed route and parameters, - * without transforming them into request options. - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - * - */ - (route: keyof Endpoints | R, parameters?: P): D & (R extends keyof Endpoints ? Endpoints[R]["request"] & Endpoints[R]["parameters"] : EndpointDefaults) & P; - /** - * Merges current endpoint defaults with passed route and parameters, - * without transforming them into request options. - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ -

(options: P): EndpointDefaults & D & P; - /** - * Returns current default options. - * - * @deprecated use endpoint.DEFAULTS instead - */ - (): D & EndpointDefaults; - }; - /** - * Stateless method to turn endpoint options into request options. - * Calling `endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`. - * - * @param {object} options `method`, `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - parse: (options: O) => RequestOptions & Pick; -} diff --git a/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts b/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts deleted file mode 100644 index b1b91f11f..000000000 --- a/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { RequestMethod } from "./RequestMethod"; -import { Url } from "./Url"; -import { RequestParameters } from "./RequestParameters"; -export declare type EndpointOptions = RequestParameters & { - method: RequestMethod; - url: Url; -}; diff --git a/node_modules/@octokit/types/dist-types/Fetch.d.ts b/node_modules/@octokit/types/dist-types/Fetch.d.ts deleted file mode 100644 index cbbd5e8fa..000000000 --- a/node_modules/@octokit/types/dist-types/Fetch.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Browser's fetch method (or compatible such as fetch-mock) - */ -export declare type Fetch = any; diff --git a/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts b/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts deleted file mode 100644 index 70e1a8d46..000000000 --- a/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare type Unwrap = T extends Promise ? U : T; -declare type AnyFunction = (...args: any[]) => any; -export declare type GetResponseTypeFromEndpointMethod = Unwrap>; -export declare type GetResponseDataTypeFromEndpointMethod = Unwrap>["data"]; -export {}; diff --git a/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts b/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts deleted file mode 100644 index 19ffff822..000000000 --- a/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ResponseHeaders } from "./ResponseHeaders"; -import { Url } from "./Url"; -export declare type OctokitResponse = { - headers: ResponseHeaders; - /** - * http response code - */ - status: S; - /** - * URL of response after all redirects - */ - url: Url; - /** - * This is the data you would see in https://developer.Octokit.com/v3/ - */ - data: T; -}; diff --git a/node_modules/@octokit/types/dist-types/RequestError.d.ts b/node_modules/@octokit/types/dist-types/RequestError.d.ts deleted file mode 100644 index 89174e6ee..000000000 --- a/node_modules/@octokit/types/dist-types/RequestError.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -export declare type RequestError = { - name: string; - status: number; - documentation_url: string; - errors?: Array<{ - resource: string; - code: string; - field: string; - message?: string; - }>; -}; diff --git a/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts b/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts deleted file mode 100644 index ac5aae0a5..000000000 --- a/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export declare type RequestHeaders = { - /** - * Avoid setting `headers.accept`, use `mediaType.{format|previews}` option instead. - */ - accept?: string; - /** - * Use `authorization` to send authenticated request, remember `token ` / `bearer ` prefixes. Example: `token 1234567890abcdef1234567890abcdef12345678` - */ - authorization?: string; - /** - * `user-agent` is set do a default and can be overwritten as needed. - */ - "user-agent"?: string; - [header: string]: string | number | undefined; -}; diff --git a/node_modules/@octokit/types/dist-types/RequestInterface.d.ts b/node_modules/@octokit/types/dist-types/RequestInterface.d.ts deleted file mode 100644 index 851811ff8..000000000 --- a/node_modules/@octokit/types/dist-types/RequestInterface.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { EndpointInterface } from "./EndpointInterface"; -import { OctokitResponse } from "./OctokitResponse"; -import { RequestParameters } from "./RequestParameters"; -import { Route } from "./Route"; -import { Endpoints } from "./generated/Endpoints"; -export interface RequestInterface { - /** - * Sends a request based on endpoint options - * - * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (options: O & { - method?: string; - } & ("url" extends keyof D ? { - url?: string; - } : { - url: string; - })): Promise>; - /** - * Sends a request based on endpoint options - * - * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` - * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. - */ - (route: keyof Endpoints | R, options?: R extends keyof Endpoints ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters): R extends keyof Endpoints ? Promise : Promise>; - /** - * Returns a new `request` with updated route and parameters - */ - defaults: (newDefaults: O) => RequestInterface; - /** - * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint} - */ - endpoint: EndpointInterface; -} diff --git a/node_modules/@octokit/types/dist-types/RequestMethod.d.ts b/node_modules/@octokit/types/dist-types/RequestMethod.d.ts deleted file mode 100644 index e999c8d96..000000000 --- a/node_modules/@octokit/types/dist-types/RequestMethod.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * HTTP Verb supported by GitHub's REST API - */ -export declare type RequestMethod = "DELETE" | "GET" | "HEAD" | "PATCH" | "POST" | "PUT"; diff --git a/node_modules/@octokit/types/dist-types/RequestOptions.d.ts b/node_modules/@octokit/types/dist-types/RequestOptions.d.ts deleted file mode 100644 index 97e2181ca..000000000 --- a/node_modules/@octokit/types/dist-types/RequestOptions.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { RequestHeaders } from "./RequestHeaders"; -import { RequestMethod } from "./RequestMethod"; -import { RequestRequestOptions } from "./RequestRequestOptions"; -import { Url } from "./Url"; -/** - * Generic request options as they are returned by the `endpoint()` method - */ -export declare type RequestOptions = { - method: RequestMethod; - url: Url; - headers: RequestHeaders; - body?: any; - request?: RequestRequestOptions; -}; diff --git a/node_modules/@octokit/types/dist-types/RequestParameters.d.ts b/node_modules/@octokit/types/dist-types/RequestParameters.d.ts deleted file mode 100644 index b056a0e22..000000000 --- a/node_modules/@octokit/types/dist-types/RequestParameters.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { RequestRequestOptions } from "./RequestRequestOptions"; -import { RequestHeaders } from "./RequestHeaders"; -import { Url } from "./Url"; -/** - * Parameters that can be passed into `request(route, parameters)` or `endpoint(route, parameters)` methods - */ -export declare type RequestParameters = { - /** - * Base URL to be used when a relative URL is passed, such as `/orgs/{org}`. - * If `baseUrl` is `https://enterprise.acme-inc.com/api/v3`, then the request - * will be sent to `https://enterprise.acme-inc.com/api/v3/orgs/{org}`. - */ - baseUrl?: Url; - /** - * HTTP headers. Use lowercase keys. - */ - headers?: RequestHeaders; - /** - * Media type options, see {@link https://developer.github.com/v3/media/|GitHub Developer Guide} - */ - mediaType?: { - /** - * `json` by default. Can be `raw`, `text`, `html`, `full`, `diff`, `patch`, `sha`, `base64`. Depending on endpoint - */ - format?: string; - /** - * Custom media type names of {@link https://developer.github.com/v3/media/|API Previews} without the `-preview` suffix. - * Example for single preview: `['squirrel-girl']`. - * Example for multiple previews: `['squirrel-girl', 'mister-fantastic']`. - */ - previews?: string[]; - }; - /** - * Pass custom meta information for the request. The `request` object will be returned as is. - */ - request?: RequestRequestOptions; - /** - * Any additional parameter will be passed as follows - * 1. URL parameter if `':parameter'` or `{parameter}` is part of `url` - * 2. Query parameter if `method` is `'GET'` or `'HEAD'` - * 3. Request body if `parameter` is `'data'` - * 4. JSON in the request body in the form of `body[parameter]` unless `parameter` key is `'data'` - */ - [parameter: string]: unknown; -}; diff --git a/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts b/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts deleted file mode 100644 index 4482a8a45..000000000 --- a/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/// -import { Agent } from "http"; -import { Fetch } from "./Fetch"; -import { Signal } from "./Signal"; -/** - * Octokit-specific request options which are ignored for the actual request, but can be used by Octokit or plugins to manipulate how the request is sent or how a response is handled - */ -export declare type RequestRequestOptions = { - /** - * Node only. Useful for custom proxy, certificate, or dns lookup. - */ - agent?: Agent; - /** - * Custom replacement for built-in fetch method. Useful for testing or request hooks. - */ - fetch?: Fetch; - /** - * Use an `AbortController` instance to cancel a request. In node you can only cancel streamed requests. - */ - signal?: Signal; - /** - * Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). `options.request.signal` is recommended instead. - */ - timeout?: number; - [option: string]: any; -}; diff --git a/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts b/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts deleted file mode 100644 index c8fbe43f3..000000000 --- a/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -export declare type ResponseHeaders = { - "cache-control"?: string; - "content-length"?: number; - "content-type"?: string; - date?: string; - etag?: string; - "last-modified"?: string; - link?: string; - location?: string; - server?: string; - status?: string; - vary?: string; - "x-github-mediatype"?: string; - "x-github-request-id"?: string; - "x-oauth-scopes"?: string; - "x-ratelimit-limit"?: string; - "x-ratelimit-remaining"?: string; - "x-ratelimit-reset"?: string; - [header: string]: string | number | undefined; -}; diff --git a/node_modules/@octokit/types/dist-types/Route.d.ts b/node_modules/@octokit/types/dist-types/Route.d.ts deleted file mode 100644 index dcaac75b1..000000000 --- a/node_modules/@octokit/types/dist-types/Route.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * String consisting of an optional HTTP method and relative path or absolute URL. Examples: `'/orgs/{org}'`, `'PUT /orgs/{org}'`, `GET https://example.com/foo/bar` - */ -export declare type Route = string; diff --git a/node_modules/@octokit/types/dist-types/Signal.d.ts b/node_modules/@octokit/types/dist-types/Signal.d.ts deleted file mode 100644 index 4ebcf24e6..000000000 --- a/node_modules/@octokit/types/dist-types/Signal.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Abort signal - * - * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal - */ -export declare type Signal = any; diff --git a/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts b/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts deleted file mode 100644 index 405cbd235..000000000 --- a/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { AuthInterface } from "./AuthInterface"; -export interface StrategyInterface { - (...args: StrategyOptions): AuthInterface; -} diff --git a/node_modules/@octokit/types/dist-types/Url.d.ts b/node_modules/@octokit/types/dist-types/Url.d.ts deleted file mode 100644 index 3e699160f..000000000 --- a/node_modules/@octokit/types/dist-types/Url.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Relative or absolute URL. Examples: `'/orgs/{org}'`, `https://example.com/foo/bar` - */ -export declare type Url = string; diff --git a/node_modules/@octokit/types/dist-types/VERSION.d.ts b/node_modules/@octokit/types/dist-types/VERSION.d.ts deleted file mode 100644 index 4cd7ce6f3..000000000 --- a/node_modules/@octokit/types/dist-types/VERSION.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const VERSION = "6.1.2"; diff --git a/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts b/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts deleted file mode 100644 index 92d1caa1e..000000000 --- a/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts +++ /dev/null @@ -1,2994 +0,0 @@ -import { paths } from "@octokit/openapi-types"; -import { OctokitResponse } from "../OctokitResponse"; -import { RequestHeaders } from "../RequestHeaders"; -import { RequestRequestOptions } from "../RequestRequestOptions"; -declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; -declare type ExtractParameters = "parameters" extends keyof T ? UnionToIntersection<{ - [K in keyof T["parameters"]]: T["parameters"][K]; -}[keyof T["parameters"]]> : {}; -declare type ExtractRequestBody = "requestBody" extends keyof T ? "application/json" extends keyof T["requestBody"] ? T["requestBody"]["application/json"] : { - data: { - [K in keyof T["requestBody"]]: T["requestBody"][K]; - }[keyof T["requestBody"]]; -} : {}; -declare type ToOctokitParameters = ExtractParameters & ExtractRequestBody; -declare type RequiredPreview = T extends string ? { - mediaType: { - previews: [T, ...string[]]; - }; -} : {}; -declare type Operation = { - parameters: ToOctokitParameters & RequiredPreview; - request: { - method: Method extends keyof MethodsMap ? MethodsMap[Method] : never; - url: Url; - headers: RequestHeaders; - request: RequestRequestOptions; - }; - response: Url extends keyof EndpointsWithMissingRequiredResponseDataSchema ? Method extends EndpointsWithMissingRequiredResponseDataSchema[Url] ? DeepRequired> : ExtractOctokitResponse : ExtractOctokitResponse; -}; -declare type MethodsMap = { - delete: "DELETE"; - get: "GET"; - patch: "PATCH"; - post: "POST"; - put: "PUT"; -}; -declare type SuccessStatusesMap = { - "200": 200; - "201": 201; - "204": 204; -}; -declare type RedirectStatusesMap = { - "301": 301; - "302": 302; -}; -declare type SuccessStatuses = keyof SuccessStatusesMap; -declare type RedirectStatuses = keyof RedirectStatusesMap; -declare type KnownJsonResponseTypes = "application/json" | "application/scim+json"; -declare type SuccessResponseDataType = { - [K in SuccessStatuses & keyof Responses]: OctokitResponse extends never ? unknown : DataType, SuccessStatusesMap[K]>; -}[SuccessStatuses & keyof Responses]; -declare type RedirectResponseDataType = { - [K in RedirectStatuses & keyof Responses]: OctokitResponse; -}[RedirectStatuses & keyof Responses]; -declare type DataType = { - [K in KnownJsonResponseTypes & keyof T]: T[K]; -}[KnownJsonResponseTypes & keyof T]; -declare type ExtractOctokitResponse = "responses" extends keyof R ? SuccessResponseDataType extends never ? RedirectResponseDataType extends never ? never : RedirectResponseDataType : SuccessResponseDataType : unknown; -declare type EndpointsWithMissingRequiredResponseDataSchema = { - "/app/hook/config": "get" | "patch"; - "/app/installations/{installation_id}/access_tokens": "post"; - "/emojis": "get"; - "/enterprises/{enterprise}/actions/permissions": "get"; - "/enterprises/{enterprise}/actions/permissions/organizations": "get"; - "/enterprises/{enterprise}/actions/permissions/selected-actions": "get"; - "/enterprises/{enterprise}/actions/runner-groups": "get" | "post"; - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": "get" | "patch"; - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": "get"; - "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": "get"; - "/enterprises/{enterprise}/actions/runners": "get"; - "/enterprises/{enterprise}/actions/runners/downloads": "get"; - "/enterprises/{enterprise}/settings/billing/actions": "get"; - "/enterprises/{enterprise}/settings/billing/packages": "get"; - "/enterprises/{enterprise}/settings/billing/shared-storage": "get"; - "/installation/repositories": "get"; - "/notifications": "get"; - "/notifications/threads/{thread_id}": "get"; - "/orgs/{org}/actions/permissions": "get"; - "/orgs/{org}/actions/permissions/repositories": "get"; - "/orgs/{org}/actions/permissions/selected-actions": "get"; - "/orgs/{org}/actions/runner-groups": "get" | "post"; - "/orgs/{org}/actions/runner-groups/{runner_group_id}": "get" | "patch"; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": "get"; - "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners": "get"; - "/orgs/{org}/actions/runners": "get"; - "/orgs/{org}/actions/runners/downloads": "get"; - "/orgs/{org}/actions/secrets": "get"; - "/orgs/{org}/actions/secrets/{secret_name}/repositories": "get"; - "/orgs/{org}/hooks/{hook_id}/config": "get" | "patch"; - "/orgs/{org}/installations": "get"; - "/orgs/{org}/invitations": "get" | "post"; - "/orgs/{org}/settings/billing/actions": "get"; - "/orgs/{org}/settings/billing/packages": "get"; - "/orgs/{org}/settings/billing/shared-storage": "get"; - "/orgs/{org}/team-sync/groups": "get"; - "/orgs/{org}/teams/{team_slug}/invitations": "get"; - "/orgs/{org}/teams/{team_slug}/projects": "get"; - "/orgs/{org}/teams/{team_slug}/projects/{project_id}": "get"; - "/orgs/{org}/teams/{team_slug}/team-sync/group-mappings": "get" | "patch"; - "/projects/columns/cards/{card_id}/moves": "post"; - "/projects/columns/{column_id}/moves": "post"; - "/repos/{owner}/{repo}/actions/artifacts": "get"; - "/repos/{owner}/{repo}/actions/permissions": "get"; - "/repos/{owner}/{repo}/actions/permissions/selected-actions": "get"; - "/repos/{owner}/{repo}/actions/runners": "get"; - "/repos/{owner}/{repo}/actions/runners/downloads": "get"; - "/repos/{owner}/{repo}/actions/runs": "get"; - "/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": "get"; - "/repos/{owner}/{repo}/actions/runs/{run_id}/jobs": "get"; - "/repos/{owner}/{repo}/actions/runs/{run_id}/timing": "get"; - "/repos/{owner}/{repo}/actions/secrets": "get"; - "/repos/{owner}/{repo}/actions/workflows": "get"; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": "get"; - "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": "get"; - "/repos/{owner}/{repo}/check-suites/preferences": "patch"; - "/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": "get"; - "/repos/{owner}/{repo}/code-scanning/alerts": "get"; - "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": "get" | "patch"; - "/repos/{owner}/{repo}/code-scanning/analyses": "get"; - "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": "get"; - "/repos/{owner}/{repo}/commits/{ref}/check-runs": "get"; - "/repos/{owner}/{repo}/commits/{ref}/check-suites": "get"; - "/repos/{owner}/{repo}/commits/{ref}/statuses": "get"; - "/repos/{owner}/{repo}/contents/{path}": "put" | "delete"; - "/repos/{owner}/{repo}/git/blobs": "post"; - "/repos/{owner}/{repo}/git/commits": "post"; - "/repos/{owner}/{repo}/git/commits/{commit_sha}": "get"; - "/repos/{owner}/{repo}/git/matching-refs/{ref}": "get"; - "/repos/{owner}/{repo}/git/ref/{ref}": "get"; - "/repos/{owner}/{repo}/git/refs": "post"; - "/repos/{owner}/{repo}/git/refs/{ref}": "patch"; - "/repos/{owner}/{repo}/hooks/{hook_id}/config": "get" | "patch"; - "/repos/{owner}/{repo}/issues/{issue_number}/events": "get"; - "/repos/{owner}/{repo}/issues/{issue_number}/timeline": "get"; - "/repos/{owner}/{repo}/keys": "get" | "post"; - "/repos/{owner}/{repo}/keys/{key_id}": "get"; - "/repos/{owner}/{repo}/languages": "get"; - "/repos/{owner}/{repo}/notifications": "get"; - "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": "get"; - "/repos/{owner}/{repo}/stats/participation": "get"; - "/repos/{owner}/{repo}/statuses/{sha}": "post"; - "/repos/{owner}/{repo}/topics": "get" | "put"; - "/scim/v2/enterprises/{enterprise}/Groups": "get" | "post"; - "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": "get" | "put" | "patch"; - "/scim/v2/enterprises/{enterprise}/Users": "get" | "post"; - "/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": "get" | "put" | "patch"; - "/search/code": "get"; - "/search/commits": "get"; - "/search/issues": "get"; - "/search/labels": "get"; - "/search/repositories": "get"; - "/search/topics": "get"; - "/search/users": "get"; - "/teams/{team_id}/invitations": "get"; - "/teams/{team_id}/projects": "get"; - "/teams/{team_id}/projects/{project_id}": "get"; - "/teams/{team_id}/team-sync/group-mappings": "get" | "patch"; - "/user/installations": "get"; - "/user/installations/{installation_id}/repositories": "get"; - "/user/keys": "get" | "post"; - "/user/keys/{key_id}": "get"; - "/users/{username}/settings/billing/actions": "get"; - "/users/{username}/settings/billing/packages": "get"; - "/users/{username}/settings/billing/shared-storage": "get"; -}; -declare type NotNill = T extends null | undefined ? never : T; -declare type Primitive = undefined | null | boolean | string | number | Function; -declare type DeepRequired = T extends Primitive ? NotNill : { - [P in keyof T]-?: T[P] extends Array ? Array> : T[P] extends ReadonlyArray ? DeepRequired : DeepRequired; -}; -export interface Endpoints { - /** - * @see https://docs.github.com/v3/apps/#delete-an-installation-for-the-authenticated-app - */ - "DELETE /app/installations/{installation_id}": Operation<"/app/installations/{installation_id}", "delete">; - /** - * @see https://docs.github.com/v3/apps/#unsuspend-an-app-installation - */ - "DELETE /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "delete">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#delete-a-grant - */ - "DELETE /applications/grants/{grant_id}": Operation<"/applications/grants/{grant_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/apps#delete-an-app-authorization - */ - "DELETE /applications/{client_id}/grant": Operation<"/applications/{client_id}/grant", "delete">; - /** - * @see https://docs.github.com/rest/reference/apps#revoke-a-grant-for-an-application - */ - "DELETE /applications/{client_id}/grants/{access_token}": Operation<"/applications/{client_id}/grants/{access_token}", "delete">; - /** - * @see https://docs.github.com/rest/reference/apps#delete-an-app-token - */ - "DELETE /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "delete">; - /** - * @see https://docs.github.com/rest/reference/apps#revoke-an-authorization-for-an-application - */ - "DELETE /applications/{client_id}/tokens/{access_token}": Operation<"/applications/{client_id}/tokens/{access_token}", "delete">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#delete-an-authorization - */ - "DELETE /authorizations/{authorization_id}": Operation<"/authorizations/{authorization_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#disable-a-selected-organization-for-github-actions-in-an-enterprise - */ - "DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/permissions/organizations/{org_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#delete-a-self-hosted-runner-group-from-an-enterprise - */ - "DELETE /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#remove-organization-access-to-a-self-hosted-runner-group-in-an-enterprise - */ - "DELETE /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#remove-a-self-hosted-runner-from-a-group-for-an-enterprise - */ - "DELETE /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#delete-self-hosted-runner-from-an-enterprise - */ - "DELETE /enterprises/{enterprise}/actions/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}", "delete">; - /** - * @see https://docs.github.com/v3/gists/#delete-a-gist - */ - "DELETE /gists/{gist_id}": Operation<"/gists/{gist_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/gists#delete-a-gist-comment - */ - "DELETE /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "delete">; - /** - * @see https://docs.github.com/v3/gists/#unstar-a-gist - */ - "DELETE /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "delete">; - /** - * @see https://docs.github.com/rest/reference/apps#revoke-an-installation-access-token - */ - "DELETE /installation/token": Operation<"/installation/token", "delete">; - /** - * @see https://docs.github.com/rest/reference/activity#delete-a-thread-subscription - */ - "DELETE /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#disable-a-selected-repository-for-github-actions-in-an-organization - */ - "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-group-from-an-organization - */ - "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#remove-repository-access-to-a-self-hosted-runner-group-in-an-organization - */ - "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization - */ - "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-from-an-organization - */ - "DELETE /orgs/{org}/actions/runners/{runner_id}": Operation<"/orgs/{org}/actions/runners/{runner_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#delete-an-organization-secret - */ - "DELETE /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret - */ - "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/orgs#unblock-a-user-from-an-organization - */ - "DELETE /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "delete">; - /** - * @see https://docs.github.com/v3/orgs/#remove-a-saml-sso-authorization-for-an-organization - */ - "DELETE /orgs/{org}/credential-authorizations/{credential_id}": Operation<"/orgs/{org}/credential-authorizations/{credential_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/orgs#delete-an-organization-webhook - */ - "DELETE /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-for-an-organization - */ - "DELETE /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "delete">; - /** - * @see https://docs.github.com/rest/reference/orgs#remove-an-organization-member - */ - "DELETE /orgs/{org}/members/{username}": Operation<"/orgs/{org}/members/{username}", "delete">; - /** - * @see https://docs.github.com/rest/reference/orgs#remove-organization-membership-for-a-user - */ - "DELETE /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "delete">; - /** - * @see https://docs.github.com/rest/reference/migrations#delete-an-organization-migration-archive - */ - "DELETE /orgs/{org}/migrations/{migration_id}/archive": Operation<"/orgs/{org}/migrations/{migration_id}/archive", "delete", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/migrations#unlock-an-organization-repository - */ - "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock", "delete", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/orgs#remove-outside-collaborator-from-an-organization - */ - "DELETE /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "delete">; - /** - * @see https://docs.github.com/rest/reference/orgs#remove-public-organization-membership-for-the-authenticated-user - */ - "DELETE /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "delete">; - /** - * @see https://docs.github.com/v3/teams/#delete-a-team - */ - "DELETE /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "delete">; - /** - * @see https://docs.github.com/rest/reference/teams#delete-a-discussion - */ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "delete">; - /** - * @see https://docs.github.com/rest/reference/teams#delete-a-discussion-comment - */ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "delete">; - /** - * @see https://docs.github.com/v3/reactions/#delete-team-discussion-comment-reaction - */ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", "delete", "squirrel-girl">; - /** - * @see https://docs.github.com/v3/reactions/#delete-team-discussion-reaction - */ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", "delete", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user - */ - "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "delete">; - /** - * @see https://docs.github.com/v3/teams/#remove-a-project-from-a-team - */ - "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "delete">; - /** - * @see https://docs.github.com/v3/teams/#remove-a-repository-from-a-team - */ - "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "delete">; - /** - * @see https://docs.github.com/rest/reference/projects#delete-a-project-card - */ - "DELETE /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "delete", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#delete-a-project-column - */ - "DELETE /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "delete", "inertia">; - /** - * @see https://docs.github.com/v3/projects/#delete-a-project - */ - "DELETE /projects/{project_id}": Operation<"/projects/{project_id}", "delete", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#remove-project-collaborator - */ - "DELETE /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "delete", "inertia">; - /** - * @see https://docs.github.com/v3/reactions/#delete-a-reaction-legacy - */ - "DELETE /reactions/{reaction_id}": Operation<"/reactions/{reaction_id}", "delete", "squirrel-girl">; - /** - * @see https://docs.github.com/v3/repos/#delete-a-repository - */ - "DELETE /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#delete-an-artifact - */ - "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-from-a-repository - */ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#delete-a-workflow-run - */ - "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#delete-workflow-run-logs - */ - "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "delete">; - /** - * @see https://docs.github.com/rest/reference/actions#delete-a-repository-secret - */ - "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "delete">; - /** - * @see https://docs.github.com/v3/repos/#disable-automated-security-fixes - */ - "DELETE /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "delete", "london">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-branch-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-admin-branch-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-pull-request-review-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-commit-signature-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "delete", "zzzax">; - /** - * @see https://docs.github.com/rest/reference/repos#remove-status-check-protection - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#remove-status-check-contexts - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-access-restrictions - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#remove-app-access-restrictions - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#remove-team-access-restrictions - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#remove-user-access-restrictions - */ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#remove-a-repository-collaborator - */ - "DELETE /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-a-commit-comment - */ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "delete">; - /** - * @see https://docs.github.com/v3/reactions/#delete-a-commit-comment-reaction - */ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", "delete", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-a-file - */ - "DELETE /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-a-deployment - */ - "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/git#delete-a-reference - */ - "DELETE /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-a-repository-webhook - */ - "DELETE /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/migrations#cancel-an-import - */ - "DELETE /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "delete">; - /** - * @see https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-for-a-repository - */ - "DELETE /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-a-repository-invitation - */ - "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/issues#delete-an-issue-comment - */ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "delete">; - /** - * @see https://docs.github.com/v3/reactions/#delete-an-issue-comment-reaction - */ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", "delete", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/issues#remove-assignees-from-an-issue - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "delete">; - /** - * @see https://docs.github.com/rest/reference/issues#remove-all-labels-from-an-issue - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "delete">; - /** - * @see https://docs.github.com/rest/reference/issues#remove-a-label-from-an-issue - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}", "delete">; - /** - * @see https://docs.github.com/v3/issues/#unlock-an-issue - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "delete">; - /** - * @see https://docs.github.com/v3/reactions/#delete-an-issue-reaction - */ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", "delete", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-a-deploy-key - */ - "DELETE /repos/{owner}/{repo}/keys/{key_id}": Operation<"/repos/{owner}/{repo}/keys/{key_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/issues#delete-a-label - */ - "DELETE /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "delete">; - /** - * @see https://docs.github.com/rest/reference/issues#delete-a-milestone - */ - "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-a-github-pages-site - */ - "DELETE /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "delete", "switcheroo">; - /** - * @see https://docs.github.com/rest/reference/pulls#delete-a-review-comment-for-a-pull-request - */ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "delete">; - /** - * @see https://docs.github.com/v3/reactions/#delete-a-pull-request-comment-reaction - */ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", "delete", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/pulls#remove-requested-reviewers-from-a-pull-request - */ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "delete">; - /** - * @see https://docs.github.com/rest/reference/pulls#delete-a-pending-review-for-a-pull-request - */ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-a-release-asset - */ - "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/repos#delete-a-release - */ - "DELETE /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/activity#delete-a-repository-subscription - */ - "DELETE /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "delete">; - /** - * @see https://docs.github.com/v3/repos/#disable-vulnerability-alerts - */ - "DELETE /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "delete", "dorian">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#delete-a-scim-group-from-an-enterprise - */ - "DELETE /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#delete-a-scim-user-from-an-enterprise - */ - "DELETE /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "delete">; - /** - * @see https://docs.github.com/v3/scim/#delete-a-scim-user-from-an-organization - */ - "DELETE /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "delete">; - /** - * @see https://docs.github.com/v3/teams/#delete-a-team-legacy - */ - "DELETE /teams/{team_id}": Operation<"/teams/{team_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/teams#delete-a-discussion-legacy - */ - "DELETE /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "delete">; - /** - * @see https://docs.github.com/rest/reference/teams#delete-a-discussion-comment-legacy - */ - "DELETE /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "delete">; - /** - * @see https://docs.github.com/rest/reference/teams#remove-team-member-legacy - */ - "DELETE /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "delete">; - /** - * @see https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user-legacy - */ - "DELETE /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "delete">; - /** - * @see https://docs.github.com/v3/teams/#remove-a-project-from-a-team-legacy - */ - "DELETE /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "delete">; - /** - * @see https://docs.github.com/v3/teams/#remove-a-repository-from-a-team-legacy - */ - "DELETE /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "delete">; - /** - * @see https://docs.github.com/rest/reference/users#unblock-a-user - */ - "DELETE /user/blocks/{username}": Operation<"/user/blocks/{username}", "delete">; - /** - * @see https://docs.github.com/rest/reference/users#delete-an-email-address-for-the-authenticated-user - */ - "DELETE /user/emails": Operation<"/user/emails", "delete">; - /** - * @see https://docs.github.com/rest/reference/users#unfollow-a-user - */ - "DELETE /user/following/{username}": Operation<"/user/following/{username}", "delete">; - /** - * @see https://docs.github.com/rest/reference/users#delete-a-gpg-key-for-the-authenticated-user - */ - "DELETE /user/gpg_keys/{gpg_key_id}": Operation<"/user/gpg_keys/{gpg_key_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/apps#remove-a-repository-from-an-app-installation - */ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-from-your-public-repositories - */ - "DELETE /user/interaction-limits": Operation<"/user/interaction-limits", "delete">; - /** - * @see https://docs.github.com/rest/reference/users#delete-a-public-ssh-key-for-the-authenticated-user - */ - "DELETE /user/keys/{key_id}": Operation<"/user/keys/{key_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/migrations#delete-a-user-migration-archive - */ - "DELETE /user/migrations/{migration_id}/archive": Operation<"/user/migrations/{migration_id}/archive", "delete", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/migrations#unlock-a-user-repository - */ - "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/user/migrations/{migration_id}/repos/{repo_name}/lock", "delete", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/repos#decline-a-repository-invitation - */ - "DELETE /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "delete">; - /** - * @see https://docs.github.com/rest/reference/activity#unstar-a-repository-for-the-authenticated-user - */ - "DELETE /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "delete">; - /** - * @see - */ - "GET /": Operation<"/", "get">; - /** - * @see https://docs.github.com/v3/apps/#get-the-authenticated-app - */ - "GET /app": Operation<"/app", "get">; - /** - * @see https://docs.github.com/v3/apps#get-a-webhook-configuration-for-an-app - */ - "GET /app/hook/config": Operation<"/app/hook/config", "get">; - /** - * @see https://docs.github.com/v3/apps/#list-installations-for-the-authenticated-app - */ - "GET /app/installations": Operation<"/app/installations", "get">; - /** - * @see https://docs.github.com/v3/apps/#get-an-installation-for-the-authenticated-app - */ - "GET /app/installations/{installation_id}": Operation<"/app/installations/{installation_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-grants - */ - "GET /applications/grants": Operation<"/applications/grants", "get">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#get-a-single-grant - */ - "GET /applications/grants/{grant_id}": Operation<"/applications/grants/{grant_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#check-an-authorization - */ - "GET /applications/{client_id}/tokens/{access_token}": Operation<"/applications/{client_id}/tokens/{access_token}", "get">; - /** - * @see https://docs.github.com/v3/apps/#get-an-app - */ - "GET /apps/{app_slug}": Operation<"/apps/{app_slug}", "get">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations - */ - "GET /authorizations": Operation<"/authorizations", "get">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#get-a-single-authorization - */ - "GET /authorizations/{authorization_id}": Operation<"/authorizations/{authorization_id}", "get">; - /** - * @see https://docs.github.com/v3/codes_of_conduct/#get-all-codes-of-conduct - */ - "GET /codes_of_conduct": Operation<"/codes_of_conduct", "get", "scarlet-witch">; - /** - * @see https://docs.github.com/v3/codes_of_conduct/#get-a-code-of-conduct - */ - "GET /codes_of_conduct/{key}": Operation<"/codes_of_conduct/{key}", "get", "scarlet-witch">; - /** - * @see https://docs.github.com/v3/emojis/#get-emojis - */ - "GET /emojis": Operation<"/emojis", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#get-github-actions-permissions-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/permissions": Operation<"/enterprises/{enterprise}/actions/permissions", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-selected-organizations-enabled-for-github-actions-in-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/permissions/organizations": Operation<"/enterprises/{enterprise}/actions/permissions/organizations", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#get-allowed-actions-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/permissions/selected-actions": Operation<"/enterprises/{enterprise}/actions/permissions/selected-actions", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runner-groups-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runner-groups": Operation<"/enterprises/{enterprise}/actions/runner-groups", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#get-a-self-hosted-runner-group-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-organization-access-to-a-self-hosted-runner-group-in-a-enterprise - */ - "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runners-in-a-group-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runners-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runners": Operation<"/enterprises/{enterprise}/actions/runners", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-runner-applications-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runners/downloads": Operation<"/enterprises/{enterprise}/actions/runners/downloads", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#get-a-self-hosted-runner-for-an-enterprise - */ - "GET /enterprises/{enterprise}/actions/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}", "get">; - /** - * @see https://docs.github.com/v3/billing/#get-github-actions-billing-for-an-enterprise - */ - "GET /enterprises/{enterprise}/settings/billing/actions": Operation<"/enterprises/{enterprise}/settings/billing/actions", "get">; - /** - * @see https://docs.github.com/v3/billing/#get-github-packages-billing-for-an-enterprise - */ - "GET /enterprises/{enterprise}/settings/billing/packages": Operation<"/enterprises/{enterprise}/settings/billing/packages", "get">; - /** - * @see https://docs.github.com/v3/billing/#get-shared-storage-billing-for-an-enterprise - */ - "GET /enterprises/{enterprise}/settings/billing/shared-storage": Operation<"/enterprises/{enterprise}/settings/billing/shared-storage", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-events - */ - "GET /events": Operation<"/events", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#get-feeds - */ - "GET /feeds": Operation<"/feeds", "get">; - /** - * @see https://docs.github.com/v3/gists/#list-gists-for-the-authenticated-user - */ - "GET /gists": Operation<"/gists", "get">; - /** - * @see https://docs.github.com/v3/gists/#list-public-gists - */ - "GET /gists/public": Operation<"/gists/public", "get">; - /** - * @see https://docs.github.com/v3/gists/#list-starred-gists - */ - "GET /gists/starred": Operation<"/gists/starred", "get">; - /** - * @see https://docs.github.com/v3/gists/#get-a-gist - */ - "GET /gists/{gist_id}": Operation<"/gists/{gist_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/gists#list-gist-comments - */ - "GET /gists/{gist_id}/comments": Operation<"/gists/{gist_id}/comments", "get">; - /** - * @see https://docs.github.com/rest/reference/gists#get-a-gist-comment - */ - "GET /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "get">; - /** - * @see https://docs.github.com/v3/gists/#list-gist-commits - */ - "GET /gists/{gist_id}/commits": Operation<"/gists/{gist_id}/commits", "get">; - /** - * @see https://docs.github.com/v3/gists/#list-gist-forks - */ - "GET /gists/{gist_id}/forks": Operation<"/gists/{gist_id}/forks", "get">; - /** - * @see https://docs.github.com/v3/gists/#check-if-a-gist-is-starred - */ - "GET /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "get">; - /** - * @see https://docs.github.com/v3/gists/#get-a-gist-revision - */ - "GET /gists/{gist_id}/{sha}": Operation<"/gists/{gist_id}/{sha}", "get">; - /** - * @see https://docs.github.com/v3/gitignore/#get-all-gitignore-templates - */ - "GET /gitignore/templates": Operation<"/gitignore/templates", "get">; - /** - * @see https://docs.github.com/v3/gitignore/#get-a-gitignore-template - */ - "GET /gitignore/templates/{name}": Operation<"/gitignore/templates/{name}", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-app-installation - */ - "GET /installation/repositories": Operation<"/installation/repositories", "get">; - /** - * @see https://docs.github.com/v3/issues/#list-issues-assigned-to-the-authenticated-user - */ - "GET /issues": Operation<"/issues", "get">; - /** - * @see https://docs.github.com/v3/licenses/#get-all-commonly-used-licenses - */ - "GET /licenses": Operation<"/licenses", "get">; - /** - * @see https://docs.github.com/v3/licenses/#get-a-license - */ - "GET /licenses/{license}": Operation<"/licenses/{license}", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#get-a-subscription-plan-for-an-account - */ - "GET /marketplace_listing/accounts/{account_id}": Operation<"/marketplace_listing/accounts/{account_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#list-plans - */ - "GET /marketplace_listing/plans": Operation<"/marketplace_listing/plans", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan - */ - "GET /marketplace_listing/plans/{plan_id}/accounts": Operation<"/marketplace_listing/plans/{plan_id}/accounts", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#get-a-subscription-plan-for-an-account-stubbed - */ - "GET /marketplace_listing/stubbed/accounts/{account_id}": Operation<"/marketplace_listing/stubbed/accounts/{account_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#list-plans-stubbed - */ - "GET /marketplace_listing/stubbed/plans": Operation<"/marketplace_listing/stubbed/plans", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan-stubbed - */ - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": Operation<"/marketplace_listing/stubbed/plans/{plan_id}/accounts", "get">; - /** - * @see https://docs.github.com/v3/meta/#get-github-meta-information - */ - "GET /meta": Operation<"/meta", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-network-of-repositories - */ - "GET /networks/{owner}/{repo}/events": Operation<"/networks/{owner}/{repo}/events", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user - */ - "GET /notifications": Operation<"/notifications", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#get-a-thread - */ - "GET /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#get-a-thread-subscription-for-the-authenticated-user - */ - "GET /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "get">; - /** - * @see - */ - "GET /octocat": Operation<"/octocat", "get">; - /** - * @see https://docs.github.com/v3/orgs/#list-organizations - */ - "GET /organizations": Operation<"/organizations", "get">; - /** - * @see https://docs.github.com/v3/orgs/#get-an-organization - */ - "GET /orgs/{org}": Operation<"/orgs/{org}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-github-actions-permissions-for-an-organization - */ - "GET /orgs/{org}/actions/permissions": Operation<"/orgs/{org}/actions/permissions", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-enabled-for-github-actions-in-an-organization - */ - "GET /orgs/{org}/actions/permissions/repositories": Operation<"/orgs/{org}/actions/permissions/repositories", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-allowed-actions-for-an-organization - */ - "GET /orgs/{org}/actions/permissions/selected-actions": Operation<"/orgs/{org}/actions/permissions/selected-actions", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runner-groups-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups": Operation<"/orgs/{org}/actions/runner-groups", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-group-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-repository-access-to-a-self-hosted-runner-group-in-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-in-a-group-for-an-organization - */ - "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-an-organization - */ - "GET /orgs/{org}/actions/runners": Operation<"/orgs/{org}/actions/runners", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-runner-applications-for-an-organization - */ - "GET /orgs/{org}/actions/runners/downloads": Operation<"/orgs/{org}/actions/runners/downloads", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-for-an-organization - */ - "GET /orgs/{org}/actions/runners/{runner_id}": Operation<"/orgs/{org}/actions/runners/{runner_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-organization-secrets - */ - "GET /orgs/{org}/actions/secrets": Operation<"/orgs/{org}/actions/secrets", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-an-organization-public-key - */ - "GET /orgs/{org}/actions/secrets/public-key": Operation<"/orgs/{org}/actions/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-an-organization-secret - */ - "GET /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret - */ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#list-users-blocked-by-an-organization - */ - "GET /orgs/{org}/blocks": Operation<"/orgs/{org}/blocks", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#check-if-a-user-is-blocked-by-an-organization - */ - "GET /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "get">; - /** - * @see https://docs.github.com/v3/orgs/#list-saml-sso-authorizations-for-an-organization - */ - "GET /orgs/{org}/credential-authorizations": Operation<"/orgs/{org}/credential-authorizations", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-organization-events - */ - "GET /orgs/{org}/events": Operation<"/orgs/{org}/events", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#list-organization-webhooks - */ - "GET /orgs/{org}/hooks": Operation<"/orgs/{org}/hooks", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#get-an-organization-webhook - */ - "GET /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "get">; - /** - * @see https://docs.github.com/v3/orgs#get-a-webhook-configuration-for-an-organization - */ - "GET /orgs/{org}/hooks/{hook_id}/config": Operation<"/orgs/{org}/hooks/{hook_id}/config", "get">; - /** - * @see https://docs.github.com/v3/apps/#get-an-organization-installation-for-the-authenticated-app - */ - "GET /orgs/{org}/installation": Operation<"/orgs/{org}/installation", "get">; - /** - * @see https://docs.github.com/v3/orgs/#list-app-installations-for-an-organization - */ - "GET /orgs/{org}/installations": Operation<"/orgs/{org}/installations", "get">; - /** - * @see https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-an-organization - */ - "GET /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#list-pending-organization-invitations - */ - "GET /orgs/{org}/invitations": Operation<"/orgs/{org}/invitations", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#list-organization-invitation-teams - */ - "GET /orgs/{org}/invitations/{invitation_id}/teams": Operation<"/orgs/{org}/invitations/{invitation_id}/teams", "get">; - /** - * @see https://docs.github.com/v3/issues/#list-organization-issues-assigned-to-the-authenticated-user - */ - "GET /orgs/{org}/issues": Operation<"/orgs/{org}/issues", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#list-organization-members - */ - "GET /orgs/{org}/members": Operation<"/orgs/{org}/members", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#check-organization-membership-for-a-user - */ - "GET /orgs/{org}/members/{username}": Operation<"/orgs/{org}/members/{username}", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user - */ - "GET /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "get">; - /** - * @see https://docs.github.com/rest/reference/migrations#list-organization-migrations - */ - "GET /orgs/{org}/migrations": Operation<"/orgs/{org}/migrations", "get", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/migrations#get-an-organization-migration-status - */ - "GET /orgs/{org}/migrations/{migration_id}": Operation<"/orgs/{org}/migrations/{migration_id}", "get", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/migrations#download-an-organization-migration-archive - */ - "GET /orgs/{org}/migrations/{migration_id}/archive": Operation<"/orgs/{org}/migrations/{migration_id}/archive", "get", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/migrations#list-repositories-in-an-organization-migration - */ - "GET /orgs/{org}/migrations/{migration_id}/repositories": Operation<"/orgs/{org}/migrations/{migration_id}/repositories", "get", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/orgs#list-outside-collaborators-for-an-organization - */ - "GET /orgs/{org}/outside_collaborators": Operation<"/orgs/{org}/outside_collaborators", "get">; - /** - * @see https://docs.github.com/v3/projects/#list-organization-projects - */ - "GET /orgs/{org}/projects": Operation<"/orgs/{org}/projects", "get", "inertia">; - /** - * @see https://docs.github.com/rest/reference/orgs#list-public-organization-members - */ - "GET /orgs/{org}/public_members": Operation<"/orgs/{org}/public_members", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#check-public-organization-membership-for-a-user - */ - "GET /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "get">; - /** - * @see https://docs.github.com/v3/repos/#list-organization-repositories - */ - "GET /orgs/{org}/repos": Operation<"/orgs/{org}/repos", "get">; - /** - * @see https://docs.github.com/v3/billing/#get-github-actions-billing-for-an-organization - */ - "GET /orgs/{org}/settings/billing/actions": Operation<"/orgs/{org}/settings/billing/actions", "get">; - /** - * @see https://docs.github.com/v3/billing/#get-github-packages-billing-for-an-organization - */ - "GET /orgs/{org}/settings/billing/packages": Operation<"/orgs/{org}/settings/billing/packages", "get">; - /** - * @see https://docs.github.com/v3/billing/#get-shared-storage-billing-for-an-organization - */ - "GET /orgs/{org}/settings/billing/shared-storage": Operation<"/orgs/{org}/settings/billing/shared-storage", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-an-organization - */ - "GET /orgs/{org}/team-sync/groups": Operation<"/orgs/{org}/team-sync/groups", "get">; - /** - * @see https://docs.github.com/v3/teams/#list-teams - */ - "GET /orgs/{org}/teams": Operation<"/orgs/{org}/teams", "get">; - /** - * @see https://docs.github.com/v3/teams/#get-a-team-by-name - */ - "GET /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#list-discussions - */ - "GET /orgs/{org}/teams/{team_slug}/discussions": Operation<"/orgs/{org}/teams/{team_slug}/discussions", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#get-a-discussion - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#list-discussion-comments - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#get-a-discussion-comment - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "get">; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get", "squirrel-girl">; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion - */ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "get", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations - */ - "GET /orgs/{org}/teams/{team_slug}/invitations": Operation<"/orgs/{org}/teams/{team_slug}/invitations", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#list-team-members - */ - "GET /orgs/{org}/teams/{team_slug}/members": Operation<"/orgs/{org}/teams/{team_slug}/members", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user - */ - "GET /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "get">; - /** - * @see https://docs.github.com/v3/teams/#list-team-projects - */ - "GET /orgs/{org}/teams/{team_slug}/projects": Operation<"/orgs/{org}/teams/{team_slug}/projects", "get", "inertia">; - /** - * @see https://docs.github.com/v3/teams/#check-team-permissions-for-a-project - */ - "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "get", "inertia">; - /** - * @see https://docs.github.com/v3/teams/#list-team-repositories - */ - "GET /orgs/{org}/teams/{team_slug}/repos": Operation<"/orgs/{org}/teams/{team_slug}/repos", "get">; - /** - * @see https://docs.github.com/v3/teams/#check-team-permissions-for-a-repository - */ - "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team - */ - "GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings": Operation<"/orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "get">; - /** - * @see https://docs.github.com/v3/teams/#list-child-teams - */ - "GET /orgs/{org}/teams/{team_slug}/teams": Operation<"/orgs/{org}/teams/{team_slug}/teams", "get">; - /** - * @see https://docs.github.com/rest/reference/projects#get-a-project-card - */ - "GET /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "get", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#get-a-project-column - */ - "GET /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "get", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#list-project-cards - */ - "GET /projects/columns/{column_id}/cards": Operation<"/projects/columns/{column_id}/cards", "get", "inertia">; - /** - * @see https://docs.github.com/v3/projects/#get-a-project - */ - "GET /projects/{project_id}": Operation<"/projects/{project_id}", "get", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#list-project-collaborators - */ - "GET /projects/{project_id}/collaborators": Operation<"/projects/{project_id}/collaborators", "get", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#get-project-permission-for-a-user - */ - "GET /projects/{project_id}/collaborators/{username}/permission": Operation<"/projects/{project_id}/collaborators/{username}/permission", "get", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#list-project-columns - */ - "GET /projects/{project_id}/columns": Operation<"/projects/{project_id}/columns", "get", "inertia">; - /** - * @see https://docs.github.com/v3/rate_limit/#get-rate-limit-status-for-the-authenticated-user - */ - "GET /rate_limit": Operation<"/rate_limit", "get">; - /** - * @see https://docs.github.com/v3/repos/#get-a-repository - */ - "GET /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-artifacts-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/artifacts": Operation<"/repos/{owner}/{repo}/actions/artifacts", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-an-artifact - */ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#download-an-artifact - */ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-a-job-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/jobs/{job_id}": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#download-job-logs-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}/logs", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-github-actions-permissions-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/permissions": Operation<"/repos/{owner}/{repo}/actions/permissions", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-allowed-actions-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/permissions/selected-actions": Operation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners": Operation<"/repos/{owner}/{repo}/actions/runners", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-runner-applications-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners/downloads": Operation<"/repos/{owner}/{repo}/actions/runners/downloads", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-workflow-runs-for-a-repository - */ - "GET /repos/{owner}/{repo}/actions/runs": Operation<"/repos/{owner}/{repo}/actions/runs", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-workflow-run-artifacts - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-jobs-for-a-workflow-run - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#download-workflow-run-logs - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-workflow-run-usage - */ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/timing", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-repository-secrets - */ - "GET /repos/{owner}/{repo}/actions/secrets": Operation<"/repos/{owner}/{repo}/actions/secrets", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-a-repository-public-key - */ - "GET /repos/{owner}/{repo}/actions/secrets/public-key": Operation<"/repos/{owner}/{repo}/actions/secrets/public-key", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-a-repository-secret - */ - "GET /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-repository-workflows - */ - "GET /repos/{owner}/{repo}/actions/workflows": Operation<"/repos/{owner}/{repo}/actions/workflows", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-a-workflow - */ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#list-workflow-runs - */ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "get">; - /** - * @see https://docs.github.com/rest/reference/actions#get-workflow-usage - */ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#list-assignees - */ - "GET /repos/{owner}/{repo}/assignees": Operation<"/repos/{owner}/{repo}/assignees", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#check-if-a-user-can-be-assigned - */ - "GET /repos/{owner}/{repo}/assignees/{assignee}": Operation<"/repos/{owner}/{repo}/assignees/{assignee}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-branches - */ - "GET /repos/{owner}/{repo}/branches": Operation<"/repos/{owner}/{repo}/branches", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-branch - */ - "GET /repos/{owner}/{repo}/branches/{branch}": Operation<"/repos/{owner}/{repo}/branches/{branch}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-branch-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-admin-branch-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-pull-request-review-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-commit-signature-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "get", "zzzax">; - /** - * @see https://docs.github.com/rest/reference/repos#get-status-checks-protection - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-all-status-check-contexts - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-access-restrictions - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-apps-with-access-to-the-protected-branch - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-teams-with-access-to-the-protected-branch - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-users-with-access-to-the-protected-branch - */ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "get">; - /** - * @see https://docs.github.com/rest/reference/checks#get-a-check-run - */ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/checks#list-check-run-annotations - */ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "get">; - /** - * @see https://docs.github.com/rest/reference/checks#get-a-check-suite - */ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite - */ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "get">; - /** - * @see https://docs.github.com/v3/code-scanning/#list-code-scanning-alerts-for-a-repository - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts": Operation<"/repos/{owner}/{repo}/code-scanning/alerts", "get">; - /** - * @see https://docs.github.com/v3/code-scanning/#get-a-code-scanning-alert - * @deprecated "alert_id" is now "alert_number" - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_id}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">; - /** - * @see https://docs.github.com/v3/code-scanning/#get-a-code-scanning-alert - */ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">; - /** - * @see https://docs.github.com/v3/code-scanning/#list-recent-analyses - */ - "GET /repos/{owner}/{repo}/code-scanning/analyses": Operation<"/repos/{owner}/{repo}/code-scanning/analyses", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-repository-collaborators - */ - "GET /repos/{owner}/{repo}/collaborators": Operation<"/repos/{owner}/{repo}/collaborators", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#check-if-a-user-is-a-repository-collaborator - */ - "GET /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-repository-permissions-for-a-user - */ - "GET /repos/{owner}/{repo}/collaborators/{username}/permission": Operation<"/repos/{owner}/{repo}/collaborators/{username}/permission", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-commit-comments-for-a-repository - */ - "GET /repos/{owner}/{repo}/comments": Operation<"/repos/{owner}/{repo}/comments", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-commit-comment - */ - "GET /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "get">; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-commit-comment - */ - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "get", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/repos#list-commits - */ - "GET /repos/{owner}/{repo}/commits": Operation<"/repos/{owner}/{repo}/commits", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-branches-for-head-commit - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "get", "groot">; - /** - * @see https://docs.github.com/rest/reference/repos#list-commit-comments - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-pull-requests-associated-with-a-commit - */ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/pulls", "get", "groot">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-commit - */ - "GET /repos/{owner}/{repo}/commits/{ref}": Operation<"/repos/{owner}/{repo}/commits/{ref}", "get">; - /** - * @see https://docs.github.com/rest/reference/checks#list-check-runs-for-a-git-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": Operation<"/repos/{owner}/{repo}/commits/{ref}/check-runs", "get">; - /** - * @see https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": Operation<"/repos/{owner}/{repo}/commits/{ref}/check-suites", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-the-combined-status-for-a-specific-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/status": Operation<"/repos/{owner}/{repo}/commits/{ref}/status", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-commit-statuses-for-a-reference - */ - "GET /repos/{owner}/{repo}/commits/{ref}/statuses": Operation<"/repos/{owner}/{repo}/commits/{ref}/statuses", "get">; - /** - * @see https://docs.github.com/v3/codes_of_conduct/#get-the-code-of-conduct-for-a-repository - */ - "GET /repos/{owner}/{repo}/community/code_of_conduct": Operation<"/repos/{owner}/{repo}/community/code_of_conduct", "get", "scarlet-witch">; - /** - * @see https://docs.github.com/rest/reference/repos#get-community-profile-metrics - */ - "GET /repos/{owner}/{repo}/community/profile": Operation<"/repos/{owner}/{repo}/community/profile", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#compare-two-commits - */ - "GET /repos/{owner}/{repo}/compare/{base}...{head}": Operation<"/repos/{owner}/{repo}/compare/{base}...{head}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-repository-content - */ - "GET /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "get">; - /** - * @see https://docs.github.com/v3/repos/#list-repository-contributors - */ - "GET /repos/{owner}/{repo}/contributors": Operation<"/repos/{owner}/{repo}/contributors", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-deployments - */ - "GET /repos/{owner}/{repo}/deployments": Operation<"/repos/{owner}/{repo}/deployments", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-deployment - */ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-deployment-statuses - */ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-deployment-status - */ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-repository-events - */ - "GET /repos/{owner}/{repo}/events": Operation<"/repos/{owner}/{repo}/events", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-forks - */ - "GET /repos/{owner}/{repo}/forks": Operation<"/repos/{owner}/{repo}/forks", "get">; - /** - * @see https://docs.github.com/rest/reference/git#get-a-blob - */ - "GET /repos/{owner}/{repo}/git/blobs/{file_sha}": Operation<"/repos/{owner}/{repo}/git/blobs/{file_sha}", "get">; - /** - * @see https://docs.github.com/rest/reference/git#get-a-commit - */ - "GET /repos/{owner}/{repo}/git/commits/{commit_sha}": Operation<"/repos/{owner}/{repo}/git/commits/{commit_sha}", "get">; - /** - * @see https://docs.github.com/rest/reference/git#list-matching-references - */ - "GET /repos/{owner}/{repo}/git/matching-refs/{ref}": Operation<"/repos/{owner}/{repo}/git/matching-refs/{ref}", "get">; - /** - * @see https://docs.github.com/rest/reference/git#get-a-reference - */ - "GET /repos/{owner}/{repo}/git/ref/{ref}": Operation<"/repos/{owner}/{repo}/git/ref/{ref}", "get">; - /** - * @see https://docs.github.com/rest/reference/git#get-a-tag - */ - "GET /repos/{owner}/{repo}/git/tags/{tag_sha}": Operation<"/repos/{owner}/{repo}/git/tags/{tag_sha}", "get">; - /** - * @see https://docs.github.com/rest/reference/git#get-a-tree - */ - "GET /repos/{owner}/{repo}/git/trees/{tree_sha}": Operation<"/repos/{owner}/{repo}/git/trees/{tree_sha}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-repository-webhooks - */ - "GET /repos/{owner}/{repo}/hooks": Operation<"/repos/{owner}/{repo}/hooks", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-repository-webhook - */ - "GET /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "get">; - /** - * @see https://docs.github.com/v3/repos#get-a-webhook-configuration-for-a-repository - */ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/config": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "get">; - /** - * @see https://docs.github.com/rest/reference/migrations#get-an-import-status - */ - "GET /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "get">; - /** - * @see https://docs.github.com/rest/reference/migrations#get-commit-authors - */ - "GET /repos/{owner}/{repo}/import/authors": Operation<"/repos/{owner}/{repo}/import/authors", "get">; - /** - * @see https://docs.github.com/rest/reference/migrations#get-large-files - */ - "GET /repos/{owner}/{repo}/import/large_files": Operation<"/repos/{owner}/{repo}/import/large_files", "get">; - /** - * @see https://docs.github.com/v3/apps/#get-a-repository-installation-for-the-authenticated-app - */ - "GET /repos/{owner}/{repo}/installation": Operation<"/repos/{owner}/{repo}/installation", "get">; - /** - * @see https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-a-repository - */ - "GET /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-repository-invitations - */ - "GET /repos/{owner}/{repo}/invitations": Operation<"/repos/{owner}/{repo}/invitations", "get">; - /** - * @see https://docs.github.com/v3/issues/#list-repository-issues - */ - "GET /repos/{owner}/{repo}/issues": Operation<"/repos/{owner}/{repo}/issues", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#list-issue-comments-for-a-repository - */ - "GET /repos/{owner}/{repo}/issues/comments": Operation<"/repos/{owner}/{repo}/issues/comments", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#get-an-issue-comment - */ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "get">; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-an-issue-comment - */ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "get", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/issues#list-issue-events-for-a-repository - */ - "GET /repos/{owner}/{repo}/issues/events": Operation<"/repos/{owner}/{repo}/issues/events", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#get-an-issue-event - */ - "GET /repos/{owner}/{repo}/issues/events/{event_id}": Operation<"/repos/{owner}/{repo}/issues/events/{event_id}", "get">; - /** - * @see https://docs.github.com/v3/issues/#get-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#list-issue-comments - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#list-issue-events - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/events": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/events", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#list-labels-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "get">; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "get", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/issues#list-timeline-events-for-an-issue - */ - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/timeline", "get", "mockingbird">; - /** - * @see https://docs.github.com/rest/reference/repos#list-deploy-keys - */ - "GET /repos/{owner}/{repo}/keys": Operation<"/repos/{owner}/{repo}/keys", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-deploy-key - */ - "GET /repos/{owner}/{repo}/keys/{key_id}": Operation<"/repos/{owner}/{repo}/keys/{key_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#list-labels-for-a-repository - */ - "GET /repos/{owner}/{repo}/labels": Operation<"/repos/{owner}/{repo}/labels", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#get-a-label - */ - "GET /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "get">; - /** - * @see https://docs.github.com/v3/repos/#list-repository-languages - */ - "GET /repos/{owner}/{repo}/languages": Operation<"/repos/{owner}/{repo}/languages", "get">; - /** - * @see https://docs.github.com/v3/licenses/#get-the-license-for-a-repository - */ - "GET /repos/{owner}/{repo}/license": Operation<"/repos/{owner}/{repo}/license", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#list-milestones - */ - "GET /repos/{owner}/{repo}/milestones": Operation<"/repos/{owner}/{repo}/milestones", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#get-a-milestone - */ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "get">; - /** - * @see https://docs.github.com/rest/reference/issues#list-labels-for-issues-in-a-milestone - */ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}/labels", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user - */ - "GET /repos/{owner}/{repo}/notifications": Operation<"/repos/{owner}/{repo}/notifications", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-github-pages-site - */ - "GET /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-github-pages-builds - */ - "GET /repos/{owner}/{repo}/pages/builds": Operation<"/repos/{owner}/{repo}/pages/builds", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-latest-pages-build - */ - "GET /repos/{owner}/{repo}/pages/builds/latest": Operation<"/repos/{owner}/{repo}/pages/builds/latest", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-github-pages-build - */ - "GET /repos/{owner}/{repo}/pages/builds/{build_id}": Operation<"/repos/{owner}/{repo}/pages/builds/{build_id}", "get">; - /** - * @see https://docs.github.com/v3/projects/#list-repository-projects - */ - "GET /repos/{owner}/{repo}/projects": Operation<"/repos/{owner}/{repo}/projects", "get", "inertia">; - /** - * @see https://docs.github.com/v3/pulls/#list-pull-requests - */ - "GET /repos/{owner}/{repo}/pulls": Operation<"/repos/{owner}/{repo}/pulls", "get">; - /** - * @see https://docs.github.com/rest/reference/pulls#list-review-comments-in-a-repository - */ - "GET /repos/{owner}/{repo}/pulls/comments": Operation<"/repos/{owner}/{repo}/pulls/comments", "get">; - /** - * @see https://docs.github.com/rest/reference/pulls#get-a-review-comment-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "get">; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-pull-request-review-comment - */ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "get", "squirrel-girl">; - /** - * @see https://docs.github.com/v3/pulls/#get-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}", "get">; - /** - * @see https://docs.github.com/rest/reference/pulls#list-review-comments-on-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "get">; - /** - * @see https://docs.github.com/v3/pulls/#list-commits-on-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/commits", "get">; - /** - * @see https://docs.github.com/v3/pulls/#list-pull-requests-files - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/files", "get">; - /** - * @see https://docs.github.com/v3/pulls/#check-if-a-pull-request-has-been-merged - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/merge": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "get">; - /** - * @see https://docs.github.com/rest/reference/pulls#list-requested-reviewers-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "get">; - /** - * @see https://docs.github.com/rest/reference/pulls#list-reviews-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "get">; - /** - * @see https://docs.github.com/rest/reference/pulls#get-a-review-for-a-pull-request - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/pulls#list-comments-for-a-pull-request-review - */ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-repository-readme - */ - "GET /repos/{owner}/{repo}/readme": Operation<"/repos/{owner}/{repo}/readme", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-releases - */ - "GET /repos/{owner}/{repo}/releases": Operation<"/repos/{owner}/{repo}/releases", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-release-asset - */ - "GET /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-the-latest-release - */ - "GET /repos/{owner}/{repo}/releases/latest": Operation<"/repos/{owner}/{repo}/releases/latest", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-release-by-tag-name - */ - "GET /repos/{owner}/{repo}/releases/tags/{tag}": Operation<"/repos/{owner}/{repo}/releases/tags/{tag}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-a-release - */ - "GET /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-release-assets - */ - "GET /repos/{owner}/{repo}/releases/{release_id}/assets": Operation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "get">; - /** - * @see https://docs.github.com/rest/reference/secret-scanning#list-secret-scanning-alerts-for-a-repository - */ - "GET /repos/{owner}/{repo}/secret-scanning/alerts": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts", "get">; - /** - * @see https://docs.github.com/rest/reference/secret-scanning#get-a-secret-scanning-alert - */ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-stargazers - */ - "GET /repos/{owner}/{repo}/stargazers": Operation<"/repos/{owner}/{repo}/stargazers", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-the-weekly-commit-activity - */ - "GET /repos/{owner}/{repo}/stats/code_frequency": Operation<"/repos/{owner}/{repo}/stats/code_frequency", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-the-last-year-of-commit-activity - */ - "GET /repos/{owner}/{repo}/stats/commit_activity": Operation<"/repos/{owner}/{repo}/stats/commit_activity", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-all-contributor-commit-activity - */ - "GET /repos/{owner}/{repo}/stats/contributors": Operation<"/repos/{owner}/{repo}/stats/contributors", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-the-weekly-commit-count - */ - "GET /repos/{owner}/{repo}/stats/participation": Operation<"/repos/{owner}/{repo}/stats/participation", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-the-hourly-commit-count-for-each-day - */ - "GET /repos/{owner}/{repo}/stats/punch_card": Operation<"/repos/{owner}/{repo}/stats/punch_card", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-watchers - */ - "GET /repos/{owner}/{repo}/subscribers": Operation<"/repos/{owner}/{repo}/subscribers", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#get-a-repository-subscription - */ - "GET /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "get">; - /** - * @see https://docs.github.com/v3/repos/#list-repository-tags - */ - "GET /repos/{owner}/{repo}/tags": Operation<"/repos/{owner}/{repo}/tags", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#download-a-repository-archive - */ - "GET /repos/{owner}/{repo}/tarball/{ref}": Operation<"/repos/{owner}/{repo}/tarball/{ref}", "get">; - /** - * @see https://docs.github.com/v3/repos/#list-repository-teams - */ - "GET /repos/{owner}/{repo}/teams": Operation<"/repos/{owner}/{repo}/teams", "get">; - /** - * @see https://docs.github.com/v3/repos/#get-all-repository-topics - */ - "GET /repos/{owner}/{repo}/topics": Operation<"/repos/{owner}/{repo}/topics", "get", "mercy">; - /** - * @see https://docs.github.com/rest/reference/repos#get-repository-clones - */ - "GET /repos/{owner}/{repo}/traffic/clones": Operation<"/repos/{owner}/{repo}/traffic/clones", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-top-referral-paths - */ - "GET /repos/{owner}/{repo}/traffic/popular/paths": Operation<"/repos/{owner}/{repo}/traffic/popular/paths", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-top-referral-sources - */ - "GET /repos/{owner}/{repo}/traffic/popular/referrers": Operation<"/repos/{owner}/{repo}/traffic/popular/referrers", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#get-page-views - */ - "GET /repos/{owner}/{repo}/traffic/views": Operation<"/repos/{owner}/{repo}/traffic/views", "get">; - /** - * @see https://docs.github.com/v3/repos/#check-if-vulnerability-alerts-are-enabled-for-a-repository - */ - "GET /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "get", "dorian">; - /** - * @see https://docs.github.com/rest/reference/repos#download-a-repository-archive - */ - "GET /repos/{owner}/{repo}/zipball/{ref}": Operation<"/repos/{owner}/{repo}/zipball/{ref}", "get">; - /** - * @see https://docs.github.com/v3/repos/#list-public-repositories - */ - "GET /repositories": Operation<"/repositories", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-provisioned-scim groups-for-an-enterprise - */ - "GET /scim/v2/enterprises/{enterprise}/Groups": Operation<"/scim/v2/enterprises/{enterprise}/Groups", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise group - */ - "GET /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#list-scim-provisioned-identities-for-an-enterprise - */ - "GET /scim/v2/enterprises/{enterprise}/Users": Operation<"/scim/v2/enterprises/{enterprise}/Users", "get">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise-user - */ - "GET /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "get">; - /** - * @see https://docs.github.com/v3/scim/#list-scim-provisioned-identities - */ - "GET /scim/v2/organizations/{org}/Users": Operation<"/scim/v2/organizations/{org}/Users", "get">; - /** - * @see https://docs.github.com/v3/scim/#get-scim-provisioning-information-for-a-user - */ - "GET /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "get">; - /** - * @see https://docs.github.com/v3/search/#search-code - */ - "GET /search/code": Operation<"/search/code", "get">; - /** - * @see https://docs.github.com/v3/search/#search-commits - */ - "GET /search/commits": Operation<"/search/commits", "get", "cloak">; - /** - * @see https://docs.github.com/v3/search/#search-issues-and-pull-requests - */ - "GET /search/issues": Operation<"/search/issues", "get">; - /** - * @see https://docs.github.com/v3/search/#search-labels - */ - "GET /search/labels": Operation<"/search/labels", "get">; - /** - * @see https://docs.github.com/v3/search/#search-repositories - */ - "GET /search/repositories": Operation<"/search/repositories", "get">; - /** - * @see https://docs.github.com/v3/search/#search-topics - */ - "GET /search/topics": Operation<"/search/topics", "get", "mercy">; - /** - * @see https://docs.github.com/v3/search/#search-users - */ - "GET /search/users": Operation<"/search/users", "get">; - /** - * @see https://docs.github.com/v3/teams/#get-a-team-legacy - */ - "GET /teams/{team_id}": Operation<"/teams/{team_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#list-discussions-legacy - */ - "GET /teams/{team_id}/discussions": Operation<"/teams/{team_id}/discussions", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#get-a-discussion-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#list-discussion-comments-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#get-a-discussion-comment-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "get">; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get", "squirrel-girl">; - /** - * @see https://docs.github.com/v3/reactions/#list-reactions-for-a-team-discussion-legacy - */ - "GET /teams/{team_id}/discussions/{discussion_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "get", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations-legacy - */ - "GET /teams/{team_id}/invitations": Operation<"/teams/{team_id}/invitations", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#list-team-members-legacy - */ - "GET /teams/{team_id}/members": Operation<"/teams/{team_id}/members", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#get-team-member-legacy - */ - "GET /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user-legacy - */ - "GET /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "get">; - /** - * @see https://docs.github.com/v3/teams/#list-team-projects-legacy - */ - "GET /teams/{team_id}/projects": Operation<"/teams/{team_id}/projects", "get", "inertia">; - /** - * @see https://docs.github.com/v3/teams/#check-team-permissions-for-a-project-legacy - */ - "GET /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "get", "inertia">; - /** - * @see https://docs.github.com/v3/teams/#list-team-repositories-legacy - */ - "GET /teams/{team_id}/repos": Operation<"/teams/{team_id}/repos", "get">; - /** - * @see https://docs.github.com/v3/teams/#check-team-permissions-for-a-repository-legacy - */ - "GET /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "get">; - /** - * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team-legacy - */ - "GET /teams/{team_id}/team-sync/group-mappings": Operation<"/teams/{team_id}/team-sync/group-mappings", "get">; - /** - * @see https://docs.github.com/v3/teams/#list-child-teams-legacy - */ - "GET /teams/{team_id}/teams": Operation<"/teams/{team_id}/teams", "get">; - /** - * @see https://docs.github.com/v3/users/#get-the-authenticated-user - */ - "GET /user": Operation<"/user", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-users-blocked-by-the-authenticated-user - */ - "GET /user/blocks": Operation<"/user/blocks", "get">; - /** - * @see https://docs.github.com/rest/reference/users#check-if-a-user-is-blocked-by-the-authenticated-user - */ - "GET /user/blocks/{username}": Operation<"/user/blocks/{username}", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-email-addresses-for-the-authenticated-user - */ - "GET /user/emails": Operation<"/user/emails", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-followers-of-the-authenticated-user - */ - "GET /user/followers": Operation<"/user/followers", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-the-people-the-authenticated-user-follows - */ - "GET /user/following": Operation<"/user/following", "get">; - /** - * @see https://docs.github.com/rest/reference/users#check-if-a-person-is-followed-by-the-authenticated-user - */ - "GET /user/following/{username}": Operation<"/user/following/{username}", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-the-authenticated-user - */ - "GET /user/gpg_keys": Operation<"/user/gpg_keys", "get">; - /** - * @see https://docs.github.com/rest/reference/users#get-a-gpg-key-for-the-authenticated-user - */ - "GET /user/gpg_keys/{gpg_key_id}": Operation<"/user/gpg_keys/{gpg_key_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#list-app-installations-accessible-to-the-user-access-token - */ - "GET /user/installations": Operation<"/user/installations", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-user-access-token - */ - "GET /user/installations/{installation_id}/repositories": Operation<"/user/installations/{installation_id}/repositories", "get">; - /** - * @see https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-your-public-repositories - */ - "GET /user/interaction-limits": Operation<"/user/interaction-limits", "get">; - /** - * @see https://docs.github.com/v3/issues/#list-user-account-issues-assigned-to-the-authenticated-user - */ - "GET /user/issues": Operation<"/user/issues", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-public-ssh-keys-for-the-authenticated-user - */ - "GET /user/keys": Operation<"/user/keys", "get">; - /** - * @see https://docs.github.com/rest/reference/users#get-a-public-ssh-key-for-the-authenticated-user - */ - "GET /user/keys/{key_id}": Operation<"/user/keys/{key_id}", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user - */ - "GET /user/marketplace_purchases": Operation<"/user/marketplace_purchases", "get">; - /** - * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user-stubbed - */ - "GET /user/marketplace_purchases/stubbed": Operation<"/user/marketplace_purchases/stubbed", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#list-organization-memberships-for-the-authenticated-user - */ - "GET /user/memberships/orgs": Operation<"/user/memberships/orgs", "get">; - /** - * @see https://docs.github.com/rest/reference/orgs#get-an-organization-membership-for-the-authenticated-user - */ - "GET /user/memberships/orgs/{org}": Operation<"/user/memberships/orgs/{org}", "get">; - /** - * @see https://docs.github.com/rest/reference/migrations#list-user-migrations - */ - "GET /user/migrations": Operation<"/user/migrations", "get", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/migrations#get-a-user-migration-status - */ - "GET /user/migrations/{migration_id}": Operation<"/user/migrations/{migration_id}", "get", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive - */ - "GET /user/migrations/{migration_id}/archive": Operation<"/user/migrations/{migration_id}/archive", "get", "wyandotte">; - /** - * @see https://docs.github.com/rest/reference/migrations#list-repositories-for-a-user-migration - */ - "GET /user/migrations/{migration_id}/repositories": Operation<"/user/migrations/{migration_id}/repositories", "get", "wyandotte">; - /** - * @see https://docs.github.com/v3/orgs/#list-organizations-for-the-authenticated-user - */ - "GET /user/orgs": Operation<"/user/orgs", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-public-email-addresses-for-the-authenticated-user - */ - "GET /user/public_emails": Operation<"/user/public_emails", "get">; - /** - * @see https://docs.github.com/v3/repos/#list-repositories-for-the-authenticated-user - */ - "GET /user/repos": Operation<"/user/repos", "get">; - /** - * @see https://docs.github.com/rest/reference/repos#list-repository-invitations-for-the-authenticated-user - */ - "GET /user/repository_invitations": Operation<"/user/repository_invitations", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-the-authenticated-user - */ - "GET /user/starred": Operation<"/user/starred", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#check-if-a-repository-is-starred-by-the-authenticated-user - */ - "GET /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-the-authenticated-user - */ - "GET /user/subscriptions": Operation<"/user/subscriptions", "get">; - /** - * @see https://docs.github.com/v3/teams/#list-teams-for-the-authenticated-user - */ - "GET /user/teams": Operation<"/user/teams", "get">; - /** - * @see https://docs.github.com/v3/users/#list-users - */ - "GET /users": Operation<"/users", "get">; - /** - * @see https://docs.github.com/v3/users/#get-a-user - */ - "GET /users/{username}": Operation<"/users/{username}", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-events-for-the-authenticated-user - */ - "GET /users/{username}/events": Operation<"/users/{username}/events", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-organization-events-for-the-authenticated-user - */ - "GET /users/{username}/events/orgs/{org}": Operation<"/users/{username}/events/orgs/{org}", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-user - */ - "GET /users/{username}/events/public": Operation<"/users/{username}/events/public", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-followers-of-a-user - */ - "GET /users/{username}/followers": Operation<"/users/{username}/followers", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-the-people-a-user-follows - */ - "GET /users/{username}/following": Operation<"/users/{username}/following", "get">; - /** - * @see https://docs.github.com/rest/reference/users#check-if-a-user-follows-another-user - */ - "GET /users/{username}/following/{target_user}": Operation<"/users/{username}/following/{target_user}", "get">; - /** - * @see https://docs.github.com/v3/gists/#list-gists-for-a-user - */ - "GET /users/{username}/gists": Operation<"/users/{username}/gists", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-a-user - */ - "GET /users/{username}/gpg_keys": Operation<"/users/{username}/gpg_keys", "get">; - /** - * @see https://docs.github.com/v3/users/#get-contextual-information-for-a-user - */ - "GET /users/{username}/hovercard": Operation<"/users/{username}/hovercard", "get">; - /** - * @see https://docs.github.com/v3/apps/#get-a-user-installation-for-the-authenticated-app - */ - "GET /users/{username}/installation": Operation<"/users/{username}/installation", "get">; - /** - * @see https://docs.github.com/rest/reference/users#list-public-keys-for-a-user - */ - "GET /users/{username}/keys": Operation<"/users/{username}/keys", "get">; - /** - * @see https://docs.github.com/v3/orgs/#list-organizations-for-a-user - */ - "GET /users/{username}/orgs": Operation<"/users/{username}/orgs", "get">; - /** - * @see https://docs.github.com/v3/projects/#list-user-projects - */ - "GET /users/{username}/projects": Operation<"/users/{username}/projects", "get", "inertia">; - /** - * @see https://docs.github.com/rest/reference/activity#list-events-received-by-the-authenticated-user - */ - "GET /users/{username}/received_events": Operation<"/users/{username}/received_events", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-public-events-received-by-a-user - */ - "GET /users/{username}/received_events/public": Operation<"/users/{username}/received_events/public", "get">; - /** - * @see https://docs.github.com/v3/repos/#list-repositories-for-a-user - */ - "GET /users/{username}/repos": Operation<"/users/{username}/repos", "get">; - /** - * @see https://docs.github.com/v3/billing/#get-github-actions-billing-for-a-user - */ - "GET /users/{username}/settings/billing/actions": Operation<"/users/{username}/settings/billing/actions", "get">; - /** - * @see https://docs.github.com/v3/billing/#get-github-packages-billing-for-a-user - */ - "GET /users/{username}/settings/billing/packages": Operation<"/users/{username}/settings/billing/packages", "get">; - /** - * @see https://docs.github.com/v3/billing/#get-shared-storage-billing-for-a-user - */ - "GET /users/{username}/settings/billing/shared-storage": Operation<"/users/{username}/settings/billing/shared-storage", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-a-user - */ - "GET /users/{username}/starred": Operation<"/users/{username}/starred", "get">; - /** - * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-a-user - */ - "GET /users/{username}/subscriptions": Operation<"/users/{username}/subscriptions", "get">; - /** - * @see - */ - "GET /zen": Operation<"/zen", "get">; - /** - * @see https://docs.github.com/v3/apps#update-a-webhook-configuration-for-an-app - */ - "PATCH /app/hook/config": Operation<"/app/hook/config", "patch">; - /** - * @see https://docs.github.com/rest/reference/apps#reset-a-token - */ - "PATCH /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "patch">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#update-an-existing-authorization - */ - "PATCH /authorizations/{authorization_id}": Operation<"/authorizations/{authorization_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#update-a-self-hosted-runner-group-for-an-enterprise - */ - "PATCH /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}", "patch">; - /** - * @see https://docs.github.com/v3/gists/#update-a-gist - */ - "PATCH /gists/{gist_id}": Operation<"/gists/{gist_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/gists#update-a-gist-comment - */ - "PATCH /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/activity#mark-a-thread-as-read - */ - "PATCH /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "patch">; - /** - * @see https://docs.github.com/v3/orgs/#update-an-organization - */ - "PATCH /orgs/{org}": Operation<"/orgs/{org}", "patch">; - /** - * @see https://docs.github.com/rest/reference/actions#update-a-self-hosted-runner-group-for-an-organization - */ - "PATCH /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/orgs#update-an-organization-webhook - */ - "PATCH /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "patch">; - /** - * @see https://docs.github.com/v3/orgs#update-a-webhook-configuration-for-an-organization - */ - "PATCH /orgs/{org}/hooks/{hook_id}/config": Operation<"/orgs/{org}/hooks/{hook_id}/config", "patch">; - /** - * @see https://docs.github.com/v3/teams/#update-a-team - */ - "PATCH /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "patch">; - /** - * @see https://docs.github.com/rest/reference/teams#update-a-discussion - */ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "patch">; - /** - * @see https://docs.github.com/rest/reference/teams#update-a-discussion-comment - */ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "patch">; - /** - * @see https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections - */ - "PATCH /orgs/{org}/teams/{team_slug}/team-sync/group-mappings": Operation<"/orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "patch">; - /** - * @see https://docs.github.com/rest/reference/projects#update-a-project-card - */ - "PATCH /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "patch", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#update-a-project-column - */ - "PATCH /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "patch", "inertia">; - /** - * @see https://docs.github.com/v3/projects/#update-a-project - */ - "PATCH /projects/{project_id}": Operation<"/projects/{project_id}", "patch", "inertia">; - /** - * @see https://docs.github.com/v3/repos/#update-a-repository - */ - "PATCH /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "patch">; - /** - * @see https://docs.github.com/rest/reference/repos#update-pull-request-review-protection - */ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "patch">; - /** - * @see https://docs.github.com/rest/reference/repos#update-status-check-potection - */ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "patch">; - /** - * @see https://docs.github.com/rest/reference/checks#update-a-check-run - */ - "PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites - */ - "PATCH /repos/{owner}/{repo}/check-suites/preferences": Operation<"/repos/{owner}/{repo}/check-suites/preferences", "patch">; - /** - * @see https://docs.github.com/v3/code-scanning/#upload-a-code-scanning-alert - */ - "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "patch">; - /** - * @see https://docs.github.com/rest/reference/repos#update-a-commit-comment - */ - "PATCH /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/git#update-a-reference - */ - "PATCH /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "patch">; - /** - * @see https://docs.github.com/rest/reference/repos#update-a-repository-webhook - */ - "PATCH /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "patch">; - /** - * @see https://docs.github.com/v3/repos#update-a-webhook-configuration-for-a-repository - */ - "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "patch">; - /** - * @see https://docs.github.com/rest/reference/migrations#update-an-import - */ - "PATCH /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "patch">; - /** - * @see https://docs.github.com/rest/reference/migrations#map-a-commit-author - */ - "PATCH /repos/{owner}/{repo}/import/authors/{author_id}": Operation<"/repos/{owner}/{repo}/import/authors/{author_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/migrations#update-git-lfs-preference - */ - "PATCH /repos/{owner}/{repo}/import/lfs": Operation<"/repos/{owner}/{repo}/import/lfs", "patch">; - /** - * @see https://docs.github.com/rest/reference/repos#update-a-repository-invitation - */ - "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/issues#update-an-issue-comment - */ - "PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "patch">; - /** - * @see https://docs.github.com/v3/issues/#update-an-issue - */ - "PATCH /repos/{owner}/{repo}/issues/{issue_number}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}", "patch">; - /** - * @see https://docs.github.com/rest/reference/issues#update-a-label - */ - "PATCH /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "patch">; - /** - * @see https://docs.github.com/rest/reference/issues#update-a-milestone - */ - "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "patch">; - /** - * @see https://docs.github.com/rest/reference/pulls#update-a-review-comment-for-a-pull-request - */ - "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "patch">; - /** - * @see https://docs.github.com/v3/pulls/#update-a-pull-request - */ - "PATCH /repos/{owner}/{repo}/pulls/{pull_number}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}", "patch">; - /** - * @see https://docs.github.com/rest/reference/repos#update-a-release-asset - */ - "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/repos#update-a-release - */ - "PATCH /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/secret-scanning#update-a-secret-scanning-alert - */ - "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "patch">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-group - */ - "PATCH /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-user - */ - "PATCH /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "patch">; - /** - * @see https://docs.github.com/v3/scim/#update-an-attribute-for-a-scim-user - */ - "PATCH /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "patch">; - /** - * @see https://docs.github.com/v3/teams/#update-a-team-legacy - */ - "PATCH /teams/{team_id}": Operation<"/teams/{team_id}", "patch">; - /** - * @see https://docs.github.com/rest/reference/teams#update-a-discussion-legacy - */ - "PATCH /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "patch">; - /** - * @see https://docs.github.com/rest/reference/teams#update-a-discussion-comment-legacy - */ - "PATCH /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "patch">; - /** - * @see https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections-legacy - */ - "PATCH /teams/{team_id}/team-sync/group-mappings": Operation<"/teams/{team_id}/team-sync/group-mappings", "patch">; - /** - * @see https://docs.github.com/v3/users/#update-the-authenticated-user - */ - "PATCH /user": Operation<"/user", "patch">; - /** - * @see https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user - */ - "PATCH /user/email/visibility": Operation<"/user/email/visibility", "patch">; - /** - * @see https://docs.github.com/rest/reference/orgs#update-an-organization-membership-for-the-authenticated-user - */ - "PATCH /user/memberships/orgs/{org}": Operation<"/user/memberships/orgs/{org}", "patch">; - /** - * @see https://docs.github.com/rest/reference/repos#accept-a-repository-invitation - */ - "PATCH /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "patch">; - /** - * @see https://docs.github.com/v3/apps/#create-a-github-app-from-a-manifest - */ - "POST /app-manifests/{code}/conversions": Operation<"/app-manifests/{code}/conversions", "post">; - /** - * @see https://docs.github.com/v3/apps/#create-an-installation-access-token-for-an-app - */ - "POST /app/installations/{installation_id}/access_tokens": Operation<"/app/installations/{installation_id}/access_tokens", "post">; - /** - * @see https://docs.github.com/rest/reference/apps#check-a-token - */ - "POST /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "post">; - /** - * @see https://docs.github.com/rest/reference/apps#reset-an-authorization - */ - "POST /applications/{client_id}/tokens/{access_token}": Operation<"/applications/{client_id}/tokens/{access_token}", "post">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization - */ - "POST /authorizations": Operation<"/authorizations", "post">; - /** - * @see https://docs.github.com/rest/reference/apps#create-a-content-attachment - */ - "POST /content_references/{content_reference_id}/attachments": Operation<"/content_references/{content_reference_id}/attachments", "post", "corsair">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#create-self-hosted-runner-group-for-an-enterprise - */ - "POST /enterprises/{enterprise}/actions/runner-groups": Operation<"/enterprises/{enterprise}/actions/runner-groups", "post">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#create-a-registration-token-for-an-enterprise - */ - "POST /enterprises/{enterprise}/actions/runners/registration-token": Operation<"/enterprises/{enterprise}/actions/runners/registration-token", "post">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#create-a-remove-token-for-an-enterprise - */ - "POST /enterprises/{enterprise}/actions/runners/remove-token": Operation<"/enterprises/{enterprise}/actions/runners/remove-token", "post">; - /** - * @see https://docs.github.com/v3/gists/#create-a-gist - */ - "POST /gists": Operation<"/gists", "post">; - /** - * @see https://docs.github.com/rest/reference/gists#create-a-gist-comment - */ - "POST /gists/{gist_id}/comments": Operation<"/gists/{gist_id}/comments", "post">; - /** - * @see https://docs.github.com/v3/gists/#fork-a-gist - */ - "POST /gists/{gist_id}/forks": Operation<"/gists/{gist_id}/forks", "post">; - /** - * @see https://docs.github.com/v3/markdown/#render-a-markdown-document - */ - "POST /markdown": Operation<"/markdown", "post">; - /** - * @see https://docs.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode - */ - "POST /markdown/raw": Operation<"/markdown/raw", "post">; - /** - * @see https://docs.github.com/rest/reference/actions#create-a-self-hosted-runner-group-for-an-organization - */ - "POST /orgs/{org}/actions/runner-groups": Operation<"/orgs/{org}/actions/runner-groups", "post">; - /** - * @see https://docs.github.com/rest/reference/actions#create-a-registration-token-for-an-organization - */ - "POST /orgs/{org}/actions/runners/registration-token": Operation<"/orgs/{org}/actions/runners/registration-token", "post">; - /** - * @see https://docs.github.com/rest/reference/actions#create-a-remove-token-for-an-organization - */ - "POST /orgs/{org}/actions/runners/remove-token": Operation<"/orgs/{org}/actions/runners/remove-token", "post">; - /** - * @see https://docs.github.com/rest/reference/orgs#create-an-organization-webhook - */ - "POST /orgs/{org}/hooks": Operation<"/orgs/{org}/hooks", "post">; - /** - * @see https://docs.github.com/rest/reference/orgs#ping-an-organization-webhook - */ - "POST /orgs/{org}/hooks/{hook_id}/pings": Operation<"/orgs/{org}/hooks/{hook_id}/pings", "post">; - /** - * @see https://docs.github.com/rest/reference/orgs#create-an-organization-invitation - */ - "POST /orgs/{org}/invitations": Operation<"/orgs/{org}/invitations", "post">; - /** - * @see https://docs.github.com/rest/reference/migrations#start-an-organization-migration - */ - "POST /orgs/{org}/migrations": Operation<"/orgs/{org}/migrations", "post">; - /** - * @see https://docs.github.com/v3/projects/#create-an-organization-project - */ - "POST /orgs/{org}/projects": Operation<"/orgs/{org}/projects", "post", "inertia">; - /** - * @see https://docs.github.com/v3/repos/#create-an-organization-repository - */ - "POST /orgs/{org}/repos": Operation<"/orgs/{org}/repos", "post">; - /** - * @see https://docs.github.com/v3/teams/#create-a-team - */ - "POST /orgs/{org}/teams": Operation<"/orgs/{org}/teams", "post">; - /** - * @see https://docs.github.com/rest/reference/teams#create-a-discussion - */ - "POST /orgs/{org}/teams/{team_slug}/discussions": Operation<"/orgs/{org}/teams/{team_slug}/discussions", "post">; - /** - * @see https://docs.github.com/rest/reference/teams#create-a-discussion-comment - */ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "post">; - /** - * @see https://docs.github.com/v3/reactions/#create-reaction-for-a-team-discussion-comment - */ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post", "squirrel-girl">; - /** - * @see https://docs.github.com/v3/reactions/#create-reaction-for-a-team-discussion - */ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "post", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/projects#move-a-project-card - */ - "POST /projects/columns/cards/{card_id}/moves": Operation<"/projects/columns/cards/{card_id}/moves", "post", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#create-a-project-card - */ - "POST /projects/columns/{column_id}/cards": Operation<"/projects/columns/{column_id}/cards", "post", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#move-a-project-column - */ - "POST /projects/columns/{column_id}/moves": Operation<"/projects/columns/{column_id}/moves", "post", "inertia">; - /** - * @see https://docs.github.com/rest/reference/projects#create-a-project-column - */ - "POST /projects/{project_id}/columns": Operation<"/projects/{project_id}/columns", "post", "inertia">; - /** - * @see https://docs.github.com/rest/reference/actions#create-a-registration-token-for-a-repository - */ - "POST /repos/{owner}/{repo}/actions/runners/registration-token": Operation<"/repos/{owner}/{repo}/actions/runners/registration-token", "post">; - /** - * @see https://docs.github.com/rest/reference/actions#create-a-remove-token-for-a-repository - */ - "POST /repos/{owner}/{repo}/actions/runners/remove-token": Operation<"/repos/{owner}/{repo}/actions/runners/remove-token", "post">; - /** - * @see https://docs.github.com/rest/reference/actions#cancel-a-workflow-run - */ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/cancel", "post">; - /** - * @see https://docs.github.com/rest/reference/actions#re-run-a-workflow - */ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/rerun", "post">; - /** - * @see https://docs.github.com/rest/reference/actions#create-a-workflow-dispatch-event - */ - "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#set-admin-branch-protection - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#create-commit-signature-protection - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "post", "zzzax">; - /** - * @see https://docs.github.com/rest/reference/repos#add-status-check-contexts - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#add-app-access-restrictions - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#add-team-access-restrictions - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#add-user-access-restrictions - */ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "post">; - /** - * @see https://docs.github.com/rest/reference/checks#create-a-check-run - */ - "POST /repos/{owner}/{repo}/check-runs": Operation<"/repos/{owner}/{repo}/check-runs", "post">; - /** - * @see https://docs.github.com/rest/reference/checks#create-a-check-suite - */ - "POST /repos/{owner}/{repo}/check-suites": Operation<"/repos/{owner}/{repo}/check-suites", "post">; - /** - * @see https://docs.github.com/rest/reference/checks#rerequest-a-check-suite - */ - "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest", "post">; - /** - * @see https://docs.github.com/v3/code-scanning/#upload-a-sarif-analysis - */ - "POST /repos/{owner}/{repo}/code-scanning/sarifs": Operation<"/repos/{owner}/{repo}/code-scanning/sarifs", "post">; - /** - * @see https://docs.github.com/v3/reactions/#create-reaction-for-a-commit-comment - */ - "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "post", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/repos#create-a-commit-comment - */ - "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#create-a-deployment - */ - "POST /repos/{owner}/{repo}/deployments": Operation<"/repos/{owner}/{repo}/deployments", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#create-a-deployment-status - */ - "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "post">; - /** - * @see https://docs.github.com/v3/repos/#create-a-repository-dispatch-event - */ - "POST /repos/{owner}/{repo}/dispatches": Operation<"/repos/{owner}/{repo}/dispatches", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#create-a-fork - */ - "POST /repos/{owner}/{repo}/forks": Operation<"/repos/{owner}/{repo}/forks", "post">; - /** - * @see https://docs.github.com/rest/reference/git#create-a-blob - */ - "POST /repos/{owner}/{repo}/git/blobs": Operation<"/repos/{owner}/{repo}/git/blobs", "post">; - /** - * @see https://docs.github.com/rest/reference/git#create-a-commit - */ - "POST /repos/{owner}/{repo}/git/commits": Operation<"/repos/{owner}/{repo}/git/commits", "post">; - /** - * @see https://docs.github.com/rest/reference/git#create-a-reference - */ - "POST /repos/{owner}/{repo}/git/refs": Operation<"/repos/{owner}/{repo}/git/refs", "post">; - /** - * @see https://docs.github.com/rest/reference/git#create-a-tag-object - */ - "POST /repos/{owner}/{repo}/git/tags": Operation<"/repos/{owner}/{repo}/git/tags", "post">; - /** - * @see https://docs.github.com/rest/reference/git#create-a-tree - */ - "POST /repos/{owner}/{repo}/git/trees": Operation<"/repos/{owner}/{repo}/git/trees", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#create-a-repository-webhook - */ - "POST /repos/{owner}/{repo}/hooks": Operation<"/repos/{owner}/{repo}/hooks", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#ping-a-repository-webhook - */ - "POST /repos/{owner}/{repo}/hooks/{hook_id}/pings": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/pings", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#test-the-push-repository-webhook - */ - "POST /repos/{owner}/{repo}/hooks/{hook_id}/tests": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/tests", "post">; - /** - * @see https://docs.github.com/v3/issues/#create-an-issue - */ - "POST /repos/{owner}/{repo}/issues": Operation<"/repos/{owner}/{repo}/issues", "post">; - /** - * @see https://docs.github.com/v3/reactions/#create-reaction-for-an-issue-comment - */ - "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "post", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/issues#add-assignees-to-an-issue - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "post">; - /** - * @see https://docs.github.com/rest/reference/issues#create-an-issue-comment - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/comments": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "post">; - /** - * @see https://docs.github.com/rest/reference/issues#add-labels-to-an-issue - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "post">; - /** - * @see https://docs.github.com/v3/reactions/#create-reaction-for-an-issue - */ - "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "post", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/repos#create-a-deploy-key - */ - "POST /repos/{owner}/{repo}/keys": Operation<"/repos/{owner}/{repo}/keys", "post">; - /** - * @see https://docs.github.com/rest/reference/issues#create-a-label - */ - "POST /repos/{owner}/{repo}/labels": Operation<"/repos/{owner}/{repo}/labels", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#merge-a-branch - */ - "POST /repos/{owner}/{repo}/merges": Operation<"/repos/{owner}/{repo}/merges", "post">; - /** - * @see https://docs.github.com/rest/reference/issues#create-a-milestone - */ - "POST /repos/{owner}/{repo}/milestones": Operation<"/repos/{owner}/{repo}/milestones", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#create-a-github-pages-site - */ - "POST /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "post", "switcheroo">; - /** - * @see https://docs.github.com/rest/reference/repos#request-a-github-pages-build - */ - "POST /repos/{owner}/{repo}/pages/builds": Operation<"/repos/{owner}/{repo}/pages/builds", "post">; - /** - * @see https://docs.github.com/v3/projects/#create-a-repository-project - */ - "POST /repos/{owner}/{repo}/projects": Operation<"/repos/{owner}/{repo}/projects", "post", "inertia">; - /** - * @see https://docs.github.com/v3/pulls/#create-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls": Operation<"/repos/{owner}/{repo}/pulls", "post">; - /** - * @see https://docs.github.com/v3/reactions/#create-reaction-for-a-pull-request-review-comment - */ - "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "post", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/pulls#create-a-review-comment-for-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "post">; - /** - * @see https://docs.github.com/rest/reference/pulls#create-a-reply-for-a-review-comment - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies", "post">; - /** - * @see https://docs.github.com/rest/reference/pulls#request-reviewers-for-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "post">; - /** - * @see https://docs.github.com/rest/reference/pulls#create-a-review-for-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "post">; - /** - * @see https://docs.github.com/rest/reference/pulls#submit-a-review-for-a-pull-request - */ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#create-a-release - */ - "POST /repos/{owner}/{repo}/releases": Operation<"/repos/{owner}/{repo}/releases", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#create-a-commit-status - */ - "POST /repos/{owner}/{repo}/statuses/{sha}": Operation<"/repos/{owner}/{repo}/statuses/{sha}", "post">; - /** - * @see https://docs.github.com/v3/repos/#transfer-a-repository - */ - "POST /repos/{owner}/{repo}/transfer": Operation<"/repos/{owner}/{repo}/transfer", "post">; - /** - * @see https://docs.github.com/v3/repos/#create-a-repository-using-a-template - */ - "POST /repos/{template_owner}/{template_repo}/generate": Operation<"/repos/{template_owner}/{template_repo}/generate", "post", "baptiste">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#provision-a-scim-enterprise-group-and-invite-users - */ - "POST /scim/v2/enterprises/{enterprise}/Groups": Operation<"/scim/v2/enterprises/{enterprise}/Groups", "post">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#provision-and-invite-a-scim-enterprise-user - */ - "POST /scim/v2/enterprises/{enterprise}/Users": Operation<"/scim/v2/enterprises/{enterprise}/Users", "post">; - /** - * @see https://docs.github.com/v3/scim/#provision-and-invite-a-scim-user - */ - "POST /scim/v2/organizations/{org}/Users": Operation<"/scim/v2/organizations/{org}/Users", "post">; - /** - * @see https://docs.github.com/rest/reference/teams#create-a-discussion-legacy - */ - "POST /teams/{team_id}/discussions": Operation<"/teams/{team_id}/discussions", "post">; - /** - * @see https://docs.github.com/rest/reference/teams#create-a-discussion-comment-legacy - */ - "POST /teams/{team_id}/discussions/{discussion_number}/comments": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments", "post">; - /** - * @see https://docs.github.com/v3/reactions/#create-reaction-for-a-team-discussion-comment-legacy - */ - "POST /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post", "squirrel-girl">; - /** - * @see https://docs.github.com/v3/reactions/#create-reaction-for-a-team-discussion-legacy - */ - "POST /teams/{team_id}/discussions/{discussion_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "post", "squirrel-girl">; - /** - * @see https://docs.github.com/rest/reference/users#add-an-email-address-for-the-authenticated-user - */ - "POST /user/emails": Operation<"/user/emails", "post">; - /** - * @see https://docs.github.com/rest/reference/users#create-a-gpg-key-for-the-authenticated-user - */ - "POST /user/gpg_keys": Operation<"/user/gpg_keys", "post">; - /** - * @see https://docs.github.com/rest/reference/users#create-a-public-ssh-key-for-the-authenticated-user - */ - "POST /user/keys": Operation<"/user/keys", "post">; - /** - * @see https://docs.github.com/rest/reference/migrations#start-a-user-migration - */ - "POST /user/migrations": Operation<"/user/migrations", "post">; - /** - * @see https://docs.github.com/v3/projects/#create-a-user-project - */ - "POST /user/projects": Operation<"/user/projects", "post", "inertia">; - /** - * @see https://docs.github.com/v3/repos/#create-a-repository-for-the-authenticated-user - */ - "POST /user/repos": Operation<"/user/repos", "post">; - /** - * @see https://docs.github.com/rest/reference/repos#upload-a-release-asset - */ - "POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}": Operation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "post">; - /** - * @see https://docs.github.com/v3/apps/#suspend-an-app-installation - */ - "PUT /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "put">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#get-or-create-an-authorization-for-a-specific-app - */ - "PUT /authorizations/clients/{client_id}": Operation<"/authorizations/clients/{client_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/oauth-authorizations#get-or-create-an-authorization-for-a-specific-app-and-fingerprint - */ - "PUT /authorizations/clients/{client_id}/{fingerprint}": Operation<"/authorizations/clients/{client_id}/{fingerprint}", "put">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#set-github-actions-permissions-for-an-enterprise - */ - "PUT /enterprises/{enterprise}/actions/permissions": Operation<"/enterprises/{enterprise}/actions/permissions", "put">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#set-selected-organizations-enabled-for-github-actions-in-an-enterprise - */ - "PUT /enterprises/{enterprise}/actions/permissions/organizations": Operation<"/enterprises/{enterprise}/actions/permissions/organizations", "put">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#enable-a-selected-organization-for-github-actions-in-an-enterprise - */ - "PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/permissions/organizations/{org_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#set-allowed-actions-for-an-enterprise - */ - "PUT /enterprises/{enterprise}/actions/permissions/selected-actions": Operation<"/enterprises/{enterprise}/actions/permissions/selected-actions", "put">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#set-organization-access-to-a-self-hosted-runner-group-in-an-enterprise - */ - "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "put">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#add-organization-access-to-a-self-hosted-runner-group-in-an-enterprise - */ - "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#set-self-hosted-runners-in-a-group-for-an-enterprise - */ - "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "put">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#add-a-self-hosted-runner-to-a-group-for-an-enterprise - */ - "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "put">; - /** - * @see https://docs.github.com/v3/gists/#star-a-gist - */ - "PUT /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "put">; - /** - * @see https://docs.github.com/rest/reference/activity#mark-notifications-as-read - */ - "PUT /notifications": Operation<"/notifications", "put">; - /** - * @see https://docs.github.com/rest/reference/activity#set-a-thread-subscription - */ - "PUT /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#set-github-actions-permissions-for-an-organization - */ - "PUT /orgs/{org}/actions/permissions": Operation<"/orgs/{org}/actions/permissions", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#set-selected-repositories-enabled-for-github-actions-in-an-organization - */ - "PUT /orgs/{org}/actions/permissions/repositories": Operation<"/orgs/{org}/actions/permissions/repositories", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#enable-a-selected-repository-for-github-actions-in-an-organization - */ - "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#set-allowed-actions-for-an-organization - */ - "PUT /orgs/{org}/actions/permissions/selected-actions": Operation<"/orgs/{org}/actions/permissions/selected-actions", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#set-repository-access-to-a-self-hosted-runner-group-in-an-organization - */ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#add-repository-acess-to-a-self-hosted-runner-group-in-an-organization - */ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-organization - */ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#add-a-self-hosted-runner-to-a-group-for-an-organization - */ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret - */ - "PUT /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret - */ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#add-selected-repository-to-an-organization-secret - */ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/orgs#block-a-user-from-an-organization - */ - "PUT /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "put">; - /** - * @see https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-an-organization - */ - "PUT /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "put">; - /** - * @see https://docs.github.com/rest/reference/orgs#set-organization-membership-for-a-user - */ - "PUT /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "put">; - /** - * @see https://docs.github.com/rest/reference/orgs#convert-an-organization-member-to-outside-collaborator - */ - "PUT /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "put">; - /** - * @see https://docs.github.com/rest/reference/orgs#set-public-organization-membership-for-the-authenticated-user - */ - "PUT /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "put">; - /** - * @see https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user - */ - "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "put">; - /** - * @see https://docs.github.com/v3/teams/#add-or-update-team-project-permissions - */ - "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "put", "inertia">; - /** - * @see https://docs.github.com/v3/teams/#add-or-update-team-repository-permissions - */ - "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "put">; - /** - * @see https://docs.github.com/rest/reference/projects#add-project-collaborator - */ - "PUT /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "put", "inertia">; - /** - * @see https://docs.github.com/rest/reference/actions#set-github-actions-permissions-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/permissions": Operation<"/repos/{owner}/{repo}/actions/permissions", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#set-allowed-actions-for-a-repository - */ - "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions": Operation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#create-or-update-a-repository-secret - */ - "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#disable-a-workflow - */ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable", "put">; - /** - * @see https://docs.github.com/rest/reference/actions#enable-a-workflow - */ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable", "put">; - /** - * @see https://docs.github.com/v3/repos/#enable-automated-security-fixes - */ - "PUT /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "put", "london">; - /** - * @see https://docs.github.com/rest/reference/repos#update-branch-protection - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "put">; - /** - * @see https://docs.github.com/rest/reference/repos#set-status-check-contexts - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "put">; - /** - * @see https://docs.github.com/rest/reference/repos#set-app-access-restrictions - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "put">; - /** - * @see https://docs.github.com/rest/reference/repos#set-team-access-restrictions - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "put">; - /** - * @see https://docs.github.com/rest/reference/repos#set-user-access-restrictions - */ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "put">; - /** - * @see https://docs.github.com/rest/reference/repos#add-a-repository-collaborator - */ - "PUT /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "put">; - /** - * @see https://docs.github.com/rest/reference/repos#create-or-update-file-contents - */ - "PUT /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "put">; - /** - * @see https://docs.github.com/rest/reference/migrations#start-an-import - */ - "PUT /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "put">; - /** - * @see https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-a-repository - */ - "PUT /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "put">; - /** - * @see https://docs.github.com/rest/reference/issues#set-labels-for-an-issue - */ - "PUT /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "put">; - /** - * @see https://docs.github.com/v3/issues/#lock-an-issue - */ - "PUT /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "put">; - /** - * @see https://docs.github.com/rest/reference/activity#mark-repository-notifications-as-read - */ - "PUT /repos/{owner}/{repo}/notifications": Operation<"/repos/{owner}/{repo}/notifications", "put">; - /** - * @see https://docs.github.com/rest/reference/repos#update-information-about-a-github-pages-site - */ - "PUT /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "put">; - /** - * @see https://docs.github.com/v3/pulls/#merge-a-pull-request - */ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "put">; - /** - * @see https://docs.github.com/rest/reference/pulls#update-a-review-for-a-pull-request - */ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/pulls#dismiss-a-review-for-a-pull-request - */ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals", "put">; - /** - * @see https://docs.github.com/v3/pulls/#update-a-pull-request-branch - */ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/update-branch", "put", "lydian">; - /** - * @see https://docs.github.com/rest/reference/activity#set-a-repository-subscription - */ - "PUT /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "put">; - /** - * @see https://docs.github.com/v3/repos/#replace-all-repository-topics - */ - "PUT /repos/{owner}/{repo}/topics": Operation<"/repos/{owner}/{repo}/topics", "put", "mercy">; - /** - * @see https://docs.github.com/v3/repos/#enable-vulnerability-alerts - */ - "PUT /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "put", "dorian">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-group - */ - "PUT /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-user - */ - "PUT /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "put">; - /** - * @see https://docs.github.com/v3/scim/#set-scim-information-for-a-provisioned-user - */ - "PUT /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/teams#add-team-member-legacy - */ - "PUT /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "put">; - /** - * @see https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user-legacy - */ - "PUT /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "put">; - /** - * @see https://docs.github.com/v3/teams/#add-or-update-team-project-permissions-legacy - */ - "PUT /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "put", "inertia">; - /** - * @see https://docs.github.com/v3/teams/#add-or-update-team-repository-permissions-legacy - */ - "PUT /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "put">; - /** - * @see https://docs.github.com/rest/reference/users#block-a-user - */ - "PUT /user/blocks/{username}": Operation<"/user/blocks/{username}", "put">; - /** - * @see https://docs.github.com/rest/reference/users#follow-a-user - */ - "PUT /user/following/{username}": Operation<"/user/following/{username}", "put">; - /** - * @see https://docs.github.com/rest/reference/apps#add-a-repository-to-an-app-installation - */ - "PUT /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "put">; - /** - * @see https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-your-public-repositories - */ - "PUT /user/interaction-limits": Operation<"/user/interaction-limits", "put">; - /** - * @see https://docs.github.com/rest/reference/activity#star-a-repository-for-the-authenticated-user - */ - "PUT /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "put">; -} -export {}; diff --git a/node_modules/@octokit/types/dist-types/index.d.ts b/node_modules/@octokit/types/dist-types/index.d.ts deleted file mode 100644 index 004ae9b22..000000000 --- a/node_modules/@octokit/types/dist-types/index.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export * from "./AuthInterface"; -export * from "./EndpointDefaults"; -export * from "./EndpointInterface"; -export * from "./EndpointOptions"; -export * from "./Fetch"; -export * from "./OctokitResponse"; -export * from "./RequestError"; -export * from "./RequestHeaders"; -export * from "./RequestInterface"; -export * from "./RequestMethod"; -export * from "./RequestOptions"; -export * from "./RequestParameters"; -export * from "./RequestRequestOptions"; -export * from "./ResponseHeaders"; -export * from "./Route"; -export * from "./Signal"; -export * from "./StrategyInterface"; -export * from "./Url"; -export * from "./VERSION"; -export * from "./GetResponseTypeFromEndpointMethod"; -export * from "./generated/Endpoints"; diff --git a/node_modules/@octokit/types/dist-web/index.js b/node_modules/@octokit/types/dist-web/index.js deleted file mode 100644 index f444cb9aa..000000000 --- a/node_modules/@octokit/types/dist-web/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const VERSION = "6.1.2"; - -export { VERSION }; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/types/dist-web/index.js.map b/node_modules/@octokit/types/dist-web/index.js.map deleted file mode 100644 index cd0e254a5..000000000 --- a/node_modules/@octokit/types/dist-web/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../dist-src/VERSION.js"],"sourcesContent":["export const VERSION = \"0.0.0-development\";\n"],"names":[],"mappings":"AAAY,MAAC,OAAO,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/types/package.json b/node_modules/@octokit/types/package.json deleted file mode 100644 index a68eb0501..000000000 --- a/node_modules/@octokit/types/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_from": "@octokit/types@^6.0.3", - "_id": "@octokit/types@6.1.2", - "_inBundle": false, - "_integrity": "sha512-LPCpcLbcky7fWfHCTuc7tMiSHFpFlrThJqVdaHgowBTMS0ijlZFfonQC/C1PrZOjD4xRCYgBqH9yttEATGE/nw==", - "_location": "/@octokit/types", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@octokit/types@^6.0.3", - "name": "@octokit/types", - "escapedName": "@octokit%2ftypes", - "scope": "@octokit", - "rawSpec": "^6.0.3", - "saveSpec": null, - "fetchSpec": "^6.0.3" - }, - "_requiredBy": [ - "/@octokit/auth-token", - "/@octokit/core", - "/@octokit/endpoint", - "/@octokit/graphql", - "/@octokit/plugin-paginate-rest", - "/@octokit/plugin-rest-endpoint-methods", - "/@octokit/request", - "/@octokit/request-error" - ], - "_resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.1.2.tgz", - "_shasum": "2b3a6ae0b8b71c27c770b4ff3e9ad8f1f538af58", - "_spec": "@octokit/types@^6.0.3", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\core", - "bugs": { - "url": "https://github.com/octokit/types.ts/issues" - }, - "bundleDependencies": false, - "dependencies": { - "@octokit/openapi-types": "^2.0.1", - "@types/node": ">= 8" - }, - "deprecated": false, - "description": "Shared TypeScript definitions for Octokit projects", - "devDependencies": { - "@octokit/graphql": "^4.2.2", - "@pika/pack": "^0.5.0", - "@pika/plugin-build-node": "^0.9.0", - "@pika/plugin-build-web": "^0.9.0", - "@pika/plugin-ts-standard-pkg": "^0.9.0", - "handlebars": "^4.7.6", - "json-schema-to-typescript": "^10.0.0", - "lodash.set": "^4.3.2", - "npm-run-all": "^4.1.5", - "openapi-typescript": "^2.3.1", - "pascal-case": "^3.1.1", - "prettier": "^2.0.0", - "semantic-release": "^17.0.0", - "semantic-release-plugin-update-version-in-files": "^1.0.0", - "sort-keys": "^4.0.0", - "string-to-jsdoc-comment": "^1.0.0", - "typedoc": "^0.19.0", - "typescript": "^4.0.2" - }, - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/octokit/types.ts#readme", - "keywords": [ - "github", - "api", - "sdk", - "toolkit", - "typescript" - ], - "license": "MIT", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "@octokit/types", - "pika": true, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/octokit/types.ts.git" - }, - "sideEffects": false, - "source": "dist-src/index.js", - "types": "dist-types/index.d.ts", - "version": "6.1.2" -} diff --git a/node_modules/@types/node/LICENSE b/node_modules/@types/node/LICENSE deleted file mode 100644 index 9e841e7a2..000000000 --- a/node_modules/@types/node/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE diff --git a/node_modules/@types/node/README.md b/node_modules/@types/node/README.md deleted file mode 100644 index 5f38a9985..000000000 --- a/node_modules/@types/node/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Installation -> `npm install --save @types/node` - -# Summary -This package contains type definitions for Node.js (http://nodejs.org/). - -# Details -Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node. - -### Additional Details - * Last updated: Sun, 14 Feb 2021 19:29:42 GMT - * Dependencies: none - * Global values: `Buffer`, `__dirname`, `__filename`, `clearImmediate`, `clearInterval`, `clearTimeout`, `console`, `exports`, `global`, `module`, `process`, `queueMicrotask`, `require`, `setImmediate`, `setInterval`, `setTimeout` - -# Credits -These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [DefinitelyTyped](https://github.com/DefinitelyTyped), [Alberto Schiabel](https://github.com/jkomyno), [Alexander T.](https://github.com/a-tarasyuk), [Alvis HT Tang](https://github.com/alvis), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [Bruno Scheufler](https://github.com/brunoscheufler), [Chigozirim C.](https://github.com/smac89), [David Junger](https://github.com/touffy), [Deividas Bakanas](https://github.com/DeividasBakanas), [Eugene Y. Q. Shen](https://github.com/eyqs), [Hannes Magnusson](https://github.com/Hannes-Magnusson-CK), [Hoàng Văn Khải](https://github.com/KSXGitHub), [Huw](https://github.com/hoo29), [Kelvin Jin](https://github.com/kjin), [Klaus Meinhardt](https://github.com/ajafff), [Lishude](https://github.com/islishude), [Mariusz Wiktorczyk](https://github.com/mwiktorczyk), [Mohsen Azimi](https://github.com/mohsen1), [Nicolas Even](https://github.com/n-e), [Nikita Galkin](https://github.com/galkin), [Parambir Singh](https://github.com/parambirs), [Sebastian Silbermann](https://github.com/eps1lon), [Simon Schick](https://github.com/SimonSchick), [Thomas den Hollander](https://github.com/ThomasdenH), [Wilco Bakker](https://github.com/WilcoBakker), [wwwy3y3](https://github.com/wwwy3y3), [Samuel Ainsworth](https://github.com/samuela), [Kyle Uehlein](https://github.com/kuehlein), [Jordi Oliveras Rovira](https://github.com/j-oliveras), [Thanik Bhongbhibhat](https://github.com/bhongy), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Minh Son Nguyen](https://github.com/nguymin4), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Surasak Chaisurin](https://github.com/Ryan-Willpower), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Jason Kwok](https://github.com/JasonHK), [Victor Perin](https://github.com/victorperin), and [Yongsheng Zhang](https://github.com/ZYSzys). diff --git a/node_modules/@types/node/assert.d.ts b/node_modules/@types/node/assert.d.ts deleted file mode 100644 index 720bbc633..000000000 --- a/node_modules/@types/node/assert.d.ts +++ /dev/null @@ -1,129 +0,0 @@ -declare module 'node:assert' { - import assert = require('assert'); - export = assert; -} - -declare module 'assert' { - /** An alias of `assert.ok()`. */ - function assert(value: any, message?: string | Error): asserts value; - namespace assert { - class AssertionError extends Error { - actual: any; - expected: any; - operator: string; - generatedMessage: boolean; - code: 'ERR_ASSERTION'; - - constructor(options?: { - /** If provided, the error message is set to this value. */ - message?: string; - /** The `actual` property on the error instance. */ - actual?: any; - /** The `expected` property on the error instance. */ - expected?: any; - /** The `operator` property on the error instance. */ - operator?: string; - /** If provided, the generated stack trace omits frames before this function. */ - // tslint:disable-next-line:ban-types - stackStartFn?: Function; - }); - } - - class CallTracker { - calls(exact?: number): () => void; - calls any>(fn?: Func, exact?: number): Func; - report(): CallTrackerReportInformation[]; - verify(): void; - } - interface CallTrackerReportInformation { - message: string; - /** The actual number of times the function was called. */ - actual: number; - /** The number of times the function was expected to be called. */ - expected: number; - /** The name of the function that is wrapped. */ - operator: string; - /** A stack trace of the function. */ - stack: object; - } - - type AssertPredicate = RegExp | (new () => object) | ((thrown: any) => boolean) | object | Error; - - function fail(message?: string | Error): never; - /** @deprecated since v10.0.0 - use fail([message]) or other assert functions instead. */ - function fail( - actual: any, - expected: any, - message?: string | Error, - operator?: string, - // tslint:disable-next-line:ban-types - stackStartFn?: Function, - ): never; - function ok(value: any, message?: string | Error): asserts value; - /** @deprecated since v9.9.0 - use strictEqual() instead. */ - function equal(actual: any, expected: any, message?: string | Error): void; - /** @deprecated since v9.9.0 - use notStrictEqual() instead. */ - function notEqual(actual: any, expected: any, message?: string | Error): void; - /** @deprecated since v9.9.0 - use deepStrictEqual() instead. */ - function deepEqual(actual: any, expected: any, message?: string | Error): void; - /** @deprecated since v9.9.0 - use notDeepStrictEqual() instead. */ - function notDeepEqual(actual: any, expected: any, message?: string | Error): void; - function strictEqual(actual: any, expected: T, message?: string | Error): asserts actual is T; - function notStrictEqual(actual: any, expected: any, message?: string | Error): void; - function deepStrictEqual(actual: any, expected: T, message?: string | Error): asserts actual is T; - function notDeepStrictEqual(actual: any, expected: any, message?: string | Error): void; - - function throws(block: () => any, message?: string | Error): void; - function throws(block: () => any, error: AssertPredicate, message?: string | Error): void; - function doesNotThrow(block: () => any, message?: string | Error): void; - function doesNotThrow(block: () => any, error: AssertPredicate, message?: string | Error): void; - - function ifError(value: any): asserts value is null | undefined; - - function rejects(block: (() => Promise) | Promise, message?: string | Error): Promise; - function rejects( - block: (() => Promise) | Promise, - error: AssertPredicate, - message?: string | Error, - ): Promise; - function doesNotReject(block: (() => Promise) | Promise, message?: string | Error): Promise; - function doesNotReject( - block: (() => Promise) | Promise, - error: AssertPredicate, - message?: string | Error, - ): Promise; - - function match(value: string, regExp: RegExp, message?: string | Error): void; - function doesNotMatch(value: string, regExp: RegExp, message?: string | Error): void; - - const strict: Omit< - typeof assert, - | 'equal' - | 'notEqual' - | 'deepEqual' - | 'notDeepEqual' - | 'ok' - | 'strictEqual' - | 'deepStrictEqual' - | 'ifError' - | 'strict' - > & { - (value: any, message?: string | Error): asserts value; - equal: typeof strictEqual; - notEqual: typeof notStrictEqual; - deepEqual: typeof deepStrictEqual; - notDeepEqual: typeof notDeepStrictEqual; - - // Mapped types and assertion functions are incompatible? - // TS2775: Assertions require every name in the call target - // to be declared with an explicit type annotation. - ok: typeof ok; - strictEqual: typeof strictEqual; - deepStrictEqual: typeof deepStrictEqual; - ifError: typeof ifError; - strict: typeof strict; - }; - } - - export = assert; -} diff --git a/node_modules/@types/node/async_hooks.d.ts b/node_modules/@types/node/async_hooks.d.ts deleted file mode 100644 index 10dccc64f..000000000 --- a/node_modules/@types/node/async_hooks.d.ts +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Async Hooks module: https://nodejs.org/api/async_hooks.html - */ -declare module 'node:async_hooks' { - export * from 'async_hooks'; -} - -/** - * Async Hooks module: https://nodejs.org/api/async_hooks.html - */ -declare module 'async_hooks' { - /** - * Returns the asyncId of the current execution context. - */ - function executionAsyncId(): number; - - /** - * The resource representing the current execution. - * Useful to store data within the resource. - * - * Resource objects returned by `executionAsyncResource()` are most often internal - * Node.js handle objects with undocumented APIs. Using any functions or properties - * on the object is likely to crash your application and should be avoided. - * - * Using `executionAsyncResource()` in the top-level execution context will - * return an empty object as there is no handle or request object to use, - * but having an object representing the top-level can be helpful. - */ - function executionAsyncResource(): object; - - /** - * Returns the ID of the resource responsible for calling the callback that is currently being executed. - */ - function triggerAsyncId(): number; - - interface HookCallbacks { - /** - * Called when a class is constructed that has the possibility to emit an asynchronous event. - * @param asyncId a unique ID for the async resource - * @param type the type of the async resource - * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created - * @param resource reference to the resource representing the async operation, needs to be released during destroy - */ - init?(asyncId: number, type: string, triggerAsyncId: number, resource: object): void; - - /** - * When an asynchronous operation is initiated or completes a callback is called to notify the user. - * The before callback is called just before said callback is executed. - * @param asyncId the unique identifier assigned to the resource about to execute the callback. - */ - before?(asyncId: number): void; - - /** - * Called immediately after the callback specified in before is completed. - * @param asyncId the unique identifier assigned to the resource which has executed the callback. - */ - after?(asyncId: number): void; - - /** - * Called when a promise has resolve() called. This may not be in the same execution id - * as the promise itself. - * @param asyncId the unique id for the promise that was resolve()d. - */ - promiseResolve?(asyncId: number): void; - - /** - * Called after the resource corresponding to asyncId is destroyed - * @param asyncId a unique ID for the async resource - */ - destroy?(asyncId: number): void; - } - - interface AsyncHook { - /** - * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop. - */ - enable(): this; - - /** - * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled. - */ - disable(): this; - } - - /** - * Registers functions to be called for different lifetime events of each async operation. - * @param options the callbacks to register - * @return an AsyncHooks instance used for disabling and enabling hooks - */ - function createHook(options: HookCallbacks): AsyncHook; - - interface AsyncResourceOptions { - /** - * The ID of the execution context that created this async event. - * Default: `executionAsyncId()` - */ - triggerAsyncId?: number; - - /** - * Disables automatic `emitDestroy` when the object is garbage collected. - * This usually does not need to be set (even if `emitDestroy` is called - * manually), unless the resource's `asyncId` is retrieved and the - * sensitive API's `emitDestroy` is called with it. - * Default: `false` - */ - requireManualDestroy?: boolean; - } - - /** - * The class AsyncResource was designed to be extended by the embedder's async resources. - * Using this users can easily trigger the lifetime events of their own resources. - */ - class AsyncResource { - /** - * AsyncResource() is meant to be extended. Instantiating a - * new AsyncResource() also triggers init. If triggerAsyncId is omitted then - * async_hook.executionAsyncId() is used. - * @param type The type of async event. - * @param triggerAsyncId The ID of the execution context that created - * this async event (default: `executionAsyncId()`), or an - * AsyncResourceOptions object (since 9.3) - */ - constructor(type: string, triggerAsyncId?: number|AsyncResourceOptions); - - /** - * Binds the given function to the current execution context. - * @param fn The function to bind to the current execution context. - * @param type An optional name to associate with the underlying `AsyncResource`. - */ - static bind any>(fn: Func, type?: string): Func & { asyncResource: AsyncResource }; - - /** - * Binds the given function to execute to this `AsyncResource`'s scope. - * @param fn The function to bind to the current `AsyncResource`. - */ - bind any>(fn: Func): Func & { asyncResource: AsyncResource }; - - /** - * Call the provided function with the provided arguments in the - * execution context of the async resource. This will establish the - * context, trigger the AsyncHooks before callbacks, call the function, - * trigger the AsyncHooks after callbacks, and then restore the original - * execution context. - * @param fn The function to call in the execution context of this - * async resource. - * @param thisArg The receiver to be used for the function call. - * @param args Optional arguments to pass to the function. - */ - runInAsyncScope(fn: (this: This, ...args: any[]) => Result, thisArg?: This, ...args: any[]): Result; - - /** - * Call AsyncHooks destroy callbacks. - */ - emitDestroy(): void; - - /** - * @return the unique ID assigned to this AsyncResource instance. - */ - asyncId(): number; - - /** - * @return the trigger ID for this AsyncResource instance. - */ - triggerAsyncId(): number; - } - - /** - * When having multiple instances of `AsyncLocalStorage`, they are independent - * from each other. It is safe to instantiate this class multiple times. - */ - class AsyncLocalStorage { - /** - * This method disables the instance of `AsyncLocalStorage`. All subsequent calls - * to `asyncLocalStorage.getStore()` will return `undefined` until - * `asyncLocalStorage.run()` is called again. - * - * When calling `asyncLocalStorage.disable()`, all current contexts linked to the - * instance will be exited. - * - * Calling `asyncLocalStorage.disable()` is required before the - * `asyncLocalStorage` can be garbage collected. This does not apply to stores - * provided by the `asyncLocalStorage`, as those objects are garbage collected - * along with the corresponding async resources. - * - * This method is to be used when the `asyncLocalStorage` is not in use anymore - * in the current process. - */ - disable(): void; - - /** - * This method returns the current store. If this method is called outside of an - * asynchronous context initialized by calling `asyncLocalStorage.run`, it will - * return `undefined`. - */ - getStore(): T | undefined; - - /** - * This methods runs a function synchronously within a context and return its - * return value. The store is not accessible outside of the callback function or - * the asynchronous operations created within the callback. - * - * Optionally, arguments can be passed to the function. They will be passed to the - * callback function. - * - * I the callback function throws an error, it will be thrown by `run` too. The - * stacktrace will not be impacted by this call and the context will be exited. - */ - // TODO: Apply generic vararg once available - run(store: T, callback: (...args: any[]) => R, ...args: any[]): R; - - /** - * This methods runs a function synchronously outside of a context and return its - * return value. The store is not accessible within the callback function or the - * asynchronous operations created within the callback. - * - * Optionally, arguments can be passed to the function. They will be passed to the - * callback function. - * - * If the callback function throws an error, it will be thrown by `exit` too. The - * stacktrace will not be impacted by this call and the context will be - * re-entered. - */ - // TODO: Apply generic vararg once available - exit(callback: (...args: any[]) => R, ...args: any[]): R; - - /** - * Calling `asyncLocalStorage.enterWith(store)` will transition into the context - * for the remainder of the current synchronous execution and will persist - * through any following asynchronous calls. - */ - enterWith(store: T): void; - } -} diff --git a/node_modules/@types/node/base.d.ts b/node_modules/@types/node/base.d.ts deleted file mode 100644 index fa671790e..000000000 --- a/node_modules/@types/node/base.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -// NOTE: These definitions support NodeJS and TypeScript 3.7. - -// NOTE: TypeScript version-specific augmentations can be found in the following paths: -// - ~/base.d.ts - Shared definitions common to all TypeScript versions -// - ~/index.d.ts - Definitions specific to TypeScript 2.1 -// - ~/ts3.7/base.d.ts - Definitions specific to TypeScript 3.7 -// - ~/ts3.7/index.d.ts - Definitions specific to TypeScript 3.7 with assert pulled in - -// Reference required types from the default lib: -/// -/// -/// -/// - -// Base definitions for all NodeJS modules that are not specific to any version of TypeScript: -/// - -// TypeScript 3.7-specific augmentations: -/// diff --git a/node_modules/@types/node/buffer.d.ts b/node_modules/@types/node/buffer.d.ts deleted file mode 100644 index da17c75a4..000000000 --- a/node_modules/@types/node/buffer.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -declare module 'node:buffer' { - export * from 'buffer'; -} - -declare module 'buffer' { - export const INSPECT_MAX_BYTES: number; - export const kMaxLength: number; - export const kStringMaxLength: number; - export const constants: { - MAX_LENGTH: number; - MAX_STRING_LENGTH: number; - }; - const BuffType: typeof Buffer; - - export type TranscodeEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "latin1" | "binary"; - - export function transcode(source: Uint8Array, fromEnc: TranscodeEncoding, toEnc: TranscodeEncoding): Buffer; - - export const SlowBuffer: { - /** @deprecated since v6.0.0, use `Buffer.allocUnsafeSlow()` */ - new(size: number): Buffer; - prototype: Buffer; - }; - - export { BuffType as Buffer }; -} diff --git a/node_modules/@types/node/child_process.d.ts b/node_modules/@types/node/child_process.d.ts deleted file mode 100644 index f9e34f177..000000000 --- a/node_modules/@types/node/child_process.d.ts +++ /dev/null @@ -1,513 +0,0 @@ -declare module 'node:child_process' { - export * from 'child_process'; -} - -declare module 'child_process' { - import { BaseEncodingOptions } from 'node:fs'; - import * as events from 'node:events'; - import * as net from 'node:net'; - import { Writable, Readable, Stream, Pipe } from 'node:stream'; - - type Serializable = string | object | number | boolean; - type SendHandle = net.Socket | net.Server; - - interface ChildProcess extends events.EventEmitter { - stdin: Writable | null; - stdout: Readable | null; - stderr: Readable | null; - readonly channel?: Pipe | null; - readonly stdio: [ - Writable | null, // stdin - Readable | null, // stdout - Readable | null, // stderr - Readable | Writable | null | undefined, // extra - Readable | Writable | null | undefined // extra - ]; - readonly killed: boolean; - readonly pid: number; - readonly connected: boolean; - readonly exitCode: number | null; - readonly signalCode: NodeJS.Signals | null; - readonly spawnargs: string[]; - readonly spawnfile: string; - kill(signal?: NodeJS.Signals | number): boolean; - send(message: Serializable, callback?: (error: Error | null) => void): boolean; - send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean; - send(message: Serializable, sendHandle?: SendHandle, options?: MessageOptions, callback?: (error: Error | null) => void): boolean; - disconnect(): void; - unref(): void; - ref(): void; - - /** - * events.EventEmitter - * 1. close - * 2. disconnect - * 3. error - * 4. exit - * 5. message - */ - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - addListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", code: number | null, signal: NodeJS.Signals | null): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "exit", code: number | null, signal: NodeJS.Signals | null): boolean; - emit(event: "message", message: Serializable, sendHandle: SendHandle): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - on(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - once(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - prependListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - prependOnceListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - } - - // return this object when stdio option is undefined or not specified - interface ChildProcessWithoutNullStreams extends ChildProcess { - stdin: Writable; - stdout: Readable; - stderr: Readable; - readonly stdio: [ - Writable, // stdin - Readable, // stdout - Readable, // stderr - Readable | Writable | null | undefined, // extra, no modification - Readable | Writable | null | undefined // extra, no modification - ]; - } - - // return this object when stdio option is a tuple of 3 - interface ChildProcessByStdio< - I extends null | Writable, - O extends null | Readable, - E extends null | Readable, - > extends ChildProcess { - stdin: I; - stdout: O; - stderr: E; - readonly stdio: [ - I, - O, - E, - Readable | Writable | null | undefined, // extra, no modification - Readable | Writable | null | undefined // extra, no modification - ]; - } - - interface MessageOptions { - keepOpen?: boolean; - } - - type StdioOptions = "pipe" | "ignore" | "inherit" | Array<("pipe" | "ipc" | "ignore" | "inherit" | Stream | number | null | undefined)>; - - type SerializationType = 'json' | 'advanced'; - - interface MessagingOptions { - /** - * Specify the kind of serialization used for sending messages between processes. - * @default 'json' - */ - serialization?: SerializationType; - } - - interface ProcessEnvOptions { - uid?: number; - gid?: number; - cwd?: string; - env?: NodeJS.ProcessEnv; - } - - interface CommonOptions extends ProcessEnvOptions { - /** - * @default true - */ - windowsHide?: boolean; - /** - * @default 0 - */ - timeout?: number; - } - - interface CommonSpawnOptions extends CommonOptions, MessagingOptions { - argv0?: string; - stdio?: StdioOptions; - shell?: boolean | string; - windowsVerbatimArguments?: boolean; - } - - interface SpawnOptions extends CommonSpawnOptions { - detached?: boolean; - } - - interface SpawnOptionsWithoutStdio extends SpawnOptions { - stdio?: 'pipe' | Array; - } - - type StdioNull = 'inherit' | 'ignore' | Stream; - type StdioPipe = undefined | null | 'pipe'; - - interface SpawnOptionsWithStdioTuple< - Stdin extends StdioNull | StdioPipe, - Stdout extends StdioNull | StdioPipe, - Stderr extends StdioNull | StdioPipe, - > extends SpawnOptions { - stdio: [Stdin, Stdout, Stderr]; - } - - // overloads of spawn without 'args' - function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams; - - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - - function spawn(command: string, options: SpawnOptions): ChildProcess; - - // overloads of spawn with 'args' - function spawn(command: string, args?: ReadonlyArray, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams; - - function spawn( - command: string, - args: ReadonlyArray, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: ReadonlyArray, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: ReadonlyArray, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: ReadonlyArray, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: ReadonlyArray, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: ReadonlyArray, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: ReadonlyArray, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: ReadonlyArray, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - - function spawn(command: string, args: ReadonlyArray, options: SpawnOptions): ChildProcess; - - interface ExecOptions extends CommonOptions { - shell?: string; - maxBuffer?: number; - killSignal?: NodeJS.Signals | number; - } - - interface ExecOptionsWithStringEncoding extends ExecOptions { - encoding: BufferEncoding; - } - - interface ExecOptionsWithBufferEncoding extends ExecOptions { - encoding: BufferEncoding | null; // specify `null`. - } - - interface ExecException extends Error { - cmd?: string; - killed?: boolean; - code?: number; - signal?: NodeJS.Signals; - } - - // no `options` definitely means stdout/stderr are `string`. - function exec(command: string, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. - function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - - // `options` with well known `encoding` means stdout/stderr are definitely `string`. - function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. - // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. - function exec( - command: string, - options: { encoding: BufferEncoding } & ExecOptions, - callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, - ): ChildProcess; - - // `options` without an `encoding` means stdout/stderr are definitely `string`. - function exec(command: string, options: ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess; - - // fallback if nothing else matches. Worst case is always `string | Buffer`. - function exec( - command: string, - options: (BaseEncodingOptions & ExecOptions) | undefined | null, - callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, - ): ChildProcess; - - interface PromiseWithChild extends Promise { - child: ChildProcess; - } - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - namespace exec { - function __promisify__(command: string): PromiseWithChild<{ stdout: string, stderr: string }>; - function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>; - function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>; - function __promisify__(command: string, options: ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>; - function __promisify__(command: string, options?: (BaseEncodingOptions & ExecOptions) | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>; - } - - interface ExecFileOptions extends CommonOptions { - maxBuffer?: number; - killSignal?: NodeJS.Signals | number; - windowsVerbatimArguments?: boolean; - shell?: boolean | string; - } - interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { - encoding: BufferEncoding; - } - interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { - encoding: 'buffer' | null; - } - interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions { - encoding: BufferEncoding; - } - - function execFile(file: string): ChildProcess; - function execFile(file: string, options: (BaseEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess; - function execFile(file: string, args?: ReadonlyArray | null): ChildProcess; - function execFile(file: string, args: ReadonlyArray | undefined | null, options: (BaseEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess; - - // no `options` definitely means stdout/stderr are `string`. - function execFile(file: string, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess; - function execFile(file: string, args: ReadonlyArray | undefined | null, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. - function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - function execFile( - file: string, - args: ReadonlyArray | undefined | null, - options: ExecFileOptionsWithBufferEncoding, - callback: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void, - ): ChildProcess; - - // `options` with well known `encoding` means stdout/stderr are definitely `string`. - function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess; - function execFile( - file: string, - args: ReadonlyArray | undefined | null, - options: ExecFileOptionsWithStringEncoding, - callback: (error: ExecException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - - // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. - // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. - function execFile( - file: string, - options: ExecFileOptionsWithOtherEncoding, - callback: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, - ): ChildProcess; - function execFile( - file: string, - args: ReadonlyArray | undefined | null, - options: ExecFileOptionsWithOtherEncoding, - callback: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, - ): ChildProcess; - - // `options` without an `encoding` means stdout/stderr are definitely `string`. - function execFile(file: string, options: ExecFileOptions, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess; - function execFile( - file: string, - args: ReadonlyArray | undefined | null, - options: ExecFileOptions, - callback: (error: ExecException | null, stdout: string, stderr: string) => void - ): ChildProcess; - - // fallback if nothing else matches. Worst case is always `string | Buffer`. - function execFile( - file: string, - options: (BaseEncodingOptions & ExecFileOptions) | undefined | null, - callback: ((error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null, - ): ChildProcess; - function execFile( - file: string, - args: ReadonlyArray | undefined | null, - options: (BaseEncodingOptions & ExecFileOptions) | undefined | null, - callback: ((error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null, - ): ChildProcess; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - namespace execFile { - function __promisify__(file: string): PromiseWithChild<{ stdout: string, stderr: string }>; - function __promisify__(file: string, args: ReadonlyArray | undefined | null): PromiseWithChild<{ stdout: string, stderr: string }>; - function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>; - function __promisify__(file: string, args: ReadonlyArray | undefined | null, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>; - function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>; - function __promisify__(file: string, args: ReadonlyArray | undefined | null, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>; - function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>; - function __promisify__( - file: string, - args: ReadonlyArray | undefined | null, - options: ExecFileOptionsWithOtherEncoding, - ): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>; - function __promisify__(file: string, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>; - function __promisify__(file: string, args: ReadonlyArray | undefined | null, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>; - function __promisify__(file: string, options: (BaseEncodingOptions & ExecFileOptions) | undefined | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>; - function __promisify__( - file: string, - args: ReadonlyArray | undefined | null, - options: (BaseEncodingOptions & ExecFileOptions) | undefined | null, - ): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>; - } - - interface ForkOptions extends ProcessEnvOptions, MessagingOptions { - execPath?: string; - execArgv?: string[]; - silent?: boolean; - stdio?: StdioOptions; - detached?: boolean; - windowsVerbatimArguments?: boolean; - } - function fork(modulePath: string, options?: ForkOptions): ChildProcess; - function fork(modulePath: string, args?: ReadonlyArray, options?: ForkOptions): ChildProcess; - - interface SpawnSyncOptions extends CommonSpawnOptions { - input?: string | NodeJS.ArrayBufferView; - killSignal?: NodeJS.Signals | number; - maxBuffer?: number; - encoding?: BufferEncoding | 'buffer' | null; - } - interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { - encoding: BufferEncoding; - } - interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { - encoding?: 'buffer' | null; - } - interface SpawnSyncReturns { - pid: number; - output: string[]; - stdout: T; - stderr: T; - status: number | null; - signal: NodeJS.Signals | null; - error?: Error; - } - function spawnSync(command: string): SpawnSyncReturns; - function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; - function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; - function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; - function spawnSync(command: string, args?: ReadonlyArray, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; - function spawnSync(command: string, args?: ReadonlyArray, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; - function spawnSync(command: string, args?: ReadonlyArray, options?: SpawnSyncOptions): SpawnSyncReturns; - - interface ExecSyncOptions extends CommonOptions { - input?: string | Uint8Array; - stdio?: StdioOptions; - shell?: string; - killSignal?: NodeJS.Signals | number; - maxBuffer?: number; - encoding?: BufferEncoding | 'buffer' | null; - } - interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { - encoding: BufferEncoding; - } - interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { - encoding?: 'buffer' | null; - } - function execSync(command: string): Buffer; - function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string; - function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer; - function execSync(command: string, options?: ExecSyncOptions): Buffer; - - interface ExecFileSyncOptions extends CommonOptions { - input?: string | NodeJS.ArrayBufferView; - stdio?: StdioOptions; - killSignal?: NodeJS.Signals | number; - maxBuffer?: number; - encoding?: BufferEncoding; - shell?: boolean | string; - } - interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { - encoding: BufferEncoding; - } - interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { - encoding: BufferEncoding; // specify `null`. - } - function execFileSync(command: string): Buffer; - function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string; - function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer; - function execFileSync(command: string, args?: ReadonlyArray, options?: ExecFileSyncOptionsWithStringEncoding): string; - function execFileSync(command: string, args?: ReadonlyArray, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - function execFileSync(command: string, args?: ReadonlyArray, options?: ExecFileSyncOptions): Buffer; -} diff --git a/node_modules/@types/node/cluster.d.ts b/node_modules/@types/node/cluster.d.ts deleted file mode 100644 index c09ccd625..000000000 --- a/node_modules/@types/node/cluster.d.ts +++ /dev/null @@ -1,266 +0,0 @@ -declare module 'node:cluster' { - export * from 'cluster'; -} - -declare module 'cluster' { - import * as child from 'node:child_process'; - import EventEmitter = require('node:events'); - import * as net from 'node:net'; - - // interfaces - interface ClusterSettings { - execArgv?: string[]; // default: process.execArgv - exec?: string; - args?: string[]; - silent?: boolean; - stdio?: any[]; - uid?: number; - gid?: number; - inspectPort?: number | (() => number); - } - - interface Address { - address: string; - port: number; - addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" - } - - class Worker extends EventEmitter { - id: number; - process: child.ChildProcess; - send(message: child.Serializable, sendHandle?: child.SendHandle, callback?: (error: Error | null) => void): boolean; - kill(signal?: string): void; - destroy(signal?: string): void; - disconnect(): void; - isConnected(): boolean; - isDead(): boolean; - exitedAfterDisconnect: boolean; - - /** - * events.EventEmitter - * 1. disconnect - * 2. error - * 3. exit - * 4. listening - * 5. message - * 6. online - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "listening", listener: (address: Address) => void): this; - addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", error: Error): boolean; - emit(event: "exit", code: number, signal: string): boolean; - emit(event: "listening", address: Address): boolean; - emit(event: "message", message: any, handle: net.Socket | net.Server): boolean; - emit(event: "online"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "listening", listener: (address: Address) => void): this; - on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "listening", listener: (address: Address) => void): this; - once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "listening", listener: (address: Address) => void): this; - prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "listening", listener: (address: Address) => void): this; - prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: () => void): this; - } - - interface Cluster extends EventEmitter { - Worker: Worker; - disconnect(callback?: () => void): void; - fork(env?: any): Worker; - isMaster: boolean; - isWorker: boolean; - schedulingPolicy: number; - settings: ClusterSettings; - setupMaster(settings?: ClusterSettings): void; - worker?: Worker; - workers?: NodeJS.Dict; - - readonly SCHED_NONE: number; - readonly SCHED_RR: number; - - /** - * events.EventEmitter - * 1. disconnect - * 2. exit - * 3. fork - * 4. listening - * 5. message - * 6. online - * 7. setup - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "disconnect", listener: (worker: Worker) => void): this; - addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - addListener(event: "fork", listener: (worker: Worker) => void): this; - addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: (worker: Worker) => void): this; - addListener(event: "setup", listener: (settings: ClusterSettings) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect", worker: Worker): boolean; - emit(event: "exit", worker: Worker, code: number, signal: string): boolean; - emit(event: "fork", worker: Worker): boolean; - emit(event: "listening", worker: Worker, address: Address): boolean; - emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean; - emit(event: "online", worker: Worker): boolean; - emit(event: "setup", settings: ClusterSettings): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "disconnect", listener: (worker: Worker) => void): this; - on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - on(event: "fork", listener: (worker: Worker) => void): this; - on(event: "listening", listener: (worker: Worker, address: Address) => void): this; - on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: (worker: Worker) => void): this; - on(event: "setup", listener: (settings: ClusterSettings) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "disconnect", listener: (worker: Worker) => void): this; - once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - once(event: "fork", listener: (worker: Worker) => void): this; - once(event: "listening", listener: (worker: Worker, address: Address) => void): this; - once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: (worker: Worker) => void): this; - once(event: "setup", listener: (settings: ClusterSettings) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependListener(event: "fork", listener: (worker: Worker) => void): this; - prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: (worker: Worker) => void): this; - prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; - prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; - prependOnceListener(event: "online", listener: (worker: Worker) => void): this; - prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this; - } - - const SCHED_NONE: number; - const SCHED_RR: number; - - function disconnect(callback?: () => void): void; - function fork(env?: any): Worker; - const isMaster: boolean; - const isWorker: boolean; - let schedulingPolicy: number; - const settings: ClusterSettings; - function setupMaster(settings?: ClusterSettings): void; - const worker: Worker; - const workers: NodeJS.Dict; - - /** - * events.EventEmitter - * 1. disconnect - * 2. exit - * 3. fork - * 4. listening - * 5. message - * 6. online - * 7. setup - */ - function addListener(event: string, listener: (...args: any[]) => void): Cluster; - function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - function addListener(event: "fork", listener: (worker: Worker) => void): Cluster; - function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - // the handle is a net.Socket or net.Server object, or undefined. - function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; - function addListener(event: "online", listener: (worker: Worker) => void): Cluster; - function addListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster; - - function emit(event: string | symbol, ...args: any[]): boolean; - function emit(event: "disconnect", worker: Worker): boolean; - function emit(event: "exit", worker: Worker, code: number, signal: string): boolean; - function emit(event: "fork", worker: Worker): boolean; - function emit(event: "listening", worker: Worker, address: Address): boolean; - function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean; - function emit(event: "online", worker: Worker): boolean; - function emit(event: "setup", settings: ClusterSettings): boolean; - - function on(event: string, listener: (...args: any[]) => void): Cluster; - function on(event: "disconnect", listener: (worker: Worker) => void): Cluster; - function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - function on(event: "fork", listener: (worker: Worker) => void): Cluster; - function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - function on(event: "online", listener: (worker: Worker) => void): Cluster; - function on(event: "setup", listener: (settings: ClusterSettings) => void): Cluster; - - function once(event: string, listener: (...args: any[]) => void): Cluster; - function once(event: "disconnect", listener: (worker: Worker) => void): Cluster; - function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - function once(event: "fork", listener: (worker: Worker) => void): Cluster; - function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - function once(event: "online", listener: (worker: Worker) => void): Cluster; - function once(event: "setup", listener: (settings: ClusterSettings) => void): Cluster; - - function removeListener(event: string, listener: (...args: any[]) => void): Cluster; - function removeAllListeners(event?: string): Cluster; - function setMaxListeners(n: number): Cluster; - function getMaxListeners(): number; - function listeners(event: string): Function[]; - function listenerCount(type: string): number; - - function prependListener(event: string, listener: (...args: any[]) => void): Cluster; - function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster; - function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - // the handle is a net.Socket or net.Server object, or undefined. - function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; - function prependListener(event: "online", listener: (worker: Worker) => void): Cluster; - function prependListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster; - - function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster; - function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster; - function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - // the handle is a net.Socket or net.Server object, or undefined. - function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; - function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster; - function prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster; - - function eventNames(): string[]; -} diff --git a/node_modules/@types/node/console.d.ts b/node_modules/@types/node/console.d.ts deleted file mode 100644 index 2851e9944..000000000 --- a/node_modules/@types/node/console.d.ts +++ /dev/null @@ -1,137 +0,0 @@ -declare module 'node:console' { - export = console; -} - -declare module 'console' { - import { InspectOptions } from 'node:util'; - - global { - // This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build - interface Console { - Console: NodeJS.ConsoleConstructor; - /** - * A simple assertion test that verifies whether `value` is truthy. - * If it is not, an `AssertionError` is thrown. - * If provided, the error `message` is formatted using `util.format()` and used as the error message. - */ - assert(value: any, message?: string, ...optionalParams: any[]): void; - /** - * When `stdout` is a TTY, calling `console.clear()` will attempt to clear the TTY. - * When `stdout` is not a TTY, this method does nothing. - */ - clear(): void; - /** - * Maintains an internal counter specific to `label` and outputs to `stdout` the number of times `console.count()` has been called with the given `label`. - */ - count(label?: string): void; - /** - * Resets the internal counter specific to `label`. - */ - countReset(label?: string): void; - /** - * The `console.debug()` function is an alias for {@link console.log()}. - */ - debug(message?: any, ...optionalParams: any[]): void; - /** - * Uses {@link util.inspect()} on `obj` and prints the resulting string to `stdout`. - * This function bypasses any custom `inspect()` function defined on `obj`. - */ - dir(obj: any, options?: InspectOptions): void; - /** - * This method calls {@link console.log()} passing it the arguments received. Please note that this method does not produce any XML formatting - */ - dirxml(...data: any[]): void; - /** - * Prints to `stderr` with newline. - */ - error(message?: any, ...optionalParams: any[]): void; - /** - * Increases indentation of subsequent lines by two spaces. - * If one or more `label`s are provided, those are printed first without the additional indentation. - */ - group(...label: any[]): void; - /** - * The `console.groupCollapsed()` function is an alias for {@link console.group()}. - */ - groupCollapsed(...label: any[]): void; - /** - * Decreases indentation of subsequent lines by two spaces. - */ - groupEnd(): void; - /** - * The {@link console.info()} function is an alias for {@link console.log()}. - */ - info(message?: any, ...optionalParams: any[]): void; - /** - * Prints to `stdout` with newline. - */ - log(message?: any, ...optionalParams: any[]): void; - /** - * This method does not display anything unless used in the inspector. - * Prints to `stdout` the array `array` formatted as a table. - */ - table(tabularData: any, properties?: ReadonlyArray): void; - /** - * Starts a timer that can be used to compute the duration of an operation. Timers are identified by a unique `label`. - */ - time(label?: string): void; - /** - * Stops a timer that was previously started by calling {@link console.time()} and prints the result to `stdout`. - */ - timeEnd(label?: string): void; - /** - * For a timer that was previously started by calling {@link console.time()}, prints the elapsed time and other `data` arguments to `stdout`. - */ - timeLog(label?: string, ...data: any[]): void; - /** - * Prints to `stderr` the string 'Trace :', followed by the {@link util.format()} formatted message and stack trace to the current position in the code. - */ - trace(message?: any, ...optionalParams: any[]): void; - /** - * The {@link console.warn()} function is an alias for {@link console.error()}. - */ - warn(message?: any, ...optionalParams: any[]): void; - - // --- Inspector mode only --- - /** - * This method does not display anything unless used in the inspector. - * Starts a JavaScript CPU profile with an optional label. - */ - profile(label?: string): void; - /** - * This method does not display anything unless used in the inspector. - * Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector. - */ - profileEnd(label?: string): void; - /** - * This method does not display anything unless used in the inspector. - * Adds an event with the label `label` to the Timeline panel of the inspector. - */ - timeStamp(label?: string): void; - } - - var console: Console; - - namespace NodeJS { - interface ConsoleConstructorOptions { - stdout: WritableStream; - stderr?: WritableStream; - ignoreErrors?: boolean; - colorMode?: boolean | 'auto'; - inspectOptions?: InspectOptions; - } - - interface ConsoleConstructor { - prototype: Console; - new(stdout: WritableStream, stderr?: WritableStream, ignoreErrors?: boolean): Console; - new(options: ConsoleConstructorOptions): Console; - } - - interface Global { - console: typeof console; - } - } - } - - export = console; -} diff --git a/node_modules/@types/node/constants.d.ts b/node_modules/@types/node/constants.d.ts deleted file mode 100644 index 5d0b7a73a..000000000 --- a/node_modules/@types/node/constants.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** @deprecated since v6.3.0 - use constants property exposed by the relevant module instead. */ -declare module 'node:constants' { - import exp = require('constants'); - export = exp; -} - -/** @deprecated since v6.3.0 - use constants property exposed by the relevant module instead. */ -declare module 'constants' { - import { constants as osConstants, SignalConstants } from 'node:os'; - import { constants as cryptoConstants } from 'node:crypto'; - import { constants as fsConstants } from 'node:fs'; - - const exp: typeof osConstants.errno & - typeof osConstants.priority & - SignalConstants & - typeof cryptoConstants & - typeof fsConstants; - export = exp; -} diff --git a/node_modules/@types/node/crypto.d.ts b/node_modules/@types/node/crypto.d.ts deleted file mode 100644 index 46762ca6d..000000000 --- a/node_modules/@types/node/crypto.d.ts +++ /dev/null @@ -1,1176 +0,0 @@ -declare module 'node:crypto' { - export * from 'crypto'; -} - -declare module 'crypto' { - import * as stream from 'node:stream'; - - interface Certificate { - /** - * @param spkac - * @returns The challenge component of the `spkac` data structure, - * which includes a public key and a challenge. - */ - exportChallenge(spkac: BinaryLike): Buffer; - /** - * @param spkac - * @param encoding The encoding of the spkac string. - * @returns The public key component of the `spkac` data structure, - * which includes a public key and a challenge. - */ - exportPublicKey(spkac: BinaryLike, encoding?: string): Buffer; - /** - * @param spkac - * @returns `true` if the given `spkac` data structure is valid, - * `false` otherwise. - */ - verifySpkac(spkac: NodeJS.ArrayBufferView): boolean; - } - const Certificate: Certificate & { - /** @deprecated since v14.9.0 - Use static methods of `crypto.Certificate` instead. */ - new (): Certificate; - /** @deprecated since v14.9.0 - Use static methods of `crypto.Certificate` instead. */ - (): Certificate; - }; - - namespace constants { - // https://nodejs.org/dist/latest-v10.x/docs/api/crypto.html#crypto_crypto_constants - const OPENSSL_VERSION_NUMBER: number; - - /** Applies multiple bug workarounds within OpenSSL. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html for detail. */ - const SSL_OP_ALL: number; - /** Allows legacy insecure renegotiation between OpenSSL and unpatched clients or servers. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */ - const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; - /** Attempts to use the server's preferences instead of the client's when selecting a cipher. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */ - const SSL_OP_CIPHER_SERVER_PREFERENCE: number; - /** Instructs OpenSSL to use Cisco's "speshul" version of DTLS_BAD_VER. */ - const SSL_OP_CISCO_ANYCONNECT: number; - /** Instructs OpenSSL to turn on cookie exchange. */ - const SSL_OP_COOKIE_EXCHANGE: number; - /** Instructs OpenSSL to add server-hello extension from an early version of the cryptopro draft. */ - const SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; - /** Instructs OpenSSL to disable a SSL 3.0/TLS 1.0 vulnerability workaround added in OpenSSL 0.9.6d. */ - const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; - /** Instructs OpenSSL to always use the tmp_rsa key when performing RSA operations. */ - const SSL_OP_EPHEMERAL_RSA: number; - /** Allows initial connection to servers that do not support RI. */ - const SSL_OP_LEGACY_SERVER_CONNECT: number; - const SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number; - const SSL_OP_MICROSOFT_SESS_ID_BUG: number; - /** Instructs OpenSSL to disable the workaround for a man-in-the-middle protocol-version vulnerability in the SSL 2.0 server implementation. */ - const SSL_OP_MSIE_SSLV2_RSA_PADDING: number; - const SSL_OP_NETSCAPE_CA_DN_BUG: number; - const SSL_OP_NETSCAPE_CHALLENGE_BUG: number; - const SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number; - const SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number; - /** Instructs OpenSSL to disable support for SSL/TLS compression. */ - const SSL_OP_NO_COMPRESSION: number; - const SSL_OP_NO_QUERY_MTU: number; - /** Instructs OpenSSL to always start a new session when performing renegotiation. */ - const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; - const SSL_OP_NO_SSLv2: number; - const SSL_OP_NO_SSLv3: number; - const SSL_OP_NO_TICKET: number; - const SSL_OP_NO_TLSv1: number; - const SSL_OP_NO_TLSv1_1: number; - const SSL_OP_NO_TLSv1_2: number; - const SSL_OP_PKCS1_CHECK_1: number; - const SSL_OP_PKCS1_CHECK_2: number; - /** Instructs OpenSSL to always create a new key when using temporary/ephemeral DH parameters. */ - const SSL_OP_SINGLE_DH_USE: number; - /** Instructs OpenSSL to always create a new key when using temporary/ephemeral ECDH parameters. */ - const SSL_OP_SINGLE_ECDH_USE: number; - const SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number; - const SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number; - const SSL_OP_TLS_BLOCK_PADDING_BUG: number; - const SSL_OP_TLS_D5_BUG: number; - /** Instructs OpenSSL to disable version rollback attack detection. */ - const SSL_OP_TLS_ROLLBACK_BUG: number; - - const ENGINE_METHOD_RSA: number; - const ENGINE_METHOD_DSA: number; - const ENGINE_METHOD_DH: number; - const ENGINE_METHOD_RAND: number; - const ENGINE_METHOD_EC: number; - const ENGINE_METHOD_CIPHERS: number; - const ENGINE_METHOD_DIGESTS: number; - const ENGINE_METHOD_PKEY_METHS: number; - const ENGINE_METHOD_PKEY_ASN1_METHS: number; - const ENGINE_METHOD_ALL: number; - const ENGINE_METHOD_NONE: number; - - const DH_CHECK_P_NOT_SAFE_PRIME: number; - const DH_CHECK_P_NOT_PRIME: number; - const DH_UNABLE_TO_CHECK_GENERATOR: number; - const DH_NOT_SUITABLE_GENERATOR: number; - - const ALPN_ENABLED: number; - - const RSA_PKCS1_PADDING: number; - const RSA_SSLV23_PADDING: number; - const RSA_NO_PADDING: number; - const RSA_PKCS1_OAEP_PADDING: number; - const RSA_X931_PADDING: number; - const RSA_PKCS1_PSS_PADDING: number; - /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the digest size when signing or verifying. */ - const RSA_PSS_SALTLEN_DIGEST: number; - /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the maximum permissible value when signing data. */ - const RSA_PSS_SALTLEN_MAX_SIGN: number; - /** Causes the salt length for RSA_PKCS1_PSS_PADDING to be determined automatically when verifying a signature. */ - const RSA_PSS_SALTLEN_AUTO: number; - - const POINT_CONVERSION_COMPRESSED: number; - const POINT_CONVERSION_UNCOMPRESSED: number; - const POINT_CONVERSION_HYBRID: number; - - /** Specifies the built-in default cipher list used by Node.js (colon-separated values). */ - const defaultCoreCipherList: string; - /** Specifies the active default cipher list used by the current Node.js process (colon-separated values). */ - const defaultCipherList: string; - } - - interface HashOptions extends stream.TransformOptions { - /** - * For XOF hash functions such as `shake256`, the - * outputLength option can be used to specify the desired output length in bytes. - */ - outputLength?: number; - } - - /** @deprecated since v10.0.0 */ - const fips: boolean; - - function createHash(algorithm: string, options?: HashOptions): Hash; - function createHmac(algorithm: string, key: BinaryLike | KeyObject, options?: stream.TransformOptions): Hmac; - - // https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings - type BinaryToTextEncoding = 'base64' | 'hex'; - type CharacterEncoding = 'utf8' | 'utf-8' | 'utf16le' | 'latin1'; - type LegacyCharacterEncoding = 'ascii' | 'binary' | 'ucs2' | 'ucs-2'; - - type Encoding = BinaryToTextEncoding | CharacterEncoding | LegacyCharacterEncoding; - - type ECDHKeyFormat = 'compressed' | 'uncompressed' | 'hybrid'; - - class Hash extends stream.Transform { - private constructor(); - copy(): Hash; - update(data: BinaryLike): Hash; - update(data: string, input_encoding: Encoding): Hash; - digest(): Buffer; - digest(encoding: BinaryToTextEncoding): string; - } - class Hmac extends stream.Transform { - private constructor(); - update(data: BinaryLike): Hmac; - update(data: string, input_encoding: Encoding): Hmac; - digest(): Buffer; - digest(encoding: BinaryToTextEncoding): string; - } - - type KeyObjectType = 'secret' | 'public' | 'private'; - - interface KeyExportOptions { - type: 'pkcs1' | 'spki' | 'pkcs8' | 'sec1'; - format: T; - cipher?: string; - passphrase?: string | Buffer; - } - - class KeyObject { - private constructor(); - asymmetricKeyType?: KeyType; - /** - * For asymmetric keys, this property represents the size of the embedded key in - * bytes. This property is `undefined` for symmetric keys. - */ - asymmetricKeySize?: number; - export(options: KeyExportOptions<'pem'>): string | Buffer; - export(options?: KeyExportOptions<'der'>): Buffer; - symmetricKeySize?: number; - type: KeyObjectType; - } - - type CipherCCMTypes = 'aes-128-ccm' | 'aes-192-ccm' | 'aes-256-ccm' | 'chacha20-poly1305'; - type CipherGCMTypes = 'aes-128-gcm' | 'aes-192-gcm' | 'aes-256-gcm'; - - type BinaryLike = string | NodeJS.ArrayBufferView; - - type CipherKey = BinaryLike | KeyObject; - - interface CipherCCMOptions extends stream.TransformOptions { - authTagLength: number; - } - interface CipherGCMOptions extends stream.TransformOptions { - authTagLength?: number; - } - /** @deprecated since v10.0.0 use `createCipheriv()` */ - function createCipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): CipherCCM; - /** @deprecated since v10.0.0 use `createCipheriv()` */ - function createCipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): CipherGCM; - /** @deprecated since v10.0.0 use `createCipheriv()` */ - function createCipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Cipher; - - function createCipheriv( - algorithm: CipherCCMTypes, - key: CipherKey, - iv: BinaryLike | null, - options: CipherCCMOptions, - ): CipherCCM; - function createCipheriv( - algorithm: CipherGCMTypes, - key: CipherKey, - iv: BinaryLike | null, - options?: CipherGCMOptions, - ): CipherGCM; - function createCipheriv( - algorithm: string, - key: CipherKey, - iv: BinaryLike | null, - options?: stream.TransformOptions, - ): Cipher; - - class Cipher extends stream.Transform { - private constructor(); - update(data: BinaryLike): Buffer; - update(data: string, input_encoding: Encoding): Buffer; - update(data: NodeJS.ArrayBufferView, input_encoding: undefined, output_encoding: BinaryToTextEncoding): string; - update(data: string, input_encoding: Encoding | undefined, output_encoding: BinaryToTextEncoding): string; - final(): Buffer; - final(output_encoding: BufferEncoding): string; - setAutoPadding(auto_padding?: boolean): this; - // getAuthTag(): Buffer; - // setAAD(buffer: NodeJS.ArrayBufferView): this; - } - interface CipherCCM extends Cipher { - setAAD(buffer: NodeJS.ArrayBufferView, options: { plaintextLength: number }): this; - getAuthTag(): Buffer; - } - interface CipherGCM extends Cipher { - setAAD(buffer: NodeJS.ArrayBufferView, options?: { plaintextLength: number }): this; - getAuthTag(): Buffer; - } - /** @deprecated since v10.0.0 use `createDecipheriv()` */ - function createDecipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): DecipherCCM; - /** @deprecated since v10.0.0 use `createDecipheriv()` */ - function createDecipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): DecipherGCM; - /** @deprecated since v10.0.0 use `createDecipheriv()` */ - function createDecipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Decipher; - - function createDecipheriv( - algorithm: CipherCCMTypes, - key: CipherKey, - iv: BinaryLike | null, - options: CipherCCMOptions, - ): DecipherCCM; - function createDecipheriv( - algorithm: CipherGCMTypes, - key: CipherKey, - iv: BinaryLike | null, - options?: CipherGCMOptions, - ): DecipherGCM; - function createDecipheriv( - algorithm: string, - key: CipherKey, - iv: BinaryLike | null, - options?: stream.TransformOptions, - ): Decipher; - - class Decipher extends stream.Transform { - private constructor(); - update(data: NodeJS.ArrayBufferView): Buffer; - update(data: string, input_encoding: BinaryToTextEncoding): Buffer; - update(data: NodeJS.ArrayBufferView, input_encoding: undefined, output_encoding: Encoding): string; - update(data: string, input_encoding: BinaryToTextEncoding | undefined, output_encoding: Encoding): string; - final(): Buffer; - final(output_encoding: BufferEncoding): string; - setAutoPadding(auto_padding?: boolean): this; - // setAuthTag(tag: NodeJS.ArrayBufferView): this; - // setAAD(buffer: NodeJS.ArrayBufferView): this; - } - interface DecipherCCM extends Decipher { - setAuthTag(buffer: NodeJS.ArrayBufferView): this; - setAAD(buffer: NodeJS.ArrayBufferView, options: { plaintextLength: number }): this; - } - interface DecipherGCM extends Decipher { - setAuthTag(buffer: NodeJS.ArrayBufferView): this; - setAAD(buffer: NodeJS.ArrayBufferView, options?: { plaintextLength: number }): this; - } - - interface PrivateKeyInput { - key: string | Buffer; - format?: KeyFormat; - type?: 'pkcs1' | 'pkcs8' | 'sec1'; - passphrase?: string | Buffer; - } - - interface PublicKeyInput { - key: string | Buffer; - format?: KeyFormat; - type?: 'pkcs1' | 'spki'; - } - - function createPrivateKey(key: PrivateKeyInput | string | Buffer): KeyObject; - function createPublicKey(key: PublicKeyInput | string | Buffer | KeyObject): KeyObject; - function createSecretKey(key: NodeJS.ArrayBufferView): KeyObject; - - function createSign(algorithm: string, options?: stream.WritableOptions): Signer; - - type DSAEncoding = 'der' | 'ieee-p1363'; - - interface SigningOptions { - /** - * @See crypto.constants.RSA_PKCS1_PADDING - */ - padding?: number; - saltLength?: number; - dsaEncoding?: DSAEncoding; - } - - interface SignPrivateKeyInput extends PrivateKeyInput, SigningOptions {} - interface SignKeyObjectInput extends SigningOptions { - key: KeyObject; - } - interface VerifyPublicKeyInput extends PublicKeyInput, SigningOptions {} - interface VerifyKeyObjectInput extends SigningOptions { - key: KeyObject; - } - - type KeyLike = string | Buffer | KeyObject; - - class Signer extends stream.Writable { - private constructor(); - - update(data: BinaryLike): Signer; - update(data: string, input_encoding: Encoding): Signer; - sign(private_key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput): Buffer; - sign( - private_key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput, - output_format: BinaryToTextEncoding, - ): string; - } - - function createVerify(algorithm: string, options?: stream.WritableOptions): Verify; - class Verify extends stream.Writable { - private constructor(); - - update(data: BinaryLike): Verify; - update(data: string, input_encoding: Encoding): Verify; - verify( - object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput, - signature: NodeJS.ArrayBufferView, - ): boolean; - verify( - object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput, - signature: string, - signature_format?: BinaryToTextEncoding, - ): boolean; - // https://nodejs.org/api/crypto.html#crypto_verifier_verify_object_signature_signature_format - // The signature field accepts a TypedArray type, but it is only available starting ES2017 - } - function createDiffieHellman(prime_length: number, generator?: number | NodeJS.ArrayBufferView): DiffieHellman; - function createDiffieHellman(prime: NodeJS.ArrayBufferView): DiffieHellman; - function createDiffieHellman(prime: string, prime_encoding: BinaryToTextEncoding): DiffieHellman; - function createDiffieHellman( - prime: string, - prime_encoding: BinaryToTextEncoding, - generator: number | NodeJS.ArrayBufferView, - ): DiffieHellman; - function createDiffieHellman( - prime: string, - prime_encoding: BinaryToTextEncoding, - generator: string, - generator_encoding: BinaryToTextEncoding, - ): DiffieHellman; - class DiffieHellman { - private constructor(); - generateKeys(): Buffer; - generateKeys(encoding: BinaryToTextEncoding): string; - computeSecret(other_public_key: NodeJS.ArrayBufferView): Buffer; - computeSecret(other_public_key: string, input_encoding: BinaryToTextEncoding): Buffer; - computeSecret(other_public_key: NodeJS.ArrayBufferView, output_encoding: BinaryToTextEncoding): string; - computeSecret( - other_public_key: string, - input_encoding: BinaryToTextEncoding, - output_encoding: BinaryToTextEncoding, - ): string; - getPrime(): Buffer; - getPrime(encoding: BinaryToTextEncoding): string; - getGenerator(): Buffer; - getGenerator(encoding: BinaryToTextEncoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: BinaryToTextEncoding): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: BinaryToTextEncoding): string; - setPublicKey(public_key: NodeJS.ArrayBufferView): void; - setPublicKey(public_key: string, encoding: BufferEncoding): void; - setPrivateKey(private_key: NodeJS.ArrayBufferView): void; - setPrivateKey(private_key: string, encoding: BufferEncoding): void; - verifyError: number; - } - function getDiffieHellman(group_name: string): DiffieHellman; - function pbkdf2( - password: BinaryLike, - salt: BinaryLike, - iterations: number, - keylen: number, - digest: string, - callback: (err: Error | null, derivedKey: Buffer) => any, - ): void; - function pbkdf2Sync( - password: BinaryLike, - salt: BinaryLike, - iterations: number, - keylen: number, - digest: string, - ): Buffer; - - function randomBytes(size: number): Buffer; - function randomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void; - function pseudoRandomBytes(size: number): Buffer; - function pseudoRandomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void; - - function randomInt(max: number): number; - function randomInt(min: number, max: number): number; - function randomInt(max: number, callback: (err: Error | null, value: number) => void): void; - function randomInt(min: number, max: number, callback: (err: Error | null, value: number) => void): void; - - function randomFillSync(buffer: T, offset?: number, size?: number): T; - function randomFill( - buffer: T, - callback: (err: Error | null, buf: T) => void, - ): void; - function randomFill( - buffer: T, - offset: number, - callback: (err: Error | null, buf: T) => void, - ): void; - function randomFill( - buffer: T, - offset: number, - size: number, - callback: (err: Error | null, buf: T) => void, - ): void; - - interface ScryptOptions { - cost?: number; - blockSize?: number; - parallelization?: number; - N?: number; - r?: number; - p?: number; - maxmem?: number; - } - function scrypt( - password: BinaryLike, - salt: BinaryLike, - keylen: number, - callback: (err: Error | null, derivedKey: Buffer) => void, - ): void; - function scrypt( - password: BinaryLike, - salt: BinaryLike, - keylen: number, - options: ScryptOptions, - callback: (err: Error | null, derivedKey: Buffer) => void, - ): void; - function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer; - - interface RsaPublicKey { - key: KeyLike; - padding?: number; - } - interface RsaPrivateKey { - key: KeyLike; - passphrase?: string; - /** - * @default 'sha1' - */ - oaepHash?: string; - oaepLabel?: NodeJS.TypedArray; - padding?: number; - } - function publicEncrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; - function publicDecrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; - function privateDecrypt(private_key: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; - function privateEncrypt(private_key: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; - function getCiphers(): string[]; - function getCurves(): string[]; - function getFips(): 1 | 0; - function getHashes(): string[]; - class ECDH { - private constructor(); - static convertKey( - key: BinaryLike, - curve: string, - inputEncoding?: BinaryToTextEncoding, - outputEncoding?: 'latin1' | 'hex' | 'base64', - format?: 'uncompressed' | 'compressed' | 'hybrid', - ): Buffer | string; - generateKeys(): Buffer; - generateKeys(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string; - computeSecret(other_public_key: NodeJS.ArrayBufferView): Buffer; - computeSecret(other_public_key: string, input_encoding: BinaryToTextEncoding): Buffer; - computeSecret(other_public_key: NodeJS.ArrayBufferView, output_encoding: BinaryToTextEncoding): string; - computeSecret( - other_public_key: string, - input_encoding: BinaryToTextEncoding, - output_encoding: BinaryToTextEncoding, - ): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: BinaryToTextEncoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string; - setPrivateKey(private_key: NodeJS.ArrayBufferView): void; - setPrivateKey(private_key: string, encoding: BinaryToTextEncoding): void; - } - function createECDH(curve_name: string): ECDH; - function timingSafeEqual(a: NodeJS.ArrayBufferView, b: NodeJS.ArrayBufferView): boolean; - /** @deprecated since v10.0.0 */ - const DEFAULT_ENCODING: BufferEncoding; - - type KeyType = 'rsa' | 'dsa' | 'ec' | 'ed25519' | 'ed448' | 'x25519' | 'x448'; - type KeyFormat = 'pem' | 'der'; - - interface BasePrivateKeyEncodingOptions { - format: T; - cipher?: string; - passphrase?: string; - } - - interface KeyPairKeyObjectResult { - publicKey: KeyObject; - privateKey: KeyObject; - } - - interface ED25519KeyPairKeyObjectOptions { - /** - * No options. - */ - } - - interface ED448KeyPairKeyObjectOptions { - /** - * No options. - */ - } - - interface X25519KeyPairKeyObjectOptions { - /** - * No options. - */ - } - - interface X448KeyPairKeyObjectOptions { - /** - * No options. - */ - } - - interface ECKeyPairKeyObjectOptions { - /** - * Name of the curve to use. - */ - namedCurve: string; - } - - interface RSAKeyPairKeyObjectOptions { - /** - * Key size in bits - */ - modulusLength: number; - - /** - * @default 0x10001 - */ - publicExponent?: number; - } - - interface DSAKeyPairKeyObjectOptions { - /** - * Key size in bits - */ - modulusLength: number; - - /** - * Size of q in bits - */ - divisorLength: number; - } - - interface RSAKeyPairOptions { - /** - * Key size in bits - */ - modulusLength: number; - /** - * @default 0x10001 - */ - publicExponent?: number; - - publicKeyEncoding: { - type: 'pkcs1' | 'spki'; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: 'pkcs1' | 'pkcs8'; - }; - } - - interface DSAKeyPairOptions { - /** - * Key size in bits - */ - modulusLength: number; - /** - * Size of q in bits - */ - divisorLength: number; - - publicKeyEncoding: { - type: 'spki'; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: 'pkcs8'; - }; - } - - interface ECKeyPairOptions { - /** - * Name of the curve to use. - */ - namedCurve: string; - - publicKeyEncoding: { - type: 'pkcs1' | 'spki'; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: 'sec1' | 'pkcs8'; - }; - } - - interface ED25519KeyPairOptions { - publicKeyEncoding: { - type: 'spki'; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: 'pkcs8'; - }; - } - - interface ED448KeyPairOptions { - publicKeyEncoding: { - type: 'spki'; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: 'pkcs8'; - }; - } - - interface X25519KeyPairOptions { - publicKeyEncoding: { - type: 'spki'; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: 'pkcs8'; - }; - } - - interface X448KeyPairOptions { - publicKeyEncoding: { - type: 'spki'; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: 'pkcs8'; - }; - } - - interface KeyPairSyncResult { - publicKey: T1; - privateKey: T2; - } - - function generateKeyPairSync( - type: 'rsa', - options: RSAKeyPairOptions<'pem', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'rsa', - options: RSAKeyPairOptions<'pem', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'rsa', - options: RSAKeyPairOptions<'der', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'rsa', - options: RSAKeyPairOptions<'der', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync(type: 'rsa', options: RSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult; - - function generateKeyPairSync( - type: 'dsa', - options: DSAKeyPairOptions<'pem', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'dsa', - options: DSAKeyPairOptions<'pem', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'dsa', - options: DSAKeyPairOptions<'der', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'dsa', - options: DSAKeyPairOptions<'der', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync(type: 'dsa', options: DSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult; - - function generateKeyPairSync( - type: 'ec', - options: ECKeyPairOptions<'pem', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'ec', - options: ECKeyPairOptions<'pem', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'ec', - options: ECKeyPairOptions<'der', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'ec', - options: ECKeyPairOptions<'der', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync(type: 'ec', options: ECKeyPairKeyObjectOptions): KeyPairKeyObjectResult; - - function generateKeyPairSync( - type: 'ed25519', - options: ED25519KeyPairOptions<'pem', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'ed25519', - options: ED25519KeyPairOptions<'pem', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'ed25519', - options: ED25519KeyPairOptions<'der', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'ed25519', - options: ED25519KeyPairOptions<'der', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync(type: 'ed25519', options?: ED25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult; - - function generateKeyPairSync( - type: 'ed448', - options: ED448KeyPairOptions<'pem', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'ed448', - options: ED448KeyPairOptions<'pem', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'ed448', - options: ED448KeyPairOptions<'der', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'ed448', - options: ED448KeyPairOptions<'der', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync(type: 'ed448', options?: ED448KeyPairKeyObjectOptions): KeyPairKeyObjectResult; - - function generateKeyPairSync( - type: 'x25519', - options: X25519KeyPairOptions<'pem', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'x25519', - options: X25519KeyPairOptions<'pem', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'x25519', - options: X25519KeyPairOptions<'der', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'x25519', - options: X25519KeyPairOptions<'der', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync(type: 'x25519', options?: X25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult; - - function generateKeyPairSync( - type: 'x448', - options: X448KeyPairOptions<'pem', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'x448', - options: X448KeyPairOptions<'pem', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'x448', - options: X448KeyPairOptions<'der', 'pem'>, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: 'x448', - options: X448KeyPairOptions<'der', 'der'>, - ): KeyPairSyncResult; - function generateKeyPairSync(type: 'x448', options?: X448KeyPairKeyObjectOptions): KeyPairKeyObjectResult; - - function generateKeyPair( - type: 'rsa', - options: RSAKeyPairOptions<'pem', 'pem'>, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'rsa', - options: RSAKeyPairOptions<'pem', 'der'>, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'rsa', - options: RSAKeyPairOptions<'der', 'pem'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'rsa', - options: RSAKeyPairOptions<'der', 'der'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'rsa', - options: RSAKeyPairKeyObjectOptions, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - - function generateKeyPair( - type: 'dsa', - options: DSAKeyPairOptions<'pem', 'pem'>, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'dsa', - options: DSAKeyPairOptions<'pem', 'der'>, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'dsa', - options: DSAKeyPairOptions<'der', 'pem'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'dsa', - options: DSAKeyPairOptions<'der', 'der'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'dsa', - options: DSAKeyPairKeyObjectOptions, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - - function generateKeyPair( - type: 'ec', - options: ECKeyPairOptions<'pem', 'pem'>, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'ec', - options: ECKeyPairOptions<'pem', 'der'>, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'ec', - options: ECKeyPairOptions<'der', 'pem'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'ec', - options: ECKeyPairOptions<'der', 'der'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'ec', - options: ECKeyPairKeyObjectOptions, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - - function generateKeyPair( - type: 'ed25519', - options: ED25519KeyPairOptions<'pem', 'pem'>, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'ed25519', - options: ED25519KeyPairOptions<'pem', 'der'>, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'ed25519', - options: ED25519KeyPairOptions<'der', 'pem'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'ed25519', - options: ED25519KeyPairOptions<'der', 'der'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'ed25519', - options: ED25519KeyPairKeyObjectOptions | undefined, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - - function generateKeyPair( - type: 'ed448', - options: ED448KeyPairOptions<'pem', 'pem'>, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'ed448', - options: ED448KeyPairOptions<'pem', 'der'>, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'ed448', - options: ED448KeyPairOptions<'der', 'pem'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'ed448', - options: ED448KeyPairOptions<'der', 'der'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'ed448', - options: ED448KeyPairKeyObjectOptions | undefined, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - - function generateKeyPair( - type: 'x25519', - options: X25519KeyPairOptions<'pem', 'pem'>, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'x25519', - options: X25519KeyPairOptions<'pem', 'der'>, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'x25519', - options: X25519KeyPairOptions<'der', 'pem'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'x25519', - options: X25519KeyPairOptions<'der', 'der'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'x25519', - options: X25519KeyPairKeyObjectOptions | undefined, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - - function generateKeyPair( - type: 'x448', - options: X448KeyPairOptions<'pem', 'pem'>, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'x448', - options: X448KeyPairOptions<'pem', 'der'>, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'x448', - options: X448KeyPairOptions<'der', 'pem'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: 'x448', - options: X448KeyPairOptions<'der', 'der'>, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: 'x448', - options: X448KeyPairKeyObjectOptions | undefined, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - - namespace generateKeyPair { - function __promisify__( - type: 'rsa', - options: RSAKeyPairOptions<'pem', 'pem'>, - ): Promise<{ publicKey: string; privateKey: string }>; - function __promisify__( - type: 'rsa', - options: RSAKeyPairOptions<'pem', 'der'>, - ): Promise<{ publicKey: string; privateKey: Buffer }>; - function __promisify__( - type: 'rsa', - options: RSAKeyPairOptions<'der', 'pem'>, - ): Promise<{ publicKey: Buffer; privateKey: string }>; - function __promisify__( - type: 'rsa', - options: RSAKeyPairOptions<'der', 'der'>, - ): Promise<{ publicKey: Buffer; privateKey: Buffer }>; - function __promisify__(type: 'rsa', options: RSAKeyPairKeyObjectOptions): Promise; - - function __promisify__( - type: 'dsa', - options: DSAKeyPairOptions<'pem', 'pem'>, - ): Promise<{ publicKey: string; privateKey: string }>; - function __promisify__( - type: 'dsa', - options: DSAKeyPairOptions<'pem', 'der'>, - ): Promise<{ publicKey: string; privateKey: Buffer }>; - function __promisify__( - type: 'dsa', - options: DSAKeyPairOptions<'der', 'pem'>, - ): Promise<{ publicKey: Buffer; privateKey: string }>; - function __promisify__( - type: 'dsa', - options: DSAKeyPairOptions<'der', 'der'>, - ): Promise<{ publicKey: Buffer; privateKey: Buffer }>; - function __promisify__(type: 'dsa', options: DSAKeyPairKeyObjectOptions): Promise; - - function __promisify__( - type: 'ec', - options: ECKeyPairOptions<'pem', 'pem'>, - ): Promise<{ publicKey: string; privateKey: string }>; - function __promisify__( - type: 'ec', - options: ECKeyPairOptions<'pem', 'der'>, - ): Promise<{ publicKey: string; privateKey: Buffer }>; - function __promisify__( - type: 'ec', - options: ECKeyPairOptions<'der', 'pem'>, - ): Promise<{ publicKey: Buffer; privateKey: string }>; - function __promisify__( - type: 'ec', - options: ECKeyPairOptions<'der', 'der'>, - ): Promise<{ publicKey: Buffer; privateKey: Buffer }>; - function __promisify__(type: 'ec', options: ECKeyPairKeyObjectOptions): Promise; - - function __promisify__( - type: 'ed25519', - options: ED25519KeyPairOptions<'pem', 'pem'>, - ): Promise<{ publicKey: string; privateKey: string }>; - function __promisify__( - type: 'ed25519', - options: ED25519KeyPairOptions<'pem', 'der'>, - ): Promise<{ publicKey: string; privateKey: Buffer }>; - function __promisify__( - type: 'ed25519', - options: ED25519KeyPairOptions<'der', 'pem'>, - ): Promise<{ publicKey: Buffer; privateKey: string }>; - function __promisify__( - type: 'ed25519', - options: ED25519KeyPairOptions<'der', 'der'>, - ): Promise<{ publicKey: Buffer; privateKey: Buffer }>; - function __promisify__( - type: 'ed25519', - options?: ED25519KeyPairKeyObjectOptions, - ): Promise; - - function __promisify__( - type: 'ed448', - options: ED448KeyPairOptions<'pem', 'pem'>, - ): Promise<{ publicKey: string; privateKey: string }>; - function __promisify__( - type: 'ed448', - options: ED448KeyPairOptions<'pem', 'der'>, - ): Promise<{ publicKey: string; privateKey: Buffer }>; - function __promisify__( - type: 'ed448', - options: ED448KeyPairOptions<'der', 'pem'>, - ): Promise<{ publicKey: Buffer; privateKey: string }>; - function __promisify__( - type: 'ed448', - options: ED448KeyPairOptions<'der', 'der'>, - ): Promise<{ publicKey: Buffer; privateKey: Buffer }>; - function __promisify__(type: 'ed448', options?: ED448KeyPairKeyObjectOptions): Promise; - - function __promisify__( - type: 'x25519', - options: X25519KeyPairOptions<'pem', 'pem'>, - ): Promise<{ publicKey: string; privateKey: string }>; - function __promisify__( - type: 'x25519', - options: X25519KeyPairOptions<'pem', 'der'>, - ): Promise<{ publicKey: string; privateKey: Buffer }>; - function __promisify__( - type: 'x25519', - options: X25519KeyPairOptions<'der', 'pem'>, - ): Promise<{ publicKey: Buffer; privateKey: string }>; - function __promisify__( - type: 'x25519', - options: X25519KeyPairOptions<'der', 'der'>, - ): Promise<{ publicKey: Buffer; privateKey: Buffer }>; - function __promisify__( - type: 'x25519', - options?: X25519KeyPairKeyObjectOptions, - ): Promise; - - function __promisify__( - type: 'x448', - options: X448KeyPairOptions<'pem', 'pem'>, - ): Promise<{ publicKey: string; privateKey: string }>; - function __promisify__( - type: 'x448', - options: X448KeyPairOptions<'pem', 'der'>, - ): Promise<{ publicKey: string; privateKey: Buffer }>; - function __promisify__( - type: 'x448', - options: X448KeyPairOptions<'der', 'pem'>, - ): Promise<{ publicKey: Buffer; privateKey: string }>; - function __promisify__( - type: 'x448', - options: X448KeyPairOptions<'der', 'der'>, - ): Promise<{ publicKey: Buffer; privateKey: Buffer }>; - function __promisify__(type: 'x448', options?: X448KeyPairKeyObjectOptions): Promise; - } - - /** - * Calculates and returns the signature for `data` using the given private key and - * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is - * dependent upon the key type (especially Ed25519 and Ed448). - * - * If `key` is not a [`KeyObject`][], this function behaves as if `key` had been - * passed to [`crypto.createPrivateKey()`][]. - */ - function sign( - algorithm: string | null | undefined, - data: NodeJS.ArrayBufferView, - key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput, - ): Buffer; - - /** - * Calculates and returns the signature for `data` using the given private key and - * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is - * dependent upon the key type (especially Ed25519 and Ed448). - * - * If `key` is not a [`KeyObject`][], this function behaves as if `key` had been - * passed to [`crypto.createPublicKey()`][]. - */ - function verify( - algorithm: string | null | undefined, - data: NodeJS.ArrayBufferView, - key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput, - signature: NodeJS.ArrayBufferView, - ): boolean; - - /** - * Computes the Diffie-Hellman secret based on a privateKey and a publicKey. - * Both keys must have the same asymmetricKeyType, which must be one of - * 'dh' (for Diffie-Hellman), 'ec' (for ECDH), 'x448', or 'x25519' (for ECDH-ES). - */ - function diffieHellman(options: { privateKey: KeyObject; publicKey: KeyObject }): Buffer; -} diff --git a/node_modules/@types/node/dgram.d.ts b/node_modules/@types/node/dgram.d.ts deleted file mode 100644 index d84a1ee8e..000000000 --- a/node_modules/@types/node/dgram.d.ts +++ /dev/null @@ -1,145 +0,0 @@ -declare module 'node:dgram' { - export * from 'dgram'; -} - -declare module 'dgram' { - import { AddressInfo } from 'node:net'; - import * as dns from 'node:dns'; - import EventEmitter = require('node:events'); - - interface RemoteInfo { - address: string; - family: 'IPv4' | 'IPv6'; - port: number; - size: number; - } - - interface BindOptions { - port?: number; - address?: string; - exclusive?: boolean; - fd?: number; - } - - type SocketType = "udp4" | "udp6"; - - interface SocketOptions { - type: SocketType; - reuseAddr?: boolean; - /** - * @default false - */ - ipv6Only?: boolean; - recvBufferSize?: number; - sendBufferSize?: number; - lookup?: (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void; - } - - function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - - class Socket extends EventEmitter { - addMembership(multicastAddress: string, multicastInterface?: string): void; - address(): AddressInfo; - bind(port?: number, address?: string, callback?: () => void): void; - bind(port?: number, callback?: () => void): void; - bind(callback?: () => void): void; - bind(options: BindOptions, callback?: () => void): void; - close(callback?: () => void): void; - connect(port: number, address?: string, callback?: () => void): void; - connect(port: number, callback: () => void): void; - disconnect(): void; - dropMembership(multicastAddress: string, multicastInterface?: string): void; - getRecvBufferSize(): number; - getSendBufferSize(): number; - ref(): this; - remoteAddress(): AddressInfo; - send(msg: string | Uint8Array | ReadonlyArray, port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void; - send(msg: string | Uint8Array | ReadonlyArray, port?: number, callback?: (error: Error | null, bytes: number) => void): void; - send(msg: string | Uint8Array | ReadonlyArray, callback?: (error: Error | null, bytes: number) => void): void; - send(msg: string | Uint8Array, offset: number, length: number, port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void; - send(msg: string | Uint8Array, offset: number, length: number, port?: number, callback?: (error: Error | null, bytes: number) => void): void; - send(msg: string | Uint8Array, offset: number, length: number, callback?: (error: Error | null, bytes: number) => void): void; - setBroadcast(flag: boolean): void; - setMulticastInterface(multicastInterface: string): void; - setMulticastLoopback(flag: boolean): void; - setMulticastTTL(ttl: number): void; - setRecvBufferSize(size: number): void; - setSendBufferSize(size: number): void; - setTTL(ttl: number): void; - unref(): this; - /** - * Tells the kernel to join a source-specific multicast channel at the given - * `sourceAddress` and `groupAddress`, using the `multicastInterface` with the - * `IP_ADD_SOURCE_MEMBERSHIP` socket option. - * If the `multicastInterface` argument - * is not specified, the operating system will choose one interface and will add - * membership to it. - * To add membership to every available interface, call - * `socket.addSourceSpecificMembership()` multiple times, once per interface. - */ - addSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void; - - /** - * Instructs the kernel to leave a source-specific multicast channel at the given - * `sourceAddress` and `groupAddress` using the `IP_DROP_SOURCE_MEMBERSHIP` - * socket option. This method is automatically called by the kernel when the - * socket is closed or the process terminates, so most apps will never have - * reason to call this. - * - * If `multicastInterface` is not specified, the operating system will attempt to - * drop membership on all valid interfaces. - */ - dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void; - - /** - * events.EventEmitter - * 1. close - * 2. connect - * 3. error - * 4. listening - * 5. message - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connect", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - addListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "connect"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - emit(event: "message", msg: Buffer, rinfo: RemoteInfo): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "connect", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - on(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "connect", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - once(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connect", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - prependListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connect", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - } -} diff --git a/node_modules/@types/node/dns.d.ts b/node_modules/@types/node/dns.d.ts deleted file mode 100644 index 4152a34d3..000000000 --- a/node_modules/@types/node/dns.d.ts +++ /dev/null @@ -1,384 +0,0 @@ -declare module 'node:dns' { - export * from 'dns'; -} - -declare module 'dns' { - // Supported getaddrinfo flags. - const ADDRCONFIG: number; - const V4MAPPED: number; - /** - * If `dns.V4MAPPED` is specified, return resolved IPv6 addresses as - * well as IPv4 mapped IPv6 addresses. - */ - const ALL: number; - - interface LookupOptions { - family?: number; - hints?: number; - all?: boolean; - verbatim?: boolean; - } - - interface LookupOneOptions extends LookupOptions { - all?: false; - } - - interface LookupAllOptions extends LookupOptions { - all: true; - } - - interface LookupAddress { - address: string; - family: number; - } - - function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void; - function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void; - function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void): void; - function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void): void; - function lookup(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - namespace lookup { - function __promisify__(hostname: string, options: LookupAllOptions): Promise; - function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise; - function __promisify__(hostname: string, options: LookupOptions): Promise; - } - - function lookupService(address: string, port: number, callback: (err: NodeJS.ErrnoException | null, hostname: string, service: string) => void): void; - - namespace lookupService { - function __promisify__(address: string, port: number): Promise<{ hostname: string, service: string }>; - } - - interface ResolveOptions { - ttl: boolean; - } - - interface ResolveWithTtlOptions extends ResolveOptions { - ttl: true; - } - - interface RecordWithTtl { - address: string; - ttl: number; - } - - /** @deprecated Use `AnyARecord` or `AnyAaaaRecord` instead. */ - type AnyRecordWithTtl = AnyARecord | AnyAaaaRecord; - - interface AnyARecord extends RecordWithTtl { - type: "A"; - } - - interface AnyAaaaRecord extends RecordWithTtl { - type: "AAAA"; - } - - interface MxRecord { - priority: number; - exchange: string; - } - - interface AnyMxRecord extends MxRecord { - type: "MX"; - } - - interface NaptrRecord { - flags: string; - service: string; - regexp: string; - replacement: string; - order: number; - preference: number; - } - - interface AnyNaptrRecord extends NaptrRecord { - type: "NAPTR"; - } - - interface SoaRecord { - nsname: string; - hostmaster: string; - serial: number; - refresh: number; - retry: number; - expire: number; - minttl: number; - } - - interface AnySoaRecord extends SoaRecord { - type: "SOA"; - } - - interface SrvRecord { - priority: number; - weight: number; - port: number; - name: string; - } - - interface AnySrvRecord extends SrvRecord { - type: "SRV"; - } - - interface AnyTxtRecord { - type: "TXT"; - entries: string[]; - } - - interface AnyNsRecord { - type: "NS"; - value: string; - } - - interface AnyPtrRecord { - type: "PTR"; - value: string; - } - - interface AnyCnameRecord { - type: "CNAME"; - value: string; - } - - type AnyRecord = AnyARecord | - AnyAaaaRecord | - AnyCnameRecord | - AnyMxRecord | - AnyNaptrRecord | - AnyNsRecord | - AnyPtrRecord | - AnySoaRecord | - AnySrvRecord | - AnyTxtRecord; - - function resolve(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - function resolve(hostname: string, rrtype: "ANY", callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void; - function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void; - function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void; - function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException | null, addresses: SoaRecord) => void): void; - function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void; - function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void; - function resolve( - hostname: string, - rrtype: string, - callback: (err: NodeJS.ErrnoException | null, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]) => void, - ): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - namespace resolve { - function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise; - function __promisify__(hostname: string, rrtype: "ANY"): Promise; - function __promisify__(hostname: string, rrtype: "MX"): Promise; - function __promisify__(hostname: string, rrtype: "NAPTR"): Promise; - function __promisify__(hostname: string, rrtype: "SOA"): Promise; - function __promisify__(hostname: string, rrtype: "SRV"): Promise; - function __promisify__(hostname: string, rrtype: "TXT"): Promise; - function __promisify__(hostname: string, rrtype: string): Promise; - } - - function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void; - function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - namespace resolve4 { - function __promisify__(hostname: string): Promise; - function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; - function __promisify__(hostname: string, options?: ResolveOptions): Promise; - } - - function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void; - function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - namespace resolve6 { - function __promisify__(hostname: string): Promise; - function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; - function __promisify__(hostname: string, options?: ResolveOptions): Promise; - } - - function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - namespace resolveCname { - function __promisify__(hostname: string): Promise; - } - - function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void; - namespace resolveMx { - function __promisify__(hostname: string): Promise; - } - - function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void; - namespace resolveNaptr { - function __promisify__(hostname: string): Promise; - } - - function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - namespace resolveNs { - function __promisify__(hostname: string): Promise; - } - - function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void; - namespace resolvePtr { - function __promisify__(hostname: string): Promise; - } - - function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: SoaRecord) => void): void; - namespace resolveSoa { - function __promisify__(hostname: string): Promise; - } - - function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void; - namespace resolveSrv { - function __promisify__(hostname: string): Promise; - } - - function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void; - namespace resolveTxt { - function __promisify__(hostname: string): Promise; - } - - function resolveAny(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void; - namespace resolveAny { - function __promisify__(hostname: string): Promise; - } - - function reverse(ip: string, callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void): void; - function setServers(servers: ReadonlyArray): void; - function getServers(): string[]; - - // Error codes - const NODATA: string; - const FORMERR: string; - const SERVFAIL: string; - const NOTFOUND: string; - const NOTIMP: string; - const REFUSED: string; - const BADQUERY: string; - const BADNAME: string; - const BADFAMILY: string; - const BADRESP: string; - const CONNREFUSED: string; - const TIMEOUT: string; - const EOF: string; - const FILE: string; - const NOMEM: string; - const DESTRUCTION: string; - const BADSTR: string; - const BADFLAGS: string; - const NONAME: string; - const BADHINTS: string; - const NOTINITIALIZED: string; - const LOADIPHLPAPI: string; - const ADDRGETNETWORKPARAMS: string; - const CANCELLED: string; - - interface ResolverOptions { - timeout?: number; - } - - class Resolver { - constructor(options?: ResolverOptions); - cancel(): void; - getServers: typeof getServers; - resolve: typeof resolve; - resolve4: typeof resolve4; - resolve6: typeof resolve6; - resolveAny: typeof resolveAny; - resolveCname: typeof resolveCname; - resolveMx: typeof resolveMx; - resolveNaptr: typeof resolveNaptr; - resolveNs: typeof resolveNs; - resolvePtr: typeof resolvePtr; - resolveSoa: typeof resolveSoa; - resolveSrv: typeof resolveSrv; - resolveTxt: typeof resolveTxt; - reverse: typeof reverse; - setLocalAddress(ipv4?: string, ipv6?: string): void; - setServers: typeof setServers; - } - - namespace promises { - function getServers(): string[]; - - function lookup(hostname: string, family: number): Promise; - function lookup(hostname: string, options: LookupOneOptions): Promise; - function lookup(hostname: string, options: LookupAllOptions): Promise; - function lookup(hostname: string, options: LookupOptions): Promise; - function lookup(hostname: string): Promise; - - function lookupService(address: string, port: number): Promise<{ hostname: string, service: string }>; - - function resolve(hostname: string): Promise; - function resolve(hostname: string, rrtype: "A"): Promise; - function resolve(hostname: string, rrtype: "AAAA"): Promise; - function resolve(hostname: string, rrtype: "ANY"): Promise; - function resolve(hostname: string, rrtype: "CNAME"): Promise; - function resolve(hostname: string, rrtype: "MX"): Promise; - function resolve(hostname: string, rrtype: "NAPTR"): Promise; - function resolve(hostname: string, rrtype: "NS"): Promise; - function resolve(hostname: string, rrtype: "PTR"): Promise; - function resolve(hostname: string, rrtype: "SOA"): Promise; - function resolve(hostname: string, rrtype: "SRV"): Promise; - function resolve(hostname: string, rrtype: "TXT"): Promise; - function resolve(hostname: string, rrtype: string): Promise; - - function resolve4(hostname: string): Promise; - function resolve4(hostname: string, options: ResolveWithTtlOptions): Promise; - function resolve4(hostname: string, options: ResolveOptions): Promise; - - function resolve6(hostname: string): Promise; - function resolve6(hostname: string, options: ResolveWithTtlOptions): Promise; - function resolve6(hostname: string, options: ResolveOptions): Promise; - - function resolveAny(hostname: string): Promise; - - function resolveCname(hostname: string): Promise; - - function resolveMx(hostname: string): Promise; - - function resolveNaptr(hostname: string): Promise; - - function resolveNs(hostname: string): Promise; - - function resolvePtr(hostname: string): Promise; - - function resolveSoa(hostname: string): Promise; - - function resolveSrv(hostname: string): Promise; - - function resolveTxt(hostname: string): Promise; - - function reverse(ip: string): Promise; - - function setServers(servers: ReadonlyArray): void; - - class Resolver { - constructor(options?: ResolverOptions); - cancel(): void; - getServers: typeof getServers; - resolve: typeof resolve; - resolve4: typeof resolve4; - resolve6: typeof resolve6; - resolveAny: typeof resolveAny; - resolveCname: typeof resolveCname; - resolveMx: typeof resolveMx; - resolveNaptr: typeof resolveNaptr; - resolveNs: typeof resolveNs; - resolvePtr: typeof resolvePtr; - resolveSoa: typeof resolveSoa; - resolveSrv: typeof resolveSrv; - resolveTxt: typeof resolveTxt; - reverse: typeof reverse; - setLocalAddress(ipv4?: string, ipv6?: string): void; - setServers: typeof setServers; - } - } -} diff --git a/node_modules/@types/node/domain.d.ts b/node_modules/@types/node/domain.d.ts deleted file mode 100644 index 4d5f15390..000000000 --- a/node_modules/@types/node/domain.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -declare module 'node:domain' { - export * from 'domain'; -} - -declare module 'domain' { - import EventEmitter = require('node:events'); - - global { - namespace NodeJS { - interface Domain extends EventEmitter { - run(fn: (...args: any[]) => T, ...args: any[]): T; - add(emitter: EventEmitter | Timer): void; - remove(emitter: EventEmitter | Timer): void; - bind(cb: T): T; - intercept(cb: T): T; - } - } - } - - interface Domain extends NodeJS.Domain {} - class Domain extends EventEmitter { - members: Array; - enter(): void; - exit(): void; - } - - function create(): Domain; -} diff --git a/node_modules/@types/node/events.d.ts b/node_modules/@types/node/events.d.ts deleted file mode 100644 index d12c1320c..000000000 --- a/node_modules/@types/node/events.d.ts +++ /dev/null @@ -1,83 +0,0 @@ -declare module 'node:events' { - import EventEmitter = require('events'); - export = EventEmitter; -} - -declare module 'events' { - interface EventEmitterOptions { - /** - * Enables automatic capturing of promise rejection. - */ - captureRejections?: boolean; - } - - interface NodeEventTarget { - once(event: string | symbol, listener: (...args: any[]) => void): this; - } - - interface DOMEventTarget { - addEventListener(event: string, listener: (...args: any[]) => void, opts?: { once: boolean }): any; - } - - interface EventEmitter extends NodeJS.EventEmitter {} - class EventEmitter { - constructor(options?: EventEmitterOptions); - - static once(emitter: NodeEventTarget, event: string | symbol): Promise; - static once(emitter: DOMEventTarget, event: string): Promise; - static on(emitter: NodeJS.EventEmitter, event: string): AsyncIterableIterator; - - /** @deprecated since v4.0.0 */ - static listenerCount(emitter: NodeJS.EventEmitter, event: string | symbol): number; - - /** - * This symbol shall be used to install a listener for only monitoring `'error'` - * events. Listeners installed using this symbol are called before the regular - * `'error'` listeners are called. - * - * Installing a listener using this symbol does not change the behavior once an - * `'error'` event is emitted, therefore the process will still crash if no - * regular `'error'` listener is installed. - */ - static readonly errorMonitor: unique symbol; - static readonly captureRejectionSymbol: unique symbol; - - /** - * Sets or gets the default captureRejection value for all emitters. - */ - // TODO: These should be described using static getter/setter pairs: - static captureRejections: boolean; - static defaultMaxListeners: number; - } - - import internal = require('events'); - namespace EventEmitter { - // Should just be `export { EventEmitter }`, but that doesn't work in TypeScript 3.4 - export { internal as EventEmitter }; - } - - global { - namespace NodeJS { - interface EventEmitter { - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - off(event: string | symbol, listener: (...args: any[]) => void): this; - removeAllListeners(event?: string | symbol): this; - setMaxListeners(n: number): this; - getMaxListeners(): number; - listeners(event: string | symbol): Function[]; - rawListeners(event: string | symbol): Function[]; - emit(event: string | symbol, ...args: any[]): boolean; - listenerCount(event: string | symbol): number; - // Added in Node 6... - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - eventNames(): Array; - } - } - } - - export = EventEmitter; -} diff --git a/node_modules/@types/node/fs.d.ts b/node_modules/@types/node/fs.d.ts deleted file mode 100644 index 096cc30c7..000000000 --- a/node_modules/@types/node/fs.d.ts +++ /dev/null @@ -1,2247 +0,0 @@ -declare module 'node:fs' { - export * from 'fs'; -} - -declare module 'fs' { - import * as stream from 'node:stream'; - import EventEmitter = require('node:events'); - import { URL } from 'node:url'; - import * as promises from 'node:fs/promises'; - - export { promises }; - /** - * Valid types for path values in "fs". - */ - export type PathLike = string | Buffer | URL; - - export type NoParamCallback = (err: NodeJS.ErrnoException | null) => void; - - export type BufferEncodingOption = 'buffer' | { encoding: 'buffer' }; - - export interface BaseEncodingOptions { - encoding?: BufferEncoding | null; - } - - export type OpenMode = number | string; - - export type Mode = number | string; - - export interface StatsBase { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - - dev: T; - ino: T; - mode: T; - nlink: T; - uid: T; - gid: T; - rdev: T; - size: T; - blksize: T; - blocks: T; - atimeMs: T; - mtimeMs: T; - ctimeMs: T; - birthtimeMs: T; - atime: Date; - mtime: Date; - ctime: Date; - birthtime: Date; - } - - export interface Stats extends StatsBase { - } - - export class Stats { - } - - export class Dirent { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - name: string; - } - - /** - * A class representing a directory stream. - */ - export class Dir { - readonly path: string; - - /** - * Asynchronously iterates over the directory via `readdir(3)` until all entries have been read. - */ - [Symbol.asyncIterator](): AsyncIterableIterator; - - /** - * Asynchronously close the directory's underlying resource handle. - * Subsequent reads will result in errors. - */ - close(): Promise; - close(cb: NoParamCallback): void; - - /** - * Synchronously close the directory's underlying resource handle. - * Subsequent reads will result in errors. - */ - closeSync(): void; - - /** - * Asynchronously read the next directory entry via `readdir(3)` as an `Dirent`. - * After the read is completed, a value is returned that will be resolved with an `Dirent`, or `null` if there are no more directory entries to read. - * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms. - */ - read(): Promise; - read(cb: (err: NodeJS.ErrnoException | null, dirEnt: Dirent | null) => void): void; - - /** - * Synchronously read the next directory entry via `readdir(3)` as a `Dirent`. - * If there are no more directory entries to read, null will be returned. - * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms. - */ - readSync(): Dirent | null; - } - - export interface FSWatcher extends EventEmitter { - close(): void; - - /** - * events.EventEmitter - * 1. change - * 2. error - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "close", listener: () => void): this; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "close", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "close", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "close", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - } - - export class ReadStream extends stream.Readable { - close(): void; - bytesRead: number; - path: string | Buffer; - pending: boolean; - - /** - * events.EventEmitter - * 1. open - * 2. close - * 3. ready - */ - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "ready", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "readable", listener: () => void): this; - on(event: "ready", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "readable", listener: () => void): this; - once(event: "ready", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "ready", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "ready", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - export class WriteStream extends stream.Writable { - close(): void; - bytesWritten: number; - path: string | Buffer; - pending: boolean; - - /** - * events.EventEmitter - * 1. open - * 2. close - * 3. ready - */ - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "pipe", listener: (src: stream.Readable) => void): this; - addListener(event: "ready", listener: () => void): this; - addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "pipe", listener: (src: stream.Readable) => void): this; - on(event: "ready", listener: () => void): this; - on(event: "unpipe", listener: (src: stream.Readable) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "pipe", listener: (src: stream.Readable) => void): this; - once(event: "ready", listener: () => void): this; - once(event: "unpipe", listener: (src: stream.Readable) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "ready", listener: () => void): this; - prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "ready", listener: () => void): this; - prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - /** - * Asynchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function rename(oldPath: PathLike, newPath: PathLike, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace rename { - /** - * Asynchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function __promisify__(oldPath: PathLike, newPath: PathLike): Promise; - } - - /** - * Synchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function renameSync(oldPath: PathLike, newPath: PathLike): void; - - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - export function truncate(path: PathLike, len: number | undefined | null, callback: NoParamCallback): void; - - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function truncate(path: PathLike, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace truncate { - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - function __promisify__(path: PathLike, len?: number | null): Promise; - } - - /** - * Synchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - export function truncateSync(path: PathLike, len?: number | null): void; - - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - export function ftruncate(fd: number, len: number | undefined | null, callback: NoParamCallback): void; - - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - */ - export function ftruncate(fd: number, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace ftruncate { - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - function __promisify__(fd: number, len?: number | null): Promise; - } - - /** - * Synchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - export function ftruncateSync(fd: number, len?: number | null): void; - - /** - * Asynchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function chown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace chown { - /** - * Asynchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike, uid: number, gid: number): Promise; - } - - /** - * Synchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function chownSync(path: PathLike, uid: number, gid: number): void; - - /** - * Asynchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - export function fchown(fd: number, uid: number, gid: number, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fchown { - /** - * Asynchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - function __promisify__(fd: number, uid: number, gid: number): Promise; - } - - /** - * Synchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - export function fchownSync(fd: number, uid: number, gid: number): void; - - /** - * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lchown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lchown { - /** - * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike, uid: number, gid: number): Promise; - } - - /** - * Synchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lchownSync(path: PathLike, uid: number, gid: number): void; - - /** - * Changes the access and modification times of a file in the same way as `fs.utimes()`, - * with the difference that if the path refers to a symbolic link, then the link is not - * dereferenced: instead, the timestamps of the symbolic link itself are changed. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function lutimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lutimes { - /** - * Changes the access and modification times of a file in the same way as `fsPromises.utimes()`, - * with the difference that if the path refers to a symbolic link, then the link is not - * dereferenced: instead, the timestamps of the symbolic link itself are changed. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise; - } - - /** - * Change the file system timestamps of the symbolic link referenced by `path`. Returns `undefined`, - * or throws an exception when parameters are incorrect or the operation fails. - * This is the synchronous version of `fs.lutimes()`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function lutimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void; - - /** - * Asynchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function chmod(path: PathLike, mode: Mode, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace chmod { - /** - * Asynchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - function __promisify__(path: PathLike, mode: Mode): Promise; - } - - /** - * Synchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function chmodSync(path: PathLike, mode: Mode): void; - - /** - * Asynchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function fchmod(fd: number, mode: Mode, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fchmod { - /** - * Asynchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - function __promisify__(fd: number, mode: Mode): Promise; - } - - /** - * Synchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function fchmodSync(fd: number, mode: Mode): void; - - /** - * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function lchmod(path: PathLike, mode: Mode, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lchmod { - /** - * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - function __promisify__(path: PathLike, mode: Mode): Promise; - } - - /** - * Synchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function lchmodSync(path: PathLike, mode: Mode): void; - - /** - * Asynchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function stat(path: PathLike, options: BigIntOptions, callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void): void; - export function stat(path: PathLike, options: StatOptions, callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void): void; - export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace stat { - /** - * Asynchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike, options: BigIntOptions): Promise; - function __promisify__(path: PathLike, options: StatOptions): Promise; - function __promisify__(path: PathLike): Promise; - } - - /** - * Synchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function statSync(path: PathLike, options: BigIntOptions): BigIntStats; - export function statSync(path: PathLike, options: StatOptions): Stats | BigIntStats; - export function statSync(path: PathLike): Stats; - - /** - * Asynchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - export function fstat(fd: number, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fstat { - /** - * Asynchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - function __promisify__(fd: number): Promise; - } - - /** - * Synchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - export function fstatSync(fd: number): Stats; - - /** - * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lstat { - /** - * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike): Promise; - } - - /** - * Synchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lstatSync(path: PathLike): Stats; - - /** - * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function link(existingPath: PathLike, newPath: PathLike, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace link { - /** - * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(existingPath: PathLike, newPath: PathLike): Promise; - } - - /** - * Synchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function linkSync(existingPath: PathLike, newPath: PathLike): void; - - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - export function symlink(target: PathLike, path: PathLike, type: symlink.Type | undefined | null, callback: NoParamCallback): void; - - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - */ - export function symlink(target: PathLike, path: PathLike, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace symlink { - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise; - - type Type = "dir" | "file" | "junction"; - } - - /** - * Synchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - export function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink( - path: PathLike, - options: BaseEncodingOptions | BufferEncoding | undefined | null, - callback: (err: NodeJS.ErrnoException | null, linkString: string) => void - ): void; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink(path: PathLike, options: BufferEncodingOption, callback: (err: NodeJS.ErrnoException | null, linkString: Buffer) => void): void; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink(path: PathLike, options: BaseEncodingOptions | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void): void; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function readlink(path: PathLike, callback: (err: NodeJS.ErrnoException | null, linkString: string) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace readlink { - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): Promise; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options: BufferEncodingOption): Promise; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: BaseEncodingOptions | string | null): Promise; - } - - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): string; - - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options: BufferEncodingOption): Buffer; - - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options?: BaseEncodingOptions | string | null): string | Buffer; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath( - path: PathLike, - options: BaseEncodingOptions | BufferEncoding | undefined | null, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void - ): void; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath(path: PathLike, options: BufferEncodingOption, callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath(path: PathLike, options: BaseEncodingOptions | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function realpath(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace realpath { - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): Promise; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options: BufferEncodingOption): Promise; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: BaseEncodingOptions | string | null): Promise; - - function native( - path: PathLike, - options: BaseEncodingOptions | BufferEncoding | undefined | null, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void - ): void; - function native(path: PathLike, options: BufferEncodingOption, callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void; - function native(path: PathLike, options: BaseEncodingOptions | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void; - function native(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void; - } - - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): string; - - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options: BufferEncodingOption): Buffer; - - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options?: BaseEncodingOptions | string | null): string | Buffer; - - export namespace realpathSync { - function native(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): string; - function native(path: PathLike, options: BufferEncodingOption): Buffer; - function native(path: PathLike, options?: BaseEncodingOptions | string | null): string | Buffer; - } - - /** - * Asynchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function unlink(path: PathLike, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace unlink { - /** - * Asynchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike): Promise; - } - - /** - * Synchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function unlinkSync(path: PathLike): void; - - export interface RmDirOptions { - /** - * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or - * `EPERM` error is encountered, Node.js will retry the operation with a linear - * backoff wait of `retryDelay` ms longer on each try. This option represents the - * number of retries. This option is ignored if the `recursive` option is not - * `true`. - * @default 0 - */ - maxRetries?: number; - /** - * @deprecated since v14.14.0 In future versions of Node.js, - * `fs.rmdir(path, { recursive: true })` will throw on nonexistent - * paths, or when given a file as a target. - * Use `fs.rm(path, { recursive: true, force: true })` instead. - * - * If `true`, perform a recursive directory removal. In - * recursive mode, errors are not reported if `path` does not exist, and - * operations are retried on failure. - * @default false - */ - recursive?: boolean; - /** - * The amount of time in milliseconds to wait between retries. - * This option is ignored if the `recursive` option is not `true`. - * @default 100 - */ - retryDelay?: number; - } - - /** - * Asynchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function rmdir(path: PathLike, callback: NoParamCallback): void; - export function rmdir(path: PathLike, options: RmDirOptions, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace rmdir { - /** - * Asynchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike, options?: RmDirOptions): Promise; - } - - /** - * Synchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function rmdirSync(path: PathLike, options?: RmDirOptions): void; - - export interface RmOptions { - /** - * When `true`, exceptions will be ignored if `path` does not exist. - * @default false - */ - force?: boolean; - /** - * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or - * `EPERM` error is encountered, Node.js will retry the operation with a linear - * backoff wait of `retryDelay` ms longer on each try. This option represents the - * number of retries. This option is ignored if the `recursive` option is not - * `true`. - * @default 0 - */ - maxRetries?: number; - /** - * If `true`, perform a recursive directory removal. In - * recursive mode, errors are not reported if `path` does not exist, and - * operations are retried on failure. - * @default false - */ - recursive?: boolean; - /** - * The amount of time in milliseconds to wait between retries. - * This option is ignored if the `recursive` option is not `true`. - * @default 100 - */ - retryDelay?: number; - } - - /** - * Asynchronously removes files and directories (modeled on the standard POSIX `rm` utility). - */ - export function rm(path: PathLike, callback: NoParamCallback): void; - export function rm(path: PathLike, options: RmOptions, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace rm { - /** - * Asynchronously removes files and directories (modeled on the standard POSIX `rm` utility). - */ - function __promisify__(path: PathLike, options?: RmOptions): Promise; - } - - /** - * Synchronously removes files and directories (modeled on the standard POSIX `rm` utility). - */ - export function rmSync(path: PathLike, options?: RmOptions): void; - - export interface MakeDirectoryOptions { - /** - * Indicates whether parent folders should be created. - * If a folder was created, the path to the first created folder will be returned. - * @default false - */ - recursive?: boolean; - /** - * A file mode. If a string is passed, it is parsed as an octal integer. If not specified - * @default 0o777 - */ - mode?: Mode; - } - - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdir(path: PathLike, options: MakeDirectoryOptions & { recursive: true }, callback: (err: NodeJS.ErrnoException | null, path?: string) => void): void; - - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdir(path: PathLike, options: Mode | (MakeDirectoryOptions & { recursive?: false; }) | null | undefined, callback: NoParamCallback): void; - - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdir(path: PathLike, options: Mode | MakeDirectoryOptions | null | undefined, callback: (err: NodeJS.ErrnoException | null, path?: string) => void): void; - - /** - * Asynchronous mkdir(2) - create a directory with a mode of `0o777`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function mkdir(path: PathLike, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace mkdir { - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function __promisify__(path: PathLike, options: MakeDirectoryOptions & { recursive: true; }): Promise; - - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function __promisify__(path: PathLike, options?: Mode | (MakeDirectoryOptions & { recursive?: false; }) | null): Promise; - - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function __promisify__(path: PathLike, options?: Mode | MakeDirectoryOptions | null): Promise; - } - - /** - * Synchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdirSync(path: PathLike, options: MakeDirectoryOptions & { recursive: true; }): string | undefined; - - /** - * Synchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdirSync(path: PathLike, options?: Mode | (MakeDirectoryOptions & { recursive?: false; }) | null): void; - - /** - * Synchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdirSync(path: PathLike, options?: Mode | MakeDirectoryOptions | null): string | undefined; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp(prefix: string, options: BaseEncodingOptions | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp(prefix: string, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException | null, folder: Buffer) => void): void; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp(prefix: string, options: BaseEncodingOptions | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string | Buffer) => void): void; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - */ - export function mkdtemp(prefix: string, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace mkdtemp { - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(prefix: string, options?: BaseEncodingOptions | BufferEncoding | null): Promise; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(prefix: string, options: BufferEncodingOption): Promise; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(prefix: string, options?: BaseEncodingOptions | string | null): Promise; - } - - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options?: BaseEncodingOptions | BufferEncoding | null): string; - - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options: BufferEncodingOption): Buffer; - - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options?: BaseEncodingOptions | string | null): string | Buffer; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir( - path: PathLike, - options: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | undefined | null, - callback: (err: NodeJS.ErrnoException | null, files: string[]) => void, - ): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer", callback: (err: NodeJS.ErrnoException | null, files: Buffer[]) => void): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir( - path: PathLike, - options: BaseEncodingOptions & { withFileTypes?: false } | BufferEncoding | undefined | null, - callback: (err: NodeJS.ErrnoException | null, files: string[] | Buffer[]) => void, - ): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function readdir(path: PathLike, callback: (err: NodeJS.ErrnoException | null, files: string[]) => void): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. - */ - export function readdir(path: PathLike, options: BaseEncodingOptions & { withFileTypes: true }, callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace readdir { - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): Promise; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options: "buffer" | { encoding: "buffer"; withFileTypes?: false }): Promise; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: BaseEncodingOptions & { withFileTypes?: false } | BufferEncoding | null): Promise; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options If called with `withFileTypes: true` the result data will be an array of Dirent - */ - function __promisify__(path: PathLike, options: BaseEncodingOptions & { withFileTypes: true }): Promise; - } - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): string[]; - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer"): Buffer[]; - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync(path: PathLike, options?: BaseEncodingOptions & { withFileTypes?: false } | BufferEncoding | null): string[] | Buffer[]; - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. - */ - export function readdirSync(path: PathLike, options: BaseEncodingOptions & { withFileTypes: true }): Dirent[]; - - /** - * Asynchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - export function close(fd: number, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace close { - /** - * Asynchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - function __promisify__(fd: number): Promise; - } - - /** - * Synchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - export function closeSync(fd: number): void; - - /** - * Asynchronous open(2) - open and possibly create a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - export function open(path: PathLike, flags: OpenMode, mode: Mode | undefined | null, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void; - - /** - * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function open(path: PathLike, flags: OpenMode, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace open { - /** - * Asynchronous open(2) - open and possibly create a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - function __promisify__(path: PathLike, flags: OpenMode, mode?: Mode | null): Promise; - } - - /** - * Synchronous open(2) - open and possibly create a file, returning a file descriptor.. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - export function openSync(path: PathLike, flags: OpenMode, mode?: Mode | null): number; - - /** - * Asynchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace utimes { - /** - * Asynchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise; - } - - /** - * Synchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void; - - /** - * Asynchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function futimes(fd: number, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace futimes { - /** - * Asynchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - function __promisify__(fd: number, atime: string | number | Date, mtime: string | number | Date): Promise; - } - - /** - * Synchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void; - - /** - * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - export function fsync(fd: number, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fsync { - /** - * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - function __promisify__(fd: number): Promise; - } - - /** - * Synchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - export function fsyncSync(fd: number): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function write( - fd: number, - buffer: TBuffer, - offset: number | undefined | null, - length: number | undefined | null, - position: number | undefined | null, - callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, - ): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - */ - export function write( - fd: number, - buffer: TBuffer, - offset: number | undefined | null, - length: number | undefined | null, - callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, - ): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - */ - export function write( - fd: number, - buffer: TBuffer, - offset: number | undefined | null, - callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void - ): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - */ - export function write(fd: number, buffer: TBuffer, callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void): void; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function write( - fd: number, - string: string, - position: number | undefined | null, - encoding: BufferEncoding | undefined | null, - callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, - ): void; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function write(fd: number, string: string, position: number | undefined | null, callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void): void; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. - */ - export function write(fd: number, string: string, callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace write { - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - function __promisify__( - fd: number, - buffer?: TBuffer, - offset?: number, - length?: number, - position?: number | null, - ): Promise<{ bytesWritten: number, buffer: TBuffer }>; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - function __promisify__(fd: number, string: string, position?: number | null, encoding?: BufferEncoding | null): Promise<{ bytesWritten: number, buffer: string }>; - } - - /** - * Synchronously writes `buffer` to the file referenced by the supplied file descriptor, returning the number of bytes written. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function writeSync(fd: number, buffer: NodeJS.ArrayBufferView, offset?: number | null, length?: number | null, position?: number | null): number; - - /** - * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written. - * @param fd A file descriptor. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function writeSync(fd: number, string: string, position?: number | null, encoding?: BufferEncoding | null): number; - - /** - * Asynchronously reads data from the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - export function read( - fd: number, - buffer: TBuffer, - offset: number, - length: number, - position: number | null, - callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void, - ): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace read { - /** - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - function __promisify__( - fd: number, - buffer: TBuffer, - offset: number, - length: number, - position: number | null - ): Promise<{ bytesRead: number, buffer: TBuffer }>; - } - - export interface ReadSyncOptions { - /** - * @default 0 - */ - offset?: number; - /** - * @default `length of buffer` - */ - length?: number; - /** - * @default null - */ - position?: number | null; - } - - /** - * Synchronously reads data from the file referenced by the supplied file descriptor, returning the number of bytes read. - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - export function readSync(fd: number, buffer: NodeJS.ArrayBufferView, offset: number, length: number, position: number | null): number; - - /** - * Similar to the above `fs.readSync` function, this version takes an optional `options` object. - * If no `options` object is specified, it will default with the above values. - */ - export function readSync(fd: number, buffer: NodeJS.ArrayBufferView, opts?: ReadSyncOptions): number; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile(path: PathLike | number, options: { encoding?: null; flag?: string; } | undefined | null, callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void): void; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile(path: PathLike | number, options: { encoding: BufferEncoding; flag?: string; } | string, callback: (err: NodeJS.ErrnoException | null, data: string) => void): void; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile( - path: PathLike | number, - options: BaseEncodingOptions & { flag?: string; } | string | undefined | null, - callback: (err: NodeJS.ErrnoException | null, data: string | Buffer) => void, - ): void; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - */ - export function readFile(path: PathLike | number, callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace readFile { - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function __promisify__(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Promise; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function __promisify__(path: PathLike | number, options: { encoding: BufferEncoding; flag?: string; } | string): Promise; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function __promisify__(path: PathLike | number, options?: BaseEncodingOptions & { flag?: string; } | string | null): Promise; - } - - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Buffer; - - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync(path: PathLike | number, options: { encoding: BufferEncoding; flag?: string; } | BufferEncoding): string; - - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync(path: PathLike | number, options?: BaseEncodingOptions & { flag?: string; } | BufferEncoding | null): string | Buffer; - - export type WriteFileOptions = BaseEncodingOptions & { mode?: Mode; flag?: string; } | string | null; - - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - export function writeFile(path: PathLike | number, data: string | NodeJS.ArrayBufferView, options: WriteFileOptions, callback: NoParamCallback): void; - - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - */ - export function writeFile(path: PathLike | number, data: string | NodeJS.ArrayBufferView, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace writeFile { - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - function __promisify__(path: PathLike | number, data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions): Promise; - } - - /** - * Synchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - export function writeFileSync(path: PathLike | number, data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions): void; - - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - export function appendFile(file: PathLike | number, data: string | Uint8Array, options: WriteFileOptions, callback: NoParamCallback): void; - - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - */ - export function appendFile(file: PathLike | number, data: string | Uint8Array, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace appendFile { - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - function __promisify__(file: PathLike | number, data: string | Uint8Array, options?: WriteFileOptions): Promise; - } - - /** - * Synchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - export function appendFileSync(file: PathLike | number, data: string | Uint8Array, options?: WriteFileOptions): void; - - /** - * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed. - */ - export function watchFile(filename: PathLike, options: { persistent?: boolean; interval?: number; } | undefined, listener: (curr: Stats, prev: Stats) => void): void; - - /** - * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function watchFile(filename: PathLike, listener: (curr: Stats, prev: Stats) => void): void; - - /** - * Stop watching for changes on `filename`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function unwatchFile(filename: PathLike, listener?: (curr: Stats, prev: Stats) => void): void; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch( - filename: PathLike, - options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | BufferEncoding | undefined | null, - listener?: (event: "rename" | "change", filename: string) => void, - ): FSWatcher; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch( - filename: PathLike, - options: { encoding: "buffer", persistent?: boolean, recursive?: boolean; } | "buffer", - listener?: (event: "rename" | "change", filename: Buffer) => void - ): FSWatcher; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch( - filename: PathLike, - options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | string | null, - listener?: (event: "rename" | "change", filename: string | Buffer) => void, - ): FSWatcher; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function watch(filename: PathLike, listener?: (event: "rename" | "change", filename: string) => any): FSWatcher; - - /** - * Asynchronously tests whether or not the given path exists by checking with the file system. - * @deprecated since v1.0.0 Use `fs.stat()` or `fs.access()` instead - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function exists(path: PathLike, callback: (exists: boolean) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace exists { - /** - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function __promisify__(path: PathLike): Promise; - } - - /** - * Synchronously tests whether or not the given path exists by checking with the file system. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function existsSync(path: PathLike): boolean; - - export namespace constants { - // File Access Constants - - /** Constant for fs.access(). File is visible to the calling process. */ - const F_OK: number; - - /** Constant for fs.access(). File can be read by the calling process. */ - const R_OK: number; - - /** Constant for fs.access(). File can be written by the calling process. */ - const W_OK: number; - - /** Constant for fs.access(). File can be executed by the calling process. */ - const X_OK: number; - - // File Copy Constants - - /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */ - const COPYFILE_EXCL: number; - - /** - * Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink. - * If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used. - */ - const COPYFILE_FICLONE: number; - - /** - * Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink. - * If the underlying platform does not support copy-on-write, then the operation will fail with an error. - */ - const COPYFILE_FICLONE_FORCE: number; - - // File Open Constants - - /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ - const O_RDONLY: number; - - /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ - const O_WRONLY: number; - - /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ - const O_RDWR: number; - - /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ - const O_CREAT: number; - - /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ - const O_EXCL: number; - - /** - * Constant for fs.open(). Flag indicating that if path identifies a terminal device, - * opening the path shall not cause that terminal to become the controlling terminal for the process - * (if the process does not already have one). - */ - const O_NOCTTY: number; - - /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ - const O_TRUNC: number; - - /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ - const O_APPEND: number; - - /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ - const O_DIRECTORY: number; - - /** - * constant for fs.open(). - * Flag indicating reading accesses to the file system will no longer result in - * an update to the atime information associated with the file. - * This flag is available on Linux operating systems only. - */ - const O_NOATIME: number; - - /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ - const O_NOFOLLOW: number; - - /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ - const O_SYNC: number; - - /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */ - const O_DSYNC: number; - - /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ - const O_SYMLINK: number; - - /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ - const O_DIRECT: number; - - /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ - const O_NONBLOCK: number; - - // File Type Constants - - /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ - const S_IFMT: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ - const S_IFREG: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ - const S_IFDIR: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ - const S_IFCHR: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ - const S_IFBLK: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ - const S_IFIFO: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ - const S_IFLNK: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ - const S_IFSOCK: number; - - // File Mode Constants - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ - const S_IRWXU: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ - const S_IRUSR: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ - const S_IWUSR: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ - const S_IXUSR: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ - const S_IRWXG: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ - const S_IRGRP: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ - const S_IWGRP: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ - const S_IXGRP: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ - const S_IRWXO: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ - const S_IROTH: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ - const S_IWOTH: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ - const S_IXOTH: number; - - /** - * When set, a memory file mapping is used to access the file. This flag - * is available on Windows operating systems only. On other operating systems, - * this flag is ignored. - */ - const UV_FS_O_FILEMAP: number; - } - - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function access(path: PathLike, mode: number | undefined, callback: NoParamCallback): void; - - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function access(path: PathLike, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace access { - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function __promisify__(path: PathLike, mode?: number): Promise; - } - - /** - * Synchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function accessSync(path: PathLike, mode?: number): void; - - /** - * Returns a new `ReadStream` object. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function createReadStream(path: PathLike, options?: string | { - flags?: string; - encoding?: BufferEncoding; - fd?: number; - mode?: number; - autoClose?: boolean; - /** - * @default false - */ - emitClose?: boolean; - start?: number; - end?: number; - highWaterMark?: number; - }): ReadStream; - - /** - * Returns a new `WriteStream` object. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function createWriteStream(path: PathLike, options?: string | { - flags?: string; - encoding?: BufferEncoding; - fd?: number; - mode?: number; - autoClose?: boolean; - emitClose?: boolean; - start?: number; - highWaterMark?: number; - }): WriteStream; - - /** - * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - export function fdatasync(fd: number, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fdatasync { - /** - * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - function __promisify__(fd: number): Promise; - } - - /** - * Synchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - export function fdatasyncSync(fd: number): void; - - /** - * Asynchronously copies src to dest. By default, dest is overwritten if it already exists. - * No arguments other than a possible exception are given to the callback function. - * Node.js makes no guarantees about the atomicity of the copy operation. - * If an error occurs after the destination file has been opened for writing, Node.js will attempt - * to remove the destination. - * @param src A path to the source file. - * @param dest A path to the destination file. - */ - export function copyFile(src: PathLike, dest: PathLike, callback: NoParamCallback): void; - /** - * Asynchronously copies src to dest. By default, dest is overwritten if it already exists. - * No arguments other than a possible exception are given to the callback function. - * Node.js makes no guarantees about the atomicity of the copy operation. - * If an error occurs after the destination file has been opened for writing, Node.js will attempt - * to remove the destination. - * @param src A path to the source file. - * @param dest A path to the destination file. - * @param flags An integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists. - */ - export function copyFile(src: PathLike, dest: PathLike, flags: number, callback: NoParamCallback): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace copyFile { - /** - * Asynchronously copies src to dest. By default, dest is overwritten if it already exists. - * No arguments other than a possible exception are given to the callback function. - * Node.js makes no guarantees about the atomicity of the copy operation. - * If an error occurs after the destination file has been opened for writing, Node.js will attempt - * to remove the destination. - * @param src A path to the source file. - * @param dest A path to the destination file. - * @param flags An optional integer that specifies the behavior of the copy operation. - * The only supported flag is fs.constants.COPYFILE_EXCL, - * which causes the copy operation to fail if dest already exists. - */ - function __promisify__(src: PathLike, dst: PathLike, flags?: number): Promise; - } - - /** - * Synchronously copies src to dest. By default, dest is overwritten if it already exists. - * Node.js makes no guarantees about the atomicity of the copy operation. - * If an error occurs after the destination file has been opened for writing, Node.js will attempt - * to remove the destination. - * @param src A path to the source file. - * @param dest A path to the destination file. - * @param flags An optional integer that specifies the behavior of the copy operation. - * The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists. - */ - export function copyFileSync(src: PathLike, dest: PathLike, flags?: number): void; - - /** - * Write an array of ArrayBufferViews to the file specified by fd using writev(). - * position is the offset from the beginning of the file where this data should be written. - * It is unsafe to use fs.writev() multiple times on the same file without waiting for the callback. For this scenario, use fs.createWriteStream(). - * On Linux, positional writes don't work when the file is opened in append mode. - * The kernel ignores the position argument and always appends the data to the end of the file. - */ - export function writev( - fd: number, - buffers: ReadonlyArray, - cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void - ): void; - export function writev( - fd: number, - buffers: ReadonlyArray, - position: number, - cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void - ): void; - - export interface WriteVResult { - bytesWritten: number; - buffers: NodeJS.ArrayBufferView[]; - } - - export namespace writev { - function __promisify__(fd: number, buffers: ReadonlyArray, position?: number): Promise; - } - - /** - * See `writev`. - */ - export function writevSync(fd: number, buffers: ReadonlyArray, position?: number): number; - - export function readv( - fd: number, - buffers: ReadonlyArray, - cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void - ): void; - export function readv( - fd: number, - buffers: ReadonlyArray, - position: number, - cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void - ): void; - - export interface ReadVResult { - bytesRead: number; - buffers: NodeJS.ArrayBufferView[]; - } - - export namespace readv { - function __promisify__(fd: number, buffers: ReadonlyArray, position?: number): Promise; - } - - /** - * See `readv`. - */ - export function readvSync(fd: number, buffers: ReadonlyArray, position?: number): number; - - export interface OpenDirOptions { - encoding?: BufferEncoding; - /** - * Number of directory entries that are buffered - * internally when reading from the directory. Higher values lead to better - * performance but higher memory usage. - * @default 32 - */ - bufferSize?: number; - } - - export function opendirSync(path: string, options?: OpenDirOptions): Dir; - - export function opendir(path: string, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void; - export function opendir(path: string, options: OpenDirOptions, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void; - - export namespace opendir { - function __promisify__(path: string, options?: OpenDirOptions): Promise

; - } - - export interface BigIntStats extends StatsBase { - } - - export class BigIntStats { - atimeNs: bigint; - mtimeNs: bigint; - ctimeNs: bigint; - birthtimeNs: bigint; - } - - export interface BigIntOptions { - bigint: true; - } - - export interface StatOptions { - bigint: boolean; - } -} diff --git a/node_modules/@types/node/fs/promises.d.ts b/node_modules/@types/node/fs/promises.d.ts deleted file mode 100644 index dc7061ca8..000000000 --- a/node_modules/@types/node/fs/promises.d.ts +++ /dev/null @@ -1,559 +0,0 @@ -declare module 'fs/promises' { - export * from 'node:fs/promises'; -} - -declare module 'node:fs/promises' { - import { - Stats, - WriteVResult, - ReadVResult, - PathLike, - RmDirOptions, - RmOptions, - MakeDirectoryOptions, - Dirent, - OpenDirOptions, - Dir, - BaseEncodingOptions, - BufferEncodingOption, - OpenMode, - Mode, - } from 'node:fs'; - - interface FileHandle { - /** - * Gets the file descriptor for this file handle. - */ - readonly fd: number; - - /** - * Asynchronously append data to a file, creating the file if it does not exist. The underlying file will _not_ be closed automatically. - * The `FileHandle` must have been opened for appending. - * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - appendFile(data: string | Uint8Array, options?: BaseEncodingOptions & { mode?: Mode, flag?: OpenMode } | BufferEncoding | null): Promise; - - /** - * Asynchronous fchown(2) - Change ownership of a file. - */ - chown(uid: number, gid: number): Promise; - - /** - * Asynchronous fchmod(2) - Change permissions of a file. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - chmod(mode: Mode): Promise; - - /** - * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. - */ - datasync(): Promise; - - /** - * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - */ - sync(): Promise; - - /** - * Asynchronously reads data from the file. - * The `FileHandle` must have been opened for reading. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - read(buffer: TBuffer, offset?: number | null, length?: number | null, position?: number | null): Promise<{ bytesRead: number, buffer: TBuffer }>; - - /** - * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically. - * The `FileHandle` must have been opened for reading. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - readFile(options?: { encoding?: null, flag?: OpenMode } | null): Promise; - - /** - * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically. - * The `FileHandle` must have been opened for reading. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - readFile(options: { encoding: BufferEncoding, flag?: OpenMode } | BufferEncoding): Promise; - - /** - * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically. - * The `FileHandle` must have been opened for reading. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - readFile(options?: BaseEncodingOptions & { flag?: OpenMode } | BufferEncoding | null): Promise; - - /** - * Asynchronous fstat(2) - Get file status. - */ - stat(): Promise; - - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param len If not specified, defaults to `0`. - */ - truncate(len?: number): Promise; - - /** - * Asynchronously change file timestamps of the file. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - utimes(atime: string | number | Date, mtime: string | number | Date): Promise; - - /** - * Asynchronously writes `buffer` to the file. - * The `FileHandle` must have been opened for writing. - * @param buffer The buffer that the data will be written to. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - write(buffer: TBuffer, offset?: number | null, length?: number | null, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>; - - /** - * Asynchronously writes `string` to the file. - * The `FileHandle` must have been opened for writing. - * It is unsafe to call `write()` multiple times on the same file without waiting for the `Promise` - * to be resolved (or rejected). For this scenario, `fs.createWriteStream` is strongly recommended. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - write(data: string | Uint8Array, position?: number | null, encoding?: BufferEncoding | null): Promise<{ bytesWritten: number, buffer: string }>; - - /** - * Asynchronously writes data to a file, replacing the file if it already exists. The underlying file will _not_ be closed automatically. - * The `FileHandle` must have been opened for writing. - * It is unsafe to call `writeFile()` multiple times on the same file without waiting for the `Promise` to be resolved (or rejected). - * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - writeFile(data: string | Uint8Array, options?: BaseEncodingOptions & { mode?: Mode, flag?: OpenMode } | BufferEncoding | null): Promise; - - /** - * See `fs.writev` promisified version. - */ - writev(buffers: ReadonlyArray, position?: number): Promise; - - /** - * See `fs.readv` promisified version. - */ - readv(buffers: ReadonlyArray, position?: number): Promise; - - /** - * Asynchronous close(2) - close a `FileHandle`. - */ - close(): Promise; - } - - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function access(path: PathLike, mode?: number): Promise; - - /** - * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it already exists. - * Node.js makes no guarantees about the atomicity of the copy operation. - * If an error occurs after the destination file has been opened for writing, Node.js will attempt - * to remove the destination. - * @param src A path to the source file. - * @param dest A path to the destination file. - * @param flags An optional integer that specifies the behavior of the copy operation. The only - * supported flag is `fs.constants.COPYFILE_EXCL`, which causes the copy operation to fail if - * `dest` already exists. - */ - function copyFile(src: PathLike, dest: PathLike, flags?: number): Promise; - - /** - * Asynchronous open(2) - open and possibly create a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not - * supplied, defaults to `0o666`. - */ - function open(path: PathLike, flags: string | number, mode?: Mode): Promise; - - /** - * Asynchronously reads data from the file referenced by the supplied `FileHandle`. - * @param handle A `FileHandle`. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If - * `null`, data will be read from the current position. - */ - function read( - handle: FileHandle, - buffer: TBuffer, - offset?: number | null, - length?: number | null, - position?: number | null, - ): Promise<{ bytesRead: number, buffer: TBuffer }>; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied `FileHandle`. - * It is unsafe to call `fsPromises.write()` multiple times on the same file without waiting for the `Promise` - * to be resolved (or rejected). For this scenario, `fs.createWriteStream` is strongly recommended. - * @param handle A `FileHandle`. - * @param buffer The buffer that the data will be written to. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - function write( - handle: FileHandle, - buffer: TBuffer, - offset?: number | null, - length?: number | null, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>; - - /** - * Asynchronously writes `string` to the file referenced by the supplied `FileHandle`. - * It is unsafe to call `fsPromises.write()` multiple times on the same file without waiting for the `Promise` - * to be resolved (or rejected). For this scenario, `fs.createWriteStream` is strongly recommended. - * @param handle A `FileHandle`. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - function write(handle: FileHandle, string: string, position?: number | null, encoding?: BufferEncoding | null): Promise<{ bytesWritten: number, buffer: string }>; - - /** - * Asynchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function rename(oldPath: PathLike, newPath: PathLike): Promise; - - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - function truncate(path: PathLike, len?: number): Promise; - - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param handle A `FileHandle`. - * @param len If not specified, defaults to `0`. - */ - function ftruncate(handle: FileHandle, len?: number): Promise; - - /** - * Asynchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function rmdir(path: PathLike, options?: RmDirOptions): Promise; - - /** - * Asynchronously removes files and directories (modeled on the standard POSIX `rm` utility). - */ - function rm(path: PathLike, options?: RmOptions): Promise; - - /** - * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param handle A `FileHandle`. - */ - function fdatasync(handle: FileHandle): Promise; - - /** - * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param handle A `FileHandle`. - */ - function fsync(handle: FileHandle): Promise; - - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function mkdir(path: PathLike, options: MakeDirectoryOptions & { recursive: true; }): Promise; - - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function mkdir(path: PathLike, options?: Mode | (MakeDirectoryOptions & { recursive?: false; }) | null): Promise; - - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function mkdir(path: PathLike, options?: Mode | MakeDirectoryOptions | null): Promise; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readdir(path: PathLike, options?: BaseEncodingOptions & { withFileTypes?: false } | BufferEncoding | null): Promise; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readdir(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer"): Promise; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readdir(path: PathLike, options?: BaseEncodingOptions & { withFileTypes?: false } | BufferEncoding | null): Promise; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. - */ - function readdir(path: PathLike, options: BaseEncodingOptions & { withFileTypes: true }): Promise; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readlink(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): Promise; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readlink(path: PathLike, options: BufferEncodingOption): Promise; - - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readlink(path: PathLike, options?: BaseEncodingOptions | string | null): Promise; - - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - function symlink(target: PathLike, path: PathLike, type?: string | null): Promise; - - /** - * Asynchronous fstat(2) - Get file status. - * @param handle A `FileHandle`. - */ - function fstat(handle: FileHandle): Promise; - - /** - * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function lstat(path: PathLike): Promise; - - /** - * Asynchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function stat(path: PathLike): Promise; - - /** - * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function link(existingPath: PathLike, newPath: PathLike): Promise; - - /** - * Asynchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function unlink(path: PathLike): Promise; - - /** - * Asynchronous fchmod(2) - Change permissions of a file. - * @param handle A `FileHandle`. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - function fchmod(handle: FileHandle, mode: Mode): Promise; - - /** - * Asynchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - function chmod(path: PathLike, mode: Mode): Promise; - - /** - * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - function lchmod(path: PathLike, mode: Mode): Promise; - - /** - * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function lchown(path: PathLike, uid: number, gid: number): Promise; - - /** - * Changes the access and modification times of a file in the same way as `fsPromises.utimes()`, - * with the difference that if the path refers to a symbolic link, then the link is not - * dereferenced: instead, the timestamps of the symbolic link itself are changed. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - function lutimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise; - - /** - * Asynchronous fchown(2) - Change ownership of a file. - * @param handle A `FileHandle`. - */ - function fchown(handle: FileHandle, uid: number, gid: number): Promise; - - /** - * Asynchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function chown(path: PathLike, uid: number, gid: number): Promise; - - /** - * Asynchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise; - - /** - * Asynchronously change file timestamps of the file referenced by the supplied `FileHandle`. - * @param handle A `FileHandle`. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - function futimes(handle: FileHandle, atime: string | number | Date, mtime: string | number | Date): Promise; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function realpath(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): Promise; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function realpath(path: PathLike, options: BufferEncodingOption): Promise; - - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function realpath(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): Promise; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function mkdtemp(prefix: string, options?: BaseEncodingOptions | BufferEncoding | null): Promise; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function mkdtemp(prefix: string, options: BufferEncodingOption): Promise; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function mkdtemp(prefix: string, options?: BaseEncodingOptions | BufferEncoding | null): Promise; - - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * It is unsafe to call `fsPromises.writeFile()` multiple times on the same file without waiting for the `Promise` to be resolved (or rejected). - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - function writeFile(path: PathLike | FileHandle, data: string | Uint8Array, options?: BaseEncodingOptions & { mode?: Mode, flag?: OpenMode } | BufferEncoding | null): Promise; - - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - function appendFile(path: PathLike | FileHandle, data: string | Uint8Array, options?: BaseEncodingOptions & { mode?: Mode, flag?: OpenMode } | BufferEncoding | null): Promise; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function readFile(path: PathLike | FileHandle, options?: { encoding?: null, flag?: OpenMode } | null): Promise; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function readFile(path: PathLike | FileHandle, options: { encoding: BufferEncoding, flag?: OpenMode } | BufferEncoding): Promise; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function readFile(path: PathLike | FileHandle, options?: BaseEncodingOptions & { flag?: OpenMode } | BufferEncoding | null): Promise; - - function opendir(path: string, options?: OpenDirOptions): Promise; -} diff --git a/node_modules/@types/node/globals.d.ts b/node_modules/@types/node/globals.d.ts deleted file mode 100644 index 844f22e9e..000000000 --- a/node_modules/@types/node/globals.d.ts +++ /dev/null @@ -1,614 +0,0 @@ -// Declare "static" methods in Error -interface ErrorConstructor { - /** Create .stack property on a target object */ - captureStackTrace(targetObject: object, constructorOpt?: Function): void; - - /** - * Optional override for formatting stack traces - * - * @see https://github.com/v8/v8/wiki/Stack%20Trace%20API#customizing-stack-traces - */ - prepareStackTrace?: (err: Error, stackTraces: NodeJS.CallSite[]) => any; - - stackTraceLimit: number; -} - -// Node.js ESNEXT support -interface String { - /** Removes whitespace from the left end of a string. */ - trimLeft(): string; - /** Removes whitespace from the right end of a string. */ - trimRight(): string; - - /** Returns a copy with leading whitespace removed. */ - trimStart(): string; - /** Returns a copy with trailing whitespace removed. */ - trimEnd(): string; -} - -interface ImportMeta { - url: string; -} - -/*-----------------------------------------------* - * * - * GLOBAL * - * * - ------------------------------------------------*/ - -// For backwards compability -interface NodeRequire extends NodeJS.Require {} -interface RequireResolve extends NodeJS.RequireResolve {} -interface NodeModule extends NodeJS.Module {} - -declare var process: NodeJS.Process; -declare var console: Console; - -declare var __filename: string; -declare var __dirname: string; - -declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout; -declare namespace setTimeout { - function __promisify__(ms: number): Promise; - function __promisify__(ms: number, value: T): Promise; -} -declare function clearTimeout(timeoutId: NodeJS.Timeout): void; -declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout; -declare function clearInterval(intervalId: NodeJS.Timeout): void; -declare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): NodeJS.Immediate; -declare namespace setImmediate { - function __promisify__(): Promise; - function __promisify__(value: T): Promise; -} -declare function clearImmediate(immediateId: NodeJS.Immediate): void; - -declare function queueMicrotask(callback: () => void): void; - -declare var require: NodeRequire; -declare var module: NodeModule; - -// Same as module.exports -declare var exports: any; - -// Buffer class -type BufferEncoding = "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex"; - -type WithImplicitCoercion = T | { valueOf(): T }; - -/** - * Raw data is stored in instances of the Buffer class. - * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized. - * Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' - */ -declare class Buffer extends Uint8Array { - /** - * Allocates a new buffer containing the given {str}. - * - * @param str String to store in buffer. - * @param encoding encoding to use, optional. Default is 'utf8' - * @deprecated since v10.0.0 - Use `Buffer.from(string[, encoding])` instead. - */ - constructor(str: string, encoding?: BufferEncoding); - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - * @deprecated since v10.0.0 - Use `Buffer.alloc()` instead (also see `Buffer.allocUnsafe()`). - */ - constructor(size: number); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. - */ - constructor(array: Uint8Array); - /** - * Produces a Buffer backed by the same allocated memory as - * the given {ArrayBuffer}/{SharedArrayBuffer}. - * - * - * @param arrayBuffer The ArrayBuffer with which to share memory. - * @deprecated since v10.0.0 - Use `Buffer.from(arrayBuffer[, byteOffset[, length]])` instead. - */ - constructor(arrayBuffer: ArrayBuffer | SharedArrayBuffer); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. - */ - constructor(array: ReadonlyArray); - /** - * Copies the passed {buffer} data onto a new {Buffer} instance. - * - * @param buffer The buffer to copy. - * @deprecated since v10.0.0 - Use `Buffer.from(buffer)` instead. - */ - constructor(buffer: Buffer); - /** - * When passed a reference to the .buffer property of a TypedArray instance, - * the newly created Buffer will share the same allocated memory as the TypedArray. - * The optional {byteOffset} and {length} arguments specify a memory range - * within the {arrayBuffer} that will be shared by the Buffer. - * - * @param arrayBuffer The .buffer property of any TypedArray or a new ArrayBuffer() - */ - static from(arrayBuffer: WithImplicitCoercion, byteOffset?: number, length?: number): Buffer; - /** - * Creates a new Buffer using the passed {data} - * @param data data to create a new Buffer - */ - static from(data: Uint8Array | ReadonlyArray): Buffer; - static from(data: WithImplicitCoercion | string>): Buffer; - /** - * Creates a new Buffer containing the given JavaScript string {str}. - * If provided, the {encoding} parameter identifies the character encoding. - * If not provided, {encoding} defaults to 'utf8'. - */ - static from(str: WithImplicitCoercion | { [Symbol.toPrimitive](hint: 'string'): string }, encoding?: BufferEncoding): Buffer; - /** - * Creates a new Buffer using the passed {data} - * @param values to create a new Buffer - */ - static of(...items: number[]): Buffer; - /** - * Returns true if {obj} is a Buffer - * - * @param obj object to test. - */ - static isBuffer(obj: any): obj is Buffer; - /** - * Returns true if {encoding} is a valid encoding argument. - * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' - * - * @param encoding string to test. - */ - static isEncoding(encoding: string): encoding is BufferEncoding; - /** - * Gives the actual byte length of a string. encoding defaults to 'utf8'. - * This is not the same as String.prototype.length since that returns the number of characters in a string. - * - * @param string string to test. - * @param encoding encoding used to evaluate (defaults to 'utf8') - */ - static byteLength( - string: string | NodeJS.ArrayBufferView | ArrayBuffer | SharedArrayBuffer, - encoding?: BufferEncoding - ): number; - /** - * Returns a buffer which is the result of concatenating all the buffers in the list together. - * - * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. - * If the list has exactly one item, then the first item of the list is returned. - * If the list has more than one item, then a new Buffer is created. - * - * @param list An array of Buffer objects to concatenate - * @param totalLength Total length of the buffers when concatenated. - * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. - */ - static concat(list: ReadonlyArray, totalLength?: number): Buffer; - /** - * The same as buf1.compare(buf2). - */ - static compare(buf1: Uint8Array, buf2: Uint8Array): number; - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - * @param fill if specified, buffer will be initialized by calling buf.fill(fill). - * If parameter is omitted, buffer will be filled with zeros. - * @param encoding encoding used for call to buf.fill while initalizing - */ - static alloc(size: number, fill?: string | Buffer | number, encoding?: BufferEncoding): Buffer; - /** - * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafe(size: number): Buffer; - /** - * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafeSlow(size: number): Buffer; - /** - * This is the number of bytes used to determine the size of pre-allocated, internal Buffer instances used for pooling. This value may be modified. - */ - static poolSize: number; - - write(string: string, encoding?: BufferEncoding): number; - write(string: string, offset: number, encoding?: BufferEncoding): number; - write(string: string, offset: number, length: number, encoding?: BufferEncoding): number; - toString(encoding?: BufferEncoding, start?: number, end?: number): string; - toJSON(): { type: 'Buffer'; data: number[] }; - equals(otherBuffer: Uint8Array): boolean; - compare( - otherBuffer: Uint8Array, - targetStart?: number, - targetEnd?: number, - sourceStart?: number, - sourceEnd?: number - ): number; - copy(targetBuffer: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - /** - * Returns a new `Buffer` that references **the same memory as the original**, but offset and cropped by the start and end indices. - * - * This method is incompatible with `Uint8Array#slice()`, which returns a copy of the original memory. - * - * @param begin Where the new `Buffer` will start. Default: `0`. - * @param end Where the new `Buffer` will end (not inclusive). Default: `buf.length`. - */ - slice(begin?: number, end?: number): Buffer; - /** - * Returns a new `Buffer` that references **the same memory as the original**, but offset and cropped by the start and end indices. - * - * This method is compatible with `Uint8Array#subarray()`. - * - * @param begin Where the new `Buffer` will start. Default: `0`. - * @param end Where the new `Buffer` will end (not inclusive). Default: `buf.length`. - */ - subarray(begin?: number, end?: number): Buffer; - writeBigInt64BE(value: bigint, offset?: number): number; - writeBigInt64LE(value: bigint, offset?: number): number; - writeBigUInt64BE(value: bigint, offset?: number): number; - writeBigUInt64LE(value: bigint, offset?: number): number; - writeUIntLE(value: number, offset: number, byteLength: number): number; - writeUIntBE(value: number, offset: number, byteLength: number): number; - writeIntLE(value: number, offset: number, byteLength: number): number; - writeIntBE(value: number, offset: number, byteLength: number): number; - readBigUInt64BE(offset?: number): bigint; - readBigUInt64LE(offset?: number): bigint; - readBigInt64BE(offset?: number): bigint; - readBigInt64LE(offset?: number): bigint; - readUIntLE(offset: number, byteLength: number): number; - readUIntBE(offset: number, byteLength: number): number; - readIntLE(offset: number, byteLength: number): number; - readIntBE(offset: number, byteLength: number): number; - readUInt8(offset?: number): number; - readUInt16LE(offset?: number): number; - readUInt16BE(offset?: number): number; - readUInt32LE(offset?: number): number; - readUInt32BE(offset?: number): number; - readInt8(offset?: number): number; - readInt16LE(offset?: number): number; - readInt16BE(offset?: number): number; - readInt32LE(offset?: number): number; - readInt32BE(offset?: number): number; - readFloatLE(offset?: number): number; - readFloatBE(offset?: number): number; - readDoubleLE(offset?: number): number; - readDoubleBE(offset?: number): number; - reverse(): this; - swap16(): Buffer; - swap32(): Buffer; - swap64(): Buffer; - writeUInt8(value: number, offset?: number): number; - writeUInt16LE(value: number, offset?: number): number; - writeUInt16BE(value: number, offset?: number): number; - writeUInt32LE(value: number, offset?: number): number; - writeUInt32BE(value: number, offset?: number): number; - writeInt8(value: number, offset?: number): number; - writeInt16LE(value: number, offset?: number): number; - writeInt16BE(value: number, offset?: number): number; - writeInt32LE(value: number, offset?: number): number; - writeInt32BE(value: number, offset?: number): number; - writeFloatLE(value: number, offset?: number): number; - writeFloatBE(value: number, offset?: number): number; - writeDoubleLE(value: number, offset?: number): number; - writeDoubleBE(value: number, offset?: number): number; - - fill(value: string | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): this; - - indexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; - lastIndexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; - entries(): IterableIterator<[number, number]>; - includes(value: string | number | Buffer, byteOffset?: number, encoding?: BufferEncoding): boolean; - keys(): IterableIterator; - values(): IterableIterator; -} - -/*----------------------------------------------* -* * -* GLOBAL INTERFACES * -* * -*-----------------------------------------------*/ -declare namespace NodeJS { - interface InspectOptions { - /** - * If set to `true`, getters are going to be - * inspected as well. If set to `'get'` only getters without setter are going - * to be inspected. If set to `'set'` only getters having a corresponding - * setter are going to be inspected. This might cause side effects depending on - * the getter function. - * @default `false` - */ - getters?: 'get' | 'set' | boolean; - showHidden?: boolean; - /** - * @default 2 - */ - depth?: number | null; - colors?: boolean; - customInspect?: boolean; - showProxy?: boolean; - maxArrayLength?: number | null; - /** - * Specifies the maximum number of characters to - * include when formatting. Set to `null` or `Infinity` to show all elements. - * Set to `0` or negative to show no characters. - * @default Infinity - */ - maxStringLength?: number | null; - breakLength?: number; - /** - * Setting this to `false` causes each object key - * to be displayed on a new line. It will also add new lines to text that is - * longer than `breakLength`. If set to a number, the most `n` inner elements - * are united on a single line as long as all properties fit into - * `breakLength`. Short array elements are also grouped together. Note that no - * text will be reduced below 16 characters, no matter the `breakLength` size. - * For more information, see the example below. - * @default `true` - */ - compact?: boolean | number; - sorted?: boolean | ((a: string, b: string) => number); - } - - interface CallSite { - /** - * Value of "this" - */ - getThis(): any; - - /** - * Type of "this" as a string. - * This is the name of the function stored in the constructor field of - * "this", if available. Otherwise the object's [[Class]] internal - * property. - */ - getTypeName(): string | null; - - /** - * Current function - */ - getFunction(): Function | undefined; - - /** - * Name of the current function, typically its name property. - * If a name property is not available an attempt will be made to try - * to infer a name from the function's context. - */ - getFunctionName(): string | null; - - /** - * Name of the property [of "this" or one of its prototypes] that holds - * the current function - */ - getMethodName(): string | null; - - /** - * Name of the script [if this function was defined in a script] - */ - getFileName(): string | null; - - /** - * Current line number [if this function was defined in a script] - */ - getLineNumber(): number | null; - - /** - * Current column number [if this function was defined in a script] - */ - getColumnNumber(): number | null; - - /** - * A call site object representing the location where eval was called - * [if this function was created using a call to eval] - */ - getEvalOrigin(): string | undefined; - - /** - * Is this a toplevel invocation, that is, is "this" the global object? - */ - isToplevel(): boolean; - - /** - * Does this call take place in code defined by a call to eval? - */ - isEval(): boolean; - - /** - * Is this call in native V8 code? - */ - isNative(): boolean; - - /** - * Is this a constructor call? - */ - isConstructor(): boolean; - } - - interface ErrnoException extends Error { - errno?: number; - code?: string; - path?: string; - syscall?: string; - stack?: string; - } - - interface ReadableStream extends EventEmitter { - readable: boolean; - read(size?: number): string | Buffer; - setEncoding(encoding: BufferEncoding): this; - pause(): this; - resume(): this; - isPaused(): boolean; - pipe(destination: T, options?: { end?: boolean; }): T; - unpipe(destination?: WritableStream): this; - unshift(chunk: string | Uint8Array, encoding?: BufferEncoding): void; - wrap(oldStream: ReadableStream): this; - [Symbol.asyncIterator](): AsyncIterableIterator; - } - - interface WritableStream extends EventEmitter { - writable: boolean; - write(buffer: Uint8Array | string, cb?: (err?: Error | null) => void): boolean; - write(str: string, encoding?: BufferEncoding, cb?: (err?: Error | null) => void): boolean; - end(cb?: () => void): void; - end(data: string | Uint8Array, cb?: () => void): void; - end(str: string, encoding?: BufferEncoding, cb?: () => void): void; - } - - interface ReadWriteStream extends ReadableStream, WritableStream { } - - interface Global { - Array: typeof Array; - ArrayBuffer: typeof ArrayBuffer; - Boolean: typeof Boolean; - Buffer: typeof Buffer; - DataView: typeof DataView; - Date: typeof Date; - Error: typeof Error; - EvalError: typeof EvalError; - Float32Array: typeof Float32Array; - Float64Array: typeof Float64Array; - Function: typeof Function; - Infinity: typeof Infinity; - Int16Array: typeof Int16Array; - Int32Array: typeof Int32Array; - Int8Array: typeof Int8Array; - Intl: typeof Intl; - JSON: typeof JSON; - Map: MapConstructor; - Math: typeof Math; - NaN: typeof NaN; - Number: typeof Number; - Object: typeof Object; - Promise: typeof Promise; - RangeError: typeof RangeError; - ReferenceError: typeof ReferenceError; - RegExp: typeof RegExp; - Set: SetConstructor; - String: typeof String; - Symbol: Function; - SyntaxError: typeof SyntaxError; - TypeError: typeof TypeError; - URIError: typeof URIError; - Uint16Array: typeof Uint16Array; - Uint32Array: typeof Uint32Array; - Uint8Array: typeof Uint8Array; - Uint8ClampedArray: typeof Uint8ClampedArray; - WeakMap: WeakMapConstructor; - WeakSet: WeakSetConstructor; - clearImmediate: (immediateId: Immediate) => void; - clearInterval: (intervalId: Timeout) => void; - clearTimeout: (timeoutId: Timeout) => void; - decodeURI: typeof decodeURI; - decodeURIComponent: typeof decodeURIComponent; - encodeURI: typeof encodeURI; - encodeURIComponent: typeof encodeURIComponent; - escape: (str: string) => string; - eval: typeof eval; - global: Global; - isFinite: typeof isFinite; - isNaN: typeof isNaN; - parseFloat: typeof parseFloat; - parseInt: typeof parseInt; - setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => Immediate; - setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timeout; - setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timeout; - queueMicrotask: typeof queueMicrotask; - undefined: typeof undefined; - unescape: (str: string) => string; - gc: () => void; - v8debug?: any; - } - - interface RefCounted { - ref(): this; - unref(): this; - } - - // compatibility with older typings - interface Timer extends RefCounted { - hasRef(): boolean; - refresh(): this; - [Symbol.toPrimitive](): number; - } - - interface Immediate extends RefCounted { - hasRef(): boolean; - _onImmediate: Function; // to distinguish it from the Timeout class - } - - interface Timeout extends Timer { - hasRef(): boolean; - refresh(): this; - [Symbol.toPrimitive](): number; - } - - type TypedArray = - | Uint8Array - | Uint8ClampedArray - | Uint16Array - | Uint32Array - | Int8Array - | Int16Array - | Int32Array - | BigUint64Array - | BigInt64Array - | Float32Array - | Float64Array; - type ArrayBufferView = TypedArray | DataView; - - interface Require { - (id: string): any; - resolve: RequireResolve; - cache: Dict; - /** - * @deprecated - */ - extensions: RequireExtensions; - main: Module | undefined; - } - - interface RequireResolve { - (id: string, options?: { paths?: string[]; }): string; - paths(request: string): string[] | null; - } - - interface RequireExtensions extends Dict<(m: Module, filename: string) => any> { - '.js': (m: Module, filename: string) => any; - '.json': (m: Module, filename: string) => any; - '.node': (m: Module, filename: string) => any; - } - interface Module { - exports: any; - require: Require; - id: string; - filename: string; - loaded: boolean; - /** @deprecated since 14.6.0 Please use `require.main` and `module.children` instead. */ - parent: Module | null | undefined; - children: Module[]; - /** - * @since 11.14.0 - * - * The directory name of the module. This is usually the same as the path.dirname() of the module.id. - */ - path: string; - paths: string[]; - } - - interface Dict { - [key: string]: T | undefined; - } - - interface ReadOnlyDict { - readonly [key: string]: T | undefined; - } -} diff --git a/node_modules/@types/node/globals.global.d.ts b/node_modules/@types/node/globals.global.d.ts deleted file mode 100644 index d66acba63..000000000 --- a/node_modules/@types/node/globals.global.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare var global: NodeJS.Global & typeof globalThis; diff --git a/node_modules/@types/node/http.d.ts b/node_modules/@types/node/http.d.ts deleted file mode 100644 index 7e2444944..000000000 --- a/node_modules/@types/node/http.d.ts +++ /dev/null @@ -1,427 +0,0 @@ -declare module 'node:http' { - export * from 'http'; -} - -declare module 'http' { - import * as stream from 'node:stream'; - import { URL } from 'node:url'; - import { Socket, Server as NetServer } from 'node:net'; - - // incoming headers will never contain number - interface IncomingHttpHeaders extends NodeJS.Dict { - 'accept'?: string; - 'accept-language'?: string; - 'accept-patch'?: string; - 'accept-ranges'?: string; - 'access-control-allow-credentials'?: string; - 'access-control-allow-headers'?: string; - 'access-control-allow-methods'?: string; - 'access-control-allow-origin'?: string; - 'access-control-expose-headers'?: string; - 'access-control-max-age'?: string; - 'access-control-request-headers'?: string; - 'access-control-request-method'?: string; - 'age'?: string; - 'allow'?: string; - 'alt-svc'?: string; - 'authorization'?: string; - 'cache-control'?: string; - 'connection'?: string; - 'content-disposition'?: string; - 'content-encoding'?: string; - 'content-language'?: string; - 'content-length'?: string; - 'content-location'?: string; - 'content-range'?: string; - 'content-type'?: string; - 'cookie'?: string; - 'date'?: string; - 'expect'?: string; - 'expires'?: string; - 'forwarded'?: string; - 'from'?: string; - 'host'?: string; - 'if-match'?: string; - 'if-modified-since'?: string; - 'if-none-match'?: string; - 'if-unmodified-since'?: string; - 'last-modified'?: string; - 'location'?: string; - 'origin'?: string; - 'pragma'?: string; - 'proxy-authenticate'?: string; - 'proxy-authorization'?: string; - 'public-key-pins'?: string; - 'range'?: string; - 'referer'?: string; - 'retry-after'?: string; - 'sec-websocket-accept'?: string; - 'sec-websocket-extensions'?: string; - 'sec-websocket-key'?: string; - 'sec-websocket-protocol'?: string; - 'sec-websocket-version'?: string; - 'set-cookie'?: string[]; - 'strict-transport-security'?: string; - 'tk'?: string; - 'trailer'?: string; - 'transfer-encoding'?: string; - 'upgrade'?: string; - 'user-agent'?: string; - 'vary'?: string; - 'via'?: string; - 'warning'?: string; - 'www-authenticate'?: string; - } - - // outgoing headers allows numbers (as they are converted internally to strings) - type OutgoingHttpHeader = number | string | string[]; - - interface OutgoingHttpHeaders extends NodeJS.Dict { - } - - interface ClientRequestArgs { - protocol?: string | null; - host?: string | null; - hostname?: string | null; - family?: number; - port?: number | string | null; - defaultPort?: number | string; - localAddress?: string; - socketPath?: string; - /** - * @default 8192 - */ - maxHeaderSize?: number; - method?: string; - path?: string | null; - headers?: OutgoingHttpHeaders; - auth?: string | null; - agent?: Agent | boolean; - _defaultAgent?: Agent; - timeout?: number; - setHost?: boolean; - // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L278 - createConnection?: (options: ClientRequestArgs, oncreate: (err: Error, socket: Socket) => void) => Socket; - } - - interface ServerOptions { - IncomingMessage?: typeof IncomingMessage; - ServerResponse?: typeof ServerResponse; - /** - * Optionally overrides the value of - * [`--max-http-header-size`][] for requests received by this server, i.e. - * the maximum length of request headers in bytes. - * @default 8192 - */ - maxHeaderSize?: number; - /** - * Use an insecure HTTP parser that accepts invalid HTTP headers when true. - * Using the insecure parser should be avoided. - * See --insecure-http-parser for more information. - * @default false - */ - insecureHTTPParser?: boolean; - } - - type RequestListener = (req: IncomingMessage, res: ServerResponse) => void; - - interface HttpBase { - setTimeout(msecs?: number, callback?: () => void): this; - setTimeout(callback: () => void): this; - /** - * Limits maximum incoming headers count. If set to 0, no limit will be applied. - * @default 2000 - * {@link https://nodejs.org/api/http.html#http_server_maxheaderscount} - */ - maxHeadersCount: number | null; - timeout: number; - /** - * Limit the amount of time the parser will wait to receive the complete HTTP headers. - * @default 60000 - * {@link https://nodejs.org/api/http.html#http_server_headerstimeout} - */ - headersTimeout: number; - keepAliveTimeout: number; - /** - * Sets the timeout value in milliseconds for receiving the entire request from the client. - * @default 0 - * {@link https://nodejs.org/api/http.html#http_server_requesttimeout} - */ - requestTimeout: number; - } - - interface Server extends HttpBase {} - class Server extends NetServer { - constructor(requestListener?: RequestListener); - constructor(options: ServerOptions, requestListener?: RequestListener); - } - - // https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js - class OutgoingMessage extends stream.Writable { - upgrading: boolean; - chunkedEncoding: boolean; - shouldKeepAlive: boolean; - useChunkedEncodingByDefault: boolean; - sendDate: boolean; - /** - * @deprecated Use `writableEnded` instead. - */ - finished: boolean; - headersSent: boolean; - /** - * @deprecate Use `socket` instead. - */ - connection: Socket | null; - socket: Socket | null; - - constructor(); - - setTimeout(msecs: number, callback?: () => void): this; - setHeader(name: string, value: number | string | ReadonlyArray): void; - getHeader(name: string): number | string | string[] | undefined; - getHeaders(): OutgoingHttpHeaders; - getHeaderNames(): string[]; - hasHeader(name: string): boolean; - removeHeader(name: string): void; - addTrailers(headers: OutgoingHttpHeaders | ReadonlyArray<[string, string]>): void; - flushHeaders(): void; - } - - // https://github.com/nodejs/node/blob/master/lib/_http_server.js#L108-L256 - class ServerResponse extends OutgoingMessage { - statusCode: number; - statusMessage: string; - - constructor(req: IncomingMessage); - - assignSocket(socket: Socket): void; - detachSocket(socket: Socket): void; - // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53 - // no args in writeContinue callback - writeContinue(callback?: () => void): void; - writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this; - writeHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this; - writeProcessing(): void; - } - - interface InformationEvent { - statusCode: number; - statusMessage: string; - httpVersion: string; - httpVersionMajor: number; - httpVersionMinor: number; - headers: IncomingHttpHeaders; - rawHeaders: string[]; - } - - // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L77 - class ClientRequest extends OutgoingMessage { - aborted: boolean; - host: string; - protocol: string; - - constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void); - - method: string; - path: string; - /** @deprecated since v14.1.0 Use `request.destroy()` instead. */ - abort(): void; - onSocket(socket: Socket): void; - setTimeout(timeout: number, callback?: () => void): this; - setNoDelay(noDelay?: boolean): void; - setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; - - addListener(event: 'abort', listener: () => void): this; - addListener(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - addListener(event: 'continue', listener: () => void): this; - addListener(event: 'information', listener: (info: InformationEvent) => void): this; - addListener(event: 'response', listener: (response: IncomingMessage) => void): this; - addListener(event: 'socket', listener: (socket: Socket) => void): this; - addListener(event: 'timeout', listener: () => void): this; - addListener(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - addListener(event: 'close', listener: () => void): this; - addListener(event: 'drain', listener: () => void): this; - addListener(event: 'error', listener: (err: Error) => void): this; - addListener(event: 'finish', listener: () => void): this; - addListener(event: 'pipe', listener: (src: stream.Readable) => void): this; - addListener(event: 'unpipe', listener: (src: stream.Readable) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - on(event: 'abort', listener: () => void): this; - on(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - on(event: 'continue', listener: () => void): this; - on(event: 'information', listener: (info: InformationEvent) => void): this; - on(event: 'response', listener: (response: IncomingMessage) => void): this; - on(event: 'socket', listener: (socket: Socket) => void): this; - on(event: 'timeout', listener: () => void): this; - on(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - on(event: 'close', listener: () => void): this; - on(event: 'drain', listener: () => void): this; - on(event: 'error', listener: (err: Error) => void): this; - on(event: 'finish', listener: () => void): this; - on(event: 'pipe', listener: (src: stream.Readable) => void): this; - on(event: 'unpipe', listener: (src: stream.Readable) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: 'abort', listener: () => void): this; - once(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - once(event: 'continue', listener: () => void): this; - once(event: 'information', listener: (info: InformationEvent) => void): this; - once(event: 'response', listener: (response: IncomingMessage) => void): this; - once(event: 'socket', listener: (socket: Socket) => void): this; - once(event: 'timeout', listener: () => void): this; - once(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - once(event: 'close', listener: () => void): this; - once(event: 'drain', listener: () => void): this; - once(event: 'error', listener: (err: Error) => void): this; - once(event: 'finish', listener: () => void): this; - once(event: 'pipe', listener: (src: stream.Readable) => void): this; - once(event: 'unpipe', listener: (src: stream.Readable) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: 'abort', listener: () => void): this; - prependListener(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - prependListener(event: 'continue', listener: () => void): this; - prependListener(event: 'information', listener: (info: InformationEvent) => void): this; - prependListener(event: 'response', listener: (response: IncomingMessage) => void): this; - prependListener(event: 'socket', listener: (socket: Socket) => void): this; - prependListener(event: 'timeout', listener: () => void): this; - prependListener(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - prependListener(event: 'close', listener: () => void): this; - prependListener(event: 'drain', listener: () => void): this; - prependListener(event: 'error', listener: (err: Error) => void): this; - prependListener(event: 'finish', listener: () => void): this; - prependListener(event: 'pipe', listener: (src: stream.Readable) => void): this; - prependListener(event: 'unpipe', listener: (src: stream.Readable) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: 'abort', listener: () => void): this; - prependOnceListener(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - prependOnceListener(event: 'continue', listener: () => void): this; - prependOnceListener(event: 'information', listener: (info: InformationEvent) => void): this; - prependOnceListener(event: 'response', listener: (response: IncomingMessage) => void): this; - prependOnceListener(event: 'socket', listener: (socket: Socket) => void): this; - prependOnceListener(event: 'timeout', listener: () => void): this; - prependOnceListener(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - prependOnceListener(event: 'close', listener: () => void): this; - prependOnceListener(event: 'drain', listener: () => void): this; - prependOnceListener(event: 'error', listener: (err: Error) => void): this; - prependOnceListener(event: 'finish', listener: () => void): this; - prependOnceListener(event: 'pipe', listener: (src: stream.Readable) => void): this; - prependOnceListener(event: 'unpipe', listener: (src: stream.Readable) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - class IncomingMessage extends stream.Readable { - constructor(socket: Socket); - - aborted: boolean; - httpVersion: string; - httpVersionMajor: number; - httpVersionMinor: number; - complete: boolean; - /** - * @deprecated since v13.0.0 - Use `socket` instead. - */ - connection: Socket; - socket: Socket; - headers: IncomingHttpHeaders; - rawHeaders: string[]; - trailers: NodeJS.Dict; - rawTrailers: string[]; - setTimeout(msecs: number, callback?: () => void): this; - /** - * Only valid for request obtained from http.Server. - */ - method?: string; - /** - * Only valid for request obtained from http.Server. - */ - url?: string; - /** - * Only valid for response obtained from http.ClientRequest. - */ - statusCode?: number; - /** - * Only valid for response obtained from http.ClientRequest. - */ - statusMessage?: string; - destroy(error?: Error): void; - } - - interface AgentOptions { - /** - * Keep sockets around in a pool to be used by other requests in the future. Default = false - */ - keepAlive?: boolean; - /** - * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000. - * Only relevant if keepAlive is set to true. - */ - keepAliveMsecs?: number; - /** - * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity - */ - maxSockets?: number; - /** - * Maximum number of sockets allowed for all hosts in total. Each request will use a new socket until the maximum is reached. Default: Infinity. - */ - maxTotalSockets?: number; - /** - * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256. - */ - maxFreeSockets?: number; - /** - * Socket timeout in milliseconds. This will set the timeout after the socket is connected. - */ - timeout?: number; - /** - * Scheduling strategy to apply when picking the next free socket to use. Default: 'fifo'. - */ - scheduling?: 'fifo' | 'lifo'; - } - - class Agent { - maxFreeSockets: number; - maxSockets: number; - maxTotalSockets: number; - readonly freeSockets: NodeJS.ReadOnlyDict; - readonly sockets: NodeJS.ReadOnlyDict; - readonly requests: NodeJS.ReadOnlyDict; - - constructor(opts?: AgentOptions); - - /** - * Destroy any sockets that are currently in use by the agent. - * It is usually not necessary to do this. However, if you are using an agent with KeepAlive enabled, - * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise, - * sockets may hang open for quite a long time before the server terminates them. - */ - destroy(): void; - } - - const METHODS: string[]; - - const STATUS_CODES: { - [errorCode: number]: string | undefined; - [errorCode: string]: string | undefined; - }; - - function createServer(requestListener?: RequestListener): Server; - function createServer(options: ServerOptions, requestListener?: RequestListener): Server; - - // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly, - // create interface RequestOptions would make the naming more clear to developers - interface RequestOptions extends ClientRequestArgs { } - function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - function request(url: string | URL, options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; - function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - function get(url: string | URL, options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; - let globalAgent: Agent; - - /** - * Read-only property specifying the maximum allowed size of HTTP headers in bytes. - * Defaults to 16KB. Configurable using the [`--max-http-header-size`][] CLI option. - */ - const maxHeaderSize: number; -} diff --git a/node_modules/@types/node/http2.d.ts b/node_modules/@types/node/http2.d.ts deleted file mode 100644 index 25b144f15..000000000 --- a/node_modules/@types/node/http2.d.ts +++ /dev/null @@ -1,962 +0,0 @@ -declare module 'node:http2' { - export * from 'http2'; -} - -declare module 'http2' { - import EventEmitter = require('node:events'); - import * as fs from 'node:fs'; - import * as net from 'node:net'; - import * as stream from 'node:stream'; - import * as tls from 'node:tls'; - import * as url from 'node:url'; - - import { - IncomingHttpHeaders as Http1IncomingHttpHeaders, - OutgoingHttpHeaders, - IncomingMessage, - ServerResponse, - } from 'node:http'; - export { OutgoingHttpHeaders } from 'node:http'; - - export interface IncomingHttpStatusHeader { - ":status"?: number; - } - - export interface IncomingHttpHeaders extends Http1IncomingHttpHeaders { - ":path"?: string; - ":method"?: string; - ":authority"?: string; - ":scheme"?: string; - } - - // Http2Stream - - export interface StreamPriorityOptions { - exclusive?: boolean; - parent?: number; - weight?: number; - silent?: boolean; - } - - export interface StreamState { - localWindowSize?: number; - state?: number; - localClose?: number; - remoteClose?: number; - sumDependencyWeight?: number; - weight?: number; - } - - export interface ServerStreamResponseOptions { - endStream?: boolean; - waitForTrailers?: boolean; - } - - export interface StatOptions { - offset: number; - length: number; - } - - export interface ServerStreamFileResponseOptions { - statCheck?(stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions): void | boolean; - waitForTrailers?: boolean; - offset?: number; - length?: number; - } - - export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions { - onError?(err: NodeJS.ErrnoException): void; - } - - export interface Http2Stream extends stream.Duplex { - readonly aborted: boolean; - readonly bufferSize: number; - readonly closed: boolean; - readonly destroyed: boolean; - /** - * Set the true if the END_STREAM flag was set in the request or response HEADERS frame received, - * indicating that no additional data should be received and the readable side of the Http2Stream will be closed. - */ - readonly endAfterHeaders: boolean; - readonly id?: number; - readonly pending: boolean; - readonly rstCode: number; - readonly sentHeaders: OutgoingHttpHeaders; - readonly sentInfoHeaders?: OutgoingHttpHeaders[]; - readonly sentTrailers?: OutgoingHttpHeaders; - readonly session: Http2Session; - readonly state: StreamState; - - close(code?: number, callback?: () => void): void; - priority(options: StreamPriorityOptions): void; - setTimeout(msecs: number, callback?: () => void): void; - sendTrailers(headers: OutgoingHttpHeaders): void; - - addListener(event: "aborted", listener: () => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - addListener(event: "pipe", listener: (src: stream.Readable) => void): this; - addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - addListener(event: "streamClosed", listener: (code: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "wantTrailers", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "aborted"): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "frameError", frameType: number, errorCode: number): boolean; - emit(event: "pipe", src: stream.Readable): boolean; - emit(event: "unpipe", src: stream.Readable): boolean; - emit(event: "streamClosed", code: number): boolean; - emit(event: "timeout"): boolean; - emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "wantTrailers"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "aborted", listener: () => void): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - on(event: "pipe", listener: (src: stream.Readable) => void): this; - on(event: "unpipe", listener: (src: stream.Readable) => void): this; - on(event: "streamClosed", listener: (code: number) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "wantTrailers", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "aborted", listener: () => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - once(event: "pipe", listener: (src: stream.Readable) => void): this; - once(event: "unpipe", listener: (src: stream.Readable) => void): this; - once(event: "streamClosed", listener: (code: number) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "wantTrailers", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "aborted", listener: () => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "streamClosed", listener: (code: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "wantTrailers", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "aborted", listener: () => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "streamClosed", listener: (code: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "wantTrailers", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - export interface ClientHttp2Stream extends Http2Stream { - addListener(event: "continue", listener: () => {}): this; - addListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "continue"): boolean; - emit(event: "headers", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean; - emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "response", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "continue", listener: () => {}): this; - on(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "continue", listener: () => {}): this; - once(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "continue", listener: () => {}): this; - prependListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "continue", listener: () => {}): this; - prependOnceListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - export interface ServerHttp2Stream extends Http2Stream { - readonly headersSent: boolean; - readonly pushAllowed: boolean; - additionalHeaders(headers: OutgoingHttpHeaders): void; - pushStream(headers: OutgoingHttpHeaders, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void; - pushStream(headers: OutgoingHttpHeaders, options?: StreamPriorityOptions, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void; - respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void; - respondWithFD(fd: number | fs.promises.FileHandle, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void; - respondWithFile(path: string, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptionsWithError): void; - } - - // Http2Session - - export interface Settings { - headerTableSize?: number; - enablePush?: boolean; - initialWindowSize?: number; - maxFrameSize?: number; - maxConcurrentStreams?: number; - maxHeaderListSize?: number; - enableConnectProtocol?: boolean; - } - - export interface ClientSessionRequestOptions { - endStream?: boolean; - exclusive?: boolean; - parent?: number; - weight?: number; - waitForTrailers?: boolean; - } - - export interface SessionState { - effectiveLocalWindowSize?: number; - effectiveRecvDataLength?: number; - nextStreamID?: number; - localWindowSize?: number; - lastProcStreamID?: number; - remoteWindowSize?: number; - outboundQueueSize?: number; - deflateDynamicTableSize?: number; - inflateDynamicTableSize?: number; - } - - export interface Http2Session extends EventEmitter { - readonly alpnProtocol?: string; - readonly closed: boolean; - readonly connecting: boolean; - readonly destroyed: boolean; - readonly encrypted?: boolean; - readonly localSettings: Settings; - readonly originSet?: string[]; - readonly pendingSettingsAck: boolean; - readonly remoteSettings: Settings; - readonly socket: net.Socket | tls.TLSSocket; - readonly state: SessionState; - readonly type: number; - - close(callback?: () => void): void; - destroy(error?: Error, code?: number): void; - goaway(code?: number, lastStreamID?: number, opaqueData?: NodeJS.ArrayBufferView): void; - ping(callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean; - ping(payload: NodeJS.ArrayBufferView, callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean; - ref(): void; - setLocalWindowSize(windowSize: number): void; - setTimeout(msecs: number, callback?: () => void): void; - settings(settings: Settings): void; - unref(): void; - - addListener(event: "close", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - addListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - addListener(event: "localSettings", listener: (settings: Settings) => void): this; - addListener(event: "ping", listener: () => void): this; - addListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "close"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean; - emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean; - emit(event: "localSettings", settings: Settings): boolean; - emit(event: "ping"): boolean; - emit(event: "remoteSettings", settings: Settings): boolean; - emit(event: "timeout"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "close", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - on(event: "localSettings", listener: (settings: Settings) => void): this; - on(event: "ping", listener: () => void): this; - on(event: "remoteSettings", listener: (settings: Settings) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "close", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - once(event: "localSettings", listener: (settings: Settings) => void): this; - once(event: "ping", listener: () => void): this; - once(event: "remoteSettings", listener: (settings: Settings) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "close", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - prependListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - prependListener(event: "localSettings", listener: (settings: Settings) => void): this; - prependListener(event: "ping", listener: () => void): this; - prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - prependOnceListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this; - prependOnceListener(event: "ping", listener: () => void): this; - prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - export interface ClientHttp2Session extends Http2Session { - request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream; - - addListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - addListener(event: "origin", listener: (origins: string[]) => void): this; - addListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - addListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "altsvc", alt: string, origin: string, stream: number): boolean; - emit(event: "origin", origins: ReadonlyArray): boolean; - emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; - emit(event: "stream", stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - on(event: "origin", listener: (origins: string[]) => void): this; - on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - on(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - once(event: "origin", listener: (origins: string[]) => void): this; - once(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - once(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - prependListener(event: "origin", listener: (origins: string[]) => void): this; - prependListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - prependOnceListener(event: "origin", listener: (origins: string[]) => void): this; - prependOnceListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependOnceListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - export interface AlternativeServiceOptions { - origin: number | string | url.URL; - } - - export interface ServerHttp2Session extends Http2Session { - readonly server: Http2Server | Http2SecureServer; - - altsvc(alt: string, originOrStream: number | string | url.URL | AlternativeServiceOptions): void; - origin(...args: Array): void; - - addListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - // Http2Server - - export interface SessionOptions { - maxDeflateDynamicTableSize?: number; - maxSessionMemory?: number; - maxHeaderListPairs?: number; - maxOutstandingPings?: number; - maxSendHeaderBlockLength?: number; - paddingStrategy?: number; - peerMaxConcurrentStreams?: number; - settings?: Settings; - - selectPadding?(frameLen: number, maxFrameLen: number): number; - createConnection?(authority: url.URL, option: SessionOptions): stream.Duplex; - } - - export interface ClientSessionOptions extends SessionOptions { - maxReservedRemoteStreams?: number; - createConnection?: (authority: url.URL, option: SessionOptions) => stream.Duplex; - protocol?: 'http:' | 'https:'; - } - - export interface ServerSessionOptions extends SessionOptions { - Http1IncomingMessage?: typeof IncomingMessage; - Http1ServerResponse?: typeof ServerResponse; - Http2ServerRequest?: typeof Http2ServerRequest; - Http2ServerResponse?: typeof Http2ServerResponse; - } - - export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { } - export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { } - - export interface ServerOptions extends ServerSessionOptions { } - - export interface SecureServerOptions extends SecureServerSessionOptions { - allowHTTP1?: boolean; - origins?: string[]; - } - - export interface Http2Server extends net.Server { - addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - addListener(event: "session", listener: (session: ServerHttp2Session) => void): this; - addListener(event: "sessionError", listener: (err: Error) => void): this; - addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean; - emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; - emit(event: "session", session: ServerHttp2Session): boolean; - emit(event: "sessionError", err: Error): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "timeout"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - on(event: "session", listener: (session: ServerHttp2Session) => void): this; - on(event: "sessionError", listener: (err: Error) => void): this; - on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - once(event: "session", listener: (session: ServerHttp2Session) => void): this; - once(event: "sessionError", listener: (err: Error) => void): this; - once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this; - prependListener(event: "sessionError", listener: (err: Error) => void): this; - prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this; - prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; - prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - - setTimeout(msec?: number, callback?: () => void): this; - } - - export interface Http2SecureServer extends tls.Server { - addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - addListener(event: "session", listener: (session: ServerHttp2Session) => void): this; - addListener(event: "sessionError", listener: (err: Error) => void): this; - addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean; - emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; - emit(event: "session", session: ServerHttp2Session): boolean; - emit(event: "sessionError", err: Error): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "timeout"): boolean; - emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - on(event: "session", listener: (session: ServerHttp2Session) => void): this; - on(event: "sessionError", listener: (err: Error) => void): this; - on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - once(event: "session", listener: (session: ServerHttp2Session) => void): this; - once(event: "sessionError", listener: (err: Error) => void): this; - once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this; - prependListener(event: "sessionError", listener: (err: Error) => void): this; - prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this; - prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; - prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - - setTimeout(msec?: number, callback?: () => void): this; - } - - export class Http2ServerRequest extends stream.Readable { - constructor(stream: ServerHttp2Stream, headers: IncomingHttpHeaders, options: stream.ReadableOptions, rawHeaders: ReadonlyArray); - - readonly aborted: boolean; - readonly authority: string; - readonly connection: net.Socket | tls.TLSSocket; - readonly complete: boolean; - readonly headers: IncomingHttpHeaders; - readonly httpVersion: string; - readonly httpVersionMinor: number; - readonly httpVersionMajor: number; - readonly method: string; - readonly rawHeaders: string[]; - readonly rawTrailers: string[]; - readonly scheme: string; - readonly socket: net.Socket | tls.TLSSocket; - readonly stream: ServerHttp2Stream; - readonly trailers: IncomingHttpHeaders; - readonly url: string; - - setTimeout(msecs: number, callback?: () => void): void; - read(size?: number): Buffer | string | null; - - addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "aborted", hadError: boolean, code: number): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "end"): boolean; - emit(event: "readable"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "end", listener: () => void): this; - on(event: "readable", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "end", listener: () => void): this; - once(event: "readable", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - export class Http2ServerResponse extends stream.Stream { - constructor(stream: ServerHttp2Stream); - - readonly connection: net.Socket | tls.TLSSocket; - readonly finished: boolean; - readonly headersSent: boolean; - readonly socket: net.Socket | tls.TLSSocket; - readonly stream: ServerHttp2Stream; - sendDate: boolean; - statusCode: number; - statusMessage: ''; - addTrailers(trailers: OutgoingHttpHeaders): void; - end(callback?: () => void): void; - end(data: string | Uint8Array, callback?: () => void): void; - end(data: string | Uint8Array, encoding: BufferEncoding, callback?: () => void): void; - getHeader(name: string): string; - getHeaderNames(): string[]; - getHeaders(): OutgoingHttpHeaders; - hasHeader(name: string): boolean; - removeHeader(name: string): void; - setHeader(name: string, value: number | string | ReadonlyArray): void; - setTimeout(msecs: number, callback?: () => void): void; - write(chunk: string | Uint8Array, callback?: (err: Error) => void): boolean; - write(chunk: string | Uint8Array, encoding: BufferEncoding, callback?: (err: Error) => void): boolean; - writeContinue(): void; - writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this; - writeHead(statusCode: number, statusMessage: string, headers?: OutgoingHttpHeaders): this; - createPushResponse(headers: OutgoingHttpHeaders, callback: (err: Error | null, res: Http2ServerResponse) => void): void; - - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pipe", listener: (src: stream.Readable) => void): this; - addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "close"): boolean; - emit(event: "drain"): boolean; - emit(event: "error", error: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "pipe", src: stream.Readable): boolean; - emit(event: "unpipe", src: stream.Readable): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pipe", listener: (src: stream.Readable) => void): this; - on(event: "unpipe", listener: (src: stream.Readable) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pipe", listener: (src: stream.Readable) => void): this; - once(event: "unpipe", listener: (src: stream.Readable) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - // Public API - - export namespace constants { - const NGHTTP2_SESSION_SERVER: number; - const NGHTTP2_SESSION_CLIENT: number; - const NGHTTP2_STREAM_STATE_IDLE: number; - const NGHTTP2_STREAM_STATE_OPEN: number; - const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number; - const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number; - const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number; - const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number; - const NGHTTP2_STREAM_STATE_CLOSED: number; - const NGHTTP2_NO_ERROR: number; - const NGHTTP2_PROTOCOL_ERROR: number; - const NGHTTP2_INTERNAL_ERROR: number; - const NGHTTP2_FLOW_CONTROL_ERROR: number; - const NGHTTP2_SETTINGS_TIMEOUT: number; - const NGHTTP2_STREAM_CLOSED: number; - const NGHTTP2_FRAME_SIZE_ERROR: number; - const NGHTTP2_REFUSED_STREAM: number; - const NGHTTP2_CANCEL: number; - const NGHTTP2_COMPRESSION_ERROR: number; - const NGHTTP2_CONNECT_ERROR: number; - const NGHTTP2_ENHANCE_YOUR_CALM: number; - const NGHTTP2_INADEQUATE_SECURITY: number; - const NGHTTP2_HTTP_1_1_REQUIRED: number; - const NGHTTP2_ERR_FRAME_SIZE_ERROR: number; - const NGHTTP2_FLAG_NONE: number; - const NGHTTP2_FLAG_END_STREAM: number; - const NGHTTP2_FLAG_END_HEADERS: number; - const NGHTTP2_FLAG_ACK: number; - const NGHTTP2_FLAG_PADDED: number; - const NGHTTP2_FLAG_PRIORITY: number; - const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number; - const DEFAULT_SETTINGS_ENABLE_PUSH: number; - const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number; - const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number; - const MAX_MAX_FRAME_SIZE: number; - const MIN_MAX_FRAME_SIZE: number; - const MAX_INITIAL_WINDOW_SIZE: number; - const NGHTTP2_DEFAULT_WEIGHT: number; - const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number; - const NGHTTP2_SETTINGS_ENABLE_PUSH: number; - const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number; - const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number; - const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number; - const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number; - const PADDING_STRATEGY_NONE: number; - const PADDING_STRATEGY_MAX: number; - const PADDING_STRATEGY_CALLBACK: number; - const HTTP2_HEADER_STATUS: string; - const HTTP2_HEADER_METHOD: string; - const HTTP2_HEADER_AUTHORITY: string; - const HTTP2_HEADER_SCHEME: string; - const HTTP2_HEADER_PATH: string; - const HTTP2_HEADER_ACCEPT_CHARSET: string; - const HTTP2_HEADER_ACCEPT_ENCODING: string; - const HTTP2_HEADER_ACCEPT_LANGUAGE: string; - const HTTP2_HEADER_ACCEPT_RANGES: string; - const HTTP2_HEADER_ACCEPT: string; - const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string; - const HTTP2_HEADER_AGE: string; - const HTTP2_HEADER_ALLOW: string; - const HTTP2_HEADER_AUTHORIZATION: string; - const HTTP2_HEADER_CACHE_CONTROL: string; - const HTTP2_HEADER_CONNECTION: string; - const HTTP2_HEADER_CONTENT_DISPOSITION: string; - const HTTP2_HEADER_CONTENT_ENCODING: string; - const HTTP2_HEADER_CONTENT_LANGUAGE: string; - const HTTP2_HEADER_CONTENT_LENGTH: string; - const HTTP2_HEADER_CONTENT_LOCATION: string; - const HTTP2_HEADER_CONTENT_MD5: string; - const HTTP2_HEADER_CONTENT_RANGE: string; - const HTTP2_HEADER_CONTENT_TYPE: string; - const HTTP2_HEADER_COOKIE: string; - const HTTP2_HEADER_DATE: string; - const HTTP2_HEADER_ETAG: string; - const HTTP2_HEADER_EXPECT: string; - const HTTP2_HEADER_EXPIRES: string; - const HTTP2_HEADER_FROM: string; - const HTTP2_HEADER_HOST: string; - const HTTP2_HEADER_IF_MATCH: string; - const HTTP2_HEADER_IF_MODIFIED_SINCE: string; - const HTTP2_HEADER_IF_NONE_MATCH: string; - const HTTP2_HEADER_IF_RANGE: string; - const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string; - const HTTP2_HEADER_LAST_MODIFIED: string; - const HTTP2_HEADER_LINK: string; - const HTTP2_HEADER_LOCATION: string; - const HTTP2_HEADER_MAX_FORWARDS: string; - const HTTP2_HEADER_PREFER: string; - const HTTP2_HEADER_PROXY_AUTHENTICATE: string; - const HTTP2_HEADER_PROXY_AUTHORIZATION: string; - const HTTP2_HEADER_RANGE: string; - const HTTP2_HEADER_REFERER: string; - const HTTP2_HEADER_REFRESH: string; - const HTTP2_HEADER_RETRY_AFTER: string; - const HTTP2_HEADER_SERVER: string; - const HTTP2_HEADER_SET_COOKIE: string; - const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string; - const HTTP2_HEADER_TRANSFER_ENCODING: string; - const HTTP2_HEADER_TE: string; - const HTTP2_HEADER_UPGRADE: string; - const HTTP2_HEADER_USER_AGENT: string; - const HTTP2_HEADER_VARY: string; - const HTTP2_HEADER_VIA: string; - const HTTP2_HEADER_WWW_AUTHENTICATE: string; - const HTTP2_HEADER_HTTP2_SETTINGS: string; - const HTTP2_HEADER_KEEP_ALIVE: string; - const HTTP2_HEADER_PROXY_CONNECTION: string; - const HTTP2_METHOD_ACL: string; - const HTTP2_METHOD_BASELINE_CONTROL: string; - const HTTP2_METHOD_BIND: string; - const HTTP2_METHOD_CHECKIN: string; - const HTTP2_METHOD_CHECKOUT: string; - const HTTP2_METHOD_CONNECT: string; - const HTTP2_METHOD_COPY: string; - const HTTP2_METHOD_DELETE: string; - const HTTP2_METHOD_GET: string; - const HTTP2_METHOD_HEAD: string; - const HTTP2_METHOD_LABEL: string; - const HTTP2_METHOD_LINK: string; - const HTTP2_METHOD_LOCK: string; - const HTTP2_METHOD_MERGE: string; - const HTTP2_METHOD_MKACTIVITY: string; - const HTTP2_METHOD_MKCALENDAR: string; - const HTTP2_METHOD_MKCOL: string; - const HTTP2_METHOD_MKREDIRECTREF: string; - const HTTP2_METHOD_MKWORKSPACE: string; - const HTTP2_METHOD_MOVE: string; - const HTTP2_METHOD_OPTIONS: string; - const HTTP2_METHOD_ORDERPATCH: string; - const HTTP2_METHOD_PATCH: string; - const HTTP2_METHOD_POST: string; - const HTTP2_METHOD_PRI: string; - const HTTP2_METHOD_PROPFIND: string; - const HTTP2_METHOD_PROPPATCH: string; - const HTTP2_METHOD_PUT: string; - const HTTP2_METHOD_REBIND: string; - const HTTP2_METHOD_REPORT: string; - const HTTP2_METHOD_SEARCH: string; - const HTTP2_METHOD_TRACE: string; - const HTTP2_METHOD_UNBIND: string; - const HTTP2_METHOD_UNCHECKOUT: string; - const HTTP2_METHOD_UNLINK: string; - const HTTP2_METHOD_UNLOCK: string; - const HTTP2_METHOD_UPDATE: string; - const HTTP2_METHOD_UPDATEREDIRECTREF: string; - const HTTP2_METHOD_VERSION_CONTROL: string; - const HTTP_STATUS_CONTINUE: number; - const HTTP_STATUS_SWITCHING_PROTOCOLS: number; - const HTTP_STATUS_PROCESSING: number; - const HTTP_STATUS_OK: number; - const HTTP_STATUS_CREATED: number; - const HTTP_STATUS_ACCEPTED: number; - const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number; - const HTTP_STATUS_NO_CONTENT: number; - const HTTP_STATUS_RESET_CONTENT: number; - const HTTP_STATUS_PARTIAL_CONTENT: number; - const HTTP_STATUS_MULTI_STATUS: number; - const HTTP_STATUS_ALREADY_REPORTED: number; - const HTTP_STATUS_IM_USED: number; - const HTTP_STATUS_MULTIPLE_CHOICES: number; - const HTTP_STATUS_MOVED_PERMANENTLY: number; - const HTTP_STATUS_FOUND: number; - const HTTP_STATUS_SEE_OTHER: number; - const HTTP_STATUS_NOT_MODIFIED: number; - const HTTP_STATUS_USE_PROXY: number; - const HTTP_STATUS_TEMPORARY_REDIRECT: number; - const HTTP_STATUS_PERMANENT_REDIRECT: number; - const HTTP_STATUS_BAD_REQUEST: number; - const HTTP_STATUS_UNAUTHORIZED: number; - const HTTP_STATUS_PAYMENT_REQUIRED: number; - const HTTP_STATUS_FORBIDDEN: number; - const HTTP_STATUS_NOT_FOUND: number; - const HTTP_STATUS_METHOD_NOT_ALLOWED: number; - const HTTP_STATUS_NOT_ACCEPTABLE: number; - const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number; - const HTTP_STATUS_REQUEST_TIMEOUT: number; - const HTTP_STATUS_CONFLICT: number; - const HTTP_STATUS_GONE: number; - const HTTP_STATUS_LENGTH_REQUIRED: number; - const HTTP_STATUS_PRECONDITION_FAILED: number; - const HTTP_STATUS_PAYLOAD_TOO_LARGE: number; - const HTTP_STATUS_URI_TOO_LONG: number; - const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number; - const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number; - const HTTP_STATUS_EXPECTATION_FAILED: number; - const HTTP_STATUS_TEAPOT: number; - const HTTP_STATUS_MISDIRECTED_REQUEST: number; - const HTTP_STATUS_UNPROCESSABLE_ENTITY: number; - const HTTP_STATUS_LOCKED: number; - const HTTP_STATUS_FAILED_DEPENDENCY: number; - const HTTP_STATUS_UNORDERED_COLLECTION: number; - const HTTP_STATUS_UPGRADE_REQUIRED: number; - const HTTP_STATUS_PRECONDITION_REQUIRED: number; - const HTTP_STATUS_TOO_MANY_REQUESTS: number; - const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number; - const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number; - const HTTP_STATUS_INTERNAL_SERVER_ERROR: number; - const HTTP_STATUS_NOT_IMPLEMENTED: number; - const HTTP_STATUS_BAD_GATEWAY: number; - const HTTP_STATUS_SERVICE_UNAVAILABLE: number; - const HTTP_STATUS_GATEWAY_TIMEOUT: number; - const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number; - const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number; - const HTTP_STATUS_INSUFFICIENT_STORAGE: number; - const HTTP_STATUS_LOOP_DETECTED: number; - const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number; - const HTTP_STATUS_NOT_EXTENDED: number; - const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number; - } - - export function getDefaultSettings(): Settings; - export function getPackedSettings(settings: Settings): Buffer; - export function getUnpackedSettings(buf: Uint8Array): Settings; - - export function createServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server; - export function createServer(options: ServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server; - - export function createSecureServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer; - export function createSecureServer(options: SecureServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer; - - export function connect(authority: string | url.URL, listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session; - export function connect( - authority: string | url.URL, - options?: ClientSessionOptions | SecureClientSessionOptions, - listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void - ): ClientHttp2Session; -} diff --git a/node_modules/@types/node/https.d.ts b/node_modules/@types/node/https.d.ts deleted file mode 100644 index 87f352d7a..000000000 --- a/node_modules/@types/node/https.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -declare module 'node:https' { - export * from 'https'; -} - -declare module 'https' { - import * as tls from 'node:tls'; - import * as http from 'node:http'; - import { URL } from 'node:url'; - - type ServerOptions = tls.SecureContextOptions & tls.TlsOptions & http.ServerOptions; - - type RequestOptions = http.RequestOptions & tls.SecureContextOptions & { - rejectUnauthorized?: boolean; // Defaults to true - servername?: string; // SNI TLS Extension - }; - - interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { - rejectUnauthorized?: boolean; - maxCachedSessions?: number; - } - - class Agent extends http.Agent { - constructor(options?: AgentOptions); - options: AgentOptions; - } - - interface Server extends http.HttpBase {} - class Server extends tls.Server { - constructor(requestListener?: http.RequestListener); - constructor(options: ServerOptions, requestListener?: http.RequestListener); - } - - function createServer(requestListener?: http.RequestListener): Server; - function createServer(options: ServerOptions, requestListener?: http.RequestListener): Server; - function request(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - function request(url: string | URL, options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - function get(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - function get(url: string | URL, options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - let globalAgent: Agent; -} diff --git a/node_modules/@types/node/index.d.ts b/node_modules/@types/node/index.d.ts deleted file mode 100644 index 5edaa1692..000000000 --- a/node_modules/@types/node/index.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -// Type definitions for non-npm package Node.js 14.14 -// Project: http://nodejs.org/ -// Definitions by: Microsoft TypeScript -// DefinitelyTyped -// Alberto Schiabel -// Alexander T. -// Alvis HT Tang -// Andrew Makarov -// Benjamin Toueg -// Bruno Scheufler -// Chigozirim C. -// David Junger -// Deividas Bakanas -// Eugene Y. Q. Shen -// Hannes Magnusson -// Hoàng Văn Khải -// Huw -// Kelvin Jin -// Klaus Meinhardt -// Lishude -// Mariusz Wiktorczyk -// Mohsen Azimi -// Nicolas Even -// Nikita Galkin -// Parambir Singh -// Sebastian Silbermann -// Simon Schick -// Thomas den Hollander -// Wilco Bakker -// wwwy3y3 -// Samuel Ainsworth -// Kyle Uehlein -// Jordi Oliveras Rovira -// Thanik Bhongbhibhat -// Marcin Kopacz -// Trivikram Kamat -// Minh Son Nguyen -// Junxiao Shi -// Ilia Baryshnikov -// ExE Boss -// Surasak Chaisurin -// Piotr Błażejewicz -// Anna Henningsen -// Jason Kwok -// Victor Perin -// Yongsheng Zhang -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped - -// NOTE: These definitions support NodeJS and TypeScript 3.7. -// Typically type modifications should be made in base.d.ts instead of here - -/// - -// NOTE: TypeScript version-specific augmentations can be found in the following paths: -// - ~/base.d.ts - Shared definitions common to all TypeScript versions -// - ~/index.d.ts - Definitions specific to TypeScript 2.8 -// - ~/ts3.5/index.d.ts - Definitions specific to TypeScript 3.5 - -// NOTE: Augmentations for TypeScript 3.5 and later should use individual files for overrides -// within the respective ~/ts3.5 (or later) folder. However, this is disallowed for versions -// prior to TypeScript 3.5, so the older definitions will be found here. diff --git a/node_modules/@types/node/inspector.d.ts b/node_modules/@types/node/inspector.d.ts deleted file mode 100644 index ee0e2e722..000000000 --- a/node_modules/@types/node/inspector.d.ts +++ /dev/null @@ -1,3048 +0,0 @@ -// tslint:disable-next-line:dt-header -// Type definitions for inspector - -// These definitions are auto-generated. -// Please see https://github.com/DefinitelyTyped/DefinitelyTyped/pull/19330 -// for more information. - -// tslint:disable:max-line-length - -/** - * The inspector module provides an API for interacting with the V8 inspector. - */ -declare module 'node:inspector' { - export * from 'inspector'; -} - -/** - * The inspector module provides an API for interacting with the V8 inspector. - */ -declare module 'inspector' { - import EventEmitter = require('node:events'); - - interface InspectorNotification { - method: string; - params: T; - } - - namespace Schema { - /** - * Description of the protocol domain. - */ - interface Domain { - /** - * Domain name. - */ - name: string; - /** - * Domain version. - */ - version: string; - } - - interface GetDomainsReturnType { - /** - * List of supported domains. - */ - domains: Domain[]; - } - } - - namespace Runtime { - /** - * Unique script identifier. - */ - type ScriptId = string; - - /** - * Unique object identifier. - */ - type RemoteObjectId = string; - - /** - * Primitive value which cannot be JSON-stringified. - */ - type UnserializableValue = string; - - /** - * Mirror object referencing original JavaScript object. - */ - interface RemoteObject { - /** - * Object type. - */ - type: string; - /** - * Object subtype hint. Specified for object type values only. - */ - subtype?: string; - /** - * Object class (constructor) name. Specified for object type values only. - */ - className?: string; - /** - * Remote object value in case of primitive values or JSON values (if it was requested). - */ - value?: any; - /** - * Primitive value which can not be JSON-stringified does not have value, but gets this property. - */ - unserializableValue?: UnserializableValue; - /** - * String representation of the object. - */ - description?: string; - /** - * Unique object identifier (for non-primitive values). - */ - objectId?: RemoteObjectId; - /** - * Preview containing abbreviated property values. Specified for object type values only. - * @experimental - */ - preview?: ObjectPreview; - /** - * @experimental - */ - customPreview?: CustomPreview; - } - - /** - * @experimental - */ - interface CustomPreview { - header: string; - hasBody: boolean; - formatterObjectId: RemoteObjectId; - bindRemoteObjectFunctionId: RemoteObjectId; - configObjectId?: RemoteObjectId; - } - - /** - * Object containing abbreviated remote object value. - * @experimental - */ - interface ObjectPreview { - /** - * Object type. - */ - type: string; - /** - * Object subtype hint. Specified for object type values only. - */ - subtype?: string; - /** - * String representation of the object. - */ - description?: string; - /** - * True iff some of the properties or entries of the original object did not fit. - */ - overflow: boolean; - /** - * List of the properties. - */ - properties: PropertyPreview[]; - /** - * List of the entries. Specified for map and set subtype values only. - */ - entries?: EntryPreview[]; - } - - /** - * @experimental - */ - interface PropertyPreview { - /** - * Property name. - */ - name: string; - /** - * Object type. Accessor means that the property itself is an accessor property. - */ - type: string; - /** - * User-friendly property value string. - */ - value?: string; - /** - * Nested value preview. - */ - valuePreview?: ObjectPreview; - /** - * Object subtype hint. Specified for object type values only. - */ - subtype?: string; - } - - /** - * @experimental - */ - interface EntryPreview { - /** - * Preview of the key. Specified for map-like collection entries. - */ - key?: ObjectPreview; - /** - * Preview of the value. - */ - value: ObjectPreview; - } - - /** - * Object property descriptor. - */ - interface PropertyDescriptor { - /** - * Property name or symbol description. - */ - name: string; - /** - * The value associated with the property. - */ - value?: RemoteObject; - /** - * True if the value associated with the property may be changed (data descriptors only). - */ - writable?: boolean; - /** - * A function which serves as a getter for the property, or undefined if there is no getter (accessor descriptors only). - */ - get?: RemoteObject; - /** - * A function which serves as a setter for the property, or undefined if there is no setter (accessor descriptors only). - */ - set?: RemoteObject; - /** - * True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object. - */ - configurable: boolean; - /** - * True if this property shows up during enumeration of the properties on the corresponding object. - */ - enumerable: boolean; - /** - * True if the result was thrown during the evaluation. - */ - wasThrown?: boolean; - /** - * True if the property is owned for the object. - */ - isOwn?: boolean; - /** - * Property symbol object, if the property is of the symbol type. - */ - symbol?: RemoteObject; - } - - /** - * Object internal property descriptor. This property isn't normally visible in JavaScript code. - */ - interface InternalPropertyDescriptor { - /** - * Conventional property name. - */ - name: string; - /** - * The value associated with the property. - */ - value?: RemoteObject; - } - - /** - * Represents function call argument. Either remote object id objectId, primitive value, unserializable primitive value or neither of (for undefined) them should be specified. - */ - interface CallArgument { - /** - * Primitive value or serializable javascript object. - */ - value?: any; - /** - * Primitive value which can not be JSON-stringified. - */ - unserializableValue?: UnserializableValue; - /** - * Remote object handle. - */ - objectId?: RemoteObjectId; - } - - /** - * Id of an execution context. - */ - type ExecutionContextId = number; - - /** - * Description of an isolated world. - */ - interface ExecutionContextDescription { - /** - * Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed. - */ - id: ExecutionContextId; - /** - * Execution context origin. - */ - origin: string; - /** - * Human readable name describing given context. - */ - name: string; - /** - * Embedder-specific auxiliary data. - */ - auxData?: {}; - } - - /** - * Detailed information about exception (or error) that was thrown during script compilation or execution. - */ - interface ExceptionDetails { - /** - * Exception id. - */ - exceptionId: number; - /** - * Exception text, which should be used together with exception object when available. - */ - text: string; - /** - * Line number of the exception location (0-based). - */ - lineNumber: number; - /** - * Column number of the exception location (0-based). - */ - columnNumber: number; - /** - * Script ID of the exception location. - */ - scriptId?: ScriptId; - /** - * URL of the exception location, to be used when the script was not reported. - */ - url?: string; - /** - * JavaScript stack trace if available. - */ - stackTrace?: StackTrace; - /** - * Exception object if available. - */ - exception?: RemoteObject; - /** - * Identifier of the context where exception happened. - */ - executionContextId?: ExecutionContextId; - } - - /** - * Number of milliseconds since epoch. - */ - type Timestamp = number; - - /** - * Stack entry for runtime errors and assertions. - */ - interface CallFrame { - /** - * JavaScript function name. - */ - functionName: string; - /** - * JavaScript script id. - */ - scriptId: ScriptId; - /** - * JavaScript script name or url. - */ - url: string; - /** - * JavaScript script line number (0-based). - */ - lineNumber: number; - /** - * JavaScript script column number (0-based). - */ - columnNumber: number; - } - - /** - * Call frames for assertions or error messages. - */ - interface StackTrace { - /** - * String label of this stack trace. For async traces this may be a name of the function that initiated the async call. - */ - description?: string; - /** - * JavaScript function name. - */ - callFrames: CallFrame[]; - /** - * Asynchronous JavaScript stack trace that preceded this stack, if available. - */ - parent?: StackTrace; - /** - * Asynchronous JavaScript stack trace that preceded this stack, if available. - * @experimental - */ - parentId?: StackTraceId; - } - - /** - * Unique identifier of current debugger. - * @experimental - */ - type UniqueDebuggerId = string; - - /** - * If debuggerId is set stack trace comes from another debugger and can be resolved there. This allows to track cross-debugger calls. See Runtime.StackTrace and Debugger.paused for usages. - * @experimental - */ - interface StackTraceId { - id: string; - debuggerId?: UniqueDebuggerId; - } - - interface EvaluateParameterType { - /** - * Expression to evaluate. - */ - expression: string; - /** - * Symbolic group name that can be used to release multiple objects. - */ - objectGroup?: string; - /** - * Determines whether Command Line API should be available during the evaluation. - */ - includeCommandLineAPI?: boolean; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean; - /** - * Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page. - */ - contextId?: ExecutionContextId; - /** - * Whether the result is expected to be a JSON object that should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - * @experimental - */ - generatePreview?: boolean; - /** - * Whether execution should be treated as initiated by user in the UI. - */ - userGesture?: boolean; - /** - * Whether execution should await for resulting value and return once awaited promise is resolved. - */ - awaitPromise?: boolean; - } - - interface AwaitPromiseParameterType { - /** - * Identifier of the promise. - */ - promiseObjectId: RemoteObjectId; - /** - * Whether the result is expected to be a JSON object that should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - */ - generatePreview?: boolean; - } - - interface CallFunctionOnParameterType { - /** - * Declaration of the function to call. - */ - functionDeclaration: string; - /** - * Identifier of the object to call function on. Either objectId or executionContextId should be specified. - */ - objectId?: RemoteObjectId; - /** - * Call arguments. All call arguments must belong to the same JavaScript world as the target object. - */ - arguments?: CallArgument[]; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean; - /** - * Whether the result is expected to be a JSON object which should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - * @experimental - */ - generatePreview?: boolean; - /** - * Whether execution should be treated as initiated by user in the UI. - */ - userGesture?: boolean; - /** - * Whether execution should await for resulting value and return once awaited promise is resolved. - */ - awaitPromise?: boolean; - /** - * Specifies execution context which global object will be used to call function on. Either executionContextId or objectId should be specified. - */ - executionContextId?: ExecutionContextId; - /** - * Symbolic group name that can be used to release multiple objects. If objectGroup is not specified and objectId is, objectGroup will be inherited from object. - */ - objectGroup?: string; - } - - interface GetPropertiesParameterType { - /** - * Identifier of the object to return properties for. - */ - objectId: RemoteObjectId; - /** - * If true, returns properties belonging only to the element itself, not to its prototype chain. - */ - ownProperties?: boolean; - /** - * If true, returns accessor properties (with getter/setter) only; internal properties are not returned either. - * @experimental - */ - accessorPropertiesOnly?: boolean; - /** - * Whether preview should be generated for the results. - * @experimental - */ - generatePreview?: boolean; - } - - interface ReleaseObjectParameterType { - /** - * Identifier of the object to release. - */ - objectId: RemoteObjectId; - } - - interface ReleaseObjectGroupParameterType { - /** - * Symbolic object group name. - */ - objectGroup: string; - } - - interface SetCustomObjectFormatterEnabledParameterType { - enabled: boolean; - } - - interface CompileScriptParameterType { - /** - * Expression to compile. - */ - expression: string; - /** - * Source url to be set for the script. - */ - sourceURL: string; - /** - * Specifies whether the compiled script should be persisted. - */ - persistScript: boolean; - /** - * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. - */ - executionContextId?: ExecutionContextId; - } - - interface RunScriptParameterType { - /** - * Id of the script to run. - */ - scriptId: ScriptId; - /** - * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. - */ - executionContextId?: ExecutionContextId; - /** - * Symbolic group name that can be used to release multiple objects. - */ - objectGroup?: string; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean; - /** - * Determines whether Command Line API should be available during the evaluation. - */ - includeCommandLineAPI?: boolean; - /** - * Whether the result is expected to be a JSON object which should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - */ - generatePreview?: boolean; - /** - * Whether execution should await for resulting value and return once awaited promise is resolved. - */ - awaitPromise?: boolean; - } - - interface QueryObjectsParameterType { - /** - * Identifier of the prototype to return objects for. - */ - prototypeObjectId: RemoteObjectId; - } - - interface GlobalLexicalScopeNamesParameterType { - /** - * Specifies in which execution context to lookup global scope variables. - */ - executionContextId?: ExecutionContextId; - } - - interface EvaluateReturnType { - /** - * Evaluation result. - */ - result: RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails; - } - - interface AwaitPromiseReturnType { - /** - * Promise result. Will contain rejected value if promise was rejected. - */ - result: RemoteObject; - /** - * Exception details if stack strace is available. - */ - exceptionDetails?: ExceptionDetails; - } - - interface CallFunctionOnReturnType { - /** - * Call result. - */ - result: RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails; - } - - interface GetPropertiesReturnType { - /** - * Object properties. - */ - result: PropertyDescriptor[]; - /** - * Internal object properties (only of the element itself). - */ - internalProperties?: InternalPropertyDescriptor[]; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails; - } - - interface CompileScriptReturnType { - /** - * Id of the script. - */ - scriptId?: ScriptId; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails; - } - - interface RunScriptReturnType { - /** - * Run result. - */ - result: RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails; - } - - interface QueryObjectsReturnType { - /** - * Array with objects. - */ - objects: RemoteObject; - } - - interface GlobalLexicalScopeNamesReturnType { - names: string[]; - } - - interface ExecutionContextCreatedEventDataType { - /** - * A newly created execution context. - */ - context: ExecutionContextDescription; - } - - interface ExecutionContextDestroyedEventDataType { - /** - * Id of the destroyed context - */ - executionContextId: ExecutionContextId; - } - - interface ExceptionThrownEventDataType { - /** - * Timestamp of the exception. - */ - timestamp: Timestamp; - exceptionDetails: ExceptionDetails; - } - - interface ExceptionRevokedEventDataType { - /** - * Reason describing why exception was revoked. - */ - reason: string; - /** - * The id of revoked exception, as reported in exceptionThrown. - */ - exceptionId: number; - } - - interface ConsoleAPICalledEventDataType { - /** - * Type of the call. - */ - type: string; - /** - * Call arguments. - */ - args: RemoteObject[]; - /** - * Identifier of the context where the call was made. - */ - executionContextId: ExecutionContextId; - /** - * Call timestamp. - */ - timestamp: Timestamp; - /** - * Stack trace captured when the call was made. - */ - stackTrace?: StackTrace; - /** - * Console context descriptor for calls on non-default console context (not console.*): 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call on named context. - * @experimental - */ - context?: string; - } - - interface InspectRequestedEventDataType { - object: RemoteObject; - hints: {}; - } - } - - namespace Debugger { - /** - * Breakpoint identifier. - */ - type BreakpointId = string; - - /** - * Call frame identifier. - */ - type CallFrameId = string; - - /** - * Location in the source code. - */ - interface Location { - /** - * Script identifier as reported in the Debugger.scriptParsed. - */ - scriptId: Runtime.ScriptId; - /** - * Line number in the script (0-based). - */ - lineNumber: number; - /** - * Column number in the script (0-based). - */ - columnNumber?: number; - } - - /** - * Location in the source code. - * @experimental - */ - interface ScriptPosition { - lineNumber: number; - columnNumber: number; - } - - /** - * JavaScript call frame. Array of call frames form the call stack. - */ - interface CallFrame { - /** - * Call frame identifier. This identifier is only valid while the virtual machine is paused. - */ - callFrameId: CallFrameId; - /** - * Name of the JavaScript function called on this call frame. - */ - functionName: string; - /** - * Location in the source code. - */ - functionLocation?: Location; - /** - * Location in the source code. - */ - location: Location; - /** - * JavaScript script name or url. - */ - url: string; - /** - * Scope chain for this call frame. - */ - scopeChain: Scope[]; - /** - * this object for this call frame. - */ - this: Runtime.RemoteObject; - /** - * The value being returned, if the function is at return point. - */ - returnValue?: Runtime.RemoteObject; - } - - /** - * Scope description. - */ - interface Scope { - /** - * Scope type. - */ - type: string; - /** - * Object representing the scope. For global and with scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties. - */ - object: Runtime.RemoteObject; - name?: string; - /** - * Location in the source code where scope starts - */ - startLocation?: Location; - /** - * Location in the source code where scope ends - */ - endLocation?: Location; - } - - /** - * Search match for resource. - */ - interface SearchMatch { - /** - * Line number in resource content. - */ - lineNumber: number; - /** - * Line with match content. - */ - lineContent: string; - } - - interface BreakLocation { - /** - * Script identifier as reported in the Debugger.scriptParsed. - */ - scriptId: Runtime.ScriptId; - /** - * Line number in the script (0-based). - */ - lineNumber: number; - /** - * Column number in the script (0-based). - */ - columnNumber?: number; - type?: string; - } - - interface SetBreakpointsActiveParameterType { - /** - * New value for breakpoints active state. - */ - active: boolean; - } - - interface SetSkipAllPausesParameterType { - /** - * New value for skip pauses state. - */ - skip: boolean; - } - - interface SetBreakpointByUrlParameterType { - /** - * Line number to set breakpoint at. - */ - lineNumber: number; - /** - * URL of the resources to set breakpoint on. - */ - url?: string; - /** - * Regex pattern for the URLs of the resources to set breakpoints on. Either url or urlRegex must be specified. - */ - urlRegex?: string; - /** - * Script hash of the resources to set breakpoint on. - */ - scriptHash?: string; - /** - * Offset in the line to set breakpoint at. - */ - columnNumber?: number; - /** - * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. - */ - condition?: string; - } - - interface SetBreakpointParameterType { - /** - * Location to set breakpoint in. - */ - location: Location; - /** - * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. - */ - condition?: string; - } - - interface RemoveBreakpointParameterType { - breakpointId: BreakpointId; - } - - interface GetPossibleBreakpointsParameterType { - /** - * Start of range to search possible breakpoint locations in. - */ - start: Location; - /** - * End of range to search possible breakpoint locations in (excluding). When not specified, end of scripts is used as end of range. - */ - end?: Location; - /** - * Only consider locations which are in the same (non-nested) function as start. - */ - restrictToFunction?: boolean; - } - - interface ContinueToLocationParameterType { - /** - * Location to continue to. - */ - location: Location; - targetCallFrames?: string; - } - - interface PauseOnAsyncCallParameterType { - /** - * Debugger will pause when async call with given stack trace is started. - */ - parentStackTraceId: Runtime.StackTraceId; - } - - interface StepIntoParameterType { - /** - * Debugger will issue additional Debugger.paused notification if any async task is scheduled before next pause. - * @experimental - */ - breakOnAsyncCall?: boolean; - } - - interface GetStackTraceParameterType { - stackTraceId: Runtime.StackTraceId; - } - - interface SearchInContentParameterType { - /** - * Id of the script to search in. - */ - scriptId: Runtime.ScriptId; - /** - * String to search for. - */ - query: string; - /** - * If true, search is case sensitive. - */ - caseSensitive?: boolean; - /** - * If true, treats string parameter as regex. - */ - isRegex?: boolean; - } - - interface SetScriptSourceParameterType { - /** - * Id of the script to edit. - */ - scriptId: Runtime.ScriptId; - /** - * New content of the script. - */ - scriptSource: string; - /** - * If true the change will not actually be applied. Dry run may be used to get result description without actually modifying the code. - */ - dryRun?: boolean; - } - - interface RestartFrameParameterType { - /** - * Call frame identifier to evaluate on. - */ - callFrameId: CallFrameId; - } - - interface GetScriptSourceParameterType { - /** - * Id of the script to get source for. - */ - scriptId: Runtime.ScriptId; - } - - interface SetPauseOnExceptionsParameterType { - /** - * Pause on exceptions mode. - */ - state: string; - } - - interface EvaluateOnCallFrameParameterType { - /** - * Call frame identifier to evaluate on. - */ - callFrameId: CallFrameId; - /** - * Expression to evaluate. - */ - expression: string; - /** - * String object group name to put result into (allows rapid releasing resulting object handles using releaseObjectGroup). - */ - objectGroup?: string; - /** - * Specifies whether command line API should be available to the evaluated expression, defaults to false. - */ - includeCommandLineAPI?: boolean; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean; - /** - * Whether the result is expected to be a JSON object that should be sent by value. - */ - returnByValue?: boolean; - /** - * Whether preview should be generated for the result. - * @experimental - */ - generatePreview?: boolean; - /** - * Whether to throw an exception if side effect cannot be ruled out during evaluation. - */ - throwOnSideEffect?: boolean; - } - - interface SetVariableValueParameterType { - /** - * 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually. - */ - scopeNumber: number; - /** - * Variable name. - */ - variableName: string; - /** - * New variable value. - */ - newValue: Runtime.CallArgument; - /** - * Id of callframe that holds variable. - */ - callFrameId: CallFrameId; - } - - interface SetReturnValueParameterType { - /** - * New return value. - */ - newValue: Runtime.CallArgument; - } - - interface SetAsyncCallStackDepthParameterType { - /** - * Maximum depth of async call stacks. Setting to 0 will effectively disable collecting async call stacks (default). - */ - maxDepth: number; - } - - interface SetBlackboxPatternsParameterType { - /** - * Array of regexps that will be used to check script url for blackbox state. - */ - patterns: string[]; - } - - interface SetBlackboxedRangesParameterType { - /** - * Id of the script. - */ - scriptId: Runtime.ScriptId; - positions: ScriptPosition[]; - } - - interface EnableReturnType { - /** - * Unique identifier of the debugger. - * @experimental - */ - debuggerId: Runtime.UniqueDebuggerId; - } - - interface SetBreakpointByUrlReturnType { - /** - * Id of the created breakpoint for further reference. - */ - breakpointId: BreakpointId; - /** - * List of the locations this breakpoint resolved into upon addition. - */ - locations: Location[]; - } - - interface SetBreakpointReturnType { - /** - * Id of the created breakpoint for further reference. - */ - breakpointId: BreakpointId; - /** - * Location this breakpoint resolved into. - */ - actualLocation: Location; - } - - interface GetPossibleBreakpointsReturnType { - /** - * List of the possible breakpoint locations. - */ - locations: BreakLocation[]; - } - - interface GetStackTraceReturnType { - stackTrace: Runtime.StackTrace; - } - - interface SearchInContentReturnType { - /** - * List of search matches. - */ - result: SearchMatch[]; - } - - interface SetScriptSourceReturnType { - /** - * New stack trace in case editing has happened while VM was stopped. - */ - callFrames?: CallFrame[]; - /** - * Whether current call stack was modified after applying the changes. - */ - stackChanged?: boolean; - /** - * Async stack trace, if any. - */ - asyncStackTrace?: Runtime.StackTrace; - /** - * Async stack trace, if any. - * @experimental - */ - asyncStackTraceId?: Runtime.StackTraceId; - /** - * Exception details if any. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - interface RestartFrameReturnType { - /** - * New stack trace. - */ - callFrames: CallFrame[]; - /** - * Async stack trace, if any. - */ - asyncStackTrace?: Runtime.StackTrace; - /** - * Async stack trace, if any. - * @experimental - */ - asyncStackTraceId?: Runtime.StackTraceId; - } - - interface GetScriptSourceReturnType { - /** - * Script source. - */ - scriptSource: string; - } - - interface EvaluateOnCallFrameReturnType { - /** - * Object wrapper for the evaluation result. - */ - result: Runtime.RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: Runtime.ExceptionDetails; - } - - interface ScriptParsedEventDataType { - /** - * Identifier of the script parsed. - */ - scriptId: Runtime.ScriptId; - /** - * URL or name of the script parsed (if any). - */ - url: string; - /** - * Line offset of the script within the resource with given URL (for script tags). - */ - startLine: number; - /** - * Column offset of the script within the resource with given URL. - */ - startColumn: number; - /** - * Last line of the script. - */ - endLine: number; - /** - * Length of the last line of the script. - */ - endColumn: number; - /** - * Specifies script creation context. - */ - executionContextId: Runtime.ExecutionContextId; - /** - * Content hash of the script. - */ - hash: string; - /** - * Embedder-specific auxiliary data. - */ - executionContextAuxData?: {}; - /** - * True, if this script is generated as a result of the live edit operation. - * @experimental - */ - isLiveEdit?: boolean; - /** - * URL of source map associated with script (if any). - */ - sourceMapURL?: string; - /** - * True, if this script has sourceURL. - */ - hasSourceURL?: boolean; - /** - * True, if this script is ES6 module. - */ - isModule?: boolean; - /** - * This script length. - */ - length?: number; - /** - * JavaScript top stack frame of where the script parsed event was triggered if available. - * @experimental - */ - stackTrace?: Runtime.StackTrace; - } - - interface ScriptFailedToParseEventDataType { - /** - * Identifier of the script parsed. - */ - scriptId: Runtime.ScriptId; - /** - * URL or name of the script parsed (if any). - */ - url: string; - /** - * Line offset of the script within the resource with given URL (for script tags). - */ - startLine: number; - /** - * Column offset of the script within the resource with given URL. - */ - startColumn: number; - /** - * Last line of the script. - */ - endLine: number; - /** - * Length of the last line of the script. - */ - endColumn: number; - /** - * Specifies script creation context. - */ - executionContextId: Runtime.ExecutionContextId; - /** - * Content hash of the script. - */ - hash: string; - /** - * Embedder-specific auxiliary data. - */ - executionContextAuxData?: {}; - /** - * URL of source map associated with script (if any). - */ - sourceMapURL?: string; - /** - * True, if this script has sourceURL. - */ - hasSourceURL?: boolean; - /** - * True, if this script is ES6 module. - */ - isModule?: boolean; - /** - * This script length. - */ - length?: number; - /** - * JavaScript top stack frame of where the script parsed event was triggered if available. - * @experimental - */ - stackTrace?: Runtime.StackTrace; - } - - interface BreakpointResolvedEventDataType { - /** - * Breakpoint unique identifier. - */ - breakpointId: BreakpointId; - /** - * Actual breakpoint location. - */ - location: Location; - } - - interface PausedEventDataType { - /** - * Call stack the virtual machine stopped on. - */ - callFrames: CallFrame[]; - /** - * Pause reason. - */ - reason: string; - /** - * Object containing break-specific auxiliary properties. - */ - data?: {}; - /** - * Hit breakpoints IDs - */ - hitBreakpoints?: string[]; - /** - * Async stack trace, if any. - */ - asyncStackTrace?: Runtime.StackTrace; - /** - * Async stack trace, if any. - * @experimental - */ - asyncStackTraceId?: Runtime.StackTraceId; - /** - * Just scheduled async call will have this stack trace as parent stack during async execution. This field is available only after Debugger.stepInto call with breakOnAsynCall flag. - * @experimental - */ - asyncCallStackTraceId?: Runtime.StackTraceId; - } - } - - namespace Console { - /** - * Console message. - */ - interface ConsoleMessage { - /** - * Message source. - */ - source: string; - /** - * Message severity. - */ - level: string; - /** - * Message text. - */ - text: string; - /** - * URL of the message origin. - */ - url?: string; - /** - * Line number in the resource that generated this message (1-based). - */ - line?: number; - /** - * Column number in the resource that generated this message (1-based). - */ - column?: number; - } - - interface MessageAddedEventDataType { - /** - * Console message that has been added. - */ - message: ConsoleMessage; - } - } - - namespace Profiler { - /** - * Profile node. Holds callsite information, execution statistics and child nodes. - */ - interface ProfileNode { - /** - * Unique id of the node. - */ - id: number; - /** - * Function location. - */ - callFrame: Runtime.CallFrame; - /** - * Number of samples where this node was on top of the call stack. - */ - hitCount?: number; - /** - * Child node ids. - */ - children?: number[]; - /** - * The reason of being not optimized. The function may be deoptimized or marked as don't optimize. - */ - deoptReason?: string; - /** - * An array of source position ticks. - */ - positionTicks?: PositionTickInfo[]; - } - - /** - * Profile. - */ - interface Profile { - /** - * The list of profile nodes. First item is the root node. - */ - nodes: ProfileNode[]; - /** - * Profiling start timestamp in microseconds. - */ - startTime: number; - /** - * Profiling end timestamp in microseconds. - */ - endTime: number; - /** - * Ids of samples top nodes. - */ - samples?: number[]; - /** - * Time intervals between adjacent samples in microseconds. The first delta is relative to the profile startTime. - */ - timeDeltas?: number[]; - } - - /** - * Specifies a number of samples attributed to a certain source position. - */ - interface PositionTickInfo { - /** - * Source line number (1-based). - */ - line: number; - /** - * Number of samples attributed to the source line. - */ - ticks: number; - } - - /** - * Coverage data for a source range. - */ - interface CoverageRange { - /** - * JavaScript script source offset for the range start. - */ - startOffset: number; - /** - * JavaScript script source offset for the range end. - */ - endOffset: number; - /** - * Collected execution count of the source range. - */ - count: number; - } - - /** - * Coverage data for a JavaScript function. - */ - interface FunctionCoverage { - /** - * JavaScript function name. - */ - functionName: string; - /** - * Source ranges inside the function with coverage data. - */ - ranges: CoverageRange[]; - /** - * Whether coverage data for this function has block granularity. - */ - isBlockCoverage: boolean; - } - - /** - * Coverage data for a JavaScript script. - */ - interface ScriptCoverage { - /** - * JavaScript script id. - */ - scriptId: Runtime.ScriptId; - /** - * JavaScript script name or url. - */ - url: string; - /** - * Functions contained in the script that has coverage data. - */ - functions: FunctionCoverage[]; - } - - /** - * Describes a type collected during runtime. - * @experimental - */ - interface TypeObject { - /** - * Name of a type collected with type profiling. - */ - name: string; - } - - /** - * Source offset and types for a parameter or return value. - * @experimental - */ - interface TypeProfileEntry { - /** - * Source offset of the parameter or end of function for return values. - */ - offset: number; - /** - * The types for this parameter or return value. - */ - types: TypeObject[]; - } - - /** - * Type profile data collected during runtime for a JavaScript script. - * @experimental - */ - interface ScriptTypeProfile { - /** - * JavaScript script id. - */ - scriptId: Runtime.ScriptId; - /** - * JavaScript script name or url. - */ - url: string; - /** - * Type profile entries for parameters and return values of the functions in the script. - */ - entries: TypeProfileEntry[]; - } - - interface SetSamplingIntervalParameterType { - /** - * New sampling interval in microseconds. - */ - interval: number; - } - - interface StartPreciseCoverageParameterType { - /** - * Collect accurate call counts beyond simple 'covered' or 'not covered'. - */ - callCount?: boolean; - /** - * Collect block-based coverage. - */ - detailed?: boolean; - } - - interface StopReturnType { - /** - * Recorded profile. - */ - profile: Profile; - } - - interface TakePreciseCoverageReturnType { - /** - * Coverage data for the current isolate. - */ - result: ScriptCoverage[]; - } - - interface GetBestEffortCoverageReturnType { - /** - * Coverage data for the current isolate. - */ - result: ScriptCoverage[]; - } - - interface TakeTypeProfileReturnType { - /** - * Type profile for all scripts since startTypeProfile() was turned on. - */ - result: ScriptTypeProfile[]; - } - - interface ConsoleProfileStartedEventDataType { - id: string; - /** - * Location of console.profile(). - */ - location: Debugger.Location; - /** - * Profile title passed as an argument to console.profile(). - */ - title?: string; - } - - interface ConsoleProfileFinishedEventDataType { - id: string; - /** - * Location of console.profileEnd(). - */ - location: Debugger.Location; - profile: Profile; - /** - * Profile title passed as an argument to console.profile(). - */ - title?: string; - } - } - - namespace HeapProfiler { - /** - * Heap snapshot object id. - */ - type HeapSnapshotObjectId = string; - - /** - * Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes. - */ - interface SamplingHeapProfileNode { - /** - * Function location. - */ - callFrame: Runtime.CallFrame; - /** - * Allocations size in bytes for the node excluding children. - */ - selfSize: number; - /** - * Child nodes. - */ - children: SamplingHeapProfileNode[]; - } - - /** - * Profile. - */ - interface SamplingHeapProfile { - head: SamplingHeapProfileNode; - } - - interface StartTrackingHeapObjectsParameterType { - trackAllocations?: boolean; - } - - interface StopTrackingHeapObjectsParameterType { - /** - * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken when the tracking is stopped. - */ - reportProgress?: boolean; - } - - interface TakeHeapSnapshotParameterType { - /** - * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken. - */ - reportProgress?: boolean; - } - - interface GetObjectByHeapObjectIdParameterType { - objectId: HeapSnapshotObjectId; - /** - * Symbolic group name that can be used to release multiple objects. - */ - objectGroup?: string; - } - - interface AddInspectedHeapObjectParameterType { - /** - * Heap snapshot object id to be accessible by means of $x command line API. - */ - heapObjectId: HeapSnapshotObjectId; - } - - interface GetHeapObjectIdParameterType { - /** - * Identifier of the object to get heap object id for. - */ - objectId: Runtime.RemoteObjectId; - } - - interface StartSamplingParameterType { - /** - * Average sample interval in bytes. Poisson distribution is used for the intervals. The default value is 32768 bytes. - */ - samplingInterval?: number; - } - - interface GetObjectByHeapObjectIdReturnType { - /** - * Evaluation result. - */ - result: Runtime.RemoteObject; - } - - interface GetHeapObjectIdReturnType { - /** - * Id of the heap snapshot object corresponding to the passed remote object id. - */ - heapSnapshotObjectId: HeapSnapshotObjectId; - } - - interface StopSamplingReturnType { - /** - * Recorded sampling heap profile. - */ - profile: SamplingHeapProfile; - } - - interface GetSamplingProfileReturnType { - /** - * Return the sampling profile being collected. - */ - profile: SamplingHeapProfile; - } - - interface AddHeapSnapshotChunkEventDataType { - chunk: string; - } - - interface ReportHeapSnapshotProgressEventDataType { - done: number; - total: number; - finished?: boolean; - } - - interface LastSeenObjectIdEventDataType { - lastSeenObjectId: number; - timestamp: number; - } - - interface HeapStatsUpdateEventDataType { - /** - * An array of triplets. Each triplet describes a fragment. The first integer is the fragment index, the second integer is a total count of objects for the fragment, the third integer is a total size of the objects for the fragment. - */ - statsUpdate: number[]; - } - } - - namespace NodeTracing { - interface TraceConfig { - /** - * Controls how the trace buffer stores data. - */ - recordMode?: string; - /** - * Included category filters. - */ - includedCategories: string[]; - } - - interface StartParameterType { - traceConfig: TraceConfig; - } - - interface GetCategoriesReturnType { - /** - * A list of supported tracing categories. - */ - categories: string[]; - } - - interface DataCollectedEventDataType { - value: Array<{}>; - } - } - - namespace NodeWorker { - type WorkerID = string; - - /** - * Unique identifier of attached debugging session. - */ - type SessionID = string; - - interface WorkerInfo { - workerId: WorkerID; - type: string; - title: string; - url: string; - } - - interface SendMessageToWorkerParameterType { - message: string; - /** - * Identifier of the session. - */ - sessionId: SessionID; - } - - interface EnableParameterType { - /** - * Whether to new workers should be paused until the frontend sends `Runtime.runIfWaitingForDebugger` - * message to run them. - */ - waitForDebuggerOnStart: boolean; - } - - interface DetachParameterType { - sessionId: SessionID; - } - - interface AttachedToWorkerEventDataType { - /** - * Identifier assigned to the session used to send/receive messages. - */ - sessionId: SessionID; - workerInfo: WorkerInfo; - waitingForDebugger: boolean; - } - - interface DetachedFromWorkerEventDataType { - /** - * Detached session identifier. - */ - sessionId: SessionID; - } - - interface ReceivedMessageFromWorkerEventDataType { - /** - * Identifier of a session which sends a message. - */ - sessionId: SessionID; - message: string; - } - } - - namespace NodeRuntime { - interface NotifyWhenWaitingForDisconnectParameterType { - enabled: boolean; - } - } - - /** - * The inspector.Session is used for dispatching messages to the V8 inspector back-end and receiving message responses and notifications. - */ - class Session extends EventEmitter { - /** - * Create a new instance of the inspector.Session class. - * The inspector session needs to be connected through session.connect() before the messages can be dispatched to the inspector backend. - */ - constructor(); - - /** - * Connects a session to the inspector back-end. - * An exception will be thrown if there is already a connected session established either - * through the API or by a front-end connected to the Inspector WebSocket port. - */ - connect(): void; - - /** - * Immediately close the session. All pending message callbacks will be called with an error. - * session.connect() will need to be called to be able to send messages again. - * Reconnected session will lose all inspector state, such as enabled agents or configured breakpoints. - */ - disconnect(): void; - - /** - * Posts a message to the inspector back-end. callback will be notified when a response is received. - * callback is a function that accepts two optional arguments - error and message-specific result. - */ - post(method: string, params?: {}, callback?: (err: Error | null, params?: {}) => void): void; - post(method: string, callback?: (err: Error | null, params?: {}) => void): void; - - /** - * Returns supported domains. - */ - post(method: "Schema.getDomains", callback?: (err: Error | null, params: Schema.GetDomainsReturnType) => void): void; - - /** - * Evaluates expression on global object. - */ - post(method: "Runtime.evaluate", params?: Runtime.EvaluateParameterType, callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; - post(method: "Runtime.evaluate", callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; - - /** - * Add handler to promise with given promise object id. - */ - post(method: "Runtime.awaitPromise", params?: Runtime.AwaitPromiseParameterType, callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; - post(method: "Runtime.awaitPromise", callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; - - /** - * Calls function with given declaration on the given object. Object group of the result is inherited from the target object. - */ - post(method: "Runtime.callFunctionOn", params?: Runtime.CallFunctionOnParameterType, callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; - post(method: "Runtime.callFunctionOn", callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; - - /** - * Returns properties of a given object. Object group of the result is inherited from the target object. - */ - post(method: "Runtime.getProperties", params?: Runtime.GetPropertiesParameterType, callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; - post(method: "Runtime.getProperties", callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; - - /** - * Releases remote object with given id. - */ - post(method: "Runtime.releaseObject", params?: Runtime.ReleaseObjectParameterType, callback?: (err: Error | null) => void): void; - post(method: "Runtime.releaseObject", callback?: (err: Error | null) => void): void; - - /** - * Releases all remote objects that belong to a given group. - */ - post(method: "Runtime.releaseObjectGroup", params?: Runtime.ReleaseObjectGroupParameterType, callback?: (err: Error | null) => void): void; - post(method: "Runtime.releaseObjectGroup", callback?: (err: Error | null) => void): void; - - /** - * Tells inspected instance to run if it was waiting for debugger to attach. - */ - post(method: "Runtime.runIfWaitingForDebugger", callback?: (err: Error | null) => void): void; - - /** - * Enables reporting of execution contexts creation by means of executionContextCreated event. When the reporting gets enabled the event will be sent immediately for each existing execution context. - */ - post(method: "Runtime.enable", callback?: (err: Error | null) => void): void; - - /** - * Disables reporting of execution contexts creation. - */ - post(method: "Runtime.disable", callback?: (err: Error | null) => void): void; - - /** - * Discards collected exceptions and console API calls. - */ - post(method: "Runtime.discardConsoleEntries", callback?: (err: Error | null) => void): void; - - /** - * @experimental - */ - post(method: "Runtime.setCustomObjectFormatterEnabled", params?: Runtime.SetCustomObjectFormatterEnabledParameterType, callback?: (err: Error | null) => void): void; - post(method: "Runtime.setCustomObjectFormatterEnabled", callback?: (err: Error | null) => void): void; - - /** - * Compiles expression. - */ - post(method: "Runtime.compileScript", params?: Runtime.CompileScriptParameterType, callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; - post(method: "Runtime.compileScript", callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; - - /** - * Runs script with given id in a given context. - */ - post(method: "Runtime.runScript", params?: Runtime.RunScriptParameterType, callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; - post(method: "Runtime.runScript", callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; - - post(method: "Runtime.queryObjects", params?: Runtime.QueryObjectsParameterType, callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void; - post(method: "Runtime.queryObjects", callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void; - - /** - * Returns all let, const and class variables from global scope. - */ - post( - method: "Runtime.globalLexicalScopeNames", - params?: Runtime.GlobalLexicalScopeNamesParameterType, - callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void - ): void; - post(method: "Runtime.globalLexicalScopeNames", callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void): void; - - /** - * Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received. - */ - post(method: "Debugger.enable", callback?: (err: Error | null, params: Debugger.EnableReturnType) => void): void; - - /** - * Disables debugger for given page. - */ - post(method: "Debugger.disable", callback?: (err: Error | null) => void): void; - - /** - * Activates / deactivates all breakpoints on the page. - */ - post(method: "Debugger.setBreakpointsActive", params?: Debugger.SetBreakpointsActiveParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setBreakpointsActive", callback?: (err: Error | null) => void): void; - - /** - * Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc). - */ - post(method: "Debugger.setSkipAllPauses", params?: Debugger.SetSkipAllPausesParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setSkipAllPauses", callback?: (err: Error | null) => void): void; - - /** - * Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in locations property. Further matching script parsing will result in subsequent breakpointResolved events issued. This logical breakpoint will survive page reloads. - */ - post(method: "Debugger.setBreakpointByUrl", params?: Debugger.SetBreakpointByUrlParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; - post(method: "Debugger.setBreakpointByUrl", callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; - - /** - * Sets JavaScript breakpoint at a given location. - */ - post(method: "Debugger.setBreakpoint", params?: Debugger.SetBreakpointParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; - post(method: "Debugger.setBreakpoint", callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; - - /** - * Removes JavaScript breakpoint. - */ - post(method: "Debugger.removeBreakpoint", params?: Debugger.RemoveBreakpointParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.removeBreakpoint", callback?: (err: Error | null) => void): void; - - /** - * Returns possible locations for breakpoint. scriptId in start and end range locations should be the same. - */ - post( - method: "Debugger.getPossibleBreakpoints", - params?: Debugger.GetPossibleBreakpointsParameterType, - callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void - ): void; - post(method: "Debugger.getPossibleBreakpoints", callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void): void; - - /** - * Continues execution until specific location is reached. - */ - post(method: "Debugger.continueToLocation", params?: Debugger.ContinueToLocationParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.continueToLocation", callback?: (err: Error | null) => void): void; - - /** - * @experimental - */ - post(method: "Debugger.pauseOnAsyncCall", params?: Debugger.PauseOnAsyncCallParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.pauseOnAsyncCall", callback?: (err: Error | null) => void): void; - - /** - * Steps over the statement. - */ - post(method: "Debugger.stepOver", callback?: (err: Error | null) => void): void; - - /** - * Steps into the function call. - */ - post(method: "Debugger.stepInto", params?: Debugger.StepIntoParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.stepInto", callback?: (err: Error | null) => void): void; - - /** - * Steps out of the function call. - */ - post(method: "Debugger.stepOut", callback?: (err: Error | null) => void): void; - - /** - * Stops on the next JavaScript statement. - */ - post(method: "Debugger.pause", callback?: (err: Error | null) => void): void; - - /** - * This method is deprecated - use Debugger.stepInto with breakOnAsyncCall and Debugger.pauseOnAsyncTask instead. Steps into next scheduled async task if any is scheduled before next pause. Returns success when async task is actually scheduled, returns error if no task were scheduled or another scheduleStepIntoAsync was called. - * @experimental - */ - post(method: "Debugger.scheduleStepIntoAsync", callback?: (err: Error | null) => void): void; - - /** - * Resumes JavaScript execution. - */ - post(method: "Debugger.resume", callback?: (err: Error | null) => void): void; - - /** - * Returns stack trace with given stackTraceId. - * @experimental - */ - post(method: "Debugger.getStackTrace", params?: Debugger.GetStackTraceParameterType, callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void; - post(method: "Debugger.getStackTrace", callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void; - - /** - * Searches for given string in script content. - */ - post(method: "Debugger.searchInContent", params?: Debugger.SearchInContentParameterType, callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; - post(method: "Debugger.searchInContent", callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; - - /** - * Edits JavaScript source live. - */ - post(method: "Debugger.setScriptSource", params?: Debugger.SetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; - post(method: "Debugger.setScriptSource", callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; - - /** - * Restarts particular call frame from the beginning. - */ - post(method: "Debugger.restartFrame", params?: Debugger.RestartFrameParameterType, callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; - post(method: "Debugger.restartFrame", callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; - - /** - * Returns source for the script with given id. - */ - post(method: "Debugger.getScriptSource", params?: Debugger.GetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; - post(method: "Debugger.getScriptSource", callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; - - /** - * Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is none. - */ - post(method: "Debugger.setPauseOnExceptions", params?: Debugger.SetPauseOnExceptionsParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setPauseOnExceptions", callback?: (err: Error | null) => void): void; - - /** - * Evaluates expression on a given call frame. - */ - post(method: "Debugger.evaluateOnCallFrame", params?: Debugger.EvaluateOnCallFrameParameterType, callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; - post(method: "Debugger.evaluateOnCallFrame", callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; - - /** - * Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually. - */ - post(method: "Debugger.setVariableValue", params?: Debugger.SetVariableValueParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setVariableValue", callback?: (err: Error | null) => void): void; - - /** - * Changes return value in top frame. Available only at return break position. - * @experimental - */ - post(method: "Debugger.setReturnValue", params?: Debugger.SetReturnValueParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setReturnValue", callback?: (err: Error | null) => void): void; - - /** - * Enables or disables async call stacks tracking. - */ - post(method: "Debugger.setAsyncCallStackDepth", params?: Debugger.SetAsyncCallStackDepthParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setAsyncCallStackDepth", callback?: (err: Error | null) => void): void; - - /** - * Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in scripts with url matching one of the patterns. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. - * @experimental - */ - post(method: "Debugger.setBlackboxPatterns", params?: Debugger.SetBlackboxPatternsParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setBlackboxPatterns", callback?: (err: Error | null) => void): void; - - /** - * Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. Positions array contains positions where blackbox state is changed. First interval isn't blackboxed. Array should be sorted. - * @experimental - */ - post(method: "Debugger.setBlackboxedRanges", params?: Debugger.SetBlackboxedRangesParameterType, callback?: (err: Error | null) => void): void; - post(method: "Debugger.setBlackboxedRanges", callback?: (err: Error | null) => void): void; - - /** - * Enables console domain, sends the messages collected so far to the client by means of the messageAdded notification. - */ - post(method: "Console.enable", callback?: (err: Error | null) => void): void; - - /** - * Disables console domain, prevents further console messages from being reported to the client. - */ - post(method: "Console.disable", callback?: (err: Error | null) => void): void; - - /** - * Does nothing. - */ - post(method: "Console.clearMessages", callback?: (err: Error | null) => void): void; - - post(method: "Profiler.enable", callback?: (err: Error | null) => void): void; - - post(method: "Profiler.disable", callback?: (err: Error | null) => void): void; - - /** - * Changes CPU profiler sampling interval. Must be called before CPU profiles recording started. - */ - post(method: "Profiler.setSamplingInterval", params?: Profiler.SetSamplingIntervalParameterType, callback?: (err: Error | null) => void): void; - post(method: "Profiler.setSamplingInterval", callback?: (err: Error | null) => void): void; - - post(method: "Profiler.start", callback?: (err: Error | null) => void): void; - - post(method: "Profiler.stop", callback?: (err: Error | null, params: Profiler.StopReturnType) => void): void; - - /** - * Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code coverage may be incomplete. Enabling prevents running optimized code and resets execution counters. - */ - post(method: "Profiler.startPreciseCoverage", params?: Profiler.StartPreciseCoverageParameterType, callback?: (err: Error | null) => void): void; - post(method: "Profiler.startPreciseCoverage", callback?: (err: Error | null) => void): void; - - /** - * Disable precise code coverage. Disabling releases unnecessary execution count records and allows executing optimized code. - */ - post(method: "Profiler.stopPreciseCoverage", callback?: (err: Error | null) => void): void; - - /** - * Collect coverage data for the current isolate, and resets execution counters. Precise code coverage needs to have started. - */ - post(method: "Profiler.takePreciseCoverage", callback?: (err: Error | null, params: Profiler.TakePreciseCoverageReturnType) => void): void; - - /** - * Collect coverage data for the current isolate. The coverage data may be incomplete due to garbage collection. - */ - post(method: "Profiler.getBestEffortCoverage", callback?: (err: Error | null, params: Profiler.GetBestEffortCoverageReturnType) => void): void; - - /** - * Enable type profile. - * @experimental - */ - post(method: "Profiler.startTypeProfile", callback?: (err: Error | null) => void): void; - - /** - * Disable type profile. Disabling releases type profile data collected so far. - * @experimental - */ - post(method: "Profiler.stopTypeProfile", callback?: (err: Error | null) => void): void; - - /** - * Collect type profile. - * @experimental - */ - post(method: "Profiler.takeTypeProfile", callback?: (err: Error | null, params: Profiler.TakeTypeProfileReturnType) => void): void; - - post(method: "HeapProfiler.enable", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.disable", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.startTrackingHeapObjects", params?: HeapProfiler.StartTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.startTrackingHeapObjects", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.stopTrackingHeapObjects", params?: HeapProfiler.StopTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.stopTrackingHeapObjects", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.takeHeapSnapshot", params?: HeapProfiler.TakeHeapSnapshotParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.takeHeapSnapshot", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.collectGarbage", callback?: (err: Error | null) => void): void; - - post( - method: "HeapProfiler.getObjectByHeapObjectId", - params?: HeapProfiler.GetObjectByHeapObjectIdParameterType, - callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void - ): void; - post(method: "HeapProfiler.getObjectByHeapObjectId", callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void): void; - - /** - * Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions). - */ - post(method: "HeapProfiler.addInspectedHeapObject", params?: HeapProfiler.AddInspectedHeapObjectParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.addInspectedHeapObject", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.getHeapObjectId", params?: HeapProfiler.GetHeapObjectIdParameterType, callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; - post(method: "HeapProfiler.getHeapObjectId", callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; - - post(method: "HeapProfiler.startSampling", params?: HeapProfiler.StartSamplingParameterType, callback?: (err: Error | null) => void): void; - post(method: "HeapProfiler.startSampling", callback?: (err: Error | null) => void): void; - - post(method: "HeapProfiler.stopSampling", callback?: (err: Error | null, params: HeapProfiler.StopSamplingReturnType) => void): void; - - post(method: "HeapProfiler.getSamplingProfile", callback?: (err: Error | null, params: HeapProfiler.GetSamplingProfileReturnType) => void): void; - - /** - * Gets supported tracing categories. - */ - post(method: "NodeTracing.getCategories", callback?: (err: Error | null, params: NodeTracing.GetCategoriesReturnType) => void): void; - - /** - * Start trace events collection. - */ - post(method: "NodeTracing.start", params?: NodeTracing.StartParameterType, callback?: (err: Error | null) => void): void; - post(method: "NodeTracing.start", callback?: (err: Error | null) => void): void; - - /** - * Stop trace events collection. Remaining collected events will be sent as a sequence of - * dataCollected events followed by tracingComplete event. - */ - post(method: "NodeTracing.stop", callback?: (err: Error | null) => void): void; - - /** - * Sends protocol message over session with given id. - */ - post(method: "NodeWorker.sendMessageToWorker", params?: NodeWorker.SendMessageToWorkerParameterType, callback?: (err: Error | null) => void): void; - post(method: "NodeWorker.sendMessageToWorker", callback?: (err: Error | null) => void): void; - - /** - * Instructs the inspector to attach to running workers. Will also attach to new workers - * as they start - */ - post(method: "NodeWorker.enable", params?: NodeWorker.EnableParameterType, callback?: (err: Error | null) => void): void; - post(method: "NodeWorker.enable", callback?: (err: Error | null) => void): void; - - /** - * Detaches from all running workers and disables attaching to new workers as they are started. - */ - post(method: "NodeWorker.disable", callback?: (err: Error | null) => void): void; - - /** - * Detached from the worker with given sessionId. - */ - post(method: "NodeWorker.detach", params?: NodeWorker.DetachParameterType, callback?: (err: Error | null) => void): void; - post(method: "NodeWorker.detach", callback?: (err: Error | null) => void): void; - - /** - * Enable the `NodeRuntime.waitingForDisconnect`. - */ - post(method: "NodeRuntime.notifyWhenWaitingForDisconnect", params?: NodeRuntime.NotifyWhenWaitingForDisconnectParameterType, callback?: (err: Error | null) => void): void; - post(method: "NodeRuntime.notifyWhenWaitingForDisconnect", callback?: (err: Error | null) => void): void; - - // Events - - addListener(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - addListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - addListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - addListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - addListener(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - addListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - addListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - addListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - addListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - addListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - addListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - addListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - addListener(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - addListener(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - addListener(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - addListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - addListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - addListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - addListener(event: "HeapProfiler.resetProfiles", listener: () => void): this; - addListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - addListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - addListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - - /** - * Contains an bucket of collected trace events. - */ - addListener(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification) => void): this; - - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - addListener(event: "NodeTracing.tracingComplete", listener: () => void): this; - - /** - * Issued when attached to a worker. - */ - addListener(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when detached from the worker. - */ - addListener(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - addListener(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - addListener(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "inspectorNotification", message: InspectorNotification<{}>): boolean; - emit(event: "Runtime.executionContextCreated", message: InspectorNotification): boolean; - emit(event: "Runtime.executionContextDestroyed", message: InspectorNotification): boolean; - emit(event: "Runtime.executionContextsCleared"): boolean; - emit(event: "Runtime.exceptionThrown", message: InspectorNotification): boolean; - emit(event: "Runtime.exceptionRevoked", message: InspectorNotification): boolean; - emit(event: "Runtime.consoleAPICalled", message: InspectorNotification): boolean; - emit(event: "Runtime.inspectRequested", message: InspectorNotification): boolean; - emit(event: "Debugger.scriptParsed", message: InspectorNotification): boolean; - emit(event: "Debugger.scriptFailedToParse", message: InspectorNotification): boolean; - emit(event: "Debugger.breakpointResolved", message: InspectorNotification): boolean; - emit(event: "Debugger.paused", message: InspectorNotification): boolean; - emit(event: "Debugger.resumed"): boolean; - emit(event: "Console.messageAdded", message: InspectorNotification): boolean; - emit(event: "Profiler.consoleProfileStarted", message: InspectorNotification): boolean; - emit(event: "Profiler.consoleProfileFinished", message: InspectorNotification): boolean; - emit(event: "HeapProfiler.addHeapSnapshotChunk", message: InspectorNotification): boolean; - emit(event: "HeapProfiler.resetProfiles"): boolean; - emit(event: "HeapProfiler.reportHeapSnapshotProgress", message: InspectorNotification): boolean; - emit(event: "HeapProfiler.lastSeenObjectId", message: InspectorNotification): boolean; - emit(event: "HeapProfiler.heapStatsUpdate", message: InspectorNotification): boolean; - emit(event: "NodeTracing.dataCollected", message: InspectorNotification): boolean; - emit(event: "NodeTracing.tracingComplete"): boolean; - emit(event: "NodeWorker.attachedToWorker", message: InspectorNotification): boolean; - emit(event: "NodeWorker.detachedFromWorker", message: InspectorNotification): boolean; - emit(event: "NodeWorker.receivedMessageFromWorker", message: InspectorNotification): boolean; - emit(event: "NodeRuntime.waitingForDisconnect"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - on(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - on(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - on(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - on(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - on(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - on(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - on(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - on(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - on(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - on(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - on(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - on(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - on(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - on(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - on(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - on(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - on(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - on(event: "HeapProfiler.resetProfiles", listener: () => void): this; - on(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - on(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - on(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - - /** - * Contains an bucket of collected trace events. - */ - on(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification) => void): this; - - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - on(event: "NodeTracing.tracingComplete", listener: () => void): this; - - /** - * Issued when attached to a worker. - */ - on(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when detached from the worker. - */ - on(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - on(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - on(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - once(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - once(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - once(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - once(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - once(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - once(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - once(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - once(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - once(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - once(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - once(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - once(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - once(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - once(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - once(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - once(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - once(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - once(event: "HeapProfiler.resetProfiles", listener: () => void): this; - once(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - once(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - once(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - - /** - * Contains an bucket of collected trace events. - */ - once(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification) => void): this; - - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - once(event: "NodeTracing.tracingComplete", listener: () => void): this; - - /** - * Issued when attached to a worker. - */ - once(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when detached from the worker. - */ - once(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - once(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - once(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - prependListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - prependListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - prependListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - prependListener(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - prependListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - prependListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - prependListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - prependListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - prependListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - prependListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - prependListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - prependListener(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - prependListener(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - prependListener(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - prependListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - prependListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - prependListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - prependListener(event: "HeapProfiler.resetProfiles", listener: () => void): this; - prependListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - prependListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - prependListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - - /** - * Contains an bucket of collected trace events. - */ - prependListener(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification) => void): this; - - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - prependListener(event: "NodeTracing.tracingComplete", listener: () => void): this; - - /** - * Issued when attached to a worker. - */ - prependListener(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when detached from the worker. - */ - prependListener(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - prependListener(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - prependListener(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - - /** - * Emitted when any notification from the V8 Inspector is received. - */ - prependOnceListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this; - - /** - * Issued when new execution context is created. - */ - prependOnceListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when execution context is destroyed. - */ - prependOnceListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when all executionContexts were cleared in browser - */ - prependOnceListener(event: "Runtime.executionContextsCleared", listener: () => void): this; - - /** - * Issued when exception was thrown and unhandled. - */ - prependOnceListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when unhandled exception was revoked. - */ - prependOnceListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when console API was called. - */ - prependOnceListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - prependOnceListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - prependOnceListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when virtual machine fails to parse the script. - */ - prependOnceListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - prependOnceListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - prependOnceListener(event: "Debugger.paused", listener: (message: InspectorNotification) => void): this; - - /** - * Fired when the virtual machine resumed execution. - */ - prependOnceListener(event: "Debugger.resumed", listener: () => void): this; - - /** - * Issued when new console message is added. - */ - prependOnceListener(event: "Console.messageAdded", listener: (message: InspectorNotification) => void): this; - - /** - * Sent when new profile recording is started using console.profile() call. - */ - prependOnceListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification) => void): this; - - prependOnceListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: "HeapProfiler.resetProfiles", listener: () => void): this; - prependOnceListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - prependOnceListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification) => void): this; - - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - prependOnceListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification) => void): this; - - /** - * Contains an bucket of collected trace events. - */ - prependOnceListener(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification) => void): this; - - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - prependOnceListener(event: "NodeTracing.tracingComplete", listener: () => void): this; - - /** - * Issued when attached to a worker. - */ - prependOnceListener(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Issued when detached from the worker. - */ - prependOnceListener(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - prependOnceListener(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification) => void): this; - - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - prependOnceListener(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this; - } - - // Top Level API - - /** - * Activate inspector on host and port. Equivalent to node --inspect=[[host:]port], but can be done programatically after node has started. - * If wait is true, will block until a client has connected to the inspect port and flow control has been passed to the debugger client. - * @param port Port to listen on for inspector connections. Optional, defaults to what was specified on the CLI. - * @param host Host to listen on for inspector connections. Optional, defaults to what was specified on the CLI. - * @param wait Block until a client has connected. Optional, defaults to false. - */ - function open(port?: number, host?: string, wait?: boolean): void; - - /** - * Deactivate the inspector. Blocks until there are no active connections. - */ - function close(): void; - - /** - * Return the URL of the active inspector, or `undefined` if there is none. - */ - function url(): string | undefined; - - /** - * Blocks until a client (existing or connected later) has sent - * `Runtime.runIfWaitingForDebugger` command. - * An exception will be thrown if there is no active inspector. - */ - function waitForDebugger(): void; -} diff --git a/node_modules/@types/node/module.d.ts b/node_modules/@types/node/module.d.ts deleted file mode 100644 index 0778bcd97..000000000 --- a/node_modules/@types/node/module.d.ts +++ /dev/null @@ -1,57 +0,0 @@ -declare module 'node:module' { - import Module = require('module'); - export = Module; -} - -declare module 'module' { - import { URL } from 'node:url'; - namespace Module { - /** - * Updates all the live bindings for builtin ES Modules to match the properties of the CommonJS exports. - * It does not add or remove exported names from the ES Modules. - */ - function syncBuiltinESMExports(): void; - - function findSourceMap(path: string, error?: Error): SourceMap; - interface SourceMapPayload { - file: string; - version: number; - sources: string[]; - sourcesContent: string[]; - names: string[]; - mappings: string; - sourceRoot: string; - } - - interface SourceMapping { - generatedLine: number; - generatedColumn: number; - originalSource: string; - originalLine: number; - originalColumn: number; - } - - class SourceMap { - readonly payload: SourceMapPayload; - constructor(payload: SourceMapPayload); - findEntry(line: number, column: number): SourceMapping; - } - } - interface Module extends NodeModule {} - class Module { - static runMain(): void; - static wrap(code: string): string; - - /** - * @deprecated Deprecated since: v12.2.0. Please use createRequire() instead. - */ - static createRequireFromPath(path: string): NodeRequire; - static createRequire(path: string | URL): NodeRequire; - static builtinModules: string[]; - - static Module: typeof Module; - - constructor(id: string, parent?: Module); - } - export = Module; -} diff --git a/node_modules/@types/node/net.d.ts b/node_modules/@types/node/net.d.ts deleted file mode 100644 index b764dd24b..000000000 --- a/node_modules/@types/node/net.d.ts +++ /dev/null @@ -1,289 +0,0 @@ -declare module 'node:net' { - export * from 'net'; -} - -declare module 'net' { - import * as stream from 'node:stream'; - import EventEmitter = require('node:events'); - import * as dns from 'node:dns'; - - type LookupFunction = ( - hostname: string, - options: dns.LookupOneOptions, - callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, - ) => void; - - interface AddressInfo { - address: string; - family: string; - port: number; - } - - interface SocketConstructorOpts { - fd?: number; - allowHalfOpen?: boolean; - readable?: boolean; - writable?: boolean; - } - - interface OnReadOpts { - buffer: Uint8Array | (() => Uint8Array); - /** - * This function is called for every chunk of incoming data. - * Two arguments are passed to it: the number of bytes written to buffer and a reference to buffer. - * Return false from this function to implicitly pause() the socket. - */ - callback(bytesWritten: number, buf: Uint8Array): boolean; - } - - interface ConnectOpts { - /** - * If specified, incoming data is stored in a single buffer and passed to the supplied callback when data arrives on the socket. - * Note: this will cause the streaming functionality to not provide any data, however events like 'error', 'end', and 'close' will - * still be emitted as normal and methods like pause() and resume() will also behave as expected. - */ - onread?: OnReadOpts; - } - - interface TcpSocketConnectOpts extends ConnectOpts { - port: number; - host?: string; - localAddress?: string; - localPort?: number; - hints?: number; - family?: number; - lookup?: LookupFunction; - } - - interface IpcSocketConnectOpts extends ConnectOpts { - path: string; - } - - type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts; - - class Socket extends stream.Duplex { - constructor(options?: SocketConstructorOpts); - - // Extended base methods - write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean; - write(str: Uint8Array | string, encoding?: BufferEncoding, cb?: (err?: Error) => void): boolean; - - connect(options: SocketConnectOpts, connectionListener?: () => void): this; - connect(port: number, host: string, connectionListener?: () => void): this; - connect(port: number, connectionListener?: () => void): this; - connect(path: string, connectionListener?: () => void): this; - - setEncoding(encoding?: BufferEncoding): this; - pause(): this; - resume(): this; - setTimeout(timeout: number, callback?: () => void): this; - setNoDelay(noDelay?: boolean): this; - setKeepAlive(enable?: boolean, initialDelay?: number): this; - address(): AddressInfo | {}; - unref(): this; - ref(): this; - - /** @deprecated since v14.6.0 - Use `writableLength` instead. */ - readonly bufferSize: number; - readonly bytesRead: number; - readonly bytesWritten: number; - readonly connecting: boolean; - readonly destroyed: boolean; - readonly localAddress: string; - readonly localPort: number; - readonly remoteAddress?: string; - readonly remoteFamily?: string; - readonly remotePort?: number; - - // Extended base methods - end(cb?: () => void): void; - end(buffer: Uint8Array | string, cb?: () => void): void; - end(str: Uint8Array | string, encoding?: BufferEncoding, cb?: () => void): void; - - /** - * events.EventEmitter - * 1. close - * 2. connect - * 3. data - * 4. drain - * 5. end - * 6. error - * 7. lookup - * 8. timeout - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: (had_error: boolean) => void): this; - addListener(event: "connect", listener: () => void): this; - addListener(event: "data", listener: (data: Buffer) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - addListener(event: "timeout", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", had_error: boolean): boolean; - emit(event: "connect"): boolean; - emit(event: "data", data: Buffer): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; - emit(event: "timeout"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: (had_error: boolean) => void): this; - on(event: "connect", listener: () => void): this; - on(event: "data", listener: (data: Buffer) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - on(event: "timeout", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: (had_error: boolean) => void): this; - once(event: "connect", listener: () => void): this; - once(event: "data", listener: (data: Buffer) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - once(event: "timeout", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: (had_error: boolean) => void): this; - prependListener(event: "connect", listener: () => void): this; - prependListener(event: "data", listener: (data: Buffer) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependListener(event: "timeout", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: (had_error: boolean) => void): this; - prependOnceListener(event: "connect", listener: () => void): this; - prependOnceListener(event: "data", listener: (data: Buffer) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } - - interface ListenOptions { - port?: number; - host?: string; - backlog?: number; - path?: string; - exclusive?: boolean; - readableAll?: boolean; - writableAll?: boolean; - /** - * @default false - */ - ipv6Only?: boolean; - } - - interface ServerOpts { - /** - * Indicates whether half-opened TCP connections are allowed. __Default:__ `false`. - */ - allowHalfOpen?: boolean; - - /** - * Indicates whether the socket should be paused on incoming connections. __Default:__ `false`. - */ - pauseOnConnect?: boolean; - } - - // https://github.com/nodejs/node/blob/master/lib/net.js - class Server extends EventEmitter { - constructor(connectionListener?: (socket: Socket) => void); - constructor(options?: ServerOpts, connectionListener?: (socket: Socket) => void); - - listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this; - listen(port?: number, hostname?: string, listeningListener?: () => void): this; - listen(port?: number, backlog?: number, listeningListener?: () => void): this; - listen(port?: number, listeningListener?: () => void): this; - listen(path: string, backlog?: number, listeningListener?: () => void): this; - listen(path: string, listeningListener?: () => void): this; - listen(options: ListenOptions, listeningListener?: () => void): this; - listen(handle: any, backlog?: number, listeningListener?: () => void): this; - listen(handle: any, listeningListener?: () => void): this; - close(callback?: (err?: Error) => void): this; - address(): AddressInfo | string | null; - getConnections(cb: (error: Error | null, count: number) => void): void; - ref(): this; - unref(): this; - maxConnections: number; - connections: number; - listening: boolean; - - /** - * events.EventEmitter - * 1. close - * 2. connection - * 3. error - * 4. listening - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connection", listener: (socket: Socket) => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "connection", socket: Socket): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "connection", listener: (socket: Socket) => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "connection", listener: (socket: Socket) => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connection", listener: (socket: Socket) => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - } - - interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts { - timeout?: number; - } - - interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts { - timeout?: number; - } - - type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts; - - function createServer(connectionListener?: (socket: Socket) => void): Server; - function createServer(options?: ServerOpts, connectionListener?: (socket: Socket) => void): Server; - function connect(options: NetConnectOpts, connectionListener?: () => void): Socket; - function connect(port: number, host?: string, connectionListener?: () => void): Socket; - function connect(path: string, connectionListener?: () => void): Socket; - function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket; - function createConnection(port: number, host?: string, connectionListener?: () => void): Socket; - function createConnection(path: string, connectionListener?: () => void): Socket; - function isIP(input: string): number; - function isIPv4(input: string): boolean; - function isIPv6(input: string): boolean; -} diff --git a/node_modules/@types/node/os.d.ts b/node_modules/@types/node/os.d.ts deleted file mode 100644 index f152ade96..000000000 --- a/node_modules/@types/node/os.d.ts +++ /dev/null @@ -1,243 +0,0 @@ -declare module 'node:os' { - export * from 'os'; -} - -declare module 'os' { - interface CpuInfo { - model: string; - speed: number; - times: { - user: number; - nice: number; - sys: number; - idle: number; - irq: number; - }; - } - - interface NetworkInterfaceBase { - address: string; - netmask: string; - mac: string; - internal: boolean; - cidr: string | null; - } - - interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase { - family: "IPv4"; - } - - interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase { - family: "IPv6"; - scopeid: number; - } - - interface UserInfo { - username: T; - uid: number; - gid: number; - shell: T; - homedir: T; - } - - type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6; - - function hostname(): string; - function loadavg(): number[]; - function uptime(): number; - function freemem(): number; - function totalmem(): number; - function cpus(): CpuInfo[]; - function type(): string; - function release(): string; - function networkInterfaces(): NodeJS.Dict; - function homedir(): string; - function userInfo(options: { encoding: 'buffer' }): UserInfo; - function userInfo(options?: { encoding: BufferEncoding }): UserInfo; - - type SignalConstants = { - [key in NodeJS.Signals]: number; - }; - - namespace constants { - const UV_UDP_REUSEADDR: number; - namespace signals {} - const signals: SignalConstants; - namespace errno { - const E2BIG: number; - const EACCES: number; - const EADDRINUSE: number; - const EADDRNOTAVAIL: number; - const EAFNOSUPPORT: number; - const EAGAIN: number; - const EALREADY: number; - const EBADF: number; - const EBADMSG: number; - const EBUSY: number; - const ECANCELED: number; - const ECHILD: number; - const ECONNABORTED: number; - const ECONNREFUSED: number; - const ECONNRESET: number; - const EDEADLK: number; - const EDESTADDRREQ: number; - const EDOM: number; - const EDQUOT: number; - const EEXIST: number; - const EFAULT: number; - const EFBIG: number; - const EHOSTUNREACH: number; - const EIDRM: number; - const EILSEQ: number; - const EINPROGRESS: number; - const EINTR: number; - const EINVAL: number; - const EIO: number; - const EISCONN: number; - const EISDIR: number; - const ELOOP: number; - const EMFILE: number; - const EMLINK: number; - const EMSGSIZE: number; - const EMULTIHOP: number; - const ENAMETOOLONG: number; - const ENETDOWN: number; - const ENETRESET: number; - const ENETUNREACH: number; - const ENFILE: number; - const ENOBUFS: number; - const ENODATA: number; - const ENODEV: number; - const ENOENT: number; - const ENOEXEC: number; - const ENOLCK: number; - const ENOLINK: number; - const ENOMEM: number; - const ENOMSG: number; - const ENOPROTOOPT: number; - const ENOSPC: number; - const ENOSR: number; - const ENOSTR: number; - const ENOSYS: number; - const ENOTCONN: number; - const ENOTDIR: number; - const ENOTEMPTY: number; - const ENOTSOCK: number; - const ENOTSUP: number; - const ENOTTY: number; - const ENXIO: number; - const EOPNOTSUPP: number; - const EOVERFLOW: number; - const EPERM: number; - const EPIPE: number; - const EPROTO: number; - const EPROTONOSUPPORT: number; - const EPROTOTYPE: number; - const ERANGE: number; - const EROFS: number; - const ESPIPE: number; - const ESRCH: number; - const ESTALE: number; - const ETIME: number; - const ETIMEDOUT: number; - const ETXTBSY: number; - const EWOULDBLOCK: number; - const EXDEV: number; - const WSAEINTR: number; - const WSAEBADF: number; - const WSAEACCES: number; - const WSAEFAULT: number; - const WSAEINVAL: number; - const WSAEMFILE: number; - const WSAEWOULDBLOCK: number; - const WSAEINPROGRESS: number; - const WSAEALREADY: number; - const WSAENOTSOCK: number; - const WSAEDESTADDRREQ: number; - const WSAEMSGSIZE: number; - const WSAEPROTOTYPE: number; - const WSAENOPROTOOPT: number; - const WSAEPROTONOSUPPORT: number; - const WSAESOCKTNOSUPPORT: number; - const WSAEOPNOTSUPP: number; - const WSAEPFNOSUPPORT: number; - const WSAEAFNOSUPPORT: number; - const WSAEADDRINUSE: number; - const WSAEADDRNOTAVAIL: number; - const WSAENETDOWN: number; - const WSAENETUNREACH: number; - const WSAENETRESET: number; - const WSAECONNABORTED: number; - const WSAECONNRESET: number; - const WSAENOBUFS: number; - const WSAEISCONN: number; - const WSAENOTCONN: number; - const WSAESHUTDOWN: number; - const WSAETOOMANYREFS: number; - const WSAETIMEDOUT: number; - const WSAECONNREFUSED: number; - const WSAELOOP: number; - const WSAENAMETOOLONG: number; - const WSAEHOSTDOWN: number; - const WSAEHOSTUNREACH: number; - const WSAENOTEMPTY: number; - const WSAEPROCLIM: number; - const WSAEUSERS: number; - const WSAEDQUOT: number; - const WSAESTALE: number; - const WSAEREMOTE: number; - const WSASYSNOTREADY: number; - const WSAVERNOTSUPPORTED: number; - const WSANOTINITIALISED: number; - const WSAEDISCON: number; - const WSAENOMORE: number; - const WSAECANCELLED: number; - const WSAEINVALIDPROCTABLE: number; - const WSAEINVALIDPROVIDER: number; - const WSAEPROVIDERFAILEDINIT: number; - const WSASYSCALLFAILURE: number; - const WSASERVICE_NOT_FOUND: number; - const WSATYPE_NOT_FOUND: number; - const WSA_E_NO_MORE: number; - const WSA_E_CANCELLED: number; - const WSAEREFUSED: number; - } - namespace priority { - const PRIORITY_LOW: number; - const PRIORITY_BELOW_NORMAL: number; - const PRIORITY_NORMAL: number; - const PRIORITY_ABOVE_NORMAL: number; - const PRIORITY_HIGH: number; - const PRIORITY_HIGHEST: number; - } - } - - function arch(): string; - /** - * Returns a string identifying the kernel version. - * On POSIX systems, the operating system release is determined by calling - * [uname(3)][]. On Windows, `pRtlGetVersion` is used, and if it is not available, - * `GetVersionExW()` will be used. See - * https://en.wikipedia.org/wiki/Uname#Examples for more information. - */ - function version(): string; - function platform(): NodeJS.Platform; - function tmpdir(): string; - const EOL: string; - function endianness(): "BE" | "LE"; - /** - * Gets the priority of a process. - * Defaults to current process. - */ - function getPriority(pid?: number): number; - /** - * Sets the priority of the current process. - * @param priority Must be in range of -20 to 19 - */ - function setPriority(priority: number): void; - /** - * Sets the priority of the process specified process. - * @param priority Must be in range of -20 to 19 - */ - function setPriority(pid: number, priority: number): void; -} diff --git a/node_modules/@types/node/package.json b/node_modules/@types/node/package.json deleted file mode 100644 index b7e996238..000000000 --- a/node_modules/@types/node/package.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "_args": [ - [ - "@types/node@14.14.28", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_from": "@types/node@14.14.28", - "_id": "@types/node@14.14.28", - "_inBundle": false, - "_integrity": "sha512-lg55ArB+ZiHHbBBttLpzD07akz0QPrZgUODNakeC09i62dnrywr9mFErHuaPlB6I7z+sEbK+IYmplahvplCj2g==", - "_location": "/@types/node", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "@types/node@14.14.28", - "name": "@types/node", - "escapedName": "@types%2fnode", - "scope": "@types", - "rawSpec": "14.14.28", - "saveSpec": null, - "fetchSpec": "14.14.28" - }, - "_requiredBy": [ - "#DEV:/", - "/@jest/globals/@jest/environment", - "/@jest/globals/@jest/fake-timers", - "/@jest/globals/@jest/types", - "/@jest/globals/jest-mock", - "/@jest/globals/jest-util", - "/@octokit/types", - "/@types/graceful-fs", - "/@types/jest/@jest/types", - "/jest-circus", - "/jest-circus/@jest/console", - "/jest-circus/@jest/environment", - "/jest-circus/@jest/fake-timers", - "/jest-circus/@jest/types", - "/jest-circus/jest-environment-jsdom", - "/jest-circus/jest-environment-node", - "/jest-circus/jest-haste-map", - "/jest-circus/jest-jasmine2", - "/jest-circus/jest-mock", - "/jest-circus/jest-runner", - "/jest-circus/jest-serializer", - "/jest-circus/jest-util", - "/jest-circus/jest-worker" - ], - "_resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.28.tgz", - "_spec": "14.14.28", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "bugs": { - "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues" - }, - "contributors": [ - { - "name": "Microsoft TypeScript", - "url": "https://github.com/Microsoft" - }, - { - "name": "DefinitelyTyped", - "url": "https://github.com/DefinitelyTyped" - }, - { - "name": "Alberto Schiabel", - "url": "https://github.com/jkomyno" - }, - { - "name": "Alexander T.", - "url": "https://github.com/a-tarasyuk" - }, - { - "name": "Alvis HT Tang", - "url": "https://github.com/alvis" - }, - { - "name": "Andrew Makarov", - "url": "https://github.com/r3nya" - }, - { - "name": "Benjamin Toueg", - "url": "https://github.com/btoueg" - }, - { - "name": "Bruno Scheufler", - "url": "https://github.com/brunoscheufler" - }, - { - "name": "Chigozirim C.", - "url": "https://github.com/smac89" - }, - { - "name": "David Junger", - "url": "https://github.com/touffy" - }, - { - "name": "Deividas Bakanas", - "url": "https://github.com/DeividasBakanas" - }, - { - "name": "Eugene Y. Q. Shen", - "url": "https://github.com/eyqs" - }, - { - "name": "Hannes Magnusson", - "url": "https://github.com/Hannes-Magnusson-CK" - }, - { - "name": "Hoàng Văn Khải", - "url": "https://github.com/KSXGitHub" - }, - { - "name": "Huw", - "url": "https://github.com/hoo29" - }, - { - "name": "Kelvin Jin", - "url": "https://github.com/kjin" - }, - { - "name": "Klaus Meinhardt", - "url": "https://github.com/ajafff" - }, - { - "name": "Lishude", - "url": "https://github.com/islishude" - }, - { - "name": "Mariusz Wiktorczyk", - "url": "https://github.com/mwiktorczyk" - }, - { - "name": "Mohsen Azimi", - "url": "https://github.com/mohsen1" - }, - { - "name": "Nicolas Even", - "url": "https://github.com/n-e" - }, - { - "name": "Nikita Galkin", - "url": "https://github.com/galkin" - }, - { - "name": "Parambir Singh", - "url": "https://github.com/parambirs" - }, - { - "name": "Sebastian Silbermann", - "url": "https://github.com/eps1lon" - }, - { - "name": "Simon Schick", - "url": "https://github.com/SimonSchick" - }, - { - "name": "Thomas den Hollander", - "url": "https://github.com/ThomasdenH" - }, - { - "name": "Wilco Bakker", - "url": "https://github.com/WilcoBakker" - }, - { - "name": "wwwy3y3", - "url": "https://github.com/wwwy3y3" - }, - { - "name": "Samuel Ainsworth", - "url": "https://github.com/samuela" - }, - { - "name": "Kyle Uehlein", - "url": "https://github.com/kuehlein" - }, - { - "name": "Jordi Oliveras Rovira", - "url": "https://github.com/j-oliveras" - }, - { - "name": "Thanik Bhongbhibhat", - "url": "https://github.com/bhongy" - }, - { - "name": "Marcin Kopacz", - "url": "https://github.com/chyzwar" - }, - { - "name": "Trivikram Kamat", - "url": "https://github.com/trivikr" - }, - { - "name": "Minh Son Nguyen", - "url": "https://github.com/nguymin4" - }, - { - "name": "Junxiao Shi", - "url": "https://github.com/yoursunny" - }, - { - "name": "Ilia Baryshnikov", - "url": "https://github.com/qwelias" - }, - { - "name": "ExE Boss", - "url": "https://github.com/ExE-Boss" - }, - { - "name": "Surasak Chaisurin", - "url": "https://github.com/Ryan-Willpower" - }, - { - "name": "Piotr Błażejewicz", - "url": "https://github.com/peterblazejewicz" - }, - { - "name": "Anna Henningsen", - "url": "https://github.com/addaleax" - }, - { - "name": "Jason Kwok", - "url": "https://github.com/JasonHK" - }, - { - "name": "Victor Perin", - "url": "https://github.com/victorperin" - }, - { - "name": "Yongsheng Zhang", - "url": "https://github.com/ZYSzys" - } - ], - "dependencies": {}, - "description": "TypeScript definitions for Node.js", - "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme", - "license": "MIT", - "main": "", - "name": "@types/node", - "repository": { - "type": "git", - "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git", - "directory": "types/node" - }, - "scripts": {}, - "typeScriptVersion": "3.4", - "types": "index.d.ts", - "typesPublisherContentHash": "3ec5d5f4062ef959e360bf84b5e4632bc583f69292e471b4ad1020653c92edf3", - "typesVersions": { - "<=3.4": { - "*": [ - "ts3.4/*" - ] - }, - "<=3.6": { - "*": [ - "ts3.6/*" - ] - } - }, - "version": "14.14.28" -} diff --git a/node_modules/@types/node/path.d.ts b/node_modules/@types/node/path.d.ts deleted file mode 100644 index 39adcaf1f..000000000 --- a/node_modules/@types/node/path.d.ts +++ /dev/null @@ -1,158 +0,0 @@ -declare module 'node:path' { - import path = require('path'); - export = path; -} - -declare module 'path' { - namespace path { - /** - * A parsed path object generated by path.parse() or consumed by path.format(). - */ - interface ParsedPath { - /** - * The root of the path such as '/' or 'c:\' - */ - root: string; - /** - * The full directory path such as '/home/user/dir' or 'c:\path\dir' - */ - dir: string; - /** - * The file name including extension (if any) such as 'index.html' - */ - base: string; - /** - * The file extension (if any) such as '.html' - */ - ext: string; - /** - * The file name without extension (if any) such as 'index' - */ - name: string; - } - - interface FormatInputPathObject { - /** - * The root of the path such as '/' or 'c:\' - */ - root?: string; - /** - * The full directory path such as '/home/user/dir' or 'c:\path\dir' - */ - dir?: string; - /** - * The file name including extension (if any) such as 'index.html' - */ - base?: string; - /** - * The file extension (if any) such as '.html' - */ - ext?: string; - /** - * The file name without extension (if any) such as 'index' - */ - name?: string; - } - - interface PlatformPath { - /** - * Normalize a string path, reducing '..' and '.' parts. - * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used. - * - * @param p string path to normalize. - */ - normalize(p: string): string; - /** - * Join all arguments together and normalize the resulting path. - * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown. - * - * @param paths paths to join. - */ - join(...paths: string[]): string; - /** - * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. - * - * Starting from leftmost {from} parameter, resolves {to} to an absolute path. - * - * If {to} isn't already absolute, {from} arguments are prepended in right to left order, - * until an absolute path is found. If after using all {from} paths still no absolute path is found, - * the current working directory is used as well. The resulting path is normalized, - * and trailing slashes are removed unless the path gets resolved to the root directory. - * - * @param pathSegments string paths to join. Non-string arguments are ignored. - */ - resolve(...pathSegments: string[]): string; - /** - * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. - * - * @param path path to test. - */ - isAbsolute(p: string): boolean; - /** - * Solve the relative path from {from} to {to}. - * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. - */ - relative(from: string, to: string): string; - /** - * Return the directory name of a path. Similar to the Unix dirname command. - * - * @param p the path to evaluate. - */ - dirname(p: string): string; - /** - * Return the last portion of a path. Similar to the Unix basename command. - * Often used to extract the file name from a fully qualified path. - * - * @param p the path to evaluate. - * @param ext optionally, an extension to remove from the result. - */ - basename(p: string, ext?: string): string; - /** - * Return the extension of the path, from the last '.' to end of string in the last portion of the path. - * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string - * - * @param p the path to evaluate. - */ - extname(p: string): string; - /** - * The platform-specific file separator. '\\' or '/'. - */ - readonly sep: string; - /** - * The platform-specific file delimiter. ';' or ':'. - */ - readonly delimiter: string; - /** - * Returns an object from a path string - the opposite of format(). - * - * @param pathString path to evaluate. - */ - parse(p: string): ParsedPath; - /** - * Returns a path string from an object - the opposite of parse(). - * - * @param pathString path to evaluate. - */ - format(pP: FormatInputPathObject): string; - /** - * On Windows systems only, returns an equivalent namespace-prefixed path for the given path. - * If path is not a string, path will be returned without modifications. - * This method is meaningful only on Windows system. - * On POSIX systems, the method is non-operational and always returns path without modifications. - */ - toNamespacedPath(path: string): string; - /** - * Posix specific pathing. - * Same as parent object on posix. - */ - readonly posix: PlatformPath; - /** - * Windows specific pathing. - * Same as parent object on windows - */ - readonly win32: PlatformPath; - } - } - const path: path.PlatformPath; - export = path; -} diff --git a/node_modules/@types/node/perf_hooks.d.ts b/node_modules/@types/node/perf_hooks.d.ts deleted file mode 100644 index 6c858ef9f..000000000 --- a/node_modules/@types/node/perf_hooks.d.ts +++ /dev/null @@ -1,275 +0,0 @@ -declare module 'node:perf_hooks' { - export * from 'perf_hooks'; -} - -declare module 'perf_hooks' { - import { AsyncResource } from 'node:async_hooks'; - - type EntryType = 'node' | 'mark' | 'measure' | 'gc' | 'function' | 'http2' | 'http'; - - interface PerformanceEntry { - /** - * The total number of milliseconds elapsed for this entry. - * This value will not be meaningful for all Performance Entry types. - */ - readonly duration: number; - - /** - * The name of the performance entry. - */ - readonly name: string; - - /** - * The high resolution millisecond timestamp marking the starting time of the Performance Entry. - */ - readonly startTime: number; - - /** - * The type of the performance entry. - * Currently it may be one of: 'node', 'mark', 'measure', 'gc', or 'function'. - */ - readonly entryType: EntryType; - - /** - * When `performanceEntry.entryType` is equal to 'gc', `the performance.kind` property identifies - * the type of garbage collection operation that occurred. - * See perf_hooks.constants for valid values. - */ - readonly kind?: number; - - /** - * When `performanceEntry.entryType` is equal to 'gc', the `performance.flags` - * property contains additional information about garbage collection operation. - * See perf_hooks.constants for valid values. - */ - readonly flags?: number; - } - - interface PerformanceNodeTiming extends PerformanceEntry { - /** - * The high resolution millisecond timestamp at which the Node.js process completed bootstrap. - */ - readonly bootstrapComplete: number; - - /** - * The high resolution millisecond timestamp at which the Node.js process completed bootstrapping. - * If bootstrapping has not yet finished, the property has the value of -1. - */ - readonly environment: number; - - /** - * The high resolution millisecond timestamp at which the Node.js environment was initialized. - */ - readonly idleTime: number; - - /** - * The high resolution millisecond timestamp of the amount of time the event loop has been idle - * within the event loop's event provider (e.g. `epoll_wait`). This does not take CPU usage - * into consideration. If the event loop has not yet started (e.g., in the first tick of the main script), - * the property has the value of 0. - */ - readonly loopExit: number; - - /** - * The high resolution millisecond timestamp at which the Node.js event loop started. - * If the event loop has not yet started (e.g., in the first tick of the main script), the property has the value of -1. - */ - readonly loopStart: number; - - /** - * The high resolution millisecond timestamp at which the V8 platform was initialized. - */ - readonly v8Start: number; - } - - interface EventLoopUtilization { - idle: number; - active: number; - utilization: number; - } - - interface Performance { - /** - * If name is not provided, removes all PerformanceMark objects from the Performance Timeline. - * If name is provided, removes only the named mark. - * @param name - */ - clearMarks(name?: string): void; - - /** - * Creates a new PerformanceMark entry in the Performance Timeline. - * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'mark', - * and whose performanceEntry.duration is always 0. - * Performance marks are used to mark specific significant moments in the Performance Timeline. - * @param name - */ - mark(name?: string): void; - - /** - * Creates a new PerformanceMeasure entry in the Performance Timeline. - * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure', - * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark. - * - * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify - * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist, - * then startMark is set to timeOrigin by default. - * - * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp - * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown. - * @param name - * @param startMark - * @param endMark - */ - measure(name: string, startMark: string, endMark: string): void; - - /** - * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones. - */ - readonly nodeTiming: PerformanceNodeTiming; - - /** - * @return the current high resolution millisecond timestamp - */ - now(): number; - - /** - * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured. - */ - readonly timeOrigin: number; - - /** - * Wraps a function within a new function that measures the running time of the wrapped function. - * A PerformanceObserver must be subscribed to the 'function' event type in order for the timing details to be accessed. - * @param fn - */ - timerify any>(fn: T): T; - - /** - * eventLoopUtilization is similar to CPU utilization except that it is calculated using high precision wall-clock time. - * It represents the percentage of time the event loop has spent outside the event loop's event provider (e.g. epoll_wait). - * No other CPU idle time is taken into consideration. - * - * @param util1 The result of a previous call to eventLoopUtilization() - * @param util2 The result of a previous call to eventLoopUtilization() prior to util1 - */ - eventLoopUtilization(util1?: EventLoopUtilization, util2?: EventLoopUtilization): EventLoopUtilization; - } - - interface PerformanceObserverEntryList { - /** - * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime. - */ - getEntries(): PerformanceEntry[]; - - /** - * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime - * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type. - */ - getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; - - /** - * @return Returns a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime - * whose performanceEntry.entryType is equal to type. - */ - getEntriesByType(type: EntryType): PerformanceEntry[]; - } - - type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void; - - class PerformanceObserver extends AsyncResource { - constructor(callback: PerformanceObserverCallback); - - /** - * Disconnects the PerformanceObserver instance from all notifications. - */ - disconnect(): void; - - /** - * Subscribes the PerformanceObserver instance to notifications of new PerformanceEntry instances identified by options.entryTypes. - * When options.buffered is false, the callback will be invoked once for every PerformanceEntry instance. - * Property buffered defaults to false. - * @param options - */ - observe(options: { entryTypes: ReadonlyArray; buffered?: boolean }): void; - } - - namespace constants { - const NODE_PERFORMANCE_GC_MAJOR: number; - const NODE_PERFORMANCE_GC_MINOR: number; - const NODE_PERFORMANCE_GC_INCREMENTAL: number; - const NODE_PERFORMANCE_GC_WEAKCB: number; - - const NODE_PERFORMANCE_GC_FLAGS_NO: number; - const NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED: number; - const NODE_PERFORMANCE_GC_FLAGS_FORCED: number; - const NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING: number; - const NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE: number; - const NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY: number; - const NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE: number; - } - - const performance: Performance; - - interface EventLoopMonitorOptions { - /** - * The sampling rate in milliseconds. - * Must be greater than zero. - * @default 10 - */ - resolution?: number; - } - - interface EventLoopDelayMonitor { - /** - * Enables the event loop delay sample timer. Returns `true` if the timer was started, `false` if it was already started. - */ - enable(): boolean; - /** - * Disables the event loop delay sample timer. Returns `true` if the timer was stopped, `false` if it was already stopped. - */ - disable(): boolean; - - /** - * Resets the collected histogram data. - */ - reset(): void; - - /** - * Returns the value at the given percentile. - * @param percentile A percentile value between 1 and 100. - */ - percentile(percentile: number): number; - - /** - * A `Map` object detailing the accumulated percentile distribution. - */ - readonly percentiles: Map; - - /** - * The number of times the event loop delay exceeded the maximum 1 hour eventloop delay threshold. - */ - readonly exceeds: number; - - /** - * The minimum recorded event loop delay. - */ - readonly min: number; - - /** - * The maximum recorded event loop delay. - */ - readonly max: number; - - /** - * The mean of the recorded event loop delays. - */ - readonly mean: number; - - /** - * The standard deviation of the recorded event loop delays. - */ - readonly stddev: number; - } - - function monitorEventLoopDelay(options?: EventLoopMonitorOptions): EventLoopDelayMonitor; -} diff --git a/node_modules/@types/node/process.d.ts b/node_modules/@types/node/process.d.ts deleted file mode 100644 index 853813593..000000000 --- a/node_modules/@types/node/process.d.ts +++ /dev/null @@ -1,412 +0,0 @@ -declare module 'node:process' { - export = process; -} - -declare module 'process' { - import * as tty from 'node:tty'; - - global { - var process: NodeJS.Process; - - namespace NodeJS { - // this namespace merge is here because these are specifically used - // as the type for process.stdin, process.stdout, and process.stderr. - // they can't live in tty.d.ts because we need to disambiguate the imported name. - interface ReadStream extends tty.ReadStream {} - interface WriteStream extends tty.WriteStream {} - - interface MemoryUsage { - rss: number; - heapTotal: number; - heapUsed: number; - external: number; - arrayBuffers: number; - } - - interface CpuUsage { - user: number; - system: number; - } - - interface ProcessRelease { - name: string; - sourceUrl?: string; - headersUrl?: string; - libUrl?: string; - lts?: string; - } - - interface ProcessVersions extends Dict { - http_parser: string; - node: string; - v8: string; - ares: string; - uv: string; - zlib: string; - modules: string; - openssl: string; - } - - type Platform = 'aix' - | 'android' - | 'darwin' - | 'freebsd' - | 'linux' - | 'openbsd' - | 'sunos' - | 'win32' - | 'cygwin' - | 'netbsd'; - - type Signals = - "SIGABRT" | "SIGALRM" | "SIGBUS" | "SIGCHLD" | "SIGCONT" | "SIGFPE" | "SIGHUP" | "SIGILL" | "SIGINT" | "SIGIO" | - "SIGIOT" | "SIGKILL" | "SIGPIPE" | "SIGPOLL" | "SIGPROF" | "SIGPWR" | "SIGQUIT" | "SIGSEGV" | "SIGSTKFLT" | - "SIGSTOP" | "SIGSYS" | "SIGTERM" | "SIGTRAP" | "SIGTSTP" | "SIGTTIN" | "SIGTTOU" | "SIGUNUSED" | "SIGURG" | - "SIGUSR1" | "SIGUSR2" | "SIGVTALRM" | "SIGWINCH" | "SIGXCPU" | "SIGXFSZ" | "SIGBREAK" | "SIGLOST" | "SIGINFO"; - - type MultipleResolveType = 'resolve' | 'reject'; - - type BeforeExitListener = (code: number) => void; - type DisconnectListener = () => void; - type ExitListener = (code: number) => void; - type RejectionHandledListener = (promise: Promise) => void; - type UncaughtExceptionListener = (error: Error) => void; - type UnhandledRejectionListener = (reason: {} | null | undefined, promise: Promise) => void; - type WarningListener = (warning: Error) => void; - type MessageListener = (message: any, sendHandle: any) => void; - type SignalsListener = (signal: Signals) => void; - type NewListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void; - type RemoveListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void; - type MultipleResolveListener = (type: MultipleResolveType, promise: Promise, value: any) => void; - - interface Socket extends ReadWriteStream { - isTTY?: true; - } - - // Alias for compatibility - interface ProcessEnv extends Dict {} - - interface HRTime { - (time?: [number, number]): [number, number]; - bigint(): bigint; - } - - interface ProcessReport { - /** - * Directory where the report is written. - * working directory of the Node.js process. - * @default '' indicating that reports are written to the current - */ - directory: string; - - /** - * Filename where the report is written. - * The default value is the empty string. - * @default '' the output filename will be comprised of a timestamp, - * PID, and sequence number. - */ - filename: string; - - /** - * Returns a JSON-formatted diagnostic report for the running process. - * The report's JavaScript stack trace is taken from err, if present. - */ - getReport(err?: Error): string; - - /** - * If true, a diagnostic report is generated on fatal errors, - * such as out of memory errors or failed C++ assertions. - * @default false - */ - reportOnFatalError: boolean; - - /** - * If true, a diagnostic report is generated when the process - * receives the signal specified by process.report.signal. - * @defaul false - */ - reportOnSignal: boolean; - - /** - * If true, a diagnostic report is generated on uncaught exception. - * @default false - */ - reportOnUncaughtException: boolean; - - /** - * The signal used to trigger the creation of a diagnostic report. - * @default 'SIGUSR2' - */ - signal: Signals; - - /** - * Writes a diagnostic report to a file. If filename is not provided, the default filename - * includes the date, time, PID, and a sequence number. - * The report's JavaScript stack trace is taken from err, if present. - * - * @param fileName Name of the file where the report is written. - * This should be a relative path, that will be appended to the directory specified in - * `process.report.directory`, or the current working directory of the Node.js process, - * if unspecified. - * @param error A custom error used for reporting the JavaScript stack. - * @return Filename of the generated report. - */ - writeReport(fileName?: string): string; - writeReport(error?: Error): string; - writeReport(fileName?: string, err?: Error): string; - } - - interface ResourceUsage { - fsRead: number; - fsWrite: number; - involuntaryContextSwitches: number; - ipcReceived: number; - ipcSent: number; - majorPageFault: number; - maxRSS: number; - minorPageFault: number; - sharedMemorySize: number; - signalsCount: number; - swappedOut: number; - systemCPUTime: number; - unsharedDataSize: number; - unsharedStackSize: number; - userCPUTime: number; - voluntaryContextSwitches: number; - } - - interface Process extends EventEmitter { - /** - * Can also be a tty.WriteStream, not typed due to limitations. - */ - stdout: WriteStream & { - fd: 1; - }; - /** - * Can also be a tty.WriteStream, not typed due to limitations. - */ - stderr: WriteStream & { - fd: 2; - }; - stdin: ReadStream & { - fd: 0; - }; - openStdin(): Socket; - argv: string[]; - argv0: string; - execArgv: string[]; - execPath: string; - abort(): never; - chdir(directory: string): void; - cwd(): string; - debugPort: number; - emitWarning(warning: string | Error, name?: string, ctor?: Function): void; - env: ProcessEnv; - exit(code?: number): never; - exitCode?: number; - getgid(): number; - setgid(id: number | string): void; - getuid(): number; - setuid(id: number | string): void; - geteuid(): number; - seteuid(id: number | string): void; - getegid(): number; - setegid(id: number | string): void; - getgroups(): number[]; - setgroups(groups: ReadonlyArray): void; - setUncaughtExceptionCaptureCallback(cb: ((err: Error) => void) | null): void; - hasUncaughtExceptionCaptureCallback(): boolean; - version: string; - versions: ProcessVersions; - config: { - target_defaults: { - cflags: any[]; - default_configuration: string; - defines: string[]; - include_dirs: string[]; - libraries: string[]; - }; - variables: { - clang: number; - host_arch: string; - node_install_npm: boolean; - node_install_waf: boolean; - node_prefix: string; - node_shared_openssl: boolean; - node_shared_v8: boolean; - node_shared_zlib: boolean; - node_use_dtrace: boolean; - node_use_etw: boolean; - node_use_openssl: boolean; - target_arch: string; - v8_no_strict_aliasing: number; - v8_use_snapshot: boolean; - visibility: string; - }; - }; - kill(pid: number, signal?: string | number): true; - pid: number; - ppid: number; - title: string; - arch: string; - platform: Platform; - /** @deprecated since v14.0.0 - use `require.main` instead. */ - mainModule?: Module; - memoryUsage(): MemoryUsage; - cpuUsage(previousValue?: CpuUsage): CpuUsage; - nextTick(callback: Function, ...args: any[]): void; - release: ProcessRelease; - features: { - inspector: boolean; - debug: boolean; - uv: boolean; - ipv6: boolean; - tls_alpn: boolean; - tls_sni: boolean; - tls_ocsp: boolean; - tls: boolean; - }; - /** - * @deprecated since v14.0.0 - Calling process.umask() with no argument causes - * the process-wide umask to be written twice. This introduces a race condition between threads, - * and is a potential security vulnerability. There is no safe, cross-platform alternative API. - */ - umask(): number; - /** - * Can only be set if not in worker thread. - */ - umask(mask: string | number): number; - uptime(): number; - hrtime: HRTime; - domain: Domain; - - // Worker - send?(message: any, sendHandle?: any, options?: { swallowErrors?: boolean}, callback?: (error: Error | null) => void): boolean; - disconnect(): void; - connected: boolean; - - /** - * The `process.allowedNodeEnvironmentFlags` property is a special, - * read-only `Set` of flags allowable within the [`NODE_OPTIONS`][] - * environment variable. - */ - allowedNodeEnvironmentFlags: ReadonlySet; - - /** - * Only available with `--experimental-report` - */ - report?: ProcessReport; - - resourceUsage(): ResourceUsage; - - traceDeprecation: boolean; - - /* EventEmitter */ - addListener(event: "beforeExit", listener: BeforeExitListener): this; - addListener(event: "disconnect", listener: DisconnectListener): this; - addListener(event: "exit", listener: ExitListener): this; - addListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - addListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - addListener(event: "warning", listener: WarningListener): this; - addListener(event: "message", listener: MessageListener): this; - addListener(event: Signals, listener: SignalsListener): this; - addListener(event: "newListener", listener: NewListenerListener): this; - addListener(event: "removeListener", listener: RemoveListenerListener): this; - addListener(event: "multipleResolves", listener: MultipleResolveListener): this; - - emit(event: "beforeExit", code: number): boolean; - emit(event: "disconnect"): boolean; - emit(event: "exit", code: number): boolean; - emit(event: "rejectionHandled", promise: Promise): boolean; - emit(event: "uncaughtException", error: Error): boolean; - emit(event: "uncaughtExceptionMonitor", error: Error): boolean; - emit(event: "unhandledRejection", reason: any, promise: Promise): boolean; - emit(event: "warning", warning: Error): boolean; - emit(event: "message", message: any, sendHandle: any): this; - emit(event: Signals, signal: Signals): boolean; - emit(event: "newListener", eventName: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "removeListener", eventName: string, listener: (...args: any[]) => void): this; - emit(event: "multipleResolves", listener: MultipleResolveListener): this; - - on(event: "beforeExit", listener: BeforeExitListener): this; - on(event: "disconnect", listener: DisconnectListener): this; - on(event: "exit", listener: ExitListener): this; - on(event: "rejectionHandled", listener: RejectionHandledListener): this; - on(event: "uncaughtException", listener: UncaughtExceptionListener): this; - on(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - on(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - on(event: "warning", listener: WarningListener): this; - on(event: "message", listener: MessageListener): this; - on(event: Signals, listener: SignalsListener): this; - on(event: "newListener", listener: NewListenerListener): this; - on(event: "removeListener", listener: RemoveListenerListener): this; - on(event: "multipleResolves", listener: MultipleResolveListener): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "beforeExit", listener: BeforeExitListener): this; - once(event: "disconnect", listener: DisconnectListener): this; - once(event: "exit", listener: ExitListener): this; - once(event: "rejectionHandled", listener: RejectionHandledListener): this; - once(event: "uncaughtException", listener: UncaughtExceptionListener): this; - once(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - once(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - once(event: "warning", listener: WarningListener): this; - once(event: "message", listener: MessageListener): this; - once(event: Signals, listener: SignalsListener): this; - once(event: "newListener", listener: NewListenerListener): this; - once(event: "removeListener", listener: RemoveListenerListener): this; - once(event: "multipleResolves", listener: MultipleResolveListener): this; - - prependListener(event: "beforeExit", listener: BeforeExitListener): this; - prependListener(event: "disconnect", listener: DisconnectListener): this; - prependListener(event: "exit", listener: ExitListener): this; - prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - prependListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - prependListener(event: "warning", listener: WarningListener): this; - prependListener(event: "message", listener: MessageListener): this; - prependListener(event: Signals, listener: SignalsListener): this; - prependListener(event: "newListener", listener: NewListenerListener): this; - prependListener(event: "removeListener", listener: RemoveListenerListener): this; - prependListener(event: "multipleResolves", listener: MultipleResolveListener): this; - - prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this; - prependOnceListener(event: "disconnect", listener: DisconnectListener): this; - prependOnceListener(event: "exit", listener: ExitListener): this; - prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - prependOnceListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - prependOnceListener(event: "warning", listener: WarningListener): this; - prependOnceListener(event: "message", listener: MessageListener): this; - prependOnceListener(event: Signals, listener: SignalsListener): this; - prependOnceListener(event: "newListener", listener: NewListenerListener): this; - prependOnceListener(event: "removeListener", listener: RemoveListenerListener): this; - prependOnceListener(event: "multipleResolves", listener: MultipleResolveListener): this; - - listeners(event: "beforeExit"): BeforeExitListener[]; - listeners(event: "disconnect"): DisconnectListener[]; - listeners(event: "exit"): ExitListener[]; - listeners(event: "rejectionHandled"): RejectionHandledListener[]; - listeners(event: "uncaughtException"): UncaughtExceptionListener[]; - listeners(event: "uncaughtExceptionMonitor"): UncaughtExceptionListener[]; - listeners(event: "unhandledRejection"): UnhandledRejectionListener[]; - listeners(event: "warning"): WarningListener[]; - listeners(event: "message"): MessageListener[]; - listeners(event: Signals): SignalsListener[]; - listeners(event: "newListener"): NewListenerListener[]; - listeners(event: "removeListener"): RemoveListenerListener[]; - listeners(event: "multipleResolves"): MultipleResolveListener[]; - } - - interface Global { - process: Process; - } - } - } - - export = process; -} diff --git a/node_modules/@types/node/punycode.d.ts b/node_modules/@types/node/punycode.d.ts deleted file mode 100644 index 593e9cb5b..000000000 --- a/node_modules/@types/node/punycode.d.ts +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ -declare module 'node:punycode' { - export * from 'punycode'; -} - -/** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ -declare module 'punycode' { - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - function decode(string: string): string; - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - function encode(string: string): string; - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - function toUnicode(domain: string): string; - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - function toASCII(domain: string): string; - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - const ucs2: ucs2; - interface ucs2 { - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - decode(string: string): number[]; - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - encode(codePoints: ReadonlyArray): string; - } - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - const version: string; -} diff --git a/node_modules/@types/node/querystring.d.ts b/node_modules/@types/node/querystring.d.ts deleted file mode 100644 index e37234cca..000000000 --- a/node_modules/@types/node/querystring.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -declare module 'node:querystring' { - export * from 'querystring'; -} - -declare module 'querystring' { - interface StringifyOptions { - encodeURIComponent?: (str: string) => string; - } - - interface ParseOptions { - maxKeys?: number; - decodeURIComponent?: (str: string) => string; - } - - interface ParsedUrlQuery extends NodeJS.Dict { } - - interface ParsedUrlQueryInput extends NodeJS.Dict | ReadonlyArray | ReadonlyArray | null> { - } - - function stringify(obj?: ParsedUrlQueryInput, sep?: string, eq?: string, options?: StringifyOptions): string; - function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery; - /** - * The querystring.encode() function is an alias for querystring.stringify(). - */ - const encode: typeof stringify; - /** - * The querystring.decode() function is an alias for querystring.parse(). - */ - const decode: typeof parse; - function escape(str: string): string; - function unescape(str: string): string; -} diff --git a/node_modules/@types/node/readline.d.ts b/node_modules/@types/node/readline.d.ts deleted file mode 100644 index 2449d89a7..000000000 --- a/node_modules/@types/node/readline.d.ts +++ /dev/null @@ -1,174 +0,0 @@ -declare module 'node:readline' { - export * from 'readline'; -} - -declare module 'readline' { - import EventEmitter = require('node:events'); - - interface Key { - sequence?: string; - name?: string; - ctrl?: boolean; - meta?: boolean; - shift?: boolean; - } - - class Interface extends EventEmitter { - readonly terminal: boolean; - - // Need direct access to line/cursor data, for use in external processes - // see: https://github.com/nodejs/node/issues/30347 - /** The current input data */ - readonly line: string; - /** The current cursor position in the input line */ - readonly cursor: number; - - /** - * NOTE: According to the documentation: - * - * > Instances of the `readline.Interface` class are constructed using the - * > `readline.createInterface()` method. - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/readline.html#readline_class_interface - */ - protected constructor(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean); - /** - * NOTE: According to the documentation: - * - * > Instances of the `readline.Interface` class are constructed using the - * > `readline.createInterface()` method. - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/readline.html#readline_class_interface - */ - protected constructor(options: ReadLineOptions); - - setPrompt(prompt: string): void; - prompt(preserveCursor?: boolean): void; - question(query: string, callback: (answer: string) => void): void; - pause(): this; - resume(): this; - close(): void; - write(data: string | Buffer, key?: Key): void; - - /** - * Returns the real position of the cursor in relation to the input - * prompt + string. Long input (wrapping) strings, as well as multiple - * line prompts are included in the calculations. - */ - getCursorPos(): CursorPos; - - /** - * events.EventEmitter - * 1. close - * 2. line - * 3. pause - * 4. resume - * 5. SIGCONT - * 6. SIGINT - * 7. SIGTSTP - */ - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "line", listener: (input: string) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: "SIGCONT", listener: () => void): this; - addListener(event: "SIGINT", listener: () => void): this; - addListener(event: "SIGTSTP", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "line", input: string): boolean; - emit(event: "pause"): boolean; - emit(event: "resume"): boolean; - emit(event: "SIGCONT"): boolean; - emit(event: "SIGINT"): boolean; - emit(event: "SIGTSTP"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "line", listener: (input: string) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: "SIGCONT", listener: () => void): this; - on(event: "SIGINT", listener: () => void): this; - on(event: "SIGTSTP", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "line", listener: (input: string) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: "SIGCONT", listener: () => void): this; - once(event: "SIGINT", listener: () => void): this; - once(event: "SIGTSTP", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "line", listener: (input: string) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: "SIGCONT", listener: () => void): this; - prependListener(event: "SIGINT", listener: () => void): this; - prependListener(event: "SIGTSTP", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "line", listener: (input: string) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: "SIGCONT", listener: () => void): this; - prependOnceListener(event: "SIGINT", listener: () => void): this; - prependOnceListener(event: "SIGTSTP", listener: () => void): this; - [Symbol.asyncIterator](): AsyncIterableIterator; - } - - type ReadLine = Interface; // type forwarded for backwards compatibility - - type Completer = (line: string) => CompleterResult; - type AsyncCompleter = (line: string, callback: (err?: null | Error, result?: CompleterResult) => void) => any; - - type CompleterResult = [string[], string]; - - interface ReadLineOptions { - input: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - completer?: Completer | AsyncCompleter; - terminal?: boolean; - historySize?: number; - prompt?: string; - crlfDelay?: number; - removeHistoryDuplicates?: boolean; - escapeCodeTimeout?: number; - tabSize?: number; - } - - function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): Interface; - function createInterface(options: ReadLineOptions): Interface; - function emitKeypressEvents(stream: NodeJS.ReadableStream, readlineInterface?: Interface): void; - - type Direction = -1 | 0 | 1; - - interface CursorPos { - rows: number; - cols: number; - } - - /** - * Clears the current line of this WriteStream in a direction identified by `dir`. - */ - function clearLine(stream: NodeJS.WritableStream, dir: Direction, callback?: () => void): boolean; - /** - * Clears this `WriteStream` from the current cursor down. - */ - function clearScreenDown(stream: NodeJS.WritableStream, callback?: () => void): boolean; - /** - * Moves this WriteStream's cursor to the specified position. - */ - function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number, callback?: () => void): boolean; - /** - * Moves this WriteStream's cursor relative to its current position. - */ - function moveCursor(stream: NodeJS.WritableStream, dx: number, dy: number, callback?: () => void): boolean; -} diff --git a/node_modules/@types/node/repl.d.ts b/node_modules/@types/node/repl.d.ts deleted file mode 100644 index 8fae7f9ee..000000000 --- a/node_modules/@types/node/repl.d.ts +++ /dev/null @@ -1,399 +0,0 @@ -declare module 'node:repl' { - export * from 'repl'; -} - -declare module 'repl' { - import { Interface, Completer, AsyncCompleter } from 'node:readline'; - import { Context } from 'node:vm'; - import { InspectOptions } from 'node:util'; - - interface ReplOptions { - /** - * The input prompt to display. - * Default: `"> "` - */ - prompt?: string; - /** - * The `Readable` stream from which REPL input will be read. - * Default: `process.stdin` - */ - input?: NodeJS.ReadableStream; - /** - * The `Writable` stream to which REPL output will be written. - * Default: `process.stdout` - */ - output?: NodeJS.WritableStream; - /** - * If `true`, specifies that the output should be treated as a TTY terminal, and have - * ANSI/VT100 escape codes written to it. - * Default: checking the value of the `isTTY` property on the output stream upon - * instantiation. - */ - terminal?: boolean; - /** - * The function to be used when evaluating each given line of input. - * Default: an async wrapper for the JavaScript `eval()` function. An `eval` function can - * error with `repl.Recoverable` to indicate the input was incomplete and prompt for - * additional lines. - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_default_evaluation - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_custom_evaluation_functions - */ - eval?: REPLEval; - /** - * Defines if the repl prints output previews or not. - * @default `true` Always `false` in case `terminal` is falsy. - */ - preview?: boolean; - /** - * If `true`, specifies that the default `writer` function should include ANSI color - * styling to REPL output. If a custom `writer` function is provided then this has no - * effect. - * Default: the REPL instance's `terminal` value. - */ - useColors?: boolean; - /** - * If `true`, specifies that the default evaluation function will use the JavaScript - * `global` as the context as opposed to creating a new separate context for the REPL - * instance. The node CLI REPL sets this value to `true`. - * Default: `false`. - */ - useGlobal?: boolean; - /** - * If `true`, specifies that the default writer will not output the return value of a - * command if it evaluates to `undefined`. - * Default: `false`. - */ - ignoreUndefined?: boolean; - /** - * The function to invoke to format the output of each command before writing to `output`. - * Default: a wrapper for `util.inspect`. - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_customizing_repl_output - */ - writer?: REPLWriter; - /** - * An optional function used for custom Tab auto completion. - * - * @see https://nodejs.org/dist/latest-v11.x/docs/api/readline.html#readline_use_of_the_completer_function - */ - completer?: Completer | AsyncCompleter; - /** - * A flag that specifies whether the default evaluator executes all JavaScript commands in - * strict mode or default (sloppy) mode. - * Accepted values are: - * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. - * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to - * prefacing every repl statement with `'use strict'`. - */ - replMode?: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT; - /** - * Stop evaluating the current piece of code when `SIGINT` is received, i.e. `Ctrl+C` is - * pressed. This cannot be used together with a custom `eval` function. - * Default: `false`. - */ - breakEvalOnSigint?: boolean; - } - - type REPLEval = (this: REPLServer, evalCmd: string, context: Context, file: string, cb: (err: Error | null, result: any) => void) => void; - type REPLWriter = (this: REPLServer, obj: any) => string; - - /** - * This is the default "writer" value, if none is passed in the REPL options, - * and it can be overridden by custom print functions. - */ - const writer: REPLWriter & { options: InspectOptions }; - - type REPLCommandAction = (this: REPLServer, text: string) => void; - - interface REPLCommand { - /** - * Help text to be displayed when `.help` is entered. - */ - help?: string; - /** - * The function to execute, optionally accepting a single string argument. - */ - action: REPLCommandAction; - } - - /** - * Provides a customizable Read-Eval-Print-Loop (REPL). - * - * Instances of `repl.REPLServer` will accept individual lines of user input, evaluate those - * according to a user-defined evaluation function, then output the result. Input and output - * may be from `stdin` and `stdout`, respectively, or may be connected to any Node.js `stream`. - * - * Instances of `repl.REPLServer` support automatic completion of inputs, simplistic Emacs-style - * line editing, multi-line inputs, ANSI-styled output, saving and restoring current REPL session - * state, error recovery, and customizable evaluation functions. - * - * Instances of `repl.REPLServer` are created using the `repl.start()` method and _should not_ - * be created directly using the JavaScript `new` keyword. - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_repl - */ - class REPLServer extends Interface { - /** - * The `vm.Context` provided to the `eval` function to be used for JavaScript - * evaluation. - */ - readonly context: Context; - /** - * @deprecated since v14.3.0 - Use `input` instead. - */ - readonly inputStream: NodeJS.ReadableStream; - /** - * @deprecated since v14.3.0 - Use `output` instead. - */ - readonly outputStream: NodeJS.WritableStream; - /** - * The `Readable` stream from which REPL input will be read. - */ - readonly input: NodeJS.ReadableStream; - /** - * The `Writable` stream to which REPL output will be written. - */ - readonly output: NodeJS.WritableStream; - /** - * The commands registered via `replServer.defineCommand()`. - */ - readonly commands: NodeJS.ReadOnlyDict; - /** - * A value indicating whether the REPL is currently in "editor mode". - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_commands_and_special_keys - */ - readonly editorMode: boolean; - /** - * A value indicating whether the `_` variable has been assigned. - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable - */ - readonly underscoreAssigned: boolean; - /** - * The last evaluation result from the REPL (assigned to the `_` variable inside of the REPL). - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable - */ - readonly last: any; - /** - * A value indicating whether the `_error` variable has been assigned. - * - * @since v9.8.0 - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable - */ - readonly underscoreErrAssigned: boolean; - /** - * The last error raised inside the REPL (assigned to the `_error` variable inside of the REPL). - * - * @since v9.8.0 - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable - */ - readonly lastError: any; - /** - * Specified in the REPL options, this is the function to be used when evaluating each - * given line of input. If not specified in the REPL options, this is an async wrapper - * for the JavaScript `eval()` function. - */ - readonly eval: REPLEval; - /** - * Specified in the REPL options, this is a value indicating whether the default - * `writer` function should include ANSI color styling to REPL output. - */ - readonly useColors: boolean; - /** - * Specified in the REPL options, this is a value indicating whether the default `eval` - * function will use the JavaScript `global` as the context as opposed to creating a new - * separate context for the REPL instance. - */ - readonly useGlobal: boolean; - /** - * Specified in the REPL options, this is a value indicating whether the default `writer` - * function should output the result of a command if it evaluates to `undefined`. - */ - readonly ignoreUndefined: boolean; - /** - * Specified in the REPL options, this is the function to invoke to format the output of - * each command before writing to `outputStream`. If not specified in the REPL options, - * this will be a wrapper for `util.inspect`. - */ - readonly writer: REPLWriter; - /** - * Specified in the REPL options, this is the function to use for custom Tab auto-completion. - */ - readonly completer: Completer | AsyncCompleter; - /** - * Specified in the REPL options, this is a flag that specifies whether the default `eval` - * function should execute all JavaScript commands in strict mode or default (sloppy) mode. - * Possible values are: - * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. - * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to - * prefacing every repl statement with `'use strict'`. - */ - readonly replMode: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT; - - /** - * NOTE: According to the documentation: - * - * > Instances of `repl.REPLServer` are created using the `repl.start()` method and - * > _should not_ be created directly using the JavaScript `new` keyword. - * - * `REPLServer` cannot be subclassed due to implementation specifics in NodeJS. - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_class_replserver - */ - private constructor(); - - /** - * Used to add new `.`-prefixed commands to the REPL instance. Such commands are invoked - * by typing a `.` followed by the `keyword`. - * - * @param keyword The command keyword (_without_ a leading `.` character). - * @param cmd The function to invoke when the command is processed. - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_replserver_definecommand_keyword_cmd - */ - defineCommand(keyword: string, cmd: REPLCommandAction | REPLCommand): void; - /** - * Readies the REPL instance for input from the user, printing the configured `prompt` to a - * new line in the `output` and resuming the `input` to accept new input. - * - * When multi-line input is being entered, an ellipsis is printed rather than the 'prompt'. - * - * This method is primarily intended to be called from within the action function for - * commands registered using the `replServer.defineCommand()` method. - * - * @param preserveCursor When `true`, the cursor placement will not be reset to `0`. - */ - displayPrompt(preserveCursor?: boolean): void; - /** - * Clears any command that has been buffered but not yet executed. - * - * This method is primarily intended to be called from within the action function for - * commands registered using the `replServer.defineCommand()` method. - * - * @since v9.0.0 - */ - clearBufferedCommand(): void; - - /** - * Initializes a history log file for the REPL instance. When executing the - * Node.js binary and using the command line REPL, a history file is initialized - * by default. However, this is not the case when creating a REPL - * programmatically. Use this method to initialize a history log file when working - * with REPL instances programmatically. - * @param path The path to the history file - */ - setupHistory(path: string, cb: (err: Error | null, repl: this) => void): void; - - /** - * events.EventEmitter - * 1. close - inherited from `readline.Interface` - * 2. line - inherited from `readline.Interface` - * 3. pause - inherited from `readline.Interface` - * 4. resume - inherited from `readline.Interface` - * 5. SIGCONT - inherited from `readline.Interface` - * 6. SIGINT - inherited from `readline.Interface` - * 7. SIGTSTP - inherited from `readline.Interface` - * 8. exit - * 9. reset - */ - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "line", listener: (input: string) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: "SIGCONT", listener: () => void): this; - addListener(event: "SIGINT", listener: () => void): this; - addListener(event: "SIGTSTP", listener: () => void): this; - addListener(event: "exit", listener: () => void): this; - addListener(event: "reset", listener: (context: Context) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "line", input: string): boolean; - emit(event: "pause"): boolean; - emit(event: "resume"): boolean; - emit(event: "SIGCONT"): boolean; - emit(event: "SIGINT"): boolean; - emit(event: "SIGTSTP"): boolean; - emit(event: "exit"): boolean; - emit(event: "reset", context: Context): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "line", listener: (input: string) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: "SIGCONT", listener: () => void): this; - on(event: "SIGINT", listener: () => void): this; - on(event: "SIGTSTP", listener: () => void): this; - on(event: "exit", listener: () => void): this; - on(event: "reset", listener: (context: Context) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "line", listener: (input: string) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: "SIGCONT", listener: () => void): this; - once(event: "SIGINT", listener: () => void): this; - once(event: "SIGTSTP", listener: () => void): this; - once(event: "exit", listener: () => void): this; - once(event: "reset", listener: (context: Context) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "line", listener: (input: string) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: "SIGCONT", listener: () => void): this; - prependListener(event: "SIGINT", listener: () => void): this; - prependListener(event: "SIGTSTP", listener: () => void): this; - prependListener(event: "exit", listener: () => void): this; - prependListener(event: "reset", listener: (context: Context) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "line", listener: (input: string) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: "SIGCONT", listener: () => void): this; - prependOnceListener(event: "SIGINT", listener: () => void): this; - prependOnceListener(event: "SIGTSTP", listener: () => void): this; - prependOnceListener(event: "exit", listener: () => void): this; - prependOnceListener(event: "reset", listener: (context: Context) => void): this; - } - - /** - * A flag passed in the REPL options. Evaluates expressions in sloppy mode. - */ - const REPL_MODE_SLOPPY: unique symbol; - - /** - * A flag passed in the REPL options. Evaluates expressions in strict mode. - * This is equivalent to prefacing every repl statement with `'use strict'`. - */ - const REPL_MODE_STRICT: unique symbol; - - /** - * Creates and starts a `repl.REPLServer` instance. - * - * @param options The options for the `REPLServer`. If `options` is a string, then it specifies - * the input prompt. - */ - function start(options?: string | ReplOptions): REPLServer; - - /** - * Indicates a recoverable error that a `REPLServer` can use to support multi-line input. - * - * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_recoverable_errors - */ - class Recoverable extends SyntaxError { - err: Error; - - constructor(err: Error); - } -} diff --git a/node_modules/@types/node/stream.d.ts b/node_modules/@types/node/stream.d.ts deleted file mode 100644 index a3bc9203b..000000000 --- a/node_modules/@types/node/stream.d.ts +++ /dev/null @@ -1,359 +0,0 @@ -declare module 'node:stream' { - import Stream = require('stream'); - export = Stream; -} - -declare module 'stream' { - import EventEmitter = require('node:events'); - - class internal extends EventEmitter { - pipe(destination: T, options?: { end?: boolean; }): T; - } - - namespace internal { - class Stream extends internal { - constructor(opts?: ReadableOptions); - } - - interface ReadableOptions { - highWaterMark?: number; - encoding?: BufferEncoding; - objectMode?: boolean; - read?(this: Readable, size: number): void; - destroy?(this: Readable, error: Error | null, callback: (error: Error | null) => void): void; - autoDestroy?: boolean; - } - - class Readable extends Stream implements NodeJS.ReadableStream { - /** - * A utility method for creating Readable Streams out of iterators. - */ - static from(iterable: Iterable | AsyncIterable, options?: ReadableOptions): Readable; - - readable: boolean; - readonly readableEncoding: BufferEncoding | null; - readonly readableEnded: boolean; - readonly readableFlowing: boolean | null; - readonly readableHighWaterMark: number; - readonly readableLength: number; - readonly readableObjectMode: boolean; - destroyed: boolean; - constructor(opts?: ReadableOptions); - _read(size: number): void; - read(size?: number): any; - setEncoding(encoding: BufferEncoding): this; - pause(): this; - resume(): this; - isPaused(): boolean; - unpipe(destination?: NodeJS.WritableStream): this; - unshift(chunk: any, encoding?: BufferEncoding): void; - wrap(oldStream: NodeJS.ReadableStream): this; - push(chunk: any, encoding?: BufferEncoding): boolean; - _destroy(error: Error | null, callback: (error?: Error | null) => void): void; - destroy(error?: Error): void; - - /** - * Event emitter - * The defined events on documents including: - * 1. close - * 2. data - * 3. end - * 4. error - * 5. pause - * 6. readable - * 7. resume - */ - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: any) => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "close"): boolean; - emit(event: "data", chunk: any): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "pause"): boolean; - emit(event: "readable"): boolean; - emit(event: "resume"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: any) => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "readable", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: any) => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "readable", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: any) => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: any) => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - - removeListener(event: "close", listener: () => void): this; - removeListener(event: "data", listener: (chunk: any) => void): this; - removeListener(event: "end", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "pause", listener: () => void): this; - removeListener(event: "readable", listener: () => void): this; - removeListener(event: "resume", listener: () => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - - [Symbol.asyncIterator](): AsyncIterableIterator; - } - - interface WritableOptions { - highWaterMark?: number; - decodeStrings?: boolean; - defaultEncoding?: BufferEncoding; - objectMode?: boolean; - emitClose?: boolean; - write?(this: Writable, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; - writev?(this: Writable, chunks: Array<{ chunk: any, encoding: BufferEncoding }>, callback: (error?: Error | null) => void): void; - destroy?(this: Writable, error: Error | null, callback: (error: Error | null) => void): void; - final?(this: Writable, callback: (error?: Error | null) => void): void; - autoDestroy?: boolean; - } - - class Writable extends Stream implements NodeJS.WritableStream { - readonly writable: boolean; - readonly writableEnded: boolean; - readonly writableFinished: boolean; - readonly writableHighWaterMark: number; - readonly writableLength: number; - readonly writableObjectMode: boolean; - readonly writableCorked: number; - destroyed: boolean; - constructor(opts?: WritableOptions); - _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; - _writev?(chunks: Array<{ chunk: any, encoding: BufferEncoding }>, callback: (error?: Error | null) => void): void; - _destroy(error: Error | null, callback: (error?: Error | null) => void): void; - _final(callback: (error?: Error | null) => void): void; - write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean; - write(chunk: any, encoding: BufferEncoding, cb?: (error: Error | null | undefined) => void): boolean; - setDefaultEncoding(encoding: BufferEncoding): this; - end(cb?: () => void): void; - end(chunk: any, cb?: () => void): void; - end(chunk: any, encoding: BufferEncoding, cb?: () => void): void; - cork(): void; - uncork(): void; - destroy(error?: Error): void; - - /** - * Event emitter - * The defined events on documents including: - * 1. close - * 2. drain - * 3. error - * 4. finish - * 5. pipe - * 6. unpipe - */ - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pipe", listener: (src: Readable) => void): this; - addListener(event: "unpipe", listener: (src: Readable) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "close"): boolean; - emit(event: "drain"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "pipe", src: Readable): boolean; - emit(event: "unpipe", src: Readable): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pipe", listener: (src: Readable) => void): this; - on(event: "unpipe", listener: (src: Readable) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pipe", listener: (src: Readable) => void): this; - once(event: "unpipe", listener: (src: Readable) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pipe", listener: (src: Readable) => void): this; - prependListener(event: "unpipe", listener: (src: Readable) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - - removeListener(event: "close", listener: () => void): this; - removeListener(event: "drain", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "finish", listener: () => void): this; - removeListener(event: "pipe", listener: (src: Readable) => void): this; - removeListener(event: "unpipe", listener: (src: Readable) => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - - interface DuplexOptions extends ReadableOptions, WritableOptions { - allowHalfOpen?: boolean; - readableObjectMode?: boolean; - writableObjectMode?: boolean; - readableHighWaterMark?: number; - writableHighWaterMark?: number; - writableCorked?: number; - read?(this: Duplex, size: number): void; - write?(this: Duplex, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; - writev?(this: Duplex, chunks: Array<{ chunk: any, encoding: BufferEncoding }>, callback: (error?: Error | null) => void): void; - final?(this: Duplex, callback: (error?: Error | null) => void): void; - destroy?(this: Duplex, error: Error | null, callback: (error: Error | null) => void): void; - } - - // Note: Duplex extends both Readable and Writable. - class Duplex extends Readable implements Writable { - readonly writable: boolean; - readonly writableEnded: boolean; - readonly writableFinished: boolean; - readonly writableHighWaterMark: number; - readonly writableLength: number; - readonly writableObjectMode: boolean; - readonly writableCorked: number; - constructor(opts?: DuplexOptions); - _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; - _writev?(chunks: Array<{ chunk: any, encoding: BufferEncoding }>, callback: (error?: Error | null) => void): void; - _destroy(error: Error | null, callback: (error: Error | null) => void): void; - _final(callback: (error?: Error | null) => void): void; - write(chunk: any, encoding?: BufferEncoding, cb?: (error: Error | null | undefined) => void): boolean; - write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean; - setDefaultEncoding(encoding: BufferEncoding): this; - end(cb?: () => void): void; - end(chunk: any, cb?: () => void): void; - end(chunk: any, encoding?: BufferEncoding, cb?: () => void): void; - cork(): void; - uncork(): void; - } - - type TransformCallback = (error?: Error | null, data?: any) => void; - - interface TransformOptions extends DuplexOptions { - read?(this: Transform, size: number): void; - write?(this: Transform, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; - writev?(this: Transform, chunks: Array<{ chunk: any, encoding: BufferEncoding }>, callback: (error?: Error | null) => void): void; - final?(this: Transform, callback: (error?: Error | null) => void): void; - destroy?(this: Transform, error: Error | null, callback: (error: Error | null) => void): void; - transform?(this: Transform, chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; - flush?(this: Transform, callback: TransformCallback): void; - } - - class Transform extends Duplex { - constructor(opts?: TransformOptions); - _transform(chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; - _flush(callback: TransformCallback): void; - } - - class PassThrough extends Transform { } - - interface FinishedOptions { - error?: boolean; - readable?: boolean; - writable?: boolean; - } - function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options: FinishedOptions, callback: (err?: NodeJS.ErrnoException | null) => void): () => void; - function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, callback: (err?: NodeJS.ErrnoException | null) => void): () => void; - namespace finished { - function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options?: FinishedOptions): Promise; - } - - function pipeline(stream1: NodeJS.ReadableStream, stream2: T, callback?: (err: NodeJS.ErrnoException | null) => void): T; - function pipeline(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: T, callback?: (err: NodeJS.ErrnoException | null) => void): T; - function pipeline( - stream1: NodeJS.ReadableStream, - stream2: NodeJS.ReadWriteStream, - stream3: NodeJS.ReadWriteStream, - stream4: T, - callback?: (err: NodeJS.ErrnoException | null) => void, - ): T; - function pipeline( - stream1: NodeJS.ReadableStream, - stream2: NodeJS.ReadWriteStream, - stream3: NodeJS.ReadWriteStream, - stream4: NodeJS.ReadWriteStream, - stream5: T, - callback?: (err: NodeJS.ErrnoException | null) => void, - ): T; - function pipeline( - streams: ReadonlyArray, - callback?: (err: NodeJS.ErrnoException | null) => void, - ): NodeJS.WritableStream; - function pipeline( - stream1: NodeJS.ReadableStream, - stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, - ...streams: Array void)>, - ): NodeJS.WritableStream; - namespace pipeline { - function __promisify__(stream1: NodeJS.ReadableStream, stream2: NodeJS.WritableStream): Promise; - function __promisify__(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: NodeJS.WritableStream): Promise; - function __promisify__(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: NodeJS.ReadWriteStream, stream4: NodeJS.WritableStream): Promise; - function __promisify__( - stream1: NodeJS.ReadableStream, - stream2: NodeJS.ReadWriteStream, - stream3: NodeJS.ReadWriteStream, - stream4: NodeJS.ReadWriteStream, - stream5: NodeJS.WritableStream, - ): Promise; - function __promisify__(streams: ReadonlyArray): Promise; - function __promisify__( - stream1: NodeJS.ReadableStream, - stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, - ...streams: Array, - ): Promise; - } - - interface Pipe { - close(): void; - hasRef(): boolean; - ref(): void; - unref(): void; - } - } - - export = internal; -} diff --git a/node_modules/@types/node/string_decoder.d.ts b/node_modules/@types/node/string_decoder.d.ts deleted file mode 100644 index 6b688d376..000000000 --- a/node_modules/@types/node/string_decoder.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -declare module 'node:string_decoder' { - export * from 'string_decoder'; -} - -declare module 'string_decoder' { - class StringDecoder { - constructor(encoding?: BufferEncoding); - write(buffer: Buffer): string; - end(buffer?: Buffer): string; - } -} diff --git a/node_modules/@types/node/timers.d.ts b/node_modules/@types/node/timers.d.ts deleted file mode 100644 index 11dfe3577..000000000 --- a/node_modules/@types/node/timers.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -declare module 'node:timers' { - export * from 'timers'; -} - -declare module 'timers' { - function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout; - namespace setTimeout { - function __promisify__(ms: number): Promise; - function __promisify__(ms: number, value: T): Promise; - } - function clearTimeout(timeoutId: NodeJS.Timeout): void; - function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout; - function clearInterval(intervalId: NodeJS.Timeout): void; - function setImmediate(callback: (...args: any[]) => void, ...args: any[]): NodeJS.Immediate; - namespace setImmediate { - function __promisify__(): Promise; - function __promisify__(value: T): Promise; - } - function clearImmediate(immediateId: NodeJS.Immediate): void; -} diff --git a/node_modules/@types/node/tls.d.ts b/node_modules/@types/node/tls.d.ts deleted file mode 100644 index e65a1960a..000000000 --- a/node_modules/@types/node/tls.d.ts +++ /dev/null @@ -1,783 +0,0 @@ -declare module 'node:tls' { - export * from 'tls'; -} - -declare module 'tls' { - import * as net from 'node:net'; - - const CLIENT_RENEG_LIMIT: number; - const CLIENT_RENEG_WINDOW: number; - - interface Certificate { - /** - * Country code. - */ - C: string; - /** - * Street. - */ - ST: string; - /** - * Locality. - */ - L: string; - /** - * Organization. - */ - O: string; - /** - * Organizational unit. - */ - OU: string; - /** - * Common name. - */ - CN: string; - } - - interface PeerCertificate { - subject: Certificate; - issuer: Certificate; - subjectaltname: string; - infoAccess: NodeJS.Dict; - modulus: string; - exponent: string; - valid_from: string; - valid_to: string; - fingerprint: string; - fingerprint256: string; - ext_key_usage: string[]; - serialNumber: string; - raw: Buffer; - } - - interface DetailedPeerCertificate extends PeerCertificate { - issuerCertificate: DetailedPeerCertificate; - } - - interface CipherNameAndProtocol { - /** - * The cipher name. - */ - name: string; - /** - * SSL/TLS protocol version. - */ - version: string; - - /** - * IETF name for the cipher suite. - */ - standardName: string; - } - - interface EphemeralKeyInfo { - /** - * The supported types are 'DH' and 'ECDH'. - */ - type: string; - /** - * The name property is available only when type is 'ECDH'. - */ - name?: string; - /** - * The size of parameter of an ephemeral key exchange. - */ - size: number; - } - - interface KeyObject { - /** - * Private keys in PEM format. - */ - pem: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string; - } - - interface PxfObject { - /** - * PFX or PKCS12 encoded private key and certificate chain. - */ - buf: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string; - } - - interface TLSSocketOptions extends SecureContextOptions, CommonConnectionOptions { - /** - * If true the TLS socket will be instantiated in server-mode. - * Defaults to false. - */ - isServer?: boolean; - /** - * An optional net.Server instance. - */ - server?: net.Server; - - /** - * An optional Buffer instance containing a TLS session. - */ - session?: Buffer; - /** - * If true, specifies that the OCSP status request extension will be - * added to the client hello and an 'OCSPResponse' event will be - * emitted on the socket before establishing a secure communication - */ - requestOCSP?: boolean; - } - - class TLSSocket extends net.Socket { - /** - * Construct a new tls.TLSSocket object from an existing TCP socket. - */ - constructor(socket: net.Socket, options?: TLSSocketOptions); - - /** - * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false. - */ - authorized: boolean; - /** - * The reason why the peer's certificate has not been verified. - * This property becomes available only when tlsSocket.authorized === false. - */ - authorizationError: Error; - /** - * Static boolean value, always true. - * May be used to distinguish TLS sockets from regular ones. - */ - encrypted: boolean; - - /** - * String containing the selected ALPN protocol. - * When ALPN has no selected protocol, tlsSocket.alpnProtocol equals false. - */ - alpnProtocol?: string; - - /** - * Returns an object representing the local certificate. The returned - * object has some properties corresponding to the fields of the - * certificate. - * - * See tls.TLSSocket.getPeerCertificate() for an example of the - * certificate structure. - * - * If there is no local certificate, an empty object will be returned. - * If the socket has been destroyed, null will be returned. - */ - getCertificate(): PeerCertificate | object | null; - /** - * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection. - * @returns Returns an object representing the cipher name - * and the SSL/TLS protocol version of the current connection. - */ - getCipher(): CipherNameAndProtocol; - /** - * Returns an object representing the type, name, and size of parameter - * of an ephemeral key exchange in Perfect Forward Secrecy on a client - * connection. It returns an empty object when the key exchange is not - * ephemeral. As this is only supported on a client socket; null is - * returned if called on a server socket. The supported types are 'DH' - * and 'ECDH'. The name property is available only when type is 'ECDH'. - * - * For example: { type: 'ECDH', name: 'prime256v1', size: 256 }. - */ - getEphemeralKeyInfo(): EphemeralKeyInfo | object | null; - /** - * Returns the latest Finished message that has - * been sent to the socket as part of a SSL/TLS handshake, or undefined - * if no Finished message has been sent yet. - * - * As the Finished messages are message digests of the complete - * handshake (with a total of 192 bits for TLS 1.0 and more for SSL - * 3.0), they can be used for external authentication procedures when - * the authentication provided by SSL/TLS is not desired or is not - * enough. - * - * Corresponds to the SSL_get_finished routine in OpenSSL and may be - * used to implement the tls-unique channel binding from RFC 5929. - */ - getFinished(): Buffer | undefined; - /** - * Returns an object representing the peer's certificate. - * The returned object has some properties corresponding to the field of the certificate. - * If detailed argument is true the full chain with issuer property will be returned, - * if false only the top certificate without issuer property. - * If the peer does not provide a certificate, it returns null or an empty object. - * @param detailed - If true; the full chain with issuer property will be returned. - * @returns An object representing the peer's certificate. - */ - getPeerCertificate(detailed: true): DetailedPeerCertificate; - getPeerCertificate(detailed?: false): PeerCertificate; - getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; - /** - * Returns the latest Finished message that is expected or has actually - * been received from the socket as part of a SSL/TLS handshake, or - * undefined if there is no Finished message so far. - * - * As the Finished messages are message digests of the complete - * handshake (with a total of 192 bits for TLS 1.0 and more for SSL - * 3.0), they can be used for external authentication procedures when - * the authentication provided by SSL/TLS is not desired or is not - * enough. - * - * Corresponds to the SSL_get_peer_finished routine in OpenSSL and may - * be used to implement the tls-unique channel binding from RFC 5929. - */ - getPeerFinished(): Buffer | undefined; - /** - * Returns a string containing the negotiated SSL/TLS protocol version of the current connection. - * The value `'unknown'` will be returned for connected sockets that have not completed the handshaking process. - * The value `null` will be returned for server sockets or disconnected client sockets. - * See https://www.openssl.org/docs/man1.0.2/ssl/SSL_get_version.html for more information. - * @returns negotiated SSL/TLS protocol version of the current connection - */ - getProtocol(): string | null; - /** - * Could be used to speed up handshake establishment when reconnecting to the server. - * @returns ASN.1 encoded TLS session or undefined if none was negotiated. - */ - getSession(): Buffer | undefined; - /** - * Returns a list of signature algorithms shared between the server and - * the client in the order of decreasing preference. - */ - getSharedSigalgs(): string[]; - /** - * NOTE: Works only with client TLS sockets. - * Useful only for debugging, for session reuse provide session option to tls.connect(). - * @returns TLS session ticket or undefined if none was negotiated. - */ - getTLSTicket(): Buffer | undefined; - /** - * Returns true if the session was reused, false otherwise. - */ - isSessionReused(): boolean; - /** - * Initiate TLS renegotiation process. - * - * NOTE: Can be used to request peer's certificate after the secure connection has been established. - * ANOTHER NOTE: When running as the server, socket will be destroyed with an error after handshakeTimeout timeout. - * @param options - The options may contain the following fields: rejectUnauthorized, - * requestCert (See tls.createServer() for details). - * @param callback - callback(err) will be executed with null as err, once the renegotiation - * is successfully completed. - * @return `undefined` when socket is destroy, `false` if negotiaion can't be initiated. - */ - renegotiate(options: { rejectUnauthorized?: boolean, requestCert?: boolean }, callback: (err: Error | null) => void): undefined | boolean; - /** - * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512). - * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by - * the TLS layer until the entire fragment is received and its integrity is verified; - * large fragments can span multiple roundtrips, and their processing can be delayed due to packet - * loss or reordering. However, smaller fragments add extra TLS framing bytes and CPU overhead, - * which may decrease overall server throughput. - * @param size - TLS fragment size (default and maximum value is: 16384, minimum is: 512). - * @returns Returns true on success, false otherwise. - */ - setMaxSendFragment(size: number): boolean; - - /** - * Disables TLS renegotiation for this TLSSocket instance. Once called, - * attempts to renegotiate will trigger an 'error' event on the - * TLSSocket. - */ - disableRenegotiation(): void; - - /** - * When enabled, TLS packet trace information is written to `stderr`. This can be - * used to debug TLS connection problems. - * - * Note: The format of the output is identical to the output of `openssl s_client - * -trace` or `openssl s_server -trace`. While it is produced by OpenSSL's - * `SSL_trace()` function, the format is undocumented, can change without notice, - * and should not be relied on. - */ - enableTrace(): void; - - /** - * @param length number of bytes to retrieve from keying material - * @param label an application specific label, typically this will be a value from the - * [IANA Exporter Label Registry](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#exporter-labels). - * @param context optionally provide a context. - */ - exportKeyingMaterial(length: number, label: string, context: Buffer): Buffer; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - addListener(event: "secureConnect", listener: () => void): this; - addListener(event: "session", listener: (session: Buffer) => void): this; - addListener(event: "keylog", listener: (line: Buffer) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "OCSPResponse", response: Buffer): boolean; - emit(event: "secureConnect"): boolean; - emit(event: "session", session: Buffer): boolean; - emit(event: "keylog", line: Buffer): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "OCSPResponse", listener: (response: Buffer) => void): this; - on(event: "secureConnect", listener: () => void): this; - on(event: "session", listener: (session: Buffer) => void): this; - on(event: "keylog", listener: (line: Buffer) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "OCSPResponse", listener: (response: Buffer) => void): this; - once(event: "secureConnect", listener: () => void): this; - once(event: "session", listener: (session: Buffer) => void): this; - once(event: "keylog", listener: (line: Buffer) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependListener(event: "secureConnect", listener: () => void): this; - prependListener(event: "session", listener: (session: Buffer) => void): this; - prependListener(event: "keylog", listener: (line: Buffer) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependOnceListener(event: "secureConnect", listener: () => void): this; - prependOnceListener(event: "session", listener: (session: Buffer) => void): this; - prependOnceListener(event: "keylog", listener: (line: Buffer) => void): this; - } - - interface CommonConnectionOptions { - /** - * An optional TLS context object from tls.createSecureContext() - */ - secureContext?: SecureContext; - - /** - * When enabled, TLS packet trace information is written to `stderr`. This can be - * used to debug TLS connection problems. - * @default false - */ - enableTrace?: boolean; - /** - * If true the server will request a certificate from clients that - * connect and attempt to verify that certificate. Defaults to - * false. - */ - requestCert?: boolean; - /** - * An array of strings or a Buffer naming possible ALPN protocols. - * (Protocols should be ordered by their priority.) - */ - ALPNProtocols?: string[] | Uint8Array[] | Uint8Array; - /** - * SNICallback(servername, cb) A function that will be - * called if the client supports SNI TLS extension. Two arguments - * will be passed when called: servername and cb. SNICallback should - * invoke cb(null, ctx), where ctx is a SecureContext instance. - * (tls.createSecureContext(...) can be used to get a proper - * SecureContext.) If SNICallback wasn't provided the default callback - * with high-level API will be used (see below). - */ - SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void; - /** - * If true the server will reject any connection which is not - * authorized with the list of supplied CAs. This option only has an - * effect if requestCert is true. - * @default true - */ - rejectUnauthorized?: boolean; - } - - interface TlsOptions extends SecureContextOptions, CommonConnectionOptions, net.ServerOpts { - /** - * Abort the connection if the SSL/TLS handshake does not finish in the - * specified number of milliseconds. A 'tlsClientError' is emitted on - * the tls.Server object whenever a handshake times out. Default: - * 120000 (120 seconds). - */ - handshakeTimeout?: number; - /** - * The number of seconds after which a TLS session created by the - * server will no longer be resumable. See Session Resumption for more - * information. Default: 300. - */ - sessionTimeout?: number; - /** - * 48-bytes of cryptographically strong pseudo-random data. - */ - ticketKeys?: Buffer; - - /** - * - * @param socket - * @param identity identity parameter sent from the client. - * @return pre-shared key that must either be - * a buffer or `null` to stop the negotiation process. Returned PSK must be - * compatible with the selected cipher's digest. - * - * When negotiating TLS-PSK (pre-shared keys), this function is called - * with the identity provided by the client. - * If the return value is `null` the negotiation process will stop and an - * "unknown_psk_identity" alert message will be sent to the other party. - * If the server wishes to hide the fact that the PSK identity was not known, - * the callback must provide some random data as `psk` to make the connection - * fail with "decrypt_error" before negotiation is finished. - * PSK ciphers are disabled by default, and using TLS-PSK thus - * requires explicitly specifying a cipher suite with the `ciphers` option. - * More information can be found in the RFC 4279. - */ - - pskCallback?(socket: TLSSocket, identity: string): DataView | NodeJS.TypedArray | null; - /** - * hint to send to a client to help - * with selecting the identity during TLS-PSK negotiation. Will be ignored - * in TLS 1.3. Upon failing to set pskIdentityHint `tlsClientError` will be - * emitted with `ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED` code. - */ - pskIdentityHint?: string; - } - - interface PSKCallbackNegotation { - psk: DataView | NodeJS.TypedArray; - identity: string; - } - - interface ConnectionOptions extends SecureContextOptions, CommonConnectionOptions { - host?: string; - port?: number; - path?: string; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored. - socket?: net.Socket; // Establish secure connection on a given socket rather than creating a new socket - checkServerIdentity?: typeof checkServerIdentity; - servername?: string; // SNI TLS Extension - session?: Buffer; - minDHSize?: number; - lookup?: net.LookupFunction; - timeout?: number; - /** - * When negotiating TLS-PSK (pre-shared keys), this function is called - * with optional identity `hint` provided by the server or `null` - * in case of TLS 1.3 where `hint` was removed. - * It will be necessary to provide a custom `tls.checkServerIdentity()` - * for the connection as the default one will try to check hostname/IP - * of the server against the certificate but that's not applicable for PSK - * because there won't be a certificate present. - * More information can be found in the RFC 4279. - * - * @param hint message sent from the server to help client - * decide which identity to use during negotiation. - * Always `null` if TLS 1.3 is used. - * @returns Return `null` to stop the negotiation process. `psk` must be - * compatible with the selected cipher's digest. - * `identity` must use UTF-8 encoding. - */ - pskCallback?(hint: string | null): PSKCallbackNegotation | null; - } - - class Server extends net.Server { - constructor(secureConnectionListener?: (socket: TLSSocket) => void); - constructor(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void); - - /** - * The server.addContext() method adds a secure context that will be - * used if the client request's SNI name matches the supplied hostname - * (or wildcard). - */ - addContext(hostName: string, credentials: SecureContextOptions): void; - /** - * Returns the session ticket keys. - */ - getTicketKeys(): Buffer; - /** - * - * The server.setSecureContext() method replaces the - * secure context of an existing server. Existing connections to the - * server are not interrupted. - */ - setSecureContext(details: SecureContextOptions): void; - /** - * The server.setSecureContext() method replaces the secure context of - * an existing server. Existing connections to the server are not - * interrupted. - */ - setTicketKeys(keys: Buffer): void; - - /** - * events.EventEmitter - * 1. tlsClientError - * 2. newSession - * 3. OCSPRequest - * 4. resumeSession - * 5. secureConnection - * 6. keylog - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - addListener(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this; - addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this; - addListener(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this; - addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - addListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; - emit(event: "newSession", sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void): boolean; - emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void): boolean; - emit(event: "resumeSession", sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void): boolean; - emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; - emit(event: "keylog", line: Buffer, tlsSocket: TLSSocket): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - on(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this; - on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this; - on(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this; - on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - on(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - once(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this; - once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this; - once(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this; - once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - once(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependListener(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this; - prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this; - prependListener(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this; - prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this; - prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this; - prependOnceListener(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this; - prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - } - - interface SecurePair { - encrypted: TLSSocket; - cleartext: TLSSocket; - } - - type SecureVersion = 'TLSv1.3' | 'TLSv1.2' | 'TLSv1.1' | 'TLSv1'; - - interface SecureContextOptions { - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array; - /** - * Colon-separated list of supported signature algorithms. The list - * can contain digest algorithms (SHA256, MD5 etc.), public key - * algorithms (RSA-PSS, ECDSA etc.), combination of both (e.g - * 'RSA+SHA384') or TLS v1.3 scheme names (e.g. rsa_pss_pss_sha512). - */ - sigalgs?: string; - /** - * Cipher suite specification, replacing the default. For more - * information, see modifying the default cipher suite. Permitted - * ciphers can be obtained via tls.getCiphers(). Cipher names must be - * uppercased in order for OpenSSL to accept them. - */ - ciphers?: string; - /** - * Name of an OpenSSL engine which can provide the client certificate. - */ - clientCertEngine?: string; - /** - * PEM formatted CRLs (Certificate Revocation Lists). - */ - crl?: string | Buffer | Array; - /** - * Diffie Hellman parameters, required for Perfect Forward Secrecy. Use - * openssl dhparam to create the parameters. The key length must be - * greater than or equal to 1024 bits or else an error will be thrown. - * Although 1024 bits is permissible, use 2048 bits or larger for - * stronger security. If omitted or invalid, the parameters are - * silently discarded and DHE ciphers will not be available. - */ - dhparam?: string | Buffer; - /** - * A string describing a named curve or a colon separated list of curve - * NIDs or names, for example P-521:P-384:P-256, to use for ECDH key - * agreement. Set to auto to select the curve automatically. Use - * crypto.getCurves() to obtain a list of available curve names. On - * recent releases, openssl ecparam -list_curves will also display the - * name and description of each available elliptic curve. Default: - * tls.DEFAULT_ECDH_CURVE. - */ - ecdhCurve?: string; - /** - * Attempt to use the server's cipher suite preferences instead of the - * client's. When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be - * set in secureOptions - */ - honorCipherOrder?: boolean; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form {pem: [, - * passphrase: ]}. The object form can only occur in an array. - * object.passphrase is optional. Encrypted keys will be decrypted with - * object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array; - /** - * Name of an OpenSSL engine to get private key from. Should be used - * together with privateKeyIdentifier. - */ - privateKeyEngine?: string; - /** - * Identifier of a private key managed by an OpenSSL engine. Should be - * used together with privateKeyEngine. Should not be set together with - * key, because both options define a private key in different ways. - */ - privateKeyIdentifier?: string; - /** - * Optionally set the maximum TLS version to allow. One - * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the - * `secureProtocol` option, use one or the other. - * **Default:** `'TLSv1.3'`, unless changed using CLI options. Using - * `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to - * `'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used. - */ - maxVersion?: SecureVersion; - /** - * Optionally set the minimum TLS version to allow. One - * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the - * `secureProtocol` option, use one or the other. It is not recommended to use - * less than TLSv1.2, but it may be required for interoperability. - * **Default:** `'TLSv1.2'`, unless changed using CLI options. Using - * `--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to - * `'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to - * 'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used. - */ - minVersion?: SecureVersion; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form {buf: [, - * passphrase: ]}. The object form can only occur in an array. - * object.passphrase is optional. Encrypted PFX will be decrypted with - * object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array; - /** - * Optionally affect the OpenSSL protocol behavior, which is not - * usually necessary. This should be used carefully if at all! Value is - * a numeric bitmask of the SSL_OP_* options from OpenSSL Options - */ - secureOptions?: number; // Value is a numeric bitmask of the `SSL_OP_*` options - /** - * Legacy mechanism to select the TLS protocol version to use, it does - * not support independent control of the minimum and maximum version, - * and does not support limiting the protocol to TLSv1.3. Use - * minVersion and maxVersion instead. The possible values are listed as - * SSL_METHODS, use the function names as strings. For example, use - * 'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow - * any TLS protocol version up to TLSv1.3. It is not recommended to use - * TLS versions less than 1.2, but it may be required for - * interoperability. Default: none, see minVersion. - */ - secureProtocol?: string; - /** - * Opaque identifier used by servers to ensure session state is not - * shared between applications. Unused by clients. - */ - sessionIdContext?: string; - /** - * 48-bytes of cryptographically strong pseudo-random data. - * See Session Resumption for more information. - */ - ticketKeys?: Buffer; - /** - * The number of seconds after which a TLS session created by the - * server will no longer be resumable. See Session Resumption for more - * information. Default: 300. - */ - sessionTimeout?: number; - } - - interface SecureContext { - context: any; - } - - /* - * Verifies the certificate `cert` is issued to host `host`. - * @host The hostname to verify the certificate against - * @cert PeerCertificate representing the peer's certificate - * - * Returns Error object, populating it with the reason, host and cert on failure. On success, returns undefined. - */ - function checkServerIdentity(host: string, cert: PeerCertificate): Error | undefined; - function createServer(secureConnectionListener?: (socket: TLSSocket) => void): Server; - function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; - function connect(options: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - /** - * @deprecated since v0.11.3 Use `tls.TLSSocket` instead. - */ - function createSecurePair(credentials?: SecureContext, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; - function createSecureContext(options?: SecureContextOptions): SecureContext; - function getCiphers(): string[]; - - /** - * The default curve name to use for ECDH key agreement in a tls server. - * The default value is 'auto'. See tls.createSecureContext() for further - * information. - */ - let DEFAULT_ECDH_CURVE: string; - /** - * The default value of the maxVersion option of - * tls.createSecureContext(). It can be assigned any of the supported TLS - * protocol versions, 'TLSv1.3', 'TLSv1.2', 'TLSv1.1', or 'TLSv1'. Default: - * 'TLSv1.3', unless changed using CLI options. Using --tls-max-v1.2 sets - * the default to 'TLSv1.2'. Using --tls-max-v1.3 sets the default to - * 'TLSv1.3'. If multiple of the options are provided, the highest maximum - * is used. - */ - let DEFAULT_MAX_VERSION: SecureVersion; - /** - * The default value of the minVersion option of tls.createSecureContext(). - * It can be assigned any of the supported TLS protocol versions, - * 'TLSv1.3', 'TLSv1.2', 'TLSv1.1', or 'TLSv1'. Default: 'TLSv1.2', unless - * changed using CLI options. Using --tls-min-v1.0 sets the default to - * 'TLSv1'. Using --tls-min-v1.1 sets the default to 'TLSv1.1'. Using - * --tls-min-v1.3 sets the default to 'TLSv1.3'. If multiple of the options - * are provided, the lowest minimum is used. - */ - let DEFAULT_MIN_VERSION: SecureVersion; - - /** - * An immutable array of strings representing the root certificates (in PEM - * format) used for verifying peer certificates. This is the default value - * of the ca option to tls.createSecureContext(). - */ - const rootCertificates: ReadonlyArray; -} diff --git a/node_modules/@types/node/trace_events.d.ts b/node_modules/@types/node/trace_events.d.ts deleted file mode 100644 index 812b2b55c..000000000 --- a/node_modules/@types/node/trace_events.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -declare module 'node:trace_events' { - export * from 'trace_events'; -} - -declare module 'trace_events' { - /** - * The `Tracing` object is used to enable or disable tracing for sets of - * categories. Instances are created using the - * `trace_events.createTracing()` method. - * - * When created, the `Tracing` object is disabled. Calling the - * `tracing.enable()` method adds the categories to the set of enabled trace - * event categories. Calling `tracing.disable()` will remove the categories - * from the set of enabled trace event categories. - */ - interface Tracing { - /** - * A comma-separated list of the trace event categories covered by this - * `Tracing` object. - */ - readonly categories: string; - - /** - * Disables this `Tracing` object. - * - * Only trace event categories _not_ covered by other enabled `Tracing` - * objects and _not_ specified by the `--trace-event-categories` flag - * will be disabled. - */ - disable(): void; - - /** - * Enables this `Tracing` object for the set of categories covered by - * the `Tracing` object. - */ - enable(): void; - - /** - * `true` only if the `Tracing` object has been enabled. - */ - readonly enabled: boolean; - } - - interface CreateTracingOptions { - /** - * An array of trace category names. Values included in the array are - * coerced to a string when possible. An error will be thrown if the - * value cannot be coerced. - */ - categories: string[]; - } - - /** - * Creates and returns a Tracing object for the given set of categories. - */ - function createTracing(options: CreateTracingOptions): Tracing; - - /** - * Returns a comma-separated list of all currently-enabled trace event - * categories. The current set of enabled trace event categories is - * determined by the union of all currently-enabled `Tracing` objects and - * any categories enabled using the `--trace-event-categories` flag. - */ - function getEnabledCategories(): string | undefined; -} diff --git a/node_modules/@types/node/ts3.4/assert.d.ts b/node_modules/@types/node/ts3.4/assert.d.ts deleted file mode 100644 index 6f3a33e3b..000000000 --- a/node_modules/@types/node/ts3.4/assert.d.ts +++ /dev/null @@ -1,103 +0,0 @@ -declare module 'node:assert' { - import assert = require('assert'); - export = assert; -} - -declare module 'assert' { - /** An alias of `assert.ok()`. */ - function assert(value: any, message?: string | Error): void; - namespace assert { - class AssertionError extends Error { - actual: any; - expected: any; - operator: string; - generatedMessage: boolean; - code: 'ERR_ASSERTION'; - - constructor(options?: { - /** If provided, the error message is set to this value. */ - message?: string; - /** The `actual` property on the error instance. */ - actual?: any; - /** The `expected` property on the error instance. */ - expected?: any; - /** The `operator` property on the error instance. */ - operator?: string; - /** If provided, the generated stack trace omits frames before this function. */ - // tslint:disable-next-line:ban-types - stackStartFn?: Function; - }); - } - - class CallTracker { - calls(exact?: number): () => void; - calls any>(fn?: Func, exact?: number): Func; - report(): CallTrackerReportInformation[]; - verify(): void; - } - interface CallTrackerReportInformation { - message: string; - /** The actual number of times the function was called. */ - actual: number; - /** The number of times the function was expected to be called. */ - expected: number; - /** The name of the function that is wrapped. */ - operator: string; - /** A stack trace of the function. */ - stack: object; - } - - type AssertPredicate = RegExp | (new () => object) | ((thrown: any) => boolean) | object | Error; - - function fail(message?: string | Error): never; - /** @deprecated since v10.0.0 - use fail([message]) or other assert functions instead. */ - function fail( - actual: any, - expected: any, - message?: string | Error, - operator?: string, - // tslint:disable-next-line:ban-types - stackStartFn?: Function, - ): never; - function ok(value: any, message?: string | Error): void; - /** @deprecated since v9.9.0 - use strictEqual() instead. */ - function equal(actual: any, expected: any, message?: string | Error): void; - /** @deprecated since v9.9.0 - use notStrictEqual() instead. */ - function notEqual(actual: any, expected: any, message?: string | Error): void; - /** @deprecated since v9.9.0 - use deepStrictEqual() instead. */ - function deepEqual(actual: any, expected: any, message?: string | Error): void; - /** @deprecated since v9.9.0 - use notDeepStrictEqual() instead. */ - function notDeepEqual(actual: any, expected: any, message?: string | Error): void; - function strictEqual(actual: any, expected: any, message?: string | Error): void; - function notStrictEqual(actual: any, expected: any, message?: string | Error): void; - function deepStrictEqual(actual: any, expected: any, message?: string | Error): void; - function notDeepStrictEqual(actual: any, expected: any, message?: string | Error): void; - - function throws(block: () => any, message?: string | Error): void; - function throws(block: () => any, error: AssertPredicate, message?: string | Error): void; - function doesNotThrow(block: () => any, message?: string | Error): void; - function doesNotThrow(block: () => any, error: AssertPredicate, message?: string | Error): void; - - function ifError(value: any): void; - - function rejects(block: (() => Promise) | Promise, message?: string | Error): Promise; - function rejects( - block: (() => Promise) | Promise, - error: AssertPredicate, - message?: string | Error, - ): Promise; - function doesNotReject(block: (() => Promise) | Promise, message?: string | Error): Promise; - function doesNotReject( - block: (() => Promise) | Promise, - error: AssertPredicate, - message?: string | Error, - ): Promise; - - function match(value: string, regExp: RegExp, message?: string | Error): void; - function doesNotMatch(value: string, regExp: RegExp, message?: string | Error): void; - - const strict: typeof assert; - } - - export = assert; -} diff --git a/node_modules/@types/node/ts3.4/base.d.ts b/node_modules/@types/node/ts3.4/base.d.ts deleted file mode 100644 index 2ea04f58f..000000000 --- a/node_modules/@types/node/ts3.4/base.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -// NOTE: These definitions support NodeJS and TypeScript 3.2 - 3.4. - -// NOTE: TypeScript version-specific augmentations can be found in the following paths: -// - ~/base.d.ts - Shared definitions common to all TypeScript versions -// - ~/index.d.ts - Definitions specific to TypeScript 2.1 -// - ~/ts3.2/base.d.ts - Definitions specific to TypeScript 3.2 -// - ~/ts3.2/index.d.ts - Definitions specific to TypeScript 3.2 with global and assert pulled in - -// Reference required types from the default lib: -/// -/// -/// -/// - -// Base definitions for all NodeJS modules that are not specific to any version of TypeScript: - -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// diff --git a/node_modules/@types/node/ts3.4/globals.global.d.ts b/node_modules/@types/node/ts3.4/globals.global.d.ts deleted file mode 100644 index 8e854665a..000000000 --- a/node_modules/@types/node/ts3.4/globals.global.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare var global: NodeJS.Global; diff --git a/node_modules/@types/node/ts3.4/index.d.ts b/node_modules/@types/node/ts3.4/index.d.ts deleted file mode 100644 index 506b32a59..000000000 --- a/node_modules/@types/node/ts3.4/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -// NOTE: These definitions support NodeJS and TypeScript 3.2 - 3.4. -// This is required to enable globalThis support for global in ts3.5 without causing errors -// This is required to enable typing assert in ts3.7 without causing errors -// Typically type modifiations should be made in base.d.ts instead of here - -/// -/// -/// diff --git a/node_modules/@types/node/ts3.6/base.d.ts b/node_modules/@types/node/ts3.6/base.d.ts deleted file mode 100644 index 05afa406d..000000000 --- a/node_modules/@types/node/ts3.6/base.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -// NOTE: These definitions support NodeJS and TypeScript 3.5. - -// NOTE: TypeScript version-specific augmentations can be found in the following paths: -// - ~/base.d.ts - Shared definitions common to all TypeScript versions -// - ~/index.d.ts - Definitions specific to TypeScript 2.1 -// - ~/ts3.5/base.d.ts - Definitions specific to TypeScript 3.5 -// - ~/ts3.5/index.d.ts - Definitions specific to TypeScript 3.5 with assert pulled in - -// Reference required types from the default lib: -/// -/// -/// -/// - -// Base definitions for all NodeJS modules that are not specific to any version of TypeScript: -/// - -// TypeScript 3.5-specific augmentations: -/// - -// TypeScript 3.5-specific augmentations: -/// diff --git a/node_modules/@types/node/ts3.6/index.d.ts b/node_modules/@types/node/ts3.6/index.d.ts deleted file mode 100644 index 7e6b98cc5..000000000 --- a/node_modules/@types/node/ts3.6/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// NOTE: These definitions support NodeJS and TypeScript 3.5 - 3.6. -// This is required to enable typing assert in ts3.7 without causing errors -// Typically type modifications should be made in base.d.ts instead of here - -/// - -/// diff --git a/node_modules/@types/node/tty.d.ts b/node_modules/@types/node/tty.d.ts deleted file mode 100644 index 64b51b43b..000000000 --- a/node_modules/@types/node/tty.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -declare module 'node:tty' { - export * from 'tty'; -} - -declare module 'tty' { - import * as net from 'node:net'; - - function isatty(fd: number): boolean; - class ReadStream extends net.Socket { - constructor(fd: number, options?: net.SocketConstructorOpts); - isRaw: boolean; - setRawMode(mode: boolean): this; - isTTY: boolean; - } - /** - * -1 - to the left from cursor - * 0 - the entire line - * 1 - to the right from cursor - */ - type Direction = -1 | 0 | 1; - class WriteStream extends net.Socket { - constructor(fd: number); - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "resize", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "resize"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "resize", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "resize", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "resize", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "resize", listener: () => void): this; - - /** - * Clears the current line of this WriteStream in a direction identified by `dir`. - */ - clearLine(dir: Direction, callback?: () => void): boolean; - /** - * Clears this `WriteStream` from the current cursor down. - */ - clearScreenDown(callback?: () => void): boolean; - /** - * Moves this WriteStream's cursor to the specified position. - */ - cursorTo(x: number, y?: number, callback?: () => void): boolean; - cursorTo(x: number, callback: () => void): boolean; - /** - * Moves this WriteStream's cursor relative to its current position. - */ - moveCursor(dx: number, dy: number, callback?: () => void): boolean; - /** - * @default `process.env` - */ - getColorDepth(env?: {}): number; - hasColors(depth?: number): boolean; - hasColors(env?: {}): boolean; - hasColors(depth: number, env?: {}): boolean; - getWindowSize(): [number, number]; - columns: number; - rows: number; - isTTY: boolean; - } -} diff --git a/node_modules/@types/node/url.d.ts b/node_modules/@types/node/url.d.ts deleted file mode 100644 index 7186b94e3..000000000 --- a/node_modules/@types/node/url.d.ts +++ /dev/null @@ -1,120 +0,0 @@ -declare module 'node:url' { - export * from 'url'; -} - -declare module 'url' { - import { ParsedUrlQuery, ParsedUrlQueryInput } from 'node:querystring'; - - // Input to `url.format` - interface UrlObject { - auth?: string | null; - hash?: string | null; - host?: string | null; - hostname?: string | null; - href?: string | null; - pathname?: string | null; - protocol?: string | null; - search?: string | null; - slashes?: boolean | null; - port?: string | number | null; - query?: string | null | ParsedUrlQueryInput; - } - - // Output of `url.parse` - interface Url { - auth: string | null; - hash: string | null; - host: string | null; - hostname: string | null; - href: string; - path: string | null; - pathname: string | null; - protocol: string | null; - search: string | null; - slashes: boolean | null; - port: string | null; - query: string | null | ParsedUrlQuery; - } - - interface UrlWithParsedQuery extends Url { - query: ParsedUrlQuery; - } - - interface UrlWithStringQuery extends Url { - query: string | null; - } - - /** @deprecated since v11.0.0 - Use the WHATWG URL API. */ - function parse(urlStr: string): UrlWithStringQuery; - /** @deprecated since v11.0.0 - Use the WHATWG URL API. */ - function parse(urlStr: string, parseQueryString: false | undefined, slashesDenoteHost?: boolean): UrlWithStringQuery; - /** @deprecated since v11.0.0 - Use the WHATWG URL API. */ - function parse(urlStr: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery; - /** @deprecated since v11.0.0 - Use the WHATWG URL API. */ - function parse(urlStr: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url; - - function format(URL: URL, options?: URLFormatOptions): string; - /** @deprecated since v11.0.0 - Use the WHATWG URL API. */ - function format(urlObject: UrlObject | string): string; - /** @deprecated since v11.0.0 - Use the WHATWG URL API. */ - function resolve(from: string, to: string): string; - - function domainToASCII(domain: string): string; - function domainToUnicode(domain: string): string; - - /** - * This function ensures the correct decodings of percent-encoded characters as - * well as ensuring a cross-platform valid absolute path string. - * @param url The file URL string or URL object to convert to a path. - */ - function fileURLToPath(url: string | URL): string; - - /** - * This function ensures that path is resolved absolutely, and that the URL - * control characters are correctly encoded when converting into a File URL. - * @param url The path to convert to a File URL. - */ - function pathToFileURL(url: string): URL; - - interface URLFormatOptions { - auth?: boolean; - fragment?: boolean; - search?: boolean; - unicode?: boolean; - } - - class URL { - constructor(input: string, base?: string | URL); - hash: string; - host: string; - hostname: string; - href: string; - readonly origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - search: string; - readonly searchParams: URLSearchParams; - username: string; - toString(): string; - toJSON(): string; - } - - class URLSearchParams implements Iterable<[string, string]> { - constructor(init?: URLSearchParams | string | NodeJS.Dict> | Iterable<[string, string]> | ReadonlyArray<[string, string]>); - append(name: string, value: string): void; - delete(name: string): void; - entries(): IterableIterator<[string, string]>; - forEach(callback: (value: string, name: string, searchParams: this) => void): void; - get(name: string): string | null; - getAll(name: string): string[]; - has(name: string): boolean; - keys(): IterableIterator; - set(name: string, value: string): void; - sort(): void; - toString(): string; - values(): IterableIterator; - [Symbol.iterator](): IterableIterator<[string, string]>; - } -} diff --git a/node_modules/@types/node/util.d.ts b/node_modules/@types/node/util.d.ts deleted file mode 100644 index 8605bf93a..000000000 --- a/node_modules/@types/node/util.d.ts +++ /dev/null @@ -1,211 +0,0 @@ -declare module 'node:util' { - export * from 'util'; -} - -declare module 'util' { - interface InspectOptions extends NodeJS.InspectOptions { } - type Style = 'special' | 'number' | 'bigint' | 'boolean' | 'undefined' | 'null' | 'string' | 'symbol' | 'date' | 'regexp' | 'module'; - type CustomInspectFunction = (depth: number, options: InspectOptionsStylized) => string; - interface InspectOptionsStylized extends InspectOptions { - stylize(text: string, styleType: Style): string; - } - function format(format?: any, ...param: any[]): string; - function formatWithOptions(inspectOptions: InspectOptions, format?: any, ...param: any[]): string; - /** @deprecated since v0.11.3 - use a third party module instead. */ - function log(string: string): void; - function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; - function inspect(object: any, options: InspectOptions): string; - namespace inspect { - let colors: NodeJS.Dict<[number, number]>; - let styles: { - [K in Style]: string - }; - let defaultOptions: InspectOptions; - /** - * Allows changing inspect settings from the repl. - */ - let replDefaults: InspectOptions; - const custom: unique symbol; - } - /** @deprecated since v4.0.0 - use `Array.isArray()` instead. */ - function isArray(object: any): object is any[]; - /** @deprecated since v4.0.0 - use `util.types.isRegExp()` instead. */ - function isRegExp(object: any): object is RegExp; - /** @deprecated since v4.0.0 - use `util.types.isDate()` instead. */ - function isDate(object: any): object is Date; - /** @deprecated since v4.0.0 - use `util.types.isNativeError()` instead. */ - function isError(object: any): object is Error; - function inherits(constructor: any, superConstructor: any): void; - function debuglog(key: string): (msg: string, ...param: any[]) => void; - /** @deprecated since v4.0.0 - use `typeof value === 'boolean'` instead. */ - function isBoolean(object: any): object is boolean; - /** @deprecated since v4.0.0 - use `Buffer.isBuffer()` instead. */ - function isBuffer(object: any): object is Buffer; - /** @deprecated since v4.0.0 - use `typeof value === 'function'` instead. */ - function isFunction(object: any): boolean; - /** @deprecated since v4.0.0 - use `value === null` instead. */ - function isNull(object: any): object is null; - /** @deprecated since v4.0.0 - use `value === null || value === undefined` instead. */ - function isNullOrUndefined(object: any): object is null | undefined; - /** @deprecated since v4.0.0 - use `typeof value === 'number'` instead. */ - function isNumber(object: any): object is number; - /** @deprecated since v4.0.0 - use `value !== null && typeof value === 'object'` instead. */ - function isObject(object: any): boolean; - /** @deprecated since v4.0.0 - use `(typeof value !== 'object' && typeof value !== 'function') || value === null` instead. */ - function isPrimitive(object: any): boolean; - /** @deprecated since v4.0.0 - use `typeof value === 'string'` instead. */ - function isString(object: any): object is string; - /** @deprecated since v4.0.0 - use `typeof value === 'symbol'` instead. */ - function isSymbol(object: any): object is symbol; - /** @deprecated since v4.0.0 - use `value === undefined` instead. */ - function isUndefined(object: any): object is undefined; - function deprecate(fn: T, message: string, code?: string): T; - function isDeepStrictEqual(val1: any, val2: any): boolean; - - function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException) => void) => void; - function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - function callbackify(fn: (arg1: T1) => Promise): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void; - function callbackify(fn: (arg1: T1) => Promise): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void; - function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; - function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void; - function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; - function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void; - function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; - function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void; - function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; - function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void; - function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; - - interface CustomPromisifyLegacy extends Function { - __promisify__: TCustom; - } - - interface CustomPromisifySymbol extends Function { - [promisify.custom]: TCustom; - } - - type CustomPromisify = CustomPromisifySymbol | CustomPromisifyLegacy; - - function promisify(fn: CustomPromisify): TCustom; - function promisify(fn: (callback: (err: any, result: TResult) => void) => void): () => Promise; - function promisify(fn: (callback: (err?: any) => void) => void): () => Promise; - function promisify(fn: (arg1: T1, callback: (err: any, result: TResult) => void) => void): (arg1: T1) => Promise; - function promisify(fn: (arg1: T1, callback: (err?: any) => void) => void): (arg1: T1) => Promise; - function promisify(fn: (arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise; - function promisify(fn: (arg1: T1, arg2: T2, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2) => Promise; - function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void): - (arg1: T1, arg2: T2, arg3: T3) => Promise; - function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise; - function promisify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; - function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void): - (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; - function promisify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; - function promisify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; - function promisify(fn: Function): Function; - namespace promisify { - const custom: unique symbol; - } - - namespace types { - function isAnyArrayBuffer(object: any): object is ArrayBufferLike; - function isArgumentsObject(object: any): object is IArguments; - function isArrayBuffer(object: any): object is ArrayBuffer; - function isArrayBufferView(object: any): object is NodeJS.ArrayBufferView; - function isAsyncFunction(object: any): boolean; - function isBigInt64Array(value: any): value is BigInt64Array; - function isBigUint64Array(value: any): value is BigUint64Array; - function isBooleanObject(object: any): object is Boolean; - function isBoxedPrimitive(object: any): object is String | Number | BigInt | Boolean | Symbol; - function isDataView(object: any): object is DataView; - function isDate(object: any): object is Date; - function isExternal(object: any): boolean; - function isFloat32Array(object: any): object is Float32Array; - function isFloat64Array(object: any): object is Float64Array; - function isGeneratorFunction(object: any): object is GeneratorFunction; - function isGeneratorObject(object: any): object is Generator; - function isInt8Array(object: any): object is Int8Array; - function isInt16Array(object: any): object is Int16Array; - function isInt32Array(object: any): object is Int32Array; - function isMap( - object: T | {}, - ): object is T extends ReadonlyMap - ? unknown extends T - ? never - : ReadonlyMap - : Map; - function isMapIterator(object: any): boolean; - function isModuleNamespaceObject(value: any): boolean; - function isNativeError(object: any): object is Error; - function isNumberObject(object: any): object is Number; - function isPromise(object: any): object is Promise; - function isProxy(object: any): boolean; - function isRegExp(object: any): object is RegExp; - function isSet( - object: T | {}, - ): object is T extends ReadonlySet - ? unknown extends T - ? never - : ReadonlySet - : Set; - function isSetIterator(object: any): boolean; - function isSharedArrayBuffer(object: any): object is SharedArrayBuffer; - function isStringObject(object: any): object is String; - function isSymbolObject(object: any): object is Symbol; - function isTypedArray(object: any): object is NodeJS.TypedArray; - function isUint8Array(object: any): object is Uint8Array; - function isUint8ClampedArray(object: any): object is Uint8ClampedArray; - function isUint16Array(object: any): object is Uint16Array; - function isUint32Array(object: any): object is Uint32Array; - function isWeakMap(object: any): object is WeakMap; - function isWeakSet(object: any): object is WeakSet; - } - - class TextDecoder { - readonly encoding: string; - readonly fatal: boolean; - readonly ignoreBOM: boolean; - constructor( - encoding?: string, - options?: { fatal?: boolean; ignoreBOM?: boolean } - ); - decode( - input?: NodeJS.ArrayBufferView | ArrayBuffer | null, - options?: { stream?: boolean } - ): string; - } - - interface EncodeIntoResult { - /** - * The read Unicode code units of input. - */ - - read: number; - /** - * The written UTF-8 bytes of output. - */ - written: number; - } - - class TextEncoder { - readonly encoding: string; - encode(input?: string): Uint8Array; - encodeInto(input: string, output: Uint8Array): EncodeIntoResult; - } -} diff --git a/node_modules/@types/node/v8.d.ts b/node_modules/@types/node/v8.d.ts deleted file mode 100644 index c213196f4..000000000 --- a/node_modules/@types/node/v8.d.ts +++ /dev/null @@ -1,191 +0,0 @@ -declare module 'node:v8' { - export * from 'v8'; -} - -declare module 'v8' { - import { Readable } from 'node:stream'; - - interface HeapSpaceInfo { - space_name: string; - space_size: number; - space_used_size: number; - space_available_size: number; - physical_space_size: number; - } - - // ** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ - type DoesZapCodeSpaceFlag = 0 | 1; - - interface HeapInfo { - total_heap_size: number; - total_heap_size_executable: number; - total_physical_size: number; - total_available_size: number; - used_heap_size: number; - heap_size_limit: number; - malloced_memory: number; - peak_malloced_memory: number; - does_zap_garbage: DoesZapCodeSpaceFlag; - number_of_native_contexts: number; - number_of_detached_contexts: number; - } - - interface HeapCodeStatistics { - code_and_metadata_size: number; - bytecode_and_metadata_size: number; - external_script_source_size: number; - } - - /** - * Returns an integer representing a "version tag" derived from the V8 version, command line flags and detected CPU features. - * This is useful for determining whether a vm.Script cachedData buffer is compatible with this instance of V8. - */ - function cachedDataVersionTag(): number; - - function getHeapStatistics(): HeapInfo; - function getHeapSpaceStatistics(): HeapSpaceInfo[]; - function setFlagsFromString(flags: string): void; - /** - * Generates a snapshot of the current V8 heap and returns a Readable - * Stream that may be used to read the JSON serialized representation. - * This conversation was marked as resolved by joyeecheung - * This JSON stream format is intended to be used with tools such as - * Chrome DevTools. The JSON schema is undocumented and specific to the - * V8 engine, and may change from one version of V8 to the next. - */ - function getHeapSnapshot(): Readable; - - /** - * - * @param fileName The file path where the V8 heap snapshot is to be - * saved. If not specified, a file name with the pattern - * `'Heap-${yyyymmdd}-${hhmmss}-${pid}-${thread_id}.heapsnapshot'` will be - * generated, where `{pid}` will be the PID of the Node.js process, - * `{thread_id}` will be `0` when `writeHeapSnapshot()` is called from - * the main Node.js thread or the id of a worker thread. - */ - function writeHeapSnapshot(fileName?: string): string; - - function getHeapCodeStatistics(): HeapCodeStatistics; - - class Serializer { - /** - * Writes out a header, which includes the serialization format version. - */ - writeHeader(): void; - - /** - * Serializes a JavaScript value and adds the serialized representation to the internal buffer. - * This throws an error if value cannot be serialized. - */ - writeValue(val: any): boolean; - - /** - * Returns the stored internal buffer. - * This serializer should not be used once the buffer is released. - * Calling this method results in undefined behavior if a previous write has failed. - */ - releaseBuffer(): Buffer; - - /** - * Marks an ArrayBuffer as having its contents transferred out of band.\ - * Pass the corresponding ArrayBuffer in the deserializing context to deserializer.transferArrayBuffer(). - */ - transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void; - - /** - * Write a raw 32-bit unsigned integer. - */ - writeUint32(value: number): void; - - /** - * Write a raw 64-bit unsigned integer, split into high and low 32-bit parts. - */ - writeUint64(hi: number, lo: number): void; - - /** - * Write a JS number value. - */ - writeDouble(value: number): void; - - /** - * Write raw bytes into the serializer’s internal buffer. - * The deserializer will require a way to compute the length of the buffer. - */ - writeRawBytes(buffer: NodeJS.TypedArray): void; - } - - /** - * A subclass of `Serializer` that serializes `TypedArray` (in particular `Buffer`) and `DataView` objects as host objects, - * and only stores the part of their underlying `ArrayBuffers` that they are referring to. - */ - class DefaultSerializer extends Serializer { - } - - class Deserializer { - constructor(data: NodeJS.TypedArray); - /** - * Reads and validates a header (including the format version). - * May, for example, reject an invalid or unsupported wire format. - * In that case, an Error is thrown. - */ - readHeader(): boolean; - - /** - * Deserializes a JavaScript value from the buffer and returns it. - */ - readValue(): any; - - /** - * Marks an ArrayBuffer as having its contents transferred out of band. - * Pass the corresponding `ArrayBuffer` in the serializing context to serializer.transferArrayBuffer() - * (or return the id from serializer._getSharedArrayBufferId() in the case of SharedArrayBuffers). - */ - transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void; - - /** - * Reads the underlying wire format version. - * Likely mostly to be useful to legacy code reading old wire format versions. - * May not be called before .readHeader(). - */ - getWireFormatVersion(): number; - - /** - * Read a raw 32-bit unsigned integer and return it. - */ - readUint32(): number; - - /** - * Read a raw 64-bit unsigned integer and return it as an array [hi, lo] with two 32-bit unsigned integer entries. - */ - readUint64(): [number, number]; - - /** - * Read a JS number value. - */ - readDouble(): number; - - /** - * Read raw bytes from the deserializer’s internal buffer. - * The length parameter must correspond to the length of the buffer that was passed to serializer.writeRawBytes(). - */ - readRawBytes(length: number): Buffer; - } - - /** - * A subclass of `Serializer` that serializes `TypedArray` (in particular `Buffer`) and `DataView` objects as host objects, - * and only stores the part of their underlying `ArrayBuffers` that they are referring to. - */ - class DefaultDeserializer extends Deserializer { - } - - /** - * Uses a `DefaultSerializer` to serialize value into a buffer. - */ - function serialize(value: any): Buffer; - - /** - * Uses a `DefaultDeserializer` with default options to read a JS value from a buffer. - */ - function deserialize(data: NodeJS.TypedArray): any; -} diff --git a/node_modules/@types/node/vm.d.ts b/node_modules/@types/node/vm.d.ts deleted file mode 100644 index bad810ab1..000000000 --- a/node_modules/@types/node/vm.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -declare module 'node:vm' { - export * from 'vm'; -} - -declare module 'vm' { - interface Context extends NodeJS.Dict { } - interface BaseOptions { - /** - * Specifies the filename used in stack traces produced by this script. - * Default: `''`. - */ - filename?: string; - /** - * Specifies the line number offset that is displayed in stack traces produced by this script. - * Default: `0`. - */ - lineOffset?: number; - /** - * Specifies the column number offset that is displayed in stack traces produced by this script. - * Default: `0` - */ - columnOffset?: number; - } - interface ScriptOptions extends BaseOptions { - displayErrors?: boolean; - timeout?: number; - cachedData?: Buffer; - produceCachedData?: boolean; - } - interface RunningScriptOptions extends BaseOptions { - /** - * When `true`, if an `Error` occurs while compiling the `code`, the line of code causing the error is attached to the stack trace. - * Default: `true`. - */ - displayErrors?: boolean; - /** - * Specifies the number of milliseconds to execute code before terminating execution. - * If execution is terminated, an `Error` will be thrown. This value must be a strictly positive integer. - */ - timeout?: number; - /** - * If `true`, the execution will be terminated when `SIGINT` (Ctrl+C) is received. - * Existing handlers for the event that have been attached via `process.on('SIGINT')` will be disabled during script execution, but will continue to work after that. - * If execution is terminated, an `Error` will be thrown. - * Default: `false`. - */ - breakOnSigint?: boolean; - /** - * If set to `afterEvaluate`, microtasks will be run immediately after the script has run. - */ - microtaskMode?: 'afterEvaluate'; - } - interface CompileFunctionOptions extends BaseOptions { - /** - * Provides an optional data with V8's code cache data for the supplied source. - */ - cachedData?: Buffer; - /** - * Specifies whether to produce new cache data. - * Default: `false`, - */ - produceCachedData?: boolean; - /** - * The sandbox/context in which the said function should be compiled in. - */ - parsingContext?: Context; - - /** - * An array containing a collection of context extensions (objects wrapping the current scope) to be applied while compiling - */ - contextExtensions?: Object[]; - } - - interface CreateContextOptions { - /** - * Human-readable name of the newly created context. - * @default 'VM Context i' Where i is an ascending numerical index of the created context. - */ - name?: string; - /** - * Corresponds to the newly created context for display purposes. - * The origin should be formatted like a `URL`, but with only the scheme, host, and port (if necessary), - * like the value of the `url.origin` property of a URL object. - * Most notably, this string should omit the trailing slash, as that denotes a path. - * @default '' - */ - origin?: string; - codeGeneration?: { - /** - * If set to false any calls to eval or function constructors (Function, GeneratorFunction, etc) - * will throw an EvalError. - * @default true - */ - strings?: boolean; - /** - * If set to false any attempt to compile a WebAssembly module will throw a WebAssembly.CompileError. - * @default true - */ - wasm?: boolean; - }; - } - - type MeasureMemoryMode = 'summary' | 'detailed'; - - interface MeasureMemoryOptions { - /** - * @default 'summary' - */ - mode?: MeasureMemoryMode; - context?: Context; - } - - interface MemoryMeasurement { - total: { - jsMemoryEstimate: number; - jsMemoryRange: [number, number]; - }; - } - - class Script { - constructor(code: string, options?: ScriptOptions); - runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; - runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; - runInThisContext(options?: RunningScriptOptions): any; - createCachedData(): Buffer; - } - function createContext(sandbox?: Context, options?: CreateContextOptions): Context; - function isContext(sandbox: Context): boolean; - function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions | string): any; - function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions | string): any; - function runInThisContext(code: string, options?: RunningScriptOptions | string): any; - function compileFunction(code: string, params?: ReadonlyArray, options?: CompileFunctionOptions): Function; - - /** - * Measure the memory known to V8 and used by the current execution context or a specified context. - * - * The format of the object that the returned Promise may resolve with is - * specific to the V8 engine and may change from one version of V8 to the next. - * - * The returned result is different from the statistics returned by - * `v8.getHeapSpaceStatistics()` in that `vm.measureMemory()` measures - * the memory reachable by V8 from a specific context, while - * `v8.getHeapSpaceStatistics()` measures the memory used by an instance - * of V8 engine, which can switch among multiple contexts that reference - * objects in the heap of one engine. - * - * @experimental - */ - function measureMemory(options?: MeasureMemoryOptions): Promise; -} diff --git a/node_modules/@types/node/wasi.d.ts b/node_modules/@types/node/wasi.d.ts deleted file mode 100644 index 43b38541d..000000000 --- a/node_modules/@types/node/wasi.d.ts +++ /dev/null @@ -1,90 +0,0 @@ -declare module 'node:wasi' { - export * from 'wasi'; -} - -declare module 'wasi' { - interface WASIOptions { - /** - * An array of strings that the WebAssembly application will - * see as command line arguments. The first argument is the virtual path to the - * WASI command itself. - */ - args?: string[]; - - /** - * An object similar to `process.env` that the WebAssembly - * application will see as its environment. - */ - env?: object; - - /** - * This object represents the WebAssembly application's - * sandbox directory structure. The string keys of `preopens` are treated as - * directories within the sandbox. The corresponding values in `preopens` are - * the real paths to those directories on the host machine. - */ - preopens?: NodeJS.Dict; - - /** - * By default, WASI applications terminate the Node.js - * process via the `__wasi_proc_exit()` function. Setting this option to `true` - * causes `wasi.start()` to return the exit code rather than terminate the - * process. - * @default false - */ - returnOnExit?: boolean; - - /** - * The file descriptor used as standard input in the WebAssembly application. - * @default 0 - */ - stdin?: number; - - /** - * The file descriptor used as standard output in the WebAssembly application. - * @default 1 - */ - stdout?: number; - - /** - * The file descriptor used as standard error in the WebAssembly application. - * @default 2 - */ - stderr?: number; - } - - class WASI { - constructor(options?: WASIOptions); - /** - * - * Attempt to begin execution of `instance` by invoking its `_start()` export. - * If `instance` does not contain a `_start()` export, then `start()` attempts to - * invoke the `__wasi_unstable_reactor_start()` export. If neither of those exports - * is present on `instance`, then `start()` does nothing. - * - * `start()` requires that `instance` exports a [`WebAssembly.Memory`][] named - * `memory`. If `instance` does not have a `memory` export an exception is thrown. - * - * If `start()` is called more than once, an exception is thrown. - */ - start(instance: object): void; // TODO: avoid DOM dependency until WASM moved to own lib. - - /** - * Attempt to initialize `instance` as a WASI reactor by invoking its `_initialize()` export, if it is present. - * If `instance` contains a `_start()` export, then an exception is thrown. - * - * `start()` requires that `instance` exports a [`WebAssembly.Memory`][] named - * `memory`. If `instance` does not have a `memory` export an exception is thrown. - * - * If `initialize()` is called more than once, an exception is thrown. - */ - initialize(instance: object): void; // TODO: avoid DOM dependency until WASM moved to own lib. - - /** - * Is an object that implements the WASI system call API. This object - * should be passed as the `wasi_snapshot_preview1` import during the instantiation of a - * [`WebAssembly.Instance`][]. - */ - readonly wasiImport: NodeJS.Dict; // TODO: Narrow to DOM types - } -} diff --git a/node_modules/@types/node/worker_threads.d.ts b/node_modules/@types/node/worker_threads.d.ts deleted file mode 100644 index 101f6cc55..000000000 --- a/node_modules/@types/node/worker_threads.d.ts +++ /dev/null @@ -1,242 +0,0 @@ -declare module 'node:worker_threads' { - export * from 'worker_threads'; -} - -declare module 'worker_threads' { - import { Context } from 'node:vm'; - import EventEmitter = require('node:events'); - import { Readable, Writable } from 'node:stream'; - import { URL } from 'node:url'; - import { FileHandle } from 'node:fs/promises'; - - const isMainThread: boolean; - const parentPort: null | MessagePort; - const resourceLimits: ResourceLimits; - const SHARE_ENV: unique symbol; - const threadId: number; - const workerData: any; - - class MessageChannel { - readonly port1: MessagePort; - readonly port2: MessagePort; - } - - type TransferListItem = ArrayBuffer | MessagePort | FileHandle; - - class MessagePort extends EventEmitter { - close(): void; - postMessage(value: any, transferList?: ReadonlyArray): void; - ref(): void; - unref(): void; - start(): void; - - addListener(event: "close", listener: () => void): this; - addListener(event: "message", listener: (value: any) => void): this; - addListener(event: "messageerror", listener: (error: Error) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "close"): boolean; - emit(event: "message", value: any): boolean; - emit(event: "messageerror", error: Error): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "close", listener: () => void): this; - on(event: "message", listener: (value: any) => void): this; - on(event: "messageerror", listener: (error: Error) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "close", listener: () => void): this; - once(event: "message", listener: (value: any) => void): this; - once(event: "messageerror", listener: (error: Error) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "close", listener: () => void): this; - prependListener(event: "message", listener: (value: any) => void): this; - prependListener(event: "messageerror", listener: (error: Error) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "message", listener: (value: any) => void): this; - prependOnceListener(event: "messageerror", listener: (error: Error) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - - removeListener(event: "close", listener: () => void): this; - removeListener(event: "message", listener: (value: any) => void): this; - removeListener(event: "messageerror", listener: (error: Error) => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - - off(event: "close", listener: () => void): this; - off(event: "message", listener: (value: any) => void): this; - off(event: "messageerror", listener: (error: Error) => void): this; - off(event: string | symbol, listener: (...args: any[]) => void): this; - } - - interface WorkerOptions { - /** - * List of arguments which would be stringified and appended to - * `process.argv` in the worker. This is mostly similar to the `workerData` - * but the values will be available on the global `process.argv` as if they - * were passed as CLI options to the script. - */ - argv?: any[]; - env?: NodeJS.Dict | typeof SHARE_ENV; - eval?: boolean; - workerData?: any; - stdin?: boolean; - stdout?: boolean; - stderr?: boolean; - execArgv?: string[]; - resourceLimits?: ResourceLimits; - /** - * Additional data to send in the first worker message. - */ - transferList?: TransferListItem[]; - trackUnmanagedFds?: boolean; - } - - interface ResourceLimits { - /** - * The maximum size of a heap space for recently created objects. - */ - maxYoungGenerationSizeMb?: number; - /** - * The maximum size of the main heap in MB. - */ - maxOldGenerationSizeMb?: number; - /** - * The size of a pre-allocated memory range used for generated code. - */ - codeRangeSizeMb?: number; - /** - * The default maximum stack size for the thread. Small values may lead to unusable Worker instances. - * @default 4 - */ - stackSizeMb?: number; - } - - class Worker extends EventEmitter { - readonly stdin: Writable | null; - readonly stdout: Readable; - readonly stderr: Readable; - readonly threadId: number; - readonly resourceLimits?: ResourceLimits; - - /** - * @param filename The path to the Worker’s main script or module. - * Must be either an absolute path or a relative path (i.e. relative to the current working directory) starting with ./ or ../, - * or a WHATWG URL object using file: protocol. If options.eval is true, this is a string containing JavaScript code rather than a path. - */ - constructor(filename: string | URL, options?: WorkerOptions); - - postMessage(value: any, transferList?: ReadonlyArray): void; - ref(): void; - unref(): void; - /** - * Stop all JavaScript execution in the worker thread as soon as possible. - * Returns a Promise for the exit code that is fulfilled when the `exit` event is emitted. - */ - terminate(): Promise; - - /** - * Returns a readable stream for a V8 snapshot of the current state of the Worker. - * See [`v8.getHeapSnapshot()`][] for more details. - * - * If the Worker thread is no longer running, which may occur before the - * [`'exit'` event][] is emitted, the returned `Promise` will be rejected - * immediately with an [`ERR_WORKER_NOT_RUNNING`][] error - */ - getHeapSnapshot(): Promise; - - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "exit", listener: (exitCode: number) => void): this; - addListener(event: "message", listener: (value: any) => void): this; - addListener(event: "messageerror", listener: (error: Error) => void): this; - addListener(event: "online", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - - emit(event: "error", err: Error): boolean; - emit(event: "exit", exitCode: number): boolean; - emit(event: "message", value: any): boolean; - emit(event: "messageerror", error: Error): boolean; - emit(event: "online"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - - on(event: "error", listener: (err: Error) => void): this; - on(event: "exit", listener: (exitCode: number) => void): this; - on(event: "message", listener: (value: any) => void): this; - on(event: "messageerror", listener: (error: Error) => void): this; - on(event: "online", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - - once(event: "error", listener: (err: Error) => void): this; - once(event: "exit", listener: (exitCode: number) => void): this; - once(event: "message", listener: (value: any) => void): this; - once(event: "messageerror", listener: (error: Error) => void): this; - once(event: "online", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "exit", listener: (exitCode: number) => void): this; - prependListener(event: "message", listener: (value: any) => void): this; - prependListener(event: "messageerror", listener: (error: Error) => void): this; - prependListener(event: "online", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "exit", listener: (exitCode: number) => void): this; - prependOnceListener(event: "message", listener: (value: any) => void): this; - prependOnceListener(event: "messageerror", listener: (error: Error) => void): this; - prependOnceListener(event: "online", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "exit", listener: (exitCode: number) => void): this; - removeListener(event: "message", listener: (value: any) => void): this; - removeListener(event: "messageerror", listener: (error: Error) => void): this; - removeListener(event: "online", listener: () => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - - off(event: "error", listener: (err: Error) => void): this; - off(event: "exit", listener: (exitCode: number) => void): this; - off(event: "message", listener: (value: any) => void): this; - off(event: "messageerror", listener: (error: Error) => void): this; - off(event: "online", listener: () => void): this; - off(event: string | symbol, listener: (...args: any[]) => void): this; - } - - /** - * Mark an object as not transferable. - * If `object` occurs in the transfer list of a `port.postMessage()` call, it will be ignored. - * - * In particular, this makes sense for objects that can be cloned, rather than transferred, - * and which are used by other objects on the sending side. For example, Node.js marks - * the `ArrayBuffer`s it uses for its Buffer pool with this. - * - * This operation cannot be undone. - */ - function markAsUntransferable(object: object): void; - - /** - * Transfer a `MessagePort` to a different `vm` Context. The original `port` - * object will be rendered unusable, and the returned `MessagePort` instance will - * take its place. - * - * The returned `MessagePort` will be an object in the target context, and will - * inherit from its global `Object` class. Objects passed to the - * `port.onmessage()` listener will also be created in the target context - * and inherit from its global `Object` class. - * - * However, the created `MessagePort` will no longer inherit from - * `EventEmitter`, and only `port.onmessage()` can be used to receive - * events using it. - */ - function moveMessagePortToContext(port: MessagePort, context: Context): MessagePort; - - /** - * Receive a single message from a given `MessagePort`. If no message is available, - * `undefined` is returned, otherwise an object with a single `message` property - * that contains the message payload, corresponding to the oldest message in the - * `MessagePort`’s queue. - */ - function receiveMessageOnPort(port: MessagePort): { message: any } | undefined; -} diff --git a/node_modules/@types/node/zlib.d.ts b/node_modules/@types/node/zlib.d.ts deleted file mode 100644 index f3fbc4476..000000000 --- a/node_modules/@types/node/zlib.d.ts +++ /dev/null @@ -1,365 +0,0 @@ -declare module 'node:zlib' { - export * from 'zlib'; -} - -declare module 'zlib' { - import * as stream from 'node:stream'; - - interface ZlibOptions { - /** - * @default constants.Z_NO_FLUSH - */ - flush?: number; - /** - * @default constants.Z_FINISH - */ - finishFlush?: number; - /** - * @default 16*1024 - */ - chunkSize?: number; - windowBits?: number; - level?: number; // compression only - memLevel?: number; // compression only - strategy?: number; // compression only - dictionary?: NodeJS.ArrayBufferView | ArrayBuffer; // deflate/inflate only, empty dictionary by default - info?: boolean; - maxOutputLength?: number; - } - - interface BrotliOptions { - /** - * @default constants.BROTLI_OPERATION_PROCESS - */ - flush?: number; - /** - * @default constants.BROTLI_OPERATION_FINISH - */ - finishFlush?: number; - /** - * @default 16*1024 - */ - chunkSize?: number; - params?: { - /** - * Each key is a `constants.BROTLI_*` constant. - */ - [key: number]: boolean | number; - }; - maxOutputLength?: number; - } - - interface Zlib { - /** @deprecated Use bytesWritten instead. */ - readonly bytesRead: number; - readonly bytesWritten: number; - shell?: boolean | string; - close(callback?: () => void): void; - flush(kind?: number, callback?: () => void): void; - flush(callback?: () => void): void; - } - - interface ZlibParams { - params(level: number, strategy: number, callback: () => void): void; - } - - interface ZlibReset { - reset(): void; - } - - interface BrotliCompress extends stream.Transform, Zlib { } - interface BrotliDecompress extends stream.Transform, Zlib { } - interface Gzip extends stream.Transform, Zlib { } - interface Gunzip extends stream.Transform, Zlib { } - interface Deflate extends stream.Transform, Zlib, ZlibReset, ZlibParams { } - interface Inflate extends stream.Transform, Zlib, ZlibReset { } - interface DeflateRaw extends stream.Transform, Zlib, ZlibReset, ZlibParams { } - interface InflateRaw extends stream.Transform, Zlib, ZlibReset { } - interface Unzip extends stream.Transform, Zlib { } - - function createBrotliCompress(options?: BrotliOptions): BrotliCompress; - function createBrotliDecompress(options?: BrotliOptions): BrotliDecompress; - function createGzip(options?: ZlibOptions): Gzip; - function createGunzip(options?: ZlibOptions): Gunzip; - function createDeflate(options?: ZlibOptions): Deflate; - function createInflate(options?: ZlibOptions): Inflate; - function createDeflateRaw(options?: ZlibOptions): DeflateRaw; - function createInflateRaw(options?: ZlibOptions): InflateRaw; - function createUnzip(options?: ZlibOptions): Unzip; - - type InputType = string | ArrayBuffer | NodeJS.ArrayBufferView; - - type CompressCallback = (error: Error | null, result: Buffer) => void; - - function brotliCompress(buf: InputType, options: BrotliOptions, callback: CompressCallback): void; - function brotliCompress(buf: InputType, callback: CompressCallback): void; - namespace brotliCompress { - function __promisify__(buffer: InputType, options?: BrotliOptions): Promise; - } - - function brotliCompressSync(buf: InputType, options?: BrotliOptions): Buffer; - - function brotliDecompress(buf: InputType, options: BrotliOptions, callback: CompressCallback): void; - function brotliDecompress(buf: InputType, callback: CompressCallback): void; - namespace brotliDecompress { - function __promisify__(buffer: InputType, options?: BrotliOptions): Promise; - } - - function brotliDecompressSync(buf: InputType, options?: BrotliOptions): Buffer; - - function deflate(buf: InputType, callback: CompressCallback): void; - function deflate(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; - namespace deflate { - function __promisify__(buffer: InputType, options?: ZlibOptions): Promise; - } - - function deflateSync(buf: InputType, options?: ZlibOptions): Buffer; - - function deflateRaw(buf: InputType, callback: CompressCallback): void; - function deflateRaw(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; - namespace deflateRaw { - function __promisify__(buffer: InputType, options?: ZlibOptions): Promise; - } - - function deflateRawSync(buf: InputType, options?: ZlibOptions): Buffer; - - function gzip(buf: InputType, callback: CompressCallback): void; - function gzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; - namespace gzip { - function __promisify__(buffer: InputType, options?: ZlibOptions): Promise; - } - - function gzipSync(buf: InputType, options?: ZlibOptions): Buffer; - - function gunzip(buf: InputType, callback: CompressCallback): void; - function gunzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; - namespace gunzip { - function __promisify__(buffer: InputType, options?: ZlibOptions): Promise; - } - - function gunzipSync(buf: InputType, options?: ZlibOptions): Buffer; - - function inflate(buf: InputType, callback: CompressCallback): void; - function inflate(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; - namespace inflate { - function __promisify__(buffer: InputType, options?: ZlibOptions): Promise; - } - - function inflateSync(buf: InputType, options?: ZlibOptions): Buffer; - - function inflateRaw(buf: InputType, callback: CompressCallback): void; - function inflateRaw(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; - namespace inflateRaw { - function __promisify__(buffer: InputType, options?: ZlibOptions): Promise; - } - - function inflateRawSync(buf: InputType, options?: ZlibOptions): Buffer; - - function unzip(buf: InputType, callback: CompressCallback): void; - function unzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void; - namespace unzip { - function __promisify__(buffer: InputType, options?: ZlibOptions): Promise; - } - - function unzipSync(buf: InputType, options?: ZlibOptions): Buffer; - - namespace constants { - const BROTLI_DECODE: number; - const BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: number; - const BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: number; - const BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: number; - const BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: number; - const BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: number; - const BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: number; - const BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: number; - const BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: number; - const BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: number; - const BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: number; - const BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: number; - const BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: number; - const BROTLI_DECODER_ERROR_FORMAT_DISTANCE: number; - const BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: number; - const BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: number; - const BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: number; - const BROTLI_DECODER_ERROR_FORMAT_PADDING_1: number; - const BROTLI_DECODER_ERROR_FORMAT_PADDING_2: number; - const BROTLI_DECODER_ERROR_FORMAT_RESERVED: number; - const BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: number; - const BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: number; - const BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: number; - const BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: number; - const BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: number; - const BROTLI_DECODER_ERROR_UNREACHABLE: number; - const BROTLI_DECODER_NEEDS_MORE_INPUT: number; - const BROTLI_DECODER_NEEDS_MORE_OUTPUT: number; - const BROTLI_DECODER_NO_ERROR: number; - const BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: number; - const BROTLI_DECODER_PARAM_LARGE_WINDOW: number; - const BROTLI_DECODER_RESULT_ERROR: number; - const BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: number; - const BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: number; - const BROTLI_DECODER_RESULT_SUCCESS: number; - const BROTLI_DECODER_SUCCESS: number; - - const BROTLI_DEFAULT_MODE: number; - const BROTLI_DEFAULT_QUALITY: number; - const BROTLI_DEFAULT_WINDOW: number; - const BROTLI_ENCODE: number; - const BROTLI_LARGE_MAX_WINDOW_BITS: number; - const BROTLI_MAX_INPUT_BLOCK_BITS: number; - const BROTLI_MAX_QUALITY: number; - const BROTLI_MAX_WINDOW_BITS: number; - const BROTLI_MIN_INPUT_BLOCK_BITS: number; - const BROTLI_MIN_QUALITY: number; - const BROTLI_MIN_WINDOW_BITS: number; - - const BROTLI_MODE_FONT: number; - const BROTLI_MODE_GENERIC: number; - const BROTLI_MODE_TEXT: number; - - const BROTLI_OPERATION_EMIT_METADATA: number; - const BROTLI_OPERATION_FINISH: number; - const BROTLI_OPERATION_FLUSH: number; - const BROTLI_OPERATION_PROCESS: number; - - const BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: number; - const BROTLI_PARAM_LARGE_WINDOW: number; - const BROTLI_PARAM_LGBLOCK: number; - const BROTLI_PARAM_LGWIN: number; - const BROTLI_PARAM_MODE: number; - const BROTLI_PARAM_NDIRECT: number; - const BROTLI_PARAM_NPOSTFIX: number; - const BROTLI_PARAM_QUALITY: number; - const BROTLI_PARAM_SIZE_HINT: number; - - const DEFLATE: number; - const DEFLATERAW: number; - const GUNZIP: number; - const GZIP: number; - const INFLATE: number; - const INFLATERAW: number; - const UNZIP: number; - - // Allowed flush values. - const Z_NO_FLUSH: number; - const Z_PARTIAL_FLUSH: number; - const Z_SYNC_FLUSH: number; - const Z_FULL_FLUSH: number; - const Z_FINISH: number; - const Z_BLOCK: number; - const Z_TREES: number; - - // Return codes for the compression/decompression functions. - // Negative values are errors, positive values are used for special but normal events. - const Z_OK: number; - const Z_STREAM_END: number; - const Z_NEED_DICT: number; - const Z_ERRNO: number; - const Z_STREAM_ERROR: number; - const Z_DATA_ERROR: number; - const Z_MEM_ERROR: number; - const Z_BUF_ERROR: number; - const Z_VERSION_ERROR: number; - - // Compression levels. - const Z_NO_COMPRESSION: number; - const Z_BEST_SPEED: number; - const Z_BEST_COMPRESSION: number; - const Z_DEFAULT_COMPRESSION: number; - - // Compression strategy. - const Z_FILTERED: number; - const Z_HUFFMAN_ONLY: number; - const Z_RLE: number; - const Z_FIXED: number; - const Z_DEFAULT_STRATEGY: number; - - const Z_DEFAULT_WINDOWBITS: number; - const Z_MIN_WINDOWBITS: number; - const Z_MAX_WINDOWBITS: number; - - const Z_MIN_CHUNK: number; - const Z_MAX_CHUNK: number; - const Z_DEFAULT_CHUNK: number; - - const Z_MIN_MEMLEVEL: number; - const Z_MAX_MEMLEVEL: number; - const Z_DEFAULT_MEMLEVEL: number; - - const Z_MIN_LEVEL: number; - const Z_MAX_LEVEL: number; - const Z_DEFAULT_LEVEL: number; - - const ZLIB_VERNUM: number; - } - - // Allowed flush values. - /** @deprecated Use `constants.Z_NO_FLUSH` */ - const Z_NO_FLUSH: number; - /** @deprecated Use `constants.Z_PARTIAL_FLUSH` */ - const Z_PARTIAL_FLUSH: number; - /** @deprecated Use `constants.Z_SYNC_FLUSH` */ - const Z_SYNC_FLUSH: number; - /** @deprecated Use `constants.Z_FULL_FLUSH` */ - const Z_FULL_FLUSH: number; - /** @deprecated Use `constants.Z_FINISH` */ - const Z_FINISH: number; - /** @deprecated Use `constants.Z_BLOCK` */ - const Z_BLOCK: number; - /** @deprecated Use `constants.Z_TREES` */ - const Z_TREES: number; - - // Return codes for the compression/decompression functions. - // Negative values are errors, positive values are used for special but normal events. - /** @deprecated Use `constants.Z_OK` */ - const Z_OK: number; - /** @deprecated Use `constants.Z_STREAM_END` */ - const Z_STREAM_END: number; - /** @deprecated Use `constants.Z_NEED_DICT` */ - const Z_NEED_DICT: number; - /** @deprecated Use `constants.Z_ERRNO` */ - const Z_ERRNO: number; - /** @deprecated Use `constants.Z_STREAM_ERROR` */ - const Z_STREAM_ERROR: number; - /** @deprecated Use `constants.Z_DATA_ERROR` */ - const Z_DATA_ERROR: number; - /** @deprecated Use `constants.Z_MEM_ERROR` */ - const Z_MEM_ERROR: number; - /** @deprecated Use `constants.Z_BUF_ERROR` */ - const Z_BUF_ERROR: number; - /** @deprecated Use `constants.Z_VERSION_ERROR` */ - const Z_VERSION_ERROR: number; - - // Compression levels. - /** @deprecated Use `constants.Z_NO_COMPRESSION` */ - const Z_NO_COMPRESSION: number; - /** @deprecated Use `constants.Z_BEST_SPEED` */ - const Z_BEST_SPEED: number; - /** @deprecated Use `constants.Z_BEST_COMPRESSION` */ - const Z_BEST_COMPRESSION: number; - /** @deprecated Use `constants.Z_DEFAULT_COMPRESSION` */ - const Z_DEFAULT_COMPRESSION: number; - - // Compression strategy. - /** @deprecated Use `constants.Z_FILTERED` */ - const Z_FILTERED: number; - /** @deprecated Use `constants.Z_HUFFMAN_ONLY` */ - const Z_HUFFMAN_ONLY: number; - /** @deprecated Use `constants.Z_RLE` */ - const Z_RLE: number; - /** @deprecated Use `constants.Z_FIXED` */ - const Z_FIXED: number; - /** @deprecated Use `constants.Z_DEFAULT_STRATEGY` */ - const Z_DEFAULT_STRATEGY: number; - - /** @deprecated */ - const Z_BINARY: number; - /** @deprecated */ - const Z_TEXT: number; - /** @deprecated */ - const Z_ASCII: number; - /** @deprecated */ - const Z_UNKNOWN: number; - /** @deprecated */ - const Z_DEFLATED: number; -} diff --git a/node_modules/ansi-bgblack/LICENSE b/node_modules/ansi-bgblack/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-bgblack/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-bgblack/README.md b/node_modules/ansi-bgblack/README.md deleted file mode 100644 index 21782e224..000000000 --- a/node_modules/ansi-bgblack/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-bgblack [![NPM version](https://badge.fury.io/js/ansi-bgblack.svg)](http://badge.fury.io/js/ansi-bgblack) - -> The color bgblack, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-bgblack --save -``` - -## Usage - -```js -var bgblack = require('ansi-bgblack'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-bgblack/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-bgblack/index.js b/node_modules/ansi-bgblack/index.js deleted file mode 100644 index 639488fcc..000000000 --- a/node_modules/ansi-bgblack/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-bgblack - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function bgblack(message) { - return wrap(40, 49, message); -}; diff --git a/node_modules/ansi-bgblack/package.json b/node_modules/ansi-bgblack/package.json deleted file mode 100644 index d909fd6cb..000000000 --- a/node_modules/ansi-bgblack/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-bgblack@^0.1.1", - "_id": "ansi-bgblack@0.1.1", - "_inBundle": false, - "_integrity": "sha1-poulAHiHcBtqr74/oNrf36juPKI=", - "_location": "/ansi-bgblack", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-bgblack@^0.1.1", - "name": "ansi-bgblack", - "escapedName": "ansi-bgblack", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz", - "_shasum": "a68ba5007887701b6aafbe3fa0dadfdfa8ee3ca2", - "_spec": "ansi-bgblack@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-bgblack/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color bgblack, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-bgblack", - "keywords": [ - "bgblack", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-bgblack", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-bgblack.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-bgblue/LICENSE b/node_modules/ansi-bgblue/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-bgblue/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-bgblue/index.js b/node_modules/ansi-bgblue/index.js deleted file mode 100644 index 495add2d2..000000000 --- a/node_modules/ansi-bgblue/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-bgblue - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function bgblue(message) { - return wrap(44, 49, message); -}; diff --git a/node_modules/ansi-bgblue/package.json b/node_modules/ansi-bgblue/package.json deleted file mode 100644 index 6e3c2b517..000000000 --- a/node_modules/ansi-bgblue/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-bgblue@^0.1.1", - "_id": "ansi-bgblue@0.1.1", - "_inBundle": false, - "_integrity": "sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=", - "_location": "/ansi-bgblue", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-bgblue@^0.1.1", - "name": "ansi-bgblue", - "escapedName": "ansi-bgblue", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz", - "_shasum": "67bdc04edc9b9b5278969da196dea3d75c8c3613", - "_spec": "ansi-bgblue@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-bgblue/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color bgblue, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-bgblue", - "keywords": [ - "bgblue", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-bgblue", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-bgblue.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-bgblue/readme.md b/node_modules/ansi-bgblue/readme.md deleted file mode 100644 index cb94c137d..000000000 --- a/node_modules/ansi-bgblue/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-bgblue [![NPM version](https://badge.fury.io/js/ansi-bgblue.svg)](http://badge.fury.io/js/ansi-bgblue) - -> The color bgblue, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-bgblue --save -``` - -## Usage - -```js -var bgblue = require('ansi-bgblue'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-bgblue/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-bgcyan/LICENSE b/node_modules/ansi-bgcyan/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-bgcyan/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-bgcyan/index.js b/node_modules/ansi-bgcyan/index.js deleted file mode 100644 index b5c116d6a..000000000 --- a/node_modules/ansi-bgcyan/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-bgcyan - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function bgcyan(message) { - return wrap(46, 49, message); -}; diff --git a/node_modules/ansi-bgcyan/package.json b/node_modules/ansi-bgcyan/package.json deleted file mode 100644 index 742ec594f..000000000 --- a/node_modules/ansi-bgcyan/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-bgcyan@^0.1.1", - "_id": "ansi-bgcyan@0.1.1", - "_inBundle": false, - "_integrity": "sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=", - "_location": "/ansi-bgcyan", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-bgcyan@^0.1.1", - "name": "ansi-bgcyan", - "escapedName": "ansi-bgcyan", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz", - "_shasum": "58489425600bde9f5507068dd969ebfdb50fe768", - "_spec": "ansi-bgcyan@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-bgcyan/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color bgcyan, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-bgcyan", - "keywords": [ - "bgcyan", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-bgcyan", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-bgcyan.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-bgcyan/readme.md b/node_modules/ansi-bgcyan/readme.md deleted file mode 100644 index a841ad551..000000000 --- a/node_modules/ansi-bgcyan/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-bgcyan [![NPM version](https://badge.fury.io/js/ansi-bgcyan.svg)](http://badge.fury.io/js/ansi-bgcyan) - -> The color bgcyan, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-bgcyan --save -``` - -## Usage - -```js -var bgcyan = require('ansi-bgcyan'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-bgcyan/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-bggreen/LICENSE b/node_modules/ansi-bggreen/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-bggreen/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-bggreen/index.js b/node_modules/ansi-bggreen/index.js deleted file mode 100644 index e933981ea..000000000 --- a/node_modules/ansi-bggreen/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-bggreen - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function bggreen(message) { - return wrap(42, 49, message); -}; diff --git a/node_modules/ansi-bggreen/package.json b/node_modules/ansi-bggreen/package.json deleted file mode 100644 index da0896e4b..000000000 --- a/node_modules/ansi-bggreen/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-bggreen@^0.1.1", - "_id": "ansi-bggreen@0.1.1", - "_inBundle": false, - "_integrity": "sha1-TjGRJIUplD9DIelr8THRwTgWr0k=", - "_location": "/ansi-bggreen", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-bggreen@^0.1.1", - "name": "ansi-bggreen", - "escapedName": "ansi-bggreen", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz", - "_shasum": "4e3191248529943f4321e96bf131d1c13816af49", - "_spec": "ansi-bggreen@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-bggreen/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color bggreen, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-bggreen", - "keywords": [ - "bggreen", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-bggreen", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-bggreen.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-bggreen/readme.md b/node_modules/ansi-bggreen/readme.md deleted file mode 100644 index 48cb49735..000000000 --- a/node_modules/ansi-bggreen/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-bggreen [![NPM version](https://badge.fury.io/js/ansi-bggreen.svg)](http://badge.fury.io/js/ansi-bggreen) - -> The color bggreen, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-bggreen --save -``` - -## Usage - -```js -var bggreen = require('ansi-bggreen'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-bggreen/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-bgmagenta/LICENSE b/node_modules/ansi-bgmagenta/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-bgmagenta/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-bgmagenta/index.js b/node_modules/ansi-bgmagenta/index.js deleted file mode 100644 index 2d125e637..000000000 --- a/node_modules/ansi-bgmagenta/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-bgmagenta - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function bgmagenta(message) { - return wrap(45, 49, message); -}; diff --git a/node_modules/ansi-bgmagenta/package.json b/node_modules/ansi-bgmagenta/package.json deleted file mode 100644 index 88616d6f9..000000000 --- a/node_modules/ansi-bgmagenta/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-bgmagenta@^0.1.1", - "_id": "ansi-bgmagenta@0.1.1", - "_inBundle": false, - "_integrity": "sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=", - "_location": "/ansi-bgmagenta", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-bgmagenta@^0.1.1", - "name": "ansi-bgmagenta", - "escapedName": "ansi-bgmagenta", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz", - "_shasum": "9b28432c076eaa999418672a3efbe19391c2c7a1", - "_spec": "ansi-bgmagenta@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-bgmagenta/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color bgmagenta, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-bgmagenta", - "keywords": [ - "bgmagenta", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-bgmagenta", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-bgmagenta.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-bgmagenta/readme.md b/node_modules/ansi-bgmagenta/readme.md deleted file mode 100644 index e2d9513f5..000000000 --- a/node_modules/ansi-bgmagenta/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-bgmagenta [![NPM version](https://badge.fury.io/js/ansi-bgmagenta.svg)](http://badge.fury.io/js/ansi-bgmagenta) - -> The color bgmagenta, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-bgmagenta --save -``` - -## Usage - -```js -var bgmagenta = require('ansi-bgmagenta'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-bgmagenta/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-bgred/LICENSE b/node_modules/ansi-bgred/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-bgred/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-bgred/index.js b/node_modules/ansi-bgred/index.js deleted file mode 100644 index 81bd715b9..000000000 --- a/node_modules/ansi-bgred/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-bgred - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function bgred(message) { - return wrap(41, 49, message); -}; diff --git a/node_modules/ansi-bgred/package.json b/node_modules/ansi-bgred/package.json deleted file mode 100644 index 2cad446b4..000000000 --- a/node_modules/ansi-bgred/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-bgred@^0.1.1", - "_id": "ansi-bgred@0.1.1", - "_inBundle": false, - "_integrity": "sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=", - "_location": "/ansi-bgred", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-bgred@^0.1.1", - "name": "ansi-bgred", - "escapedName": "ansi-bgred", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-bgred/-/ansi-bgred-0.1.1.tgz", - "_shasum": "a76f92838382ba43290a6c1778424f984d6f1041", - "_spec": "ansi-bgred@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-bgred/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color bgred, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-bgred", - "keywords": [ - "bgred", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-bgred", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-bgred.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-bgred/readme.md b/node_modules/ansi-bgred/readme.md deleted file mode 100644 index fb4e55331..000000000 --- a/node_modules/ansi-bgred/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-bgred [![NPM version](https://badge.fury.io/js/ansi-bgred.svg)](http://badge.fury.io/js/ansi-bgred) - -> The color bgred, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-bgred --save -``` - -## Usage - -```js -var bgred = require('ansi-bgred'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-bgred/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-bgwhite/LICENSE b/node_modules/ansi-bgwhite/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-bgwhite/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-bgwhite/index.js b/node_modules/ansi-bgwhite/index.js deleted file mode 100644 index a9ff83283..000000000 --- a/node_modules/ansi-bgwhite/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-bgwhite - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function bgwhite(message) { - return wrap(47, 49, message); -}; diff --git a/node_modules/ansi-bgwhite/package.json b/node_modules/ansi-bgwhite/package.json deleted file mode 100644 index 04b4cd9d5..000000000 --- a/node_modules/ansi-bgwhite/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-bgwhite@^0.1.1", - "_id": "ansi-bgwhite@0.1.1", - "_inBundle": false, - "_integrity": "sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=", - "_location": "/ansi-bgwhite", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-bgwhite@^0.1.1", - "name": "ansi-bgwhite", - "escapedName": "ansi-bgwhite", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz", - "_shasum": "6504651377a58a6ececd0331994e480258e11ba8", - "_spec": "ansi-bgwhite@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-bgwhite/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color bgwhite, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-bgwhite", - "keywords": [ - "bgwhite", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-bgwhite", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-bgwhite.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-bgwhite/readme.md b/node_modules/ansi-bgwhite/readme.md deleted file mode 100644 index 85f5b0e7b..000000000 --- a/node_modules/ansi-bgwhite/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-bgwhite [![NPM version](https://badge.fury.io/js/ansi-bgwhite.svg)](http://badge.fury.io/js/ansi-bgwhite) - -> The color bgwhite, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-bgwhite --save -``` - -## Usage - -```js -var bgwhite = require('ansi-bgwhite'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-bgwhite/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-bgyellow/LICENSE b/node_modules/ansi-bgyellow/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-bgyellow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-bgyellow/index.js b/node_modules/ansi-bgyellow/index.js deleted file mode 100644 index fc3b7eef9..000000000 --- a/node_modules/ansi-bgyellow/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-bgyellow - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function bgyellow(message) { - return wrap(43, 49, message); -}; diff --git a/node_modules/ansi-bgyellow/package.json b/node_modules/ansi-bgyellow/package.json deleted file mode 100644 index 43dc68d79..000000000 --- a/node_modules/ansi-bgyellow/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-bgyellow@^0.1.1", - "_id": "ansi-bgyellow@0.1.1", - "_inBundle": false, - "_integrity": "sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=", - "_location": "/ansi-bgyellow", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-bgyellow@^0.1.1", - "name": "ansi-bgyellow", - "escapedName": "ansi-bgyellow", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz", - "_shasum": "c3fe2eb08cd476648029e6874d15a0b38f61d44f", - "_spec": "ansi-bgyellow@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-bgyellow/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color bgyellow, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-bgyellow", - "keywords": [ - "bgyellow", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-bgyellow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-bgyellow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-bgyellow/readme.md b/node_modules/ansi-bgyellow/readme.md deleted file mode 100644 index 74d531d25..000000000 --- a/node_modules/ansi-bgyellow/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-bgyellow [![NPM version](https://badge.fury.io/js/ansi-bgyellow.svg)](http://badge.fury.io/js/ansi-bgyellow) - -> The color bgyellow, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-bgyellow --save -``` - -## Usage - -```js -var bgyellow = require('ansi-bgyellow'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-bgyellow/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-black/LICENSE b/node_modules/ansi-black/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-black/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-black/index.js b/node_modules/ansi-black/index.js deleted file mode 100644 index 9b3c92edc..000000000 --- a/node_modules/ansi-black/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-black - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function black(message) { - return wrap(30, 39, message); -}; diff --git a/node_modules/ansi-black/package.json b/node_modules/ansi-black/package.json deleted file mode 100644 index 61fea6d07..000000000 --- a/node_modules/ansi-black/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-black@^0.1.1", - "_id": "ansi-black@0.1.1", - "_inBundle": false, - "_integrity": "sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=", - "_location": "/ansi-black", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-black@^0.1.1", - "name": "ansi-black", - "escapedName": "ansi-black", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-black/-/ansi-black-0.1.1.tgz", - "_shasum": "f6185e889360b2545a1ec50c0bf063fc43032453", - "_spec": "ansi-black@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-black/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color black, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-black", - "keywords": [ - "black", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-black", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-black.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-black/readme.md b/node_modules/ansi-black/readme.md deleted file mode 100644 index a175e2e17..000000000 --- a/node_modules/ansi-black/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-black [![NPM version](https://badge.fury.io/js/ansi-black.svg)](http://badge.fury.io/js/ansi-black) - -> The color black, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-black --save -``` - -## Usage - -```js -var black = require('ansi-black'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-black/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-blue/LICENSE b/node_modules/ansi-blue/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-blue/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-blue/index.js b/node_modules/ansi-blue/index.js deleted file mode 100644 index 0a4e349d6..000000000 --- a/node_modules/ansi-blue/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-blue - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function blue(message) { - return wrap(34, 39, message); -}; diff --git a/node_modules/ansi-blue/package.json b/node_modules/ansi-blue/package.json deleted file mode 100644 index 313ecd5af..000000000 --- a/node_modules/ansi-blue/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-blue@^0.1.1", - "_id": "ansi-blue@0.1.1", - "_inBundle": false, - "_integrity": "sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=", - "_location": "/ansi-blue", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-blue@^0.1.1", - "name": "ansi-blue", - "escapedName": "ansi-blue", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-blue/-/ansi-blue-0.1.1.tgz", - "_shasum": "15b804990e92fc9ca8c5476ce8f699777c21edbf", - "_spec": "ansi-blue@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-blue/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color blue, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-blue", - "keywords": [ - "blue", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-blue", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-blue.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-blue/readme.md b/node_modules/ansi-blue/readme.md deleted file mode 100644 index 8fc3b0462..000000000 --- a/node_modules/ansi-blue/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-blue [![NPM version](https://badge.fury.io/js/ansi-blue.svg)](http://badge.fury.io/js/ansi-blue) - -> The color blue, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-blue --save -``` - -## Usage - -```js -var blue = require('ansi-blue'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-blue/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-bold/LICENSE b/node_modules/ansi-bold/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-bold/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-bold/index.js b/node_modules/ansi-bold/index.js deleted file mode 100644 index a56a16dce..000000000 --- a/node_modules/ansi-bold/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-bold - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function bold(message) { - return wrap(1, 22, message); -}; diff --git a/node_modules/ansi-bold/package.json b/node_modules/ansi-bold/package.json deleted file mode 100644 index 47cfb6fbe..000000000 --- a/node_modules/ansi-bold/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-bold@^0.1.1", - "_id": "ansi-bold@0.1.1", - "_inBundle": false, - "_integrity": "sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=", - "_location": "/ansi-bold", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-bold@^0.1.1", - "name": "ansi-bold", - "escapedName": "ansi-bold", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-bold/-/ansi-bold-0.1.1.tgz", - "_shasum": "3e63950af5acc2ae2e670e6f67deb115d1a5f505", - "_spec": "ansi-bold@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-bold/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color bold, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-bold", - "keywords": [ - "bold", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-bold", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-bold.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-bold/readme.md b/node_modules/ansi-bold/readme.md deleted file mode 100644 index e06c0ebfc..000000000 --- a/node_modules/ansi-bold/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-bold [![NPM version](https://badge.fury.io/js/ansi-bold.svg)](http://badge.fury.io/js/ansi-bold) - -> The color bold, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-bold --save -``` - -## Usage - -```js -var bold = require('ansi-bold'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-bold/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-cyan/LICENSE b/node_modules/ansi-cyan/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-cyan/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-cyan/index.js b/node_modules/ansi-cyan/index.js deleted file mode 100644 index b1e12c543..000000000 --- a/node_modules/ansi-cyan/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-cyan - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function cyan(message) { - return wrap(36, 39, message); -}; diff --git a/node_modules/ansi-cyan/package.json b/node_modules/ansi-cyan/package.json deleted file mode 100644 index cd500141d..000000000 --- a/node_modules/ansi-cyan/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-cyan@^0.1.1", - "_id": "ansi-cyan@0.1.1", - "_inBundle": false, - "_integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "_location": "/ansi-cyan", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-cyan@^0.1.1", - "name": "ansi-cyan", - "escapedName": "ansi-cyan", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "_shasum": "538ae528af8982f28ae30d86f2f17456d2609873", - "_spec": "ansi-cyan@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-cyan/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color cyan, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-cyan", - "keywords": [ - "cyan", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-cyan", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-cyan.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-cyan/readme.md b/node_modules/ansi-cyan/readme.md deleted file mode 100644 index 7b0c2148f..000000000 --- a/node_modules/ansi-cyan/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-cyan [![NPM version](https://badge.fury.io/js/ansi-cyan.svg)](http://badge.fury.io/js/ansi-cyan) - -> The color cyan, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-cyan --save -``` - -## Usage - -```js -var cyan = require('ansi-cyan'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-cyan/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-dim/LICENSE b/node_modules/ansi-dim/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-dim/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-dim/index.js b/node_modules/ansi-dim/index.js deleted file mode 100644 index 441d7ffaa..000000000 --- a/node_modules/ansi-dim/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-dim - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function dim(message) { - return wrap(2, 22, message); -}; diff --git a/node_modules/ansi-dim/package.json b/node_modules/ansi-dim/package.json deleted file mode 100644 index 0a20e8930..000000000 --- a/node_modules/ansi-dim/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-dim@^0.1.1", - "_id": "ansi-dim@0.1.1", - "_inBundle": false, - "_integrity": "sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=", - "_location": "/ansi-dim", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-dim@^0.1.1", - "name": "ansi-dim", - "escapedName": "ansi-dim", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-dim/-/ansi-dim-0.1.1.tgz", - "_shasum": "40de4c603aa8086d8e7a86b8ff998d5c36eefd6c", - "_spec": "ansi-dim@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-dim/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color dim, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-dim", - "keywords": [ - "dim", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-dim", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-dim.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-dim/readme.md b/node_modules/ansi-dim/readme.md deleted file mode 100644 index d8038ae84..000000000 --- a/node_modules/ansi-dim/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-dim [![NPM version](https://badge.fury.io/js/ansi-dim.svg)](http://badge.fury.io/js/ansi-dim) - -> The color dim, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-dim --save -``` - -## Usage - -```js -var dim = require('ansi-dim'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-dim/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-gray/LICENSE b/node_modules/ansi-gray/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-gray/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-gray/index.js b/node_modules/ansi-gray/index.js deleted file mode 100644 index c22176a3d..000000000 --- a/node_modules/ansi-gray/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-gray - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function gray(message) { - return wrap(90, 39, message); -}; diff --git a/node_modules/ansi-gray/package.json b/node_modules/ansi-gray/package.json deleted file mode 100644 index ae192863d..000000000 --- a/node_modules/ansi-gray/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-gray@^0.1.1", - "_id": "ansi-gray@0.1.1", - "_inBundle": false, - "_integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "_location": "/ansi-gray", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-gray@^0.1.1", - "name": "ansi-gray", - "escapedName": "ansi-gray", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "_shasum": "2962cf54ec9792c48510a3deb524436861ef7251", - "_spec": "ansi-gray@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-gray/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color gray, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-gray", - "keywords": [ - "gray", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-gray", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-gray.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-gray/readme.md b/node_modules/ansi-gray/readme.md deleted file mode 100644 index 9b59a29a1..000000000 --- a/node_modules/ansi-gray/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-gray [![NPM version](https://badge.fury.io/js/ansi-gray.svg)](http://badge.fury.io/js/ansi-gray) - -> The color gray, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-gray --save -``` - -## Usage - -```js -var gray = require('ansi-gray'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-gray/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-green/LICENSE b/node_modules/ansi-green/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-green/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-green/index.js b/node_modules/ansi-green/index.js deleted file mode 100644 index 1a741e58a..000000000 --- a/node_modules/ansi-green/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-green - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function green(message) { - return wrap(32, 39, message); -}; diff --git a/node_modules/ansi-green/package.json b/node_modules/ansi-green/package.json deleted file mode 100644 index d2731bb4e..000000000 --- a/node_modules/ansi-green/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_from": "ansi-green@^0.1.1", - "_id": "ansi-green@0.1.1", - "_inBundle": false, - "_integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=", - "_location": "/ansi-green", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-green@^0.1.1", - "name": "ansi-green", - "escapedName": "ansi-green", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-ok", - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", - "_shasum": "8a5d9a979e458d57c40e33580b37390b8e10d0f7", - "_spec": "ansi-green@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-green/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color green, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-green", - "keywords": [ - "green", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-green", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-green.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-green/readme.md b/node_modules/ansi-green/readme.md deleted file mode 100644 index 4b9c7ab96..000000000 --- a/node_modules/ansi-green/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-green [![NPM version](https://badge.fury.io/js/ansi-green.svg)](http://badge.fury.io/js/ansi-green) - -> The color green, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-green --save -``` - -## Usage - -```js -var green = require('ansi-green'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-green/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-grey/LICENSE b/node_modules/ansi-grey/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-grey/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-grey/index.js b/node_modules/ansi-grey/index.js deleted file mode 100644 index 45e73022d..000000000 --- a/node_modules/ansi-grey/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-grey - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function grey(message) { - return wrap(90, 39, message); -}; diff --git a/node_modules/ansi-grey/package.json b/node_modules/ansi-grey/package.json deleted file mode 100644 index c8082b8bd..000000000 --- a/node_modules/ansi-grey/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-grey@^0.1.1", - "_id": "ansi-grey@0.1.1", - "_inBundle": false, - "_integrity": "sha1-WdmLasK6GfilF5jphT+6eDOaM8E=", - "_location": "/ansi-grey", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-grey@^0.1.1", - "name": "ansi-grey", - "escapedName": "ansi-grey", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-grey/-/ansi-grey-0.1.1.tgz", - "_shasum": "59d98b6ac2ba19f8a51798e9853fba78339a33c1", - "_spec": "ansi-grey@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-grey/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color grey, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-grey", - "keywords": [ - "grey", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-grey", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-grey.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-grey/readme.md b/node_modules/ansi-grey/readme.md deleted file mode 100644 index 1d2701806..000000000 --- a/node_modules/ansi-grey/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-grey [![NPM version](https://badge.fury.io/js/ansi-grey.svg)](http://badge.fury.io/js/ansi-grey) - -> The color grey, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-grey --save -``` - -## Usage - -```js -var grey = require('ansi-grey'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-grey/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-hidden/LICENSE b/node_modules/ansi-hidden/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-hidden/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-hidden/index.js b/node_modules/ansi-hidden/index.js deleted file mode 100644 index e220a9cc0..000000000 --- a/node_modules/ansi-hidden/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-hidden - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function hidden(message) { - return wrap(8, 28, message); -}; diff --git a/node_modules/ansi-hidden/package.json b/node_modules/ansi-hidden/package.json deleted file mode 100644 index e6dc84795..000000000 --- a/node_modules/ansi-hidden/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-hidden@^0.1.1", - "_id": "ansi-hidden@0.1.1", - "_inBundle": false, - "_integrity": "sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=", - "_location": "/ansi-hidden", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-hidden@^0.1.1", - "name": "ansi-hidden", - "escapedName": "ansi-hidden", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-hidden/-/ansi-hidden-0.1.1.tgz", - "_shasum": "ed6a4c498d2bb7cbb289dbf2a8d1dcc8567fae0f", - "_spec": "ansi-hidden@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-hidden/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color hidden, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-hidden", - "keywords": [ - "hidden", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-hidden", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-hidden.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-hidden/readme.md b/node_modules/ansi-hidden/readme.md deleted file mode 100644 index e646072cd..000000000 --- a/node_modules/ansi-hidden/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-hidden [![NPM version](https://badge.fury.io/js/ansi-hidden.svg)](http://badge.fury.io/js/ansi-hidden) - -> The color hidden, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-hidden --save -``` - -## Usage - -```js -var hidden = require('ansi-hidden'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-hidden/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-inverse/LICENSE b/node_modules/ansi-inverse/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-inverse/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-inverse/index.js b/node_modules/ansi-inverse/index.js deleted file mode 100644 index 2db93adae..000000000 --- a/node_modules/ansi-inverse/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-inverse - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function inverse(message) { - return wrap(7, 27, message); -}; diff --git a/node_modules/ansi-inverse/package.json b/node_modules/ansi-inverse/package.json deleted file mode 100644 index 26ffb78a4..000000000 --- a/node_modules/ansi-inverse/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-inverse@^0.1.1", - "_id": "ansi-inverse@0.1.1", - "_inBundle": false, - "_integrity": "sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=", - "_location": "/ansi-inverse", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-inverse@^0.1.1", - "name": "ansi-inverse", - "escapedName": "ansi-inverse", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-inverse/-/ansi-inverse-0.1.1.tgz", - "_shasum": "b6af45826fe826bfb528a6c79885794355ccd269", - "_spec": "ansi-inverse@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-inverse/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color inverse, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-inverse", - "keywords": [ - "inverse", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-inverse", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-inverse.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-inverse/readme.md b/node_modules/ansi-inverse/readme.md deleted file mode 100644 index 3cc6cf23a..000000000 --- a/node_modules/ansi-inverse/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-inverse [![NPM version](https://badge.fury.io/js/ansi-inverse.svg)](http://badge.fury.io/js/ansi-inverse) - -> The color inverse, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-inverse --save -``` - -## Usage - -```js -var inverse = require('ansi-inverse'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-inverse/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-italic/LICENSE b/node_modules/ansi-italic/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-italic/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-italic/index.js b/node_modules/ansi-italic/index.js deleted file mode 100644 index 90e011631..000000000 --- a/node_modules/ansi-italic/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-italic - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function italic(message) { - return wrap(3, 23, message); -}; diff --git a/node_modules/ansi-italic/package.json b/node_modules/ansi-italic/package.json deleted file mode 100644 index c4266ff23..000000000 --- a/node_modules/ansi-italic/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-italic@^0.1.1", - "_id": "ansi-italic@0.1.1", - "_inBundle": false, - "_integrity": "sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=", - "_location": "/ansi-italic", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-italic@^0.1.1", - "name": "ansi-italic", - "escapedName": "ansi-italic", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-italic/-/ansi-italic-0.1.1.tgz", - "_shasum": "104743463f625c142a036739cf85eda688986f23", - "_spec": "ansi-italic@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-italic/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color italic, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-italic", - "keywords": [ - "italic", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-italic", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-italic.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-italic/readme.md b/node_modules/ansi-italic/readme.md deleted file mode 100644 index 17e7450f1..000000000 --- a/node_modules/ansi-italic/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-italic [![NPM version](https://badge.fury.io/js/ansi-italic.svg)](http://badge.fury.io/js/ansi-italic) - -> The color italic, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-italic --save -``` - -## Usage - -```js -var italic = require('ansi-italic'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-italic/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-magenta/LICENSE b/node_modules/ansi-magenta/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-magenta/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-magenta/index.js b/node_modules/ansi-magenta/index.js deleted file mode 100644 index bbce5e0b4..000000000 --- a/node_modules/ansi-magenta/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-magenta - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function magenta(message) { - return wrap(35, 39, message); -}; diff --git a/node_modules/ansi-magenta/package.json b/node_modules/ansi-magenta/package.json deleted file mode 100644 index 5b0fd5ac6..000000000 --- a/node_modules/ansi-magenta/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-magenta@^0.1.1", - "_id": "ansi-magenta@0.1.1", - "_inBundle": false, - "_integrity": "sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=", - "_location": "/ansi-magenta", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-magenta@^0.1.1", - "name": "ansi-magenta", - "escapedName": "ansi-magenta", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-magenta/-/ansi-magenta-0.1.1.tgz", - "_shasum": "063b5ba16fb3f23e1cfda2b07c0a89de11e430ae", - "_spec": "ansi-magenta@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-magenta/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color magenta, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-magenta", - "keywords": [ - "magenta", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-magenta", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-magenta.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-magenta/readme.md b/node_modules/ansi-magenta/readme.md deleted file mode 100644 index 5ef9e6785..000000000 --- a/node_modules/ansi-magenta/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-magenta [![NPM version](https://badge.fury.io/js/ansi-magenta.svg)](http://badge.fury.io/js/ansi-magenta) - -> The color magenta, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-magenta --save -``` - -## Usage - -```js -var magenta = require('ansi-magenta'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-magenta/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-red/LICENSE b/node_modules/ansi-red/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-red/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-red/index.js b/node_modules/ansi-red/index.js deleted file mode 100644 index 00ea30283..000000000 --- a/node_modules/ansi-red/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-red - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function red(message) { - return wrap(31, 39, message); -}; diff --git a/node_modules/ansi-red/package.json b/node_modules/ansi-red/package.json deleted file mode 100644 index ad4fabd3b..000000000 --- a/node_modules/ansi-red/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-red@^0.1.1", - "_id": "ansi-red@0.1.1", - "_inBundle": false, - "_integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "_location": "/ansi-red", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-red@^0.1.1", - "name": "ansi-red", - "escapedName": "ansi-red", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "_shasum": "8c638f9d1080800a353c9c28c8a81ca4705d946c", - "_spec": "ansi-red@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-red/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color red, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-red", - "keywords": [ - "red", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-red", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-red.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-red/readme.md b/node_modules/ansi-red/readme.md deleted file mode 100644 index e09e77b3e..000000000 --- a/node_modules/ansi-red/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-red [![NPM version](https://badge.fury.io/js/ansi-red.svg)](http://badge.fury.io/js/ansi-red) - -> The color red, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-red --save -``` - -## Usage - -```js -var red = require('ansi-red'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-red/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-reset/LICENSE b/node_modules/ansi-reset/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-reset/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-reset/index.js b/node_modules/ansi-reset/index.js deleted file mode 100644 index 808b00f0d..000000000 --- a/node_modules/ansi-reset/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-reset - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function reset(message) { - return wrap(0, 0, message); -}; diff --git a/node_modules/ansi-reset/package.json b/node_modules/ansi-reset/package.json deleted file mode 100644 index 223c523df..000000000 --- a/node_modules/ansi-reset/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-reset@^0.1.1", - "_id": "ansi-reset@0.1.1", - "_inBundle": false, - "_integrity": "sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=", - "_location": "/ansi-reset", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-reset@^0.1.1", - "name": "ansi-reset", - "escapedName": "ansi-reset", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-reset/-/ansi-reset-0.1.1.tgz", - "_shasum": "e7e71292c3c7ddcd4d62ef4a6c7c05980911c3b7", - "_spec": "ansi-reset@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-reset/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color reset, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-reset", - "keywords": [ - "reset", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-reset", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-reset.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-reset/readme.md b/node_modules/ansi-reset/readme.md deleted file mode 100644 index 992ba57a9..000000000 --- a/node_modules/ansi-reset/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-reset [![NPM version](https://badge.fury.io/js/ansi-reset.svg)](http://badge.fury.io/js/ansi-reset) - -> The color reset, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-reset --save -``` - -## Usage - -```js -var reset = require('ansi-reset'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-reset/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-strikethrough/LICENSE b/node_modules/ansi-strikethrough/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-strikethrough/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-strikethrough/index.js b/node_modules/ansi-strikethrough/index.js deleted file mode 100644 index 39df3cc50..000000000 --- a/node_modules/ansi-strikethrough/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-strikethrough - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function strikethrough(message) { - return wrap(9, 29, message); -}; diff --git a/node_modules/ansi-strikethrough/package.json b/node_modules/ansi-strikethrough/package.json deleted file mode 100644 index 8868a0d8d..000000000 --- a/node_modules/ansi-strikethrough/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-strikethrough@^0.1.1", - "_id": "ansi-strikethrough@0.1.1", - "_inBundle": false, - "_integrity": "sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=", - "_location": "/ansi-strikethrough", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-strikethrough@^0.1.1", - "name": "ansi-strikethrough", - "escapedName": "ansi-strikethrough", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz", - "_shasum": "d84877140b2cff07d1c93ebce69904f68885e568", - "_spec": "ansi-strikethrough@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-strikethrough/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color strikethrough, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-strikethrough", - "keywords": [ - "strikethrough", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-strikethrough", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-strikethrough.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-strikethrough/readme.md b/node_modules/ansi-strikethrough/readme.md deleted file mode 100644 index 78f63c007..000000000 --- a/node_modules/ansi-strikethrough/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-strikethrough [![NPM version](https://badge.fury.io/js/ansi-strikethrough.svg)](http://badge.fury.io/js/ansi-strikethrough) - -> The color strikethrough, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-strikethrough --save -``` - -## Usage - -```js -var strikethrough = require('ansi-strikethrough'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-strikethrough/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-underline/LICENSE b/node_modules/ansi-underline/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-underline/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-underline/index.js b/node_modules/ansi-underline/index.js deleted file mode 100644 index 40842b16e..000000000 --- a/node_modules/ansi-underline/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-underline - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function underline(message) { - return wrap(4, 24, message); -}; diff --git a/node_modules/ansi-underline/package.json b/node_modules/ansi-underline/package.json deleted file mode 100644 index 0aaf394aa..000000000 --- a/node_modules/ansi-underline/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-underline@^0.1.1", - "_id": "ansi-underline@0.1.1", - "_inBundle": false, - "_integrity": "sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=", - "_location": "/ansi-underline", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-underline@^0.1.1", - "name": "ansi-underline", - "escapedName": "ansi-underline", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-underline/-/ansi-underline-0.1.1.tgz", - "_shasum": "dfc920f4c97b5977ea162df8ffb988308aaa71a4", - "_spec": "ansi-underline@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-underline/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color underline, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-underline", - "keywords": [ - "underline", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-underline", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-underline.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-underline/readme.md b/node_modules/ansi-underline/readme.md deleted file mode 100644 index ad279c949..000000000 --- a/node_modules/ansi-underline/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-underline [![NPM version](https://badge.fury.io/js/ansi-underline.svg)](http://badge.fury.io/js/ansi-underline) - -> The color underline, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-underline --save -``` - -## Usage - -```js -var underline = require('ansi-underline'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-underline/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-white/LICENSE b/node_modules/ansi-white/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-white/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-white/index.js b/node_modules/ansi-white/index.js deleted file mode 100644 index f262a33e9..000000000 --- a/node_modules/ansi-white/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-white - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function white(message) { - return wrap(37, 39, message); -}; diff --git a/node_modules/ansi-white/package.json b/node_modules/ansi-white/package.json deleted file mode 100644 index bb371d966..000000000 --- a/node_modules/ansi-white/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-white@^0.1.1", - "_id": "ansi-white@0.1.1", - "_inBundle": false, - "_integrity": "sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=", - "_location": "/ansi-white", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-white@^0.1.1", - "name": "ansi-white", - "escapedName": "ansi-white", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-white/-/ansi-white-0.1.1.tgz", - "_shasum": "9c77b7c193c5ee992e6011d36ec4c921b4578944", - "_spec": "ansi-white@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-white/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color white, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-white", - "keywords": [ - "white", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-white", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-white.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-white/readme.md b/node_modules/ansi-white/readme.md deleted file mode 100644 index ce1aa5dbe..000000000 --- a/node_modules/ansi-white/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-white [![NPM version](https://badge.fury.io/js/ansi-white.svg)](http://badge.fury.io/js/ansi-white) - -> The color white, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-white --save -``` - -## Usage - -```js -var white = require('ansi-white'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-white/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-wrap/LICENSE b/node_modules/ansi-wrap/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/ansi-wrap/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-wrap/README.md b/node_modules/ansi-wrap/README.md deleted file mode 100644 index 032c1e6b2..000000000 --- a/node_modules/ansi-wrap/README.md +++ /dev/null @@ -1,89 +0,0 @@ -# ansi-wrap [![NPM version](https://badge.fury.io/js/ansi-wrap.svg)](http://badge.fury.io/js/ansi-wrap) - -> Create ansi colors by passing the open and close codes. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-wrap --save -``` - -## Usage - -```js -var wrap = require('ansi-wrap'); -``` - -**Example** - -Pass codes for [ansi magenta background](https://github.com/jonschlinkert/ansi-bgmagenta): - -```js -console.log(wrap(45, 49, 'This is a message...')); -//=> '\u001b[45mfoo\u001b[49m' -``` - -Which prints out... - -[![screen shot 2015-05-21 at 8 28 32 pm](https://cloud.githubusercontent.com/assets/383994/7761769/12488afa-fff8-11e4-9cc1-71a8a6ec14a4.png)](https://www.npmjs.com/) - -## Related projects - -This is used in these projects: - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-wrap/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/ansi-wrap/index.js b/node_modules/ansi-wrap/index.js deleted file mode 100644 index ffc52d75c..000000000 --- a/node_modules/ansi-wrap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -module.exports = function(a, b, msg) { - return '\u001b['+ a + 'm' + msg + '\u001b[' + b + 'm'; -}; diff --git a/node_modules/ansi-wrap/package.json b/node_modules/ansi-wrap/package.json deleted file mode 100644 index dca308d83..000000000 --- a/node_modules/ansi-wrap/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_from": "ansi-wrap@0.1.0", - "_id": "ansi-wrap@0.1.0", - "_inBundle": false, - "_integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "_location": "/ansi-wrap", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "ansi-wrap@0.1.0", - "name": "ansi-wrap", - "escapedName": "ansi-wrap", - "rawSpec": "0.1.0", - "saveSpec": null, - "fetchSpec": "0.1.0" - }, - "_requiredBy": [ - "/ansi-bgblack", - "/ansi-bgblue", - "/ansi-bgcyan", - "/ansi-bggreen", - "/ansi-bgmagenta", - "/ansi-bgred", - "/ansi-bgwhite", - "/ansi-bgyellow", - "/ansi-black", - "/ansi-blue", - "/ansi-bold", - "/ansi-cyan", - "/ansi-dim", - "/ansi-gray", - "/ansi-green", - "/ansi-grey", - "/ansi-hidden", - "/ansi-inverse", - "/ansi-italic", - "/ansi-magenta", - "/ansi-red", - "/ansi-reset", - "/ansi-strikethrough", - "/ansi-underline", - "/ansi-white", - "/ansi-yellow" - ], - "_resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "_shasum": "a82250ddb0015e9a27ca82e82ea603bbfa45efaf", - "_spec": "ansi-wrap@0.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\ansi-bgblack", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-wrap/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "Create ansi colors by passing the open and close codes.", - "devDependencies": {}, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-wrap", - "keywords": [], - "license": { - "type": "MIT", - "url": "https://github.com/jonschlinkert/ansi-wrap/blob/master/LICENSE" - }, - "main": "index.js", - "name": "ansi-wrap", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-wrap.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.0" -} diff --git a/node_modules/ansi-yellow/LICENSE b/node_modules/ansi-yellow/LICENSE deleted file mode 100644 index 41283c9f7..000000000 --- a/node_modules/ansi-yellow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= year() %>, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-yellow/index.js b/node_modules/ansi-yellow/index.js deleted file mode 100644 index 53999c78f..000000000 --- a/node_modules/ansi-yellow/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * ansi-yellow - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var wrap = require('ansi-wrap'); - -module.exports = function yellow(message) { - return wrap(33, 39, message); -}; diff --git a/node_modules/ansi-yellow/package.json b/node_modules/ansi-yellow/package.json deleted file mode 100644 index 9cbbdd90d..000000000 --- a/node_modules/ansi-yellow/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "ansi-yellow@^0.1.1", - "_id": "ansi-yellow@0.1.1", - "_inBundle": false, - "_integrity": "sha1-y5NW8vRscy8OMZnmEClVp32oPB0=", - "_location": "/ansi-yellow", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-yellow@^0.1.1", - "name": "ansi-yellow", - "escapedName": "ansi-yellow", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/log-utils/ansi-colors" - ], - "_resolved": "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz", - "_shasum": "cb9356f2f46c732f0e3199e6102955a77da83c1d", - "_spec": "ansi-yellow@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils\\node_modules\\ansi-colors", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/ansi-yellow/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "deprecated": false, - "description": "The color yellow, in ansi.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/ansi-yellow", - "keywords": [ - "yellow", - "256", - "ansi", - "cli", - "color", - "colors", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "ansi-yellow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/ansi-yellow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/ansi-yellow/readme.md b/node_modules/ansi-yellow/readme.md deleted file mode 100644 index f3fa43e02..000000000 --- a/node_modules/ansi-yellow/readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# ansi-yellow [![NPM version](https://badge.fury.io/js/ansi-yellow.svg)](http://badge.fury.io/js/ansi-yellow) - -> The color yellow, in ansi. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i ansi-yellow --save -``` - -## Usage - -```js -var yellow = require('ansi-yellow'); -``` - -## Related projects - -* [ansi-reset](https://github.com/jonschlinkert/ansi-reset) -* [ansi-bold](https://github.com/jonschlinkert/ansi-bold) -* [ansi-dim](https://github.com/jonschlinkert/ansi-dim) -* [ansi-italic](https://github.com/jonschlinkert/ansi-italic) -* [ansi-underline](https://github.com/jonschlinkert/ansi-underline) -* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse) -* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden) -* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough) -* [ansi-black](https://github.com/jonschlinkert/ansi-black) -* [ansi-red](https://github.com/jonschlinkert/ansi-red) -* [ansi-green](https://github.com/jonschlinkert/ansi-green) -* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow) -* [ansi-blue](https://github.com/jonschlinkert/ansi-blue) -* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta) -* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan) -* [ansi-white](https://github.com/jonschlinkert/ansi-white) -* [ansi-gray](https://github.com/jonschlinkert/ansi-gray) -* [ansi-grey](https://github.com/jonschlinkert/ansi-grey) -* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack) -* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred) -* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen) -* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow) -* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue) -* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta) -* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan) -* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-yellow/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._ \ No newline at end of file diff --git a/node_modules/argparse/CHANGELOG.md b/node_modules/argparse/CHANGELOG.md deleted file mode 100644 index a43c628cc..000000000 --- a/node_modules/argparse/CHANGELOG.md +++ /dev/null @@ -1,185 +0,0 @@ -1.0.10 / 2018-02-15 ------------------- - -- Use .concat instead of + for arrays, #122. - - -1.0.9 / 2016-09-29 ------------------- - -- Rerelease after 1.0.8 - deps cleanup. - - -1.0.8 / 2016-09-29 ------------------- - -- Maintenance (deps bump, fix node 6.5+ tests, coverage report). - - -1.0.7 / 2016-03-17 ------------------- - -- Teach `addArgument` to accept string arg names. #97, @tomxtobin. - - -1.0.6 / 2016-02-06 ------------------- - -- Maintenance: moved to eslint & updated CS. - - -1.0.5 / 2016-02-05 ------------------- - -- Removed lodash dependency to significantly reduce install size. - Thanks to @mourner. - - -1.0.4 / 2016-01-17 ------------------- - -- Maintenance: lodash update to 4.0.0. - - -1.0.3 / 2015-10-27 ------------------- - -- Fix parse `=` in args: `--examplepath="C:\myfolder\env=x64"`. #84, @CatWithApple. - - -1.0.2 / 2015-03-22 ------------------- - -- Relaxed lodash version dependency. - - -1.0.1 / 2015-02-20 ------------------- - -- Changed dependencies to be compatible with ancient nodejs. - - -1.0.0 / 2015-02-19 ------------------- - -- Maintenance release. -- Replaced `underscore` with `lodash`. -- Bumped version to 1.0.0 to better reflect semver meaning. -- HISTORY.md -> CHANGELOG.md - - -0.1.16 / 2013-12-01 -------------------- - -- Maintenance release. Updated dependencies and docs. - - -0.1.15 / 2013-05-13 -------------------- - -- Fixed #55, @trebor89 - - -0.1.14 / 2013-05-12 -------------------- - -- Fixed #62, @maxtaco - - -0.1.13 / 2013-04-08 -------------------- - -- Added `.npmignore` to reduce package size - - -0.1.12 / 2013-02-10 -------------------- - -- Fixed conflictHandler (#46), @hpaulj - - -0.1.11 / 2013-02-07 -------------------- - -- Multiple bugfixes, @hpaulj -- Added 70+ tests (ported from python), @hpaulj -- Added conflictHandler, @applepicke -- Added fromfilePrefixChar, @hpaulj - - -0.1.10 / 2012-12-30 -------------------- - -- Added [mutual exclusion](http://docs.python.org/dev/library/argparse.html#mutual-exclusion) - support, thanks to @hpaulj -- Fixed options check for `storeConst` & `appendConst` actions, thanks to @hpaulj - - -0.1.9 / 2012-12-27 ------------------- - -- Fixed option dest interferens with other options (issue #23), thanks to @hpaulj -- Fixed default value behavior with `*` positionals, thanks to @hpaulj -- Improve `getDefault()` behavior, thanks to @hpaulj -- Imrove negative argument parsing, thanks to @hpaulj - - -0.1.8 / 2012-12-01 ------------------- - -- Fixed parser parents (issue #19), thanks to @hpaulj -- Fixed negative argument parse (issue #20), thanks to @hpaulj - - -0.1.7 / 2012-10-14 ------------------- - -- Fixed 'choices' argument parse (issue #16) -- Fixed stderr output (issue #15) - - -0.1.6 / 2012-09-09 ------------------- - -- Fixed check for conflict of options (thanks to @tomxtobin) - - -0.1.5 / 2012-09-03 ------------------- - -- Fix parser #setDefaults method (thanks to @tomxtobin) - - -0.1.4 / 2012-07-30 ------------------- - -- Fixed pseudo-argument support (thanks to @CGamesPlay) -- Fixed addHelp default (should be true), if not set (thanks to @benblank) - - -0.1.3 / 2012-06-27 ------------------- - -- Fixed formatter api name: Formatter -> HelpFormatter - - -0.1.2 / 2012-05-29 ------------------- - -- Added basic tests -- Removed excess whitespace in help -- Fixed error reporting, when parcer with subcommands - called with empty arguments - - -0.1.1 / 2012-05-23 ------------------- - -- Fixed line wrapping in help formatter -- Added better error reporting on invalid arguments - - -0.1.0 / 2012-05-16 ------------------- - -- First release. diff --git a/node_modules/argparse/LICENSE b/node_modules/argparse/LICENSE deleted file mode 100644 index 1afdae558..000000000 --- a/node_modules/argparse/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -(The MIT License) - -Copyright (C) 2012 by Vitaly Puzrin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/argparse/README.md b/node_modules/argparse/README.md deleted file mode 100644 index 7fa6c4050..000000000 --- a/node_modules/argparse/README.md +++ /dev/null @@ -1,257 +0,0 @@ -argparse -======== - -[![Build Status](https://secure.travis-ci.org/nodeca/argparse.svg?branch=master)](http://travis-ci.org/nodeca/argparse) -[![NPM version](https://img.shields.io/npm/v/argparse.svg)](https://www.npmjs.org/package/argparse) - -CLI arguments parser for node.js. Javascript port of python's -[argparse](http://docs.python.org/dev/library/argparse.html) module -(original version 3.2). That's a full port, except some very rare options, -recorded in issue tracker. - -**NB. Difference with original.** - -- Method names changed to camelCase. See [generated docs](http://nodeca.github.com/argparse/). -- Use `defaultValue` instead of `default`. -- Use `argparse.Const.REMAINDER` instead of `argparse.REMAINDER`, and - similarly for constant values `OPTIONAL`, `ZERO_OR_MORE`, and `ONE_OR_MORE` - (aliases for `nargs` values `'?'`, `'*'`, `'+'`, respectively), and - `SUPPRESS`. - - -Example -======= - -test.js file: - -```javascript -#!/usr/bin/env node -'use strict'; - -var ArgumentParser = require('../lib/argparse').ArgumentParser; -var parser = new ArgumentParser({ - version: '0.0.1', - addHelp:true, - description: 'Argparse example' -}); -parser.addArgument( - [ '-f', '--foo' ], - { - help: 'foo bar' - } -); -parser.addArgument( - [ '-b', '--bar' ], - { - help: 'bar foo' - } -); -parser.addArgument( - '--baz', - { - help: 'baz bar' - } -); -var args = parser.parseArgs(); -console.dir(args); -``` - -Display help: - -``` -$ ./test.js -h -usage: example.js [-h] [-v] [-f FOO] [-b BAR] [--baz BAZ] - -Argparse example - -Optional arguments: - -h, --help Show this help message and exit. - -v, --version Show program's version number and exit. - -f FOO, --foo FOO foo bar - -b BAR, --bar BAR bar foo - --baz BAZ baz bar -``` - -Parse arguments: - -``` -$ ./test.js -f=3 --bar=4 --baz 5 -{ foo: '3', bar: '4', baz: '5' } -``` - -More [examples](https://github.com/nodeca/argparse/tree/master/examples). - - -ArgumentParser objects -====================== - -``` -new ArgumentParser({parameters hash}); -``` - -Creates a new ArgumentParser object. - -**Supported params:** - -- ```description``` - Text to display before the argument help. -- ```epilog``` - Text to display after the argument help. -- ```addHelp``` - Add a -h/–help option to the parser. (default: true) -- ```argumentDefault``` - Set the global default value for arguments. (default: null) -- ```parents``` - A list of ArgumentParser objects whose arguments should also be included. -- ```prefixChars``` - The set of characters that prefix optional arguments. (default: ‘-‘) -- ```formatterClass``` - A class for customizing the help output. -- ```prog``` - The name of the program (default: `path.basename(process.argv[1])`) -- ```usage``` - The string describing the program usage (default: generated) -- ```conflictHandler``` - Usually unnecessary, defines strategy for resolving conflicting optionals. - -**Not supported yet** - -- ```fromfilePrefixChars``` - The set of characters that prefix files from which additional arguments should be read. - - -Details in [original ArgumentParser guide](http://docs.python.org/dev/library/argparse.html#argumentparser-objects) - - -addArgument() method -==================== - -``` -ArgumentParser.addArgument(name or flag or [name] or [flags...], {options}) -``` - -Defines how a single command-line argument should be parsed. - -- ```name or flag or [name] or [flags...]``` - Either a positional name - (e.g., `'foo'`), a single option (e.g., `'-f'` or `'--foo'`), an array - of a single positional name (e.g., `['foo']`), or an array of options - (e.g., `['-f', '--foo']`). - -Options: - -- ```action``` - The basic type of action to be taken when this argument is encountered at the command line. -- ```nargs```- The number of command-line arguments that should be consumed. -- ```constant``` - A constant value required by some action and nargs selections. -- ```defaultValue``` - The value produced if the argument is absent from the command line. -- ```type``` - The type to which the command-line argument should be converted. -- ```choices``` - A container of the allowable values for the argument. -- ```required``` - Whether or not the command-line option may be omitted (optionals only). -- ```help``` - A brief description of what the argument does. -- ```metavar``` - A name for the argument in usage messages. -- ```dest``` - The name of the attribute to be added to the object returned by parseArgs(). - -Details in [original add_argument guide](http://docs.python.org/dev/library/argparse.html#the-add-argument-method) - - -Action (some details) -================ - -ArgumentParser objects associate command-line arguments with actions. -These actions can do just about anything with the command-line arguments associated -with them, though most actions simply add an attribute to the object returned by -parseArgs(). The action keyword argument specifies how the command-line arguments -should be handled. The supported actions are: - -- ```store``` - Just stores the argument’s value. This is the default action. -- ```storeConst``` - Stores value, specified by the const keyword argument. - (Note that the const keyword argument defaults to the rather unhelpful None.) - The 'storeConst' action is most commonly used with optional arguments, that - specify some sort of flag. -- ```storeTrue``` and ```storeFalse``` - Stores values True and False - respectively. These are special cases of 'storeConst'. -- ```append``` - Stores a list, and appends each argument value to the list. - This is useful to allow an option to be specified multiple times. -- ```appendConst``` - Stores a list, and appends value, specified by the - const keyword argument to the list. (Note, that the const keyword argument defaults - is None.) The 'appendConst' action is typically used when multiple arguments need - to store constants to the same list. -- ```count``` - Counts the number of times a keyword argument occurs. For example, - used for increasing verbosity levels. -- ```help``` - Prints a complete help message for all the options in the current - parser and then exits. By default a help action is automatically added to the parser. - See ArgumentParser for details of how the output is created. -- ```version``` - Prints version information and exit. Expects a `version=` - keyword argument in the addArgument() call. - -Details in [original action guide](http://docs.python.org/dev/library/argparse.html#action) - - -Sub-commands -============ - -ArgumentParser.addSubparsers() - -Many programs split their functionality into a number of sub-commands, for -example, the svn program can invoke sub-commands like `svn checkout`, `svn update`, -and `svn commit`. Splitting up functionality this way can be a particularly good -idea when a program performs several different functions which require different -kinds of command-line arguments. `ArgumentParser` supports creation of such -sub-commands with `addSubparsers()` method. The `addSubparsers()` method is -normally called with no arguments and returns an special action object. -This object has a single method `addParser()`, which takes a command name and -any `ArgumentParser` constructor arguments, and returns an `ArgumentParser` object -that can be modified as usual. - -Example: - -sub_commands.js -```javascript -#!/usr/bin/env node -'use strict'; - -var ArgumentParser = require('../lib/argparse').ArgumentParser; -var parser = new ArgumentParser({ - version: '0.0.1', - addHelp:true, - description: 'Argparse examples: sub-commands', -}); - -var subparsers = parser.addSubparsers({ - title:'subcommands', - dest:"subcommand_name" -}); - -var bar = subparsers.addParser('c1', {addHelp:true}); -bar.addArgument( - [ '-f', '--foo' ], - { - action: 'store', - help: 'foo3 bar3' - } -); -var bar = subparsers.addParser( - 'c2', - {aliases:['co'], addHelp:true} -); -bar.addArgument( - [ '-b', '--bar' ], - { - action: 'store', - type: 'int', - help: 'foo3 bar3' - } -); - -var args = parser.parseArgs(); -console.dir(args); - -``` - -Details in [original sub-commands guide](http://docs.python.org/dev/library/argparse.html#sub-commands) - - -Contributors -============ - -- [Eugene Shkuropat](https://github.com/shkuropat) -- [Paul Jacobson](https://github.com/hpaulj) - -[others](https://github.com/nodeca/argparse/graphs/contributors) - -License -======= - -Copyright (c) 2012 [Vitaly Puzrin](https://github.com/puzrin). -Released under the MIT license. See -[LICENSE](https://github.com/nodeca/argparse/blob/master/LICENSE) for details. - - diff --git a/node_modules/argparse/index.js b/node_modules/argparse/index.js deleted file mode 100644 index 3bbc14320..000000000 --- a/node_modules/argparse/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./lib/argparse'); diff --git a/node_modules/argparse/lib/action.js b/node_modules/argparse/lib/action.js deleted file mode 100644 index 1483c79ff..000000000 --- a/node_modules/argparse/lib/action.js +++ /dev/null @@ -1,146 +0,0 @@ -/** - * class Action - * - * Base class for all actions - * Do not call in your code, use this class only for inherits your own action - * - * Information about how to convert command line strings to Javascript objects. - * Action objects are used by an ArgumentParser to represent the information - * needed to parse a single argument from one or more strings from the command - * line. The keyword arguments to the Action constructor are also all attributes - * of Action instances. - * - * ##### Allowed keywords: - * - * - `store` - * - `storeConstant` - * - `storeTrue` - * - `storeFalse` - * - `append` - * - `appendConstant` - * - `count` - * - `help` - * - `version` - * - * Information about action options see [[Action.new]] - * - * See also [original guide](http://docs.python.org/dev/library/argparse.html#action) - * - **/ - -'use strict'; - - -// Constants -var c = require('./const'); - - -/** - * new Action(options) - * - * Base class for all actions. Used only for inherits - * - * - * ##### Options: - * - * - `optionStrings` A list of command-line option strings for the action. - * - `dest` Attribute to hold the created object(s) - * - `nargs` The number of command-line arguments that should be consumed. - * By default, one argument will be consumed and a single value will be - * produced. - * - `constant` Default value for an action with no value. - * - `defaultValue` The value to be produced if the option is not specified. - * - `type` Cast to 'string'|'int'|'float'|'complex'|function (string). If - * None, 'string'. - * - `choices` The choices available. - * - `required` True if the action must always be specified at the command - * line. - * - `help` The help describing the argument. - * - `metavar` The name to be used for the option's argument with the help - * string. If None, the 'dest' value will be used as the name. - * - * ##### nargs supported values: - * - * - `N` (an integer) consumes N arguments (and produces a list) - * - `?` consumes zero or one arguments - * - `*` consumes zero or more arguments (and produces a list) - * - `+` consumes one or more arguments (and produces a list) - * - * Note: that the difference between the default and nargs=1 is that with the - * default, a single value will be produced, while with nargs=1, a list - * containing a single value will be produced. - **/ -var Action = module.exports = function Action(options) { - options = options || {}; - this.optionStrings = options.optionStrings || []; - this.dest = options.dest; - this.nargs = typeof options.nargs !== 'undefined' ? options.nargs : null; - this.constant = typeof options.constant !== 'undefined' ? options.constant : null; - this.defaultValue = options.defaultValue; - this.type = typeof options.type !== 'undefined' ? options.type : null; - this.choices = typeof options.choices !== 'undefined' ? options.choices : null; - this.required = typeof options.required !== 'undefined' ? options.required : false; - this.help = typeof options.help !== 'undefined' ? options.help : null; - this.metavar = typeof options.metavar !== 'undefined' ? options.metavar : null; - - if (!(this.optionStrings instanceof Array)) { - throw new Error('optionStrings should be an array'); - } - if (typeof this.required !== 'undefined' && typeof this.required !== 'boolean') { - throw new Error('required should be a boolean'); - } -}; - -/** - * Action#getName -> String - * - * Tells action name - **/ -Action.prototype.getName = function () { - if (this.optionStrings.length > 0) { - return this.optionStrings.join('/'); - } else if (this.metavar !== null && this.metavar !== c.SUPPRESS) { - return this.metavar; - } else if (typeof this.dest !== 'undefined' && this.dest !== c.SUPPRESS) { - return this.dest; - } - return null; -}; - -/** - * Action#isOptional -> Boolean - * - * Return true if optional - **/ -Action.prototype.isOptional = function () { - return !this.isPositional(); -}; - -/** - * Action#isPositional -> Boolean - * - * Return true if positional - **/ -Action.prototype.isPositional = function () { - return (this.optionStrings.length === 0); -}; - -/** - * Action#call(parser, namespace, values, optionString) -> Void - * - parser (ArgumentParser): current parser - * - namespace (Namespace): namespace for output data - * - values (Array): parsed values - * - optionString (Array): input option string(not parsed) - * - * Call the action. Should be implemented in inherited classes - * - * ##### Example - * - * ActionCount.prototype.call = function (parser, namespace, values, optionString) { - * namespace.set(this.dest, (namespace[this.dest] || 0) + 1); - * }; - * - **/ -Action.prototype.call = function () { - throw new Error('.call() not defined');// Not Implemented error -}; diff --git a/node_modules/argparse/lib/action/append.js b/node_modules/argparse/lib/action/append.js deleted file mode 100644 index b5da0de23..000000000 --- a/node_modules/argparse/lib/action/append.js +++ /dev/null @@ -1,53 +0,0 @@ -/*:nodoc:* - * class ActionAppend - * - * This action stores a list, and appends each argument value to the list. - * This is useful to allow an option to be specified multiple times. - * This class inherided from [[Action]] - * - **/ - -'use strict'; - -var util = require('util'); - -var Action = require('../action'); - -// Constants -var c = require('../const'); - -/*:nodoc:* - * new ActionAppend(options) - * - options (object): options hash see [[Action.new]] - * - * Note: options.nargs should be optional for constants - * and more then zero for other - **/ -var ActionAppend = module.exports = function ActionAppend(options) { - options = options || {}; - if (this.nargs <= 0) { - throw new Error('nargs for append actions must be > 0; if arg ' + - 'strings are not supplying the value to append, ' + - 'the append const action may be more appropriate'); - } - if (!!this.constant && this.nargs !== c.OPTIONAL) { - throw new Error('nargs must be OPTIONAL to supply const'); - } - Action.call(this, options); -}; -util.inherits(ActionAppend, Action); - -/*:nodoc:* - * ActionAppend#call(parser, namespace, values, optionString) -> Void - * - parser (ArgumentParser): current parser - * - namespace (Namespace): namespace for output data - * - values (Array): parsed values - * - optionString (Array): input option string(not parsed) - * - * Call the action. Save result in namespace object - **/ -ActionAppend.prototype.call = function (parser, namespace, values) { - var items = (namespace[this.dest] || []).slice(); - items.push(values); - namespace.set(this.dest, items); -}; diff --git a/node_modules/argparse/lib/action/append/constant.js b/node_modules/argparse/lib/action/append/constant.js deleted file mode 100644 index 313f5d2ef..000000000 --- a/node_modules/argparse/lib/action/append/constant.js +++ /dev/null @@ -1,47 +0,0 @@ -/*:nodoc:* - * class ActionAppendConstant - * - * This stores a list, and appends the value specified by - * the const keyword argument to the list. - * (Note that the const keyword argument defaults to null.) - * The 'appendConst' action is typically useful when multiple - * arguments need to store constants to the same list. - * - * This class inherited from [[Action]] - **/ - -'use strict'; - -var util = require('util'); - -var Action = require('../../action'); - -/*:nodoc:* - * new ActionAppendConstant(options) - * - options (object): options hash see [[Action.new]] - * - **/ -var ActionAppendConstant = module.exports = function ActionAppendConstant(options) { - options = options || {}; - options.nargs = 0; - if (typeof options.constant === 'undefined') { - throw new Error('constant option is required for appendAction'); - } - Action.call(this, options); -}; -util.inherits(ActionAppendConstant, Action); - -/*:nodoc:* - * ActionAppendConstant#call(parser, namespace, values, optionString) -> Void - * - parser (ArgumentParser): current parser - * - namespace (Namespace): namespace for output data - * - values (Array): parsed values - * - optionString (Array): input option string(not parsed) - * - * Call the action. Save result in namespace object - **/ -ActionAppendConstant.prototype.call = function (parser, namespace) { - var items = [].concat(namespace[this.dest] || []); - items.push(this.constant); - namespace.set(this.dest, items); -}; diff --git a/node_modules/argparse/lib/action/count.js b/node_modules/argparse/lib/action/count.js deleted file mode 100644 index d6a5899d0..000000000 --- a/node_modules/argparse/lib/action/count.js +++ /dev/null @@ -1,40 +0,0 @@ -/*:nodoc:* - * class ActionCount - * - * This counts the number of times a keyword argument occurs. - * For example, this is useful for increasing verbosity levels - * - * This class inherided from [[Action]] - * - **/ -'use strict'; - -var util = require('util'); - -var Action = require('../action'); - -/*:nodoc:* - * new ActionCount(options) - * - options (object): options hash see [[Action.new]] - * - **/ -var ActionCount = module.exports = function ActionCount(options) { - options = options || {}; - options.nargs = 0; - - Action.call(this, options); -}; -util.inherits(ActionCount, Action); - -/*:nodoc:* - * ActionCount#call(parser, namespace, values, optionString) -> Void - * - parser (ArgumentParser): current parser - * - namespace (Namespace): namespace for output data - * - values (Array): parsed values - * - optionString (Array): input option string(not parsed) - * - * Call the action. Save result in namespace object - **/ -ActionCount.prototype.call = function (parser, namespace) { - namespace.set(this.dest, (namespace[this.dest] || 0) + 1); -}; diff --git a/node_modules/argparse/lib/action/help.js b/node_modules/argparse/lib/action/help.js deleted file mode 100644 index b40e05a6f..000000000 --- a/node_modules/argparse/lib/action/help.js +++ /dev/null @@ -1,47 +0,0 @@ -/*:nodoc:* - * class ActionHelp - * - * Support action for printing help - * This class inherided from [[Action]] - **/ -'use strict'; - -var util = require('util'); - -var Action = require('../action'); - -// Constants -var c = require('../const'); - -/*:nodoc:* - * new ActionHelp(options) - * - options (object): options hash see [[Action.new]] - * - **/ -var ActionHelp = module.exports = function ActionHelp(options) { - options = options || {}; - if (options.defaultValue !== null) { - options.defaultValue = options.defaultValue; - } else { - options.defaultValue = c.SUPPRESS; - } - options.dest = (options.dest !== null ? options.dest : c.SUPPRESS); - options.nargs = 0; - Action.call(this, options); - -}; -util.inherits(ActionHelp, Action); - -/*:nodoc:* - * ActionHelp#call(parser, namespace, values, optionString) - * - parser (ArgumentParser): current parser - * - namespace (Namespace): namespace for output data - * - values (Array): parsed values - * - optionString (Array): input option string(not parsed) - * - * Print help and exit - **/ -ActionHelp.prototype.call = function (parser) { - parser.printHelp(); - parser.exit(); -}; diff --git a/node_modules/argparse/lib/action/store.js b/node_modules/argparse/lib/action/store.js deleted file mode 100644 index 283b86092..000000000 --- a/node_modules/argparse/lib/action/store.js +++ /dev/null @@ -1,50 +0,0 @@ -/*:nodoc:* - * class ActionStore - * - * This action just stores the argument’s value. This is the default action. - * - * This class inherited from [[Action]] - * - **/ -'use strict'; - -var util = require('util'); - -var Action = require('../action'); - -// Constants -var c = require('../const'); - - -/*:nodoc:* - * new ActionStore(options) - * - options (object): options hash see [[Action.new]] - * - **/ -var ActionStore = module.exports = function ActionStore(options) { - options = options || {}; - if (this.nargs <= 0) { - throw new Error('nargs for store actions must be > 0; if you ' + - 'have nothing to store, actions such as store ' + - 'true or store const may be more appropriate'); - - } - if (typeof this.constant !== 'undefined' && this.nargs !== c.OPTIONAL) { - throw new Error('nargs must be OPTIONAL to supply const'); - } - Action.call(this, options); -}; -util.inherits(ActionStore, Action); - -/*:nodoc:* - * ActionStore#call(parser, namespace, values, optionString) -> Void - * - parser (ArgumentParser): current parser - * - namespace (Namespace): namespace for output data - * - values (Array): parsed values - * - optionString (Array): input option string(not parsed) - * - * Call the action. Save result in namespace object - **/ -ActionStore.prototype.call = function (parser, namespace, values) { - namespace.set(this.dest, values); -}; diff --git a/node_modules/argparse/lib/action/store/constant.js b/node_modules/argparse/lib/action/store/constant.js deleted file mode 100644 index 23caa897b..000000000 --- a/node_modules/argparse/lib/action/store/constant.js +++ /dev/null @@ -1,43 +0,0 @@ -/*:nodoc:* - * class ActionStoreConstant - * - * This action stores the value specified by the const keyword argument. - * (Note that the const keyword argument defaults to the rather unhelpful null.) - * The 'store_const' action is most commonly used with optional - * arguments that specify some sort of flag. - * - * This class inherited from [[Action]] - **/ -'use strict'; - -var util = require('util'); - -var Action = require('../../action'); - -/*:nodoc:* - * new ActionStoreConstant(options) - * - options (object): options hash see [[Action.new]] - * - **/ -var ActionStoreConstant = module.exports = function ActionStoreConstant(options) { - options = options || {}; - options.nargs = 0; - if (typeof options.constant === 'undefined') { - throw new Error('constant option is required for storeAction'); - } - Action.call(this, options); -}; -util.inherits(ActionStoreConstant, Action); - -/*:nodoc:* - * ActionStoreConstant#call(parser, namespace, values, optionString) -> Void - * - parser (ArgumentParser): current parser - * - namespace (Namespace): namespace for output data - * - values (Array): parsed values - * - optionString (Array): input option string(not parsed) - * - * Call the action. Save result in namespace object - **/ -ActionStoreConstant.prototype.call = function (parser, namespace) { - namespace.set(this.dest, this.constant); -}; diff --git a/node_modules/argparse/lib/action/store/false.js b/node_modules/argparse/lib/action/store/false.js deleted file mode 100644 index 9924f461d..000000000 --- a/node_modules/argparse/lib/action/store/false.js +++ /dev/null @@ -1,27 +0,0 @@ -/*:nodoc:* - * class ActionStoreFalse - * - * This action store the values False respectively. - * This is special cases of 'storeConst' - * - * This class inherited from [[Action]] - **/ - -'use strict'; - -var util = require('util'); - -var ActionStoreConstant = require('./constant'); - -/*:nodoc:* - * new ActionStoreFalse(options) - * - options (object): hash of options see [[Action.new]] - * - **/ -var ActionStoreFalse = module.exports = function ActionStoreFalse(options) { - options = options || {}; - options.constant = false; - options.defaultValue = options.defaultValue !== null ? options.defaultValue : true; - ActionStoreConstant.call(this, options); -}; -util.inherits(ActionStoreFalse, ActionStoreConstant); diff --git a/node_modules/argparse/lib/action/store/true.js b/node_modules/argparse/lib/action/store/true.js deleted file mode 100644 index 9e22f7d44..000000000 --- a/node_modules/argparse/lib/action/store/true.js +++ /dev/null @@ -1,26 +0,0 @@ -/*:nodoc:* - * class ActionStoreTrue - * - * This action store the values True respectively. - * This isspecial cases of 'storeConst' - * - * This class inherited from [[Action]] - **/ -'use strict'; - -var util = require('util'); - -var ActionStoreConstant = require('./constant'); - -/*:nodoc:* - * new ActionStoreTrue(options) - * - options (object): options hash see [[Action.new]] - * - **/ -var ActionStoreTrue = module.exports = function ActionStoreTrue(options) { - options = options || {}; - options.constant = true; - options.defaultValue = options.defaultValue !== null ? options.defaultValue : false; - ActionStoreConstant.call(this, options); -}; -util.inherits(ActionStoreTrue, ActionStoreConstant); diff --git a/node_modules/argparse/lib/action/subparsers.js b/node_modules/argparse/lib/action/subparsers.js deleted file mode 100644 index 99dfedd0f..000000000 --- a/node_modules/argparse/lib/action/subparsers.js +++ /dev/null @@ -1,149 +0,0 @@ -/** internal - * class ActionSubparsers - * - * Support the creation of such sub-commands with the addSubparsers() - * - * This class inherited from [[Action]] - **/ -'use strict'; - -var util = require('util'); -var format = require('util').format; - - -var Action = require('../action'); - -// Constants -var c = require('../const'); - -// Errors -var argumentErrorHelper = require('../argument/error'); - - -/*:nodoc:* - * new ChoicesPseudoAction(name, help) - * - * Create pseudo action for correct help text - * - **/ -function ChoicesPseudoAction(name, help) { - var options = { - optionStrings: [], - dest: name, - help: help - }; - - Action.call(this, options); -} - -util.inherits(ChoicesPseudoAction, Action); - -/** - * new ActionSubparsers(options) - * - options (object): options hash see [[Action.new]] - * - **/ -function ActionSubparsers(options) { - options = options || {}; - options.dest = options.dest || c.SUPPRESS; - options.nargs = c.PARSER; - - this.debug = (options.debug === true); - - this._progPrefix = options.prog; - this._parserClass = options.parserClass; - this._nameParserMap = {}; - this._choicesActions = []; - - options.choices = this._nameParserMap; - Action.call(this, options); -} - -util.inherits(ActionSubparsers, Action); - -/*:nodoc:* - * ActionSubparsers#addParser(name, options) -> ArgumentParser - * - name (string): sub-command name - * - options (object): see [[ArgumentParser.new]] - * - * Note: - * addParser supports an additional aliases option, - * which allows multiple strings to refer to the same subparser. - * This example, like svn, aliases co as a shorthand for checkout - * - **/ -ActionSubparsers.prototype.addParser = function (name, options) { - var parser; - - var self = this; - - options = options || {}; - - options.debug = (this.debug === true); - - // set program from the existing prefix - if (!options.prog) { - options.prog = this._progPrefix + ' ' + name; - } - - var aliases = options.aliases || []; - - // create a pseudo-action to hold the choice help - if (!!options.help || typeof options.help === 'string') { - var help = options.help; - delete options.help; - - var choiceAction = new ChoicesPseudoAction(name, help); - this._choicesActions.push(choiceAction); - } - - // create the parser and add it to the map - parser = new this._parserClass(options); - this._nameParserMap[name] = parser; - - // make parser available under aliases also - aliases.forEach(function (alias) { - self._nameParserMap[alias] = parser; - }); - - return parser; -}; - -ActionSubparsers.prototype._getSubactions = function () { - return this._choicesActions; -}; - -/*:nodoc:* - * ActionSubparsers#call(parser, namespace, values, optionString) -> Void - * - parser (ArgumentParser): current parser - * - namespace (Namespace): namespace for output data - * - values (Array): parsed values - * - optionString (Array): input option string(not parsed) - * - * Call the action. Parse input aguments - **/ -ActionSubparsers.prototype.call = function (parser, namespace, values) { - var parserName = values[0]; - var argStrings = values.slice(1); - - // set the parser name if requested - if (this.dest !== c.SUPPRESS) { - namespace[this.dest] = parserName; - } - - // select the parser - if (this._nameParserMap[parserName]) { - parser = this._nameParserMap[parserName]; - } else { - throw argumentErrorHelper(format( - 'Unknown parser "%s" (choices: [%s]).', - parserName, - Object.keys(this._nameParserMap).join(', ') - )); - } - - // parse all the remaining options into the namespace - parser.parseArgs(argStrings, namespace); -}; - -module.exports = ActionSubparsers; diff --git a/node_modules/argparse/lib/action/version.js b/node_modules/argparse/lib/action/version.js deleted file mode 100644 index 8053328cd..000000000 --- a/node_modules/argparse/lib/action/version.js +++ /dev/null @@ -1,47 +0,0 @@ -/*:nodoc:* - * class ActionVersion - * - * Support action for printing program version - * This class inherited from [[Action]] - **/ -'use strict'; - -var util = require('util'); - -var Action = require('../action'); - -// -// Constants -// -var c = require('../const'); - -/*:nodoc:* - * new ActionVersion(options) - * - options (object): options hash see [[Action.new]] - * - **/ -var ActionVersion = module.exports = function ActionVersion(options) { - options = options || {}; - options.defaultValue = (options.defaultValue ? options.defaultValue : c.SUPPRESS); - options.dest = (options.dest || c.SUPPRESS); - options.nargs = 0; - this.version = options.version; - Action.call(this, options); -}; -util.inherits(ActionVersion, Action); - -/*:nodoc:* - * ActionVersion#call(parser, namespace, values, optionString) -> Void - * - parser (ArgumentParser): current parser - * - namespace (Namespace): namespace for output data - * - values (Array): parsed values - * - optionString (Array): input option string(not parsed) - * - * Print version and exit - **/ -ActionVersion.prototype.call = function (parser) { - var version = this.version || parser.version; - var formatter = parser._getFormatter(); - formatter.addText(version); - parser.exit(0, formatter.formatHelp()); -}; diff --git a/node_modules/argparse/lib/action_container.js b/node_modules/argparse/lib/action_container.js deleted file mode 100644 index 6f1237bea..000000000 --- a/node_modules/argparse/lib/action_container.js +++ /dev/null @@ -1,482 +0,0 @@ -/** internal - * class ActionContainer - * - * Action container. Parent for [[ArgumentParser]] and [[ArgumentGroup]] - **/ - -'use strict'; - -var format = require('util').format; - -// Constants -var c = require('./const'); - -var $$ = require('./utils'); - -//Actions -var ActionHelp = require('./action/help'); -var ActionAppend = require('./action/append'); -var ActionAppendConstant = require('./action/append/constant'); -var ActionCount = require('./action/count'); -var ActionStore = require('./action/store'); -var ActionStoreConstant = require('./action/store/constant'); -var ActionStoreTrue = require('./action/store/true'); -var ActionStoreFalse = require('./action/store/false'); -var ActionVersion = require('./action/version'); -var ActionSubparsers = require('./action/subparsers'); - -// Errors -var argumentErrorHelper = require('./argument/error'); - -/** - * new ActionContainer(options) - * - * Action container. Parent for [[ArgumentParser]] and [[ArgumentGroup]] - * - * ##### Options: - * - * - `description` -- A description of what the program does - * - `prefixChars` -- Characters that prefix optional arguments - * - `argumentDefault` -- The default value for all arguments - * - `conflictHandler` -- The conflict handler to use for duplicate arguments - **/ -var ActionContainer = module.exports = function ActionContainer(options) { - options = options || {}; - - this.description = options.description; - this.argumentDefault = options.argumentDefault; - this.prefixChars = options.prefixChars || ''; - this.conflictHandler = options.conflictHandler; - - // set up registries - this._registries = {}; - - // register actions - this.register('action', null, ActionStore); - this.register('action', 'store', ActionStore); - this.register('action', 'storeConst', ActionStoreConstant); - this.register('action', 'storeTrue', ActionStoreTrue); - this.register('action', 'storeFalse', ActionStoreFalse); - this.register('action', 'append', ActionAppend); - this.register('action', 'appendConst', ActionAppendConstant); - this.register('action', 'count', ActionCount); - this.register('action', 'help', ActionHelp); - this.register('action', 'version', ActionVersion); - this.register('action', 'parsers', ActionSubparsers); - - // raise an exception if the conflict handler is invalid - this._getHandler(); - - // action storage - this._actions = []; - this._optionStringActions = {}; - - // groups - this._actionGroups = []; - this._mutuallyExclusiveGroups = []; - - // defaults storage - this._defaults = {}; - - // determines whether an "option" looks like a negative number - // -1, -1.5 -5e+4 - this._regexpNegativeNumber = new RegExp('^[-]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$'); - - // whether or not there are any optionals that look like negative - // numbers -- uses a list so it can be shared and edited - this._hasNegativeNumberOptionals = []; -}; - -// Groups must be required, then ActionContainer already defined -var ArgumentGroup = require('./argument/group'); -var MutuallyExclusiveGroup = require('./argument/exclusive'); - -// -// Registration methods -// - -/** - * ActionContainer#register(registryName, value, object) -> Void - * - registryName (String) : object type action|type - * - value (string) : keyword - * - object (Object|Function) : handler - * - * Register handlers - **/ -ActionContainer.prototype.register = function (registryName, value, object) { - this._registries[registryName] = this._registries[registryName] || {}; - this._registries[registryName][value] = object; -}; - -ActionContainer.prototype._registryGet = function (registryName, value, defaultValue) { - if (arguments.length < 3) { - defaultValue = null; - } - return this._registries[registryName][value] || defaultValue; -}; - -// -// Namespace default accessor methods -// - -/** - * ActionContainer#setDefaults(options) -> Void - * - options (object):hash of options see [[Action.new]] - * - * Set defaults - **/ -ActionContainer.prototype.setDefaults = function (options) { - options = options || {}; - for (var property in options) { - if ($$.has(options, property)) { - this._defaults[property] = options[property]; - } - } - - // if these defaults match any existing arguments, replace the previous - // default on the object with the new one - this._actions.forEach(function (action) { - if ($$.has(options, action.dest)) { - action.defaultValue = options[action.dest]; - } - }); -}; - -/** - * ActionContainer#getDefault(dest) -> Mixed - * - dest (string): action destination - * - * Return action default value - **/ -ActionContainer.prototype.getDefault = function (dest) { - var result = $$.has(this._defaults, dest) ? this._defaults[dest] : null; - - this._actions.forEach(function (action) { - if (action.dest === dest && $$.has(action, 'defaultValue')) { - result = action.defaultValue; - } - }); - - return result; -}; -// -// Adding argument actions -// - -/** - * ActionContainer#addArgument(args, options) -> Object - * - args (String|Array): argument key, or array of argument keys - * - options (Object): action objects see [[Action.new]] - * - * #### Examples - * - addArgument([ '-f', '--foo' ], { action: 'store', defaultValue: 1, ... }) - * - addArgument([ 'bar' ], { action: 'store', nargs: 1, ... }) - * - addArgument('--baz', { action: 'store', nargs: 1, ... }) - **/ -ActionContainer.prototype.addArgument = function (args, options) { - args = args; - options = options || {}; - - if (typeof args === 'string') { - args = [ args ]; - } - if (!Array.isArray(args)) { - throw new TypeError('addArgument first argument should be a string or an array'); - } - if (typeof options !== 'object' || Array.isArray(options)) { - throw new TypeError('addArgument second argument should be a hash'); - } - - // if no positional args are supplied or only one is supplied and - // it doesn't look like an option string, parse a positional argument - if (!args || args.length === 1 && this.prefixChars.indexOf(args[0][0]) < 0) { - if (args && !!options.dest) { - throw new Error('dest supplied twice for positional argument'); - } - options = this._getPositional(args, options); - - // otherwise, we're adding an optional argument - } else { - options = this._getOptional(args, options); - } - - // if no default was supplied, use the parser-level default - if (typeof options.defaultValue === 'undefined') { - var dest = options.dest; - if ($$.has(this._defaults, dest)) { - options.defaultValue = this._defaults[dest]; - } else if (typeof this.argumentDefault !== 'undefined') { - options.defaultValue = this.argumentDefault; - } - } - - // create the action object, and add it to the parser - var ActionClass = this._popActionClass(options); - if (typeof ActionClass !== 'function') { - throw new Error(format('Unknown action "%s".', ActionClass)); - } - var action = new ActionClass(options); - - // throw an error if the action type is not callable - var typeFunction = this._registryGet('type', action.type, action.type); - if (typeof typeFunction !== 'function') { - throw new Error(format('"%s" is not callable', typeFunction)); - } - - return this._addAction(action); -}; - -/** - * ActionContainer#addArgumentGroup(options) -> ArgumentGroup - * - options (Object): hash of options see [[ArgumentGroup.new]] - * - * Create new arguments groups - **/ -ActionContainer.prototype.addArgumentGroup = function (options) { - var group = new ArgumentGroup(this, options); - this._actionGroups.push(group); - return group; -}; - -/** - * ActionContainer#addMutuallyExclusiveGroup(options) -> ArgumentGroup - * - options (Object): {required: false} - * - * Create new mutual exclusive groups - **/ -ActionContainer.prototype.addMutuallyExclusiveGroup = function (options) { - var group = new MutuallyExclusiveGroup(this, options); - this._mutuallyExclusiveGroups.push(group); - return group; -}; - -ActionContainer.prototype._addAction = function (action) { - var self = this; - - // resolve any conflicts - this._checkConflict(action); - - // add to actions list - this._actions.push(action); - action.container = this; - - // index the action by any option strings it has - action.optionStrings.forEach(function (optionString) { - self._optionStringActions[optionString] = action; - }); - - // set the flag if any option strings look like negative numbers - action.optionStrings.forEach(function (optionString) { - if (optionString.match(self._regexpNegativeNumber)) { - if (!self._hasNegativeNumberOptionals.some(Boolean)) { - self._hasNegativeNumberOptionals.push(true); - } - } - }); - - // return the created action - return action; -}; - -ActionContainer.prototype._removeAction = function (action) { - var actionIndex = this._actions.indexOf(action); - if (actionIndex >= 0) { - this._actions.splice(actionIndex, 1); - } -}; - -ActionContainer.prototype._addContainerActions = function (container) { - // collect groups by titles - var titleGroupMap = {}; - this._actionGroups.forEach(function (group) { - if (titleGroupMap[group.title]) { - throw new Error(format('Cannot merge actions - two groups are named "%s".', group.title)); - } - titleGroupMap[group.title] = group; - }); - - // map each action to its group - var groupMap = {}; - function actionHash(action) { - // unique (hopefully?) string suitable as dictionary key - return action.getName(); - } - container._actionGroups.forEach(function (group) { - // if a group with the title exists, use that, otherwise - // create a new group matching the container's group - if (!titleGroupMap[group.title]) { - titleGroupMap[group.title] = this.addArgumentGroup({ - title: group.title, - description: group.description - }); - } - - // map the actions to their new group - group._groupActions.forEach(function (action) { - groupMap[actionHash(action)] = titleGroupMap[group.title]; - }); - }, this); - - // add container's mutually exclusive groups - // NOTE: if add_mutually_exclusive_group ever gains title= and - // description= then this code will need to be expanded as above - var mutexGroup; - container._mutuallyExclusiveGroups.forEach(function (group) { - mutexGroup = this.addMutuallyExclusiveGroup({ - required: group.required - }); - // map the actions to their new mutex group - group._groupActions.forEach(function (action) { - groupMap[actionHash(action)] = mutexGroup; - }); - }, this); // forEach takes a 'this' argument - - // add all actions to this container or their group - container._actions.forEach(function (action) { - var key = actionHash(action); - if (groupMap[key]) { - groupMap[key]._addAction(action); - } else { - this._addAction(action); - } - }); -}; - -ActionContainer.prototype._getPositional = function (dest, options) { - if (Array.isArray(dest)) { - dest = dest[0]; - } - // make sure required is not specified - if (options.required) { - throw new Error('"required" is an invalid argument for positionals.'); - } - - // mark positional arguments as required if at least one is - // always required - if (options.nargs !== c.OPTIONAL && options.nargs !== c.ZERO_OR_MORE) { - options.required = true; - } - if (options.nargs === c.ZERO_OR_MORE && typeof options.defaultValue === 'undefined') { - options.required = true; - } - - // return the keyword arguments with no option strings - options.dest = dest; - options.optionStrings = []; - return options; -}; - -ActionContainer.prototype._getOptional = function (args, options) { - var prefixChars = this.prefixChars; - var optionStrings = []; - var optionStringsLong = []; - - // determine short and long option strings - args.forEach(function (optionString) { - // error on strings that don't start with an appropriate prefix - if (prefixChars.indexOf(optionString[0]) < 0) { - throw new Error(format('Invalid option string "%s": must start with a "%s".', - optionString, - prefixChars - )); - } - - // strings starting with two prefix characters are long options - optionStrings.push(optionString); - if (optionString.length > 1 && prefixChars.indexOf(optionString[1]) >= 0) { - optionStringsLong.push(optionString); - } - }); - - // infer dest, '--foo-bar' -> 'foo_bar' and '-x' -> 'x' - var dest = options.dest || null; - delete options.dest; - - if (!dest) { - var optionStringDest = optionStringsLong.length ? optionStringsLong[0] : optionStrings[0]; - dest = $$.trimChars(optionStringDest, this.prefixChars); - - if (dest.length === 0) { - throw new Error( - format('dest= is required for options like "%s"', optionStrings.join(', ')) - ); - } - dest = dest.replace(/-/g, '_'); - } - - // return the updated keyword arguments - options.dest = dest; - options.optionStrings = optionStrings; - - return options; -}; - -ActionContainer.prototype._popActionClass = function (options, defaultValue) { - defaultValue = defaultValue || null; - - var action = (options.action || defaultValue); - delete options.action; - - var actionClass = this._registryGet('action', action, action); - return actionClass; -}; - -ActionContainer.prototype._getHandler = function () { - var handlerString = this.conflictHandler; - var handlerFuncName = '_handleConflict' + $$.capitalize(handlerString); - var func = this[handlerFuncName]; - if (typeof func === 'undefined') { - var msg = 'invalid conflict resolution value: ' + handlerString; - throw new Error(msg); - } else { - return func; - } -}; - -ActionContainer.prototype._checkConflict = function (action) { - var optionStringActions = this._optionStringActions; - var conflictOptionals = []; - - // find all options that conflict with this option - // collect pairs, the string, and an existing action that it conflicts with - action.optionStrings.forEach(function (optionString) { - var conflOptional = optionStringActions[optionString]; - if (typeof conflOptional !== 'undefined') { - conflictOptionals.push([ optionString, conflOptional ]); - } - }); - - if (conflictOptionals.length > 0) { - var conflictHandler = this._getHandler(); - conflictHandler.call(this, action, conflictOptionals); - } -}; - -ActionContainer.prototype._handleConflictError = function (action, conflOptionals) { - var conflicts = conflOptionals.map(function (pair) { return pair[0]; }); - conflicts = conflicts.join(', '); - throw argumentErrorHelper( - action, - format('Conflicting option string(s): %s', conflicts) - ); -}; - -ActionContainer.prototype._handleConflictResolve = function (action, conflOptionals) { - // remove all conflicting options - var self = this; - conflOptionals.forEach(function (pair) { - var optionString = pair[0]; - var conflictingAction = pair[1]; - // remove the conflicting option string - var i = conflictingAction.optionStrings.indexOf(optionString); - if (i >= 0) { - conflictingAction.optionStrings.splice(i, 1); - } - delete self._optionStringActions[optionString]; - // if the option now has no option string, remove it from the - // container holding it - if (conflictingAction.optionStrings.length === 0) { - conflictingAction.container._removeAction(conflictingAction); - } - }); -}; diff --git a/node_modules/argparse/lib/argparse.js b/node_modules/argparse/lib/argparse.js deleted file mode 100644 index f2a2c51d9..000000000 --- a/node_modules/argparse/lib/argparse.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -module.exports.ArgumentParser = require('./argument_parser.js'); -module.exports.Namespace = require('./namespace'); -module.exports.Action = require('./action'); -module.exports.HelpFormatter = require('./help/formatter.js'); -module.exports.Const = require('./const.js'); - -module.exports.ArgumentDefaultsHelpFormatter = - require('./help/added_formatters.js').ArgumentDefaultsHelpFormatter; -module.exports.RawDescriptionHelpFormatter = - require('./help/added_formatters.js').RawDescriptionHelpFormatter; -module.exports.RawTextHelpFormatter = - require('./help/added_formatters.js').RawTextHelpFormatter; diff --git a/node_modules/argparse/lib/argument/error.js b/node_modules/argparse/lib/argument/error.js deleted file mode 100644 index c8a02a08b..000000000 --- a/node_modules/argparse/lib/argument/error.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; - - -var format = require('util').format; - - -var ERR_CODE = 'ARGError'; - -/*:nodoc:* - * argumentError(argument, message) -> TypeError - * - argument (Object): action with broken argument - * - message (String): error message - * - * Error format helper. An error from creating or using an argument - * (optional or positional). The string value of this exception - * is the message, augmented with information - * about the argument that caused it. - * - * #####Example - * - * var argumentErrorHelper = require('./argument/error'); - * if (conflictOptionals.length > 0) { - * throw argumentErrorHelper( - * action, - * format('Conflicting option string(s): %s', conflictOptionals.join(', ')) - * ); - * } - * - **/ -module.exports = function (argument, message) { - var argumentName = null; - var errMessage; - var err; - - if (argument.getName) { - argumentName = argument.getName(); - } else { - argumentName = '' + argument; - } - - if (!argumentName) { - errMessage = message; - } else { - errMessage = format('argument "%s": %s', argumentName, message); - } - - err = new TypeError(errMessage); - err.code = ERR_CODE; - return err; -}; diff --git a/node_modules/argparse/lib/argument/exclusive.js b/node_modules/argparse/lib/argument/exclusive.js deleted file mode 100644 index 8287e00d0..000000000 --- a/node_modules/argparse/lib/argument/exclusive.js +++ /dev/null @@ -1,54 +0,0 @@ -/** internal - * class MutuallyExclusiveGroup - * - * Group arguments. - * By default, ArgumentParser groups command-line arguments - * into “positional arguments” and “optional arguments” - * when displaying help messages. When there is a better - * conceptual grouping of arguments than this default one, - * appropriate groups can be created using the addArgumentGroup() method - * - * This class inherited from [[ArgumentContainer]] - **/ -'use strict'; - -var util = require('util'); - -var ArgumentGroup = require('./group'); - -/** - * new MutuallyExclusiveGroup(container, options) - * - container (object): main container - * - options (object): options.required -> true/false - * - * `required` could be an argument itself, but making it a property of - * the options argument is more consistent with the JS adaptation of the Python) - **/ -var MutuallyExclusiveGroup = module.exports = function MutuallyExclusiveGroup(container, options) { - var required; - options = options || {}; - required = options.required || false; - ArgumentGroup.call(this, container); - this.required = required; - -}; -util.inherits(MutuallyExclusiveGroup, ArgumentGroup); - - -MutuallyExclusiveGroup.prototype._addAction = function (action) { - var msg; - if (action.required) { - msg = 'mutually exclusive arguments must be optional'; - throw new Error(msg); - } - action = this._container._addAction(action); - this._groupActions.push(action); - return action; -}; - - -MutuallyExclusiveGroup.prototype._removeAction = function (action) { - this._container._removeAction(action); - this._groupActions.remove(action); -}; - diff --git a/node_modules/argparse/lib/argument/group.js b/node_modules/argparse/lib/argument/group.js deleted file mode 100644 index 58b271f2f..000000000 --- a/node_modules/argparse/lib/argument/group.js +++ /dev/null @@ -1,75 +0,0 @@ -/** internal - * class ArgumentGroup - * - * Group arguments. - * By default, ArgumentParser groups command-line arguments - * into “positional arguments” and “optional arguments” - * when displaying help messages. When there is a better - * conceptual grouping of arguments than this default one, - * appropriate groups can be created using the addArgumentGroup() method - * - * This class inherited from [[ArgumentContainer]] - **/ -'use strict'; - -var util = require('util'); - -var ActionContainer = require('../action_container'); - - -/** - * new ArgumentGroup(container, options) - * - container (object): main container - * - options (object): hash of group options - * - * #### options - * - **prefixChars** group name prefix - * - **argumentDefault** default argument value - * - **title** group title - * - **description** group description - * - **/ -var ArgumentGroup = module.exports = function ArgumentGroup(container, options) { - - options = options || {}; - - // add any missing keyword arguments by checking the container - options.conflictHandler = (options.conflictHandler || container.conflictHandler); - options.prefixChars = (options.prefixChars || container.prefixChars); - options.argumentDefault = (options.argumentDefault || container.argumentDefault); - - ActionContainer.call(this, options); - - // group attributes - this.title = options.title; - this._groupActions = []; - - // share most attributes with the container - this._container = container; - this._registries = container._registries; - this._actions = container._actions; - this._optionStringActions = container._optionStringActions; - this._defaults = container._defaults; - this._hasNegativeNumberOptionals = container._hasNegativeNumberOptionals; - this._mutuallyExclusiveGroups = container._mutuallyExclusiveGroups; -}; -util.inherits(ArgumentGroup, ActionContainer); - - -ArgumentGroup.prototype._addAction = function (action) { - // Parent add action - action = ActionContainer.prototype._addAction.call(this, action); - this._groupActions.push(action); - return action; -}; - - -ArgumentGroup.prototype._removeAction = function (action) { - // Parent remove action - ActionContainer.prototype._removeAction.call(this, action); - var actionIndex = this._groupActions.indexOf(action); - if (actionIndex >= 0) { - this._groupActions.splice(actionIndex, 1); - } -}; - diff --git a/node_modules/argparse/lib/argument_parser.js b/node_modules/argparse/lib/argument_parser.js deleted file mode 100644 index bd9a59a45..000000000 --- a/node_modules/argparse/lib/argument_parser.js +++ /dev/null @@ -1,1161 +0,0 @@ -/** - * class ArgumentParser - * - * Object for parsing command line strings into js objects. - * - * Inherited from [[ActionContainer]] - **/ -'use strict'; - -var util = require('util'); -var format = require('util').format; -var Path = require('path'); -var sprintf = require('sprintf-js').sprintf; - -// Constants -var c = require('./const'); - -var $$ = require('./utils'); - -var ActionContainer = require('./action_container'); - -// Errors -var argumentErrorHelper = require('./argument/error'); - -var HelpFormatter = require('./help/formatter'); - -var Namespace = require('./namespace'); - - -/** - * new ArgumentParser(options) - * - * Create a new ArgumentParser object. - * - * ##### Options: - * - `prog` The name of the program (default: Path.basename(process.argv[1])) - * - `usage` A usage message (default: auto-generated from arguments) - * - `description` A description of what the program does - * - `epilog` Text following the argument descriptions - * - `parents` Parsers whose arguments should be copied into this one - * - `formatterClass` HelpFormatter class for printing help messages - * - `prefixChars` Characters that prefix optional arguments - * - `fromfilePrefixChars` Characters that prefix files containing additional arguments - * - `argumentDefault` The default value for all arguments - * - `addHelp` Add a -h/-help option - * - `conflictHandler` Specifies how to handle conflicting argument names - * - `debug` Enable debug mode. Argument errors throw exception in - * debug mode and process.exit in normal. Used for development and - * testing (default: false) - * - * See also [original guide][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#argumentparser-objects - **/ -function ArgumentParser(options) { - if (!(this instanceof ArgumentParser)) { - return new ArgumentParser(options); - } - var self = this; - options = options || {}; - - options.description = (options.description || null); - options.argumentDefault = (options.argumentDefault || null); - options.prefixChars = (options.prefixChars || '-'); - options.conflictHandler = (options.conflictHandler || 'error'); - ActionContainer.call(this, options); - - options.addHelp = typeof options.addHelp === 'undefined' || !!options.addHelp; - options.parents = options.parents || []; - // default program name - options.prog = (options.prog || Path.basename(process.argv[1])); - this.prog = options.prog; - this.usage = options.usage; - this.epilog = options.epilog; - this.version = options.version; - - this.debug = (options.debug === true); - - this.formatterClass = (options.formatterClass || HelpFormatter); - this.fromfilePrefixChars = options.fromfilePrefixChars || null; - this._positionals = this.addArgumentGroup({ title: 'Positional arguments' }); - this._optionals = this.addArgumentGroup({ title: 'Optional arguments' }); - this._subparsers = null; - - // register types - function FUNCTION_IDENTITY(o) { - return o; - } - this.register('type', 'auto', FUNCTION_IDENTITY); - this.register('type', null, FUNCTION_IDENTITY); - this.register('type', 'int', function (x) { - var result = parseInt(x, 10); - if (isNaN(result)) { - throw new Error(x + ' is not a valid integer.'); - } - return result; - }); - this.register('type', 'float', function (x) { - var result = parseFloat(x); - if (isNaN(result)) { - throw new Error(x + ' is not a valid float.'); - } - return result; - }); - this.register('type', 'string', function (x) { - return '' + x; - }); - - // add help and version arguments if necessary - var defaultPrefix = (this.prefixChars.indexOf('-') > -1) ? '-' : this.prefixChars[0]; - if (options.addHelp) { - this.addArgument( - [ defaultPrefix + 'h', defaultPrefix + defaultPrefix + 'help' ], - { - action: 'help', - defaultValue: c.SUPPRESS, - help: 'Show this help message and exit.' - } - ); - } - if (typeof this.version !== 'undefined') { - this.addArgument( - [ defaultPrefix + 'v', defaultPrefix + defaultPrefix + 'version' ], - { - action: 'version', - version: this.version, - defaultValue: c.SUPPRESS, - help: "Show program's version number and exit." - } - ); - } - - // add parent arguments and defaults - options.parents.forEach(function (parent) { - self._addContainerActions(parent); - if (typeof parent._defaults !== 'undefined') { - for (var defaultKey in parent._defaults) { - if (parent._defaults.hasOwnProperty(defaultKey)) { - self._defaults[defaultKey] = parent._defaults[defaultKey]; - } - } - } - }); -} - -util.inherits(ArgumentParser, ActionContainer); - -/** - * ArgumentParser#addSubparsers(options) -> [[ActionSubparsers]] - * - options (object): hash of options see [[ActionSubparsers.new]] - * - * See also [subcommands][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#sub-commands - **/ -ArgumentParser.prototype.addSubparsers = function (options) { - if (this._subparsers) { - this.error('Cannot have multiple subparser arguments.'); - } - - options = options || {}; - options.debug = (this.debug === true); - options.optionStrings = []; - options.parserClass = (options.parserClass || ArgumentParser); - - - if (!!options.title || !!options.description) { - - this._subparsers = this.addArgumentGroup({ - title: (options.title || 'subcommands'), - description: options.description - }); - delete options.title; - delete options.description; - - } else { - this._subparsers = this._positionals; - } - - // prog defaults to the usage message of this parser, skipping - // optional arguments and with no "usage:" prefix - if (!options.prog) { - var formatter = this._getFormatter(); - var positionals = this._getPositionalActions(); - var groups = this._mutuallyExclusiveGroups; - formatter.addUsage(this.usage, positionals, groups, ''); - options.prog = formatter.formatHelp().trim(); - } - - // create the parsers action and add it to the positionals list - var ParsersClass = this._popActionClass(options, 'parsers'); - var action = new ParsersClass(options); - this._subparsers._addAction(action); - - // return the created parsers action - return action; -}; - -ArgumentParser.prototype._addAction = function (action) { - if (action.isOptional()) { - this._optionals._addAction(action); - } else { - this._positionals._addAction(action); - } - return action; -}; - -ArgumentParser.prototype._getOptionalActions = function () { - return this._actions.filter(function (action) { - return action.isOptional(); - }); -}; - -ArgumentParser.prototype._getPositionalActions = function () { - return this._actions.filter(function (action) { - return action.isPositional(); - }); -}; - - -/** - * ArgumentParser#parseArgs(args, namespace) -> Namespace|Object - * - args (array): input elements - * - namespace (Namespace|Object): result object - * - * Parsed args and throws error if some arguments are not recognized - * - * See also [original guide][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#the-parse-args-method - **/ -ArgumentParser.prototype.parseArgs = function (args, namespace) { - var argv; - var result = this.parseKnownArgs(args, namespace); - - args = result[0]; - argv = result[1]; - if (argv && argv.length > 0) { - this.error( - format('Unrecognized arguments: %s.', argv.join(' ')) - ); - } - return args; -}; - -/** - * ArgumentParser#parseKnownArgs(args, namespace) -> array - * - args (array): input options - * - namespace (Namespace|Object): result object - * - * Parse known arguments and return tuple of result object - * and unknown args - * - * See also [original guide][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#partial-parsing - **/ -ArgumentParser.prototype.parseKnownArgs = function (args, namespace) { - var self = this; - - // args default to the system args - args = args || process.argv.slice(2); - - // default Namespace built from parser defaults - namespace = namespace || new Namespace(); - - self._actions.forEach(function (action) { - if (action.dest !== c.SUPPRESS) { - if (!$$.has(namespace, action.dest)) { - if (action.defaultValue !== c.SUPPRESS) { - var defaultValue = action.defaultValue; - if (typeof action.defaultValue === 'string') { - defaultValue = self._getValue(action, defaultValue); - } - namespace[action.dest] = defaultValue; - } - } - } - }); - - Object.keys(self._defaults).forEach(function (dest) { - namespace[dest] = self._defaults[dest]; - }); - - // parse the arguments and exit if there are any errors - try { - var res = this._parseKnownArgs(args, namespace); - - namespace = res[0]; - args = res[1]; - if ($$.has(namespace, c._UNRECOGNIZED_ARGS_ATTR)) { - args = $$.arrayUnion(args, namespace[c._UNRECOGNIZED_ARGS_ATTR]); - delete namespace[c._UNRECOGNIZED_ARGS_ATTR]; - } - return [ namespace, args ]; - } catch (e) { - this.error(e); - } -}; - -ArgumentParser.prototype._parseKnownArgs = function (argStrings, namespace) { - var self = this; - - var extras = []; - - // replace arg strings that are file references - if (this.fromfilePrefixChars !== null) { - argStrings = this._readArgsFromFiles(argStrings); - } - // map all mutually exclusive arguments to the other arguments - // they can't occur with - // Python has 'conflicts = action_conflicts.setdefault(mutex_action, [])' - // though I can't conceive of a way in which an action could be a member - // of two different mutually exclusive groups. - - function actionHash(action) { - // some sort of hashable key for this action - // action itself cannot be a key in actionConflicts - // I think getName() (join of optionStrings) is unique enough - return action.getName(); - } - - var conflicts, key; - var actionConflicts = {}; - - this._mutuallyExclusiveGroups.forEach(function (mutexGroup) { - mutexGroup._groupActions.forEach(function (mutexAction, i, groupActions) { - key = actionHash(mutexAction); - if (!$$.has(actionConflicts, key)) { - actionConflicts[key] = []; - } - conflicts = actionConflicts[key]; - conflicts.push.apply(conflicts, groupActions.slice(0, i)); - conflicts.push.apply(conflicts, groupActions.slice(i + 1)); - }); - }); - - // find all option indices, and determine the arg_string_pattern - // which has an 'O' if there is an option at an index, - // an 'A' if there is an argument, or a '-' if there is a '--' - var optionStringIndices = {}; - - var argStringPatternParts = []; - - argStrings.forEach(function (argString, argStringIndex) { - if (argString === '--') { - argStringPatternParts.push('-'); - while (argStringIndex < argStrings.length) { - argStringPatternParts.push('A'); - argStringIndex++; - } - } else { - // otherwise, add the arg to the arg strings - // and note the index if it was an option - var pattern; - var optionTuple = self._parseOptional(argString); - if (!optionTuple) { - pattern = 'A'; - } else { - optionStringIndices[argStringIndex] = optionTuple; - pattern = 'O'; - } - argStringPatternParts.push(pattern); - } - }); - var argStringsPattern = argStringPatternParts.join(''); - - var seenActions = []; - var seenNonDefaultActions = []; - - - function takeAction(action, argumentStrings, optionString) { - seenActions.push(action); - var argumentValues = self._getValues(action, argumentStrings); - - // error if this argument is not allowed with other previously - // seen arguments, assuming that actions that use the default - // value don't really count as "present" - if (argumentValues !== action.defaultValue) { - seenNonDefaultActions.push(action); - if (actionConflicts[actionHash(action)]) { - actionConflicts[actionHash(action)].forEach(function (actionConflict) { - if (seenNonDefaultActions.indexOf(actionConflict) >= 0) { - throw argumentErrorHelper( - action, - format('Not allowed with argument "%s".', actionConflict.getName()) - ); - } - }); - } - } - - if (argumentValues !== c.SUPPRESS) { - action.call(self, namespace, argumentValues, optionString); - } - } - - function consumeOptional(startIndex) { - // get the optional identified at this index - var optionTuple = optionStringIndices[startIndex]; - var action = optionTuple[0]; - var optionString = optionTuple[1]; - var explicitArg = optionTuple[2]; - - // identify additional optionals in the same arg string - // (e.g. -xyz is the same as -x -y -z if no args are required) - var actionTuples = []; - - var args, argCount, start, stop; - - for (;;) { - if (!action) { - extras.push(argStrings[startIndex]); - return startIndex + 1; - } - if (explicitArg) { - argCount = self._matchArgument(action, 'A'); - - // if the action is a single-dash option and takes no - // arguments, try to parse more single-dash options out - // of the tail of the option string - var chars = self.prefixChars; - if (argCount === 0 && chars.indexOf(optionString[1]) < 0) { - actionTuples.push([ action, [], optionString ]); - optionString = optionString[0] + explicitArg[0]; - var newExplicitArg = explicitArg.slice(1) || null; - var optionalsMap = self._optionStringActions; - - if (Object.keys(optionalsMap).indexOf(optionString) >= 0) { - action = optionalsMap[optionString]; - explicitArg = newExplicitArg; - } else { - throw argumentErrorHelper(action, sprintf('ignored explicit argument %r', explicitArg)); - } - } else if (argCount === 1) { - // if the action expect exactly one argument, we've - // successfully matched the option; exit the loop - stop = startIndex + 1; - args = [ explicitArg ]; - actionTuples.push([ action, args, optionString ]); - break; - } else { - // error if a double-dash option did not use the - // explicit argument - throw argumentErrorHelper(action, sprintf('ignored explicit argument %r', explicitArg)); - } - } else { - // if there is no explicit argument, try to match the - // optional's string arguments with the following strings - // if successful, exit the loop - - start = startIndex + 1; - var selectedPatterns = argStringsPattern.substr(start); - - argCount = self._matchArgument(action, selectedPatterns); - stop = start + argCount; - - - args = argStrings.slice(start, stop); - - actionTuples.push([ action, args, optionString ]); - break; - } - - } - - // add the Optional to the list and return the index at which - // the Optional's string args stopped - if (actionTuples.length < 1) { - throw new Error('length should be > 0'); - } - for (var i = 0; i < actionTuples.length; i++) { - takeAction.apply(self, actionTuples[i]); - } - return stop; - } - - // the list of Positionals left to be parsed; this is modified - // by consume_positionals() - var positionals = self._getPositionalActions(); - - function consumePositionals(startIndex) { - // match as many Positionals as possible - var selectedPattern = argStringsPattern.substr(startIndex); - var argCounts = self._matchArgumentsPartial(positionals, selectedPattern); - - // slice off the appropriate arg strings for each Positional - // and add the Positional and its args to the list - for (var i = 0; i < positionals.length; i++) { - var action = positionals[i]; - var argCount = argCounts[i]; - if (typeof argCount === 'undefined') { - continue; - } - var args = argStrings.slice(startIndex, startIndex + argCount); - - startIndex += argCount; - takeAction(action, args); - } - - // slice off the Positionals that we just parsed and return the - // index at which the Positionals' string args stopped - positionals = positionals.slice(argCounts.length); - return startIndex; - } - - // consume Positionals and Optionals alternately, until we have - // passed the last option string - var startIndex = 0; - var position; - - var maxOptionStringIndex = -1; - - Object.keys(optionStringIndices).forEach(function (position) { - maxOptionStringIndex = Math.max(maxOptionStringIndex, parseInt(position, 10)); - }); - - var positionalsEndIndex, nextOptionStringIndex; - - while (startIndex <= maxOptionStringIndex) { - // consume any Positionals preceding the next option - nextOptionStringIndex = null; - for (position in optionStringIndices) { - if (!optionStringIndices.hasOwnProperty(position)) { continue; } - - position = parseInt(position, 10); - if (position >= startIndex) { - if (nextOptionStringIndex !== null) { - nextOptionStringIndex = Math.min(nextOptionStringIndex, position); - } else { - nextOptionStringIndex = position; - } - } - } - - if (startIndex !== nextOptionStringIndex) { - positionalsEndIndex = consumePositionals(startIndex); - // only try to parse the next optional if we didn't consume - // the option string during the positionals parsing - if (positionalsEndIndex > startIndex) { - startIndex = positionalsEndIndex; - continue; - } else { - startIndex = positionalsEndIndex; - } - } - - // if we consumed all the positionals we could and we're not - // at the index of an option string, there were extra arguments - if (!optionStringIndices[startIndex]) { - var strings = argStrings.slice(startIndex, nextOptionStringIndex); - extras = extras.concat(strings); - startIndex = nextOptionStringIndex; - } - // consume the next optional and any arguments for it - startIndex = consumeOptional(startIndex); - } - - // consume any positionals following the last Optional - var stopIndex = consumePositionals(startIndex); - - // if we didn't consume all the argument strings, there were extras - extras = extras.concat(argStrings.slice(stopIndex)); - - // if we didn't use all the Positional objects, there were too few - // arg strings supplied. - if (positionals.length > 0) { - self.error('too few arguments'); - } - - // make sure all required actions were present - self._actions.forEach(function (action) { - if (action.required) { - if (seenActions.indexOf(action) < 0) { - self.error(format('Argument "%s" is required', action.getName())); - } - } - }); - - // make sure all required groups have one option present - var actionUsed = false; - self._mutuallyExclusiveGroups.forEach(function (group) { - if (group.required) { - actionUsed = group._groupActions.some(function (action) { - return seenNonDefaultActions.indexOf(action) !== -1; - }); - - // if no actions were used, report the error - if (!actionUsed) { - var names = []; - group._groupActions.forEach(function (action) { - if (action.help !== c.SUPPRESS) { - names.push(action.getName()); - } - }); - names = names.join(' '); - var msg = 'one of the arguments ' + names + ' is required'; - self.error(msg); - } - } - }); - - // return the updated namespace and the extra arguments - return [ namespace, extras ]; -}; - -ArgumentParser.prototype._readArgsFromFiles = function (argStrings) { - // expand arguments referencing files - var self = this; - var fs = require('fs'); - var newArgStrings = []; - argStrings.forEach(function (argString) { - if (self.fromfilePrefixChars.indexOf(argString[0]) < 0) { - // for regular arguments, just add them back into the list - newArgStrings.push(argString); - } else { - // replace arguments referencing files with the file content - try { - var argstrs = []; - var filename = argString.slice(1); - var content = fs.readFileSync(filename, 'utf8'); - content = content.trim().split('\n'); - content.forEach(function (argLine) { - self.convertArgLineToArgs(argLine).forEach(function (arg) { - argstrs.push(arg); - }); - argstrs = self._readArgsFromFiles(argstrs); - }); - newArgStrings.push.apply(newArgStrings, argstrs); - } catch (error) { - return self.error(error.message); - } - } - }); - return newArgStrings; -}; - -ArgumentParser.prototype.convertArgLineToArgs = function (argLine) { - return [ argLine ]; -}; - -ArgumentParser.prototype._matchArgument = function (action, regexpArgStrings) { - - // match the pattern for this action to the arg strings - var regexpNargs = new RegExp('^' + this._getNargsPattern(action)); - var matches = regexpArgStrings.match(regexpNargs); - var message; - - // throw an exception if we weren't able to find a match - if (!matches) { - switch (action.nargs) { - /*eslint-disable no-undefined*/ - case undefined: - case null: - message = 'Expected one argument.'; - break; - case c.OPTIONAL: - message = 'Expected at most one argument.'; - break; - case c.ONE_OR_MORE: - message = 'Expected at least one argument.'; - break; - default: - message = 'Expected %s argument(s)'; - } - - throw argumentErrorHelper( - action, - format(message, action.nargs) - ); - } - // return the number of arguments matched - return matches[1].length; -}; - -ArgumentParser.prototype._matchArgumentsPartial = function (actions, regexpArgStrings) { - // progressively shorten the actions list by slicing off the - // final actions until we find a match - var self = this; - var result = []; - var actionSlice, pattern, matches; - var i, j; - - function getLength(string) { - return string.length; - } - - for (i = actions.length; i > 0; i--) { - pattern = ''; - actionSlice = actions.slice(0, i); - for (j = 0; j < actionSlice.length; j++) { - pattern += self._getNargsPattern(actionSlice[j]); - } - - pattern = new RegExp('^' + pattern); - matches = regexpArgStrings.match(pattern); - - if (matches && matches.length > 0) { - // need only groups - matches = matches.splice(1); - result = result.concat(matches.map(getLength)); - break; - } - } - - // return the list of arg string counts - return result; -}; - -ArgumentParser.prototype._parseOptional = function (argString) { - var action, optionString, argExplicit, optionTuples; - - // if it's an empty string, it was meant to be a positional - if (!argString) { - return null; - } - - // if it doesn't start with a prefix, it was meant to be positional - if (this.prefixChars.indexOf(argString[0]) < 0) { - return null; - } - - // if the option string is present in the parser, return the action - if (this._optionStringActions[argString]) { - return [ this._optionStringActions[argString], argString, null ]; - } - - // if it's just a single character, it was meant to be positional - if (argString.length === 1) { - return null; - } - - // if the option string before the "=" is present, return the action - if (argString.indexOf('=') >= 0) { - optionString = argString.split('=', 1)[0]; - argExplicit = argString.slice(optionString.length + 1); - - if (this._optionStringActions[optionString]) { - action = this._optionStringActions[optionString]; - return [ action, optionString, argExplicit ]; - } - } - - // search through all possible prefixes of the option string - // and all actions in the parser for possible interpretations - optionTuples = this._getOptionTuples(argString); - - // if multiple actions match, the option string was ambiguous - if (optionTuples.length > 1) { - var optionStrings = optionTuples.map(function (optionTuple) { - return optionTuple[1]; - }); - this.error(format( - 'Ambiguous option: "%s" could match %s.', - argString, optionStrings.join(', ') - )); - // if exactly one action matched, this segmentation is good, - // so return the parsed action - } else if (optionTuples.length === 1) { - return optionTuples[0]; - } - - // if it was not found as an option, but it looks like a negative - // number, it was meant to be positional - // unless there are negative-number-like options - if (argString.match(this._regexpNegativeNumber)) { - if (!this._hasNegativeNumberOptionals.some(Boolean)) { - return null; - } - } - // if it contains a space, it was meant to be a positional - if (argString.search(' ') >= 0) { - return null; - } - - // it was meant to be an optional but there is no such option - // in this parser (though it might be a valid option in a subparser) - return [ null, argString, null ]; -}; - -ArgumentParser.prototype._getOptionTuples = function (optionString) { - var result = []; - var chars = this.prefixChars; - var optionPrefix; - var argExplicit; - var action; - var actionOptionString; - - // option strings starting with two prefix characters are only split at - // the '=' - if (chars.indexOf(optionString[0]) >= 0 && chars.indexOf(optionString[1]) >= 0) { - if (optionString.indexOf('=') >= 0) { - var optionStringSplit = optionString.split('=', 1); - - optionPrefix = optionStringSplit[0]; - argExplicit = optionStringSplit[1]; - } else { - optionPrefix = optionString; - argExplicit = null; - } - - for (actionOptionString in this._optionStringActions) { - if (actionOptionString.substr(0, optionPrefix.length) === optionPrefix) { - action = this._optionStringActions[actionOptionString]; - result.push([ action, actionOptionString, argExplicit ]); - } - } - - // single character options can be concatenated with their arguments - // but multiple character options always have to have their argument - // separate - } else if (chars.indexOf(optionString[0]) >= 0 && chars.indexOf(optionString[1]) < 0) { - optionPrefix = optionString; - argExplicit = null; - var optionPrefixShort = optionString.substr(0, 2); - var argExplicitShort = optionString.substr(2); - - for (actionOptionString in this._optionStringActions) { - if (!$$.has(this._optionStringActions, actionOptionString)) continue; - - action = this._optionStringActions[actionOptionString]; - if (actionOptionString === optionPrefixShort) { - result.push([ action, actionOptionString, argExplicitShort ]); - } else if (actionOptionString.substr(0, optionPrefix.length) === optionPrefix) { - result.push([ action, actionOptionString, argExplicit ]); - } - } - - // shouldn't ever get here - } else { - throw new Error(format('Unexpected option string: %s.', optionString)); - } - // return the collected option tuples - return result; -}; - -ArgumentParser.prototype._getNargsPattern = function (action) { - // in all examples below, we have to allow for '--' args - // which are represented as '-' in the pattern - var regexpNargs; - - switch (action.nargs) { - // the default (null) is assumed to be a single argument - case undefined: - case null: - regexpNargs = '(-*A-*)'; - break; - // allow zero or more arguments - case c.OPTIONAL: - regexpNargs = '(-*A?-*)'; - break; - // allow zero or more arguments - case c.ZERO_OR_MORE: - regexpNargs = '(-*[A-]*)'; - break; - // allow one or more arguments - case c.ONE_OR_MORE: - regexpNargs = '(-*A[A-]*)'; - break; - // allow any number of options or arguments - case c.REMAINDER: - regexpNargs = '([-AO]*)'; - break; - // allow one argument followed by any number of options or arguments - case c.PARSER: - regexpNargs = '(-*A[-AO]*)'; - break; - // all others should be integers - default: - regexpNargs = '(-*' + $$.repeat('-*A', action.nargs) + '-*)'; - } - - // if this is an optional action, -- is not allowed - if (action.isOptional()) { - regexpNargs = regexpNargs.replace(/-\*/g, ''); - regexpNargs = regexpNargs.replace(/-/g, ''); - } - - // return the pattern - return regexpNargs; -}; - -// -// Value conversion methods -// - -ArgumentParser.prototype._getValues = function (action, argStrings) { - var self = this; - - // for everything but PARSER args, strip out '--' - if (action.nargs !== c.PARSER && action.nargs !== c.REMAINDER) { - argStrings = argStrings.filter(function (arrayElement) { - return arrayElement !== '--'; - }); - } - - var value, argString; - - // optional argument produces a default when not present - if (argStrings.length === 0 && action.nargs === c.OPTIONAL) { - - value = (action.isOptional()) ? action.constant : action.defaultValue; - - if (typeof (value) === 'string') { - value = this._getValue(action, value); - this._checkValue(action, value); - } - - // when nargs='*' on a positional, if there were no command-line - // args, use the default if it is anything other than None - } else if (argStrings.length === 0 && action.nargs === c.ZERO_OR_MORE && - action.optionStrings.length === 0) { - - value = (action.defaultValue || argStrings); - this._checkValue(action, value); - - // single argument or optional argument produces a single value - } else if (argStrings.length === 1 && - (!action.nargs || action.nargs === c.OPTIONAL)) { - - argString = argStrings[0]; - value = this._getValue(action, argString); - this._checkValue(action, value); - - // REMAINDER arguments convert all values, checking none - } else if (action.nargs === c.REMAINDER) { - value = argStrings.map(function (v) { - return self._getValue(action, v); - }); - - // PARSER arguments convert all values, but check only the first - } else if (action.nargs === c.PARSER) { - value = argStrings.map(function (v) { - return self._getValue(action, v); - }); - this._checkValue(action, value[0]); - - // all other types of nargs produce a list - } else { - value = argStrings.map(function (v) { - return self._getValue(action, v); - }); - value.forEach(function (v) { - self._checkValue(action, v); - }); - } - - // return the converted value - return value; -}; - -ArgumentParser.prototype._getValue = function (action, argString) { - var result; - - var typeFunction = this._registryGet('type', action.type, action.type); - if (typeof typeFunction !== 'function') { - var message = format('%s is not callable', typeFunction); - throw argumentErrorHelper(action, message); - } - - // convert the value to the appropriate type - try { - result = typeFunction(argString); - - // ArgumentTypeErrors indicate errors - // If action.type is not a registered string, it is a function - // Try to deduce its name for inclusion in the error message - // Failing that, include the error message it raised. - } catch (e) { - var name = null; - if (typeof action.type === 'string') { - name = action.type; - } else { - name = action.type.name || action.type.displayName || ''; - } - var msg = format('Invalid %s value: %s', name, argString); - if (name === '') { msg += '\n' + e.message; } - throw argumentErrorHelper(action, msg); - } - // return the converted value - return result; -}; - -ArgumentParser.prototype._checkValue = function (action, value) { - // converted value must be one of the choices (if specified) - var choices = action.choices; - if (choices) { - // choise for argument can by array or string - if ((typeof choices === 'string' || Array.isArray(choices)) && - choices.indexOf(value) !== -1) { - return; - } - // choise for subparsers can by only hash - if (typeof choices === 'object' && !Array.isArray(choices) && choices[value]) { - return; - } - - if (typeof choices === 'string') { - choices = choices.split('').join(', '); - } else if (Array.isArray(choices)) { - choices = choices.join(', '); - } else { - choices = Object.keys(choices).join(', '); - } - var message = format('Invalid choice: %s (choose from [%s])', value, choices); - throw argumentErrorHelper(action, message); - } -}; - -// -// Help formatting methods -// - -/** - * ArgumentParser#formatUsage -> string - * - * Return usage string - * - * See also [original guide][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#printing-help - **/ -ArgumentParser.prototype.formatUsage = function () { - var formatter = this._getFormatter(); - formatter.addUsage(this.usage, this._actions, this._mutuallyExclusiveGroups); - return formatter.formatHelp(); -}; - -/** - * ArgumentParser#formatHelp -> string - * - * Return help - * - * See also [original guide][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#printing-help - **/ -ArgumentParser.prototype.formatHelp = function () { - var formatter = this._getFormatter(); - - // usage - formatter.addUsage(this.usage, this._actions, this._mutuallyExclusiveGroups); - - // description - formatter.addText(this.description); - - // positionals, optionals and user-defined groups - this._actionGroups.forEach(function (actionGroup) { - formatter.startSection(actionGroup.title); - formatter.addText(actionGroup.description); - formatter.addArguments(actionGroup._groupActions); - formatter.endSection(); - }); - - // epilog - formatter.addText(this.epilog); - - // determine help from format above - return formatter.formatHelp(); -}; - -ArgumentParser.prototype._getFormatter = function () { - var FormatterClass = this.formatterClass; - var formatter = new FormatterClass({ prog: this.prog }); - return formatter; -}; - -// -// Print functions -// - -/** - * ArgumentParser#printUsage() -> Void - * - * Print usage - * - * See also [original guide][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#printing-help - **/ -ArgumentParser.prototype.printUsage = function () { - this._printMessage(this.formatUsage()); -}; - -/** - * ArgumentParser#printHelp() -> Void - * - * Print help - * - * See also [original guide][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#printing-help - **/ -ArgumentParser.prototype.printHelp = function () { - this._printMessage(this.formatHelp()); -}; - -ArgumentParser.prototype._printMessage = function (message, stream) { - if (!stream) { - stream = process.stdout; - } - if (message) { - stream.write('' + message); - } -}; - -// -// Exit functions -// - -/** - * ArgumentParser#exit(status=0, message) -> Void - * - status (int): exit status - * - message (string): message - * - * Print message in stderr/stdout and exit program - **/ -ArgumentParser.prototype.exit = function (status, message) { - if (message) { - if (status === 0) { - this._printMessage(message); - } else { - this._printMessage(message, process.stderr); - } - } - - process.exit(status); -}; - -/** - * ArgumentParser#error(message) -> Void - * - err (Error|string): message - * - * Error method Prints a usage message incorporating the message to stderr and - * exits. If you override this in a subclass, - * it should not return -- it should - * either exit or throw an exception. - * - **/ -ArgumentParser.prototype.error = function (err) { - var message; - if (err instanceof Error) { - if (this.debug === true) { - throw err; - } - message = err.message; - } else { - message = err; - } - var msg = format('%s: error: %s', this.prog, message) + c.EOL; - - if (this.debug === true) { - throw new Error(msg); - } - - this.printUsage(process.stderr); - - return this.exit(2, msg); -}; - -module.exports = ArgumentParser; diff --git a/node_modules/argparse/lib/const.js b/node_modules/argparse/lib/const.js deleted file mode 100644 index b1fd4ced4..000000000 --- a/node_modules/argparse/lib/const.js +++ /dev/null @@ -1,21 +0,0 @@ -// -// Constants -// - -'use strict'; - -module.exports.EOL = '\n'; - -module.exports.SUPPRESS = '==SUPPRESS=='; - -module.exports.OPTIONAL = '?'; - -module.exports.ZERO_OR_MORE = '*'; - -module.exports.ONE_OR_MORE = '+'; - -module.exports.PARSER = 'A...'; - -module.exports.REMAINDER = '...'; - -module.exports._UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args'; diff --git a/node_modules/argparse/lib/help/added_formatters.js b/node_modules/argparse/lib/help/added_formatters.js deleted file mode 100644 index f8e42998e..000000000 --- a/node_modules/argparse/lib/help/added_formatters.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; - -var util = require('util'); - -// Constants -var c = require('../const'); - -var $$ = require('../utils'); -var HelpFormatter = require('./formatter.js'); - -/** - * new RawDescriptionHelpFormatter(options) - * new ArgumentParser({formatterClass: argparse.RawDescriptionHelpFormatter, ...}) - * - * Help message formatter which adds default values to argument help. - * - * Only the name of this class is considered a public API. All the methods - * provided by the class are considered an implementation detail. - **/ - -function ArgumentDefaultsHelpFormatter(options) { - HelpFormatter.call(this, options); -} - -util.inherits(ArgumentDefaultsHelpFormatter, HelpFormatter); - -ArgumentDefaultsHelpFormatter.prototype._getHelpString = function (action) { - var help = action.help; - if (action.help.indexOf('%(defaultValue)s') === -1) { - if (action.defaultValue !== c.SUPPRESS) { - var defaulting_nargs = [ c.OPTIONAL, c.ZERO_OR_MORE ]; - if (action.isOptional() || (defaulting_nargs.indexOf(action.nargs) >= 0)) { - help += ' (default: %(defaultValue)s)'; - } - } - } - return help; -}; - -module.exports.ArgumentDefaultsHelpFormatter = ArgumentDefaultsHelpFormatter; - -/** - * new RawDescriptionHelpFormatter(options) - * new ArgumentParser({formatterClass: argparse.RawDescriptionHelpFormatter, ...}) - * - * Help message formatter which retains any formatting in descriptions. - * - * Only the name of this class is considered a public API. All the methods - * provided by the class are considered an implementation detail. - **/ - -function RawDescriptionHelpFormatter(options) { - HelpFormatter.call(this, options); -} - -util.inherits(RawDescriptionHelpFormatter, HelpFormatter); - -RawDescriptionHelpFormatter.prototype._fillText = function (text, width, indent) { - var lines = text.split('\n'); - lines = lines.map(function (line) { - return $$.trimEnd(indent + line); - }); - return lines.join('\n'); -}; -module.exports.RawDescriptionHelpFormatter = RawDescriptionHelpFormatter; - -/** - * new RawTextHelpFormatter(options) - * new ArgumentParser({formatterClass: argparse.RawTextHelpFormatter, ...}) - * - * Help message formatter which retains formatting of all help text. - * - * Only the name of this class is considered a public API. All the methods - * provided by the class are considered an implementation detail. - **/ - -function RawTextHelpFormatter(options) { - RawDescriptionHelpFormatter.call(this, options); -} - -util.inherits(RawTextHelpFormatter, RawDescriptionHelpFormatter); - -RawTextHelpFormatter.prototype._splitLines = function (text) { - return text.split('\n'); -}; - -module.exports.RawTextHelpFormatter = RawTextHelpFormatter; diff --git a/node_modules/argparse/lib/help/formatter.js b/node_modules/argparse/lib/help/formatter.js deleted file mode 100644 index 29036c14b..000000000 --- a/node_modules/argparse/lib/help/formatter.js +++ /dev/null @@ -1,795 +0,0 @@ -/** - * class HelpFormatter - * - * Formatter for generating usage messages and argument help strings. Only the - * name of this class is considered a public API. All the methods provided by - * the class are considered an implementation detail. - * - * Do not call in your code, use this class only for inherits your own forvatter - * - * ToDo add [additonal formatters][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#formatter-class - **/ -'use strict'; - -var sprintf = require('sprintf-js').sprintf; - -// Constants -var c = require('../const'); - -var $$ = require('../utils'); - - -/*:nodoc:* internal - * new Support(parent, heding) - * - parent (object): parent section - * - heading (string): header string - * - **/ -function Section(parent, heading) { - this._parent = parent; - this._heading = heading; - this._items = []; -} - -/*:nodoc:* internal - * Section#addItem(callback) -> Void - * - callback (array): tuple with function and args - * - * Add function for single element - **/ -Section.prototype.addItem = function (callback) { - this._items.push(callback); -}; - -/*:nodoc:* internal - * Section#formatHelp(formatter) -> string - * - formatter (HelpFormatter): current formatter - * - * Form help section string - * - **/ -Section.prototype.formatHelp = function (formatter) { - var itemHelp, heading; - - // format the indented section - if (this._parent) { - formatter._indent(); - } - - itemHelp = this._items.map(function (item) { - var obj, func, args; - - obj = formatter; - func = item[0]; - args = item[1]; - return func.apply(obj, args); - }); - itemHelp = formatter._joinParts(itemHelp); - - if (this._parent) { - formatter._dedent(); - } - - // return nothing if the section was empty - if (!itemHelp) { - return ''; - } - - // add the heading if the section was non-empty - heading = ''; - if (this._heading && this._heading !== c.SUPPRESS) { - var currentIndent = formatter.currentIndent; - heading = $$.repeat(' ', currentIndent) + this._heading + ':' + c.EOL; - } - - // join the section-initialize newline, the heading and the help - return formatter._joinParts([ c.EOL, heading, itemHelp, c.EOL ]); -}; - -/** - * new HelpFormatter(options) - * - * #### Options: - * - `prog`: program name - * - `indentIncriment`: indent step, default value 2 - * - `maxHelpPosition`: max help position, default value = 24 - * - `width`: line width - * - **/ -var HelpFormatter = module.exports = function HelpFormatter(options) { - options = options || {}; - - this._prog = options.prog; - - this._maxHelpPosition = options.maxHelpPosition || 24; - this._width = (options.width || ((process.env.COLUMNS || 80) - 2)); - - this._currentIndent = 0; - this._indentIncriment = options.indentIncriment || 2; - this._level = 0; - this._actionMaxLength = 0; - - this._rootSection = new Section(null); - this._currentSection = this._rootSection; - - this._whitespaceMatcher = new RegExp('\\s+', 'g'); - this._longBreakMatcher = new RegExp(c.EOL + c.EOL + c.EOL + '+', 'g'); -}; - -HelpFormatter.prototype._indent = function () { - this._currentIndent += this._indentIncriment; - this._level += 1; -}; - -HelpFormatter.prototype._dedent = function () { - this._currentIndent -= this._indentIncriment; - this._level -= 1; - if (this._currentIndent < 0) { - throw new Error('Indent decreased below 0.'); - } -}; - -HelpFormatter.prototype._addItem = function (func, args) { - this._currentSection.addItem([ func, args ]); -}; - -// -// Message building methods -// - -/** - * HelpFormatter#startSection(heading) -> Void - * - heading (string): header string - * - * Start new help section - * - * See alse [code example][1] - * - * ##### Example - * - * formatter.startSection(actionGroup.title); - * formatter.addText(actionGroup.description); - * formatter.addArguments(actionGroup._groupActions); - * formatter.endSection(); - * - **/ -HelpFormatter.prototype.startSection = function (heading) { - this._indent(); - var section = new Section(this._currentSection, heading); - var func = section.formatHelp.bind(section); - this._addItem(func, [ this ]); - this._currentSection = section; -}; - -/** - * HelpFormatter#endSection -> Void - * - * End help section - * - * ##### Example - * - * formatter.startSection(actionGroup.title); - * formatter.addText(actionGroup.description); - * formatter.addArguments(actionGroup._groupActions); - * formatter.endSection(); - **/ -HelpFormatter.prototype.endSection = function () { - this._currentSection = this._currentSection._parent; - this._dedent(); -}; - -/** - * HelpFormatter#addText(text) -> Void - * - text (string): plain text - * - * Add plain text into current section - * - * ##### Example - * - * formatter.startSection(actionGroup.title); - * formatter.addText(actionGroup.description); - * formatter.addArguments(actionGroup._groupActions); - * formatter.endSection(); - * - **/ -HelpFormatter.prototype.addText = function (text) { - if (text && text !== c.SUPPRESS) { - this._addItem(this._formatText, [ text ]); - } -}; - -/** - * HelpFormatter#addUsage(usage, actions, groups, prefix) -> Void - * - usage (string): usage text - * - actions (array): actions list - * - groups (array): groups list - * - prefix (string): usage prefix - * - * Add usage data into current section - * - * ##### Example - * - * formatter.addUsage(this.usage, this._actions, []); - * return formatter.formatHelp(); - * - **/ -HelpFormatter.prototype.addUsage = function (usage, actions, groups, prefix) { - if (usage !== c.SUPPRESS) { - this._addItem(this._formatUsage, [ usage, actions, groups, prefix ]); - } -}; - -/** - * HelpFormatter#addArgument(action) -> Void - * - action (object): action - * - * Add argument into current section - * - * Single variant of [[HelpFormatter#addArguments]] - **/ -HelpFormatter.prototype.addArgument = function (action) { - if (action.help !== c.SUPPRESS) { - var self = this; - - // find all invocations - var invocations = [ this._formatActionInvocation(action) ]; - var invocationLength = invocations[0].length; - - var actionLength; - - if (action._getSubactions) { - this._indent(); - action._getSubactions().forEach(function (subaction) { - - var invocationNew = self._formatActionInvocation(subaction); - invocations.push(invocationNew); - invocationLength = Math.max(invocationLength, invocationNew.length); - - }); - this._dedent(); - } - - // update the maximum item length - actionLength = invocationLength + this._currentIndent; - this._actionMaxLength = Math.max(this._actionMaxLength, actionLength); - - // add the item to the list - this._addItem(this._formatAction, [ action ]); - } -}; - -/** - * HelpFormatter#addArguments(actions) -> Void - * - actions (array): actions list - * - * Mass add arguments into current section - * - * ##### Example - * - * formatter.startSection(actionGroup.title); - * formatter.addText(actionGroup.description); - * formatter.addArguments(actionGroup._groupActions); - * formatter.endSection(); - * - **/ -HelpFormatter.prototype.addArguments = function (actions) { - var self = this; - actions.forEach(function (action) { - self.addArgument(action); - }); -}; - -// -// Help-formatting methods -// - -/** - * HelpFormatter#formatHelp -> string - * - * Format help - * - * ##### Example - * - * formatter.addText(this.epilog); - * return formatter.formatHelp(); - * - **/ -HelpFormatter.prototype.formatHelp = function () { - var help = this._rootSection.formatHelp(this); - if (help) { - help = help.replace(this._longBreakMatcher, c.EOL + c.EOL); - help = $$.trimChars(help, c.EOL) + c.EOL; - } - return help; -}; - -HelpFormatter.prototype._joinParts = function (partStrings) { - return partStrings.filter(function (part) { - return (part && part !== c.SUPPRESS); - }).join(''); -}; - -HelpFormatter.prototype._formatUsage = function (usage, actions, groups, prefix) { - if (!prefix && typeof prefix !== 'string') { - prefix = 'usage: '; - } - - actions = actions || []; - groups = groups || []; - - - // if usage is specified, use that - if (usage) { - usage = sprintf(usage, { prog: this._prog }); - - // if no optionals or positionals are available, usage is just prog - } else if (!usage && actions.length === 0) { - usage = this._prog; - - // if optionals and positionals are available, calculate usage - } else if (!usage) { - var prog = this._prog; - var optionals = []; - var positionals = []; - var actionUsage; - var textWidth; - - // split optionals from positionals - actions.forEach(function (action) { - if (action.isOptional()) { - optionals.push(action); - } else { - positionals.push(action); - } - }); - - // build full usage string - actionUsage = this._formatActionsUsage([].concat(optionals, positionals), groups); - usage = [ prog, actionUsage ].join(' '); - - // wrap the usage parts if it's too long - textWidth = this._width - this._currentIndent; - if ((prefix.length + usage.length) > textWidth) { - - // break usage into wrappable parts - var regexpPart = new RegExp('\\(.*?\\)+|\\[.*?\\]+|\\S+', 'g'); - var optionalUsage = this._formatActionsUsage(optionals, groups); - var positionalUsage = this._formatActionsUsage(positionals, groups); - - - var optionalParts = optionalUsage.match(regexpPart); - var positionalParts = positionalUsage.match(regexpPart) || []; - - if (optionalParts.join(' ') !== optionalUsage) { - throw new Error('assert "optionalParts.join(\' \') === optionalUsage"'); - } - if (positionalParts.join(' ') !== positionalUsage) { - throw new Error('assert "positionalParts.join(\' \') === positionalUsage"'); - } - - // helper for wrapping lines - /*eslint-disable func-style*/ // node 0.10 compat - var _getLines = function (parts, indent, prefix) { - var lines = []; - var line = []; - - var lineLength = prefix ? prefix.length - 1 : indent.length - 1; - - parts.forEach(function (part) { - if (lineLength + 1 + part.length > textWidth) { - lines.push(indent + line.join(' ')); - line = []; - lineLength = indent.length - 1; - } - line.push(part); - lineLength += part.length + 1; - }); - - if (line) { - lines.push(indent + line.join(' ')); - } - if (prefix) { - lines[0] = lines[0].substr(indent.length); - } - return lines; - }; - - var lines, indent, parts; - // if prog is short, follow it with optionals or positionals - if (prefix.length + prog.length <= 0.75 * textWidth) { - indent = $$.repeat(' ', (prefix.length + prog.length + 1)); - if (optionalParts) { - lines = [].concat( - _getLines([ prog ].concat(optionalParts), indent, prefix), - _getLines(positionalParts, indent) - ); - } else if (positionalParts) { - lines = _getLines([ prog ].concat(positionalParts), indent, prefix); - } else { - lines = [ prog ]; - } - - // if prog is long, put it on its own line - } else { - indent = $$.repeat(' ', prefix.length); - parts = optionalParts.concat(positionalParts); - lines = _getLines(parts, indent); - if (lines.length > 1) { - lines = [].concat( - _getLines(optionalParts, indent), - _getLines(positionalParts, indent) - ); - } - lines = [ prog ].concat(lines); - } - // join lines into usage - usage = lines.join(c.EOL); - } - } - - // prefix with 'usage:' - return prefix + usage + c.EOL + c.EOL; -}; - -HelpFormatter.prototype._formatActionsUsage = function (actions, groups) { - // find group indices and identify actions in groups - var groupActions = []; - var inserts = []; - var self = this; - - groups.forEach(function (group) { - var end; - var i; - - var start = actions.indexOf(group._groupActions[0]); - if (start >= 0) { - end = start + group._groupActions.length; - - //if (actions.slice(start, end) === group._groupActions) { - if ($$.arrayEqual(actions.slice(start, end), group._groupActions)) { - group._groupActions.forEach(function (action) { - groupActions.push(action); - }); - - if (!group.required) { - if (inserts[start]) { - inserts[start] += ' ['; - } else { - inserts[start] = '['; - } - inserts[end] = ']'; - } else { - if (inserts[start]) { - inserts[start] += ' ('; - } else { - inserts[start] = '('; - } - inserts[end] = ')'; - } - for (i = start + 1; i < end; i += 1) { - inserts[i] = '|'; - } - } - } - }); - - // collect all actions format strings - var parts = []; - - actions.forEach(function (action, actionIndex) { - var part; - var optionString; - var argsDefault; - var argsString; - - // suppressed arguments are marked with None - // remove | separators for suppressed arguments - if (action.help === c.SUPPRESS) { - parts.push(null); - if (inserts[actionIndex] === '|') { - inserts.splice(actionIndex, actionIndex); - } else if (inserts[actionIndex + 1] === '|') { - inserts.splice(actionIndex + 1, actionIndex + 1); - } - - // produce all arg strings - } else if (!action.isOptional()) { - part = self._formatArgs(action, action.dest); - - // if it's in a group, strip the outer [] - if (groupActions.indexOf(action) >= 0) { - if (part[0] === '[' && part[part.length - 1] === ']') { - part = part.slice(1, -1); - } - } - // add the action string to the list - parts.push(part); - - // produce the first way to invoke the option in brackets - } else { - optionString = action.optionStrings[0]; - - // if the Optional doesn't take a value, format is: -s or --long - if (action.nargs === 0) { - part = '' + optionString; - - // if the Optional takes a value, format is: -s ARGS or --long ARGS - } else { - argsDefault = action.dest.toUpperCase(); - argsString = self._formatArgs(action, argsDefault); - part = optionString + ' ' + argsString; - } - // make it look optional if it's not required or in a group - if (!action.required && groupActions.indexOf(action) < 0) { - part = '[' + part + ']'; - } - // add the action string to the list - parts.push(part); - } - }); - - // insert things at the necessary indices - for (var i = inserts.length - 1; i >= 0; --i) { - if (inserts[i] !== null) { - parts.splice(i, 0, inserts[i]); - } - } - - // join all the action items with spaces - var text = parts.filter(function (part) { - return !!part; - }).join(' '); - - // clean up separators for mutually exclusive groups - text = text.replace(/([\[(]) /g, '$1'); // remove spaces - text = text.replace(/ ([\])])/g, '$1'); - text = text.replace(/\[ *\]/g, ''); // remove empty groups - text = text.replace(/\( *\)/g, ''); - text = text.replace(/\(([^|]*)\)/g, '$1'); // remove () from single action groups - - text = text.trim(); - - // return the text - return text; -}; - -HelpFormatter.prototype._formatText = function (text) { - text = sprintf(text, { prog: this._prog }); - var textWidth = this._width - this._currentIndent; - var indentIncriment = $$.repeat(' ', this._currentIndent); - return this._fillText(text, textWidth, indentIncriment) + c.EOL + c.EOL; -}; - -HelpFormatter.prototype._formatAction = function (action) { - var self = this; - - var helpText; - var helpLines; - var parts; - var indentFirst; - - // determine the required width and the entry label - var helpPosition = Math.min(this._actionMaxLength + 2, this._maxHelpPosition); - var helpWidth = this._width - helpPosition; - var actionWidth = helpPosition - this._currentIndent - 2; - var actionHeader = this._formatActionInvocation(action); - - // no help; start on same line and add a final newline - if (!action.help) { - actionHeader = $$.repeat(' ', this._currentIndent) + actionHeader + c.EOL; - - // short action name; start on the same line and pad two spaces - } else if (actionHeader.length <= actionWidth) { - actionHeader = $$.repeat(' ', this._currentIndent) + - actionHeader + - ' ' + - $$.repeat(' ', actionWidth - actionHeader.length); - indentFirst = 0; - - // long action name; start on the next line - } else { - actionHeader = $$.repeat(' ', this._currentIndent) + actionHeader + c.EOL; - indentFirst = helpPosition; - } - - // collect the pieces of the action help - parts = [ actionHeader ]; - - // if there was help for the action, add lines of help text - if (action.help) { - helpText = this._expandHelp(action); - helpLines = this._splitLines(helpText, helpWidth); - parts.push($$.repeat(' ', indentFirst) + helpLines[0] + c.EOL); - helpLines.slice(1).forEach(function (line) { - parts.push($$.repeat(' ', helpPosition) + line + c.EOL); - }); - - // or add a newline if the description doesn't end with one - } else if (actionHeader.charAt(actionHeader.length - 1) !== c.EOL) { - parts.push(c.EOL); - } - // if there are any sub-actions, add their help as well - if (action._getSubactions) { - this._indent(); - action._getSubactions().forEach(function (subaction) { - parts.push(self._formatAction(subaction)); - }); - this._dedent(); - } - // return a single string - return this._joinParts(parts); -}; - -HelpFormatter.prototype._formatActionInvocation = function (action) { - if (!action.isOptional()) { - var format_func = this._metavarFormatter(action, action.dest); - var metavars = format_func(1); - return metavars[0]; - } - - var parts = []; - var argsDefault; - var argsString; - - // if the Optional doesn't take a value, format is: -s, --long - if (action.nargs === 0) { - parts = parts.concat(action.optionStrings); - - // if the Optional takes a value, format is: -s ARGS, --long ARGS - } else { - argsDefault = action.dest.toUpperCase(); - argsString = this._formatArgs(action, argsDefault); - action.optionStrings.forEach(function (optionString) { - parts.push(optionString + ' ' + argsString); - }); - } - return parts.join(', '); -}; - -HelpFormatter.prototype._metavarFormatter = function (action, metavarDefault) { - var result; - - if (action.metavar || action.metavar === '') { - result = action.metavar; - } else if (action.choices) { - var choices = action.choices; - - if (typeof choices === 'string') { - choices = choices.split('').join(', '); - } else if (Array.isArray(choices)) { - choices = choices.join(','); - } else { - choices = Object.keys(choices).join(','); - } - result = '{' + choices + '}'; - } else { - result = metavarDefault; - } - - return function (size) { - if (Array.isArray(result)) { - return result; - } - - var metavars = []; - for (var i = 0; i < size; i += 1) { - metavars.push(result); - } - return metavars; - }; -}; - -HelpFormatter.prototype._formatArgs = function (action, metavarDefault) { - var result; - var metavars; - - var buildMetavar = this._metavarFormatter(action, metavarDefault); - - switch (action.nargs) { - /*eslint-disable no-undefined*/ - case undefined: - case null: - metavars = buildMetavar(1); - result = '' + metavars[0]; - break; - case c.OPTIONAL: - metavars = buildMetavar(1); - result = '[' + metavars[0] + ']'; - break; - case c.ZERO_OR_MORE: - metavars = buildMetavar(2); - result = '[' + metavars[0] + ' [' + metavars[1] + ' ...]]'; - break; - case c.ONE_OR_MORE: - metavars = buildMetavar(2); - result = '' + metavars[0] + ' [' + metavars[1] + ' ...]'; - break; - case c.REMAINDER: - result = '...'; - break; - case c.PARSER: - metavars = buildMetavar(1); - result = metavars[0] + ' ...'; - break; - default: - metavars = buildMetavar(action.nargs); - result = metavars.join(' '); - } - return result; -}; - -HelpFormatter.prototype._expandHelp = function (action) { - var params = { prog: this._prog }; - - Object.keys(action).forEach(function (actionProperty) { - var actionValue = action[actionProperty]; - - if (actionValue !== c.SUPPRESS) { - params[actionProperty] = actionValue; - } - }); - - if (params.choices) { - if (typeof params.choices === 'string') { - params.choices = params.choices.split('').join(', '); - } else if (Array.isArray(params.choices)) { - params.choices = params.choices.join(', '); - } else { - params.choices = Object.keys(params.choices).join(', '); - } - } - - return sprintf(this._getHelpString(action), params); -}; - -HelpFormatter.prototype._splitLines = function (text, width) { - var lines = []; - var delimiters = [ ' ', '.', ',', '!', '?' ]; - var re = new RegExp('[' + delimiters.join('') + '][^' + delimiters.join('') + ']*$'); - - text = text.replace(/[\n\|\t]/g, ' '); - - text = text.trim(); - text = text.replace(this._whitespaceMatcher, ' '); - - // Wraps the single paragraph in text (a string) so every line - // is at most width characters long. - text.split(c.EOL).forEach(function (line) { - if (width >= line.length) { - lines.push(line); - return; - } - - var wrapStart = 0; - var wrapEnd = width; - var delimiterIndex = 0; - while (wrapEnd <= line.length) { - if (wrapEnd !== line.length && delimiters.indexOf(line[wrapEnd] < -1)) { - delimiterIndex = (re.exec(line.substring(wrapStart, wrapEnd)) || {}).index; - wrapEnd = wrapStart + delimiterIndex + 1; - } - lines.push(line.substring(wrapStart, wrapEnd)); - wrapStart = wrapEnd; - wrapEnd += width; - } - if (wrapStart < line.length) { - lines.push(line.substring(wrapStart, wrapEnd)); - } - }); - - return lines; -}; - -HelpFormatter.prototype._fillText = function (text, width, indent) { - var lines = this._splitLines(text, width); - lines = lines.map(function (line) { - return indent + line; - }); - return lines.join(c.EOL); -}; - -HelpFormatter.prototype._getHelpString = function (action) { - return action.help; -}; diff --git a/node_modules/argparse/lib/namespace.js b/node_modules/argparse/lib/namespace.js deleted file mode 100644 index a860de9ec..000000000 --- a/node_modules/argparse/lib/namespace.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * class Namespace - * - * Simple object for storing attributes. Implements equality by attribute names - * and values, and provides a simple string representation. - * - * See also [original guide][1] - * - * [1]:http://docs.python.org/dev/library/argparse.html#the-namespace-object - **/ -'use strict'; - -var $$ = require('./utils'); - -/** - * new Namespace(options) - * - options(object): predefined propertis for result object - * - **/ -var Namespace = module.exports = function Namespace(options) { - $$.extend(this, options); -}; - -/** - * Namespace#isset(key) -> Boolean - * - key (string|number): property name - * - * Tells whenever `namespace` contains given `key` or not. - **/ -Namespace.prototype.isset = function (key) { - return $$.has(this, key); -}; - -/** - * Namespace#set(key, value) -> self - * -key (string|number|object): propery name - * -value (mixed): new property value - * - * Set the property named key with value. - * If key object then set all key properties to namespace object - **/ -Namespace.prototype.set = function (key, value) { - if (typeof (key) === 'object') { - $$.extend(this, key); - } else { - this[key] = value; - } - return this; -}; - -/** - * Namespace#get(key, defaultValue) -> mixed - * - key (string|number): property name - * - defaultValue (mixed): default value - * - * Return the property key or defaulValue if not set - **/ -Namespace.prototype.get = function (key, defaultValue) { - return !this[key] ? defaultValue : this[key]; -}; - -/** - * Namespace#unset(key, defaultValue) -> mixed - * - key (string|number): property name - * - defaultValue (mixed): default value - * - * Return data[key](and delete it) or defaultValue - **/ -Namespace.prototype.unset = function (key, defaultValue) { - var value = this[key]; - if (value !== null) { - delete this[key]; - return value; - } - return defaultValue; -}; diff --git a/node_modules/argparse/lib/utils.js b/node_modules/argparse/lib/utils.js deleted file mode 100644 index 4a9cf3edb..000000000 --- a/node_modules/argparse/lib/utils.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -exports.repeat = function (str, num) { - var result = ''; - for (var i = 0; i < num; i++) { result += str; } - return result; -}; - -exports.arrayEqual = function (a, b) { - if (a.length !== b.length) { return false; } - for (var i = 0; i < a.length; i++) { - if (a[i] !== b[i]) { return false; } - } - return true; -}; - -exports.trimChars = function (str, chars) { - var start = 0; - var end = str.length - 1; - while (chars.indexOf(str.charAt(start)) >= 0) { start++; } - while (chars.indexOf(str.charAt(end)) >= 0) { end--; } - return str.slice(start, end + 1); -}; - -exports.capitalize = function (str) { - return str.charAt(0).toUpperCase() + str.slice(1); -}; - -exports.arrayUnion = function () { - var result = []; - for (var i = 0, values = {}; i < arguments.length; i++) { - var arr = arguments[i]; - for (var j = 0; j < arr.length; j++) { - if (!values[arr[j]]) { - values[arr[j]] = true; - result.push(arr[j]); - } - } - } - return result; -}; - -function has(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -exports.has = has; - -exports.extend = function (dest, src) { - for (var i in src) { - if (has(src, i)) { dest[i] = src[i]; } - } -}; - -exports.trimEnd = function (str) { - return str.replace(/\s+$/g, ''); -}; diff --git a/node_modules/argparse/package.json b/node_modules/argparse/package.json deleted file mode 100644 index ff3add189..000000000 --- a/node_modules/argparse/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "_args": [ - [ - "argparse@1.0.10", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "argparse@1.0.10", - "_id": "argparse@1.0.10", - "_inBundle": false, - "_integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "_location": "/argparse", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "argparse@1.0.10", - "name": "argparse", - "escapedName": "argparse", - "rawSpec": "1.0.10", - "saveSpec": null, - "fetchSpec": "1.0.10" - }, - "_requiredBy": [ - "/js-yaml" - ], - "_resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "_spec": "1.0.10", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "bugs": { - "url": "https://github.com/nodeca/argparse/issues" - }, - "contributors": [ - { - "name": "Eugene Shkuropat" - }, - { - "name": "Paul Jacobson" - } - ], - "dependencies": { - "sprintf-js": "~1.0.2" - }, - "description": "Very powerful CLI arguments parser. Native port of argparse - python's options parsing library", - "devDependencies": { - "eslint": "^2.13.1", - "istanbul": "^0.4.5", - "mocha": "^3.1.0", - "ndoc": "^5.0.1" - }, - "files": [ - "index.js", - "lib/" - ], - "homepage": "https://github.com/nodeca/argparse#readme", - "keywords": [ - "cli", - "parser", - "argparse", - "option", - "args" - ], - "license": "MIT", - "name": "argparse", - "repository": { - "type": "git", - "url": "git+https://github.com/nodeca/argparse.git" - }, - "scripts": { - "test": "make test" - }, - "version": "1.0.10" -} diff --git a/node_modules/arr-diff/LICENSE b/node_modules/arr-diff/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/arr-diff/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/arr-diff/README.md b/node_modules/arr-diff/README.md deleted file mode 100644 index 961f5c3f1..000000000 --- a/node_modules/arr-diff/README.md +++ /dev/null @@ -1,130 +0,0 @@ -# arr-diff [![NPM version](https://img.shields.io/npm/v/arr-diff.svg?style=flat)](https://www.npmjs.com/package/arr-diff) [![NPM monthly downloads](https://img.shields.io/npm/dm/arr-diff.svg?style=flat)](https://npmjs.org/package/arr-diff) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/arr-diff.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/arr-diff) - -> Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save arr-diff -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add arr-diff -``` - -Install with [bower](https://bower.io/) - -```sh -$ bower install arr-diff --save -``` - -## Usage - -Returns the difference between the first array and additional arrays. - -```js -var diff = require('arr-diff'); - -var a = ['a', 'b', 'c', 'd']; -var b = ['b', 'c']; - -console.log(diff(a, b)) -//=> ['a', 'd'] -``` - -## Benchmarks - -This library versus [array-differ](https://github.com/sindresorhus/array-differ), on April 14, 2017: - -``` -Benchmarking: (4 of 4) - · long-dupes - · long - · med - · short - -# benchmark/fixtures/long-dupes.js (100804 bytes) - arr-diff-3.0.0 x 822 ops/sec ±0.67% (86 runs sampled) - arr-diff-4.0.0 x 2,141 ops/sec ±0.42% (89 runs sampled) - array-differ x 708 ops/sec ±0.70% (89 runs sampled) - - fastest is arr-diff-4.0.0 - -# benchmark/fixtures/long.js (94529 bytes) - arr-diff-3.0.0 x 882 ops/sec ±0.60% (87 runs sampled) - arr-diff-4.0.0 x 2,329 ops/sec ±0.97% (83 runs sampled) - array-differ x 769 ops/sec ±0.61% (90 runs sampled) - - fastest is arr-diff-4.0.0 - -# benchmark/fixtures/med.js (708 bytes) - arr-diff-3.0.0 x 856,150 ops/sec ±0.42% (89 runs sampled) - arr-diff-4.0.0 x 4,665,249 ops/sec ±1.06% (89 runs sampled) - array-differ x 653,888 ops/sec ±1.02% (86 runs sampled) - - fastest is arr-diff-4.0.0 - -# benchmark/fixtures/short.js (60 bytes) - arr-diff-3.0.0 x 3,078,467 ops/sec ±0.77% (93 runs sampled) - arr-diff-4.0.0 x 9,213,296 ops/sec ±0.65% (89 runs sampled) - array-differ x 1,337,051 ops/sec ±0.91% (92 runs sampled) - - fastest is arr-diff-4.0.0 -``` - -## About - -### Related projects - -* [arr-flatten](https://www.npmjs.com/package/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten. | [homepage](https://github.com/jonschlinkert/arr-flatten "Recursively flatten an array or arrays. This is the fastest implementation of array flatten.") -* [array-filter](https://www.npmjs.com/package/array-filter): Array#filter for older browsers. | [homepage](https://github.com/juliangruber/array-filter "Array#filter for older browsers.") -* [array-intersection](https://www.npmjs.com/package/array-intersection): Return an array with the unique values present in _all_ given arrays using strict equality… [more](https://github.com/jonschlinkert/array-intersection) | [homepage](https://github.com/jonschlinkert/array-intersection "Return an array with the unique values present in _all_ given arrays using strict equality for comparisons.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 33 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [paulmillr](https://github.com/paulmillr) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 14, 2017._ \ No newline at end of file diff --git a/node_modules/arr-diff/index.js b/node_modules/arr-diff/index.js deleted file mode 100644 index 90f280772..000000000 --- a/node_modules/arr-diff/index.js +++ /dev/null @@ -1,47 +0,0 @@ -/*! - * arr-diff - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -module.exports = function diff(arr/*, arrays*/) { - var len = arguments.length; - var idx = 0; - while (++idx < len) { - arr = diffArray(arr, arguments[idx]); - } - return arr; -}; - -function diffArray(one, two) { - if (!Array.isArray(two)) { - return one.slice(); - } - - var tlen = two.length - var olen = one.length; - var idx = -1; - var arr = []; - - while (++idx < olen) { - var ele = one[idx]; - - var hasEle = false; - for (var i = 0; i < tlen; i++) { - var val = two[i]; - - if (ele === val) { - hasEle = true; - break; - } - } - - if (hasEle === false) { - arr.push(ele); - } - } - return arr; -} diff --git a/node_modules/arr-diff/package.json b/node_modules/arr-diff/package.json deleted file mode 100644 index c02fc2d27..000000000 --- a/node_modules/arr-diff/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_args": [ - [ - "arr-diff@4.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "arr-diff@4.0.0", - "_id": "arr-diff@4.0.0", - "_inBundle": false, - "_integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "_location": "/arr-diff", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "arr-diff@4.0.0", - "name": "arr-diff", - "escapedName": "arr-diff", - "rawSpec": "4.0.0", - "saveSpec": null, - "fetchSpec": "4.0.0" - }, - "_requiredBy": [ - "/micromatch", - "/nanomatch" - ], - "_resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "_spec": "4.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/arr-diff/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "email": "jon.schlinkert@sellside.com", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Paul Miller", - "email": "paul+gh@paulmillr.com", - "url": "paulmillr.com" - } - ], - "dependencies": {}, - "description": "Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "arr-flatten": "^1.0.1", - "array-differ": "^1.0.0", - "benchmarked": "^0.2.4", - "gulp-format-md": "^0.1.9", - "minimist": "^1.2.0", - "mocha": "^2.4.5" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/arr-diff", - "keywords": [ - "arr", - "array", - "array differ", - "array-differ", - "diff", - "differ", - "difference" - ], - "license": "MIT", - "main": "index.js", - "name": "arr-diff", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/arr-diff.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "arr-flatten", - "array-filter", - "array-intersection" - ] - }, - "reflinks": [ - "array-differ", - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "4.0.0" -} diff --git a/node_modules/arr-flatten/LICENSE b/node_modules/arr-flatten/LICENSE deleted file mode 100644 index 3f2eca18f..000000000 --- a/node_modules/arr-flatten/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/arr-flatten/README.md b/node_modules/arr-flatten/README.md deleted file mode 100644 index 7dc7a9746..000000000 --- a/node_modules/arr-flatten/README.md +++ /dev/null @@ -1,86 +0,0 @@ -# arr-flatten [![NPM version](https://img.shields.io/npm/v/arr-flatten.svg?style=flat)](https://www.npmjs.com/package/arr-flatten) [![NPM monthly downloads](https://img.shields.io/npm/dm/arr-flatten.svg?style=flat)](https://npmjs.org/package/arr-flatten) [![NPM total downloads](https://img.shields.io/npm/dt/arr-flatten.svg?style=flat)](https://npmjs.org/package/arr-flatten) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/arr-flatten.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/arr-flatten) [![Windows Build Status](https://img.shields.io/appveyor/ci/jonschlinkert/arr-flatten.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/jonschlinkert/arr-flatten) - -> Recursively flatten an array or arrays. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save arr-flatten -``` - -## Install - -Install with [bower](https://bower.io/) - -```sh -$ bower install arr-flatten --save -``` - -## Usage - -```js -var flatten = require('arr-flatten'); - -flatten(['a', ['b', ['c']], 'd', ['e']]); -//=> ['a', 'b', 'c', 'd', 'e'] -``` - -## Why another flatten utility? - -I wanted the fastest implementation I could find, with implementation choices that should work for 95% of use cases, but no cruft to cover the other 5%. - -## About - -### Related projects - -* [arr-filter](https://www.npmjs.com/package/arr-filter): Faster alternative to javascript's native filter method. | [homepage](https://github.com/jonschlinkert/arr-filter "Faster alternative to javascript's native filter method.") -* [arr-union](https://www.npmjs.com/package/arr-union): Combines a list of arrays, returning a single array with unique values, using strict equality… [more](https://github.com/jonschlinkert/arr-union) | [homepage](https://github.com/jonschlinkert/arr-union "Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.") -* [array-each](https://www.npmjs.com/package/array-each): Loop over each item in an array and call the given function on every element. | [homepage](https://github.com/jonschlinkert/array-each "Loop over each item in an array and call the given function on every element.") -* [array-unique](https://www.npmjs.com/package/array-unique): Remove duplicate values from an array. Fastest ES5 implementation. | [homepage](https://github.com/jonschlinkert/array-unique "Remove duplicate values from an array. Fastest ES5 implementation.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 20 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [lukeed](https://github.com/lukeed) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 05, 2017._ \ No newline at end of file diff --git a/node_modules/arr-flatten/index.js b/node_modules/arr-flatten/index.js deleted file mode 100644 index 0cb4ea4ec..000000000 --- a/node_modules/arr-flatten/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * arr-flatten - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -module.exports = function (arr) { - return flat(arr, []); -}; - -function flat(arr, res) { - var i = 0, cur; - var len = arr.length; - for (; i < len; i++) { - cur = arr[i]; - Array.isArray(cur) ? flat(cur, res) : res.push(cur); - } - return res; -} diff --git a/node_modules/arr-flatten/package.json b/node_modules/arr-flatten/package.json deleted file mode 100644 index 0c468ce76..000000000 --- a/node_modules/arr-flatten/package.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "_args": [ - [ - "arr-flatten@1.1.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "arr-flatten@1.1.0", - "_id": "arr-flatten@1.1.0", - "_inBundle": false, - "_integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "_location": "/arr-flatten", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "arr-flatten@1.1.0", - "name": "arr-flatten", - "escapedName": "arr-flatten", - "rawSpec": "1.1.0", - "saveSpec": null, - "fetchSpec": "1.1.0" - }, - "_requiredBy": [ - "/braces" - ], - "_resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "_spec": "1.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/arr-flatten/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Luke Edwards", - "url": "https://lukeed.com" - } - ], - "description": "Recursively flatten an array or arrays.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "array-flatten": "^2.1.1", - "array-slice": "^1.0.0", - "benchmarked": "^1.0.0", - "compute-flatten": "^1.0.0", - "flatit": "^1.1.1", - "flatten": "^1.0.2", - "flatten-array": "^1.0.0", - "glob": "^7.1.1", - "gulp-format-md": "^0.1.12", - "just-flatten-it": "^1.1.23", - "lodash.flattendeep": "^4.4.0", - "m_flattened": "^1.0.1", - "mocha": "^3.2.0", - "utils-flatten": "^1.0.0", - "write": "^0.3.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/arr-flatten", - "keywords": [ - "arr", - "array", - "elements", - "flat", - "flatten", - "nested", - "recurse", - "recursive", - "recursively" - ], - "license": "MIT", - "main": "index.js", - "name": "arr-flatten", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/arr-flatten.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "arr-filter", - "arr-union", - "array-each", - "array-unique" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.1.0" -} diff --git a/node_modules/arr-union/LICENSE b/node_modules/arr-union/LICENSE deleted file mode 100644 index 39245ac1c..000000000 --- a/node_modules/arr-union/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/arr-union/README.md b/node_modules/arr-union/README.md deleted file mode 100644 index b3cd4f48d..000000000 --- a/node_modules/arr-union/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# arr-union [![NPM version](https://img.shields.io/npm/v/arr-union.svg)](https://www.npmjs.com/package/arr-union) [![Build Status](https://img.shields.io/travis/jonschlinkert/arr-union.svg)](https://travis-ci.org/jonschlinkert/arr-union) - -> Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm i arr-union --save -``` - -## Benchmarks - -This library is **10-20 times faster** and more performant than [array-union](https://github.com/sindresorhus/array-union). - -See the [benchmarks](./benchmark). - -```sh -#1: five-arrays - array-union x 511,121 ops/sec ±0.80% (96 runs sampled) - arr-union x 5,716,039 ops/sec ±0.86% (93 runs sampled) - -#2: ten-arrays - array-union x 245,196 ops/sec ±0.69% (94 runs sampled) - arr-union x 1,850,786 ops/sec ±0.84% (97 runs sampled) - -#3: two-arrays - array-union x 563,869 ops/sec ±0.97% (94 runs sampled) - arr-union x 9,602,852 ops/sec ±0.87% (92 runs sampled) -``` - -## Usage - -```js -var union = require('arr-union'); - -union(['a'], ['b', 'c'], ['d', 'e', 'f']); -//=> ['a', 'b', 'c', 'd', 'e', 'f'] -``` - -Returns only unique elements: - -```js -union(['a', 'a'], ['b', 'c']); -//=> ['a', 'b', 'c'] -``` - -## Related projects - -* [arr-diff](https://www.npmjs.com/package/arr-diff): Returns an array with only the unique values from the first array, by excluding all… [more](https://www.npmjs.com/package/arr-diff) | [homepage](https://github.com/jonschlinkert/arr-diff) -* [arr-filter](https://www.npmjs.com/package/arr-filter): Faster alternative to javascript's native filter method. | [homepage](https://github.com/jonschlinkert/arr-filter) -* [arr-flatten](https://www.npmjs.com/package/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten. | [homepage](https://github.com/jonschlinkert/arr-flatten) -* [arr-map](https://www.npmjs.com/package/arr-map): Faster, node.js focused alternative to JavaScript's native array map. | [homepage](https://github.com/jonschlinkert/arr-map) -* [arr-pluck](https://www.npmjs.com/package/arr-pluck): Retrieves the value of a specified property from all elements in the collection. | [homepage](https://github.com/jonschlinkert/arr-pluck) -* [arr-reduce](https://www.npmjs.com/package/arr-reduce): Fast array reduce that also loops over sparse elements. | [homepage](https://github.com/jonschlinkert/arr-reduce) -* [array-unique](https://www.npmjs.com/package/array-unique): Return an array free of duplicate values. Fastest ES5 implementation. | [homepage](https://github.com/jonschlinkert/array-unique) - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/arr-union/issues/new). - -## Building docs - -Generate readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm i verb && npm run docs -``` - -Or, if [verb](https://github.com/verbose/verb) is installed globally: - -```sh -$ verb -``` - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2016 [Jon Schlinkert](https://github.com/jonschlinkert) -Released under the [MIT license](https://github.com/jonschlinkert/arr-union/blob/master/LICENSE). - -*** - -_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on February 23, 2016._ \ No newline at end of file diff --git a/node_modules/arr-union/index.js b/node_modules/arr-union/index.js deleted file mode 100644 index 5ae6c4a08..000000000 --- a/node_modules/arr-union/index.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -module.exports = function union(init) { - if (!Array.isArray(init)) { - throw new TypeError('arr-union expects the first argument to be an array.'); - } - - var len = arguments.length; - var i = 0; - - while (++i < len) { - var arg = arguments[i]; - if (!arg) continue; - - if (!Array.isArray(arg)) { - arg = [arg]; - } - - for (var j = 0; j < arg.length; j++) { - var ele = arg[j]; - - if (init.indexOf(ele) >= 0) { - continue; - } - init.push(ele); - } - } - return init; -}; diff --git a/node_modules/arr-union/package.json b/node_modules/arr-union/package.json deleted file mode 100644 index 991f6c2d9..000000000 --- a/node_modules/arr-union/package.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "_args": [ - [ - "arr-union@3.1.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "arr-union@3.1.0", - "_id": "arr-union@3.1.0", - "_inBundle": false, - "_integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "_location": "/arr-union", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "arr-union@3.1.0", - "name": "arr-union", - "escapedName": "arr-union", - "rawSpec": "3.1.0", - "saveSpec": null, - "fetchSpec": "3.1.0" - }, - "_requiredBy": [ - "/class-utils", - "/union-value" - ], - "_resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "_spec": "3.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/arr-union/issues" - }, - "description": "Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "array-union": "^1.0.1", - "array-unique": "^0.2.1", - "benchmarked": "^0.1.4", - "gulp-format-md": "^0.1.7", - "minimist": "^1.1.1", - "mocha": "*", - "should": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/arr-union", - "keywords": [ - "add", - "append", - "array", - "arrays", - "combine", - "concat", - "extend", - "union", - "uniq", - "unique", - "util", - "utility", - "utils" - ], - "license": "MIT", - "main": "index.js", - "name": "arr-union", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/arr-union.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "arr-diff", - "arr-flatten", - "arr-filter", - "arr-map", - "arr-pluck", - "arr-reduce", - "array-unique" - ] - }, - "reflinks": [ - "verb", - "array-union" - ], - "lint": { - "reflinks": true - } - }, - "version": "3.1.0" -} diff --git a/node_modules/array-sort/LICENSE b/node_modules/array-sort/LICENSE deleted file mode 100644 index c0d7f1362..000000000 --- a/node_modules/array-sort/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/array-sort/README.md b/node_modules/array-sort/README.md deleted file mode 100644 index 94d9ba7f7..000000000 --- a/node_modules/array-sort/README.md +++ /dev/null @@ -1,203 +0,0 @@ -# array-sort [![NPM version](https://img.shields.io/npm/v/array-sort.svg?style=flat)](https://www.npmjs.com/package/array-sort) [![NPM monthly downloads](https://img.shields.io/npm/dm/array-sort.svg?style=flat)](https://npmjs.org/package/array-sort) [![NPM total downloads](https://img.shields.io/npm/dt/array-sort.svg?style=flat)](https://npmjs.org/package/array-sort) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/array-sort.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/array-sort) [![Windows Build Status](https://img.shields.io/appveyor/ci/jonschlinkert/array-sort.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/jonschlinkert/array-sort) - -> Fast and powerful array sorting. Sort an array of objects by one or more properties. Any number of nested properties or custom comparison functions may be used. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save array-sort -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add array-sort -``` - -## Usage - -Sort an array by the given object property: - -```js -var arraySort = require('array-sort'); - -arraySort([{foo: 'y'}, {foo: 'z'}, {foo: 'x'}], 'foo'); -//=> [{foo: 'x'}, {foo: 'y'}, {foo: 'z'}] -``` - -**Reverse order** - -```js -arraySort([{foo: 'y'}, {foo: 'z'}, {foo: 'x'}], 'foo', {reverse: true}); -//=> [{foo: 'z'}, {foo: 'y'}, {foo: 'x'}] -``` - -## Params - -```js -arraySort(array, comparisonArgs); -``` - -* `array`: **{Array}** The array to sort -* `comparisonArgs`: **{Function|String|Array}**: One or more functions or object paths to use for sorting. - -## Examples - -**[Sort blog posts](examples/blog-posts.js)** - -```js -var arraySort = require('array-sort'); - -var posts = [ - { path: 'c.md', locals: { date: '2014-01-09' } }, - { path: 'a.md', locals: { date: '2014-01-02' } }, - { path: 'b.md', locals: { date: '2013-05-06' } }, -]; - -// sort by `locals.date` -console.log(arraySort(posts, 'locals.date')); - -// sort by `path` -console.log(arraySort(posts, 'path')); -``` - -**[Sort by multiple properties](examples/multiple-props.js)** - -```js -var arraySort = require('array-sort'); - -var posts = [ - { locals: { foo: 'bbb', date: '2013-05-06' }}, - { locals: { foo: 'aaa', date: '2012-01-02' }}, - { locals: { foo: 'ccc', date: '2014-01-02' }}, - { locals: { foo: 'ccc', date: '2015-01-02' }}, - { locals: { foo: 'bbb', date: '2014-06-01' }}, - { locals: { foo: 'aaa', date: '2014-02-02' }}, -]; - -// sort by `locals.foo`, then `locals.date` -var result = arraySort(posts, ['locals.foo', 'locals.date']); - -console.log(result); -// [ { locals: { foo: 'aaa', date: '2012-01-02' } }, -// { locals: { foo: 'aaa', date: '2014-02-02' } }, -// { locals: { foo: 'bbb', date: '2013-05-06' } }, -// { locals: { foo: 'bbb', date: '2014-06-01' } }, -// { locals: { foo: 'ccc', date: '2014-01-02' } }, -// { locals: { foo: 'ccc', date: '2015-01-02' } } ] -``` - -**[Custom function](examples/custom-function.js)** - -If custom functions are supplied, array elements are sorted according to the return value of the compare function. See the [docs for ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)`Array.sort()` for more details. - -```js -var arr = [ - {one: 'w', two: 'b'}, - {one: 'z', two: 'a'}, - {one: 'x', two: 'c'}, - {one: 'y', two: 'd'}, -]; - -function compare(prop) { - return function (a, b) { - return a[prop].localeCompare(b[prop]); - }; -} - -var result = arraySort(arr, function (a, b) { - return a.two.localeCompare(b.two); -}); - -console.log(result); -// [ { one: 'z', two: 'a' }, -// { one: 'w', two: 'b' }, -// { one: 'x', two: 'c' }, -// { one: 'y', two: 'd' } ] -``` - -**[Multiple custom functions](examples/custom-functions.js)** - -```js -var arr = [ - {foo: 'w', bar: 'y', baz: 'w'}, - {foo: 'x', bar: 'y', baz: 'w'}, - {foo: 'x', bar: 'y', baz: 'z'}, - {foo: 'x', bar: 'x', baz: 'w'}, -]; - -// reusable compare function -function compare(prop) { - return function (a, b) { - return a[prop].localeCompare(b[prop]); - }; -} - -// the `compare` functions can be a list or array -var result = arraySort(arr, compare('foo'), compare('bar'), compare('baz')); - -console.log(result); -// [ { foo: 'w', bar: 'y', baz: 'w' }, -// { foo: 'x', bar: 'x', baz: 'w' }, -// { foo: 'x', bar: 'y', baz: 'w' }, -// { foo: 'x', bar: 'y', baz: 'z' } ] -``` - -## About - -### Related projects - -* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value "Use property paths (`a.b.c`) to get a nested value from an object.") -* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value "Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths.") -* [sort-asc](https://www.npmjs.com/package/sort-asc): Sort array elements in ascending order. | [homepage](https://github.com/jonschlinkert/sort-asc "Sort array elements in ascending order.") -* [sort-desc](https://www.npmjs.com/package/sort-desc): Sort array elements in descending order. | [homepage](https://github.com/jonschlinkert/sort-desc "Sort array elements in descending order.") -* [sort-object](https://www.npmjs.com/package/sort-object): Sort the keys in an object. | [homepage](https://github.com/doowb/sort-object "Sort the keys in an object.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 10 | [jonschlinkert](https://github.com/jonschlinkert) | -| 4 | [doowb](https://github.com/doowb) | -| 1 | [iamstolis](https://github.com/iamstolis) | -| 1 | [wkevina](https://github.com/wkevina) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on September 11, 2017._ \ No newline at end of file diff --git a/node_modules/array-sort/index.js b/node_modules/array-sort/index.js deleted file mode 100644 index 01880e1a2..000000000 --- a/node_modules/array-sort/index.js +++ /dev/null @@ -1,105 +0,0 @@ -/*! - * array-sort - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var defaultCompare = require('default-compare'); -var typeOf = require('kind-of'); -var get = require('get-value'); - -/** - * Sort an array of objects by one or more properties. - * - * @param {Array} `arr` The Array to sort. - * @param {String|Array|Function} `props` One or more object paths or comparison functions. - * @param {Object} `opts` Pass `{ reverse: true }` to reverse the sort order. - * @return {Array} Returns a sorted array. - * @api public - */ - -function arraySort(arr, props, opts) { - if (arr == null) { - return []; - } - - if (!Array.isArray(arr)) { - throw new TypeError('array-sort expects an array.'); - } - - if (arguments.length === 1) { - return arr.sort(); - } - - var args = flatten([].slice.call(arguments, 1)); - - // if the last argument appears to be a plain object, - // it's not a valid `compare` arg, so it must be options. - if (typeOf(args[args.length - 1]) === 'object') { - opts = args.pop(); - } - return arr.sort(sortBy(args, opts)); -} - -/** - * Iterate over each comparison property or function until `1` or `-1` - * is returned. - * - * @param {String|Array|Function} `props` One or more object paths or comparison functions. - * @param {Object} `opts` Pass `{ reverse: true }` to reverse the sort order. - * @return {Array} - */ - -function sortBy(props, opts) { - opts = opts || {}; - - return function compareFn(a, b) { - var len = props.length, i = -1; - var result; - - while (++i < len) { - result = compare(props[i], a, b); - if (result !== 0) { - break; - } - } - if (opts.reverse === true) { - return result * -1; - } - return result; - }; -} - -/** - * Compare `a` to `b`. If an object `prop` is passed, then - * `a[prop]` is compared to `b[prop]` - */ - -function compare(prop, a, b) { - if (typeof prop === 'function') { - // expose `compare` to custom function - return prop(a, b, compare.bind(null, null)); - } - // compare object values - if (prop && typeof a === 'object' && typeof b === 'object') { - return compare(null, get(a, prop), get(b, prop)); - } - return defaultCompare(a, b); -} - -/** - * Flatten the given array. - */ - -function flatten(arr) { - return [].concat.apply([], arr); -} - -/** - * Expose `arraySort` - */ - -module.exports = arraySort; diff --git a/node_modules/array-sort/node_modules/kind-of/LICENSE b/node_modules/array-sort/node_modules/kind-of/LICENSE deleted file mode 100644 index 3f2eca18f..000000000 --- a/node_modules/array-sort/node_modules/kind-of/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/array-sort/node_modules/kind-of/README.md b/node_modules/array-sort/node_modules/kind-of/README.md deleted file mode 100644 index 170bf3049..000000000 --- a/node_modules/array-sort/node_modules/kind-of/README.md +++ /dev/null @@ -1,342 +0,0 @@ -# kind-of [![NPM version](https://img.shields.io/npm/v/kind-of.svg?style=flat)](https://www.npmjs.com/package/kind-of) [![NPM monthly downloads](https://img.shields.io/npm/dm/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![NPM total downloads](https://img.shields.io/npm/dt/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/kind-of.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/kind-of) - -> Get the native type of a value. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save kind-of -``` - -Install with [bower](https://bower.io/) - -```sh -$ bower install kind-of --save -``` - -## Why use this? - -1. [it's fast](#benchmarks) | [optimizations](#optimizations) -2. [better type checking](#better-type-checking) - -## Usage - -> es5, browser and es6 ready - -```js -var kindOf = require('kind-of'); - -kindOf(undefined); -//=> 'undefined' - -kindOf(null); -//=> 'null' - -kindOf(true); -//=> 'boolean' - -kindOf(false); -//=> 'boolean' - -kindOf(new Boolean(true)); -//=> 'boolean' - -kindOf(new Buffer('')); -//=> 'buffer' - -kindOf(42); -//=> 'number' - -kindOf(new Number(42)); -//=> 'number' - -kindOf('str'); -//=> 'string' - -kindOf(new String('str')); -//=> 'string' - -kindOf(arguments); -//=> 'arguments' - -kindOf({}); -//=> 'object' - -kindOf(Object.create(null)); -//=> 'object' - -kindOf(new Test()); -//=> 'object' - -kindOf(new Date()); -//=> 'date' - -kindOf([]); -//=> 'array' - -kindOf([1, 2, 3]); -//=> 'array' - -kindOf(new Array()); -//=> 'array' - -kindOf(/foo/); -//=> 'regexp' - -kindOf(new RegExp('foo')); -//=> 'regexp' - -kindOf(function () {}); -//=> 'function' - -kindOf(function * () {}); -//=> 'function' - -kindOf(new Function()); -//=> 'function' - -kindOf(new Map()); -//=> 'map' - -kindOf(new WeakMap()); -//=> 'weakmap' - -kindOf(new Set()); -//=> 'set' - -kindOf(new WeakSet()); -//=> 'weakset' - -kindOf(Symbol('str')); -//=> 'symbol' - -kindOf(new Int8Array()); -//=> 'int8array' - -kindOf(new Uint8Array()); -//=> 'uint8array' - -kindOf(new Uint8ClampedArray()); -//=> 'uint8clampedarray' - -kindOf(new Int16Array()); -//=> 'int16array' - -kindOf(new Uint16Array()); -//=> 'uint16array' - -kindOf(new Int32Array()); -//=> 'int32array' - -kindOf(new Uint32Array()); -//=> 'uint32array' - -kindOf(new Float32Array()); -//=> 'float32array' - -kindOf(new Float64Array()); -//=> 'float64array' -``` - -## Release history - -### v4.0.0 - -**Added** - -* `promise` support - -### v5.0.0 - -**Added** - -* `Set Iterator` and `Map Iterator` support - -**Fixed** - -* Now returns `generatorfunction` for generator functions - -## Benchmarks - -Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of). -Note that performaces is slower for es6 features `Map`, `WeakMap`, `Set` and `WeakSet`. - -```bash -#1: array - current x 23,329,397 ops/sec ±0.82% (94 runs sampled) - lib-type-of x 4,170,273 ops/sec ±0.55% (94 runs sampled) - lib-typeof x 9,686,935 ops/sec ±0.59% (98 runs sampled) - -#2: boolean - current x 27,197,115 ops/sec ±0.85% (94 runs sampled) - lib-type-of x 3,145,791 ops/sec ±0.73% (97 runs sampled) - lib-typeof x 9,199,562 ops/sec ±0.44% (99 runs sampled) - -#3: date - current x 20,190,117 ops/sec ±0.86% (92 runs sampled) - lib-type-of x 5,166,970 ops/sec ±0.74% (94 runs sampled) - lib-typeof x 9,610,821 ops/sec ±0.50% (96 runs sampled) - -#4: function - current x 23,855,460 ops/sec ±0.60% (97 runs sampled) - lib-type-of x 5,667,740 ops/sec ±0.54% (100 runs sampled) - lib-typeof x 10,010,644 ops/sec ±0.44% (100 runs sampled) - -#5: null - current x 27,061,047 ops/sec ±0.97% (96 runs sampled) - lib-type-of x 13,965,573 ops/sec ±0.62% (97 runs sampled) - lib-typeof x 8,460,194 ops/sec ±0.61% (97 runs sampled) - -#6: number - current x 25,075,682 ops/sec ±0.53% (99 runs sampled) - lib-type-of x 2,266,405 ops/sec ±0.41% (98 runs sampled) - lib-typeof x 9,821,481 ops/sec ±0.45% (99 runs sampled) - -#7: object - current x 3,348,980 ops/sec ±0.49% (99 runs sampled) - lib-type-of x 3,245,138 ops/sec ±0.60% (94 runs sampled) - lib-typeof x 9,262,952 ops/sec ±0.59% (99 runs sampled) - -#8: regex - current x 21,284,827 ops/sec ±0.72% (96 runs sampled) - lib-type-of x 4,689,241 ops/sec ±0.43% (100 runs sampled) - lib-typeof x 8,957,593 ops/sec ±0.62% (98 runs sampled) - -#9: string - current x 25,379,234 ops/sec ±0.58% (96 runs sampled) - lib-type-of x 3,635,148 ops/sec ±0.76% (93 runs sampled) - lib-typeof x 9,494,134 ops/sec ±0.49% (98 runs sampled) - -#10: undef - current x 27,459,221 ops/sec ±1.01% (93 runs sampled) - lib-type-of x 14,360,433 ops/sec ±0.52% (99 runs sampled) - lib-typeof x 23,202,868 ops/sec ±0.59% (94 runs sampled) - -``` - -## Optimizations - -In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library: - -1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot. -2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it. -3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'` -4. There is no reason to make the code in a microlib as terse as possible, just to win points for making it shorter. It's always better to favor performant code over terse code. You will always only be using a single `require()` statement to use the library anyway, regardless of how the code is written. - -## Better type checking - -kind-of is more correct than other type checking libs I've looked at. For example, here are some differing results from other popular libs: - -### [typeof](https://github.com/CodingFu/typeof) lib - -Incorrectly tests instances of custom constructors (pretty common): - -```js -var typeOf = require('typeof'); -function Test() {} -console.log(typeOf(new Test())); -//=> 'test' -``` - -Returns `object` instead of `arguments`: - -```js -function foo() { - console.log(typeOf(arguments)) //=> 'object' -} -foo(); -``` - -### [type-of](https://github.com/ForbesLindesay/type-of) lib - -Incorrectly returns `object` for generator functions, buffers, `Map`, `Set`, `WeakMap` and `WeakSet`: - -```js -function * foo() {} -console.log(typeOf(foo)); -//=> 'object' -console.log(typeOf(new Buffer(''))); -//=> 'object' -console.log(typeOf(new Map())); -//=> 'object' -console.log(typeOf(new Set())); -//=> 'object' -console.log(typeOf(new WeakMap())); -//=> 'object' -console.log(typeOf(new WeakSet())); -//=> 'object' -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 82 | [jonschlinkert](https://github.com/jonschlinkert) | -| 3 | [aretecode](https://github.com/aretecode) | -| 2 | [miguelmota](https://github.com/miguelmota) | -| 1 | [dtothefp](https://github.com/dtothefp) | -| 1 | [ksheedlo](https://github.com/ksheedlo) | -| 1 | [pdehaan](https://github.com/pdehaan) | -| 1 | [laggingreflex](https://github.com/laggingreflex) | -| 1 | [charlike](https://github.com/charlike) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on October 13, 2017._ \ No newline at end of file diff --git a/node_modules/array-sort/node_modules/kind-of/index.js b/node_modules/array-sort/node_modules/kind-of/index.js deleted file mode 100644 index fc5cde96e..000000000 --- a/node_modules/array-sort/node_modules/kind-of/index.js +++ /dev/null @@ -1,147 +0,0 @@ -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - var type = typeof val; - - // primitivies - if (type === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (type === 'string' || val instanceof String) { - return 'string'; - } - if (type === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (type === 'function' || val instanceof Function) { - if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') { - return 'generatorfunction'; - } - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - if (type === '[object Promise]') { - return 'promise'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - if (type === '[object Map Iterator]') { - return 'mapiterator'; - } - if (type === '[object Set Iterator]') { - return 'setiterator'; - } - if (type === '[object String Iterator]') { - return 'stringiterator'; - } - if (type === '[object Array Iterator]') { - return 'arrayiterator'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - -/** - * If you need to support Safari 5-7 (8-10 yr-old browser), - * take a look at https://github.com/feross/is-buffer - */ - -function isBuffer(val) { - return val.constructor - && typeof val.constructor.isBuffer === 'function' - && val.constructor.isBuffer(val); -} diff --git a/node_modules/array-sort/node_modules/kind-of/package.json b/node_modules/array-sort/node_modules/kind-of/package.json deleted file mode 100644 index acb6ade97..000000000 --- a/node_modules/array-sort/node_modules/kind-of/package.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "_from": "kind-of@^5.0.2", - "_id": "kind-of@5.1.0", - "_inBundle": false, - "_integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "_location": "/array-sort/kind-of", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "kind-of@^5.0.2", - "name": "kind-of", - "escapedName": "kind-of", - "rawSpec": "^5.0.2", - "saveSpec": null, - "fetchSpec": "^5.0.2" - }, - "_requiredBy": [ - "/array-sort" - ], - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "_shasum": "729c91e2d857b7a419a1f9aa65685c4c33f5845d", - "_spec": "kind-of@^5.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\array-sort", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/kind-of/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "David Fox-Powell", - "url": "https://dtothefp.github.io/me" - }, - { - "name": "James", - "url": "https://twitter.com/aretecode" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Ken Sheedlo", - "url": "kensheedlo.com" - }, - { - "name": "laggingreflex", - "url": "https://github.com/laggingreflex" - }, - { - "name": "Miguel Mota", - "url": "https://miguelmota.com" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - }, - { - "name": "tunnckoCore", - "url": "https://i.am.charlike.online" - } - ], - "deprecated": false, - "description": "Get the native type of a value.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "benchmarked": "^1.1.1", - "browserify": "^14.4.0", - "gulp-format-md": "^0.1.12", - "matched": "^0.4.4", - "mocha": "^3.4.2", - "type-of": "^2.0.1", - "typeof": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/kind-of", - "keywords": [ - "arguments", - "array", - "boolean", - "check", - "date", - "function", - "is", - "is-type", - "is-type-of", - "kind", - "kind-of", - "number", - "object", - "of", - "regexp", - "string", - "test", - "type", - "type-of", - "typeof", - "types" - ], - "license": "MIT", - "main": "index.js", - "name": "kind-of", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/kind-of.git" - }, - "scripts": { - "prepublish": "browserify -o browser.js -e index.js -s index --bare", - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-glob", - "is-number", - "is-primitive" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "type-of", - "typeof", - "verb" - ] - }, - "version": "5.1.0" -} diff --git a/node_modules/array-sort/package.json b/node_modules/array-sort/package.json deleted file mode 100644 index b3e37b706..000000000 --- a/node_modules/array-sort/package.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "_from": "array-sort@^0.1.4", - "_id": "array-sort@0.1.4", - "_inBundle": false, - "_integrity": "sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ==", - "_location": "/array-sort", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "array-sort@^0.1.4", - "name": "array-sort", - "escapedName": "array-sort", - "rawSpec": "^0.1.4", - "saveSpec": null, - "fetchSpec": "^0.1.4" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/array-sort/-/array-sort-0.1.4.tgz", - "_shasum": "662855eaeb671b4188df4451b2f24a0753992b23", - "_spec": "array-sort@^0.1.4", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/array-sort/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Kevin Ward", - "url": "https://github.com/wkevina" - } - ], - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "deprecated": false, - "description": "Fast and powerful array sorting. Sort an array of objects by one or more properties. Any number of nested properties or custom comparison functions may be used.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "benchmarked": "^0.1.5", - "glob": "^7.0.3", - "gulp-format-md": "^0.1.8", - "lodash.sortbyorder": "^3.4.4", - "mocha": "^2.4.5", - "should": "^8.3.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/array-sort", - "keywords": [ - "arr", - "array", - "asc", - "ascend", - "ascending", - "desc", - "descend", - "descending", - "dot", - "element", - "elements", - "get", - "multiple", - "nested", - "obj", - "object", - "order", - "ordered", - "path", - "prop", - "properties", - "property", - "sort", - "sorted", - "sorting" - ], - "license": "MIT", - "main": "index.js", - "name": "array-sort", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/array-sort.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "reflinks": [ - "verb" - ], - "related": { - "list": [ - "get-value", - "set-value", - "sort-asc", - "sort-desc", - "sort-object" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.1.4" -} diff --git a/node_modules/array-unique/LICENSE b/node_modules/array-unique/LICENSE deleted file mode 100644 index 842218cf0..000000000 --- a/node_modules/array-unique/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2016, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/array-unique/README.md b/node_modules/array-unique/README.md deleted file mode 100644 index 41c8c904e..000000000 --- a/node_modules/array-unique/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# array-unique [![NPM version](https://img.shields.io/npm/v/array-unique.svg?style=flat)](https://www.npmjs.com/package/array-unique) [![NPM downloads](https://img.shields.io/npm/dm/array-unique.svg?style=flat)](https://npmjs.org/package/array-unique) [![Build Status](https://img.shields.io/travis/jonschlinkert/array-unique.svg?style=flat)](https://travis-ci.org/jonschlinkert/array-unique) - -Remove duplicate values from an array. Fastest ES5 implementation. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save array-unique -``` - -## Usage - -```js -var unique = require('array-unique'); - -var arr = ['a', 'b', 'c', 'c']; -console.log(unique(arr)) //=> ['a', 'b', 'c'] -console.log(arr) //=> ['a', 'b', 'c'] - -/* The above modifies the input array. To prevent that at a slight performance cost: */ -var unique = require("array-unique").immutable; - -var arr = ['a', 'b', 'c', 'c']; -console.log(unique(arr)) //=> ['a', 'b', 'c'] -console.log(arr) //=> ['a', 'b', 'c', 'c'] -``` - -## About - -### Related projects - -* [arr-diff](https://www.npmjs.com/package/arr-diff): Returns an array with only the unique values from the first array, by excluding all… [more](https://github.com/jonschlinkert/arr-diff) | [homepage](https://github.com/jonschlinkert/arr-diff "Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.") -* [arr-flatten](https://www.npmjs.com/package/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten. | [homepage](https://github.com/jonschlinkert/arr-flatten "Recursively flatten an array or arrays. This is the fastest implementation of array flatten.") -* [arr-map](https://www.npmjs.com/package/arr-map): Faster, node.js focused alternative to JavaScript's native array map. | [homepage](https://github.com/jonschlinkert/arr-map "Faster, node.js focused alternative to JavaScript's native array map.") -* [arr-pluck](https://www.npmjs.com/package/arr-pluck): Retrieves the value of a specified property from all elements in the collection. | [homepage](https://github.com/jonschlinkert/arr-pluck "Retrieves the value of a specified property from all elements in the collection.") -* [arr-reduce](https://www.npmjs.com/package/arr-reduce): Fast array reduce that also loops over sparse elements. | [homepage](https://github.com/jonschlinkert/arr-reduce "Fast array reduce that also loops over sparse elements.") -* [arr-union](https://www.npmjs.com/package/arr-union): Combines a list of arrays, returning a single array with unique values, using strict equality… [more](https://github.com/jonschlinkert/arr-union) | [homepage](https://github.com/jonschlinkert/arr-union "Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ - -To generate the readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install -g verb verb-generate-readme && verb -``` - -### Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -### License - -Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/array-unique/blob/master/LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.1.28, on July 31, 2016._ \ No newline at end of file diff --git a/node_modules/array-unique/index.js b/node_modules/array-unique/index.js deleted file mode 100644 index 7e481e072..000000000 --- a/node_modules/array-unique/index.js +++ /dev/null @@ -1,43 +0,0 @@ -/*! - * array-unique - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -module.exports = function unique(arr) { - if (!Array.isArray(arr)) { - throw new TypeError('array-unique expects an array.'); - } - - var len = arr.length; - var i = -1; - - while (i++ < len) { - var j = i + 1; - - for (; j < arr.length; ++j) { - if (arr[i] === arr[j]) { - arr.splice(j--, 1); - } - } - } - return arr; -}; - -module.exports.immutable = function uniqueImmutable(arr) { - if (!Array.isArray(arr)) { - throw new TypeError('array-unique expects an array.'); - } - - var arrLen = arr.length; - var newArr = new Array(arrLen); - - for (var i = 0; i < arrLen; i++) { - newArr[i] = arr[i]; - } - - return module.exports(newArr); -}; diff --git a/node_modules/array-unique/package.json b/node_modules/array-unique/package.json deleted file mode 100644 index 6c390de16..000000000 --- a/node_modules/array-unique/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_args": [ - [ - "array-unique@0.3.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "array-unique@0.3.2", - "_id": "array-unique@0.3.2", - "_inBundle": false, - "_integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "_location": "/array-unique", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "array-unique@0.3.2", - "name": "array-unique", - "escapedName": "array-unique", - "rawSpec": "0.3.2", - "saveSpec": null, - "fetchSpec": "0.3.2" - }, - "_requiredBy": [ - "/braces", - "/extglob", - "/micromatch", - "/nanomatch" - ], - "_resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "_spec": "0.3.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/array-unique/issues" - }, - "description": "Remove duplicate values from an array. Fastest ES5 implementation.", - "devDependencies": { - "array-uniq": "^1.0.2", - "benchmarked": "^0.1.3", - "gulp-format-md": "^0.1.9", - "mocha": "^2.5.3", - "should": "^10.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "LICENSE", - "README.md" - ], - "homepage": "https://github.com/jonschlinkert/array-unique", - "keywords": [ - "array", - "unique" - ], - "license": "MIT", - "main": "index.js", - "name": "array-unique", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/array-unique.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "arr-diff", - "arr-union", - "arr-flatten", - "arr-reduce", - "arr-map", - "arr-pluck" - ] - }, - "reflinks": [ - "verb", - "verb-generate-readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.3.2" -} diff --git a/node_modules/assign-symbols/LICENSE b/node_modules/assign-symbols/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/assign-symbols/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/assign-symbols/README.md b/node_modules/assign-symbols/README.md deleted file mode 100644 index 422729d45..000000000 --- a/node_modules/assign-symbols/README.md +++ /dev/null @@ -1,73 +0,0 @@ -# assign-symbols [![NPM version](https://badge.fury.io/js/assign-symbols.svg)](http://badge.fury.io/js/assign-symbols) - -> Assign the enumerable es6 Symbol properties from an object (or objects) to the first object passed on the arguments. Can be used as a supplement to other extend, assign or merge methods as a polyfill for the Symbols part of the es6 Object.assign method. - -From the [Mozilla Developer docs for Symbol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol): - -> A symbol is a unique and immutable data type and may be used as an identifier for object properties. The symbol object is an implicit object wrapper for the symbol primitive data type. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i assign-symbols --save -``` - -## Usage - -```js -var assignSymbols = require('assign-symbols'); -var obj = {}; - -var one = {}; -var symbolOne = Symbol('aaa'); -one[symbolOne] = 'bbb'; - -var two = {}; -var symbolTwo = Symbol('ccc'); -two[symbolTwo] = 'ddd'; - -assignSymbols(obj, one, two); - -console.log(obj[symbolOne]); -//=> 'bbb' -console.log(obj[symbolTwo]); -//=> 'ddd' -``` - -## Similar projects - -* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties of source objects to a destination object. | [homepage](https://github.com/jonschlinkert/assign-deep) -* [clone-deep](https://www.npmjs.com/package/clone-deep): Recursively (deep) clone JavaScript native types, like Object, Array, RegExp, Date as well as primitives. | [homepage](https://github.com/jonschlinkert/clone-deep) -* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow) -* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep) -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/assign-symbols/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on November 06, 2015._ \ No newline at end of file diff --git a/node_modules/assign-symbols/index.js b/node_modules/assign-symbols/index.js deleted file mode 100644 index c08a232b7..000000000 --- a/node_modules/assign-symbols/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/*! - * assign-symbols - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -module.exports = function(receiver, objects) { - if (receiver === null || typeof receiver === 'undefined') { - throw new TypeError('expected first argument to be an object.'); - } - - if (typeof objects === 'undefined' || typeof Symbol === 'undefined') { - return receiver; - } - - if (typeof Object.getOwnPropertySymbols !== 'function') { - return receiver; - } - - var isEnumerable = Object.prototype.propertyIsEnumerable; - var target = Object(receiver); - var len = arguments.length, i = 0; - - while (++i < len) { - var provider = Object(arguments[i]); - var names = Object.getOwnPropertySymbols(provider); - - for (var j = 0; j < names.length; j++) { - var key = names[j]; - - if (isEnumerable.call(provider, key)) { - target[key] = provider[key]; - } - } - } - return target; -}; diff --git a/node_modules/assign-symbols/package.json b/node_modules/assign-symbols/package.json deleted file mode 100644 index 27bbcf77b..000000000 --- a/node_modules/assign-symbols/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "_args": [ - [ - "assign-symbols@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "assign-symbols@1.0.0", - "_id": "assign-symbols@1.0.0", - "_inBundle": false, - "_integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "_location": "/assign-symbols", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "assign-symbols@1.0.0", - "name": "assign-symbols", - "escapedName": "assign-symbols", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/extend-shallow" - ], - "_resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/assign-symbols/issues" - }, - "description": "Assign the enumerable es6 Symbol properties from an object (or objects) to the first object passed on the arguments. Can be used as a supplement to other extend, assign or merge methods as a polyfill for the Symbols part of the es6 Object.assign method.", - "devDependencies": { - "mocha": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/assign-symbols", - "keywords": [ - "assign", - "symbols" - ], - "license": "MIT", - "main": "index.js", - "name": "assign-symbols", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/assign-symbols.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "assign-deep", - "mixin-deep", - "merge-deep", - "extend-shallow", - "clone-deep" - ] - } - }, - "version": "1.0.0" -} diff --git a/node_modules/atob/LICENSE b/node_modules/atob/LICENSE deleted file mode 100644 index 2d9338bd9..000000000 --- a/node_modules/atob/LICENSE +++ /dev/null @@ -1,230 +0,0 @@ -At your option you may choose either of the following licenses: - - * The MIT License (MIT) - * The Apache License 2.0 (Apache-2.0) - - -The MIT License (MIT) - -Copyright (c) 2015 AJ ONeal - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2015 AJ ONeal - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/node_modules/atob/LICENSE.DOCS b/node_modules/atob/LICENSE.DOCS deleted file mode 100644 index 1d658d6d3..000000000 --- a/node_modules/atob/LICENSE.DOCS +++ /dev/null @@ -1,319 +0,0 @@ -Creative Commons Legal Code - -Attribution 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(f) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work or Adaptation, as appropriate, through sale or - other transfer of ownership. - d. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - e. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - f. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - g. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - h. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - i. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; - b. to create and Reproduce Adaptations provided that any such Adaptation, - including any translation in any medium, takes reasonable steps to - clearly label, demarcate or otherwise identify that changes were made - to the original Work. For example, a translation could be marked "The - original work was translated from English to Spanish," or a - modification could indicate "The original work has been modified."; - c. to Distribute and Publicly Perform the Work including as incorporated - in Collections; and, - d. to Distribute and Publicly Perform Adaptations. - e. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor waives the - exclusive right to collect such royalties for any exercise by You - of the rights granted under this License; and, - iii. Voluntary License Schemes. The Licensor waives the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats. Subject to Section 8(f), all rights not expressly -granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(b), as requested. If You create an - Adaptation, upon notice from any Licensor You must, to the extent - practicable, remove from the Adaptation any credit as required by - Section 4(b), as requested. - b. If You Distribute, or Publicly Perform the Work or any Adaptations or - Collections, You must, unless a request has been made pursuant to - Section 4(a), keep intact all copyright notices for the Work and - provide, reasonable to the medium or means You are utilizing: (i) the - name of the Original Author (or pseudonym, if applicable) if supplied, - and/or if the Original Author and/or Licensor designate another party - or parties (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work; - and (iv) , consistent with Section 3(b), in the case of an Adaptation, - a credit identifying the use of the Work in the Adaptation (e.g., - "French translation of the Work by Original Author," or "Screenplay - based on original Work by Original Author"). The credit required by - this Section 4 (b) may be implemented in any reasonable manner; - provided, however, that in the case of a Adaptation or Collection, at - a minimum such credit will appear, if a credit for all contributing - authors of the Adaptation or Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - c. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Adaptations or Collections, You must not distort, mutilate, modify or - take other derogatory action in relation to the Work which would be - prejudicial to the Original Author's honor or reputation. Licensor - agrees that in those jurisdictions (e.g. Japan), in which any exercise - of the right granted in Section 3(b) of this License (the right to - make Adaptations) would be deemed to be a distortion, mutilation, - modification or other derogatory action prejudicial to the Original - Author's honor and reputation, the Licensor will waive or not assert, - as appropriate, this Section, to the fullest extent permitted by the - applicable national law, to enable You to reasonably exercise Your - right under Section 3(b) of this License (right to make Adaptations) - but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR -OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY -KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, -INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, -FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF -LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, -WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Adaptations or Collections - from You under this License, however, will not have their licenses - terminated provided such individuals or entities remain in full - compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will - survive any termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor - offers to the recipient a license to the original Work on the same - terms and conditions as the license granted to You under this License. - c. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - d. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - e. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - f. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of this License. - - Creative Commons may be contacted at http://creativecommons.org/. diff --git a/node_modules/atob/README.md b/node_modules/atob/README.md deleted file mode 100644 index e15ef86b0..000000000 --- a/node_modules/atob/README.md +++ /dev/null @@ -1,49 +0,0 @@ -atob -=== - -| **atob** -| [btoa](https://git.coolaj86.com/coolaj86/btoa.js) -| [unibabel.js](https://git.coolaj86.com/coolaj86/unibabel.js) -| Sponsored by [ppl](https://ppl.family) - -Uses `Buffer` to emulate the exact functionality of the browser's atob. - -Note: Unicode may be handled incorrectly (like the browser). - -It turns base64-encoded ascii data back **to** binary. - -```javascript -(function () { - "use strict"; - - var atob = require('atob'); - var b64 = "SGVsbG8sIFdvcmxkIQ=="; - var bin = atob(b64); - - console.log(bin); // "Hello, World!" -}()); -``` - -### Need Unicode and Binary Support in the Browser? - -Check out [unibabel.js](https://git.coolaj86.com/coolaj86/unibabel.js) - -Changelog -======= - - * v2.1.0 address a few issues and PRs, update URLs - * v2.0.0 provide browser version for ios web workers - * v1.2.0 provide (empty) browser version - * v1.1.3 add MIT license - * v1.1.2 node only - -LICENSE -======= - -Code copyright 2012-2018 AJ ONeal - -Dual-licensed MIT and Apache-2.0 - -Docs copyright 2012-2018 AJ ONeal - -Docs released under [Creative Commons](https://git.coolaj86.com/coolaj86/atob.js/blob/master/LICENSE.DOCS). diff --git a/node_modules/atob/bin/atob.js b/node_modules/atob/bin/atob.js deleted file mode 100644 index a56ac2ec1..000000000 --- a/node_modules/atob/bin/atob.js +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env node -'use strict'; - -var atob = require('../node-atob'); -var str = process.argv[2]; -console.log(atob(str)); diff --git a/node_modules/atob/bower.json b/node_modules/atob/bower.json deleted file mode 100644 index e3ef66e25..000000000 --- a/node_modules/atob/bower.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "atob", - "description": "atob for isomorphic environments", - "main": "browser-atob.js", - "authors": [ - "AJ ONeal (https://coolaj86.com)" - ], - "license": "(MIT OR Apache-2.0)", - "keywords": [ - "atob", - "browser" - ], - "homepage": "https://github.com/node-browser-compat/atob", - "moduleType": [ - "globals" - ], - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/node_modules/atob/browser-atob.js b/node_modules/atob/browser-atob.js deleted file mode 100644 index af4f357bb..000000000 --- a/node_modules/atob/browser-atob.js +++ /dev/null @@ -1,44 +0,0 @@ -(function (w) { - "use strict"; - - function findBest(atobNative) { - // normal window - if ('function' === typeof atobNative) { return atobNative; } - - - // browserify (web worker) - if ('function' === typeof Buffer) { - return function atobBrowserify(a) { - //!! Deliberately using an API that's deprecated in node.js because - //!! this file is for browsers and we expect them to cope with it. - //!! Discussion: github.com/node-browser-compat/atob/pull/9 - return new Buffer(a, 'base64').toString('binary'); - }; - } - - // ios web worker with base64js - if ('object' === typeof w.base64js) { - // bufferToBinaryString - // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50 - return function atobWebWorker_iOS(a) { - var buf = w.base64js.b64ToByteArray(a); - return Array.prototype.map.call(buf, function (ch) { - return String.fromCharCode(ch); - }).join(''); - }; - } - - return function () { - // ios web worker without base64js - throw new Error("You're probably in an old browser or an iOS webworker." + - " It might help to include beatgammit's base64-js."); - }; - } - - var atobBest = findBest(w.atob); - w.atob = atobBest; - - if ((typeof module === 'object') && module && module.exports) { - module.exports = atobBest; - } -}(window)); diff --git a/node_modules/atob/node-atob.js b/node_modules/atob/node-atob.js deleted file mode 100644 index d7305a329..000000000 --- a/node_modules/atob/node-atob.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -function atob(str) { - return Buffer.from(str, 'base64').toString('binary'); -} - -module.exports = atob.atob = atob; diff --git a/node_modules/atob/package.json b/node_modules/atob/package.json deleted file mode 100644 index af204513e..000000000 --- a/node_modules/atob/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "_args": [ - [ - "atob@2.1.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "atob@2.1.2", - "_id": "atob@2.1.2", - "_inBundle": false, - "_integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "_location": "/atob", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "atob@2.1.2", - "name": "atob", - "escapedName": "atob", - "rawSpec": "2.1.2", - "saveSpec": null, - "fetchSpec": "2.1.2" - }, - "_requiredBy": [ - "/source-map-resolve" - ], - "_resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "_spec": "2.1.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "AJ ONeal", - "email": "coolaj86@gmail.com", - "url": "https://coolaj86.com" - }, - "bin": { - "atob": "bin/atob.js" - }, - "browser": "browser-atob.js", - "description": "atob for Node.JS and Linux / Mac / Windows CLI (it's a one-liner)", - "engines": { - "node": ">= 4.5.0" - }, - "homepage": "https://git.coolaj86.com/coolaj86/atob.js.git", - "keywords": [ - "atob", - "browser" - ], - "license": "(MIT OR Apache-2.0)", - "main": "node-atob.js", - "name": "atob", - "repository": { - "type": "git", - "url": "git://git.coolaj86.com/coolaj86/atob.js.git" - }, - "version": "2.1.2" -} diff --git a/node_modules/atob/test.js b/node_modules/atob/test.js deleted file mode 100644 index bd80a4ea1..000000000 --- a/node_modules/atob/test.js +++ /dev/null @@ -1,18 +0,0 @@ -(function () { - "use strict"; - - var atob = require('.'); - var encoded = "SGVsbG8sIFdvcmxkIQ==" - var unencoded = "Hello, World!"; - /* - , encoded = "SGVsbG8sIBZM" - , unencoded = "Hello, 世界" - */ - - if (unencoded !== atob(encoded)) { - console.log('[FAIL]', unencoded, atob(encoded)); - return; - } - - console.log('[PASS] all tests pass'); -}()); diff --git a/node_modules/autolinker/LICENSE b/node_modules/autolinker/LICENSE deleted file mode 100644 index 3ff145b9f..000000000 --- a/node_modules/autolinker/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Gregory Jacobs (http://greg-jacobs.com) - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/autolinker/README.md b/node_modules/autolinker/README.md deleted file mode 100644 index 78cc38973..000000000 --- a/node_modules/autolinker/README.md +++ /dev/null @@ -1,340 +0,0 @@ -# Autolinker.js - -Because I had so much trouble finding a good auto-linking implementation out in -the wild, I decided to roll my own. It seemed that everything I found out there -was either an implementation that didn't cover every case, or was just limited -in one way or another. - -So, this utility attempts to handle everything. It: - -- Autolinks URLs, whether or not they start with the protocol (i.e. 'http://'). - In other words, it will automatically link the text "google.com", as well as - "http://google.com". -- Will properly handle URLs with special characters -- Will properly handle URLs with query parameters or a named anchor (i.e. hash) -- Will autolink email addresses. -- Will autolink phone numbers. -- Will autolink Twitter handles. -- Will autolink hashtags. -- Will properly handle HTML input. The utility will not change the `href` - attribute inside anchor (<a>) tags (or any other tag/attribute for that - matter), and will not accidentally wrap the inner text of an anchor tag with a - new one (which would cause doubly-nested anchor tags). - -Hope that this utility helps you as well! - -Full API Docs: [http://gregjacobs.github.io/Autolinker.js/docs/](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker)
-Live Example: [http://gregjacobs.github.io/Autolinker.js/examples/live-example/](http://gregjacobs.github.io/Autolinker.js/examples/live-example/) - - -## Installation - -#### Download - -Simply clone or download the zip of the project, and link to either -`dist/Autolinker.js` or `dist/Autolinker.min.js` with a script tag: - -```html - -``` - -#### Using with the [Bower](http://bower.io) package manager: - -Command line: - -```shell -bower install Autolinker.js --save -``` - -#### Using with [Node.js](http://nodejs.org) via [npm](https://www.npmjs.org/): - -Command Line: - -```shell -npm install autolinker --save -``` - -JavaScript: - -```javascript -var Autolinker = require( 'autolinker' ); -// note: npm wants an all-lowercase package name, but the utility is a class and -// should be aliased with a capital letter -``` - - -## Usage - -Using the static [link()](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-static-method-link) -method: - -```javascript -var linkedText = Autolinker.link( textToAutolink[, options] ); -``` - -Using as a class: - -```javascript -var autolinker = new Autolinker( [ options ] ); - -var linkedText = autolinker.link( textToAutoLink ); -``` - -Note: if using the same options to autolink multiple pieces of html/text, it is -slightly more efficient to create a single Autolinker instance, and run the -[link()](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-method-link) -method repeatedly (i.e. use the "class" form above). - - -#### Example: - -```javascript -var linkedText = Autolinker.link( "Check out google.com", { className: "myLink" } ); -// Produces: "Check out google.com" -``` - -## Options - -These are the options which may be specified for linking. These are specified by -providing an Object as the second parameter to [Autolinker.link()](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-static-method-link). These include: - -- [newWindow](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-newWindow) : Boolean
- `true` to have the links should open in a new window when clicked, `false` - otherwise. Defaults to `true`.

-- [stripPrefix](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-stripPrefix) : Boolean
- `true` to have the 'http://' or 'https://' and/or the 'www.' stripped from the - beginning of links, `false` otherwise. Defaults to `true`.

-- [truncate](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-truncate) : Number/Object
- A number for how many characters long URLs/emails/Twitter handles/Twitter - hashtags should be truncated to inside the text of a link. If the match is - over the number of characters, it will be truncated to this length by - replacing the end of the string with a two period ellipsis ('..').

- - Example: a url like 'http://www.yahoo.com/some/long/path/to/a/file' truncated - to 25 characters may look like this: 'yahoo.com/some/long/pat..'

- - In the object form, both `length` and `location` may be specified to perform - truncation. Available options for `location` are: 'end' (default), 'middle', - or 'smart'. Example usage: - - ```javascript - truncate: { length: 32, location: 'middle' } - ``` - - The 'smart' truncation option is for URLs where the algorithm attempts to - strip out unnecessary parts of the URL (such as the 'www.', then URL scheme, - hash, etc.) before trying to find a good point to insert the ellipsis if it is - still too long. For details, see source code of: - [TruncateSmart](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker.truncate.TruncateSmart) -- [className](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-className) : String
- A CSS class name to add to the generated anchor tags. This class will be added - to all links, as well as this class plus "url"/"email"/"phone"/"twitter"/"hashtag" - suffixes for styling url/email/phone/twitter/hashtag links differently. - - For example, if this config is provided as "myLink", then: - - 1) URL links will have the CSS classes: "myLink myLink-url"
- 2) Email links will have the CSS classes: "myLink myLink-email"
- 3) Phone links will have the CSS classes: "myLink myLink-phone"
- 4) Twitter links will have the CSS classes: "myLink myLink-twitter"
- 5) Hashtag links will have the CSS classes: "myLink myLink-hashtag"
- -- [urls](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-urls) : Boolean/Object
- `true` to have URLs auto-linked, `false` to skip auto-linking of URLs. - Defaults to `true`.
- - This option also accepts an Object form with 3 properties, to allow for more - customization of what exactly gets linked. All default to `true`: - - - schemeMatches (Boolean): `true` to match URLs found prefixed with a scheme, - i.e. `http://google.com`, or `other+scheme://google.com`, `false` to - prevent these types of matches. - - wwwMatches (Boolean): `true` to match urls found prefixed with `'www.'`, - i.e. `www.google.com`. `false` to prevent these types of matches. Note - that if the URL had a prefixed scheme, and `schemeMatches` is true, it - will still be linked. - - tldMatches: `true` to match URLs with known top level domains (.com, .net, - etc.) that are not prefixed with a scheme or `'www.'`. Ex: `google.com`, - `asdf.org/?page=1`, etc. `false` to prevent these types of matches. -
- - Example usage: `urls: { schemeMatches: true, wwwMatches: true, tldMatches: false }` - -- [email](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-email) : Boolean
- `true` to have email addresses auto-linked, `false` to skip auto-linking of - email addresses. Defaults to `true`.

-- [phone](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-phone) : Boolean
- `true` to have phone numbers auto-linked, `false` to skip auto-linking of - phone numbers. Defaults to `true`.

-- [twitter](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-twitter) : Boolean
- `true` to have Twitter handles auto-linked, `false` to skip auto-linking of - Twitter handles. Defaults to `true`.

-- [hashtag](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-hashtag) : Boolean/String
- A string for the service name to have hashtags auto-linked to. Supported - values at this time are 'twitter', 'facebook' and 'instagram'. Pass `false` to skip - auto-linking of hashtags. Defaults to `false`.

-- [replaceFn](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-replaceFn) : Function
- A function to use to programmatically make replacements of matches in the - input string, one at a time. See the section - Custom Replacement Function for - more details. - - -For example, if you wanted to disable links from opening in [new windows](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-newWindow), you could do: - -```javascript -var linkedText = Autolinker.link( "Check out google.com", { newWindow: false } ); -// Produces: "Check out google.com" -``` - -And if you wanted to truncate the length of URLs (while also not opening in a new window), you could do: - -```javascript -var linkedText = Autolinker.link( "http://www.yahoo.com/some/long/path/to/a/file", { truncate: 25, newWindow: false } ); -// Produces: "yahoo.com/some/long/pat.." -``` - -## More Examples -One could update an entire DOM element that has unlinked text to auto-link them -as such: - -```javascript -var myTextEl = document.getElementById( 'text' ); -myTextEl.innerHTML = Autolinker.link( myTextEl.innerHTML ); -``` - -Using the same pre-configured [Autolinker](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker) -instance in multiple locations of a codebase (usually by dependency injection): - -```javascript -var autolinker = new Autolinker( { newWindow: false, truncate: 25 } ); - -//... - -autolinker.link( "Check out http://www.yahoo.com/some/long/path/to/a/file" ); -// Produces: "Check out yahoo.com/some/long/pat.." - -//... - -autolinker.link( "Go to www.google.com" ); -// Produces: "Go to google.com" - -``` - - -## Custom Replacement Function - -A custom replacement function ([replaceFn](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker-cfg-replaceFn)) -may be provided to replace url/email/phone/Twitter handle/hashtag matches on an -individual basis, based on the return from this function. - -#### Full example, for purposes of documenting the API: - -```javascript -var input = "..."; // string with URLs, Email Addresses, Twitter Handles, and Hashtags - -var linkedText = Autolinker.link( input, { - replaceFn : function( autolinker, match ) { - console.log( "href = ", match.getAnchorHref() ); - console.log( "text = ", match.getAnchorText() ); - - switch( match.getType() ) { - case 'url' : - console.log( "url: ", match.getUrl() ); - - return true; // let Autolinker perform its normal anchor tag replacement - - case 'email' : - var email = match.getEmail(); - console.log( "email: ", email ); - - if( email === "my@own.address" ) { - return false; // don't auto-link this particular email address; leave as-is - } else { - return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`) - } - - case 'phone' : - console.log( "Phone Number: ", match.getNumber() ); - - return '' + match.getNumber() + ''; - - case 'twitter' : - console.log( "Twitter Handle: ", match.getTwitterHandle() ); - - return '' + match.getTwitterHandle() + ''; - - case 'hashtag' : - console.log( "Hashtag: ", match.getHashtag() ); - - return '' + match.getHashtag() + ''; - } - } -} ); -``` - -#### Modifying the default generated anchor tag - -```javascript -var input = "..."; // string with URLs, Email Addresses, Twitter Handles, and Hashtags - -var linkedText = Autolinker.link( input, { - replaceFn : function( autolinker, match ) { - console.log( "href = ", match.getAnchorHref() ); - console.log( "text = ", match.getAnchorText() ); - - var tag = match.buildTag(); // returns an `Autolinker.HtmlTag` instance for an tag - tag.setAttr( 'rel', 'nofollow' ); // adds a 'rel' attribute - tag.addClass( 'external-link' ); // adds a CSS class - tag.setInnerHtml( 'Click here!' ); // sets the inner html for the anchor tag - - return tag; - } -} ); -``` - - -The `replaceFn` is provided two arguments: - -1. The [Autolinker](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker) instance that is performing replacements. -2. An [Autolinker.match.Match](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker.match.Match) - object which details the match that is to be replaced. - - -A replacement of the match is made based on the return value of the function. -The following return values may be provided: - -1. No return value (`undefined`), or `true` (Boolean): Delegate back to - Autolinker to replace the match as it normally would. -2. `false` (Boolean): Do not replace the current match at all - leave as-is. -3. Any String: If a string is returned from the function, the string will be used - directly as the replacement HTML for the match. -4. An [Autolinker.HtmlTag](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker.HtmlTag) - instance, which can be used to build/modify an HTML tag before writing out its - HTML text. - - -## Full API Docs - -The full API docs for Autolinker may be referenced at: -[http://gregjacobs.github.io/Autolinker.js/docs/](http://gregjacobs.github.io/Autolinker.js/docs/#!/api/Autolinker) - -## Live Example - -[http://gregjacobs.github.io/Autolinker.js/examples/live-example/](http://gregjacobs.github.io/Autolinker.js/examples/live-example/) - - - -## Contributing - -Pull requests definitely welcome. - -- Make sure to add tests to cover your new functionality/bugfix. -- Run the `gulp` command to build/test (or alternatively, open the `tests/index.html` file to run the tests). -- When committing, please omit checking in the files in the `dist/` folder after building/testing. These are only committed to the repository for users downloading Autolinker via Bower. I will build these files and assign them a version number when merging your PR. -- Please use tabs for indents! Tabs are better for everybody (individuals can set their editors to different tab sizes based on their visual preferences). - - -## Changelog - -See [Releases](https://github.com/gregjacobs/Autolinker.js/releases) diff --git a/node_modules/autolinker/dist/Autolinker.js b/node_modules/autolinker/dist/Autolinker.js deleted file mode 100644 index 36b655315..000000000 --- a/node_modules/autolinker/dist/Autolinker.js +++ /dev/null @@ -1,3770 +0,0 @@ -/*! - * Autolinker.js - * 0.28.1 - * - * Copyright(c) 2016 Gregory Jacobs - * MIT License - * - * https://github.com/gregjacobs/Autolinker.js - */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { - define([], factory); - } else if (typeof exports === 'object') { - module.exports = factory(); - } else { - root.Autolinker = factory(); - } -}(this, function() { -/** - * @class Autolinker - * @extends Object - * - * Utility class used to process a given string of text, and wrap the matches in - * the appropriate anchor (<a>) tags to turn them into links. - * - * Any of the configuration options may be provided in an Object (map) provided - * to the Autolinker constructor, which will configure how the {@link #link link()} - * method will process the links. - * - * For example: - * - * var autolinker = new Autolinker( { - * newWindow : false, - * truncate : 30 - * } ); - * - * var html = autolinker.link( "Joe went to www.yahoo.com" ); - * // produces: 'Joe went to yahoo.com' - * - * - * The {@link #static-link static link()} method may also be used to inline - * options into a single call, which may be more convenient for one-off uses. - * For example: - * - * var html = Autolinker.link( "Joe went to www.yahoo.com", { - * newWindow : false, - * truncate : 30 - * } ); - * // produces: 'Joe went to yahoo.com' - * - * - * ## Custom Replacements of Links - * - * If the configuration options do not provide enough flexibility, a {@link #replaceFn} - * may be provided to fully customize the output of Autolinker. This function is - * called once for each URL/Email/Phone#/Twitter Handle/Hashtag match that is - * encountered. - * - * For example: - * - * var input = "..."; // string with URLs, Email Addresses, Phone #s, Twitter Handles, and Hashtags - * - * var linkedText = Autolinker.link( input, { - * replaceFn : function( autolinker, match ) { - * console.log( "href = ", match.getAnchorHref() ); - * console.log( "text = ", match.getAnchorText() ); - * - * switch( match.getType() ) { - * case 'url' : - * console.log( "url: ", match.getUrl() ); - * - * if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) { - * var tag = autolinker.getTagBuilder().build( match ); // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes - * tag.setAttr( 'rel', 'nofollow' ); - * tag.addClass( 'external-link' ); - * - * return tag; - * - * } else { - * return true; // let Autolinker perform its normal anchor tag replacement - * } - * - * case 'email' : - * var email = match.getEmail(); - * console.log( "email: ", email ); - * - * if( email === "my@own.address" ) { - * return false; // don't auto-link this particular email address; leave as-is - * } else { - * return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`) - * } - * - * case 'phone' : - * var phoneNumber = match.getPhoneNumber(); - * console.log( phoneNumber ); - * - * return '' + phoneNumber + ''; - * - * case 'twitter' : - * var twitterHandle = match.getTwitterHandle(); - * console.log( twitterHandle ); - * - * return '' + twitterHandle + ''; - * - * case 'hashtag' : - * var hashtag = match.getHashtag(); - * console.log( hashtag ); - * - * return '' + hashtag + ''; - * } - * } - * } ); - * - * - * The function may return the following values: - * - * - `true` (Boolean): Allow Autolinker to replace the match as it normally - * would. - * - `false` (Boolean): Do not replace the current match at all - leave as-is. - * - Any String: If a string is returned from the function, the string will be - * used directly as the replacement HTML for the match. - * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify - * an HTML tag before writing out its HTML text. - * - * @constructor - * @param {Object} [cfg] The configuration options for the Autolinker instance, - * specified in an Object (map). - */ -var Autolinker = function( cfg ) { - cfg = cfg || {}; - - this.version = Autolinker.version; - - this.urls = this.normalizeUrlsCfg( cfg.urls ); - this.email = typeof cfg.email === 'boolean' ? cfg.email : true; - this.twitter = typeof cfg.twitter === 'boolean' ? cfg.twitter : true; - this.phone = typeof cfg.phone === 'boolean' ? cfg.phone : true; - this.hashtag = cfg.hashtag || false; - this.newWindow = typeof cfg.newWindow === 'boolean' ? cfg.newWindow : true; - this.stripPrefix = typeof cfg.stripPrefix === 'boolean' ? cfg.stripPrefix : true; - - // Validate the value of the `hashtag` cfg. - var hashtag = this.hashtag; - if( hashtag !== false && hashtag !== 'twitter' && hashtag !== 'facebook' && hashtag !== 'instagram' ) { - throw new Error( "invalid `hashtag` cfg - see docs" ); - } - - this.truncate = this.normalizeTruncateCfg( cfg.truncate ); - this.className = cfg.className || ''; - this.replaceFn = cfg.replaceFn || null; - - this.htmlParser = null; - this.matchers = null; - this.tagBuilder = null; -}; - - - -/** - * Automatically links URLs, Email addresses, Phone Numbers, Twitter handles, - * and Hashtags found in the given chunk of HTML. Does not link URLs found - * within HTML tags. - * - * For instance, if given the text: `You should go to http://www.yahoo.com`, - * then the result will be `You should go to <a href="http://www.yahoo.com">http://www.yahoo.com</a>` - * - * Example: - * - * var linkedText = Autolinker.link( "Go to google.com", { newWindow: false } ); - * // Produces: "Go to google.com" - * - * @static - * @param {String} textOrHtml The HTML or text to find matches within (depending - * on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #twitter}, - * and {@link #hashtag} options are enabled). - * @param {Object} [options] Any of the configuration options for the Autolinker - * class, specified in an Object (map). See the class description for an - * example call. - * @return {String} The HTML text, with matches automatically linked. - */ -Autolinker.link = function( textOrHtml, options ) { - var autolinker = new Autolinker( options ); - return autolinker.link( textOrHtml ); -}; - - -/** - * @static - * @property {String} version (readonly) - * - * The Autolinker version number in the form major.minor.patch - * - * Ex: 0.25.1 - */ -Autolinker.version = '0.28.1'; - - -Autolinker.prototype = { - constructor : Autolinker, // fix constructor property - - /** - * @cfg {Boolean/Object} [urls=true] - * - * `true` if URLs should be automatically linked, `false` if they should not - * be. - * - * This option also accepts an Object form with 3 properties, to allow for - * more customization of what exactly gets linked. All default to `true`: - * - * @param {Boolean} schemeMatches `true` to match URLs found prefixed with a - * scheme, i.e. `http://google.com`, or `other+scheme://google.com`, - * `false` to prevent these types of matches. - * @param {Boolean} wwwMatches `true` to match urls found prefixed with - * `'www.'`, i.e. `www.google.com`. `false` to prevent these types of - * matches. Note that if the URL had a prefixed scheme, and - * `schemeMatches` is true, it will still be linked. - * @param {Boolean} tldMatches `true` to match URLs with known top level - * domains (.com, .net, etc.) that are not prefixed with a scheme or - * `'www.'`. This option attempts to match anything that looks like a URL - * in the given text. Ex: `google.com`, `asdf.org/?page=1`, etc. `false` - * to prevent these types of matches. - */ - - /** - * @cfg {Boolean} [email=true] - * - * `true` if email addresses should be automatically linked, `false` if they - * should not be. - */ - - /** - * @cfg {Boolean} [twitter=true] - * - * `true` if Twitter handles ("@example") should be automatically linked, - * `false` if they should not be. - */ - - /** - * @cfg {Boolean} [phone=true] - * - * `true` if Phone numbers ("(555)555-5555") should be automatically linked, - * `false` if they should not be. - */ - - /** - * @cfg {Boolean/String} [hashtag=false] - * - * A string for the service name to have hashtags (ex: "#myHashtag") - * auto-linked to. The currently-supported values are: - * - * - 'twitter' - * - 'facebook' - * - 'instagram' - * - * Pass `false` to skip auto-linking of hashtags. - */ - - /** - * @cfg {Boolean} [newWindow=true] - * - * `true` if the links should open in a new window, `false` otherwise. - */ - - /** - * @cfg {Boolean} [stripPrefix=true] - * - * `true` if 'http://' or 'https://' and/or the 'www.' should be stripped - * from the beginning of URL links' text, `false` otherwise. - */ - - /** - * @cfg {Number/Object} [truncate=0] - * - * ## Number Form - * - * A number for how many characters matched text should be truncated to - * inside the text of a link. If the matched text is over this number of - * characters, it will be truncated to this length by adding a two period - * ellipsis ('..') to the end of the string. - * - * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file' - * truncated to 25 characters might look something like this: - * 'yahoo.com/some/long/pat..' - * - * Example Usage: - * - * truncate: 25 - * - * - * Defaults to `0` for "no truncation." - * - * - * ## Object Form - * - * An Object may also be provided with two properties: `length` (Number) and - * `location` (String). `location` may be one of the following: 'end' - * (default), 'middle', or 'smart'. - * - * Example Usage: - * - * truncate: { length: 25, location: 'middle' } - * - * @cfg {Number} [truncate.length=0] How many characters to allow before - * truncation will occur. Defaults to `0` for "no truncation." - * @cfg {"end"/"middle"/"smart"} [truncate.location="end"] - * - * - 'end' (default): will truncate up to the number of characters, and then - * add an ellipsis at the end. Ex: 'yahoo.com/some/long/pat..' - * - 'middle': will truncate and add the ellipsis in the middle. Ex: - * 'yahoo.com/s..th/to/a/file' - * - 'smart': for URLs where the algorithm attempts to strip out unnecessary - * parts first (such as the 'www.', then URL scheme, hash, etc.), - * attempting to make the URL human-readable before looking for a good - * point to insert the ellipsis if it is still too long. Ex: - * 'yahoo.com/some..to/a/file'. For more details, see - * {@link Autolinker.truncate.TruncateSmart}. - */ - - /** - * @cfg {String} className - * - * A CSS class name to add to the generated links. This class will be added - * to all links, as well as this class plus match suffixes for styling - * url/email/phone/twitter/hashtag links differently. - * - * For example, if this config is provided as "myLink", then: - * - * - URL links will have the CSS classes: "myLink myLink-url" - * - Email links will have the CSS classes: "myLink myLink-email", and - * - Twitter links will have the CSS classes: "myLink myLink-twitter" - * - Phone links will have the CSS classes: "myLink myLink-phone" - * - Hashtag links will have the CSS classes: "myLink myLink-hashtag" - */ - - /** - * @cfg {Function} replaceFn - * - * A function to individually process each match found in the input string. - * - * See the class's description for usage. - * - * This function is called with the following parameters: - * - * @cfg {Autolinker} replaceFn.autolinker The Autolinker instance, which may - * be used to retrieve child objects from (such as the instance's - * {@link #getTagBuilder tag builder}). - * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which - * can be used to retrieve information about the match that the `replaceFn` - * is currently processing. See {@link Autolinker.match.Match} subclasses - * for details. - */ - - - /** - * @property {String} version (readonly) - * - * The Autolinker version number in the form major.minor.patch - * - * Ex: 0.25.1 - */ - - /** - * @private - * @property {Autolinker.htmlParser.HtmlParser} htmlParser - * - * The HtmlParser instance used to skip over HTML tags, while finding text - * nodes to process. This is lazily instantiated in the {@link #getHtmlParser} - * method. - */ - - /** - * @private - * @property {Autolinker.matcher.Matcher[]} matchers - * - * The {@link Autolinker.matcher.Matcher} instances for this Autolinker - * instance. - * - * This is lazily created in {@link #getMatchers}. - */ - - /** - * @private - * @property {Autolinker.AnchorTagBuilder} tagBuilder - * - * The AnchorTagBuilder instance used to build match replacement anchor tags. - * Note: this is lazily instantiated in the {@link #getTagBuilder} method. - */ - - - /** - * Normalizes the {@link #urls} config into an Object with 3 properties: - * `schemeMatches`, `wwwMatches`, and `tldMatches`, all Booleans. - * - * See {@link #urls} config for details. - * - * @private - * @param {Boolean/Object} urls - * @return {Object} - */ - normalizeUrlsCfg : function( urls ) { - if( urls == null ) urls = true; // default to `true` - - if( typeof urls === 'boolean' ) { - return { schemeMatches: urls, wwwMatches: urls, tldMatches: urls }; - - } else { // object form - return { - schemeMatches : typeof urls.schemeMatches === 'boolean' ? urls.schemeMatches : true, - wwwMatches : typeof urls.wwwMatches === 'boolean' ? urls.wwwMatches : true, - tldMatches : typeof urls.tldMatches === 'boolean' ? urls.tldMatches : true - }; - } - }, - - - /** - * Normalizes the {@link #truncate} config into an Object with 2 properties: - * `length` (Number), and `location` (String). - * - * See {@link #truncate} config for details. - * - * @private - * @param {Number/Object} truncate - * @return {Object} - */ - normalizeTruncateCfg : function( truncate ) { - if( typeof truncate === 'number' ) { - return { length: truncate, location: 'end' }; - - } else { // object, or undefined/null - return Autolinker.Util.defaults( truncate || {}, { - length : Number.POSITIVE_INFINITY, - location : 'end' - } ); - } - }, - - - /** - * Parses the input `textOrHtml` looking for URLs, email addresses, phone - * numbers, username handles, and hashtags (depending on the configuration - * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match} - * objects describing those matches. - * - * This method is used by the {@link #link} method, but can also be used to - * simply do parsing of the input in order to discover what kinds of links - * there are and how many. - * - * @param {String} textOrHtml The HTML or text to find matches within - * (depending on if the {@link #urls}, {@link #email}, {@link #phone}, - * {@link #twitter}, and {@link #hashtag} options are enabled). - * @return {Autolinker.match.Match[]} The array of Matches found in the - * given input `textOrHtml`. - */ - parse : function( textOrHtml ) { - var htmlParser = this.getHtmlParser(), - htmlNodes = htmlParser.parse( textOrHtml ), - anchorTagStackCount = 0, // used to only process text around anchor tags, and any inner text/html they may have; - matches = []; - - // Find all matches within the `textOrHtml` (but not matches that are - // already nested within tags) - for( var i = 0, len = htmlNodes.length; i < len; i++ ) { - var node = htmlNodes[ i ], - nodeType = node.getType(); - - if( nodeType === 'element' && node.getTagName() === 'a' ) { // Process HTML anchor element nodes in the input `textOrHtml` to find out when we're within an tag - if( !node.isClosing() ) { // it's the start tag - anchorTagStackCount++; - } else { // it's the end tag - anchorTagStackCount = Math.max( anchorTagStackCount - 1, 0 ); // attempt to handle extraneous tags by making sure the stack count never goes below 0 - } - - } else if( nodeType === 'text' && anchorTagStackCount === 0 ) { // Process text nodes that are not within an tag - var textNodeMatches = this.parseText( node.getText(), node.getOffset() ); - - matches.push.apply( matches, textNodeMatches ); - } - } - - - // After we have found all matches, remove subsequent matches that - // overlap with a previous match. This can happen for instance with URLs, - // where the url 'google.com/#link' would match '#link' as a hashtag. - matches = this.compactMatches( matches ); - - // And finally, remove matches for match types that have been turned - // off. We needed to have all match types turned on initially so that - // things like hashtags could be filtered out if they were really just - // part of a URL match (for instance, as a named anchor). - matches = this.removeUnwantedMatches( matches ); - - return matches; - }, - - - /** - * After we have found all matches, we need to remove subsequent matches - * that overlap with a previous match. This can happen for instance with - * URLs, where the url 'google.com/#link' would match '#link' as a hashtag. - * - * @private - * @param {Autolinker.match.Match[]} matches - * @return {Autolinker.match.Match[]} - */ - compactMatches : function( matches ) { - // First, the matches need to be sorted in order of offset - matches.sort( function( a, b ) { return a.getOffset() - b.getOffset(); } ); - - for( var i = 0; i < matches.length - 1; i++ ) { - var match = matches[ i ], - endIdx = match.getOffset() + match.getMatchedText().length; - - // Remove subsequent matches that overlap with the current match - while( i + 1 < matches.length && matches[ i + 1 ].getOffset() <= endIdx ) { - matches.splice( i + 1, 1 ); - } - } - - return matches; - }, - - - /** - * Removes matches for matchers that were turned off in the options. For - * example, if {@link #hashtag hashtags} were not to be matched, we'll - * remove them from the `matches` array here. - * - * @private - * @param {Autolinker.match.Match[]} matches The array of matches to remove - * the unwanted matches from. Note: this array is mutated for the - * removals. - * @return {Autolinker.match.Match[]} The mutated input `matches` array. - */ - removeUnwantedMatches : function( matches ) { - var remove = Autolinker.Util.remove; - - if( !this.hashtag ) remove( matches, function( match ) { return match.getType() === 'hashtag'; } ); - if( !this.email ) remove( matches, function( match ) { return match.getType() === 'email'; } ); - if( !this.phone ) remove( matches, function( match ) { return match.getType() === 'phone'; } ); - if( !this.twitter ) remove( matches, function( match ) { return match.getType() === 'twitter'; } ); - if( !this.urls.schemeMatches ) { - remove( matches, function( m ) { return m.getType() === 'url' && m.getUrlMatchType() === 'scheme'; } ); - } - if( !this.urls.wwwMatches ) { - remove( matches, function( m ) { return m.getType() === 'url' && m.getUrlMatchType() === 'www'; } ); - } - if( !this.urls.tldMatches ) { - remove( matches, function( m ) { return m.getType() === 'url' && m.getUrlMatchType() === 'tld'; } ); - } - - return matches; - }, - - - /** - * Parses the input `text` looking for URLs, email addresses, phone - * numbers, username handles, and hashtags (depending on the configuration - * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match} - * objects describing those matches. - * - * This method processes a **non-HTML string**, and is used to parse and - * match within the text nodes of an HTML string. This method is used - * internally by {@link #parse}. - * - * @private - * @param {String} text The text to find matches within (depending on if the - * {@link #urls}, {@link #email}, {@link #phone}, {@link #twitter}, and - * {@link #hashtag} options are enabled). This must be a non-HTML string. - * @param {Number} [offset=0] The offset of the text node within the - * original string. This is used when parsing with the {@link #parse} - * method to generate correct offsets within the {@link Autolinker.match.Match} - * instances, but may be omitted if calling this method publicly. - * @return {Autolinker.match.Match[]} The array of Matches found in the - * given input `text`. - */ - parseText : function( text, offset ) { - offset = offset || 0; - var matchers = this.getMatchers(), - matches = []; - - for( var i = 0, numMatchers = matchers.length; i < numMatchers; i++ ) { - var textMatches = matchers[ i ].parseMatches( text ); - - // Correct the offset of each of the matches. They are originally - // the offset of the match within the provided text node, but we - // need to correct them to be relative to the original HTML input - // string (i.e. the one provided to #parse). - for( var j = 0, numTextMatches = textMatches.length; j < numTextMatches; j++ ) { - textMatches[ j ].setOffset( offset + textMatches[ j ].getOffset() ); - } - - matches.push.apply( matches, textMatches ); - } - return matches; - }, - - - /** - * Automatically links URLs, Email addresses, Phone numbers, Twitter - * handles, and Hashtags found in the given chunk of HTML. Does not link - * URLs found within HTML tags. - * - * For instance, if given the text: `You should go to http://www.yahoo.com`, - * then the result will be `You should go to - * <a href="http://www.yahoo.com">http://www.yahoo.com</a>` - * - * This method finds the text around any HTML elements in the input - * `textOrHtml`, which will be the text that is processed. Any original HTML - * elements will be left as-is, as well as the text that is already wrapped - * in anchor (<a>) tags. - * - * @param {String} textOrHtml The HTML or text to autolink matches within - * (depending on if the {@link #urls}, {@link #email}, {@link #phone}, - * {@link #twitter}, and {@link #hashtag} options are enabled). - * @return {String} The HTML, with matches automatically linked. - */ - link : function( textOrHtml ) { - if( !textOrHtml ) { return ""; } // handle `null` and `undefined` - - var matches = this.parse( textOrHtml ), - newHtml = [], - lastIndex = 0; - - for( var i = 0, len = matches.length; i < len; i++ ) { - var match = matches[ i ]; - - newHtml.push( textOrHtml.substring( lastIndex, match.getOffset() ) ); - newHtml.push( this.createMatchReturnVal( match ) ); - - lastIndex = match.getOffset() + match.getMatchedText().length; - } - newHtml.push( textOrHtml.substring( lastIndex ) ); // handle the text after the last match - - return newHtml.join( '' ); - }, - - - /** - * Creates the return string value for a given match in the input string. - * - * This method handles the {@link #replaceFn}, if one was provided. - * - * @private - * @param {Autolinker.match.Match} match The Match object that represents - * the match. - * @return {String} The string that the `match` should be replaced with. - * This is usually the anchor tag string, but may be the `matchStr` itself - * if the match is not to be replaced. - */ - createMatchReturnVal : function( match ) { - // Handle a custom `replaceFn` being provided - var replaceFnResult; - if( this.replaceFn ) { - replaceFnResult = this.replaceFn.call( this, this, match ); // Autolinker instance is the context, and the first arg - } - - if( typeof replaceFnResult === 'string' ) { - return replaceFnResult; // `replaceFn` returned a string, use that - - } else if( replaceFnResult === false ) { - return match.getMatchedText(); // no replacement for the match - - } else if( replaceFnResult instanceof Autolinker.HtmlTag ) { - return replaceFnResult.toAnchorString(); - - } else { // replaceFnResult === true, or no/unknown return value from function - // Perform Autolinker's default anchor tag generation - var anchorTag = match.buildTag(); // returns an Autolinker.HtmlTag instance - - return anchorTag.toAnchorString(); - } - }, - - - /** - * Lazily instantiates and returns the {@link #htmlParser} instance for this - * Autolinker instance. - * - * @protected - * @return {Autolinker.htmlParser.HtmlParser} - */ - getHtmlParser : function() { - var htmlParser = this.htmlParser; - - if( !htmlParser ) { - htmlParser = this.htmlParser = new Autolinker.htmlParser.HtmlParser(); - } - - return htmlParser; - }, - - - /** - * Lazily instantiates and returns the {@link Autolinker.matcher.Matcher} - * instances for this Autolinker instance. - * - * @protected - * @return {Autolinker.matcher.Matcher[]} - */ - getMatchers : function() { - if( !this.matchers ) { - var matchersNs = Autolinker.matcher, - tagBuilder = this.getTagBuilder(); - - var matchers = [ - new matchersNs.Hashtag( { tagBuilder: tagBuilder, serviceName: this.hashtag } ), - new matchersNs.Email( { tagBuilder: tagBuilder } ), - new matchersNs.Phone( { tagBuilder: tagBuilder } ), - new matchersNs.Twitter( { tagBuilder: tagBuilder } ), - new matchersNs.Url( { tagBuilder: tagBuilder, stripPrefix: this.stripPrefix } ) - ]; - - return ( this.matchers = matchers ); - - } else { - return this.matchers; - } - }, - - - /** - * Returns the {@link #tagBuilder} instance for this Autolinker instance, lazily instantiating it - * if it does not yet exist. - * - * This method may be used in a {@link #replaceFn} to generate the {@link Autolinker.HtmlTag HtmlTag} instance that - * Autolinker would normally generate, and then allow for modifications before returning it. For example: - * - * var html = Autolinker.link( "Test google.com", { - * replaceFn : function( autolinker, match ) { - * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance - * tag.setAttr( 'rel', 'nofollow' ); - * - * return tag; - * } - * } ); - * - * // generated html: - * // Test google.com - * - * @return {Autolinker.AnchorTagBuilder} - */ - getTagBuilder : function() { - var tagBuilder = this.tagBuilder; - - if( !tagBuilder ) { - tagBuilder = this.tagBuilder = new Autolinker.AnchorTagBuilder( { - newWindow : this.newWindow, - truncate : this.truncate, - className : this.className - } ); - } - - return tagBuilder; - } - -}; - - -// Autolinker Namespaces - -Autolinker.match = {}; -Autolinker.matcher = {}; -Autolinker.htmlParser = {}; -Autolinker.truncate = {}; - -/*global Autolinker */ -/*jshint eqnull:true, boss:true */ -/** - * @class Autolinker.Util - * @singleton - * - * A few utility methods for Autolinker. - */ -Autolinker.Util = { - - /** - * @property {Function} abstractMethod - * - * A function object which represents an abstract method. - */ - abstractMethod : function() { throw "abstract"; }, - - - /** - * @private - * @property {RegExp} trimRegex - * - * The regular expression used to trim the leading and trailing whitespace - * from a string. - */ - trimRegex : /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - - /** - * Assigns (shallow copies) the properties of `src` onto `dest`. - * - * @param {Object} dest The destination object. - * @param {Object} src The source object. - * @return {Object} The destination object (`dest`) - */ - assign : function( dest, src ) { - for( var prop in src ) { - if( src.hasOwnProperty( prop ) ) { - dest[ prop ] = src[ prop ]; - } - } - - return dest; - }, - - - /** - * Assigns (shallow copies) the properties of `src` onto `dest`, if the - * corresponding property on `dest` === `undefined`. - * - * @param {Object} dest The destination object. - * @param {Object} src The source object. - * @return {Object} The destination object (`dest`) - */ - defaults : function( dest, src ) { - for( var prop in src ) { - if( src.hasOwnProperty( prop ) && dest[ prop ] === undefined ) { - dest[ prop ] = src[ prop ]; - } - } - - return dest; - }, - - - /** - * Extends `superclass` to create a new subclass, adding the `protoProps` to the new subclass's prototype. - * - * @param {Function} superclass The constructor function for the superclass. - * @param {Object} protoProps The methods/properties to add to the subclass's prototype. This may contain the - * special property `constructor`, which will be used as the new subclass's constructor function. - * @return {Function} The new subclass function. - */ - extend : function( superclass, protoProps ) { - var superclassProto = superclass.prototype; - - var F = function() {}; - F.prototype = superclassProto; - - var subclass; - if( protoProps.hasOwnProperty( 'constructor' ) ) { - subclass = protoProps.constructor; - } else { - subclass = function() { superclassProto.constructor.apply( this, arguments ); }; - } - - var subclassProto = subclass.prototype = new F(); // set up prototype chain - subclassProto.constructor = subclass; // fix constructor property - subclassProto.superclass = superclassProto; - - delete protoProps.constructor; // don't re-assign constructor property to the prototype, since a new function may have been created (`subclass`), which is now already there - Autolinker.Util.assign( subclassProto, protoProps ); - - return subclass; - }, - - - /** - * Truncates the `str` at `len - ellipsisChars.length`, and adds the `ellipsisChars` to the - * end of the string (by default, two periods: '..'). If the `str` length does not exceed - * `len`, the string will be returned unchanged. - * - * @param {String} str The string to truncate and add an ellipsis to. - * @param {Number} truncateLen The length to truncate the string at. - * @param {String} [ellipsisChars=..] The ellipsis character(s) to add to the end of `str` - * when truncated. Defaults to '..' - */ - ellipsis : function( str, truncateLen, ellipsisChars ) { - if( str.length > truncateLen ) { - ellipsisChars = ( ellipsisChars == null ) ? '..' : ellipsisChars; - str = str.substring( 0, truncateLen - ellipsisChars.length ) + ellipsisChars; - } - return str; - }, - - - /** - * Supports `Array.prototype.indexOf()` functionality for old IE (IE8 and below). - * - * @param {Array} arr The array to find an element of. - * @param {*} element The element to find in the array, and return the index of. - * @return {Number} The index of the `element`, or -1 if it was not found. - */ - indexOf : function( arr, element ) { - if( Array.prototype.indexOf ) { - return arr.indexOf( element ); - - } else { - for( var i = 0, len = arr.length; i < len; i++ ) { - if( arr[ i ] === element ) return i; - } - return -1; - } - }, - - - /** - * Removes array elements based on a filtering function. Mutates the input - * array. - * - * Using this instead of the ES5 Array.prototype.filter() function, to allow - * Autolinker compatibility with IE8, and also to prevent creating many new - * arrays in memory for filtering. - * - * @param {Array} arr The array to remove elements from. This array is - * mutated. - * @param {Function} fn A function which should return `true` to - * remove an element. - * @return {Array} The mutated input `arr`. - */ - remove : function( arr, fn ) { - for( var i = arr.length - 1; i >= 0; i-- ) { - if( fn( arr[ i ] ) === true ) { - arr.splice( i, 1 ); - } - } - }, - - - /** - * Performs the functionality of what modern browsers do when `String.prototype.split()` is called - * with a regular expression that contains capturing parenthesis. - * - * For example: - * - * // Modern browsers: - * "a,b,c".split( /(,)/ ); // --> [ 'a', ',', 'b', ',', 'c' ] - * - * // Old IE (including IE8): - * "a,b,c".split( /(,)/ ); // --> [ 'a', 'b', 'c' ] - * - * This method emulates the functionality of modern browsers for the old IE case. - * - * @param {String} str The string to split. - * @param {RegExp} splitRegex The regular expression to split the input `str` on. The splitting - * character(s) will be spliced into the array, as in the "modern browsers" example in the - * description of this method. - * Note #1: the supplied regular expression **must** have the 'g' flag specified. - * Note #2: for simplicity's sake, the regular expression does not need - * to contain capturing parenthesis - it will be assumed that any match has them. - * @return {String[]} The split array of strings, with the splitting character(s) included. - */ - splitAndCapture : function( str, splitRegex ) { - if( !splitRegex.global ) throw new Error( "`splitRegex` must have the 'g' flag set" ); - - var result = [], - lastIdx = 0, - match; - - while( match = splitRegex.exec( str ) ) { - result.push( str.substring( lastIdx, match.index ) ); - result.push( match[ 0 ] ); // push the splitting char(s) - - lastIdx = match.index + match[ 0 ].length; - } - result.push( str.substring( lastIdx ) ); - - return result; - }, - - - /** - * Trims the leading and trailing whitespace from a string. - * - * @param {String} str The string to trim. - * @return {String} - */ - trim : function( str ) { - return str.replace( this.trimRegex, '' ); - } - -}; -/*global Autolinker */ -/*jshint boss:true */ -/** - * @class Autolinker.HtmlTag - * @extends Object - * - * Represents an HTML tag, which can be used to easily build/modify HTML tags programmatically. - * - * Autolinker uses this abstraction to create HTML tags, and then write them out as strings. You may also use - * this class in your code, especially within a {@link Autolinker#replaceFn replaceFn}. - * - * ## Examples - * - * Example instantiation: - * - * var tag = new Autolinker.HtmlTag( { - * tagName : 'a', - * attrs : { 'href': 'http://google.com', 'class': 'external-link' }, - * innerHtml : 'Google' - * } ); - * - * tag.toAnchorString(); // Google - * - * // Individual accessor methods - * tag.getTagName(); // 'a' - * tag.getAttr( 'href' ); // 'http://google.com' - * tag.hasClass( 'external-link' ); // true - * - * - * Using mutator methods (which may be used in combination with instantiation config properties): - * - * var tag = new Autolinker.HtmlTag(); - * tag.setTagName( 'a' ); - * tag.setAttr( 'href', 'http://google.com' ); - * tag.addClass( 'external-link' ); - * tag.setInnerHtml( 'Google' ); - * - * tag.getTagName(); // 'a' - * tag.getAttr( 'href' ); // 'http://google.com' - * tag.hasClass( 'external-link' ); // true - * - * tag.toAnchorString(); // Google - * - * - * ## Example use within a {@link Autolinker#replaceFn replaceFn} - * - * var html = Autolinker.link( "Test google.com", { - * replaceFn : function( autolinker, match ) { - * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance, configured with the Match's href and anchor text - * tag.setAttr( 'rel', 'nofollow' ); - * - * return tag; - * } - * } ); - * - * // generated html: - * // Test google.com - * - * - * ## Example use with a new tag for the replacement - * - * var html = Autolinker.link( "Test google.com", { - * replaceFn : function( autolinker, match ) { - * var tag = new Autolinker.HtmlTag( { - * tagName : 'button', - * attrs : { 'title': 'Load URL: ' + match.getAnchorHref() }, - * innerHtml : 'Load URL: ' + match.getAnchorText() - * } ); - * - * return tag; - * } - * } ); - * - * // generated html: - * // Test - */ -Autolinker.HtmlTag = Autolinker.Util.extend( Object, { - - /** - * @cfg {String} tagName - * - * The tag name. Ex: 'a', 'button', etc. - * - * Not required at instantiation time, but should be set using {@link #setTagName} before {@link #toAnchorString} - * is executed. - */ - - /** - * @cfg {Object.} attrs - * - * An key/value Object (map) of attributes to create the tag with. The keys are the attribute names, and the - * values are the attribute values. - */ - - /** - * @cfg {String} innerHtml - * - * The inner HTML for the tag. - * - * Note the camel case name on `innerHtml`. Acronyms are camelCased in this utility (such as not to run into the acronym - * naming inconsistency that the DOM developers created with `XMLHttpRequest`). You may alternatively use {@link #innerHTML} - * if you prefer, but this one is recommended. - */ - - /** - * @cfg {String} innerHTML - * - * Alias of {@link #innerHtml}, accepted for consistency with the browser DOM api, but prefer the camelCased version - * for acronym names. - */ - - - /** - * @protected - * @property {RegExp} whitespaceRegex - * - * Regular expression used to match whitespace in a string of CSS classes. - */ - whitespaceRegex : /\s+/, - - - /** - * @constructor - * @param {Object} [cfg] The configuration properties for this class, in an Object (map) - */ - constructor : function( cfg ) { - Autolinker.Util.assign( this, cfg ); - - this.innerHtml = this.innerHtml || this.innerHTML; // accept either the camelCased form or the fully capitalized acronym - }, - - - /** - * Sets the tag name that will be used to generate the tag with. - * - * @param {String} tagName - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setTagName : function( tagName ) { - this.tagName = tagName; - return this; - }, - - - /** - * Retrieves the tag name. - * - * @return {String} - */ - getTagName : function() { - return this.tagName || ""; - }, - - - /** - * Sets an attribute on the HtmlTag. - * - * @param {String} attrName The attribute name to set. - * @param {String} attrValue The attribute value to set. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setAttr : function( attrName, attrValue ) { - var tagAttrs = this.getAttrs(); - tagAttrs[ attrName ] = attrValue; - - return this; - }, - - - /** - * Retrieves an attribute from the HtmlTag. If the attribute does not exist, returns `undefined`. - * - * @param {String} attrName The attribute name to retrieve. - * @return {String} The attribute's value, or `undefined` if it does not exist on the HtmlTag. - */ - getAttr : function( attrName ) { - return this.getAttrs()[ attrName ]; - }, - - - /** - * Sets one or more attributes on the HtmlTag. - * - * @param {Object.} attrs A key/value Object (map) of the attributes to set. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setAttrs : function( attrs ) { - var tagAttrs = this.getAttrs(); - Autolinker.Util.assign( tagAttrs, attrs ); - - return this; - }, - - - /** - * Retrieves the attributes Object (map) for the HtmlTag. - * - * @return {Object.} A key/value object of the attributes for the HtmlTag. - */ - getAttrs : function() { - return this.attrs || ( this.attrs = {} ); - }, - - - /** - * Sets the provided `cssClass`, overwriting any current CSS classes on the HtmlTag. - * - * @param {String} cssClass One or more space-separated CSS classes to set (overwrite). - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setClass : function( cssClass ) { - return this.setAttr( 'class', cssClass ); - }, - - - /** - * Convenience method to add one or more CSS classes to the HtmlTag. Will not add duplicate CSS classes. - * - * @param {String} cssClass One or more space-separated CSS classes to add. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - addClass : function( cssClass ) { - var classAttr = this.getClass(), - whitespaceRegex = this.whitespaceRegex, - indexOf = Autolinker.Util.indexOf, // to support IE8 and below - classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ), - newClasses = cssClass.split( whitespaceRegex ), - newClass; - - while( newClass = newClasses.shift() ) { - if( indexOf( classes, newClass ) === -1 ) { - classes.push( newClass ); - } - } - - this.getAttrs()[ 'class' ] = classes.join( " " ); - return this; - }, - - - /** - * Convenience method to remove one or more CSS classes from the HtmlTag. - * - * @param {String} cssClass One or more space-separated CSS classes to remove. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - removeClass : function( cssClass ) { - var classAttr = this.getClass(), - whitespaceRegex = this.whitespaceRegex, - indexOf = Autolinker.Util.indexOf, // to support IE8 and below - classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ), - removeClasses = cssClass.split( whitespaceRegex ), - removeClass; - - while( classes.length && ( removeClass = removeClasses.shift() ) ) { - var idx = indexOf( classes, removeClass ); - if( idx !== -1 ) { - classes.splice( idx, 1 ); - } - } - - this.getAttrs()[ 'class' ] = classes.join( " " ); - return this; - }, - - - /** - * Convenience method to retrieve the CSS class(es) for the HtmlTag, which will each be separated by spaces when - * there are multiple. - * - * @return {String} - */ - getClass : function() { - return this.getAttrs()[ 'class' ] || ""; - }, - - - /** - * Convenience method to check if the tag has a CSS class or not. - * - * @param {String} cssClass The CSS class to check for. - * @return {Boolean} `true` if the HtmlTag has the CSS class, `false` otherwise. - */ - hasClass : function( cssClass ) { - return ( ' ' + this.getClass() + ' ' ).indexOf( ' ' + cssClass + ' ' ) !== -1; - }, - - - /** - * Sets the inner HTML for the tag. - * - * @param {String} html The inner HTML to set. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setInnerHtml : function( html ) { - this.innerHtml = html; - - return this; - }, - - - /** - * Retrieves the inner HTML for the tag. - * - * @return {String} - */ - getInnerHtml : function() { - return this.innerHtml || ""; - }, - - - /** - * Override of superclass method used to generate the HTML string for the tag. - * - * @return {String} - */ - toAnchorString : function() { - var tagName = this.getTagName(), - attrsStr = this.buildAttrsStr(); - - attrsStr = ( attrsStr ) ? ' ' + attrsStr : ''; // prepend a space if there are actually attributes - - return [ '<', tagName, attrsStr, '>', this.getInnerHtml(), '' ].join( "" ); - }, - - - /** - * Support method for {@link #toAnchorString}, returns the string space-separated key="value" pairs, used to populate - * the stringified HtmlTag. - * - * @protected - * @return {String} Example return: `attr1="value1" attr2="value2"` - */ - buildAttrsStr : function() { - if( !this.attrs ) return ""; // no `attrs` Object (map) has been set, return empty string - - var attrs = this.getAttrs(), - attrsArr = []; - - for( var prop in attrs ) { - if( attrs.hasOwnProperty( prop ) ) { - attrsArr.push( prop + '="' + attrs[ prop ] + '"' ); - } - } - return attrsArr.join( " " ); - } - -} ); - -/*global Autolinker */ -/** - * @class Autolinker.RegexLib - * @singleton - * - * Builds and stores a library of the common regular expressions used by the - * Autolinker utility. - * - * Other regular expressions may exist ad-hoc, but these are generally the - * regular expressions that are shared between source files. - */ -Autolinker.RegexLib = (function() { - - /** - * The string form of a regular expression that would match all of the - * alphabetic ("letter") chars in the unicode character set when placed in a - * RegExp character class (`[]`). This includes all international alphabetic - * characters. - * - * These would be the characters matched by unicode regex engines `\p{L}` - * escape ("all letters"). - * - * Taken from the XRegExp library: http://xregexp.com/ - * Specifically: http://xregexp.com/v/3.0.0/unicode-categories.js - * - * @private - * @type {String} - */ - var alphaCharsStr = 'A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC'; - - /** - * The string form of a regular expression that would match all of the - * decimal number chars in the unicode character set when placed in a RegExp - * character class (`[]`). - * - * These would be the characters matched by unicode regex engines `\p{Nd}` - * escape ("all decimal numbers") - * - * Taken from the XRegExp library: http://xregexp.com/ - * Specifically: http://xregexp.com/v/3.0.0/unicode-categories.js - * - * @private - * @type {String} - */ - var decimalNumbersStr = '0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19'; - - - // See documentation below - var alphaNumericCharsStr = alphaCharsStr + decimalNumbersStr; - - - // See documentation below - var domainNameRegex = new RegExp( '[' + alphaNumericCharsStr + '.\\-]*[' + alphaNumericCharsStr + '\\-]' ); - - - // See documentation below - var tldRegex = /(?:travelersinsurance|sandvikcoromant|kerryproperties|cancerresearch|weatherchannel|kerrylogistics|spreadbetting|international|wolterskluwer|lifeinsurance|construction|pamperedchef|scholarships|versicherung|bridgestone|creditunion|kerryhotels|investments|productions|blackfriday|enterprises|lamborghini|photography|motorcycles|williamhill|playstation|contractors|barclaycard|accountants|redumbrella|engineering|management|telefonica|protection|consulting|tatamotors|creditcard|vlaanderen|schaeffler|associates|properties|foundation|republican|bnpparibas|boehringer|eurovision|extraspace|industries|immobilien|university|technology|volkswagen|healthcare|restaurant|cuisinella|vistaprint|apartments|accountant|travelers|homedepot|institute|vacations|furniture|fresenius|insurance|christmas|bloomberg|solutions|barcelona|firestone|financial|kuokgroup|fairwinds|community|passagens|goldpoint|equipment|lifestyle|yodobashi|aquarelle|marketing|analytics|education|amsterdam|statefarm|melbourne|allfinanz|directory|microsoft|stockholm|montblanc|accenture|lancaster|landrover|everbank|istanbul|graphics|grainger|ipiranga|softbank|attorney|pharmacy|saarland|catering|airforce|yokohama|mortgage|frontier|mutuelle|stcgroup|memorial|pictures|football|symantec|cipriani|ventures|telecity|cityeats|verisign|flsmidth|boutique|cleaning|firmdale|clinique|clothing|redstone|infiniti|deloitte|feedback|services|broadway|plumbing|commbank|training|barclays|exchange|computer|brussels|software|delivery|barefoot|builders|business|bargains|engineer|holdings|download|security|helsinki|lighting|movistar|discount|hdfcbank|supplies|marriott|property|diamonds|capetown|partners|democrat|jpmorgan|bradesco|budapest|rexroth|zuerich|shriram|academy|science|support|youtube|singles|surgery|alibaba|statoil|dentist|schwarz|android|cruises|cricket|digital|markets|starhub|systems|courses|coupons|netbank|country|domains|corsica|network|neustar|realtor|lincoln|limited|schmidt|yamaxun|cooking|contact|auction|spiegel|liaison|leclerc|latrobe|lasalle|abogado|compare|lanxess|exposed|express|company|cologne|college|avianca|lacaixa|fashion|recipes|ferrero|komatsu|storage|wanggou|clubmed|sandvik|fishing|fitness|bauhaus|kitchen|flights|florist|flowers|watches|weather|temasek|samsung|bentley|forsale|channel|theater|frogans|theatre|okinawa|website|tickets|jewelry|gallery|tiffany|iselect|shiksha|brother|organic|wedding|genting|toshiba|origins|philips|hyundai|hotmail|hoteles|hosting|rentals|windows|cartier|bugatti|holiday|careers|whoswho|hitachi|panerai|caravan|reviews|guitars|capital|trading|hamburg|hangout|finance|stream|family|abbott|health|review|travel|report|hermes|hiphop|gratis|career|toyota|hockey|dating|repair|google|social|soccer|reisen|global|otsuka|giving|unicom|casino|photos|center|broker|rocher|orange|bostik|garden|insure|ryukyu|bharti|safety|physio|sakura|oracle|online|jaguar|gallup|piaget|tienda|futbol|pictet|joburg|webcam|berlin|office|juegos|kaufen|chanel|chrome|xihuan|church|tennis|circle|kinder|flickr|bayern|claims|clinic|viajes|nowruz|xperia|norton|yachts|studio|coffee|camera|sanofi|nissan|author|expert|events|comsec|lawyer|tattoo|viking|estate|villas|condos|realty|yandex|energy|emerck|virgin|vision|durban|living|school|coupon|london|taobao|natura|taipei|nagoya|luxury|walter|aramco|sydney|madrid|credit|maison|makeup|schule|market|anquan|direct|design|swatch|suzuki|alsace|vuelos|dental|alipay|voyage|shouji|voting|airtel|mutual|degree|supply|agency|museum|mobily|dealer|monash|select|mormon|active|moscow|racing|datsun|quebec|nissay|rodeo|email|gifts|works|photo|chloe|edeka|cheap|earth|vista|tushu|koeln|glass|shoes|globo|tunes|gmail|nokia|space|kyoto|black|ricoh|seven|lamer|sener|epson|cisco|praxi|trust|citic|crown|shell|lease|green|legal|lexus|ninja|tatar|gripe|nikon|group|video|wales|autos|gucci|party|nexus|guide|linde|adult|parts|amica|lixil|boats|azure|loans|locus|cymru|lotte|lotto|stada|click|poker|quest|dabur|lupin|nadex|paris|faith|dance|canon|place|gives|trade|skype|rocks|mango|cloud|boots|smile|final|swiss|homes|honda|media|horse|cards|deals|watch|bosch|house|pizza|miami|osaka|tours|total|xerox|coach|sucks|style|delta|toray|iinet|tools|money|codes|beats|tokyo|salon|archi|movie|baidu|study|actor|yahoo|store|apple|world|forex|today|bible|tmall|tirol|irish|tires|forum|reise|vegas|vodka|sharp|omega|weber|jetzt|audio|promo|build|bingo|chase|gallo|drive|dubai|rehab|press|solar|sale|beer|bbva|bank|band|auto|sapo|sarl|saxo|audi|asia|arte|arpa|army|yoga|ally|zara|scor|scot|sexy|seat|zero|seek|aero|adac|zone|aarp|maif|meet|meme|menu|surf|mini|mobi|mtpc|porn|desi|star|ltda|name|talk|navy|love|loan|live|link|news|limo|like|spot|life|nico|lidl|lgbt|land|taxi|team|tech|kred|kpmg|sony|song|kiwi|kddi|jprs|jobs|sohu|java|itau|tips|info|immo|icbc|hsbc|town|host|page|toys|here|help|pars|haus|guru|guge|tube|goog|golf|gold|sncf|gmbh|gift|ggee|gent|gbiz|game|vana|pics|fund|ford|ping|pink|fish|film|fast|farm|play|fans|fail|plus|skin|pohl|fage|moda|post|erni|dvag|prod|doha|prof|docs|viva|diet|luxe|site|dell|sina|dclk|show|qpon|date|vote|cyou|voto|read|coop|cool|wang|club|city|chat|cern|cash|reit|rent|casa|cars|care|camp|rest|call|cafe|weir|wien|rich|wiki|buzz|wine|book|bond|room|work|rsvp|shia|ruhr|blue|bing|shaw|bike|safe|xbox|best|pwc|mtn|lds|aig|boo|fyi|nra|nrw|ntt|car|gal|obi|zip|aeg|vin|how|one|ong|onl|dad|ooo|bet|esq|org|htc|bar|uol|ibm|ovh|gdn|ice|icu|uno|gea|ifm|bot|top|wtf|lol|day|pet|eus|wtc|ubs|tvs|aco|ing|ltd|ink|tab|abb|afl|cat|int|pid|pin|bid|cba|gle|com|cbn|ads|man|wed|ceb|gmo|sky|ist|gmx|tui|mba|fan|ski|iwc|app|pro|med|ceo|jcb|jcp|goo|dev|men|aaa|meo|pub|jlc|bom|jll|gop|jmp|mil|got|gov|win|jot|mma|joy|trv|red|cfa|cfd|bio|moe|moi|mom|ren|biz|aws|xin|bbc|dnp|buy|kfh|mov|thd|xyz|fit|kia|rio|rip|kim|dog|vet|nyc|bcg|mtr|bcn|bms|bmw|run|bzh|rwe|tel|stc|axa|kpn|fly|krd|cab|bnl|foo|crs|eat|tci|sap|srl|nec|sas|net|cal|sbs|sfr|sca|scb|csc|edu|new|xxx|hiv|fox|wme|ngo|nhk|vip|sex|frl|lat|yun|law|you|tax|soy|sew|om|ac|hu|se|sc|sg|sh|sb|sa|rw|ru|rs|ro|re|qa|py|si|pw|pt|ps|sj|sk|pr|pn|pm|pl|sl|sm|pk|sn|ph|so|pg|pf|pe|pa|zw|nz|nu|nr|np|no|nl|ni|ng|nf|sr|ne|st|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|su|mn|mm|ml|mk|mh|mg|me|sv|md|mc|sx|sy|ma|ly|lv|sz|lu|lt|ls|lr|lk|li|lc|lb|la|tc|kz|td|ky|kw|kr|kp|kn|km|ki|kh|tf|tg|th|kg|ke|jp|jo|jm|je|it|is|ir|tj|tk|tl|tm|iq|tn|to|io|in|im|il|ie|ad|sd|ht|hr|hn|hm|tr|hk|gy|gw|gu|gt|gs|gr|gq|tt|gp|gn|gm|gl|tv|gi|tw|tz|ua|gh|ug|uk|gg|gf|ge|gd|us|uy|uz|va|gb|ga|vc|ve|fr|fo|fm|fk|fj|vg|vi|fi|eu|et|es|er|eg|ee|ec|dz|do|dm|dk|vn|dj|de|cz|cy|cx|cw|vu|cv|cu|cr|co|cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|wf|bz|by|bw|bv|bt|bs|br|bo|bn|bm|bj|bi|ws|bh|bg|bf|be|bd|bb|ba|az|ax|aw|au|at|as|ye|ar|aq|ao|am|al|yt|ai|za|ag|af|ae|zm|id)\b/; - - - return { - - /** - * The string form of a regular expression that would match all of the - * letters and decimal number chars in the unicode character set when placed - * in a RegExp character class (`[]`). - * - * These would be the characters matched by unicode regex engines `[\p{L}\p{Nd}]` - * escape ("all letters and decimal numbers") - * - * @property {String} alphaNumericCharsStr - */ - alphaNumericCharsStr : alphaNumericCharsStr, - - /** - * A regular expression to match domain names of a URL or email address. - * Ex: 'google', 'yahoo', 'some-other-company', etc. - * - * @property {RegExp} domainNameRegex - */ - domainNameRegex : domainNameRegex, - - /** - * A regular expression to match top level domains (TLDs) for a URL or - * email address. Ex: 'com', 'org', 'net', etc. - * - * @property {RegExp} tldRegex - */ - tldRegex : tldRegex - - }; - - -}() ); -/*global Autolinker */ -/*jshint sub:true */ -/** - * @protected - * @class Autolinker.AnchorTagBuilder - * @extends Object - * - * Builds anchor (<a>) tags for the Autolinker utility when a match is - * found. - * - * Normally this class is instantiated, configured, and used internally by an - * {@link Autolinker} instance, but may actually be retrieved in a {@link Autolinker#replaceFn replaceFn} - * to create {@link Autolinker.HtmlTag HtmlTag} instances which may be modified - * before returning from the {@link Autolinker#replaceFn replaceFn}. For - * example: - * - * var html = Autolinker.link( "Test google.com", { - * replaceFn : function( autolinker, match ) { - * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance - * tag.setAttr( 'rel', 'nofollow' ); - * - * return tag; - * } - * } ); - * - * // generated html: - * // Test google.com - */ -Autolinker.AnchorTagBuilder = Autolinker.Util.extend( Object, { - - /** - * @cfg {Boolean} newWindow - * @inheritdoc Autolinker#newWindow - */ - - /** - * @cfg {Object} truncate - * @inheritdoc Autolinker#truncate - */ - - /** - * @cfg {String} className - * @inheritdoc Autolinker#className - */ - - - /** - * @constructor - * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.Util.assign( this, cfg ); - }, - - - /** - * Generates the actual anchor (<a>) tag to use in place of the - * matched text, via its `match` object. - * - * @param {Autolinker.match.Match} match The Match instance to generate an - * anchor tag from. - * @return {Autolinker.HtmlTag} The HtmlTag instance for the anchor tag. - */ - build : function( match ) { - return new Autolinker.HtmlTag( { - tagName : 'a', - attrs : this.createAttrs( match.getType(), match.getAnchorHref() ), - innerHtml : this.processAnchorText( match.getAnchorText() ) - } ); - }, - - - /** - * Creates the Object (map) of the HTML attributes for the anchor (<a>) - * tag being generated. - * - * @protected - * @param {"url"/"email"/"phone"/"twitter"/"hashtag"} matchType The type of - * match that an anchor tag is being generated for. - * @param {String} anchorHref The href for the anchor tag. - * @return {Object} A key/value Object (map) of the anchor tag's attributes. - */ - createAttrs : function( matchType, anchorHref ) { - var attrs = { - 'href' : anchorHref // we'll always have the `href` attribute - }; - - var cssClass = this.createCssClass( matchType ); - if( cssClass ) { - attrs[ 'class' ] = cssClass; - } - if( this.newWindow ) { - attrs[ 'target' ] = "_blank"; - attrs[ 'rel' ] = "noopener noreferrer"; - } - - return attrs; - }, - - - /** - * Creates the CSS class that will be used for a given anchor tag, based on - * the `matchType` and the {@link #className} config. - * - * @private - * @param {"url"/"email"/"phone"/"twitter"/"hashtag"} matchType The type of - * match that an anchor tag is being generated for. - * @return {String} The CSS class string for the link. Example return: - * "myLink myLink-url". If no {@link #className} was configured, returns - * an empty string. - */ - createCssClass : function( matchType ) { - var className = this.className; - - if( !className ) - return ""; - else - return className + " " + className + "-" + matchType; // ex: "myLink myLink-url", "myLink myLink-email", "myLink myLink-phone", "myLink myLink-twitter", or "myLink myLink-hashtag" - }, - - - /** - * Processes the `anchorText` by truncating the text according to the - * {@link #truncate} config. - * - * @private - * @param {String} anchorText The anchor tag's text (i.e. what will be - * displayed). - * @return {String} The processed `anchorText`. - */ - processAnchorText : function( anchorText ) { - anchorText = this.doTruncate( anchorText ); - - return anchorText; - }, - - - /** - * Performs the truncation of the `anchorText` based on the {@link #truncate} - * option. If the `anchorText` is longer than the length specified by the - * {@link #truncate} option, the truncation is performed based on the - * `location` property. See {@link #truncate} for details. - * - * @private - * @param {String} anchorText The anchor tag's text (i.e. what will be - * displayed). - * @return {String} The truncated anchor text. - */ - doTruncate : function( anchorText ) { - var truncate = this.truncate; - if( !truncate || !truncate.length ) return anchorText; - - var truncateLength = truncate.length, - truncateLocation = truncate.location; - - if( truncateLocation === 'smart' ) { - return Autolinker.truncate.TruncateSmart( anchorText, truncateLength, '..' ); - - } else if( truncateLocation === 'middle' ) { - return Autolinker.truncate.TruncateMiddle( anchorText, truncateLength, '..' ); - - } else { - return Autolinker.truncate.TruncateEnd( anchorText, truncateLength, '..' ); - } - } - -} ); - -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.HtmlParser - * @extends Object - * - * An HTML parser implementation which simply walks an HTML string and returns an array of - * {@link Autolinker.htmlParser.HtmlNode HtmlNodes} that represent the basic HTML structure of the input string. - * - * Autolinker uses this to only link URLs/emails/Twitter handles within text nodes, effectively ignoring / "walking - * around" HTML tags. - */ -Autolinker.htmlParser.HtmlParser = Autolinker.Util.extend( Object, { - - /** - * @private - * @property {RegExp} htmlRegex - * - * The regular expression used to pull out HTML tags from a string. Handles namespaced HTML tags and - * attribute names, as specified by http://www.w3.org/TR/html-markup/syntax.html. - * - * Capturing groups: - * - * 1. The "!DOCTYPE" tag name, if a tag is a <!DOCTYPE> tag. - * 2. If it is an end tag, this group will have the '/'. - * 3. If it is a comment tag, this group will hold the comment text (i.e. - * the text inside the `<!--` and `-->`. - * 4. The tag name for all tags (other than the <!DOCTYPE> tag) - */ - htmlRegex : (function() { - var commentTagRegex = /!--([\s\S]+?)--/, - tagNameRegex = /[0-9a-zA-Z][0-9a-zA-Z:]*/, - attrNameRegex = /[^\s"'>\/=\x00-\x1F\x7F]+/, // the unicode range accounts for excluding control chars, and the delete char - attrValueRegex = /(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/, // double quoted, single quoted, or unquoted attribute values - nameEqualsValueRegex = attrNameRegex.source + '(?:\\s*=\\s*' + attrValueRegex.source + ')?'; // optional '=[value]' - - return new RegExp( [ - // for tag. Ex: ) - '(?:', - '<(!DOCTYPE)', // *** Capturing Group 1 - If it's a doctype tag - - // Zero or more attributes following the tag name - '(?:', - '\\s+', // one or more whitespace chars before an attribute - - // Either: - // A. attr="value", or - // B. "value" alone (To cover example doctype tag: ) - '(?:', nameEqualsValueRegex, '|', attrValueRegex.source + ')', - ')*', - '>', - ')', - - '|', - - // All other HTML tags (i.e. tags that are not ) - '(?:', - '<(/)?', // Beginning of a tag or comment. Either '<' for a start tag, or '' - - ')', - ')', - '>', - ')' - ].join( "" ), 'gi' ); - } )(), - - /** - * @private - * @property {RegExp} htmlCharacterEntitiesRegex - * - * The regular expression that matches common HTML character entities. - * - * Ignoring & as it could be part of a query string -- handling it separately. - */ - htmlCharacterEntitiesRegex: /( | |<|<|>|>|"|"|')/gi, - - - /** - * Parses an HTML string and returns a simple array of {@link Autolinker.htmlParser.HtmlNode HtmlNodes} - * to represent the HTML structure of the input string. - * - * @param {String} html The HTML to parse. - * @return {Autolinker.htmlParser.HtmlNode[]} - */ - parse : function( html ) { - var htmlRegex = this.htmlRegex, - currentResult, - lastIndex = 0, - textAndEntityNodes, - nodes = []; // will be the result of the method - - while( ( currentResult = htmlRegex.exec( html ) ) !== null ) { - var tagText = currentResult[ 0 ], - commentText = currentResult[ 3 ], // if we've matched a comment - tagName = currentResult[ 1 ] || currentResult[ 4 ], // The tag (ex: "!DOCTYPE"), or another tag (ex: "a" or "img") - isClosingTag = !!currentResult[ 2 ], - offset = currentResult.index, - inBetweenTagsText = html.substring( lastIndex, offset ); - - // Push TextNodes and EntityNodes for any text found between tags - if( inBetweenTagsText ) { - textAndEntityNodes = this.parseTextAndEntityNodes( lastIndex, inBetweenTagsText ); - nodes.push.apply( nodes, textAndEntityNodes ); - } - - // Push the CommentNode or ElementNode - if( commentText ) { - nodes.push( this.createCommentNode( offset, tagText, commentText ) ); - } else { - nodes.push( this.createElementNode( offset, tagText, tagName, isClosingTag ) ); - } - - lastIndex = offset + tagText.length; - } - - // Process any remaining text after the last HTML element. Will process all of the text if there were no HTML elements. - if( lastIndex < html.length ) { - var text = html.substring( lastIndex ); - - // Push TextNodes and EntityNodes for any text found between tags - if( text ) { - textAndEntityNodes = this.parseTextAndEntityNodes( lastIndex, text ); - nodes.push.apply( nodes, textAndEntityNodes ); - } - } - - return nodes; - }, - - - /** - * Parses text and HTML entity nodes from a given string. The input string - * should not have any HTML tags (elements) within it. - * - * @private - * @param {Number} offset The offset of the text node match within the - * original HTML string. - * @param {String} text The string of text to parse. This is from an HTML - * text node. - * @return {Autolinker.htmlParser.HtmlNode[]} An array of HtmlNodes to - * represent the {@link Autolinker.htmlParser.TextNode TextNodes} and - * {@link Autolinker.htmlParser.EntityNode EntityNodes} found. - */ - parseTextAndEntityNodes : function( offset, text ) { - var nodes = [], - textAndEntityTokens = Autolinker.Util.splitAndCapture( text, this.htmlCharacterEntitiesRegex ); // split at HTML entities, but include the HTML entities in the results array - - // Every even numbered token is a TextNode, and every odd numbered token is an EntityNode - // For example: an input `text` of "Test "this" today" would turn into the - // `textAndEntityTokens`: [ 'Test ', '"', 'this', '"', ' today' ] - for( var i = 0, len = textAndEntityTokens.length; i < len; i += 2 ) { - var textToken = textAndEntityTokens[ i ], - entityToken = textAndEntityTokens[ i + 1 ]; - - if( textToken ) { - nodes.push( this.createTextNode( offset, textToken ) ); - offset += textToken.length; - } - if( entityToken ) { - nodes.push( this.createEntityNode( offset, entityToken ) ); - offset += entityToken.length; - } - } - return nodes; - }, - - - /** - * Factory method to create an {@link Autolinker.htmlParser.CommentNode CommentNode}. - * - * @private - * @param {Number} offset The offset of the match within the original HTML - * string. - * @param {String} tagText The full text of the tag (comment) that was - * matched, including its <!-- and -->. - * @param {String} commentText The full text of the comment that was matched. - */ - createCommentNode : function( offset, tagText, commentText ) { - return new Autolinker.htmlParser.CommentNode( { - offset : offset, - text : tagText, - comment: Autolinker.Util.trim( commentText ) - } ); - }, - - - /** - * Factory method to create an {@link Autolinker.htmlParser.ElementNode ElementNode}. - * - * @private - * @param {Number} offset The offset of the match within the original HTML - * string. - * @param {String} tagText The full text of the tag (element) that was - * matched, including its attributes. - * @param {String} tagName The name of the tag. Ex: An <img> tag would - * be passed to this method as "img". - * @param {Boolean} isClosingTag `true` if it's a closing tag, false - * otherwise. - * @return {Autolinker.htmlParser.ElementNode} - */ - createElementNode : function( offset, tagText, tagName, isClosingTag ) { - return new Autolinker.htmlParser.ElementNode( { - offset : offset, - text : tagText, - tagName : tagName.toLowerCase(), - closing : isClosingTag - } ); - }, - - - /** - * Factory method to create a {@link Autolinker.htmlParser.EntityNode EntityNode}. - * - * @private - * @param {Number} offset The offset of the match within the original HTML - * string. - * @param {String} text The text that was matched for the HTML entity (such - * as '&nbsp;'). - * @return {Autolinker.htmlParser.EntityNode} - */ - createEntityNode : function( offset, text ) { - return new Autolinker.htmlParser.EntityNode( { offset: offset, text: text } ); - }, - - - /** - * Factory method to create a {@link Autolinker.htmlParser.TextNode TextNode}. - * - * @private - * @param {Number} offset The offset of the match within the original HTML - * string. - * @param {String} text The text that was matched. - * @return {Autolinker.htmlParser.TextNode} - */ - createTextNode : function( offset, text ) { - return new Autolinker.htmlParser.TextNode( { offset: offset, text: text } ); - } - -} ); -/*global Autolinker */ -/** - * @abstract - * @class Autolinker.htmlParser.HtmlNode - * - * Represents an HTML node found in an input string. An HTML node is one of the - * following: - * - * 1. An {@link Autolinker.htmlParser.ElementNode ElementNode}, which represents - * HTML tags. - * 2. A {@link Autolinker.htmlParser.CommentNode CommentNode}, which represents - * HTML comments. - * 3. A {@link Autolinker.htmlParser.TextNode TextNode}, which represents text - * outside or within HTML tags. - * 4. A {@link Autolinker.htmlParser.EntityNode EntityNode}, which represents - * one of the known HTML entities that Autolinker looks for. This includes - * common ones such as &quot; and &nbsp; - */ -Autolinker.htmlParser.HtmlNode = Autolinker.Util.extend( Object, { - - /** - * @cfg {Number} offset (required) - * - * The offset of the HTML node in the original text that was parsed. - */ - offset : undefined, - - /** - * @cfg {String} text (required) - * - * The text that was matched for the HtmlNode. - * - * - In the case of an {@link Autolinker.htmlParser.ElementNode ElementNode}, - * this will be the tag's text. - * - In the case of an {@link Autolinker.htmlParser.CommentNode CommentNode}, - * this will be the comment's text. - * - In the case of a {@link Autolinker.htmlParser.TextNode TextNode}, this - * will be the text itself. - * - In the case of a {@link Autolinker.htmlParser.EntityNode EntityNode}, - * this will be the text of the HTML entity. - */ - text : undefined, - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match instance, - * specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.Util.assign( this, cfg ); - - if( this.offset == null ) throw new Error( '`offset` cfg required' ); - if( this.text == null ) throw new Error( '`text` cfg required' ); - }, - - - /** - * Returns a string name for the type of node that this class represents. - * - * @abstract - * @return {String} - */ - getType : Autolinker.Util.abstractMethod, - - - /** - * Retrieves the {@link #offset} of the HtmlNode. This is the offset of the - * HTML node in the original string that was parsed. - * - * @return {Number} - */ - getOffset : function() { - return this.offset; - }, - - - /** - * Retrieves the {@link #text} for the HtmlNode. - * - * @return {String} - */ - getText : function() { - return this.text; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.CommentNode - * @extends Autolinker.htmlParser.HtmlNode - * - * Represents an HTML comment node that has been parsed by the - * {@link Autolinker.htmlParser.HtmlParser}. - * - * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more - * details. - */ -Autolinker.htmlParser.CommentNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { - - /** - * @cfg {String} comment (required) - * - * The text inside the comment tag. This text is stripped of any leading or - * trailing whitespace. - */ - comment : '', - - - /** - * Returns a string name for the type of node that this class represents. - * - * @return {String} - */ - getType : function() { - return 'comment'; - }, - - - /** - * Returns the comment inside the comment tag. - * - * @return {String} - */ - getComment : function() { - return this.comment; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.ElementNode - * @extends Autolinker.htmlParser.HtmlNode - * - * Represents an HTML element node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}. - * - * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more - * details. - */ -Autolinker.htmlParser.ElementNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { - - /** - * @cfg {String} tagName (required) - * - * The name of the tag that was matched. - */ - tagName : '', - - /** - * @cfg {Boolean} closing (required) - * - * `true` if the element (tag) is a closing tag, `false` if its an opening - * tag. - */ - closing : false, - - - /** - * Returns a string name for the type of node that this class represents. - * - * @return {String} - */ - getType : function() { - return 'element'; - }, - - - /** - * Returns the HTML element's (tag's) name. Ex: for an <img> tag, - * returns "img". - * - * @return {String} - */ - getTagName : function() { - return this.tagName; - }, - - - /** - * Determines if the HTML element (tag) is a closing tag. Ex: <div> - * returns `false`, while </div> returns `true`. - * - * @return {Boolean} - */ - isClosing : function() { - return this.closing; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.EntityNode - * @extends Autolinker.htmlParser.HtmlNode - * - * Represents a known HTML entity node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}. - * Ex: '&nbsp;', or '&#160;' (which will be retrievable from the {@link #getText} - * method. - * - * Note that this class will only be returned from the HtmlParser for the set of - * checked HTML entity nodes defined by the {@link Autolinker.htmlParser.HtmlParser#htmlCharacterEntitiesRegex}. - * - * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more - * details. - */ -Autolinker.htmlParser.EntityNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { - - /** - * Returns a string name for the type of node that this class represents. - * - * @return {String} - */ - getType : function() { - return 'entity'; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.TextNode - * @extends Autolinker.htmlParser.HtmlNode - * - * Represents a text node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}. - * - * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more - * details. - */ -Autolinker.htmlParser.TextNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { - - /** - * Returns a string name for the type of node that this class represents. - * - * @return {String} - */ - getType : function() { - return 'text'; - } - -} ); -/*global Autolinker */ -/** - * @abstract - * @class Autolinker.match.Match - * - * Represents a match found in an input string which should be Autolinked. A Match object is what is provided in a - * {@link Autolinker#replaceFn replaceFn}, and may be used to query for details about the match. - * - * For example: - * - * var input = "..."; // string with URLs, Email Addresses, and Twitter Handles - * - * var linkedText = Autolinker.link( input, { - * replaceFn : function( autolinker, match ) { - * console.log( "href = ", match.getAnchorHref() ); - * console.log( "text = ", match.getAnchorText() ); - * - * switch( match.getType() ) { - * case 'url' : - * console.log( "url: ", match.getUrl() ); - * - * case 'email' : - * console.log( "email: ", match.getEmail() ); - * - * case 'twitter' : - * console.log( "twitter: ", match.getTwitterHandle() ); - * } - * } - * } ); - * - * See the {@link Autolinker} class for more details on using the {@link Autolinker#replaceFn replaceFn}. - */ -Autolinker.match.Match = Autolinker.Util.extend( Object, { - - /** - * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required) - * - * Reference to the AnchorTagBuilder instance to use to generate an anchor - * tag for the Match. - */ - - /** - * @cfg {String} matchedText (required) - * - * The original text that was matched by the {@link Autolinker.matcher.Matcher}. - */ - - /** - * @cfg {Number} offset (required) - * - * The offset of where the match was made in the input string. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - if( cfg.tagBuilder == null ) throw new Error( '`tagBuilder` cfg required' ); - if( cfg.matchedText == null ) throw new Error( '`matchedText` cfg required' ); - if( cfg.offset == null ) throw new Error( '`offset` cfg required' ); - - this.tagBuilder = cfg.tagBuilder; - this.matchedText = cfg.matchedText; - this.offset = cfg.offset; - }, - - - /** - * Returns a string name for the type of match that this class represents. - * - * @abstract - * @return {String} - */ - getType : Autolinker.Util.abstractMethod, - - - /** - * Returns the original text that was matched. - * - * @return {String} - */ - getMatchedText : function() { - return this.matchedText; - }, - - - /** - * Sets the {@link #offset} of where the match was made in the input string. - * - * A {@link Autolinker.matcher.Matcher} will be fed only HTML text nodes, - * and will therefore set an original offset that is relative to the HTML - * text node itself. However, we want this offset to be relative to the full - * HTML input string, and thus if using {@link Autolinker#parse} (rather - * than calling a {@link Autolinker.matcher.Matcher} directly), then this - * offset is corrected after the Matcher itself has done its job. - * - * @param {Number} offset - */ - setOffset : function( offset ) { - this.offset = offset; - }, - - - /** - * Returns the offset of where the match was made in the input string. This - * is the 0-based index of the match. - * - * @return {Number} - */ - getOffset : function() { - return this.offset; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @abstract - * @return {String} - */ - getAnchorHref : Autolinker.Util.abstractMethod, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @abstract - * @return {String} - */ - getAnchorText : Autolinker.Util.abstractMethod, - - - /** - * Builds and returns an {@link Autolinker.HtmlTag} instance based on the - * Match. - * - * This can be used to easily generate anchor tags from matches, and either - * return their HTML string, or modify them before doing so. - * - * Example Usage: - * - * var tag = match.buildTag(); - * tag.addClass( 'cordova-link' ); - * tag.setAttr( 'target', '_system' ); - * - * tag.toAnchorString(); // Google - */ - buildTag : function() { - return this.tagBuilder.build( this ); - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.match.Email - * @extends Autolinker.match.Match - * - * Represents a Email match found in an input string which should be Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more details. - */ -Autolinker.match.Email = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @cfg {String} email (required) - * - * The email address that was matched. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - if( !cfg.email ) throw new Error( '`email` cfg required' ); - - this.email = cfg.email; - }, - - - /** - * Returns a string name for the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'email'; - }, - - - /** - * Returns the email address that was matched. - * - * @return {String} - */ - getEmail : function() { - return this.email; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - return 'mailto:' + this.email; - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - return this.email; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.match.Hashtag - * @extends Autolinker.match.Match - * - * Represents a Hashtag match found in an input string which should be - * Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more - * details. - */ -Autolinker.match.Hashtag = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @cfg {String} serviceName - * - * The service to point hashtag matches to. See {@link Autolinker#hashtag} - * for available values. - */ - - /** - * @cfg {String} hashtag (required) - * - * The Hashtag that was matched, without the '#'. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - // TODO: if( !serviceName ) throw new Error( '`serviceName` cfg required' ); - if( !cfg.hashtag ) throw new Error( '`hashtag` cfg required' ); - - this.serviceName = cfg.serviceName; - this.hashtag = cfg.hashtag; - }, - - - /** - * Returns the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'hashtag'; - }, - - - /** - * Returns the configured {@link #serviceName} to point the Hashtag to. - * Ex: 'facebook', 'twitter'. - * - * @return {String} - */ - getServiceName : function() { - return this.serviceName; - }, - - - /** - * Returns the matched hashtag, without the '#' character. - * - * @return {String} - */ - getHashtag : function() { - return this.hashtag; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - var serviceName = this.serviceName, - hashtag = this.hashtag; - - switch( serviceName ) { - case 'twitter' : - return 'https://twitter.com/hashtag/' + hashtag; - case 'facebook' : - return 'https://www.facebook.com/hashtag/' + hashtag; - case 'instagram' : - return 'https://instagram.com/explore/tags/' + hashtag; - - default : // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case. - throw new Error( 'Unknown service name to point hashtag to: ', serviceName ); - } - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - return '#' + this.hashtag; - } - -} ); - -/*global Autolinker */ -/** - * @class Autolinker.match.Phone - * @extends Autolinker.match.Match - * - * Represents a Phone number match found in an input string which should be - * Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more - * details. - */ -Autolinker.match.Phone = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @protected - * @property {String} number (required) - * - * The phone number that was matched, without any delimiter characters. - * - * Note: This is a string to allow for prefixed 0's. - */ - - /** - * @protected - * @property {Boolean} plusSign (required) - * - * `true` if the matched phone number started with a '+' sign. We'll include - * it in the `tel:` URL if so, as this is needed for international numbers. - * - * Ex: '+1 (123) 456 7879' - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - if( !cfg.number ) throw new Error( '`number` cfg required' ); - if( cfg.plusSign == null ) throw new Error( '`plusSign` cfg required' ); - - this.number = cfg.number; - this.plusSign = cfg.plusSign; - }, - - - /** - * Returns a string name for the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'phone'; - }, - - - /** - * Returns the phone number that was matched as a string, without any - * delimiter characters. - * - * Note: This is a string to allow for prefixed 0's. - * - * @return {String} - */ - getNumber: function() { - return this.number; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - return 'tel:' + ( this.plusSign ? '+' : '' ) + this.number; - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - return this.matchedText; - } - -} ); - -/*global Autolinker */ -/** - * @class Autolinker.match.Twitter - * @extends Autolinker.match.Match - * - * Represents a Twitter match found in an input string which should be Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more details. - */ -Autolinker.match.Twitter = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @cfg {String} twitterHandle (required) - * - * The Twitter handle that was matched, without the '@' character. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - if( !cfg.twitterHandle ) throw new Error( '`twitterHandle` cfg required' ); - - this.twitterHandle = cfg.twitterHandle; - }, - - - /** - * Returns the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'twitter'; - }, - - - /** - * Returns the twitter handle, without the '@' character. - * - * @return {String} - */ - getTwitterHandle : function() { - return this.twitterHandle; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - return 'https://twitter.com/' + this.twitterHandle; - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - return '@' + this.twitterHandle; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.match.Url - * @extends Autolinker.match.Match - * - * Represents a Url match found in an input string which should be Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more details. - */ -Autolinker.match.Url = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @cfg {String} url (required) - * - * The url that was matched. - */ - - /** - * @cfg {"scheme"/"www"/"tld"} urlMatchType (required) - * - * The type of URL match that this class represents. This helps to determine - * if the match was made in the original text with a prefixed scheme (ex: - * 'http://www.google.com'), a prefixed 'www' (ex: 'www.google.com'), or - * was matched by a known top-level domain (ex: 'google.com'). - */ - - /** - * @cfg {Boolean} protocolUrlMatch (required) - * - * `true` if the URL is a match which already has a protocol (i.e. - * 'http://'), `false` if the match was from a 'www' or known TLD match. - */ - - /** - * @cfg {Boolean} protocolRelativeMatch (required) - * - * `true` if the URL is a protocol-relative match. A protocol-relative match - * is a URL that starts with '//', and will be either http:// or https:// - * based on the protocol that the site is loaded under. - */ - - /** - * @cfg {Boolean} stripPrefix (required) - * @inheritdoc Autolinker#cfg-stripPrefix - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - if( cfg.urlMatchType !== 'scheme' && cfg.urlMatchType !== 'www' && cfg.urlMatchType !== 'tld' ) throw new Error( '`urlMatchType` cfg must be one of: "scheme", "www", or "tld"' ); - if( !cfg.url ) throw new Error( '`url` cfg required' ); - if( cfg.protocolUrlMatch == null ) throw new Error( '`protocolUrlMatch` cfg required' ); - if( cfg.protocolRelativeMatch == null ) throw new Error( '`protocolRelativeMatch` cfg required' ); - if( cfg.stripPrefix == null ) throw new Error( '`stripPrefix` cfg required' ); - - this.urlMatchType = cfg.urlMatchType; - this.url = cfg.url; - this.protocolUrlMatch = cfg.protocolUrlMatch; - this.protocolRelativeMatch = cfg.protocolRelativeMatch; - this.stripPrefix = cfg.stripPrefix; - }, - - - /** - * @private - * @property {RegExp} urlPrefixRegex - * - * A regular expression used to remove the 'http://' or 'https://' and/or the 'www.' from URLs. - */ - urlPrefixRegex: /^(https?:\/\/)?(www\.)?/i, - - /** - * @private - * @property {RegExp} protocolRelativeRegex - * - * The regular expression used to remove the protocol-relative '//' from the {@link #url} string, for purposes - * of {@link #getAnchorText}. A protocol-relative URL is, for example, "//yahoo.com" - */ - protocolRelativeRegex : /^\/\//, - - /** - * @private - * @property {Boolean} protocolPrepended - * - * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the - * {@link #url} did not have a protocol) - */ - protocolPrepended : false, - - - /** - * Returns a string name for the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'url'; - }, - - - /** - * Returns a string name for the type of URL match that this class - * represents. - * - * This helps to determine if the match was made in the original text with a - * prefixed scheme (ex: 'http://www.google.com'), a prefixed 'www' (ex: - * 'www.google.com'), or was matched by a known top-level domain (ex: - * 'google.com'). - * - * @return {"scheme"/"www"/"tld"} - */ - getUrlMatchType : function() { - return this.urlMatchType; - }, - - - /** - * Returns the url that was matched, assuming the protocol to be 'http://' if the original - * match was missing a protocol. - * - * @return {String} - */ - getUrl : function() { - var url = this.url; - - // if the url string doesn't begin with a protocol, assume 'http://' - if( !this.protocolRelativeMatch && !this.protocolUrlMatch && !this.protocolPrepended ) { - url = this.url = 'http://' + url; - - this.protocolPrepended = true; - } - - return url; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - var url = this.getUrl(); - - return url.replace( /&/g, '&' ); // any &'s in the URL should be converted back to '&' if they were displayed as & in the source html - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - var anchorText = this.getMatchedText(); - - if( this.protocolRelativeMatch ) { - // Strip off any protocol-relative '//' from the anchor text - anchorText = this.stripProtocolRelativePrefix( anchorText ); - } - if( this.stripPrefix ) { - anchorText = this.stripUrlPrefix( anchorText ); - } - anchorText = this.removeTrailingSlash( anchorText ); // remove trailing slash, if there is one - - return anchorText; - }, - - - // --------------------------------------- - - // Utility Functionality - - /** - * Strips the URL prefix (such as "http://" or "https://") from the given text. - * - * @private - * @param {String} text The text of the anchor that is being generated, for which to strip off the - * url prefix (such as stripping off "http://") - * @return {String} The `anchorText`, with the prefix stripped. - */ - stripUrlPrefix : function( text ) { - return text.replace( this.urlPrefixRegex, '' ); - }, - - - /** - * Strips any protocol-relative '//' from the anchor text. - * - * @private - * @param {String} text The text of the anchor that is being generated, for which to strip off the - * protocol-relative prefix (such as stripping off "//") - * @return {String} The `anchorText`, with the protocol-relative prefix stripped. - */ - stripProtocolRelativePrefix : function( text ) { - return text.replace( this.protocolRelativeRegex, '' ); - }, - - - /** - * Removes any trailing slash from the given `anchorText`, in preparation for the text to be displayed. - * - * @private - * @param {String} anchorText The text of the anchor that is being generated, for which to remove any trailing - * slash ('/') that may exist. - * @return {String} The `anchorText`, with the trailing slash removed. - */ - removeTrailingSlash : function( anchorText ) { - if( anchorText.charAt( anchorText.length - 1 ) === '/' ) { - anchorText = anchorText.slice( 0, -1 ); - } - return anchorText; - } - -} ); -/*global Autolinker */ -/** - * @abstract - * @class Autolinker.matcher.Matcher - * - * An abstract class and interface for individual matchers to find matches in - * an input string with linkified versions of them. - * - * Note that Matchers do not take HTML into account - they must be fed the text - * nodes of any HTML string, which is handled by {@link Autolinker#parse}. - */ -Autolinker.matcher.Matcher = Autolinker.Util.extend( Object, { - - /** - * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required) - * - * Reference to the AnchorTagBuilder instance to use to generate HTML tags - * for {@link Autolinker.match.Match Matches}. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Matcher - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - if( !cfg.tagBuilder ) throw new Error( '`tagBuilder` cfg required' ); - - this.tagBuilder = cfg.tagBuilder; - }, - - - /** - * Parses the input `text` and returns the array of {@link Autolinker.match.Match Matches} - * for the matcher. - * - * @abstract - * @param {String} text The text to scan and replace matches in. - * @return {Autolinker.match.Match[]} - */ - parseMatches : Autolinker.Util.abstractMethod - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Email - * @extends Autolinker.matcher.Matcher - * - * Matcher to find email matches in an input string. - * - * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details. - */ -Autolinker.matcher.Email = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * The regular expression to match email addresses. Example match: - * - * person@place.com - * - * @private - * @property {RegExp} matcherRegex - */ - matcherRegex : (function() { - var alphaNumericChars = Autolinker.RegexLib.alphaNumericCharsStr, - emailRegex = new RegExp( '[' + alphaNumericChars + '\\-_\';:&=+$.,]+@' ), // something@ for email addresses (a.k.a. local-part) - domainNameRegex = Autolinker.RegexLib.domainNameRegex, - tldRegex = Autolinker.RegexLib.tldRegex; // match our known top level domains (TLDs) - - return new RegExp( [ - emailRegex.source, - domainNameRegex.source, - '\\.', tldRegex.source // '.com', '.net', etc - ].join( "" ), 'gi' ); - } )(), - - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - var matchedText = match[ 0 ]; - - matches.push( new Autolinker.match.Email( { - tagBuilder : tagBuilder, - matchedText : matchedText, - offset : match.index, - email : matchedText - } ) ); - } - - return matches; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Hashtag - * @extends Autolinker.matcher.Matcher - * - * Matcher to find Hashtag matches in an input string. - */ -Autolinker.matcher.Hashtag = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * @cfg {String} serviceName - * - * The service to point hashtag matches to. See {@link Autolinker#hashtag} - * for available values. - */ - - - /** - * The regular expression to match Hashtags. Example match: - * - * #asdf - * - * @private - * @property {RegExp} matcherRegex - */ - matcherRegex : new RegExp( '#[_' + Autolinker.RegexLib.alphaNumericCharsStr + ']{1,139}', 'g' ), - - /** - * The regular expression to use to check the character before a username match to - * make sure we didn't accidentally match an email address. - * - * For example, the string "asdf@asdf.com" should not match "@asdf" as a username. - * - * @private - * @property {RegExp} nonWordCharRegex - */ - nonWordCharRegex : new RegExp( '[^' + Autolinker.RegexLib.alphaNumericCharsStr + ']' ), - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match instance, - * specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.matcher.Matcher.prototype.constructor.call( this, cfg ); - - this.serviceName = cfg.serviceName; - }, - - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - nonWordCharRegex = this.nonWordCharRegex, - serviceName = this.serviceName, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - var offset = match.index, - prevChar = text.charAt( offset - 1 ); - - // If we found the match at the beginning of the string, or we found the match - // and there is a whitespace char in front of it (meaning it is not a '#' char - // in the middle of a word), then it is a hashtag match. - if( offset === 0 || nonWordCharRegex.test( prevChar ) ) { - var matchedText = match[ 0 ], - hashtag = match[ 0 ].slice( 1 ); // strip off the '#' character at the beginning - - matches.push( new Autolinker.match.Hashtag( { - tagBuilder : tagBuilder, - matchedText : matchedText, - offset : offset, - serviceName : serviceName, - hashtag : hashtag - } ) ); - } - } - - return matches; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Phone - * @extends Autolinker.matcher.Matcher - * - * Matcher to find Phone number matches in an input string. - * - * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more - * details. - */ -Autolinker.matcher.Phone = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * The regular expression to match Phone numbers. Example match: - * - * (123) 456-7890 - * - * This regular expression has the following capturing groups: - * - * 1. The prefixed '+' sign, if there is one. - * - * @private - * @property {RegExp} matcherRegex - */ - matcherRegex : /(?:(\+)?\d{1,3}[-\040.])?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]\d{4}/g, // ex: (123) 456-7890, 123 456 7890, 123-456-7890, etc. - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - // Remove non-numeric values from phone number string - var matchedText = match[ 0 ], - cleanNumber = matchedText.replace( /\D/g, '' ), // strip out non-digit characters - plusSign = !!match[ 1 ]; // match[ 1 ] is the prefixed plus sign, if there is one - - matches.push( new Autolinker.match.Phone( { - tagBuilder : tagBuilder, - matchedText : matchedText, - offset : match.index, - number : cleanNumber, - plusSign : plusSign - } ) ); - } - - return matches; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Twitter - * @extends Autolinker.matcher.Matcher - * - * Matcher to find/replace username matches in an input string. - */ -Autolinker.matcher.Twitter = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * The regular expression to match username handles. Example match: - * - * @asdf - * - * @private - * @property {RegExp} matcherRegex - */ - matcherRegex : new RegExp( '@[_' + Autolinker.RegexLib.alphaNumericCharsStr + ']{1,20}', 'g' ), - - /** - * The regular expression to use to check the character before a username match to - * make sure we didn't accidentally match an email address. - * - * For example, the string "asdf@asdf.com" should not match "@asdf" as a username. - * - * @private - * @property {RegExp} nonWordCharRegex - */ - nonWordCharRegex : new RegExp( '[^' + Autolinker.RegexLib.alphaNumericCharsStr + ']' ), - - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - nonWordCharRegex = this.nonWordCharRegex, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - var offset = match.index, - prevChar = text.charAt( offset - 1 ); - - // If we found the match at the beginning of the string, or we found the match - // and there is a whitespace char in front of it (meaning it is not an email - // address), then it is a username match. - if( offset === 0 || nonWordCharRegex.test( prevChar ) ) { - var matchedText = match[ 0 ], - twitterHandle = match[ 0 ].slice( 1 ); // strip off the '@' character at the beginning - - matches.push( new Autolinker.match.Twitter( { - tagBuilder : tagBuilder, - matchedText : matchedText, - offset : offset, - twitterHandle : twitterHandle - } ) ); - } - } - - return matches; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Url - * @extends Autolinker.matcher.Matcher - * - * Matcher to find URL matches in an input string. - * - * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details. - */ -Autolinker.matcher.Url = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * @cfg {Boolean} stripPrefix (required) - * @inheritdoc Autolinker#stripPrefix - */ - - - /** - * @private - * @property {RegExp} matcherRegex - * - * The regular expression to match URLs with an optional scheme, port - * number, path, query string, and hash anchor. - * - * Example matches: - * - * http://google.com - * www.google.com - * google.com/path/to/file?q1=1&q2=2#myAnchor - * - * - * This regular expression will have the following capturing groups: - * - * 1. Group that matches a scheme-prefixed URL (i.e. 'http://google.com'). - * This is used to match scheme URLs with just a single word, such as - * 'http://localhost', where we won't double check that the domain name - * has at least one dot ('.') in it. - * 2. Group that matches a 'www.' prefixed URL. This is only matched if the - * 'www.' text was not prefixed by a scheme (i.e.: not prefixed by - * 'http://', 'ftp:', etc.) - * 3. A protocol-relative ('//') match for the case of a 'www.' prefixed - * URL. Will be an empty string if it is not a protocol-relative match. - * We need to know the character before the '//' in order to determine - * if it is a valid match or the // was in a string we don't want to - * auto-link. - * 4. Group that matches a known TLD (top level domain), when a scheme - * or 'www.'-prefixed domain is not matched. - * 5. A protocol-relative ('//') match for the case of a known TLD prefixed - * URL. Will be an empty string if it is not a protocol-relative match. - * See #3 for more info. - */ - matcherRegex : (function() { - var schemeRegex = /(?:[A-Za-z][-.+A-Za-z0-9]*:(?![A-Za-z][-.+A-Za-z0-9]*:\/\/)(?!\d+\/?)(?:\/\/)?)/, // match protocol, allow in format "http://" or "mailto:". However, do not match the first part of something like 'link:http://www.google.com' (i.e. don't match "link:"). Also, make sure we don't interpret 'google.com:8000' as if 'google.com' was a protocol here (i.e. ignore a trailing port number in this regex) - wwwRegex = /(?:www\.)/, // starting with 'www.' - domainNameRegex = Autolinker.RegexLib.domainNameRegex, - tldRegex = Autolinker.RegexLib.tldRegex, // match our known top level domains (TLDs) - alphaNumericCharsStr = Autolinker.RegexLib.alphaNumericCharsStr, - - // Allow optional path, query string, and hash anchor, not ending in the following characters: "?!:,.;" - // http://blog.codinghorror.com/the-problem-with-urls/ - urlSuffixRegex = new RegExp( '[' + alphaNumericCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]?!:,.;]*[' + alphaNumericCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]]' ); - - return new RegExp( [ - '(?:', // parens to cover match for scheme (optional), and domain - '(', // *** Capturing group $1, for a scheme-prefixed url (ex: http://google.com) - schemeRegex.source, - domainNameRegex.source, - ')', - - '|', - - '(', // *** Capturing group $2, for a 'www.' prefixed url (ex: www.google.com) - '(//)?', // *** Capturing group $3 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character (handled later) - wwwRegex.source, - domainNameRegex.source, - ')', - - '|', - - '(', // *** Capturing group $4, for known a TLD url (ex: google.com) - '(//)?', // *** Capturing group $5 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character (handled later) - domainNameRegex.source + '\\.', - tldRegex.source, - ')', - ')', - - '(?:' + urlSuffixRegex.source + ')?' // match for path, query string, and/or hash anchor - optional - ].join( "" ), 'gi' ); - } )(), - - - /** - * A regular expression to use to check the character before a protocol-relative - * URL match. We don't want to match a protocol-relative URL if it is part - * of another word. - * - * For example, we want to match something like "Go to: //google.com", - * but we don't want to match something like "abc//google.com" - * - * This regular expression is used to test the character before the '//'. - * - * @private - * @type {RegExp} wordCharRegExp - */ - wordCharRegExp : /\w/, - - - /** - * The regular expression to match opening parenthesis in a URL match. - * - * This is to determine if we have unbalanced parenthesis in the URL, and to - * drop the final parenthesis that was matched if so. - * - * Ex: The text "(check out: wikipedia.com/something_(disambiguation))" - * should only autolink the inner "wikipedia.com/something_(disambiguation)" - * part, so if we find that we have unbalanced parenthesis, we will drop the - * last one for the match. - * - * @private - * @property {RegExp} - */ - openParensRe : /\(/g, - - /** - * The regular expression to match closing parenthesis in a URL match. See - * {@link #openParensRe} for more information. - * - * @private - * @property {RegExp} - */ - closeParensRe : /\)/g, - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match instance, - * specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.matcher.Matcher.prototype.constructor.call( this, cfg ); - - this.stripPrefix = cfg.stripPrefix; - - if( this.stripPrefix == null ) throw new Error( '`stripPrefix` cfg required' ); - }, - - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - stripPrefix = this.stripPrefix, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - var matchStr = match[ 0 ], - schemeUrlMatch = match[ 1 ], - wwwUrlMatch = match[ 2 ], - wwwProtocolRelativeMatch = match[ 3 ], - //tldUrlMatch = match[ 4 ], -- not needed at the moment - tldProtocolRelativeMatch = match[ 5 ], - offset = match.index, - protocolRelativeMatch = wwwProtocolRelativeMatch || tldProtocolRelativeMatch, - prevChar = text.charAt( offset - 1 ); - - if( !Autolinker.matcher.UrlMatchValidator.isValid( matchStr, schemeUrlMatch ) ) { - continue; - } - - // If the match is preceded by an '@' character, then it is either - // an email address or a username. Skip these types of matches. - if( offset > 0 && prevChar === '@' ) { - continue; - } - - // If it's a protocol-relative '//' match, but the character before the '//' - // was a word character (i.e. a letter/number), then we found the '//' in the - // middle of another word (such as "asdf//asdf.com"). In this case, skip the - // match. - if( offset > 0 && protocolRelativeMatch && this.wordCharRegExp.test( prevChar ) ) { - continue; - } - - // Handle a closing parenthesis at the end of the match, and exclude - // it if there is not a matching open parenthesis in the match - // itself. - if( this.matchHasUnbalancedClosingParen( matchStr ) ) { - matchStr = matchStr.substr( 0, matchStr.length - 1 ); // remove the trailing ")" - } else { - // Handle an invalid character after the TLD - var pos = this.matchHasInvalidCharAfterTld( matchStr, schemeUrlMatch ); - if( pos > -1 ) { - matchStr = matchStr.substr( 0, pos ); // remove the trailing invalid chars - } - } - - var urlMatchType = schemeUrlMatch ? 'scheme' : ( wwwUrlMatch ? 'www' : 'tld' ), - protocolUrlMatch = !!schemeUrlMatch; - - matches.push( new Autolinker.match.Url( { - tagBuilder : tagBuilder, - matchedText : matchStr, - offset : offset, - urlMatchType : urlMatchType, - url : matchStr, - protocolUrlMatch : protocolUrlMatch, - protocolRelativeMatch : !!protocolRelativeMatch, - stripPrefix : stripPrefix - } ) ); - } - - return matches; - }, - - - /** - * Determines if a match found has an unmatched closing parenthesis. If so, - * this parenthesis will be removed from the match itself, and appended - * after the generated anchor tag. - * - * A match may have an extra closing parenthesis at the end of the match - * because the regular expression must include parenthesis for URLs such as - * "wikipedia.com/something_(disambiguation)", which should be auto-linked. - * - * However, an extra parenthesis *will* be included when the URL itself is - * wrapped in parenthesis, such as in the case of "(wikipedia.com/something_(disambiguation))". - * In this case, the last closing parenthesis should *not* be part of the - * URL itself, and this method will return `true`. - * - * @private - * @param {String} matchStr The full match string from the {@link #matcherRegex}. - * @return {Boolean} `true` if there is an unbalanced closing parenthesis at - * the end of the `matchStr`, `false` otherwise. - */ - matchHasUnbalancedClosingParen : function( matchStr ) { - var lastChar = matchStr.charAt( matchStr.length - 1 ); - - if( lastChar === ')' ) { - var openParensMatch = matchStr.match( this.openParensRe ), - closeParensMatch = matchStr.match( this.closeParensRe ), - numOpenParens = ( openParensMatch && openParensMatch.length ) || 0, - numCloseParens = ( closeParensMatch && closeParensMatch.length ) || 0; - - if( numOpenParens < numCloseParens ) { - return true; - } - } - - return false; - }, - - - /** - * Determine if there's an invalid character after the TLD in a URL. Valid - * characters after TLD are ':/?#'. Exclude scheme matched URLs from this - * check. - * - * @private - * @param {String} urlMatch The matched URL, if there was one. Will be an - * empty string if the match is not a URL match. - * @param {String} schemeUrlMatch The match URL string for a scheme - * match. Ex: 'http://yahoo.com'. This is used to match something like - * 'http://localhost', where we won't double check that the domain name - * has at least one '.' in it. - * @return {Number} the position where the invalid character was found. If - * no such character was found, returns -1 - */ - matchHasInvalidCharAfterTld : function( urlMatch, schemeUrlMatch ) { - if( !urlMatch ) { - return -1; - } - - var offset = 0; - if ( schemeUrlMatch ) { - offset = urlMatch.indexOf(':'); - urlMatch = urlMatch.slice(offset); - } - - var re = /^((.?\/\/)?[A-Za-z0-9\u00C0-\u017F\.\-]*[A-Za-z0-9\u00C0-\u017F\-]\.[A-Za-z]+)/; - var res = re.exec( urlMatch ); - if ( res === null ) { - return -1; - } - - offset += res[1].length; - urlMatch = urlMatch.slice(res[1].length); - if (/^[^.A-Za-z:\/?#]/.test(urlMatch)) { - return offset; - } - - return -1; - } - -} ); -/*global Autolinker */ -/*jshint scripturl:true */ -/** - * @private - * @class Autolinker.matcher.UrlMatchValidator - * @singleton - * - * Used by Autolinker to filter out false URL positives from the - * {@link Autolinker.matcher.Url UrlMatcher}. - * - * Due to the limitations of regular expressions (including the missing feature - * of look-behinds in JS regular expressions), we cannot always determine the - * validity of a given match. This class applies a bit of additional logic to - * filter out any false positives that have been matched by the - * {@link Autolinker.matcher.Url UrlMatcher}. - */ -Autolinker.matcher.UrlMatchValidator = { - - /** - * Regex to test for a full protocol, with the two trailing slashes. Ex: 'http://' - * - * @private - * @property {RegExp} hasFullProtocolRegex - */ - hasFullProtocolRegex : /^[A-Za-z][-.+A-Za-z0-9]*:\/\//, - - /** - * Regex to find the URI scheme, such as 'mailto:'. - * - * This is used to filter out 'javascript:' and 'vbscript:' schemes. - * - * @private - * @property {RegExp} uriSchemeRegex - */ - uriSchemeRegex : /^[A-Za-z][-.+A-Za-z0-9]*:/, - - /** - * Regex to determine if at least one word char exists after the protocol (i.e. after the ':') - * - * @private - * @property {RegExp} hasWordCharAfterProtocolRegex - */ - hasWordCharAfterProtocolRegex : /:[^\s]*?[A-Za-z\u00C0-\u017F]/, - - /** - * Regex to determine if the string is a valid IP address - * - * @private - * @property {RegExp} ipRegex - */ - ipRegex: /[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/, - - /** - * Determines if a given URL match found by the {@link Autolinker.matcher.Url UrlMatcher} - * is valid. Will return `false` for: - * - * 1) URL matches which do not have at least have one period ('.') in the - * domain name (effectively skipping over matches like "abc:def"). - * However, URL matches with a protocol will be allowed (ex: 'http://localhost') - * 2) URL matches which do not have at least one word character in the - * domain name (effectively skipping over matches like "git:1.0"). - * 3) A protocol-relative url match (a URL beginning with '//') whose - * previous character is a word character (effectively skipping over - * strings like "abc//google.com") - * - * Otherwise, returns `true`. - * - * @param {String} urlMatch The matched URL, if there was one. Will be an - * empty string if the match is not a URL match. - * @param {String} protocolUrlMatch The match URL string for a protocol - * match. Ex: 'http://yahoo.com'. This is used to match something like - * 'http://localhost', where we won't double check that the domain name - * has at least one '.' in it. - * @return {Boolean} `true` if the match given is valid and should be - * processed, or `false` if the match is invalid and/or should just not be - * processed. - */ - isValid : function( urlMatch, protocolUrlMatch ) { - if( - ( protocolUrlMatch && !this.isValidUriScheme( protocolUrlMatch ) ) || - this.urlMatchDoesNotHaveProtocolOrDot( urlMatch, protocolUrlMatch ) || // At least one period ('.') must exist in the URL match for us to consider it an actual URL, *unless* it was a full protocol match (like 'http://localhost') - (this.urlMatchDoesNotHaveAtLeastOneWordChar( urlMatch, protocolUrlMatch ) && // At least one letter character must exist in the domain name after a protocol match. Ex: skip over something like "git:1.0" - !this.isValidIpAddress( urlMatch ) // Except if it's an IP address - ) - ) { - return false; - } - - return true; - }, - - - isValidIpAddress : function ( uriSchemeMatch ) { - var newRegex = new RegExp(this.hasFullProtocolRegex.source + this.ipRegex.source); - var uriScheme = uriSchemeMatch.match( newRegex ); - - return uriScheme !== null; - }, - - /** - * Determines if the URI scheme is a valid scheme to be autolinked. Returns - * `false` if the scheme is 'javascript:' or 'vbscript:' - * - * @private - * @param {String} uriSchemeMatch The match URL string for a full URI scheme - * match. Ex: 'http://yahoo.com' or 'mailto:a@a.com'. - * @return {Boolean} `true` if the scheme is a valid one, `false` otherwise. - */ - isValidUriScheme : function( uriSchemeMatch ) { - var uriScheme = uriSchemeMatch.match( this.uriSchemeRegex )[ 0 ].toLowerCase(); - - return ( uriScheme !== 'javascript:' && uriScheme !== 'vbscript:' ); - }, - - - /** - * Determines if a URL match does not have either: - * - * a) a full protocol (i.e. 'http://'), or - * b) at least one dot ('.') in the domain name (for a non-full-protocol - * match). - * - * Either situation is considered an invalid URL (ex: 'git:d' does not have - * either the '://' part, or at least one dot in the domain name. If the - * match was 'git:abc.com', we would consider this valid.) - * - * @private - * @param {String} urlMatch The matched URL, if there was one. Will be an - * empty string if the match is not a URL match. - * @param {String} protocolUrlMatch The match URL string for a protocol - * match. Ex: 'http://yahoo.com'. This is used to match something like - * 'http://localhost', where we won't double check that the domain name - * has at least one '.' in it. - * @return {Boolean} `true` if the URL match does not have a full protocol, - * or at least one dot ('.') in a non-full-protocol match. - */ - urlMatchDoesNotHaveProtocolOrDot : function( urlMatch, protocolUrlMatch ) { - return ( !!urlMatch && ( !protocolUrlMatch || !this.hasFullProtocolRegex.test( protocolUrlMatch ) ) && urlMatch.indexOf( '.' ) === -1 ); - }, - - - /** - * Determines if a URL match does not have at least one word character after - * the protocol (i.e. in the domain name). - * - * At least one letter character must exist in the domain name after a - * protocol match. Ex: skip over something like "git:1.0" - * - * @private - * @param {String} urlMatch The matched URL, if there was one. Will be an - * empty string if the match is not a URL match. - * @param {String} protocolUrlMatch The match URL string for a protocol - * match. Ex: 'http://yahoo.com'. This is used to know whether or not we - * have a protocol in the URL string, in order to check for a word - * character after the protocol separator (':'). - * @return {Boolean} `true` if the URL match does not have at least one word - * character in it after the protocol, `false` otherwise. - */ - urlMatchDoesNotHaveAtLeastOneWordChar : function( urlMatch, protocolUrlMatch ) { - if( urlMatch && protocolUrlMatch ) { - return !this.hasWordCharAfterProtocolRegex.test( urlMatch ); - } else { - return false; - } - } - -}; -/*global Autolinker */ -/** - * A truncation feature where the ellipsis will be placed at the end of the URL. - * - * @param {String} anchorText - * @param {Number} truncateLen The maximum length of the truncated output URL string. - * @param {String} ellipsisChars The characters to place within the url, e.g. "..". - * @return {String} The truncated URL. - */ -Autolinker.truncate.TruncateEnd = function(anchorText, truncateLen, ellipsisChars){ - return Autolinker.Util.ellipsis( anchorText, truncateLen, ellipsisChars ); -}; - -/*global Autolinker */ -/** - * Date: 2015-10-05 - * Author: Kasper Søfren (https://github.com/kafoso) - * - * A truncation feature, where the ellipsis will be placed in the dead-center of the URL. - * - * @param {String} url A URL. - * @param {Number} truncateLen The maximum length of the truncated output URL string. - * @param {String} ellipsisChars The characters to place within the url, e.g. "..". - * @return {String} The truncated URL. - */ -Autolinker.truncate.TruncateMiddle = function(url, truncateLen, ellipsisChars){ - if (url.length <= truncateLen) { - return url; - } - var availableLength = truncateLen - ellipsisChars.length; - var end = ""; - if (availableLength > 0) { - end = url.substr((-1)*Math.floor(availableLength/2)); - } - return (url.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, truncateLen); -}; - -/*global Autolinker */ -/** - * Date: 2015-10-05 - * Author: Kasper Søfren (https://github.com/kafoso) - * - * A truncation feature, where the ellipsis will be placed at a section within - * the URL making it still somewhat human readable. - * - * @param {String} url A URL. - * @param {Number} truncateLen The maximum length of the truncated output URL string. - * @param {String} ellipsisChars The characters to place within the url, e.g. "..". - * @return {String} The truncated URL. - */ -Autolinker.truncate.TruncateSmart = function(url, truncateLen, ellipsisChars){ - var parse_url = function(url){ // Functionality inspired by PHP function of same name - var urlObj = {}; - var urlSub = url; - var match = urlSub.match(/^([a-z]+):\/\//i); - if (match) { - urlObj.scheme = match[1]; - urlSub = urlSub.substr(match[0].length); - } - match = urlSub.match(/^(.*?)(?=(\?|#|\/|$))/i); - if (match) { - urlObj.host = match[1]; - urlSub = urlSub.substr(match[0].length); - } - match = urlSub.match(/^\/(.*?)(?=(\?|#|$))/i); - if (match) { - urlObj.path = match[1]; - urlSub = urlSub.substr(match[0].length); - } - match = urlSub.match(/^\?(.*?)(?=(#|$))/i); - if (match) { - urlObj.query = match[1]; - urlSub = urlSub.substr(match[0].length); - } - match = urlSub.match(/^#(.*?)$/i); - if (match) { - urlObj.fragment = match[1]; - //urlSub = urlSub.substr(match[0].length); -- not used. Uncomment if adding another block. - } - return urlObj; - }; - - var buildUrl = function(urlObj){ - var url = ""; - if (urlObj.scheme && urlObj.host) { - url += urlObj.scheme + "://"; - } - if (urlObj.host) { - url += urlObj.host; - } - if (urlObj.path) { - url += "/" + urlObj.path; - } - if (urlObj.query) { - url += "?" + urlObj.query; - } - if (urlObj.fragment) { - url += "#" + urlObj.fragment; - } - return url; - }; - - var buildSegment = function(segment, remainingAvailableLength){ - var remainingAvailableLengthHalf = remainingAvailableLength/ 2, - startOffset = Math.ceil(remainingAvailableLengthHalf), - endOffset = (-1)*Math.floor(remainingAvailableLengthHalf), - end = ""; - if (endOffset < 0) { - end = segment.substr(endOffset); - } - return segment.substr(0, startOffset) + ellipsisChars + end; - }; - if (url.length <= truncateLen) { - return url; - } - var availableLength = truncateLen - ellipsisChars.length; - var urlObj = parse_url(url); - // Clean up the URL - if (urlObj.query) { - var matchQuery = urlObj.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i); - if (matchQuery) { - // Malformed URL; two or more "?". Removed any content behind the 2nd. - urlObj.query = urlObj.query.substr(0, matchQuery[1].length); - url = buildUrl(urlObj); - } - } - if (url.length <= truncateLen) { - return url; - } - if (urlObj.host) { - urlObj.host = urlObj.host.replace(/^www\./, ""); - url = buildUrl(urlObj); - } - if (url.length <= truncateLen) { - return url; - } - // Process and build the URL - var str = ""; - if (urlObj.host) { - str += urlObj.host; - } - if (str.length >= availableLength) { - if (urlObj.host.length == truncateLen) { - return (urlObj.host.substr(0, (truncateLen - ellipsisChars.length)) + ellipsisChars).substr(0, truncateLen); - } - return buildSegment(str, availableLength).substr(0, truncateLen); - } - var pathAndQuery = ""; - if (urlObj.path) { - pathAndQuery += "/" + urlObj.path; - } - if (urlObj.query) { - pathAndQuery += "?" + urlObj.query; - } - if (pathAndQuery) { - if ((str+pathAndQuery).length >= availableLength) { - if ((str+pathAndQuery).length == truncateLen) { - return (str + pathAndQuery).substr(0, truncateLen); - } - var remainingAvailableLength = availableLength - str.length; - return (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, truncateLen); - } else { - str += pathAndQuery; - } - } - if (urlObj.fragment) { - var fragment = "#"+urlObj.fragment; - if ((str+fragment).length >= availableLength) { - if ((str+fragment).length == truncateLen) { - return (str + fragment).substr(0, truncateLen); - } - var remainingAvailableLength2 = availableLength - str.length; - return (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, truncateLen); - } else { - str += fragment; - } - } - if (urlObj.scheme && urlObj.host) { - var scheme = urlObj.scheme + "://"; - if ((str+scheme).length < availableLength) { - return (scheme + str).substr(0, truncateLen); - } - } - if (str.length <= truncateLen) { - return str; - } - var end = ""; - if (availableLength > 0) { - end = str.substr((-1)*Math.floor(availableLength/2)); - } - return (str.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, truncateLen); -}; - -return Autolinker; -})); diff --git a/node_modules/autolinker/dist/Autolinker.min.js b/node_modules/autolinker/dist/Autolinker.min.js deleted file mode 100644 index fb80ada47..000000000 --- a/node_modules/autolinker/dist/Autolinker.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * Autolinker.js - * 0.28.1 - * - * Copyright(c) 2016 Gregory Jacobs - * MIT License - * - * https://github.com/gregjacobs/Autolinker.js - */ -!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.Autolinker=e()}(this,function(){var t=function(e){e=e||{},this.version=t.version,this.urls=this.normalizeUrlsCfg(e.urls),this.email="boolean"!=typeof e.email||e.email,this.twitter="boolean"!=typeof e.twitter||e.twitter,this.phone="boolean"!=typeof e.phone||e.phone,this.hashtag=e.hashtag||!1,this.newWindow="boolean"!=typeof e.newWindow||e.newWindow,this.stripPrefix="boolean"!=typeof e.stripPrefix||e.stripPrefix;var r=this.hashtag;if(r!==!1&&"twitter"!==r&&"facebook"!==r&&"instagram"!==r)throw new Error("invalid `hashtag` cfg - see docs");this.truncate=this.normalizeTruncateCfg(e.truncate),this.className=e.className||"",this.replaceFn=e.replaceFn||null,this.htmlParser=null,this.matchers=null,this.tagBuilder=null};return t.link=function(e,r){var a=new t(r);return a.link(e)},t.version="0.28.1",t.prototype={constructor:t,normalizeUrlsCfg:function(t){return null==t&&(t=!0),"boolean"==typeof t?{schemeMatches:t,wwwMatches:t,tldMatches:t}:{schemeMatches:"boolean"!=typeof t.schemeMatches||t.schemeMatches,wwwMatches:"boolean"!=typeof t.wwwMatches||t.wwwMatches,tldMatches:"boolean"!=typeof t.tldMatches||t.tldMatches}},normalizeTruncateCfg:function(e){return"number"==typeof e?{length:e,location:"end"}:t.Util.defaults(e||{},{length:Number.POSITIVE_INFINITY,location:"end"})},parse:function(t){for(var e=this.getHtmlParser(),r=e.parse(t),a=0,n=[],i=0,s=r.length;ie&&(r=null==r?"..":r,t=t.substring(0,e-r.length)+r),t},indexOf:function(t,e){if(Array.prototype.indexOf)return t.indexOf(e);for(var r=0,a=t.length;r=0;r--)e(t[r])===!0&&t.splice(r,1)},splitAndCapture:function(t,e){for(var r,a=[],n=0;r=e.exec(t);)a.push(t.substring(n,r.index)),a.push(r[0]),n=r.index+r[0].length;return a.push(t.substring(n)),a},trim:function(t){return t.replace(this.trimRegex,"")}},t.HtmlTag=t.Util.extend(Object,{whitespaceRegex:/\s+/,constructor:function(e){t.Util.assign(this,e),this.innerHtml=this.innerHtml||this.innerHTML},setTagName:function(t){return this.tagName=t,this},getTagName:function(){return this.tagName||""},setAttr:function(t,e){var r=this.getAttrs();return r[t]=e,this},getAttr:function(t){return this.getAttrs()[t]},setAttrs:function(e){var r=this.getAttrs();return t.Util.assign(r,e),this},getAttrs:function(){return this.attrs||(this.attrs={})},setClass:function(t){return this.setAttr("class",t)},addClass:function(e){for(var r,a=this.getClass(),n=this.whitespaceRegex,i=t.Util.indexOf,s=a?a.split(n):[],o=e.split(n);r=o.shift();)i(s,r)===-1&&s.push(r);return this.getAttrs()["class"]=s.join(" "),this},removeClass:function(e){for(var r,a=this.getClass(),n=this.whitespaceRegex,i=t.Util.indexOf,s=a?a.split(n):[],o=e.split(n);s.length&&(r=o.shift());){var c=i(s,r);c!==-1&&s.splice(c,1)}return this.getAttrs()["class"]=s.join(" "),this},getClass:function(){return this.getAttrs()["class"]||""},hasClass:function(t){return(" "+this.getClass()+" ").indexOf(" "+t+" ")!==-1},setInnerHtml:function(t){return this.innerHtml=t,this},getInnerHtml:function(){return this.innerHtml||""},toAnchorString:function(){var t=this.getTagName(),e=this.buildAttrsStr();return e=e?" "+e:"",["<",t,e,">",this.getInnerHtml(),""].join("")},buildAttrsStr:function(){if(!this.attrs)return"";var t=this.getAttrs(),e=[];for(var r in t)t.hasOwnProperty(r)&&e.push(r+'="'+t[r]+'"');return e.join(" ")}}),t.RegexLib=function(){var t="A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",e="0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹0-9",r=t+e,a=new RegExp("["+r+".\\-]*["+r+"\\-]"),n=/(?:travelersinsurance|sandvikcoromant|kerryproperties|cancerresearch|weatherchannel|kerrylogistics|spreadbetting|international|wolterskluwer|lifeinsurance|construction|pamperedchef|scholarships|versicherung|bridgestone|creditunion|kerryhotels|investments|productions|blackfriday|enterprises|lamborghini|photography|motorcycles|williamhill|playstation|contractors|barclaycard|accountants|redumbrella|engineering|management|telefonica|protection|consulting|tatamotors|creditcard|vlaanderen|schaeffler|associates|properties|foundation|republican|bnpparibas|boehringer|eurovision|extraspace|industries|immobilien|university|technology|volkswagen|healthcare|restaurant|cuisinella|vistaprint|apartments|accountant|travelers|homedepot|institute|vacations|furniture|fresenius|insurance|christmas|bloomberg|solutions|barcelona|firestone|financial|kuokgroup|fairwinds|community|passagens|goldpoint|equipment|lifestyle|yodobashi|aquarelle|marketing|analytics|education|amsterdam|statefarm|melbourne|allfinanz|directory|microsoft|stockholm|montblanc|accenture|lancaster|landrover|everbank|istanbul|graphics|grainger|ipiranga|softbank|attorney|pharmacy|saarland|catering|airforce|yokohama|mortgage|frontier|mutuelle|stcgroup|memorial|pictures|football|symantec|cipriani|ventures|telecity|cityeats|verisign|flsmidth|boutique|cleaning|firmdale|clinique|clothing|redstone|infiniti|deloitte|feedback|services|broadway|plumbing|commbank|training|barclays|exchange|computer|brussels|software|delivery|barefoot|builders|business|bargains|engineer|holdings|download|security|helsinki|lighting|movistar|discount|hdfcbank|supplies|marriott|property|diamonds|capetown|partners|democrat|jpmorgan|bradesco|budapest|rexroth|zuerich|shriram|academy|science|support|youtube|singles|surgery|alibaba|statoil|dentist|schwarz|android|cruises|cricket|digital|markets|starhub|systems|courses|coupons|netbank|country|domains|corsica|network|neustar|realtor|lincoln|limited|schmidt|yamaxun|cooking|contact|auction|spiegel|liaison|leclerc|latrobe|lasalle|abogado|compare|lanxess|exposed|express|company|cologne|college|avianca|lacaixa|fashion|recipes|ferrero|komatsu|storage|wanggou|clubmed|sandvik|fishing|fitness|bauhaus|kitchen|flights|florist|flowers|watches|weather|temasek|samsung|bentley|forsale|channel|theater|frogans|theatre|okinawa|website|tickets|jewelry|gallery|tiffany|iselect|shiksha|brother|organic|wedding|genting|toshiba|origins|philips|hyundai|hotmail|hoteles|hosting|rentals|windows|cartier|bugatti|holiday|careers|whoswho|hitachi|panerai|caravan|reviews|guitars|capital|trading|hamburg|hangout|finance|stream|family|abbott|health|review|travel|report|hermes|hiphop|gratis|career|toyota|hockey|dating|repair|google|social|soccer|reisen|global|otsuka|giving|unicom|casino|photos|center|broker|rocher|orange|bostik|garden|insure|ryukyu|bharti|safety|physio|sakura|oracle|online|jaguar|gallup|piaget|tienda|futbol|pictet|joburg|webcam|berlin|office|juegos|kaufen|chanel|chrome|xihuan|church|tennis|circle|kinder|flickr|bayern|claims|clinic|viajes|nowruz|xperia|norton|yachts|studio|coffee|camera|sanofi|nissan|author|expert|events|comsec|lawyer|tattoo|viking|estate|villas|condos|realty|yandex|energy|emerck|virgin|vision|durban|living|school|coupon|london|taobao|natura|taipei|nagoya|luxury|walter|aramco|sydney|madrid|credit|maison|makeup|schule|market|anquan|direct|design|swatch|suzuki|alsace|vuelos|dental|alipay|voyage|shouji|voting|airtel|mutual|degree|supply|agency|museum|mobily|dealer|monash|select|mormon|active|moscow|racing|datsun|quebec|nissay|rodeo|email|gifts|works|photo|chloe|edeka|cheap|earth|vista|tushu|koeln|glass|shoes|globo|tunes|gmail|nokia|space|kyoto|black|ricoh|seven|lamer|sener|epson|cisco|praxi|trust|citic|crown|shell|lease|green|legal|lexus|ninja|tatar|gripe|nikon|group|video|wales|autos|gucci|party|nexus|guide|linde|adult|parts|amica|lixil|boats|azure|loans|locus|cymru|lotte|lotto|stada|click|poker|quest|dabur|lupin|nadex|paris|faith|dance|canon|place|gives|trade|skype|rocks|mango|cloud|boots|smile|final|swiss|homes|honda|media|horse|cards|deals|watch|bosch|house|pizza|miami|osaka|tours|total|xerox|coach|sucks|style|delta|toray|iinet|tools|money|codes|beats|tokyo|salon|archi|movie|baidu|study|actor|yahoo|store|apple|world|forex|today|bible|tmall|tirol|irish|tires|forum|reise|vegas|vodka|sharp|omega|weber|jetzt|audio|promo|build|bingo|chase|gallo|drive|dubai|rehab|press|solar|sale|beer|bbva|bank|band|auto|sapo|sarl|saxo|audi|asia|arte|arpa|army|yoga|ally|zara|scor|scot|sexy|seat|zero|seek|aero|adac|zone|aarp|maif|meet|meme|menu|surf|mini|mobi|mtpc|porn|desi|star|ltda|name|talk|navy|love|loan|live|link|news|limo|like|spot|life|nico|lidl|lgbt|land|taxi|team|tech|kred|kpmg|sony|song|kiwi|kddi|jprs|jobs|sohu|java|itau|tips|info|immo|icbc|hsbc|town|host|page|toys|here|help|pars|haus|guru|guge|tube|goog|golf|gold|sncf|gmbh|gift|ggee|gent|gbiz|game|vana|pics|fund|ford|ping|pink|fish|film|fast|farm|play|fans|fail|plus|skin|pohl|fage|moda|post|erni|dvag|prod|doha|prof|docs|viva|diet|luxe|site|dell|sina|dclk|show|qpon|date|vote|cyou|voto|read|coop|cool|wang|club|city|chat|cern|cash|reit|rent|casa|cars|care|camp|rest|call|cafe|weir|wien|rich|wiki|buzz|wine|book|bond|room|work|rsvp|shia|ruhr|blue|bing|shaw|bike|safe|xbox|best|pwc|mtn|lds|aig|boo|fyi|nra|nrw|ntt|car|gal|obi|zip|aeg|vin|how|one|ong|onl|dad|ooo|bet|esq|org|htc|bar|uol|ibm|ovh|gdn|ice|icu|uno|gea|ifm|bot|top|wtf|lol|day|pet|eus|wtc|ubs|tvs|aco|ing|ltd|ink|tab|abb|afl|cat|int|pid|pin|bid|cba|gle|com|cbn|ads|man|wed|ceb|gmo|sky|ist|gmx|tui|mba|fan|ski|iwc|app|pro|med|ceo|jcb|jcp|goo|dev|men|aaa|meo|pub|jlc|bom|jll|gop|jmp|mil|got|gov|win|jot|mma|joy|trv|red|cfa|cfd|bio|moe|moi|mom|ren|biz|aws|xin|bbc|dnp|buy|kfh|mov|thd|xyz|fit|kia|rio|rip|kim|dog|vet|nyc|bcg|mtr|bcn|bms|bmw|run|bzh|rwe|tel|stc|axa|kpn|fly|krd|cab|bnl|foo|crs|eat|tci|sap|srl|nec|sas|net|cal|sbs|sfr|sca|scb|csc|edu|new|xxx|hiv|fox|wme|ngo|nhk|vip|sex|frl|lat|yun|law|you|tax|soy|sew|om|ac|hu|se|sc|sg|sh|sb|sa|rw|ru|rs|ro|re|qa|py|si|pw|pt|ps|sj|sk|pr|pn|pm|pl|sl|sm|pk|sn|ph|so|pg|pf|pe|pa|zw|nz|nu|nr|np|no|nl|ni|ng|nf|sr|ne|st|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|su|mn|mm|ml|mk|mh|mg|me|sv|md|mc|sx|sy|ma|ly|lv|sz|lu|lt|ls|lr|lk|li|lc|lb|la|tc|kz|td|ky|kw|kr|kp|kn|km|ki|kh|tf|tg|th|kg|ke|jp|jo|jm|je|it|is|ir|tj|tk|tl|tm|iq|tn|to|io|in|im|il|ie|ad|sd|ht|hr|hn|hm|tr|hk|gy|gw|gu|gt|gs|gr|gq|tt|gp|gn|gm|gl|tv|gi|tw|tz|ua|gh|ug|uk|gg|gf|ge|gd|us|uy|uz|va|gb|ga|vc|ve|fr|fo|fm|fk|fj|vg|vi|fi|eu|et|es|er|eg|ee|ec|dz|do|dm|dk|vn|dj|de|cz|cy|cx|cw|vu|cv|cu|cr|co|cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|wf|bz|by|bw|bv|bt|bs|br|bo|bn|bm|bj|bi|ws|bh|bg|bf|be|bd|bb|ba|az|ax|aw|au|at|as|ye|ar|aq|ao|am|al|yt|ai|za|ag|af|ae|zm|id)\b/;return{alphaNumericCharsStr:r,domainNameRegex:a,tldRegex:n}}(),t.AnchorTagBuilder=t.Util.extend(Object,{constructor:function(e){t.Util.assign(this,e)},build:function(e){return new t.HtmlTag({tagName:"a",attrs:this.createAttrs(e.getType(),e.getAnchorHref()),innerHtml:this.processAnchorText(e.getAnchorText())})},createAttrs:function(t,e){var r={href:e},a=this.createCssClass(t);return a&&(r["class"]=a),this.newWindow&&(r.target="_blank",r.rel="noopener noreferrer"),r},createCssClass:function(t){var e=this.className;return e?e+" "+e+"-"+t:""},processAnchorText:function(t){return t=this.doTruncate(t)},doTruncate:function(e){var r=this.truncate;if(!r||!r.length)return e;var a=r.length,n=r.location;return"smart"===n?t.truncate.TruncateSmart(e,a,".."):"middle"===n?t.truncate.TruncateMiddle(e,a,".."):t.truncate.TruncateEnd(e,a,"..")}}),t.htmlParser.HtmlParser=t.Util.extend(Object,{htmlRegex:function(){var t=/!--([\s\S]+?)--/,e=/[0-9a-zA-Z][0-9a-zA-Z:]*/,r=/[^\s"'>\/=\x00-\x1F\x7F]+/,a=/(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/,n=r.source+"(?:\\s*=\\s*"+a.source+")?";return new RegExp(["(?:","<(!DOCTYPE)","(?:","\\s+","(?:",n,"|",a.source+")",")*",">",")","|","(?:","<(/)?","(?:",t.source,"|","(?:","("+e.source+")","(?:","(?:\\s+|\\b)",n,")*","\\s*/?",")",")",">",")"].join(""),"gi")}(),htmlCharacterEntitiesRegex:/( | |<|<|>|>|"|"|')/gi,parse:function(t){for(var e,r,a=this.htmlRegex,n=0,i=[];null!==(e=a.exec(t));){var s=e[0],o=e[3],c=e[1]||e[4],h=!!e[2],l=e.index,u=t.substring(n,l);u&&(r=this.parseTextAndEntityNodes(n,u),i.push.apply(i,r)),o?i.push(this.createCommentNode(l,s,o)):i.push(this.createElementNode(l,s,c,h)),n=l+s.length}if(n0&&"@"===f||g>0&&m&&this.wordCharRegExp.test(f))){if(this.matchHasUnbalancedClosingParen(o))o=o.substr(0,o.length-1);else{var p=this.matchHasInvalidCharAfterTld(o,c);p>-1&&(o=o.substr(0,p))}var d=c?"scheme":h?"www":"tld",b=!!c;s.push(new t.match.Url({tagBuilder:i,matchedText:o,offset:g,urlMatchType:d,url:o,protocolUrlMatch:b,protocolRelativeMatch:!!m,stripPrefix:n}))}}return s},matchHasUnbalancedClosingParen:function(t){var e=t.charAt(t.length-1);if(")"===e){var r=t.match(this.openParensRe),a=t.match(this.closeParensRe),n=r&&r.length||0,i=a&&a.length||0;if(n0&&(n=t.substr(-1*Math.floor(a/2))),(t.substr(0,Math.ceil(a/2))+r+n).substr(0,e)},t.truncate.TruncateSmart=function(t,e,r){var a=function(t){var e={},r=t,a=r.match(/^([a-z]+):\/\//i);return a&&(e.scheme=a[1],r=r.substr(a[0].length)),a=r.match(/^(.*?)(?=(\?|#|\/|$))/i),a&&(e.host=a[1],r=r.substr(a[0].length)),a=r.match(/^\/(.*?)(?=(\?|#|$))/i),a&&(e.path=a[1],r=r.substr(a[0].length)),a=r.match(/^\?(.*?)(?=(#|$))/i),a&&(e.query=a[1],r=r.substr(a[0].length)),a=r.match(/^#(.*?)$/i),a&&(e.fragment=a[1]),e},n=function(t){var e="";return t.scheme&&t.host&&(e+=t.scheme+"://"),t.host&&(e+=t.host),t.path&&(e+="/"+t.path),t.query&&(e+="?"+t.query),t.fragment&&(e+="#"+t.fragment),e},i=function(t,e){var a=e/2,n=Math.ceil(a),i=-1*Math.floor(a),s="";return i<0&&(s=t.substr(i)),t.substr(0,n)+r+s};if(t.length<=e)return t;var s=e-r.length,o=a(t);if(o.query){var c=o.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);c&&(o.query=o.query.substr(0,c[1].length),t=n(o))}if(t.length<=e)return t;if(o.host&&(o.host=o.host.replace(/^www\./,""),t=n(o)),t.length<=e)return t;var h="";if(o.host&&(h+=o.host),h.length>=s)return o.host.length==e?(o.host.substr(0,e-r.length)+r).substr(0,e):i(h,s).substr(0,e);var l="";if(o.path&&(l+="/"+o.path),o.query&&(l+="?"+o.query),l){if((h+l).length>=s){if((h+l).length==e)return(h+l).substr(0,e);var u=s-h.length;return(h+i(l,u)).substr(0,e)}h+=l}if(o.fragment){var g="#"+o.fragment;if((h+g).length>=s){if((h+g).length==e)return(h+g).substr(0,e);var m=s-h.length;return(h+i(g,m)).substr(0,e)}h+=g}if(o.scheme&&o.host){var f=o.scheme+"://";if((h+f).length0&&(p=h.substr(-1*Math.floor(s/2))),(h.substr(0,Math.ceil(s/2))+r+p).substr(0,e)},t}); \ No newline at end of file diff --git a/node_modules/autolinker/package.json b/node_modules/autolinker/package.json deleted file mode 100644 index e09713496..000000000 --- a/node_modules/autolinker/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_from": "autolinker@~0.28.0", - "_id": "autolinker@0.28.1", - "_inBundle": false, - "_integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", - "_location": "/autolinker", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "autolinker@~0.28.0", - "name": "autolinker", - "escapedName": "autolinker", - "rawSpec": "~0.28.0", - "saveSpec": null, - "fetchSpec": "~0.28.0" - }, - "_requiredBy": [ - "/remarkable" - ], - "_resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", - "_shasum": "0652b491881879f0775dace0cdca3233942a4e47", - "_spec": "autolinker@~0.28.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\remarkable", - "author": { - "name": "Gregory Jacobs", - "email": "greg@greg-jacobs.com" - }, - "bugs": { - "url": "https://github.com/gregjacobs/Autolinker.js/issues" - }, - "bundleDependencies": false, - "dependencies": { - "gulp-header": "^1.7.1" - }, - "deprecated": false, - "description": "Utility to automatically link the URLs, email addresses, and Twitter handles in a given block of text/HTML", - "devDependencies": { - "gulp": "^3.9.1", - "gulp-clone": "^1.0.0", - "gulp-concat": "^2.6.0", - "gulp-connect": "^3.0.0", - "gulp-jasmine": "^2.3.0", - "gulp-jsduck": "^0.3.0", - "gulp-jshint": "^2.0.0", - "gulp-preprocess": "^2.0.0", - "gulp-rename": "^1.2.2", - "gulp-typescript": "^2.13.0", - "gulp-uglify": "^1.5.3", - "gulp-umd": "^0.2.0", - "jasmine-core": "^2.4.1", - "jshint": "^2.9.1", - "jshint-stylish": "^2.1.0", - "karma": "^0.13.21", - "karma-jasmine": "^0.3.7", - "karma-phantomjs-launcher": "^1.0.0", - "karma-spec-reporter": "0.0.24", - "lodash": "^4.3.0", - "merge-stream": "^1.0.0", - "phantomjs-prebuilt": "^2.1.4", - "requirejs": "^2.1.11", - "through2": "^2.0.1" - }, - "directories": { - "test": "tests" - }, - "files": [ - "dist" - ], - "homepage": "https://github.com/gregjacobs/Autolinker.js", - "keywords": [ - "auto", - "link", - "autolink", - "url", - "urls", - "anchor" - ], - "license": "MIT", - "main": "dist/Autolinker.js", - "name": "autolinker", - "repository": { - "type": "git", - "url": "git://github.com/gregjacobs/Autolinker.js.git" - }, - "scripts": { - "test": "gulp" - }, - "version": "0.28.1" -} diff --git a/node_modules/base/LICENSE b/node_modules/base/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/base/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/base/README.md b/node_modules/base/README.md deleted file mode 100644 index c77cdaf9d..000000000 --- a/node_modules/base/README.md +++ /dev/null @@ -1,491 +0,0 @@ -

- - - -

- -# base [![NPM version](https://img.shields.io/npm/v/base.svg?style=flat)](https://www.npmjs.com/package/base) [![NPM monthly downloads](https://img.shields.io/npm/dm/base.svg?style=flat)](https://npmjs.org/package/base) [![NPM total downloads](https://img.shields.io/npm/dt/base.svg?style=flat)](https://npmjs.org/package/base) [![Linux Build Status](https://img.shields.io/travis/node-base/base.svg?style=flat&label=Travis)](https://travis-ci.org/node-base/base) - -> base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save base -``` - -## What is Base? - -Base is a framework for rapidly creating high quality node.js applications, using plugins like building blocks. - -### Guiding principles - -The core team follows these principles to help guide API decisions: - -* **Compact API surface**: The smaller the API surface, the easier the library will be to learn and use. -* **Easy to extend**: Implementors can use any npm package, and write plugins in pure JavaScript. If you're building complex apps, Base simplifies inheritance. -* **Easy to test**: No special setup should be required to unit test `Base` or base plugins - -### Minimal API surface - -[The API](#api) was designed to provide only the minimum necessary functionality for creating a useful application, with or without [plugins](#plugins). - -**Base core** - -Base itself ships with only a handful of [useful methods](#api), such as: - -* `.set`: for setting values on the instance -* `.get`: for getting values from the instance -* `.has`: to check if a property exists on the instance -* `.define`: for setting non-enumerable values on the instance -* `.use`: for adding plugins - -**Be generic** - -When deciding on method to add or remove, we try to answer these questions: - -1. Will all or most Base applications need this method? -2. Will this method encourage practices or enforce conventions that are beneficial to implementors? -3. Can or should this be done in a plugin instead? - -### Composability - -**Plugin system** - -It couldn't be easier to extend Base with any features or custom functionality you can think of. - -Base plugins are just functions that take an instance of `Base`: - -```js -var base = new Base(); - -function plugin(base) { - // do plugin stuff, in pure JavaScript -} -// use the plugin -base.use(plugin); -``` - -**Inheritance** - -Easily inherit Base using `.extend`: - -```js -var Base = require('base'); - -function MyApp() { - Base.call(this); -} -Base.extend(MyApp); - -var app = new MyApp(); -app.set('a', 'b'); -app.get('a'); -//=> 'b'; -``` - -**Inherit or instantiate with a namespace** - -By default, the `.get`, `.set` and `.has` methods set and get values from the root of the `base` instance. You can customize this using the `.namespace` method exposed on the exported function. For example: - -```js -var Base = require('base'); -// get and set values on the `base.cache` object -var base = Base.namespace('cache'); - -var app = base(); -app.set('foo', 'bar'); -console.log(app.cache.foo); -//=> 'bar' -``` - -## API - -**Usage** - -```js -var Base = require('base'); -var app = new Base(); -app.set('foo', 'bar'); -console.log(app.foo); -//=> 'bar' -``` - -### [Base](index.js#L44) - -Create an instance of `Base` with the given `config` and `options`. - -**Params** - -* `config` **{Object}**: If supplied, this object is passed to [cache-base](https://github.com/jonschlinkert/cache-base) to merge onto the the instance upon instantiation. -* `options` **{Object}**: If supplied, this object is used to initialize the `base.options` object. - -**Example** - -```js -// initialize with `config` and `options` -var app = new Base({isApp: true}, {abc: true}); -app.set('foo', 'bar'); - -// values defined with the given `config` object will be on the root of the instance -console.log(app.baz); //=> undefined -console.log(app.foo); //=> 'bar' -// or use `.get` -console.log(app.get('isApp')); //=> true -console.log(app.get('foo')); //=> 'bar' - -// values defined with the given `options` object will be on `app.options -console.log(app.options.abc); //=> true -``` - -### [.is](index.js#L107) - -Set the given `name` on `app._name` and `app.is*` properties. Used for doing lookups in plugins. - -**Params** - -* `name` **{String}** -* `returns` **{Boolean}** - -**Example** - -```js -app.is('foo'); -console.log(app._name); -//=> 'foo' -console.log(app.isFoo); -//=> true -app.is('bar'); -console.log(app.isFoo); -//=> true -console.log(app.isBar); -//=> true -console.log(app._name); -//=> 'bar' -``` - -### [.isRegistered](index.js#L145) - -Returns true if a plugin has already been registered on an instance. - -Plugin implementors are encouraged to use this first thing in a plugin -to prevent the plugin from being called more than once on the same -instance. - -**Params** - -* `name` **{String}**: The plugin name. -* `register` **{Boolean}**: If the plugin if not already registered, to record it as being registered pass `true` as the second argument. -* `returns` **{Boolean}**: Returns true if a plugin is already registered. - -**Events** - -* `emits`: `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once. - -**Example** - -```js -var base = new Base(); -base.use(function(app) { - if (app.isRegistered('myPlugin')) return; - // do stuff to `app` -}); - -// to also record the plugin as being registered -base.use(function(app) { - if (app.isRegistered('myPlugin', true)) return; - // do stuff to `app` -}); -``` - -### [.use](index.js#L175) - -Define a plugin function to be called immediately upon init. Plugins are chainable and expose the following arguments to the plugin function: - -* `app`: the current instance of `Base` -* `base`: the [first ancestor instance](#base) of `Base` - -**Params** - -* `fn` **{Function}**: plugin function to call -* `returns` **{Object}**: Returns the item instance for chaining. - -**Example** - -```js -var app = new Base() - .use(foo) - .use(bar) - .use(baz) -``` - -### [.define](index.js#L197) - -The `.define` method is used for adding non-enumerable property on the instance. Dot-notation is **not supported** with `define`. - -**Params** - -* `key` **{String}**: The name of the property to define. -* `value` **{any}** -* `returns` **{Object}**: Returns the instance for chaining. - -**Example** - -```js -// arbitrary `render` function using lodash `template` -app.define('render', function(str, locals) { - return _.template(str)(locals); -}); -``` - -### [.mixin](index.js#L222) - -Mix property `key` onto the Base prototype. If base is inherited using `Base.extend` this method will be overridden by a new `mixin` method that will only add properties to the prototype of the inheriting application. - -**Params** - -* `key` **{String}** -* `val` **{Object|Array}** -* `returns` **{Object}**: Returns the `base` instance for chaining. - -**Example** - -```js -app.mixin('foo', function() { - // do stuff -}); -``` - -### [.base](index.js#L268) - -Getter/setter used when creating nested instances of `Base`, for storing a reference to the first ancestor instance. This works by setting an instance of `Base` on the `parent` property of a "child" instance. The `base` property defaults to the current instance if no `parent` property is defined. - -**Example** - -```js -// create an instance of `Base`, this is our first ("base") instance -var first = new Base(); -first.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later - -// create another instance -var second = new Base(); -// create a reference to the first instance (`first`) -second.parent = first; - -// create another instance -var third = new Base(); -// create a reference to the previous instance (`second`) -// repeat this pattern every time a "child" instance is created -third.parent = second; - -// we can always access the first instance using the `base` property -console.log(first.base.foo); -//=> 'bar' -console.log(second.base.foo); -//=> 'bar' -console.log(third.base.foo); -//=> 'bar' -// and now you know how to get to third base ;) -``` - -### [#use](index.js#L293) - -Static method for adding global plugin functions that will be added to an instance when created. - -**Params** - -* `fn` **{Function}**: Plugin function to use on each instance. -* `returns` **{Object}**: Returns the `Base` constructor for chaining - -**Example** - -```js -Base.use(function(app) { - app.foo = 'bar'; -}); -var app = new Base(); -console.log(app.foo); -//=> 'bar' -``` - -### [#extend](index.js#L337) - -Static method for inheriting the prototype and static methods of the `Base` class. This method greatly simplifies the process of creating inheritance-based applications. See [static-extend](https://github.com/jonschlinkert/static-extend) for more details. - -**Params** - -* `Ctor` **{Function}**: constructor to extend -* `methods` **{Object}**: Optional prototype properties to mix in. -* `returns` **{Object}**: Returns the `Base` constructor for chaining - -**Example** - -```js -var extend = cu.extend(Parent); -Parent.extend(Child); - -// optional methods -Parent.extend(Child, { - foo: function() {}, - bar: function() {} -}); -``` - -### [#mixin](index.js#L379) - -Used for adding methods to the `Base` prototype, and/or to the prototype of child instances. When a mixin function returns a function, the returned function is pushed onto the `.mixins` array, making it available to be used on inheriting classes whenever `Base.mixins()` is called (e.g. `Base.mixins(Child)`). - -**Params** - -* `fn` **{Function}**: Function to call -* `returns` **{Object}**: Returns the `Base` constructor for chaining - -**Example** - -```js -Base.mixin(function(proto) { - proto.foo = function(msg) { - return 'foo ' + msg; - }; -}); -``` - -### [#mixins](index.js#L401) - -Static method for running global mixin functions against a child constructor. Mixins must be registered before calling this method. - -**Params** - -* `Child` **{Function}**: Constructor function of a child class -* `returns` **{Object}**: Returns the `Base` constructor for chaining - -**Example** - -```js -Base.extend(Child); -Base.mixins(Child); -``` - -### [#inherit](index.js#L420) - -Similar to `util.inherit`, but copies all static properties, prototype properties, and getters/setters from `Provider` to `Receiver`. See [class-utils](https://github.com/jonschlinkert/class-utils#inherit) for more details. - -**Params** - -* `Receiver` **{Function}**: Receiving (child) constructor -* `Provider` **{Function}**: Providing (parent) constructor -* `returns` **{Object}**: Returns the `Base` constructor for chaining - -**Example** - -```js -Base.inherit(Foo, Bar); -``` - -## In the wild - -The following node.js applications were built with `Base`: - -* [assemble](https://github.com/assemble/assemble) -* [verb](https://github.com/verbose/verb) -* [generate](https://github.com/generate/generate) -* [scaffold](https://github.com/jonschlinkert/scaffold) -* [boilerplate](https://github.com/jonschlinkert/boilerplate) - -## Test coverage - -``` -Statements : 98.91% ( 91/92 ) -Branches : 92.86% ( 26/28 ) -Functions : 100% ( 17/17 ) -Lines : 98.9% ( 90/91 ) -``` - -## History - -### v0.11.2 - -* fixes https://github.com/micromatch/micromatch/issues/99 - -### v0.11.0 - -**Breaking changes** - -* Static `.use` and `.run` methods are now non-enumerable - -### v0.9.0 - -**Breaking changes** - -* `.is` no longer takes a function, a string must be passed -* all remaining `.debug` code has been removed -* `app._namespace` was removed (related to `debug`) -* `.plugin`, `.use`, and `.define` no longer emit events -* `.assertPlugin` was removed -* `.lazy` was removed - -## About - -### Related projects - -* [base-cwd](https://www.npmjs.com/package/base-cwd): Base plugin that adds a getter/setter for the current working directory. | [homepage](https://github.com/node-base/base-cwd "Base plugin that adds a getter/setter for the current working directory.") -* [base-data](https://www.npmjs.com/package/base-data): adds a `data` method to base-methods. | [homepage](https://github.com/node-base/base-data "adds a `data` method to base-methods.") -* [base-fs](https://www.npmjs.com/package/base-fs): base-methods plugin that adds vinyl-fs methods to your 'base' application for working with the file… [more](https://github.com/node-base/base-fs) | [homepage](https://github.com/node-base/base-fs "base-methods plugin that adds vinyl-fs methods to your 'base' application for working with the file system, like src, dest, copy and symlink.") -* [base-generators](https://www.npmjs.com/package/base-generators): Adds project-generator support to your `base` application. | [homepage](https://github.com/node-base/base-generators "Adds project-generator support to your `base` application.") -* [base-option](https://www.npmjs.com/package/base-option): Adds a few options methods to base, like `option`, `enable` and `disable`. See the readme… [more](https://github.com/node-base/base-option) | [homepage](https://github.com/node-base/base-option "Adds a few options methods to base, like `option`, `enable` and `disable`. See the readme for the full API.") -* [base-pipeline](https://www.npmjs.com/package/base-pipeline): base-methods plugin that adds pipeline and plugin methods for dynamically composing streaming plugin pipelines. | [homepage](https://github.com/node-base/base-pipeline "base-methods plugin that adds pipeline and plugin methods for dynamically composing streaming plugin pipelines.") -* [base-pkg](https://www.npmjs.com/package/base-pkg): Plugin for adding a `pkg` method that exposes pkg-store to your base application. | [homepage](https://github.com/node-base/base-pkg "Plugin for adding a `pkg` method that exposes pkg-store to your base application.") -* [base-plugins](https://www.npmjs.com/package/base-plugins): Adds 'smart plugin' support to your base application. | [homepage](https://github.com/node-base/base-plugins "Adds 'smart plugin' support to your base application.") -* [base-questions](https://www.npmjs.com/package/base-questions): Plugin for base-methods that adds methods for prompting the user and storing the answers on… [more](https://github.com/node-base/base-questions) | [homepage](https://github.com/node-base/base-questions "Plugin for base-methods that adds methods for prompting the user and storing the answers on a project-by-project basis.") -* [base-store](https://www.npmjs.com/package/base-store): Plugin for getting and persisting config values with your base-methods application. Adds a 'store' object… [more](https://github.com/node-base/base-store) | [homepage](https://github.com/node-base/base-store "Plugin for getting and persisting config values with your base-methods application. Adds a 'store' object that exposes all of the methods from the data-store library. Also now supports sub-stores!") -* [base-task](https://www.npmjs.com/package/base-task): base plugin that provides a very thin wrapper around [https://github.com/doowb/composer](https://github.com/doowb/composer) for adding task methods to… [more](https://github.com/node-base/base-task) | [homepage](https://github.com/node-base/base-task "base plugin that provides a very thin wrapper around for adding task methods to your application.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 141 | [jonschlinkert](https://github.com/jonschlinkert) | -| 30 | [doowb](https://github.com/doowb) | -| 3 | [charlike](https://github.com/charlike) | -| 1 | [criticalmash](https://github.com/criticalmash) | -| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on September 07, 2017._ \ No newline at end of file diff --git a/node_modules/base/index.js b/node_modules/base/index.js deleted file mode 100644 index fb680481e..000000000 --- a/node_modules/base/index.js +++ /dev/null @@ -1,435 +0,0 @@ -'use strict'; - -var util = require('util'); -var define = require('define-property'); -var CacheBase = require('cache-base'); -var Emitter = require('component-emitter'); -var isObject = require('isobject'); -var merge = require('mixin-deep'); -var pascal = require('pascalcase'); -var cu = require('class-utils'); - -/** - * Optionally define a custom `cache` namespace to use. - */ - -function namespace(name) { - var Cache = name ? CacheBase.namespace(name) : CacheBase; - var fns = []; - - /** - * Create an instance of `Base` with the given `config` and `options`. - * - * ```js - * // initialize with `config` and `options` - * var app = new Base({isApp: true}, {abc: true}); - * app.set('foo', 'bar'); - * - * // values defined with the given `config` object will be on the root of the instance - * console.log(app.baz); //=> undefined - * console.log(app.foo); //=> 'bar' - * // or use `.get` - * console.log(app.get('isApp')); //=> true - * console.log(app.get('foo')); //=> 'bar' - * - * // values defined with the given `options` object will be on `app.options - * console.log(app.options.abc); //=> true - * ``` - * - * @param {Object} `config` If supplied, this object is passed to [cache-base][] to merge onto the the instance upon instantiation. - * @param {Object} `options` If supplied, this object is used to initialize the `base.options` object. - * @api public - */ - - function Base(config, options) { - if (!(this instanceof Base)) { - return new Base(config, options); - } - Cache.call(this, config); - this.is('base'); - this.initBase(config, options); - } - - /** - * Inherit cache-base - */ - - util.inherits(Base, Cache); - - /** - * Add static emitter methods - */ - - Emitter(Base); - - /** - * Initialize `Base` defaults with the given `config` object - */ - - Base.prototype.initBase = function(config, options) { - this.options = merge({}, this.options, options); - this.cache = this.cache || {}; - this.define('registered', {}); - if (name) this[name] = {}; - - // make `app._callbacks` non-enumerable - this.define('_callbacks', this._callbacks); - if (isObject(config)) { - this.visit('set', config); - } - Base.run(this, 'use', fns); - }; - - /** - * Set the given `name` on `app._name` and `app.is*` properties. Used for doing - * lookups in plugins. - * - * ```js - * app.is('foo'); - * console.log(app._name); - * //=> 'foo' - * console.log(app.isFoo); - * //=> true - * app.is('bar'); - * console.log(app.isFoo); - * //=> true - * console.log(app.isBar); - * //=> true - * console.log(app._name); - * //=> 'bar' - * ``` - * @name .is - * @param {String} `name` - * @return {Boolean} - * @api public - */ - - Base.prototype.is = function(name) { - if (typeof name !== 'string') { - throw new TypeError('expected name to be a string'); - } - this.define('is' + pascal(name), true); - this.define('_name', name); - this.define('_appname', name); - return this; - }; - - /** - * Returns true if a plugin has already been registered on an instance. - * - * Plugin implementors are encouraged to use this first thing in a plugin - * to prevent the plugin from being called more than once on the same - * instance. - * - * ```js - * var base = new Base(); - * base.use(function(app) { - * if (app.isRegistered('myPlugin')) return; - * // do stuff to `app` - * }); - * - * // to also record the plugin as being registered - * base.use(function(app) { - * if (app.isRegistered('myPlugin', true)) return; - * // do stuff to `app` - * }); - * ``` - * @name .isRegistered - * @emits `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once. - * @param {String} `name` The plugin name. - * @param {Boolean} `register` If the plugin if not already registered, to record it as being registered pass `true` as the second argument. - * @return {Boolean} Returns true if a plugin is already registered. - * @api public - */ - - Base.prototype.isRegistered = function(name, register) { - if (this.registered.hasOwnProperty(name)) { - return true; - } - if (register !== false) { - this.registered[name] = true; - this.emit('plugin', name); - } - return false; - }; - - /** - * Define a plugin function to be called immediately upon init. Plugins are chainable - * and expose the following arguments to the plugin function: - * - * - `app`: the current instance of `Base` - * - `base`: the [first ancestor instance](#base) of `Base` - * - * ```js - * var app = new Base() - * .use(foo) - * .use(bar) - * .use(baz) - * ``` - * @name .use - * @param {Function} `fn` plugin function to call - * @return {Object} Returns the item instance for chaining. - * @api public - */ - - Base.prototype.use = function(fn) { - fn.call(this, this); - return this; - }; - - /** - * The `.define` method is used for adding non-enumerable property on the instance. - * Dot-notation is **not supported** with `define`. - * - * ```js - * // arbitrary `render` function using lodash `template` - * app.define('render', function(str, locals) { - * return _.template(str)(locals); - * }); - * ``` - * @name .define - * @param {String} `key` The name of the property to define. - * @param {any} `value` - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Base.prototype.define = function(key, val) { - if (isObject(key)) { - return this.visit('define', key); - } - define(this, key, val); - return this; - }; - - /** - * Mix property `key` onto the Base prototype. If base is inherited using - * `Base.extend` this method will be overridden by a new `mixin` method that will - * only add properties to the prototype of the inheriting application. - * - * ```js - * app.mixin('foo', function() { - * // do stuff - * }); - * ``` - * @name .mixin - * @param {String} `key` - * @param {Object|Array} `val` - * @return {Object} Returns the `base` instance for chaining. - * @api public - */ - - Base.prototype.mixin = function(key, val) { - Base.prototype[key] = val; - return this; - }; - - /** - * Non-enumberable mixin array, used by the static [Base.mixin]() method. - */ - - Base.prototype.mixins = Base.prototype.mixins || []; - - /** - * Getter/setter used when creating nested instances of `Base`, for storing a reference - * to the first ancestor instance. This works by setting an instance of `Base` on the `parent` - * property of a "child" instance. The `base` property defaults to the current instance if - * no `parent` property is defined. - * - * ```js - * // create an instance of `Base`, this is our first ("base") instance - * var first = new Base(); - * first.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later - * - * // create another instance - * var second = new Base(); - * // create a reference to the first instance (`first`) - * second.parent = first; - * - * // create another instance - * var third = new Base(); - * // create a reference to the previous instance (`second`) - * // repeat this pattern every time a "child" instance is created - * third.parent = second; - * - * // we can always access the first instance using the `base` property - * console.log(first.base.foo); - * //=> 'bar' - * console.log(second.base.foo); - * //=> 'bar' - * console.log(third.base.foo); - * //=> 'bar' - * // and now you know how to get to third base ;) - * ``` - * @name .base - * @api public - */ - - Object.defineProperty(Base.prototype, 'base', { - configurable: true, - get: function() { - return this.parent ? this.parent.base : this; - } - }); - - /** - * Static method for adding global plugin functions that will - * be added to an instance when created. - * - * ```js - * Base.use(function(app) { - * app.foo = 'bar'; - * }); - * var app = new Base(); - * console.log(app.foo); - * //=> 'bar' - * ``` - * @name #use - * @param {Function} `fn` Plugin function to use on each instance. - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'use', function(fn) { - fns.push(fn); - return Base; - }); - - /** - * Run an array of functions by passing each function - * to a method on the given object specified by the given property. - * - * @param {Object} `obj` Object containing method to use. - * @param {String} `prop` Name of the method on the object to use. - * @param {Array} `arr` Array of functions to pass to the method. - */ - - define(Base, 'run', function(obj, prop, arr) { - var len = arr.length, i = 0; - while (len--) { - obj[prop](arr[i++]); - } - return Base; - }); - - /** - * Static method for inheriting the prototype and static methods of the `Base` class. - * This method greatly simplifies the process of creating inheritance-based applications. - * See [static-extend][] for more details. - * - * ```js - * var extend = cu.extend(Parent); - * Parent.extend(Child); - * - * // optional methods - * Parent.extend(Child, { - * foo: function() {}, - * bar: function() {} - * }); - * ``` - * @name #extend - * @param {Function} `Ctor` constructor to extend - * @param {Object} `methods` Optional prototype properties to mix in. - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'extend', cu.extend(Base, function(Ctor, Parent) { - Ctor.prototype.mixins = Ctor.prototype.mixins || []; - - define(Ctor, 'mixin', function(fn) { - var mixin = fn(Ctor.prototype, Ctor); - if (typeof mixin === 'function') { - Ctor.prototype.mixins.push(mixin); - } - return Ctor; - }); - - define(Ctor, 'mixins', function(Child) { - Base.run(Child, 'mixin', Ctor.prototype.mixins); - return Ctor; - }); - - Ctor.prototype.mixin = function(key, value) { - Ctor.prototype[key] = value; - return this; - }; - return Base; - })); - - /** - * Used for adding methods to the `Base` prototype, and/or to the prototype of child instances. - * When a mixin function returns a function, the returned function is pushed onto the `.mixins` - * array, making it available to be used on inheriting classes whenever `Base.mixins()` is - * called (e.g. `Base.mixins(Child)`). - * - * ```js - * Base.mixin(function(proto) { - * proto.foo = function(msg) { - * return 'foo ' + msg; - * }; - * }); - * ``` - * @name #mixin - * @param {Function} `fn` Function to call - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'mixin', function(fn) { - var mixin = fn(Base.prototype, Base); - if (typeof mixin === 'function') { - Base.prototype.mixins.push(mixin); - } - return Base; - }); - - /** - * Static method for running global mixin functions against a child constructor. - * Mixins must be registered before calling this method. - * - * ```js - * Base.extend(Child); - * Base.mixins(Child); - * ``` - * @name #mixins - * @param {Function} `Child` Constructor function of a child class - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'mixins', function(Child) { - Base.run(Child, 'mixin', Base.prototype.mixins); - return Base; - }); - - /** - * Similar to `util.inherit`, but copies all static properties, prototype properties, and - * getters/setters from `Provider` to `Receiver`. See [class-utils][]{#inherit} for more details. - * - * ```js - * Base.inherit(Foo, Bar); - * ``` - * @name #inherit - * @param {Function} `Receiver` Receiving (child) constructor - * @param {Function} `Provider` Providing (parent) constructor - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'inherit', cu.inherit); - define(Base, 'bubble', cu.bubble); - return Base; -} - -/** - * Expose `Base` with default settings - */ - -module.exports = namespace(); - -/** - * Allow users to define a namespace - */ - -module.exports.namespace = namespace; diff --git a/node_modules/base/node_modules/define-property/LICENSE b/node_modules/base/node_modules/define-property/LICENSE deleted file mode 100644 index ec85897eb..000000000 --- a/node_modules/base/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, 2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/base/node_modules/define-property/README.md b/node_modules/base/node_modules/define-property/README.md deleted file mode 100644 index 2f1af05f3..000000000 --- a/node_modules/base/node_modules/define-property/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# define-property [![NPM version](https://img.shields.io/npm/v/define-property.svg?style=flat)](https://www.npmjs.com/package/define-property) [![NPM monthly downloads](https://img.shields.io/npm/dm/define-property.svg?style=flat)](https://npmjs.org/package/define-property) [![NPM total downloads](https://img.shields.io/npm/dt/define-property.svg?style=flat)](https://npmjs.org/package/define-property) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/define-property.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/define-property) - -> Define a non-enumerable property on an object. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save define-property -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add define-property -``` - -## Usage - -**Params** - -* `obj`: The object on which to define the property. -* `prop`: The name of the property to be defined or modified. -* `descriptor`: The descriptor for the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**get/set** - -```js -define(obj, 'foo', { - get: function() {}, - set: function() {} -}); -``` - -## About - -### Related projects - -* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.") -* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.") -* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep "Recursively merge values in a javascript object.") -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 20, 2017._ \ No newline at end of file diff --git a/node_modules/base/node_modules/define-property/index.js b/node_modules/base/node_modules/define-property/index.js deleted file mode 100644 index 27c19ebf6..000000000 --- a/node_modules/base/node_modules/define-property/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var isDescriptor = require('is-descriptor'); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; diff --git a/node_modules/base/node_modules/define-property/package.json b/node_modules/base/node_modules/define-property/package.json deleted file mode 100644 index 1931f42a7..000000000 --- a/node_modules/base/node_modules/define-property/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "define-property@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "define-property@1.0.0", - "_id": "define-property@1.0.0", - "_inBundle": false, - "_integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "_location": "/base/define-property", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "define-property@1.0.0", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/base" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "description": "Define a non-enumerable property on an object.", - "devDependencies": { - "gulp-format-md": "^0.1.12", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "extend-shallow", - "merge-deep", - "assign-deep", - "mixin-deep" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/base/node_modules/is-accessor-descriptor/LICENSE b/node_modules/base/node_modules/is-accessor-descriptor/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/base/node_modules/is-accessor-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/base/node_modules/is-accessor-descriptor/README.md b/node_modules/base/node_modules/is-accessor-descriptor/README.md deleted file mode 100644 index d198e1f05..000000000 --- a/node_modules/base/node_modules/is-accessor-descriptor/README.md +++ /dev/null @@ -1,144 +0,0 @@ -# is-accessor-descriptor [![NPM version](https://img.shields.io/npm/v/is-accessor-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-accessor-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-accessor-descriptor.svg?style=flat)](https://npmjs.org/package/is-accessor-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-accessor-descriptor.svg?style=flat)](https://npmjs.org/package/is-accessor-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-accessor-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-accessor-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-accessor-descriptor -``` - -## Usage - -```js -var isAccessor = require('is-accessor-descriptor'); - -isAccessor({get: function() {}}); -//=> true -``` - -You may also pass an object and property name to check if the property is an accessor: - -```js -isAccessor(foo, 'bar'); -``` - -## Examples - -`false` when not an object - -```js -isAccessor('a') -isAccessor(null) -isAccessor([]) -//=> false -``` - -`true` when the object has valid properties - -and the properties all have the correct JavaScript types: - -```js -isAccessor({get: noop, set: noop}) -isAccessor({get: noop}) -isAccessor({set: noop}) -//=> true -``` - -`false` when the object has invalid properties - -```js -isAccessor({get: noop, set: noop, bar: 'baz'}) -isAccessor({get: noop, writable: true}) -isAccessor({get: noop, value: true}) -//=> false -``` - -`false` when an accessor is not a function - -```js -isAccessor({get: noop, set: 'baz'}) -isAccessor({get: 'foo', set: noop}) -isAccessor({get: 'foo', bar: 'baz'}) -isAccessor({get: 'foo', set: 'baz'}) -//=> false -``` - -`false` when a value is not the correct type - -```js -isAccessor({get: noop, set: noop, enumerable: 'foo'}) -isAccessor({set: noop, configurable: 'foo'}) -isAccessor({get: noop, configurable: 'foo'}) -//=> false -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 22 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [realityking](https://github.com/realityking) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._ \ No newline at end of file diff --git a/node_modules/base/node_modules/is-accessor-descriptor/index.js b/node_modules/base/node_modules/is-accessor-descriptor/index.js deleted file mode 100644 index d2e6fe8b9..000000000 --- a/node_modules/base/node_modules/is-accessor-descriptor/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - * is-accessor-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -// accessor descriptor properties -var accessor = { - get: 'function', - set: 'function', - configurable: 'boolean', - enumerable: 'boolean' -}; - -function isAccessorDescriptor(obj, prop) { - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (typeOf(obj) !== 'object') { - return false; - } - - if (has(obj, 'value') || has(obj, 'writable')) { - return false; - } - - if (!has(obj, 'get') || typeof obj.get !== 'function') { - return false; - } - - // tldr: it's valid to have "set" be undefined - // "set" might be undefined if `Object.getOwnPropertyDescriptor` - // was used to get the value, and only `get` was defined by the user - if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { - return false; - } - - for (var key in obj) { - if (!accessor.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === accessor[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -} - -function has(obj, key) { - return {}.hasOwnProperty.call(obj, key); -} - -/** - * Expose `isAccessorDescriptor` - */ - -module.exports = isAccessorDescriptor; diff --git a/node_modules/base/node_modules/is-accessor-descriptor/package.json b/node_modules/base/node_modules/is-accessor-descriptor/package.json deleted file mode 100644 index 8f31e856a..000000000 --- a/node_modules/base/node_modules/is-accessor-descriptor/package.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "_args": [ - [ - "is-accessor-descriptor@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-accessor-descriptor@1.0.0", - "_id": "is-accessor-descriptor@1.0.0", - "_inBundle": false, - "_integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "_location": "/base/is-accessor-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-accessor-descriptor@1.0.0", - "name": "is-accessor-descriptor", - "escapedName": "is-accessor-descriptor", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/base/is-descriptor" - ], - "_resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Rouven Weßling", - "url": "www.rouvenwessling.de" - } - ], - "dependencies": { - "kind-of": "^6.0.0" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-accessor-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-accessor-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "is-plain-object", - "isobject" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/base/node_modules/is-data-descriptor/LICENSE b/node_modules/base/node_modules/is-data-descriptor/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/base/node_modules/is-data-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/base/node_modules/is-data-descriptor/README.md b/node_modules/base/node_modules/is-data-descriptor/README.md deleted file mode 100644 index 42b071446..000000000 --- a/node_modules/base/node_modules/is-data-descriptor/README.md +++ /dev/null @@ -1,161 +0,0 @@ -# is-data-descriptor [![NPM version](https://img.shields.io/npm/v/is-data-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-data-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-data-descriptor.svg?style=flat)](https://npmjs.org/package/is-data-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-data-descriptor.svg?style=flat)](https://npmjs.org/package/is-data-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-data-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-data-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript data descriptor. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-data-descriptor -``` - -## Usage - -```js -var isDataDesc = require('is-data-descriptor'); -``` - -## Examples - -`true` when the descriptor has valid properties with valid values. - -```js -// `value` can be anything -isDataDesc({value: 'foo'}) -isDataDesc({value: function() {}}) -isDataDesc({value: true}) -//=> true -``` - -`false` when not an object - -```js -isDataDesc('a') -//=> false -isDataDesc(null) -//=> false -isDataDesc([]) -//=> false -``` - -`false` when the object has invalid properties - -```js -isDataDesc({value: 'foo', bar: 'baz'}) -//=> false -isDataDesc({value: 'foo', bar: 'baz'}) -//=> false -isDataDesc({value: 'foo', get: function(){}}) -//=> false -isDataDesc({get: function(){}, value: 'foo'}) -//=> false -``` - -`false` when a value is not the correct type - -```js -isDataDesc({value: 'foo', enumerable: 'foo'}) -//=> false -isDataDesc({value: 'foo', configurable: 'foo'}) -//=> false -isDataDesc({value: 'foo', writable: 'foo'}) -//=> false -``` - -## Valid properties - -The only valid data descriptor properties are the following: - -* `configurable` (required) -* `enumerable` (required) -* `value` (optional) -* `writable` (optional) - -To be a valid data descriptor, either `value` or `writable` must be defined. - -**Invalid properties** - -A descriptor may have additional _invalid_ properties (an error will **not** be thrown). - -```js -var foo = {}; - -Object.defineProperty(foo, 'bar', { - enumerable: true, - whatever: 'blah', // invalid, but doesn't cause an error - get: function() { - return 'baz'; - } -}); - -console.log(foo.bar); -//=> 'baz' -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 21 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [realityking](https://github.com/realityking) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._ \ No newline at end of file diff --git a/node_modules/base/node_modules/is-data-descriptor/index.js b/node_modules/base/node_modules/is-data-descriptor/index.js deleted file mode 100644 index cfeae3619..000000000 --- a/node_modules/base/node_modules/is-data-descriptor/index.js +++ /dev/null @@ -1,49 +0,0 @@ -/*! - * is-data-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -module.exports = function isDataDescriptor(obj, prop) { - // data descriptor properties - var data = { - configurable: 'boolean', - enumerable: 'boolean', - writable: 'boolean' - }; - - if (typeOf(obj) !== 'object') { - return false; - } - - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (!('value' in obj) && !('writable' in obj)) { - return false; - } - - for (var key in obj) { - if (key === 'value') continue; - - if (!data.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === data[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -}; diff --git a/node_modules/base/node_modules/is-data-descriptor/package.json b/node_modules/base/node_modules/is-data-descriptor/package.json deleted file mode 100644 index 414fdbcd5..000000000 --- a/node_modules/base/node_modules/is-data-descriptor/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_args": [ - [ - "is-data-descriptor@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-data-descriptor@1.0.0", - "_id": "is-data-descriptor@1.0.0", - "_inBundle": false, - "_integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "_location": "/base/is-data-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-data-descriptor@1.0.0", - "name": "is-data-descriptor", - "escapedName": "is-data-descriptor", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/base/is-descriptor" - ], - "_resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-data-descriptor/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Rouven Weßling", - "url": "www.rouvenwessling.de" - } - ], - "dependencies": { - "kind-of": "^6.0.0" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-data-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-data-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-data-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "isobject" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/base/node_modules/is-descriptor/LICENSE b/node_modules/base/node_modules/is-descriptor/LICENSE deleted file mode 100644 index c0d7f1362..000000000 --- a/node_modules/base/node_modules/is-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/base/node_modules/is-descriptor/README.md b/node_modules/base/node_modules/is-descriptor/README.md deleted file mode 100644 index 658e53301..000000000 --- a/node_modules/base/node_modules/is-descriptor/README.md +++ /dev/null @@ -1,193 +0,0 @@ -# is-descriptor [![NPM version](https://img.shields.io/npm/v/is-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-descriptor.svg?style=flat)](https://npmjs.org/package/is-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-descriptor.svg?style=flat)](https://npmjs.org/package/is-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-descriptor -``` - -## Usage - -```js -var isDescriptor = require('is-descriptor'); - -isDescriptor({value: 'foo'}) -//=> true -isDescriptor({get: function(){}, set: function(){}}) -//=> true -isDescriptor({get: 'foo', set: function(){}}) -//=> false -``` - -You may also check for a descriptor by passing an object as the first argument and property name (`string`) as the second argument. - -```js -var obj = {}; -obj.foo = 'abc'; - -Object.defineProperty(obj, 'bar', { - value: 'xyz' -}); - -isDescriptor(obj, 'foo'); -//=> true -isDescriptor(obj, 'bar'); -//=> true -``` - -## Examples - -### value type - -`false` when not an object - -```js -isDescriptor('a'); -//=> false -isDescriptor(null); -//=> false -isDescriptor([]); -//=> false -``` - -### data descriptor - -`true` when the object has valid properties with valid values. - -```js -isDescriptor({value: 'foo'}); -//=> true -isDescriptor({value: noop}); -//=> true -``` - -`false` when the object has invalid properties - -```js -isDescriptor({value: 'foo', bar: 'baz'}); -//=> false -isDescriptor({value: 'foo', bar: 'baz'}); -//=> false -isDescriptor({value: 'foo', get: noop}); -//=> false -isDescriptor({get: noop, value: noop}); -//=> false -``` - -`false` when a value is not the correct type - -```js -isDescriptor({value: 'foo', enumerable: 'foo'}); -//=> false -isDescriptor({value: 'foo', configurable: 'foo'}); -//=> false -isDescriptor({value: 'foo', writable: 'foo'}); -//=> false -``` - -### accessor descriptor - -`true` when the object has valid properties with valid values. - -```js -isDescriptor({get: noop, set: noop}); -//=> true -isDescriptor({get: noop}); -//=> true -isDescriptor({set: noop}); -//=> true -``` - -`false` when the object has invalid properties - -```js -isDescriptor({get: noop, set: noop, bar: 'baz'}); -//=> false -isDescriptor({get: noop, writable: true}); -//=> false -isDescriptor({get: noop, value: true}); -//=> false -``` - -`false` when an accessor is not a function - -```js -isDescriptor({get: noop, set: 'baz'}); -//=> false -isDescriptor({get: 'foo', set: noop}); -//=> false -isDescriptor({get: 'foo', bar: 'baz'}); -//=> false -isDescriptor({get: 'foo', set: 'baz'}); -//=> false -``` - -`false` when a value is not the correct type - -```js -isDescriptor({get: noop, set: noop, enumerable: 'foo'}); -//=> false -isDescriptor({set: noop, configurable: 'foo'}); -//=> false -isDescriptor({get: noop, configurable: 'foo'}); -//=> false -``` - -## About - -### Related projects - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 24 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [doowb](https://github.com/doowb) | -| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 22, 2017._ \ No newline at end of file diff --git a/node_modules/base/node_modules/is-descriptor/index.js b/node_modules/base/node_modules/is-descriptor/index.js deleted file mode 100644 index c9b91d762..000000000 --- a/node_modules/base/node_modules/is-descriptor/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * is-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); -var isAccessor = require('is-accessor-descriptor'); -var isData = require('is-data-descriptor'); - -module.exports = function isDescriptor(obj, key) { - if (typeOf(obj) !== 'object') { - return false; - } - if ('get' in obj) { - return isAccessor(obj, key); - } - return isData(obj, key); -}; diff --git a/node_modules/base/node_modules/is-descriptor/package.json b/node_modules/base/node_modules/is-descriptor/package.json deleted file mode 100644 index 55eb803aa..000000000 --- a/node_modules/base/node_modules/is-descriptor/package.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "_args": [ - [ - "is-descriptor@1.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-descriptor@1.0.2", - "_id": "is-descriptor@1.0.2", - "_inBundle": false, - "_integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "_location": "/base/is-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-descriptor@1.0.2", - "name": "is-descriptor", - "escapedName": "is-descriptor", - "rawSpec": "1.0.2", - "saveSpec": null, - "fetchSpec": "1.0.2" - }, - "_requiredBy": [ - "/base/define-property" - ], - "_resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "_spec": "1.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-descriptor/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - } - ], - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "isobject" - ] - }, - "plugins": [ - "gulp-format-md" - ], - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.2" -} diff --git a/node_modules/base/package.json b/node_modules/base/package.json deleted file mode 100644 index f8bc00336..000000000 --- a/node_modules/base/package.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "_args": [ - [ - "base@0.11.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "base@0.11.2", - "_id": "base@0.11.2", - "_inBundle": false, - "_integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "_location": "/base", - "_phantomChildren": { - "kind-of": "6.0.3" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "base@0.11.2", - "name": "base", - "escapedName": "base", - "rawSpec": "0.11.2", - "saveSpec": null, - "fetchSpec": "0.11.2" - }, - "_requiredBy": [ - "/snapdragon" - ], - "_resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "_spec": "0.11.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/node-base/base/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "John O'Donnell", - "url": "https://github.com/criticalmash" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "tunnckoCore", - "url": "https://i.am.charlike.online" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - } - ], - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "description": "base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`.", - "devDependencies": { - "gulp": "^3.9.1", - "gulp-eslint": "^4.0.0", - "gulp-format-md": "^1.0.0", - "gulp-istanbul": "^1.1.2", - "gulp-mocha": "^3.0.1", - "helper-coverage": "^0.1.3", - "mocha": "^3.5.0", - "should": "^13.0.1", - "through2": "^2.0.3", - "verb-generate-readme": "^0.6.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/node-base/base", - "keywords": [ - "base", - "boilerplate", - "cache", - "del", - "get", - "inherit", - "methods", - "set", - "starter", - "unset", - "visit" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "name": "Brian Woodward", - "url": "https://github.com/doowb" - }, - { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - } - ], - "name": "base", - "repository": { - "type": "git", - "url": "git+https://github.com/node-base/base.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "helpers": [ - "helper-coverage" - ], - "related": { - "description": "There are a number of different plugins available for extending base. Let us know if you create your own!", - "hightlight": "generate", - "list": [ - "base-cwd", - "base-data", - "base-fs", - "base-generators", - "base-option", - "base-pipeline", - "base-pkg", - "base-plugins", - "base-questions", - "base-store", - "base-task" - ] - }, - "reflinks": [ - "assemble", - "boilerplate", - "cache-base", - "class-utils", - "generate", - "scaffold", - "static-extend", - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.11.2" -} diff --git a/node_modules/before-after-hook/LICENSE b/node_modules/before-after-hook/LICENSE deleted file mode 100644 index 225063c34..000000000 --- a/node_modules/before-after-hook/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018 Gregor Martynus and other contributors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/node_modules/before-after-hook/README.md b/node_modules/before-after-hook/README.md deleted file mode 100644 index 68c927d9c..000000000 --- a/node_modules/before-after-hook/README.md +++ /dev/null @@ -1,574 +0,0 @@ -# before-after-hook - -> asynchronous hooks for internal functionality - -[![npm downloads](https://img.shields.io/npm/dw/before-after-hook.svg)](https://www.npmjs.com/package/before-after-hook) -[![Build Status](https://travis-ci.org/gr2m/before-after-hook.svg?branch=master)](https://travis-ci.org/gr2m/before-after-hook) -[![Coverage Status](https://coveralls.io/repos/gr2m/before-after-hook/badge.svg?branch=master)](https://coveralls.io/r/gr2m/before-after-hook?branch=master) -[![Greenkeeper badge](https://badges.greenkeeper.io/gr2m/before-after-hook.svg)](https://greenkeeper.io/) - -## Usage - -### Singular hook - -Recommended for [TypeScript](#typescript) - -```js -// instantiate singular hook API -const hook = new Hook.Singular() - -// Create a hook -function getData (options) { - return hook(fetchFromDatabase, options) - .then(handleData) - .catch(handleGetError) -} - -// register before/error/after hooks. -// The methods can be async or return a promise -hook.before(beforeHook) -hook.error(errorHook) -hook.after(afterHook) - -getData({id: 123}) -``` - -### Hook collection -```js -// instantiate hook collection API -const hookCollection = new Hook.Collection() - -// Create a hook -function getData (options) { - return hookCollection('get', fetchFromDatabase, options) - .then(handleData) - .catch(handleGetError) -} - -// register before/error/after hooks. -// The methods can be async or return a promise -hookCollection.before('get', beforeHook) -hookCollection.error('get', errorHook) -hookCollection.after('get', afterHook) - -getData({id: 123}) -``` - -### Hook.Singular vs Hook.Collection - -There's no fundamental difference between the `Hook.Singular` and `Hook.Collection` hooks except for the fact that a hook from a collection requires you to pass along the name. Therefore the following explanation applies to both code snippets as described above. - -The methods are executed in the following order - -1. `beforeHook` -2. `fetchFromDatabase` -3. `afterHook` -4. `getData` - -`beforeHook` can mutate `options` before it’s passed to `fetchFromDatabase`. - -If an error is thrown in `beforeHook` or `fetchFromDatabase` then `errorHook` is -called next. - -If `afterHook` throws an error then `handleGetError` is called instead -of `getData`. - -If `errorHook` throws an error then `handleGetError` is called next, otherwise -`afterHook` and `getData`. - -You can also use `hook.wrap` to achieve the same thing as shown above (collection example): - -```js -hookCollection.wrap('get', async (getData, options) => { - await beforeHook(options) - - try { - const result = getData(options) - } catch (error) { - await errorHook(error, options) - } - - await afterHook(result, options) -}) -``` - -## Install - -``` -npm install before-after-hook -``` - -Or download [the latest `before-after-hook.min.js`](https://github.com/gr2m/before-after-hook/releases/latest). - -## API - -- [Singular Hook Constructor](#singular-hook-api) -- [Hook Collection Constructor](#hook-collection-api) - -## Singular hook API - -- [Singular constructor](#singular-constructor) -- [hook.api](#singular-api) -- [hook()](#singular-api) -- [hook.before()](#singular-api) -- [hook.error()](#singular-api) -- [hook.after()](#singular-api) -- [hook.wrap()](#singular-api) -- [hook.remove()](#singular-api) - -### Singular constructor - -The `Hook.Singular` constructor has no options and returns a `hook` instance with the -methods below: - -```js -const hook = new Hook.Singular() -``` -Using the singular hook is recommended for [TypeScript](#typescript) - -### Singular API - -The singular hook is a reference to a single hook. This means that there's no need to pass along any identifier (such as a `name` as can be seen in the [Hook.Collection API](#hookcollectionapi)). - -The API of a singular hook is exactly the same as a collection hook and we therefore suggest you read the [Hook.Collection API](#hookcollectionapi) and leave out any use of the `name` argument. Just skip it like described in this example: -```js -const hook = new Hook.Singular() - -// good -hook.before(beforeHook) -hook.after(afterHook) -hook(fetchFromDatabase, options) - -// bad -hook.before('get', beforeHook) -hook.after('get', afterHook) -hook('get', fetchFromDatabase, options) -``` - -## Hook collection API - -- [Collection constructor](#collection-constructor) -- [collection.api](#collectionapi) -- [collection()](#collection) -- [collection.before()](#collectionbefore) -- [collection.error()](#collectionerror) -- [collection.after()](#collectionafter) -- [collection.wrap()](#collectionwrap) -- [collection.remove()](#collectionremove) - -### Collection constructor - -The `Hook.Collection` constructor has no options and returns a `hookCollection` instance with the -methods below - -```js -const hookCollection = new Hook.Collection() -``` - -### hookCollection.api - -Use the `api` property to return the public API: - -- [hookCollection.before()](#hookcollectionbefore) -- [hookCollection.after()](#hookcollectionafter) -- [hookCollection.error()](#hookcollectionerror) -- [hookCollection.wrap()](#hookcollectionwrap) -- [hookCollection.remove()](#hookcollectionremove) - -That way you don’t need to expose the [hookCollection()](#hookcollection) method to consumers of your library - -### hookCollection() - -Invoke before and after hooks. Returns a promise. - -```js -hookCollection(nameOrNames, method /*, options */) -``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameString or Array of StringsHook name, for example 'save'. Or an array of names, see example below.Yes
methodFunctionCallback to be executed after all before hooks finished execution successfully. options is passed as first argumentYes
optionsObjectWill be passed to all before hooks as reference, so they can mutate itNo, defaults to empty object ({})
- -Resolves with whatever `method` returns or resolves with. -Rejects with error that is thrown or rejected with by - -1. Any of the before hooks, whichever rejects / throws first -2. `method` -3. Any of the after hooks, whichever rejects / throws first - -Simple Example - -```js -hookCollection('save', function (record) { - return store.save(record) -}, record) -// shorter: hookCollection('save', store.save, record) - -hookCollection.before('save', function addTimestamps (record) { - const now = new Date().toISOString() - if (record.createdAt) { - record.updatedAt = now - } else { - record.createdAt = now - } -}) -``` - -Example defining multiple hooks at once. - -```js -hookCollection(['add', 'save'], function (record) { - return store.save(record) -}, record) - -hookCollection.before('add', function addTimestamps (record) { - if (!record.type) { - throw new Error('type property is required') - } -}) - -hookCollection.before('save', function addTimestamps (record) { - if (!record.type) { - throw new Error('type property is required') - } -}) -``` - -Defining multiple hooks is helpful if you have similar methods for which you want to define separate hooks, but also an additional hook that gets called for all at once. The example above is equal to this: - -```js -hookCollection('add', function (record) { - return hookCollection('save', function (record) { - return store.save(record) - }, record) -}, record) -``` - -### hookCollection.before() - -Add before hook for given name. - -```js -hookCollection.before(name, method) -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
methodFunction - Executed before the wrapped method. Called with the hook’s - options argument. Before hooks can mutate the passed options - before they are passed to the wrapped method. - Yes
- -Example - -```js -hookCollection.before('save', function validate (record) { - if (!record.name) { - throw new Error('name property is required') - } -}) -``` - -### hookCollection.error() - -Add error hook for given name. - -```js -hookCollection.error(name, method) -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
methodFunction - Executed when an error occurred in either the wrapped method or a - before hook. Called with the thrown error - and the hook’s options argument. The first method - which does not throw an error will set the result that the after hook - methods will receive. - Yes
- -Example - -```js -hookCollection.error('save', function (error, options) { - if (error.ignore) return - throw error -}) -``` - -### hookCollection.after() - -Add after hook for given name. - -```js -hookCollection.after(name, method) -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
methodFunction - Executed after wrapped method. Called with what the wrapped method - resolves with the hook’s options argument. - Yes
- -Example - -```js -hookCollection.after('save', function (result, options) { - if (result.updatedAt) { - app.emit('update', result) - } else { - app.emit('create', result) - } -}) -``` - -### hookCollection.wrap() - -Add wrap hook for given name. - -```js -hookCollection.wrap(name, method) -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
methodFunction - Receives both the wrapped method and the passed options as arguments so it can add logic before and after the wrapped method, it can handle errors and even replace the wrapped method altogether - Yes
- -Example - -```js -hookCollection.wrap('save', async function (saveInDatabase, options) { - if (!record.name) { - throw new Error('name property is required') - } - - try { - const result = await saveInDatabase(options) - - if (result.updatedAt) { - app.emit('update', result) - } else { - app.emit('create', result) - } - - return result - } catch (error) { - if (error.ignore) return - throw error - } -}) -``` - -See also: [Test mock example](examples/test-mock-example.md) - -### hookCollection.remove() - -Removes hook for given name. - -```js -hookCollection.remove(name, hookMethod) -``` - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescriptionRequired
nameStringHook name, for example 'save'Yes
beforeHookMethodFunction - Same function that was previously passed to hookCollection.before(), hookCollection.error(), hookCollection.after() or hookCollection.wrap() - Yes
- -Example - -```js -hookCollection.remove('save', validateRecord) -``` - -## TypeScript - -This library contains type definitions for TypeScript. When you use TypeScript we highly recommend using the `Hook.Singular` constructor for your hooks as this allows you to pass along type information for the options object. For example: - -```ts - -import {Hook} from 'before-after-hook' - -interface Foo { - bar: string - num: number; -} - -const hook = new Hook.Singular(); - -hook.before(function (foo) { - - // typescript will complain about the following mutation attempts - foo.hello = 'world' - foo.bar = 123 - - // yet this is valid - foo.bar = 'other-string' - foo.num = 123 -}) - -const foo = hook(function(foo) { - // handle `foo` - foo.bar = 'another-string' -}, {bar: 'random-string'}) - -// foo outputs -{ - bar: 'another-string', - num: 123 -} -``` - -An alternative import: - -```ts -import {Singular, Collection} from 'before-after-hook' - -const hook = new Singular<{foo: string}>(); -const hookCollection = new Collection(); -``` - -## Upgrading to 1.4 - -Since version 1.4 the `Hook` constructor has been deprecated in favor of returning `Hook.Singular` in an upcoming breaking release. - -Version 1.4 is still 100% backwards-compatible, but if you want to continue using hook collections, we recommend using the `Hook.Collection` constructor instead before the next release. - -For even more details, check out [the PR](https://github.com/gr2m/before-after-hook/pull/52). - -## See also - -If `before-after-hook` is not for you, have a look at one of these alternatives: - -- https://github.com/keystonejs/grappling-hook -- https://github.com/sebelga/promised-hooks -- https://github.com/bnoguchi/hooks-js -- https://github.com/cb1kenobi/hook-emitter - -## License - -[Apache 2.0](LICENSE) diff --git a/node_modules/before-after-hook/index.d.ts b/node_modules/before-after-hook/index.d.ts deleted file mode 100644 index 3c19a5c9a..000000000 --- a/node_modules/before-after-hook/index.d.ts +++ /dev/null @@ -1,96 +0,0 @@ -type HookMethod = (options: O) => R | Promise - -type BeforeHook = (options: O) => void -type ErrorHook = (error: E, options: O) => void -type AfterHook = (result: R, options: O) => void -type WrapHook = ( - hookMethod: HookMethod, - options: O -) => R | Promise - -type AnyHook = - | BeforeHook - | ErrorHook - | AfterHook - | WrapHook - -export interface HookCollection { - /** - * Invoke before and after hooks - */ - ( - name: string | string[], - hookMethod: HookMethod, - options?: any - ): Promise - /** - * Add `before` hook for given `name` - */ - before(name: string, beforeHook: BeforeHook): void - /** - * Add `error` hook for given `name` - */ - error(name: string, errorHook: ErrorHook): void - /** - * Add `after` hook for given `name` - */ - after(name: string, afterHook: AfterHook): void - /** - * Add `wrap` hook for given `name` - */ - wrap(name: string, wrapHook: WrapHook): void - /** - * Remove added hook for given `name` - */ - remove(name: string, hook: AnyHook): void -} - -export interface HookSingular { - /** - * Invoke before and after hooks - */ - (hookMethod: HookMethod, options?: O): Promise - /** - * Add `before` hook - */ - before(beforeHook: BeforeHook): void - /** - * Add `error` hook - */ - error(errorHook: ErrorHook): void - /** - * Add `after` hook - */ - after(afterHook: AfterHook): void - /** - * Add `wrap` hook - */ - wrap(wrapHook: WrapHook): void - /** - * Remove added hook - */ - remove(hook: AnyHook): void -} - -type Collection = new () => HookCollection -type Singular = new () => HookSingular - -interface Hook { - new (): HookCollection - - /** - * Creates a collection of hooks - */ - Collection: Collection - - /** - * Creates a nameless hook that supports strict typings - */ - Singular: Singular -} - -export const Hook: Hook -export const Collection: Collection -export const Singular: Singular - -export default Hook diff --git a/node_modules/before-after-hook/index.js b/node_modules/before-after-hook/index.js deleted file mode 100644 index a97d89b77..000000000 --- a/node_modules/before-after-hook/index.js +++ /dev/null @@ -1,57 +0,0 @@ -var register = require('./lib/register') -var addHook = require('./lib/add') -var removeHook = require('./lib/remove') - -// bind with array of arguments: https://stackoverflow.com/a/21792913 -var bind = Function.bind -var bindable = bind.bind(bind) - -function bindApi (hook, state, name) { - var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]) - hook.api = { remove: removeHookRef } - hook.remove = removeHookRef - - ;['before', 'error', 'after', 'wrap'].forEach(function (kind) { - var args = name ? [state, kind, name] : [state, kind] - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args) - }) -} - -function HookSingular () { - var singularHookName = 'h' - var singularHookState = { - registry: {} - } - var singularHook = register.bind(null, singularHookState, singularHookName) - bindApi(singularHook, singularHookState, singularHookName) - return singularHook -} - -function HookCollection () { - var state = { - registry: {} - } - - var hook = register.bind(null, state) - bindApi(hook, state) - - return hook -} - -var collectionHookDeprecationMessageDisplayed = false -function Hook () { - if (!collectionHookDeprecationMessageDisplayed) { - console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4') - collectionHookDeprecationMessageDisplayed = true - } - return HookCollection() -} - -Hook.Singular = HookSingular.bind() -Hook.Collection = HookCollection.bind() - -module.exports = Hook -// expose constructors as a named property for TypeScript -module.exports.Hook = Hook -module.exports.Singular = Hook.Singular -module.exports.Collection = Hook.Collection diff --git a/node_modules/before-after-hook/lib/add.js b/node_modules/before-after-hook/lib/add.js deleted file mode 100644 index a34e3f469..000000000 --- a/node_modules/before-after-hook/lib/add.js +++ /dev/null @@ -1,46 +0,0 @@ -module.exports = addHook - -function addHook (state, kind, name, hook) { - var orig = hook - if (!state.registry[name]) { - state.registry[name] = [] - } - - if (kind === 'before') { - hook = function (method, options) { - return Promise.resolve() - .then(orig.bind(null, options)) - .then(method.bind(null, options)) - } - } - - if (kind === 'after') { - hook = function (method, options) { - var result - return Promise.resolve() - .then(method.bind(null, options)) - .then(function (result_) { - result = result_ - return orig(result, options) - }) - .then(function () { - return result - }) - } - } - - if (kind === 'error') { - hook = function (method, options) { - return Promise.resolve() - .then(method.bind(null, options)) - .catch(function (error) { - return orig(error, options) - }) - } - } - - state.registry[name].push({ - hook: hook, - orig: orig - }) -} diff --git a/node_modules/before-after-hook/lib/register.js b/node_modules/before-after-hook/lib/register.js deleted file mode 100644 index b3d01fdc9..000000000 --- a/node_modules/before-after-hook/lib/register.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = register - -function register (state, name, method, options) { - if (typeof method !== 'function') { - throw new Error('method for before hook must be a function') - } - - if (!options) { - options = {} - } - - if (Array.isArray(name)) { - return name.reverse().reduce(function (callback, name) { - return register.bind(null, state, name, callback, options) - }, method)() - } - - return Promise.resolve() - .then(function () { - if (!state.registry[name]) { - return method(options) - } - - return (state.registry[name]).reduce(function (method, registered) { - return registered.hook.bind(null, method, options) - }, method)() - }) -} diff --git a/node_modules/before-after-hook/lib/remove.js b/node_modules/before-after-hook/lib/remove.js deleted file mode 100644 index e357c514b..000000000 --- a/node_modules/before-after-hook/lib/remove.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = removeHook - -function removeHook (state, name, method) { - if (!state.registry[name]) { - return - } - - var index = state.registry[name] - .map(function (registered) { return registered.orig }) - .indexOf(method) - - if (index === -1) { - return - } - - state.registry[name].splice(index, 1) -} diff --git a/node_modules/before-after-hook/package.json b/node_modules/before-after-hook/package.json deleted file mode 100644 index 35de79516..000000000 --- a/node_modules/before-after-hook/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_from": "before-after-hook@^2.1.0", - "_id": "before-after-hook@2.1.0", - "_inBundle": false, - "_integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", - "_location": "/before-after-hook", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "before-after-hook@^2.1.0", - "name": "before-after-hook", - "escapedName": "before-after-hook", - "rawSpec": "^2.1.0", - "saveSpec": null, - "fetchSpec": "^2.1.0" - }, - "_requiredBy": [ - "/@octokit/core" - ], - "_resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", - "_shasum": "b6c03487f44e24200dd30ca5e6a1979c5d2fb635", - "_spec": "before-after-hook@^2.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\core", - "author": { - "name": "Gregor Martynus" - }, - "bugs": { - "url": "https://github.com/gr2m/before-after-hook/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "asynchronous before/error/after hooks for internal functionality", - "devDependencies": { - "browserify": "^16.0.0", - "gaze-cli": "^0.2.0", - "istanbul": "^0.4.0", - "istanbul-coveralls": "^1.0.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.4.4", - "semantic-release": "^15.0.0", - "simple-mock": "^0.8.0", - "standard": "^13.0.1", - "tap-min": "^2.0.0", - "tap-spec": "^5.0.0", - "tape": "^4.2.2", - "typescript": "^3.5.3", - "uglify-js": "^3.0.0" - }, - "files": [ - "index.js", - "index.d.ts", - "lib" - ], - "homepage": "https://github.com/gr2m/before-after-hook#readme", - "keywords": [ - "hook", - "hooks", - "api" - ], - "license": "Apache-2.0", - "name": "before-after-hook", - "release": { - "publish": [ - "@semantic-release/npm", - { - "path": "@semantic-release/github", - "assets": [ - "dist/*.js" - ] - } - ] - }, - "repository": { - "type": "git", - "url": "git+https://github.com/gr2m/before-after-hook.git" - }, - "scripts": { - "build": "browserify index.js --standalone=Hook > dist/before-after-hook.js", - "postbuild": "uglifyjs dist/before-after-hook.js -mc > dist/before-after-hook.min.js", - "posttest": "npm run validate:ts", - "postvalidate:ts": "tsc --noEmit --strict --target es6 test/typescript-validate.ts", - "prebuild": "rimraf dist && mkdirp dist", - "presemantic-release": "npm run build", - "pretest": "standard", - "semantic-release": "semantic-release", - "test": "npm run -s test:node | tap-spec", - "test:coverage": "istanbul cover test", - "test:coverage:upload": "istanbul-coveralls", - "test:node": "node test", - "test:watch": "gaze 'clear && node test | tap-min' 'test/**/*.js' 'index.js' 'lib/**/*.js'", - "validate:ts": "tsc --strict --target es6 index.d.ts" - }, - "types": "./index.d.ts", - "version": "2.1.0" -} diff --git a/node_modules/braces/LICENSE b/node_modules/braces/LICENSE deleted file mode 100644 index d32ab4426..000000000 --- a/node_modules/braces/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2018, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/braces/README.md b/node_modules/braces/README.md deleted file mode 100644 index f909bfba1..000000000 --- a/node_modules/braces/README.md +++ /dev/null @@ -1,640 +0,0 @@ -# braces [![NPM version](https://img.shields.io/npm/v/braces.svg?style=flat)](https://www.npmjs.com/package/braces) [![NPM monthly downloads](https://img.shields.io/npm/dm/braces.svg?style=flat)](https://npmjs.org/package/braces) [![NPM total downloads](https://img.shields.io/npm/dt/braces.svg?style=flat)](https://npmjs.org/package/braces) [![Linux Build Status](https://img.shields.io/travis/micromatch/braces.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/braces) [![Windows Build Status](https://img.shields.io/appveyor/ci/micromatch/braces.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/micromatch/braces) - -> Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save braces -``` - -## Why use braces? - -Brace patterns are great for matching ranges. Users (and implementors) shouldn't have to think about whether or not they will break their application (or yours) from accidentally defining an aggressive brace pattern. _Braces is the only library that offers a [solution to this problem](#performance)_. - -* **Safe(r)**: Braces isn't vulnerable to DoS attacks like [brace-expansion](https://github.com/juliangruber/brace-expansion), [minimatch](https://github.com/isaacs/minimatch) and [multimatch](https://github.com/sindresorhus/multimatch) (a different bug than the [other regex DoS bug](https://medium.com/node-security/minimatch-redos-vulnerability-590da24e6d3c#.jew0b6mpc)). -* **Accurate**: complete support for the [Bash 4.3 Brace Expansion](www.gnu.org/software/bash/) specification (passes all of the Bash braces tests) -* **[fast and performant](#benchmarks)**: Starts fast, runs fast and [scales well](#performance) as patterns increase in complexity. -* **Organized code base**: with parser and compiler that are eas(y|ier) to maintain and update when edge cases crop up. -* **Well-tested**: thousands of test assertions. Passes 100% of the [minimatch](https://github.com/isaacs/minimatch) and [brace-expansion](https://github.com/juliangruber/brace-expansion) unit tests as well (as of the writing of this). - -## Usage - -The main export is a function that takes one or more brace `patterns` and `options`. - -```js -var braces = require('braces'); -braces(pattern[, options]); -``` - -By default, braces returns an optimized regex-source string. To get an array of brace patterns, use `brace.expand()`. - -The following section explains the difference in more detail. _(If you're curious about "why" braces does this by default, see [brace matching pitfalls](#brace-matching-pitfalls)_. - -### Optimized vs. expanded braces - -**Optimized** - -By default, patterns are optimized for regex and matching: - -```js -console.log(braces('a/{x,y,z}/b')); -//=> ['a/(x|y|z)/b'] -``` - -**Expanded** - -To expand patterns the same way as Bash or [minimatch](https://github.com/isaacs/minimatch), use the [.expand](#expand) method: - -```js -console.log(braces.expand('a/{x,y,z}/b')); -//=> ['a/x/b', 'a/y/b', 'a/z/b'] -``` - -Or use [options.expand](#optionsexpand): - -```js -console.log(braces('a/{x,y,z}/b', {expand: true})); -//=> ['a/x/b', 'a/y/b', 'a/z/b'] -``` - -## Features - -* [lists](#lists): Supports "lists": `a/{b,c}/d` => `['a/b/d', 'a/c/d']` -* [sequences](#sequences): Supports alphabetical or numerical "sequences" (ranges): `{1..3}` => `['1', '2', '3']` -* [steps](#steps): Supports "steps" or increments: `{2..10..2}` => `['2', '4', '6', '8', '10']` -* [escaping](#escaping) -* [options](#options) - -### Lists - -Uses [fill-range](https://github.com/jonschlinkert/fill-range) for expanding alphabetical or numeric lists: - -```js -console.log(braces('a/{foo,bar,baz}/*.js')); -//=> ['a/(foo|bar|baz)/*.js'] - -console.log(braces.expand('a/{foo,bar,baz}/*.js')); -//=> ['a/foo/*.js', 'a/bar/*.js', 'a/baz/*.js'] -``` - -### Sequences - -Uses [fill-range](https://github.com/jonschlinkert/fill-range) for expanding alphabetical or numeric ranges (bash "sequences"): - -```js -console.log(braces.expand('{1..3}')); // ['1', '2', '3'] -console.log(braces.expand('a{01..03}b')); // ['a01b', 'a02b', 'a03b'] -console.log(braces.expand('a{1..3}b')); // ['a1b', 'a2b', 'a3b'] -console.log(braces.expand('{a..c}')); // ['a', 'b', 'c'] -console.log(braces.expand('foo/{a..c}')); // ['foo/a', 'foo/b', 'foo/c'] - -// supports padded ranges -console.log(braces('a{01..03}b')); //=> [ 'a(0[1-3])b' ] -console.log(braces('a{001..300}b')); //=> [ 'a(0{2}[1-9]|0[1-9][0-9]|[12][0-9]{2}|300)b' ] -``` - -### Steps - -Steps, or increments, may be used with ranges: - -```js -console.log(braces.expand('{2..10..2}')); -//=> ['2', '4', '6', '8', '10'] - -console.log(braces('{2..10..2}')); -//=> ['(2|4|6|8|10)'] -``` - -When the [.optimize](#optimize) method is used, or [options.optimize](#optionsoptimize) is set to true, sequences are passed to [to-regex-range](https://github.com/jonschlinkert/to-regex-range) for expansion. - -### Nesting - -Brace patterns may be nested. The results of each expanded string are not sorted, and left to right order is preserved. - -**"Expanded" braces** - -```js -console.log(braces.expand('a{b,c,/{x,y}}/e')); -//=> ['ab/e', 'ac/e', 'a/x/e', 'a/y/e'] - -console.log(braces.expand('a/{x,{1..5},y}/c')); -//=> ['a/x/c', 'a/1/c', 'a/2/c', 'a/3/c', 'a/4/c', 'a/5/c', 'a/y/c'] -``` - -**"Optimized" braces** - -```js -console.log(braces('a{b,c,/{x,y}}/e')); -//=> ['a(b|c|/(x|y))/e'] - -console.log(braces('a/{x,{1..5},y}/c')); -//=> ['a/(x|([1-5])|y)/c'] -``` - -### Escaping - -**Escaping braces** - -A brace pattern will not be expanded or evaluted if _either the opening or closing brace is escaped_: - -```js -console.log(braces.expand('a\\{d,c,b}e')); -//=> ['a{d,c,b}e'] - -console.log(braces.expand('a{d,c,b\\}e')); -//=> ['a{d,c,b}e'] -``` - -**Escaping commas** - -Commas inside braces may also be escaped: - -```js -console.log(braces.expand('a{b\\,c}d')); -//=> ['a{b,c}d'] - -console.log(braces.expand('a{d\\,c,b}e')); -//=> ['ad,ce', 'abe'] -``` - -**Single items** - -Following bash conventions, a brace pattern is also not expanded when it contains a single character: - -```js -console.log(braces.expand('a{b}c')); -//=> ['a{b}c'] -``` - -## Options - -### options.maxLength - -**Type**: `Number` - -**Default**: `65,536` - -**Description**: Limit the length of the input string. Useful when the input string is generated or your application allows users to pass a string, et cetera. - -```js -console.log(braces('a/{b,c}/d', { maxLength: 3 })); //=> throws an error -``` - -### options.expand - -**Type**: `Boolean` - -**Default**: `undefined` - -**Description**: Generate an "expanded" brace pattern (this option is unncessary with the `.expand` method, which does the same thing). - -```js -console.log(braces('a/{b,c}/d', {expand: true})); -//=> [ 'a/b/d', 'a/c/d' ] -``` - -### options.optimize - -**Type**: `Boolean` - -**Default**: `true` - -**Description**: Enabled by default. - -```js -console.log(braces('a/{b,c}/d')); -//=> [ 'a/(b|c)/d' ] -``` - -### options.nodupes - -**Type**: `Boolean` - -**Default**: `true` - -**Description**: Duplicates are removed by default. To keep duplicates, pass `{nodupes: false}` on the options - -### options.rangeLimit - -**Type**: `Number` - -**Default**: `250` - -**Description**: When `braces.expand()` is used, or `options.expand` is true, brace patterns will automatically be [optimized](#optionsoptimize) when the difference between the range minimum and range maximum exceeds the `rangeLimit`. This is to prevent huge ranges from freezing your application. - -You can set this to any number, or change `options.rangeLimit` to `Inifinity` to disable this altogether. - -**Examples** - -```js -// pattern exceeds the "rangeLimit", so it's optimized automatically -console.log(braces.expand('{1..1000}')); -//=> ['([1-9]|[1-9][0-9]{1,2}|1000)'] - -// pattern does not exceed "rangeLimit", so it's NOT optimized -console.log(braces.expand('{1..100}')); -//=> ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100'] -``` - -### options.transform - -**Type**: `Function` - -**Default**: `undefined` - -**Description**: Customize range expansion. - -```js -var range = braces.expand('x{a..e}y', { - transform: function(str) { - return 'foo' + str; - } -}); - -console.log(range); -//=> [ 'xfooay', 'xfooby', 'xfoocy', 'xfoody', 'xfooey' ] -``` - -### options.quantifiers - -**Type**: `Boolean` - -**Default**: `undefined` - -**Description**: In regular expressions, quanitifiers can be used to specify how many times a token can be repeated. For example, `a{1,3}` will match the letter `a` one to three times. - -Unfortunately, regex quantifiers happen to share the same syntax as [Bash lists](#lists) - -The `quantifiers` option tells braces to detect when [regex quantifiers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#quantifiers) are defined in the given pattern, and not to try to expand them as lists. - -**Examples** - -```js -var braces = require('braces'); -console.log(braces('a/b{1,3}/{x,y,z}')); -//=> [ 'a/b(1|3)/(x|y|z)' ] -console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true})); -//=> [ 'a/b{1,3}/(x|y|z)' ] -console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true, expand: true})); -//=> [ 'a/b{1,3}/x', 'a/b{1,3}/y', 'a/b{1,3}/z' ] -``` - -### options.unescape - -**Type**: `Boolean` - -**Default**: `undefined` - -**Description**: Strip backslashes that were used for escaping from the result. - -## What is "brace expansion"? - -Brace expansion is a type of parameter expansion that was made popular by unix shells for generating lists of strings, as well as regex-like matching when used alongside wildcards (globs). - -In addition to "expansion", braces are also used for matching. In other words: - -* [brace expansion](#brace-expansion) is for generating new lists -* [brace matching](#brace-matching) is for filtering existing lists - -
-More about brace expansion (click to expand) - -There are two main types of brace expansion: - -1. **lists**: which are defined using comma-separated values inside curly braces: `{a,b,c}` -2. **sequences**: which are defined using a starting value and an ending value, separated by two dots: `a{1..3}b`. Optionally, a third argument may be passed to define a "step" or increment to use: `a{1..100..10}b`. These are also sometimes referred to as "ranges". - -Here are some example brace patterns to illustrate how they work: - -**Sets** - -``` -{a,b,c} => a b c -{a,b,c}{1,2} => a1 a2 b1 b2 c1 c2 -``` - -**Sequences** - -``` -{1..9} => 1 2 3 4 5 6 7 8 9 -{4..-4} => 4 3 2 1 0 -1 -2 -3 -4 -{1..20..3} => 1 4 7 10 13 16 19 -{a..j} => a b c d e f g h i j -{j..a} => j i h g f e d c b a -{a..z..3} => a d g j m p s v y -``` - -**Combination** - -Sets and sequences can be mixed together or used along with any other strings. - -``` -{a,b,c}{1..3} => a1 a2 a3 b1 b2 b3 c1 c2 c3 -foo/{a,b,c}/bar => foo/a/bar foo/b/bar foo/c/bar -``` - -The fact that braces can be "expanded" from relatively simple patterns makes them ideal for quickly generating test fixtures, file paths, and similar use cases. - -## Brace matching - -In addition to _expansion_, brace patterns are also useful for performing regular-expression-like matching. - -For example, the pattern `foo/{1..3}/bar` would match any of following strings: - -``` -foo/1/bar -foo/2/bar -foo/3/bar -``` - -But not: - -``` -baz/1/qux -baz/2/qux -baz/3/qux -``` - -Braces can also be combined with [glob patterns](https://github.com/jonschlinkert/micromatch) to perform more advanced wildcard matching. For example, the pattern `*/{1..3}/*` would match any of following strings: - -``` -foo/1/bar -foo/2/bar -foo/3/bar -baz/1/qux -baz/2/qux -baz/3/qux -``` - -## Brace matching pitfalls - -Although brace patterns offer a user-friendly way of matching ranges or sets of strings, there are also some major disadvantages and potential risks you should be aware of. - -### tldr - -**"brace bombs"** - -* brace expansion can eat up a huge amount of processing resources -* as brace patterns increase _linearly in size_, the system resources required to expand the pattern increase exponentially -* users can accidentally (or intentially) exhaust your system's resources resulting in the equivalent of a DoS attack (bonus: no programming knowledge is required!) - -For a more detailed explanation with examples, see the [geometric complexity](#geometric-complexity) section. - -### The solution - -Jump to the [performance section](#performance) to see how Braces solves this problem in comparison to other libraries. - -### Geometric complexity - -At minimum, brace patterns with sets limited to two elements have quadradic or `O(n^2)` complexity. But the complexity of the algorithm increases exponentially as the number of sets, _and elements per set_, increases, which is `O(n^c)`. - -For example, the following sets demonstrate quadratic (`O(n^2)`) complexity: - -``` -{1,2}{3,4} => (2X2) => 13 14 23 24 -{1,2}{3,4}{5,6} => (2X2X2) => 135 136 145 146 235 236 245 246 -``` - -But add an element to a set, and we get a n-fold Cartesian product with `O(n^c)` complexity: - -``` -{1,2,3}{4,5,6}{7,8,9} => (3X3X3) => 147 148 149 157 158 159 167 168 169 247 248 - 249 257 258 259 267 268 269 347 348 349 357 - 358 359 367 368 369 -``` - -Now, imagine how this complexity grows given that each element is a n-tuple: - -``` -{1..100}{1..100} => (100X100) => 10,000 elements (38.4 kB) -{1..100}{1..100}{1..100} => (100X100X100) => 1,000,000 elements (5.76 MB) -``` - -Although these examples are clearly contrived, they demonstrate how brace patterns can quickly grow out of control. - -**More information** - -Interested in learning more about brace expansion? - -* [linuxjournal/bash-brace-expansion](http://www.linuxjournal.com/content/bash-brace-expansion) -* [rosettacode/Brace_expansion](https://rosettacode.org/wiki/Brace_expansion) -* [cartesian product](https://en.wikipedia.org/wiki/Cartesian_product) - -
- -## Performance - -Braces is not only screaming fast, it's also more accurate the other brace expansion libraries. - -### Better algorithms - -Fortunately there is a solution to the ["brace bomb" problem](#brace-matching-pitfalls): _don't expand brace patterns into an array when they're used for matching_. - -Instead, convert the pattern into an optimized regular expression. This is easier said than done, and braces is the only library that does this currently. - -**The proof is in the numbers** - -Minimatch gets exponentially slower as patterns increase in complexity, braces does not. The following results were generated using `braces()` and `minimatch.braceExpand()`, respectively. - -| **Pattern** | **braces** | **[minimatch](https://github.com/isaacs/minimatch)** | -| --- | --- | --- | -| `{1..9007199254740991}`[1] | `298 B` (5ms 459μs) | N/A (freezes) | -| `{1..1000000000000000}` | `41 B` (1ms 15μs) | N/A (freezes) | -| `{1..100000000000000}` | `40 B` (890μs) | N/A (freezes) | -| `{1..10000000000000}` | `39 B` (2ms 49μs) | N/A (freezes) | -| `{1..1000000000000}` | `38 B` (608μs) | N/A (freezes) | -| `{1..100000000000}` | `37 B` (397μs) | N/A (freezes) | -| `{1..10000000000}` | `35 B` (983μs) | N/A (freezes) | -| `{1..1000000000}` | `34 B` (798μs) | N/A (freezes) | -| `{1..100000000}` | `33 B` (733μs) | N/A (freezes) | -| `{1..10000000}` | `32 B` (5ms 632μs) | `78.89 MB` (16s 388ms 569μs) | -| `{1..1000000}` | `31 B` (1ms 381μs) | `6.89 MB` (1s 496ms 887μs) | -| `{1..100000}` | `30 B` (950μs) | `588.89 kB` (146ms 921μs) | -| `{1..10000}` | `29 B` (1ms 114μs) | `48.89 kB` (14ms 187μs) | -| `{1..1000}` | `28 B` (760μs) | `3.89 kB` (1ms 453μs) | -| `{1..100}` | `22 B` (345μs) | `291 B` (196μs) | -| `{1..10}` | `10 B` (533μs) | `20 B` (37μs) | -| `{1..3}` | `7 B` (190μs) | `5 B` (27μs) | - -### Faster algorithms - -When you need expansion, braces is still much faster. - -_(the following results were generated using `braces.expand()` and `minimatch.braceExpand()`, respectively)_ - -| **Pattern** | **braces** | **[minimatch](https://github.com/isaacs/minimatch)** | -| --- | --- | --- | -| `{1..10000000}` | `78.89 MB` (2s 698ms 642μs) | `78.89 MB` (18s 601ms 974μs) | -| `{1..1000000}` | `6.89 MB` (458ms 576μs) | `6.89 MB` (1s 491ms 621μs) | -| `{1..100000}` | `588.89 kB` (20ms 728μs) | `588.89 kB` (156ms 919μs) | -| `{1..10000}` | `48.89 kB` (2ms 202μs) | `48.89 kB` (13ms 641μs) | -| `{1..1000}` | `3.89 kB` (1ms 796μs) | `3.89 kB` (1ms 958μs) | -| `{1..100}` | `291 B` (424μs) | `291 B` (211μs) | -| `{1..10}` | `20 B` (487μs) | `20 B` (72μs) | -| `{1..3}` | `5 B` (166μs) | `5 B` (27μs) | - -If you'd like to run these comparisons yourself, see [test/support/generate.js](test/support/generate.js). - -## Benchmarks - -### Running benchmarks - -Install dev dependencies: - -```bash -npm i -d && npm benchmark -``` - -### Latest results - -```bash -Benchmarking: (8 of 8) - · combination-nested - · combination - · escaped - · list-basic - · list-multiple - · no-braces - · sequence-basic - · sequence-multiple - -# benchmark/fixtures/combination-nested.js (52 bytes) - brace-expansion x 4,756 ops/sec ±1.09% (86 runs sampled) - braces x 11,202,303 ops/sec ±1.06% (88 runs sampled) - minimatch x 4,816 ops/sec ±0.99% (87 runs sampled) - - fastest is braces - -# benchmark/fixtures/combination.js (51 bytes) - brace-expansion x 625 ops/sec ±0.87% (87 runs sampled) - braces x 11,031,884 ops/sec ±0.72% (90 runs sampled) - minimatch x 637 ops/sec ±0.84% (88 runs sampled) - - fastest is braces - -# benchmark/fixtures/escaped.js (44 bytes) - brace-expansion x 163,325 ops/sec ±1.05% (87 runs sampled) - braces x 10,655,071 ops/sec ±1.22% (88 runs sampled) - minimatch x 147,495 ops/sec ±0.96% (88 runs sampled) - - fastest is braces - -# benchmark/fixtures/list-basic.js (40 bytes) - brace-expansion x 99,726 ops/sec ±1.07% (83 runs sampled) - braces x 10,596,584 ops/sec ±0.98% (88 runs sampled) - minimatch x 100,069 ops/sec ±1.17% (86 runs sampled) - - fastest is braces - -# benchmark/fixtures/list-multiple.js (52 bytes) - brace-expansion x 34,348 ops/sec ±1.08% (88 runs sampled) - braces x 9,264,131 ops/sec ±1.12% (88 runs sampled) - minimatch x 34,893 ops/sec ±0.87% (87 runs sampled) - - fastest is braces - -# benchmark/fixtures/no-braces.js (48 bytes) - brace-expansion x 275,368 ops/sec ±1.18% (89 runs sampled) - braces x 9,134,677 ops/sec ±0.95% (88 runs sampled) - minimatch x 3,755,954 ops/sec ±1.13% (89 runs sampled) - - fastest is braces - -# benchmark/fixtures/sequence-basic.js (41 bytes) - brace-expansion x 5,492 ops/sec ±1.35% (87 runs sampled) - braces x 8,485,034 ops/sec ±1.28% (89 runs sampled) - minimatch x 5,341 ops/sec ±1.17% (87 runs sampled) - - fastest is braces - -# benchmark/fixtures/sequence-multiple.js (51 bytes) - brace-expansion x 116 ops/sec ±0.77% (77 runs sampled) - braces x 9,445,118 ops/sec ±1.32% (84 runs sampled) - minimatch x 109 ops/sec ±1.16% (76 runs sampled) - - fastest is braces -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [expand-brackets](https://www.npmjs.com/package/expand-brackets): Expand POSIX bracket expressions (character classes) in glob patterns. | [homepage](https://github.com/jonschlinkert/expand-brackets "Expand POSIX bracket expressions (character classes) in glob patterns.") -* [extglob](https://www.npmjs.com/package/extglob): Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob… [more](https://github.com/micromatch/extglob) | [homepage](https://github.com/micromatch/extglob "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.") -* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`") -* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/micromatch/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") -* [nanomatch](https://www.npmjs.com/package/nanomatch): Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash… [more](https://github.com/micromatch/nanomatch) | [homepage](https://github.com/micromatch/nanomatch "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 188 | [jonschlinkert](https://github.com/jonschlinkert) | -| 4 | [doowb](https://github.com/doowb) | -| 1 | [es128](https://github.com/es128) | -| 1 | [eush77](https://github.com/eush77) | -| 1 | [hemanth](https://github.com/hemanth) | - -### Author - -**Jon Schlinkert** - -* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert) -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on February 17, 2018._ - -
-
-
    -
  1. this is the largest safe integer allowed in JavaScript. - -
  2. -
-
\ No newline at end of file diff --git a/node_modules/braces/index.js b/node_modules/braces/index.js deleted file mode 100644 index 048e1c233..000000000 --- a/node_modules/braces/index.js +++ /dev/null @@ -1,318 +0,0 @@ -'use strict'; - -/** - * Module dependencies - */ - -var toRegex = require('to-regex'); -var unique = require('array-unique'); -var extend = require('extend-shallow'); - -/** - * Local dependencies - */ - -var compilers = require('./lib/compilers'); -var parsers = require('./lib/parsers'); -var Braces = require('./lib/braces'); -var utils = require('./lib/utils'); -var MAX_LENGTH = 1024 * 64; -var cache = {}; - -/** - * Convert the given `braces` pattern into a regex-compatible string. By default, only one string is generated for every input string. Set `options.expand` to true to return an array of patterns (similar to Bash or minimatch. Before using `options.expand`, it's recommended that you read the [performance notes](#performance)). - * - * ```js - * var braces = require('braces'); - * console.log(braces('{a,b,c}')); - * //=> ['(a|b|c)'] - * - * console.log(braces('{a,b,c}', {expand: true})); - * //=> ['a', 'b', 'c'] - * ``` - * @param {String} `str` - * @param {Object} `options` - * @return {String} - * @api public - */ - -function braces(pattern, options) { - var key = utils.createKey(String(pattern), options); - var arr = []; - - var disabled = options && options.cache === false; - if (!disabled && cache.hasOwnProperty(key)) { - return cache[key]; - } - - if (Array.isArray(pattern)) { - for (var i = 0; i < pattern.length; i++) { - arr.push.apply(arr, braces.create(pattern[i], options)); - } - } else { - arr = braces.create(pattern, options); - } - - if (options && options.nodupes === true) { - arr = unique(arr); - } - - if (!disabled) { - cache[key] = arr; - } - return arr; -} - -/** - * Expands a brace pattern into an array. This method is called by the main [braces](#braces) function when `options.expand` is true. Before using this method it's recommended that you read the [performance notes](#performance)) and advantages of using [.optimize](#optimize) instead. - * - * ```js - * var braces = require('braces'); - * console.log(braces.expand('a/{b,c}/d')); - * //=> ['a/b/d', 'a/c/d']; - * ``` - * @param {String} `pattern` Brace pattern - * @param {Object} `options` - * @return {Array} Returns an array of expanded values. - * @api public - */ - -braces.expand = function(pattern, options) { - return braces.create(pattern, extend({}, options, {expand: true})); -}; - -/** - * Expands a brace pattern into a regex-compatible, optimized string. This method is called by the main [braces](#braces) function by default. - * - * ```js - * var braces = require('braces'); - * console.log(braces.expand('a/{b,c}/d')); - * //=> ['a/(b|c)/d'] - * ``` - * @param {String} `pattern` Brace pattern - * @param {Object} `options` - * @return {Array} Returns an array of expanded values. - * @api public - */ - -braces.optimize = function(pattern, options) { - return braces.create(pattern, options); -}; - -/** - * Processes a brace pattern and returns either an expanded array (if `options.expand` is true), a highly optimized regex-compatible string. This method is called by the main [braces](#braces) function. - * - * ```js - * var braces = require('braces'); - * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}')) - * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)' - * ``` - * @param {String} `pattern` Brace pattern - * @param {Object} `options` - * @return {Array} Returns an array of expanded values. - * @api public - */ - -braces.create = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } - - var maxLength = (options && options.maxLength) || MAX_LENGTH; - if (pattern.length >= maxLength) { - throw new Error('expected pattern to be less than ' + maxLength + ' characters'); - } - - function create() { - if (pattern === '' || pattern.length < 3) { - return [pattern]; - } - - if (utils.isEmptySets(pattern)) { - return []; - } - - if (utils.isQuotedString(pattern)) { - return [pattern.slice(1, -1)]; - } - - var proto = new Braces(options); - var result = !options || options.expand !== true - ? proto.optimize(pattern, options) - : proto.expand(pattern, options); - - // get the generated pattern(s) - var arr = result.output; - - // filter out empty strings if specified - if (options && options.noempty === true) { - arr = arr.filter(Boolean); - } - - // filter out duplicates if specified - if (options && options.nodupes === true) { - arr = unique(arr); - } - - Object.defineProperty(arr, 'result', { - enumerable: false, - value: result - }); - - return arr; - } - - return memoize('create', pattern, options, create); -}; - -/** - * Create a regular expression from the given string `pattern`. - * - * ```js - * var braces = require('braces'); - * - * console.log(braces.makeRe('id-{200..300}')); - * //=> /^(?:id-(20[0-9]|2[1-9][0-9]|300))$/ - * ``` - * @param {String} `pattern` The pattern to convert to regex. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ - -braces.makeRe = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } - - var maxLength = (options && options.maxLength) || MAX_LENGTH; - if (pattern.length >= maxLength) { - throw new Error('expected pattern to be less than ' + maxLength + ' characters'); - } - - function makeRe() { - var arr = braces(pattern, options); - var opts = extend({strictErrors: false}, options); - return toRegex(arr, opts); - } - - return memoize('makeRe', pattern, options, makeRe); -}; - -/** - * Parse the given `str` with the given `options`. - * - * ```js - * var braces = require('braces'); - * var ast = braces.parse('a/{b,c}/d'); - * console.log(ast); - * // { type: 'root', - * // errors: [], - * // input: 'a/{b,c}/d', - * // nodes: - * // [ { type: 'bos', val: '' }, - * // { type: 'text', val: 'a/' }, - * // { type: 'brace', - * // nodes: - * // [ { type: 'brace.open', val: '{' }, - * // { type: 'text', val: 'b,c' }, - * // { type: 'brace.close', val: '}' } ] }, - * // { type: 'text', val: '/d' }, - * // { type: 'eos', val: '' } ] } - * ``` - * @param {String} `pattern` Brace pattern to parse - * @param {Object} `options` - * @return {Object} Returns an AST - * @api public - */ - -braces.parse = function(pattern, options) { - var proto = new Braces(options); - return proto.parse(pattern, options); -}; - -/** - * Compile the given `ast` or string with the given `options`. - * - * ```js - * var braces = require('braces'); - * var ast = braces.parse('a/{b,c}/d'); - * console.log(braces.compile(ast)); - * // { options: { source: 'string' }, - * // state: {}, - * // compilers: - * // { eos: [Function], - * // noop: [Function], - * // bos: [Function], - * // brace: [Function], - * // 'brace.open': [Function], - * // text: [Function], - * // 'brace.close': [Function] }, - * // output: [ 'a/(b|c)/d' ], - * // ast: - * // { ... }, - * // parsingErrors: [] } - * ``` - * @param {Object|String} `ast` AST from [.parse](#parse). If a string is passed it will be parsed first. - * @param {Object} `options` - * @return {Object} Returns an object that has an `output` property with the compiled string. - * @api public - */ - -braces.compile = function(ast, options) { - var proto = new Braces(options); - return proto.compile(ast, options); -}; - -/** - * Clear the regex cache. - * - * ```js - * braces.clearCache(); - * ``` - * @api public - */ - -braces.clearCache = function() { - cache = braces.cache = {}; -}; - -/** - * Memoize a generated regex or function. A unique key is generated - * from the method name, pattern, and user-defined options. Set - * options.memoize to false to disable. - */ - -function memoize(type, pattern, options, fn) { - var key = utils.createKey(type + ':' + pattern, options); - var disabled = options && options.cache === false; - if (disabled) { - braces.clearCache(); - return fn(pattern, options); - } - - if (cache.hasOwnProperty(key)) { - return cache[key]; - } - - var res = fn(pattern, options); - cache[key] = res; - return res; -} - -/** - * Expose `Braces` constructor and methods - * @type {Function} - */ - -braces.Braces = Braces; -braces.compilers = compilers; -braces.parsers = parsers; -braces.cache = cache; - -/** - * Expose `braces` - * @type {Function} - */ - -module.exports = braces; diff --git a/node_modules/braces/lib/braces.js b/node_modules/braces/lib/braces.js deleted file mode 100644 index baf6bf1bc..000000000 --- a/node_modules/braces/lib/braces.js +++ /dev/null @@ -1,104 +0,0 @@ -'use strict'; - -var extend = require('extend-shallow'); -var Snapdragon = require('snapdragon'); -var compilers = require('./compilers'); -var parsers = require('./parsers'); -var utils = require('./utils'); - -/** - * Customize Snapdragon parser and renderer - */ - -function Braces(options) { - this.options = extend({}, options); -} - -/** - * Initialize braces - */ - -Braces.prototype.init = function(options) { - if (this.isInitialized) return; - this.isInitialized = true; - var opts = utils.createOptions({}, this.options, options); - this.snapdragon = this.options.snapdragon || new Snapdragon(opts); - this.compiler = this.snapdragon.compiler; - this.parser = this.snapdragon.parser; - - compilers(this.snapdragon, opts); - parsers(this.snapdragon, opts); - - /** - * Call Snapdragon `.parse` method. When AST is returned, we check to - * see if any unclosed braces are left on the stack and, if so, we iterate - * over the stack and correct the AST so that compilers are called in the correct - * order and unbalance braces are properly escaped. - */ - - utils.define(this.snapdragon, 'parse', function(pattern, options) { - var parsed = Snapdragon.prototype.parse.apply(this, arguments); - this.parser.ast.input = pattern; - - var stack = this.parser.stack; - while (stack.length) { - addParent({type: 'brace.close', val: ''}, stack.pop()); - } - - function addParent(node, parent) { - utils.define(node, 'parent', parent); - parent.nodes.push(node); - } - - // add non-enumerable parser reference - utils.define(parsed, 'parser', this.parser); - return parsed; - }); -}; - -/** - * Decorate `.parse` method - */ - -Braces.prototype.parse = function(ast, options) { - if (ast && typeof ast === 'object' && ast.nodes) return ast; - this.init(options); - return this.snapdragon.parse(ast, options); -}; - -/** - * Decorate `.compile` method - */ - -Braces.prototype.compile = function(ast, options) { - if (typeof ast === 'string') { - ast = this.parse(ast, options); - } else { - this.init(options); - } - return this.snapdragon.compile(ast, options); -}; - -/** - * Expand - */ - -Braces.prototype.expand = function(pattern) { - var ast = this.parse(pattern, {expand: true}); - return this.compile(ast, {expand: true}); -}; - -/** - * Optimize - */ - -Braces.prototype.optimize = function(pattern) { - var ast = this.parse(pattern, {optimize: true}); - return this.compile(ast, {optimize: true}); -}; - -/** - * Expose `Braces` - */ - -module.exports = Braces; diff --git a/node_modules/braces/lib/compilers.js b/node_modules/braces/lib/compilers.js deleted file mode 100644 index a3b820e41..000000000 --- a/node_modules/braces/lib/compilers.js +++ /dev/null @@ -1,282 +0,0 @@ -'use strict'; - -var utils = require('./utils'); - -module.exports = function(braces, options) { - braces.compiler - - /** - * bos - */ - - .set('bos', function() { - if (this.output) return; - this.ast.queue = isEscaped(this.ast) ? [this.ast.val] : []; - this.ast.count = 1; - }) - - /** - * Square brackets - */ - - .set('bracket', function(node) { - var close = node.close; - var open = !node.escaped ? '[' : '\\['; - var negated = node.negated; - var inner = node.inner; - - inner = inner.replace(/\\(?=[\\\w]|$)/g, '\\\\'); - if (inner === ']-') { - inner = '\\]\\-'; - } - - if (negated && inner.indexOf('.') === -1) { - inner += '.'; - } - if (negated && inner.indexOf('/') === -1) { - inner += '/'; - } - - var val = open + negated + inner + close; - var queue = node.parent.queue; - var last = utils.arrayify(queue.pop()); - - queue.push(utils.join(last, val)); - queue.push.apply(queue, []); - }) - - /** - * Brace - */ - - .set('brace', function(node) { - node.queue = isEscaped(node) ? [node.val] : []; - node.count = 1; - return this.mapVisit(node.nodes); - }) - - /** - * Open - */ - - .set('brace.open', function(node) { - node.parent.open = node.val; - }) - - /** - * Inner - */ - - .set('text', function(node) { - var queue = node.parent.queue; - var escaped = node.escaped; - var segs = [node.val]; - - if (node.optimize === false) { - options = utils.extend({}, options, {optimize: false}); - } - - if (node.multiplier > 1) { - node.parent.count *= node.multiplier; - } - - if (options.quantifiers === true && utils.isQuantifier(node.val)) { - escaped = true; - - } else if (node.val.length > 1) { - if (isType(node.parent, 'brace') && !isEscaped(node)) { - var expanded = utils.expand(node.val, options); - segs = expanded.segs; - - if (expanded.isOptimized) { - node.parent.isOptimized = true; - } - - // if nothing was expanded, we probably have a literal brace - if (!segs.length) { - var val = (expanded.val || node.val); - if (options.unescape !== false) { - // unescape unexpanded brace sequence/set separators - val = val.replace(/\\([,.])/g, '$1'); - // strip quotes - val = val.replace(/["'`]/g, ''); - } - - segs = [val]; - escaped = true; - } - } - - } else if (node.val === ',') { - if (options.expand) { - node.parent.queue.push(['']); - segs = ['']; - } else { - segs = ['|']; - } - } else { - escaped = true; - } - - if (escaped && isType(node.parent, 'brace')) { - if (node.parent.nodes.length <= 4 && node.parent.count === 1) { - node.parent.escaped = true; - } else if (node.parent.length <= 3) { - node.parent.escaped = true; - } - } - - if (!hasQueue(node.parent)) { - node.parent.queue = segs; - return; - } - - var last = utils.arrayify(queue.pop()); - if (node.parent.count > 1 && options.expand) { - last = multiply(last, node.parent.count); - node.parent.count = 1; - } - - queue.push(utils.join(utils.flatten(last), segs.shift())); - queue.push.apply(queue, segs); - }) - - /** - * Close - */ - - .set('brace.close', function(node) { - var queue = node.parent.queue; - var prev = node.parent.parent; - var last = prev.queue.pop(); - var open = node.parent.open; - var close = node.val; - - if (open && close && isOptimized(node, options)) { - open = '('; - close = ')'; - } - - // if a close brace exists, and the previous segment is one character - // don't wrap the result in braces or parens - var ele = utils.last(queue); - if (node.parent.count > 1 && options.expand) { - ele = multiply(queue.pop(), node.parent.count); - node.parent.count = 1; - queue.push(ele); - } - - if (close && typeof ele === 'string' && ele.length === 1) { - open = ''; - close = ''; - } - - if ((isLiteralBrace(node, options) || noInner(node)) && !node.parent.hasEmpty) { - queue.push(utils.join(open, queue.pop() || '')); - queue = utils.flatten(utils.join(queue, close)); - } - - if (typeof last === 'undefined') { - prev.queue = [queue]; - } else { - prev.queue.push(utils.flatten(utils.join(last, queue))); - } - }) - - /** - * eos - */ - - .set('eos', function(node) { - if (this.input) return; - - if (options.optimize !== false) { - this.output = utils.last(utils.flatten(this.ast.queue)); - } else if (Array.isArray(utils.last(this.ast.queue))) { - this.output = utils.flatten(this.ast.queue.pop()); - } else { - this.output = utils.flatten(this.ast.queue); - } - - if (node.parent.count > 1 && options.expand) { - this.output = multiply(this.output, node.parent.count); - } - - this.output = utils.arrayify(this.output); - this.ast.queue = []; - }); - -}; - -/** - * Multiply the segments in the current brace level - */ - -function multiply(queue, n, options) { - return utils.flatten(utils.repeat(utils.arrayify(queue), n)); -} - -/** - * Return true if `node` is escaped - */ - -function isEscaped(node) { - return node.escaped === true; -} - -/** - * Returns true if regex parens should be used for sets. If the parent `type` - * is not `brace`, then we're on a root node, which means we should never - * expand segments and open/close braces should be `{}` (since this indicates - * a brace is missing from the set) - */ - -function isOptimized(node, options) { - if (node.parent.isOptimized) return true; - return isType(node.parent, 'brace') - && !isEscaped(node.parent) - && options.expand !== true; -} - -/** - * Returns true if the value in `node` should be wrapped in a literal brace. - * @return {Boolean} - */ - -function isLiteralBrace(node, options) { - return isEscaped(node.parent) || options.optimize !== false; -} - -/** - * Returns true if the given `node` does not have an inner value. - * @return {Boolean} - */ - -function noInner(node, type) { - if (node.parent.queue.length === 1) { - return true; - } - var nodes = node.parent.nodes; - return nodes.length === 3 - && isType(nodes[0], 'brace.open') - && !isType(nodes[1], 'text') - && isType(nodes[2], 'brace.close'); -} - -/** - * Returns true if the given `node` is the given `type` - * @return {Boolean} - */ - -function isType(node, type) { - return typeof node !== 'undefined' && node.type === type; -} - -/** - * Returns true if the given `node` has a non-empty queue. - * @return {Boolean} - */ - -function hasQueue(node) { - return Array.isArray(node.queue) && node.queue.length; -} diff --git a/node_modules/braces/lib/parsers.js b/node_modules/braces/lib/parsers.js deleted file mode 100644 index 8bf3e92b5..000000000 --- a/node_modules/braces/lib/parsers.js +++ /dev/null @@ -1,360 +0,0 @@ -'use strict'; - -var Node = require('snapdragon-node'); -var utils = require('./utils'); - -/** - * Braces parsers - */ - -module.exports = function(braces, options) { - braces.parser - .set('bos', function() { - if (!this.parsed) { - this.ast = this.nodes[0] = new Node(this.ast); - } - }) - - /** - * Character parsers - */ - - .set('escape', function() { - var pos = this.position(); - var m = this.match(/^(?:\\(.)|\$\{)/); - if (!m) return; - - var prev = this.prev(); - var last = utils.last(prev.nodes); - - var node = pos(new Node({ - type: 'text', - multiplier: 1, - val: m[0] - })); - - if (node.val === '\\\\') { - return node; - } - - if (node.val === '${') { - var str = this.input; - var idx = -1; - var ch; - - while ((ch = str[++idx])) { - this.consume(1); - node.val += ch; - if (ch === '\\') { - node.val += str[++idx]; - continue; - } - if (ch === '}') { - break; - } - } - } - - if (this.options.unescape !== false) { - node.val = node.val.replace(/\\([{}])/g, '$1'); - } - - if (last.val === '"' && this.input.charAt(0) === '"') { - last.val = node.val; - this.consume(1); - return; - } - - return concatNodes.call(this, pos, node, prev, options); - }) - - /** - * Brackets: "[...]" (basic, this is overridden by - * other parsers in more advanced implementations) - */ - - .set('bracket', function() { - var isInside = this.isInside('brace'); - var pos = this.position(); - var m = this.match(/^(?:\[([!^]?)([^\]]{2,}|\]-)(\]|[^*+?]+)|\[)/); - if (!m) return; - - var prev = this.prev(); - var val = m[0]; - var negated = m[1] ? '^' : ''; - var inner = m[2] || ''; - var close = m[3] || ''; - - if (isInside && prev.type === 'brace') { - prev.text = prev.text || ''; - prev.text += val; - } - - var esc = this.input.slice(0, 2); - if (inner === '' && esc === '\\]') { - inner += esc; - this.consume(2); - - var str = this.input; - var idx = -1; - var ch; - - while ((ch = str[++idx])) { - this.consume(1); - if (ch === ']') { - close = ch; - break; - } - inner += ch; - } - } - - return pos(new Node({ - type: 'bracket', - val: val, - escaped: close !== ']', - negated: negated, - inner: inner, - close: close - })); - }) - - /** - * Empty braces (we capture these early to - * speed up processing in the compiler) - */ - - .set('multiplier', function() { - var isInside = this.isInside('brace'); - var pos = this.position(); - var m = this.match(/^\{((?:,|\{,+\})+)\}/); - if (!m) return; - - this.multiplier = true; - var prev = this.prev(); - var val = m[0]; - - if (isInside && prev.type === 'brace') { - prev.text = prev.text || ''; - prev.text += val; - } - - var node = pos(new Node({ - type: 'text', - multiplier: 1, - match: m, - val: val - })); - - return concatNodes.call(this, pos, node, prev, options); - }) - - /** - * Open - */ - - .set('brace.open', function() { - var pos = this.position(); - var m = this.match(/^\{(?!(?:[^\\}]?|,+)\})/); - if (!m) return; - - var prev = this.prev(); - var last = utils.last(prev.nodes); - - // if the last parsed character was an extglob character - // we need to _not optimize_ the brace pattern because - // it might be mistaken for an extglob by a downstream parser - if (last && last.val && isExtglobChar(last.val.slice(-1))) { - last.optimize = false; - } - - var open = pos(new Node({ - type: 'brace.open', - val: m[0] - })); - - var node = pos(new Node({ - type: 'brace', - nodes: [] - })); - - node.push(open); - prev.push(node); - this.push('brace', node); - }) - - /** - * Close - */ - - .set('brace.close', function() { - var pos = this.position(); - var m = this.match(/^\}/); - if (!m || !m[0]) return; - - var brace = this.pop('brace'); - var node = pos(new Node({ - type: 'brace.close', - val: m[0] - })); - - if (!this.isType(brace, 'brace')) { - if (this.options.strict) { - throw new Error('missing opening "{"'); - } - node.type = 'text'; - node.multiplier = 0; - node.escaped = true; - return node; - } - - var prev = this.prev(); - var last = utils.last(prev.nodes); - if (last.text) { - var lastNode = utils.last(last.nodes); - if (lastNode.val === ')' && /[!@*?+]\(/.test(last.text)) { - var open = last.nodes[0]; - var text = last.nodes[1]; - if (open.type === 'brace.open' && text && text.type === 'text') { - text.optimize = false; - } - } - } - - if (brace.nodes.length > 2) { - var first = brace.nodes[1]; - if (first.type === 'text' && first.val === ',') { - brace.nodes.splice(1, 1); - brace.nodes.push(first); - } - } - - brace.push(node); - }) - - /** - * Capture boundary characters - */ - - .set('boundary', function() { - var pos = this.position(); - var m = this.match(/^[$^](?!\{)/); - if (!m) return; - return pos(new Node({ - type: 'text', - val: m[0] - })); - }) - - /** - * One or zero, non-comma characters wrapped in braces - */ - - .set('nobrace', function() { - var isInside = this.isInside('brace'); - var pos = this.position(); - var m = this.match(/^\{[^,]?\}/); - if (!m) return; - - var prev = this.prev(); - var val = m[0]; - - if (isInside && prev.type === 'brace') { - prev.text = prev.text || ''; - prev.text += val; - } - - return pos(new Node({ - type: 'text', - multiplier: 0, - val: val - })); - }) - - /** - * Text - */ - - .set('text', function() { - var isInside = this.isInside('brace'); - var pos = this.position(); - var m = this.match(/^((?!\\)[^${}[\]])+/); - if (!m) return; - - var prev = this.prev(); - var val = m[0]; - - if (isInside && prev.type === 'brace') { - prev.text = prev.text || ''; - prev.text += val; - } - - var node = pos(new Node({ - type: 'text', - multiplier: 1, - val: val - })); - - return concatNodes.call(this, pos, node, prev, options); - }); -}; - -/** - * Returns true if the character is an extglob character. - */ - -function isExtglobChar(ch) { - return ch === '!' || ch === '@' || ch === '*' || ch === '?' || ch === '+'; -} - -/** - * Combine text nodes, and calculate empty sets (`{,,}`) - * @param {Function} `pos` Function to calculate node position - * @param {Object} `node` AST node - * @return {Object} - */ - -function concatNodes(pos, node, parent, options) { - node.orig = node.val; - var prev = this.prev(); - var last = utils.last(prev.nodes); - var isEscaped = false; - - if (node.val.length > 1) { - var a = node.val.charAt(0); - var b = node.val.slice(-1); - - isEscaped = (a === '"' && b === '"') - || (a === "'" && b === "'") - || (a === '`' && b === '`'); - } - - if (isEscaped && options.unescape !== false) { - node.val = node.val.slice(1, node.val.length - 1); - node.escaped = true; - } - - if (node.match) { - var match = node.match[1]; - if (!match || match.indexOf('}') === -1) { - match = node.match[0]; - } - - // replace each set with a single "," - var val = match.replace(/\{/g, ',').replace(/\}/g, ''); - node.multiplier *= val.length; - node.val = ''; - } - - var simpleText = last.type === 'text' - && last.multiplier === 1 - && node.multiplier === 1 - && node.val; - - if (simpleText) { - last.val += node.val; - return; - } - - prev.push(node); -} diff --git a/node_modules/braces/lib/utils.js b/node_modules/braces/lib/utils.js deleted file mode 100644 index 471667171..000000000 --- a/node_modules/braces/lib/utils.js +++ /dev/null @@ -1,343 +0,0 @@ -'use strict'; - -var splitString = require('split-string'); -var utils = module.exports; - -/** - * Module dependencies - */ - -utils.extend = require('extend-shallow'); -utils.flatten = require('arr-flatten'); -utils.isObject = require('isobject'); -utils.fillRange = require('fill-range'); -utils.repeat = require('repeat-element'); -utils.unique = require('array-unique'); - -utils.define = function(obj, key, val) { - Object.defineProperty(obj, key, { - writable: true, - configurable: true, - enumerable: false, - value: val - }); -}; - -/** - * Returns true if the given string contains only empty brace sets. - */ - -utils.isEmptySets = function(str) { - return /^(?:\{,\})+$/.test(str); -}; - -/** - * Returns true if the given string contains only empty brace sets. - */ - -utils.isQuotedString = function(str) { - var open = str.charAt(0); - if (open === '\'' || open === '"' || open === '`') { - return str.slice(-1) === open; - } - return false; -}; - -/** - * Create the key to use for memoization. The unique key is generated - * by iterating over the options and concatenating key-value pairs - * to the pattern string. - */ - -utils.createKey = function(pattern, options) { - var id = pattern; - if (typeof options === 'undefined') { - return id; - } - var keys = Object.keys(options); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - id += ';' + key + '=' + String(options[key]); - } - return id; -}; - -/** - * Normalize options - */ - -utils.createOptions = function(options) { - var opts = utils.extend.apply(null, arguments); - if (typeof opts.expand === 'boolean') { - opts.optimize = !opts.expand; - } - if (typeof opts.optimize === 'boolean') { - opts.expand = !opts.optimize; - } - if (opts.optimize === true) { - opts.makeRe = true; - } - return opts; -}; - -/** - * Join patterns in `a` to patterns in `b` - */ - -utils.join = function(a, b, options) { - options = options || {}; - a = utils.arrayify(a); - b = utils.arrayify(b); - - if (!a.length) return b; - if (!b.length) return a; - - var len = a.length; - var idx = -1; - var arr = []; - - while (++idx < len) { - var val = a[idx]; - if (Array.isArray(val)) { - for (var i = 0; i < val.length; i++) { - val[i] = utils.join(val[i], b, options); - } - arr.push(val); - continue; - } - - for (var j = 0; j < b.length; j++) { - var bval = b[j]; - - if (Array.isArray(bval)) { - arr.push(utils.join(val, bval, options)); - } else { - arr.push(val + bval); - } - } - } - return arr; -}; - -/** - * Split the given string on `,` if not escaped. - */ - -utils.split = function(str, options) { - var opts = utils.extend({sep: ','}, options); - if (typeof opts.keepQuotes !== 'boolean') { - opts.keepQuotes = true; - } - if (opts.unescape === false) { - opts.keepEscaping = true; - } - return splitString(str, opts, utils.escapeBrackets(opts)); -}; - -/** - * Expand ranges or sets in the given `pattern`. - * - * @param {String} `str` - * @param {Object} `options` - * @return {Object} - */ - -utils.expand = function(str, options) { - var opts = utils.extend({rangeLimit: 10000}, options); - var segs = utils.split(str, opts); - var tok = { segs: segs }; - - if (utils.isQuotedString(str)) { - return tok; - } - - if (opts.rangeLimit === true) { - opts.rangeLimit = 10000; - } - - if (segs.length > 1) { - if (opts.optimize === false) { - tok.val = segs[0]; - return tok; - } - - tok.segs = utils.stringifyArray(tok.segs); - } else if (segs.length === 1) { - var arr = str.split('..'); - - if (arr.length === 1) { - tok.val = tok.segs[tok.segs.length - 1] || tok.val || str; - tok.segs = []; - return tok; - } - - if (arr.length === 2 && arr[0] === arr[1]) { - tok.escaped = true; - tok.val = arr[0]; - tok.segs = []; - return tok; - } - - if (arr.length > 1) { - if (opts.optimize !== false) { - opts.optimize = true; - delete opts.expand; - } - - if (opts.optimize !== true) { - var min = Math.min(arr[0], arr[1]); - var max = Math.max(arr[0], arr[1]); - var step = arr[2] || 1; - - if (opts.rangeLimit !== false && ((max - min) / step >= opts.rangeLimit)) { - throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.'); - } - } - - arr.push(opts); - tok.segs = utils.fillRange.apply(null, arr); - - if (!tok.segs.length) { - tok.escaped = true; - tok.val = str; - return tok; - } - - if (opts.optimize === true) { - tok.segs = utils.stringifyArray(tok.segs); - } - - if (tok.segs === '') { - tok.val = str; - } else { - tok.val = tok.segs[0]; - } - return tok; - } - } else { - tok.val = str; - } - return tok; -}; - -/** - * Ensure commas inside brackets and parens are not split. - * @param {Object} `tok` Token from the `split-string` module - * @return {undefined} - */ - -utils.escapeBrackets = function(options) { - return function(tok) { - if (tok.escaped && tok.val === 'b') { - tok.val = '\\b'; - return; - } - - if (tok.val !== '(' && tok.val !== '[') return; - var opts = utils.extend({}, options); - var brackets = []; - var parens = []; - var stack = []; - var val = tok.val; - var str = tok.str; - var i = tok.idx - 1; - - while (++i < str.length) { - var ch = str[i]; - - if (ch === '\\') { - val += (opts.keepEscaping === false ? '' : ch) + str[++i]; - continue; - } - - if (ch === '(') { - parens.push(ch); - stack.push(ch); - } - - if (ch === '[') { - brackets.push(ch); - stack.push(ch); - } - - if (ch === ')') { - parens.pop(); - stack.pop(); - if (!stack.length) { - val += ch; - break; - } - } - - if (ch === ']') { - brackets.pop(); - stack.pop(); - if (!stack.length) { - val += ch; - break; - } - } - val += ch; - } - - tok.split = false; - tok.val = val.slice(1); - tok.idx = i; - }; -}; - -/** - * Returns true if the given string looks like a regex quantifier - * @return {Boolean} - */ - -utils.isQuantifier = function(str) { - return /^(?:[0-9]?,[0-9]|[0-9],)$/.test(str); -}; - -/** - * Cast `val` to an array. - * @param {*} `val` - */ - -utils.stringifyArray = function(arr) { - return [utils.arrayify(arr).join('|')]; -}; - -/** - * Cast `val` to an array. - * @param {*} `val` - */ - -utils.arrayify = function(arr) { - if (typeof arr === 'undefined') { - return []; - } - if (typeof arr === 'string') { - return [arr]; - } - return arr; -}; - -/** - * Returns true if the given `str` is a non-empty string - * @return {Boolean} - */ - -utils.isString = function(str) { - return str != null && typeof str === 'string'; -}; - -/** - * Get the last element from `array` - * @param {Array} `array` - * @return {*} - */ - -utils.last = function(arr, n) { - return arr[arr.length - (n || 1)]; -}; - -utils.escapeRegex = function(str) { - return str.replace(/\\?([!^*?()[\]{}+?/])/g, '\\$1'); -}; diff --git a/node_modules/braces/node_modules/extend-shallow/LICENSE b/node_modules/braces/node_modules/extend-shallow/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/braces/node_modules/extend-shallow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/braces/node_modules/extend-shallow/README.md b/node_modules/braces/node_modules/extend-shallow/README.md deleted file mode 100644 index cdc45d4ff..000000000 --- a/node_modules/braces/node_modules/extend-shallow/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# extend-shallow [![NPM version](https://badge.fury.io/js/extend-shallow.svg)](http://badge.fury.io/js/extend-shallow) [![Build Status](https://travis-ci.org/jonschlinkert/extend-shallow.svg)](https://travis-ci.org/jonschlinkert/extend-shallow) - -> Extend an object with the properties of additional objects. node.js/javascript util. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i extend-shallow --save -``` - -## Usage - -```js -var extend = require('extend-shallow'); - -extend({a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -Pass an empty object to shallow clone: - -```js -var obj = {}; -extend(obj, {a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -## Related - -* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. -* [for-own](https://github.com/jonschlinkert/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) -* [for-in](https://github.com/jonschlinkert/for-in): Iterate over the own and inherited enumerable properties of an objecte, and return an object… [more](https://github.com/jonschlinkert/for-in) -* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. -* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. -* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 29, 2015._ \ No newline at end of file diff --git a/node_modules/braces/node_modules/extend-shallow/index.js b/node_modules/braces/node_modules/extend-shallow/index.js deleted file mode 100644 index 92a067fcc..000000000 --- a/node_modules/braces/node_modules/extend-shallow/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var isObject = require('is-extendable'); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} diff --git a/node_modules/braces/node_modules/extend-shallow/package.json b/node_modules/braces/node_modules/extend-shallow/package.json deleted file mode 100644 index c3fe3fe42..000000000 --- a/node_modules/braces/node_modules/extend-shallow/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "extend-shallow@2.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "extend-shallow@2.0.1", - "_id": "extend-shallow@2.0.1", - "_inBundle": false, - "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "_location": "/braces/extend-shallow", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "extend-shallow@2.0.1", - "name": "extend-shallow", - "escapedName": "extend-shallow", - "rawSpec": "2.0.1", - "saveSpec": null, - "fetchSpec": "2.0.1" - }, - "_requiredBy": [ - "/braces" - ], - "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "_spec": "2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/extend-shallow/issues" - }, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "description": "Extend an object with the properties of additional objects. node.js/javascript util.", - "devDependencies": { - "array-slice": "^0.2.3", - "benchmarked": "^0.1.4", - "chalk": "^1.0.0", - "for-own": "^0.1.3", - "glob": "^5.0.12", - "is-plain-object": "^2.0.1", - "kind-of": "^2.0.0", - "minimist": "^1.1.1", - "mocha": "^2.2.5", - "should": "^7.0.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/extend-shallow", - "keywords": [ - "assign", - "extend", - "javascript", - "js", - "keys", - "merge", - "obj", - "object", - "prop", - "properties", - "property", - "props", - "shallow", - "util", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "extend-shallow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/extend-shallow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.1" -} diff --git a/node_modules/braces/package.json b/node_modules/braces/package.json deleted file mode 100644 index d3eb139a3..000000000 --- a/node_modules/braces/package.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "_args": [ - [ - "braces@2.3.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "braces@2.3.2", - "_id": "braces@2.3.2", - "_inBundle": false, - "_integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "_location": "/braces", - "_phantomChildren": { - "is-extendable": "0.1.1" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "braces@2.3.2", - "name": "braces", - "escapedName": "braces", - "rawSpec": "2.3.2", - "saveSpec": null, - "fetchSpec": "2.3.2" - }, - "_requiredBy": [ - "/micromatch" - ], - "_resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "_spec": "2.3.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/micromatch/braces/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Elan Shanker", - "url": "https://github.com/es128" - }, - { - "name": "Eugene Sharygin", - "url": "https://github.com/eush77" - }, - { - "name": "hemanth.hm", - "url": "http://h3manth.com" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - } - ], - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "description": "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.", - "devDependencies": { - "ansi-cyan": "^0.1.1", - "benchmarked": "^2.0.0", - "brace-expansion": "^1.1.8", - "cross-spawn": "^5.1.0", - "gulp": "^3.9.1", - "gulp-eslint": "^4.0.0", - "gulp-format-md": "^1.0.0", - "gulp-istanbul": "^1.1.2", - "gulp-mocha": "^3.0.1", - "gulp-unused": "^0.2.1", - "is-windows": "^1.0.1", - "minimatch": "^3.0.4", - "mocha": "^3.2.0", - "noncharacters": "^1.1.0", - "text-table": "^0.2.0", - "time-diff": "^0.3.1", - "yargs-parser": "^8.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "lib" - ], - "homepage": "https://github.com/micromatch/braces", - "keywords": [ - "alpha", - "alphabetical", - "bash", - "brace", - "braces", - "expand", - "expansion", - "filepath", - "fill", - "fs", - "glob", - "globbing", - "letter", - "match", - "matches", - "matching", - "number", - "numerical", - "path", - "range", - "ranges", - "sh" - ], - "license": "MIT", - "main": "index.js", - "name": "braces", - "repository": { - "type": "git", - "url": "git+https://github.com/micromatch/braces.git" - }, - "scripts": { - "benchmark": "node benchmark", - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "lint": { - "reflinks": true - }, - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "expand-brackets", - "extglob", - "fill-range", - "micromatch", - "nanomatch" - ] - } - }, - "version": "2.3.2" -} diff --git a/node_modules/cache-base/LICENSE b/node_modules/cache-base/LICENSE deleted file mode 100644 index 943e71d05..000000000 --- a/node_modules/cache-base/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/cache-base/README.md b/node_modules/cache-base/README.md deleted file mode 100644 index 62c6ffeb6..000000000 --- a/node_modules/cache-base/README.md +++ /dev/null @@ -1,291 +0,0 @@ -# cache-base [![NPM version](https://img.shields.io/npm/v/cache-base.svg?style=flat)](https://www.npmjs.com/package/cache-base) [![NPM monthly downloads](https://img.shields.io/npm/dm/cache-base.svg?style=flat)](https://npmjs.org/package/cache-base) [![NPM total downloads](https://img.shields.io/npm/dt/cache-base.svg?style=flat)](https://npmjs.org/package/cache-base) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/cache-base.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/cache-base) - -> Basic object cache with `get`, `set`, `del`, and `has` methods for node.js/javascript projects. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save cache-base -``` - -## Usage - -```js -var Cache = require('cache-base'); - -// instantiate -var app = new Cache(); - -// set values -app.set('a', 'b'); -app.set('c.d', 'e'); - -// get values -app.get('a'); -//=> 'b' -app.get('c'); -//=> {d: 'e'} - -console.log(app.cache); -//=> {a: 'b'} -``` - -**Inherit** - -```js -var util = require('util'); -var Cache = require('cache-base'); - -function MyApp() { - Cache.call(this); -} -util.inherits(MyApp, Cache); - -var app = new MyApp(); -app.set('a', 'b'); -app.get('a'); -//=> 'b' -``` - -**Namespace** - -Define a custom property for storing values. - -```js -var Cache = require('cache-base').namespace('data'); -var app = new Cache(); -app.set('a', 'b'); -console.log(app.data); -//=> {a: 'b'} -``` - -## API - -### [namespace](index.js#L29) - -Create a `Cache` constructor that when instantiated will store values on the given `prop`. - -**Params** - -* `prop` **{String}**: The property name to use for storing values. -* `returns` **{Function}**: Returns a custom `Cache` constructor - -**Example** - -```js -var Cache = require('cache-base').namespace('data'); -var cache = new Cache(); - -cache.set('foo', 'bar'); -//=> {data: {foo: 'bar'}} -``` - -### [Cache](index.js#L43) - -Create a new `Cache`. Internally the `Cache` constructor is created using the `namespace` function, with `cache` defined as the storage object. - -**Params** - -* `cache` **{Object}**: Optionally pass an object to initialize with. - -**Example** - -```js -var app = new Cache(); -``` - -### [.set](index.js#L84) - -Assign `value` to `key`. Also emits `set` with the key and value. - -**Params** - -* `key` **{String}** -* `value` **{any}** -* `returns` **{Object}**: Returns the instance for chaining. - -**Events** - -* `emits`: `set` with `key` and `value` as arguments. - -**Example** - -```js -app.on('set', function(key, val) { - // do something when `set` is emitted -}); - -app.set(key, value); - -// also takes an object or array -app.set({name: 'Halle'}); -app.set([{foo: 'bar'}, {baz: 'quux'}]); -console.log(app); -//=> {name: 'Halle', foo: 'bar', baz: 'quux'} -``` - -### [.union](index.js#L114) - -Union `array` to `key`. Also emits `set` with the key and value. - -**Params** - -* `key` **{String}** -* `value` **{any}** -* `returns` **{Object}**: Returns the instance for chaining. - -**Example** - -```js -app.union('a.b', ['foo']); -app.union('a.b', ['bar']); -console.log(app.get('a')); -//=> {b: ['foo', 'bar']} -``` - -### [.get](index.js#L144) - -Return the value of `key`. Dot notation may be used to get [nested property values](https://github.com/jonschlinkert/get-value). - -**Params** - -* `key` **{String}**: The name of the property to get. Dot-notation may be used. -* `returns` **{any}**: Returns the value of `key` - -**Events** - -* `emits`: `get` with `key` and `value` as arguments. - -**Example** - -```js -app.set('a.b.c', 'd'); -app.get('a.b'); -//=> {c: 'd'} - -app.get(['a', 'b']); -//=> {c: 'd'} -``` - -### [.has](index.js#L171) - -Return true if app has a stored value for `key`, false only if value is `undefined`. - -**Params** - -* `key` **{String}** -* `returns` **{Boolean}** - -**Events** - -* `emits`: `has` with `key` and true or false as arguments. - -**Example** - -```js -app.set('foo', 'bar'); -app.has('foo'); -//=> true -``` - -### [.del](index.js#L199) - -Delete one or more properties from the instance. - -**Params** - -* `key` **{String|Array}**: Property name or array of property names. -* `returns` **{Object}**: Returns the instance for chaining. - -**Events** - -* `emits`: `del` with the `key` as the only argument. - -**Example** - -```js -app.del(); // delete all -// or -app.del('foo'); -// or -app.del(['foo', 'bar']); -``` - -### [.clear](index.js#L218) - -Reset the entire cache to an empty object. - -**Example** - -```js -app.clear(); -``` - -### [.visit](index.js#L235) - -Visit `method` over the properties in the given object, or map -visit over the object-elements in an array. - -**Params** - -* `method` **{String}**: The name of the `base` method to call. -* `val` **{Object|Array}**: The object or array to iterate over. -* `returns` **{Object}**: Returns the instance for chaining. - -## About - -### Related projects - -* [base-methods](https://www.npmjs.com/package/base-methods): base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… [more](https://github.com/jonschlinkert/base-methods) | [homepage](https://github.com/jonschlinkert/base-methods "base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`.") -* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value "Use property paths (`a.b.c`) to get a nested value from an object.") -* [has-value](https://www.npmjs.com/package/has-value): Returns true if a value exists, false if empty. Works with deeply nested values using… [more](https://github.com/jonschlinkert/has-value) | [homepage](https://github.com/jonschlinkert/has-value "Returns true if a value exists, false if empty. Works with deeply nested values using object paths.") -* [option-cache](https://www.npmjs.com/package/option-cache): Simple API for managing options in JavaScript applications. | [homepage](https://github.com/jonschlinkert/option-cache "Simple API for managing options in JavaScript applications.") -* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value "Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths.") -* [unset-value](https://www.npmjs.com/package/unset-value): Delete nested properties from an object using dot notation. | [homepage](https://github.com/jonschlinkert/unset-value "Delete nested properties from an object using dot notation.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 54 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 22, 2017._ \ No newline at end of file diff --git a/node_modules/cache-base/index.js b/node_modules/cache-base/index.js deleted file mode 100644 index 412802455..000000000 --- a/node_modules/cache-base/index.js +++ /dev/null @@ -1,261 +0,0 @@ -'use strict'; - -var isObject = require('isobject'); -var Emitter = require('component-emitter'); -var visit = require('collection-visit'); -var toPath = require('to-object-path'); -var union = require('union-value'); -var del = require('unset-value'); -var get = require('get-value'); -var has = require('has-value'); -var set = require('set-value'); - -/** - * Create a `Cache` constructor that when instantiated will - * store values on the given `prop`. - * - * ```js - * var Cache = require('cache-base').namespace('data'); - * var cache = new Cache(); - * - * cache.set('foo', 'bar'); - * //=> {data: {foo: 'bar'}} - * ``` - * @param {String} `prop` The property name to use for storing values. - * @return {Function} Returns a custom `Cache` constructor - * @api public - */ - -function namespace(prop) { - - /** - * Create a new `Cache`. Internally the `Cache` constructor is created using - * the `namespace` function, with `cache` defined as the storage object. - * - * ```js - * var app = new Cache(); - * ``` - * @param {Object} `cache` Optionally pass an object to initialize with. - * @constructor - * @api public - */ - - function Cache(cache) { - if (prop) { - this[prop] = {}; - } - if (cache) { - this.set(cache); - } - } - - /** - * Inherit Emitter - */ - - Emitter(Cache.prototype); - - /** - * Assign `value` to `key`. Also emits `set` with - * the key and value. - * - * ```js - * app.on('set', function(key, val) { - * // do something when `set` is emitted - * }); - * - * app.set(key, value); - * - * // also takes an object or array - * app.set({name: 'Halle'}); - * app.set([{foo: 'bar'}, {baz: 'quux'}]); - * console.log(app); - * //=> {name: 'Halle', foo: 'bar', baz: 'quux'} - * ``` - * - * @name .set - * @emits `set` with `key` and `value` as arguments. - * @param {String} `key` - * @param {any} `value` - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Cache.prototype.set = function(key, val) { - if (Array.isArray(key) && arguments.length === 2) { - key = toPath(key); - } - if (isObject(key) || Array.isArray(key)) { - this.visit('set', key); - } else { - set(prop ? this[prop] : this, key, val); - this.emit('set', key, val); - } - return this; - }; - - /** - * Union `array` to `key`. Also emits `set` with - * the key and value. - * - * ```js - * app.union('a.b', ['foo']); - * app.union('a.b', ['bar']); - * console.log(app.get('a')); - * //=> {b: ['foo', 'bar']} - * ``` - * @name .union - * @param {String} `key` - * @param {any} `value` - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Cache.prototype.union = function(key, val) { - if (Array.isArray(key) && arguments.length === 2) { - key = toPath(key); - } - var ctx = prop ? this[prop] : this; - union(ctx, key, arrayify(val)); - this.emit('union', val); - return this; - }; - - /** - * Return the value of `key`. Dot notation may be used - * to get [nested property values][get-value]. - * - * ```js - * app.set('a.b.c', 'd'); - * app.get('a.b'); - * //=> {c: 'd'} - * - * app.get(['a', 'b']); - * //=> {c: 'd'} - * ``` - * - * @name .get - * @emits `get` with `key` and `value` as arguments. - * @param {String} `key` The name of the property to get. Dot-notation may be used. - * @return {any} Returns the value of `key` - * @api public - */ - - Cache.prototype.get = function(key) { - key = toPath(arguments); - - var ctx = prop ? this[prop] : this; - var val = get(ctx, key); - - this.emit('get', key, val); - return val; - }; - - /** - * Return true if app has a stored value for `key`, - * false only if value is `undefined`. - * - * ```js - * app.set('foo', 'bar'); - * app.has('foo'); - * //=> true - * ``` - * - * @name .has - * @emits `has` with `key` and true or false as arguments. - * @param {String} `key` - * @return {Boolean} - * @api public - */ - - Cache.prototype.has = function(key) { - key = toPath(arguments); - - var ctx = prop ? this[prop] : this; - var val = get(ctx, key); - - var has = typeof val !== 'undefined'; - this.emit('has', key, has); - return has; - }; - - /** - * Delete one or more properties from the instance. - * - * ```js - * app.del(); // delete all - * // or - * app.del('foo'); - * // or - * app.del(['foo', 'bar']); - * ``` - * @name .del - * @emits `del` with the `key` as the only argument. - * @param {String|Array} `key` Property name or array of property names. - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Cache.prototype.del = function(key) { - if (Array.isArray(key)) { - this.visit('del', key); - } else { - del(prop ? this[prop] : this, key); - this.emit('del', key); - } - return this; - }; - - /** - * Reset the entire cache to an empty object. - * - * ```js - * app.clear(); - * ``` - * @api public - */ - - Cache.prototype.clear = function() { - if (prop) { - this[prop] = {}; - } - }; - - /** - * Visit `method` over the properties in the given object, or map - * visit over the object-elements in an array. - * - * @name .visit - * @param {String} `method` The name of the `base` method to call. - * @param {Object|Array} `val` The object or array to iterate over. - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Cache.prototype.visit = function(method, val) { - visit(this, method, val); - return this; - }; - - return Cache; -} - -/** - * Cast val to an array - */ - -function arrayify(val) { - return val ? (Array.isArray(val) ? val : [val]) : []; -} - -/** - * Expose `Cache` - */ - -module.exports = namespace(); - -/** - * Expose `Cache.namespace` - */ - -module.exports.namespace = namespace; diff --git a/node_modules/cache-base/package.json b/node_modules/cache-base/package.json deleted file mode 100644 index 1f0d9e306..000000000 --- a/node_modules/cache-base/package.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "_args": [ - [ - "cache-base@1.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "cache-base@1.0.1", - "_id": "cache-base@1.0.1", - "_inBundle": false, - "_integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "_location": "/cache-base", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "cache-base@1.0.1", - "name": "cache-base", - "escapedName": "cache-base", - "rawSpec": "1.0.1", - "saveSpec": null, - "fetchSpec": "1.0.1" - }, - "_requiredBy": [ - "/base" - ], - "_resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "_spec": "1.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/cache-base/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - } - ], - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "description": "Basic object cache with `get`, `set`, `del`, and `has` methods for node.js/javascript projects.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.4.2" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/cache-base", - "keywords": [ - "base", - "cache", - "config", - "data", - "get", - "has", - "hash", - "hasown", - "object", - "set", - "store" - ], - "license": "MIT", - "main": "index.js", - "name": "cache-base", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/cache-base.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "highligh": "base", - "list": [ - "base-methods", - "get-value", - "has-value", - "option-cache", - "set-value", - "unset-value" - ] - }, - "reflinks": [ - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.1" -} diff --git a/node_modules/class-utils/LICENSE b/node_modules/class-utils/LICENSE deleted file mode 100644 index 27c85370f..000000000 --- a/node_modules/class-utils/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, 2017-2018, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/class-utils/README.md b/node_modules/class-utils/README.md deleted file mode 100644 index b49332efd..000000000 --- a/node_modules/class-utils/README.md +++ /dev/null @@ -1,300 +0,0 @@ -# class-utils [![NPM version](https://img.shields.io/npm/v/class-utils.svg?style=flat)](https://www.npmjs.com/package/class-utils) [![NPM monthly downloads](https://img.shields.io/npm/dm/class-utils.svg?style=flat)](https://npmjs.org/package/class-utils) [![NPM total downloads](https://img.shields.io/npm/dt/class-utils.svg?style=flat)](https://npmjs.org/package/class-utils) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/class-utils.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/class-utils) - -> Utils for working with JavaScript classes and prototype methods. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save class-utils -``` - -## Usage - -```js -var cu = require('class-utils'); -``` - -## API - -### [.has](index.js#L43) - -Returns true if an array has any of the given elements, or an object has any of the give keys. - -**Params** - -* `obj` **{Object}** -* `val` **{String|Array}** -* `returns` **{Boolean}** - -**Example** - -```js -cu.has(['a', 'b', 'c'], 'c'); -//=> true - -cu.has(['a', 'b', 'c'], ['c', 'z']); -//=> true - -cu.has({a: 'b', c: 'd'}, ['c', 'z']); -//=> true -``` - -### [.hasAll](index.js#L90) - -Returns true if an array or object has all of the given values. - -**Params** - -* `val` **{Object|Array}** -* `values` **{String|Array}** -* `returns` **{Boolean}** - -**Example** - -```js -cu.hasAll(['a', 'b', 'c'], 'c'); -//=> true - -cu.hasAll(['a', 'b', 'c'], ['c', 'z']); -//=> false - -cu.hasAll({a: 'b', c: 'd'}, ['c', 'z']); -//=> false -``` - -### [.arrayify](index.js#L117) - -Cast the given value to an array. - -**Params** - -* `val` **{String|Array}** -* `returns` **{Array}** - -**Example** - -```js -cu.arrayify('foo'); -//=> ['foo'] - -cu.arrayify(['foo']); -//=> ['foo'] -``` - -### [.hasConstructor](index.js#L152) - -Returns true if a value has a `contructor` - -**Params** - -* `value` **{Object}** -* `returns` **{Boolean}** - -**Example** - -```js -cu.hasConstructor({}); -//=> true - -cu.hasConstructor(Object.create(null)); -//=> false -``` - -### [.nativeKeys](index.js#L174) - -Get the native `ownPropertyNames` from the constructor of the given `object`. An empty array is returned if the object does not have a constructor. - -**Params** - -* `obj` **{Object}**: Object that has a `constructor`. -* `returns` **{Array}**: Array of keys. - -**Example** - -```js -cu.nativeKeys({a: 'b', b: 'c', c: 'd'}) -//=> ['a', 'b', 'c'] - -cu.nativeKeys(function(){}) -//=> ['length', 'caller'] -``` - -### [.getDescriptor](index.js#L208) - -Returns property descriptor `key` if it's an "own" property of the given object. - -**Params** - -* `obj` **{Object}** -* `key` **{String}** -* `returns` **{Object}**: Returns descriptor `key` - -**Example** - -```js -function App() {} -Object.defineProperty(App.prototype, 'count', { - get: function() { - return Object.keys(this).length; - } -}); -cu.getDescriptor(App.prototype, 'count'); -// returns: -// { -// get: [Function], -// set: undefined, -// enumerable: false, -// configurable: false -// } -``` - -### [.copyDescriptor](index.js#L238) - -Copy a descriptor from one object to another. - -**Params** - -* `receiver` **{Object}** -* `provider` **{Object}** -* `name` **{String}** -* `returns` **{Object}** - -**Example** - -```js -function App() {} -Object.defineProperty(App.prototype, 'count', { - get: function() { - return Object.keys(this).length; - } -}); -var obj = {}; -cu.copyDescriptor(obj, App.prototype, 'count'); -``` - -### [.copy](index.js#L264) - -Copy static properties, prototype properties, and descriptors -from one object to another. - -**Params** - -* `receiver` **{Object}** -* `provider` **{Object}** -* `omit` **{String|Array}**: One or more properties to omit -* `returns` **{Object}** - -### [.inherit](index.js#L299) - -Inherit the static properties, prototype properties, and descriptors -from of an object. - -**Params** - -* `receiver` **{Object}** -* `provider` **{Object}** -* `omit` **{String|Array}**: One or more properties to omit -* `returns` **{Object}** - -### [.extend](index.js#L343) - -Returns a function for extending the static properties, prototype properties, and descriptors from the `Parent` constructor onto `Child` constructors. - -**Params** - -* `Parent` **{Function}**: Parent ctor -* `extend` **{Function}**: Optional extend function to handle custom extensions. Useful when updating methods that require a specific prototype. -* `Child` **{Function}**: Child ctor -* `proto` **{Object}**: Optionally pass additional prototype properties to inherit. -* `returns` **{Object}** - -**Example** - -```js -var extend = cu.extend(Parent); -Parent.extend(Child); - -// optional methods -Parent.extend(Child, { - foo: function() {}, - bar: function() {} -}); -``` - -### [.bubble](index.js#L356) - -Bubble up events emitted from static methods on the Parent ctor. - -**Params** - -* `Parent` **{Object}** -* `events` **{Array}**: Event names to bubble up - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
-
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [define-property](https://www.npmjs.com/package/define-property): Define a non-enumerable property on an object. Uses Reflect.defineProperty when available, otherwise Object.defineProperty. | [homepage](https://github.com/jonschlinkert/define-property "Define a non-enumerable property on an object. Uses Reflect.defineProperty when available, otherwise Object.defineProperty.") -* [delegate-properties](https://www.npmjs.com/package/delegate-properties): Deep-clone properties from one object to another and make them non-enumerable, or make existing properties… [more](https://github.com/jonschlinkert/delegate-properties) | [homepage](https://github.com/jonschlinkert/delegate-properties "Deep-clone properties from one object to another and make them non-enumerable, or make existing properties on an object non-enumerable.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 34 | [jonschlinkert](https://github.com/jonschlinkert) | -| 8 | [doowb](https://github.com/doowb) | -| 2 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Author - -**Jon Schlinkert** - -* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert) -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on January 11, 2018._ \ No newline at end of file diff --git a/node_modules/class-utils/index.js b/node_modules/class-utils/index.js deleted file mode 100644 index 7bec653bf..000000000 --- a/node_modules/class-utils/index.js +++ /dev/null @@ -1,370 +0,0 @@ -'use strict'; - -var util = require('util'); -var union = require('arr-union'); -var define = require('define-property'); -var staticExtend = require('static-extend'); -var isObj = require('isobject'); - -/** - * Expose class utils - */ - -var cu = module.exports; - -/** - * Expose class utils: `cu` - */ - -cu.isObject = function isObject(val) { - return isObj(val) || typeof val === 'function'; -}; - -/** - * Returns true if an array has any of the given elements, or an - * object has any of the give keys. - * - * ```js - * cu.has(['a', 'b', 'c'], 'c'); - * //=> true - * - * cu.has(['a', 'b', 'c'], ['c', 'z']); - * //=> true - * - * cu.has({a: 'b', c: 'd'}, ['c', 'z']); - * //=> true - * ``` - * @param {Object} `obj` - * @param {String|Array} `val` - * @return {Boolean} - * @api public - */ - -cu.has = function has(obj, val) { - val = cu.arrayify(val); - var len = val.length; - - if (cu.isObject(obj)) { - for (var key in obj) { - if (val.indexOf(key) > -1) { - return true; - } - } - - var keys = cu.nativeKeys(obj); - return cu.has(keys, val); - } - - if (Array.isArray(obj)) { - var arr = obj; - while (len--) { - if (arr.indexOf(val[len]) > -1) { - return true; - } - } - return false; - } - - throw new TypeError('expected an array or object.'); -}; - -/** - * Returns true if an array or object has all of the given values. - * - * ```js - * cu.hasAll(['a', 'b', 'c'], 'c'); - * //=> true - * - * cu.hasAll(['a', 'b', 'c'], ['c', 'z']); - * //=> false - * - * cu.hasAll({a: 'b', c: 'd'}, ['c', 'z']); - * //=> false - * ``` - * @param {Object|Array} `val` - * @param {String|Array} `values` - * @return {Boolean} - * @api public - */ - -cu.hasAll = function hasAll(val, values) { - values = cu.arrayify(values); - var len = values.length; - while (len--) { - if (!cu.has(val, values[len])) { - return false; - } - } - return true; -}; - -/** - * Cast the given value to an array. - * - * ```js - * cu.arrayify('foo'); - * //=> ['foo'] - * - * cu.arrayify(['foo']); - * //=> ['foo'] - * ``` - * - * @param {String|Array} `val` - * @return {Array} - * @api public - */ - -cu.arrayify = function arrayify(val) { - return val ? (Array.isArray(val) ? val : [val]) : []; -}; - -/** - * Noop - */ - -cu.noop = function noop() { - return; -}; - -/** - * Returns the first argument passed to the function. - */ - -cu.identity = function identity(val) { - return val; -}; - -/** - * Returns true if a value has a `contructor` - * - * ```js - * cu.hasConstructor({}); - * //=> true - * - * cu.hasConstructor(Object.create(null)); - * //=> false - * ``` - * @param {Object} `value` - * @return {Boolean} - * @api public - */ - -cu.hasConstructor = function hasConstructor(val) { - return cu.isObject(val) && typeof val.constructor !== 'undefined'; -}; - -/** - * Get the native `ownPropertyNames` from the constructor of the - * given `object`. An empty array is returned if the object does - * not have a constructor. - * - * ```js - * cu.nativeKeys({a: 'b', b: 'c', c: 'd'}) - * //=> ['a', 'b', 'c'] - * - * cu.nativeKeys(function(){}) - * //=> ['length', 'caller'] - * ``` - * - * @param {Object} `obj` Object that has a `constructor`. - * @return {Array} Array of keys. - * @api public - */ - -cu.nativeKeys = function nativeKeys(val) { - if (!cu.hasConstructor(val)) return []; - var keys = Object.getOwnPropertyNames(val); - if ('caller' in val) keys.push('caller'); - return keys; -}; - -/** - * Returns property descriptor `key` if it's an "own" property - * of the given object. - * - * ```js - * function App() {} - * Object.defineProperty(App.prototype, 'count', { - * get: function() { - * return Object.keys(this).length; - * } - * }); - * cu.getDescriptor(App.prototype, 'count'); - * // returns: - * // { - * // get: [Function], - * // set: undefined, - * // enumerable: false, - * // configurable: false - * // } - * ``` - * - * @param {Object} `obj` - * @param {String} `key` - * @return {Object} Returns descriptor `key` - * @api public - */ - -cu.getDescriptor = function getDescriptor(obj, key) { - if (!cu.isObject(obj)) { - throw new TypeError('expected an object.'); - } - if (typeof key !== 'string') { - throw new TypeError('expected key to be a string.'); - } - return Object.getOwnPropertyDescriptor(obj, key); -}; - -/** - * Copy a descriptor from one object to another. - * - * ```js - * function App() {} - * Object.defineProperty(App.prototype, 'count', { - * get: function() { - * return Object.keys(this).length; - * } - * }); - * var obj = {}; - * cu.copyDescriptor(obj, App.prototype, 'count'); - * ``` - * @param {Object} `receiver` - * @param {Object} `provider` - * @param {String} `name` - * @return {Object} - * @api public - */ - -cu.copyDescriptor = function copyDescriptor(receiver, provider, name) { - if (!cu.isObject(receiver)) { - throw new TypeError('expected receiving object to be an object.'); - } - if (!cu.isObject(provider)) { - throw new TypeError('expected providing object to be an object.'); - } - if (typeof name !== 'string') { - throw new TypeError('expected name to be a string.'); - } - - var val = cu.getDescriptor(provider, name); - if (val) Object.defineProperty(receiver, name, val); -}; - -/** - * Copy static properties, prototype properties, and descriptors - * from one object to another. - * - * @param {Object} `receiver` - * @param {Object} `provider` - * @param {String|Array} `omit` One or more properties to omit - * @return {Object} - * @api public - */ - -cu.copy = function copy(receiver, provider, omit) { - if (!cu.isObject(receiver)) { - throw new TypeError('expected receiving object to be an object.'); - } - if (!cu.isObject(provider)) { - throw new TypeError('expected providing object to be an object.'); - } - var props = Object.getOwnPropertyNames(provider); - var keys = Object.keys(provider); - var len = props.length, - key; - omit = cu.arrayify(omit); - - while (len--) { - key = props[len]; - - if (cu.has(keys, key)) { - define(receiver, key, provider[key]); - } else if (!(key in receiver) && !cu.has(omit, key)) { - cu.copyDescriptor(receiver, provider, key); - } - } -}; - -/** - * Inherit the static properties, prototype properties, and descriptors - * from of an object. - * - * @param {Object} `receiver` - * @param {Object} `provider` - * @param {String|Array} `omit` One or more properties to omit - * @return {Object} - * @api public - */ - -cu.inherit = function inherit(receiver, provider, omit) { - if (!cu.isObject(receiver)) { - throw new TypeError('expected receiving object to be an object.'); - } - if (!cu.isObject(provider)) { - throw new TypeError('expected providing object to be an object.'); - } - - var keys = []; - for (var key in provider) { - keys.push(key); - receiver[key] = provider[key]; - } - - keys = keys.concat(cu.arrayify(omit)); - - var a = provider.prototype || provider; - var b = receiver.prototype || receiver; - cu.copy(b, a, keys); -}; - -/** - * Returns a function for extending the static properties, - * prototype properties, and descriptors from the `Parent` - * constructor onto `Child` constructors. - * - * ```js - * var extend = cu.extend(Parent); - * Parent.extend(Child); - * - * // optional methods - * Parent.extend(Child, { - * foo: function() {}, - * bar: function() {} - * }); - * ``` - * @param {Function} `Parent` Parent ctor - * @param {Function} `extend` Optional extend function to handle custom extensions. Useful when updating methods that require a specific prototype. - * @param {Function} `Child` Child ctor - * @param {Object} `proto` Optionally pass additional prototype properties to inherit. - * @return {Object} - * @api public - */ - -cu.extend = function() { - // keep it lazy, instead of assigning to `cu.extend` - return staticExtend.apply(null, arguments); -}; - -/** - * Bubble up events emitted from static methods on the Parent ctor. - * - * @param {Object} `Parent` - * @param {Array} `events` Event names to bubble up - * @api public - */ - -cu.bubble = function(Parent, events) { - events = events || []; - Parent.bubble = function(Child, arr) { - if (Array.isArray(arr)) { - events = union([], events, arr); - } - var len = events.length; - var idx = -1; - while (++idx < len) { - var name = events[idx]; - Parent.on(name, Child.emit.bind(Child, name)); - } - cu.bubble(Child, events); - }; -}; diff --git a/node_modules/class-utils/node_modules/define-property/LICENSE b/node_modules/class-utils/node_modules/define-property/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/class-utils/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/class-utils/node_modules/define-property/README.md b/node_modules/class-utils/node_modules/define-property/README.md deleted file mode 100644 index 8cac698ad..000000000 --- a/node_modules/class-utils/node_modules/define-property/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# define-property [![NPM version](https://badge.fury.io/js/define-property.svg)](http://badge.fury.io/js/define-property) - -> Define a non-enumerable property on an object. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i define-property --save -``` - -## Usage - -**Params** - -* `obj`: The object on which to define the property. -* `prop`: The name of the property to be defined or modified. -* `descriptor`: The descriptor for the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**get/set** - -```js -define(obj, 'foo', { - get: function() {}, - set: function() {} -}); -``` - -## Related projects - -* [delegate-object](https://www.npmjs.com/package/delegate-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/delegate-object) | [homepage](https://github.com/doowb/delegate-object) -* [forward-object](https://www.npmjs.com/package/forward-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/forward-object) | [homepage](https://github.com/doowb/forward-object) -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep) -* [mixin-object](https://www.npmjs.com/package/mixin-object): Mixin the own and inherited properties of other objects onto the first object. Pass an… [more](https://www.npmjs.com/package/mixin-object) | [homepage](https://github.com/jonschlinkert/mixin-object) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/define-property/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 31, 2015._ diff --git a/node_modules/class-utils/node_modules/define-property/index.js b/node_modules/class-utils/node_modules/define-property/index.js deleted file mode 100644 index 3e0e5e133..000000000 --- a/node_modules/class-utils/node_modules/define-property/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var isDescriptor = require('is-descriptor'); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; diff --git a/node_modules/class-utils/node_modules/define-property/package.json b/node_modules/class-utils/node_modules/define-property/package.json deleted file mode 100644 index 69453d995..000000000 --- a/node_modules/class-utils/node_modules/define-property/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_args": [ - [ - "define-property@0.2.5", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "define-property@0.2.5", - "_id": "define-property@0.2.5", - "_inBundle": false, - "_integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "_location": "/class-utils/define-property", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "define-property@0.2.5", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "0.2.5", - "saveSpec": null, - "fetchSpec": "0.2.5" - }, - "_requiredBy": [ - "/class-utils" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "_spec": "0.2.5", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "description": "Define a non-enumerable property on an object.", - "devDependencies": { - "mocha": "*", - "should": "^7.0.4" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "mixin-deep", - "mixin-object", - "delegate-object", - "forward-object" - ] - } - }, - "version": "0.2.5" -} diff --git a/node_modules/class-utils/package.json b/node_modules/class-utils/package.json deleted file mode 100644 index 911e9fe8e..000000000 --- a/node_modules/class-utils/package.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "_args": [ - [ - "class-utils@0.3.6", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "class-utils@0.3.6", - "_id": "class-utils@0.3.6", - "_inBundle": false, - "_integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "_location": "/class-utils", - "_phantomChildren": { - "is-descriptor": "0.1.6" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "class-utils@0.3.6", - "name": "class-utils", - "escapedName": "class-utils", - "rawSpec": "0.3.6", - "saveSpec": null, - "fetchSpec": "0.3.6" - }, - "_requiredBy": [ - "/base" - ], - "_resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "_spec": "0.3.6", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/class-utils/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - } - ], - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "description": "Utils for working with JavaScript classes and prototype methods.", - "devDependencies": { - "gulp": "^3.9.1", - "gulp-eslint": "^2.0.0", - "gulp-format-md": "^0.1.7", - "gulp-istanbul": "^0.10.3", - "gulp-mocha": "^2.2.0", - "mocha": "^2.4.5", - "should": "^8.2.2", - "through2": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/class-utils", - "keywords": [ - "array", - "assign", - "class", - "copy", - "ctor", - "define", - "delegate", - "descriptor", - "extend", - "extends", - "inherit", - "inheritance", - "merge", - "method", - "object", - "prop", - "properties", - "property", - "prototype", - "util", - "utils" - ], - "license": "MIT", - "main": "index.js", - "name": "class-utils", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/class-utils.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "define-property", - "delegate-properties", - "is-descriptor" - ] - }, - "reflinks": [ - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.3.6" -} diff --git a/node_modules/collection-visit/LICENSE b/node_modules/collection-visit/LICENSE deleted file mode 100644 index ec85897eb..000000000 --- a/node_modules/collection-visit/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, 2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/collection-visit/README.md b/node_modules/collection-visit/README.md deleted file mode 100644 index c4da3f182..000000000 --- a/node_modules/collection-visit/README.md +++ /dev/null @@ -1,89 +0,0 @@ -# collection-visit [![NPM version](https://img.shields.io/npm/v/collection-visit.svg?style=flat)](https://www.npmjs.com/package/collection-visit) [![NPM monthly downloads](https://img.shields.io/npm/dm/collection-visit.svg?style=flat)](https://npmjs.org/package/collection-visit) [![NPM total downloads](https://img.shields.io/npm/dt/collection-visit.svg?style=flat)](https://npmjs.org/package/collection-visit) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/collection-visit.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/collection-visit) - -> Visit a method over the items in an object, or map visit over the objects in an array. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save collection-visit -``` - -## Usage - -```js -var visit = require('collection-visit'); - -var ctx = { - data: {}, - set: function (key, value) { - if (typeof key === 'object') { - visit(ctx, 'set', key); - } else { - ctx.data[key] = value; - } - } -}; - -ctx.set('a', 'a'); -ctx.set('b', 'b'); -ctx.set('c', 'c'); -ctx.set({d: {e: 'f'}}); - -console.log(ctx.data); -//=> {a: 'a', b: 'b', c: 'c', d: { e: 'f' }}; -``` - -## About - -### Related projects - -* [base-methods](https://www.npmjs.com/package/base-methods): base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… [more](https://github.com/jonschlinkert/base-methods) | [homepage](https://github.com/jonschlinkert/base-methods "base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`.") -* [map-visit](https://www.npmjs.com/package/map-visit): Map `visit` over an array of objects. | [homepage](https://github.com/jonschlinkert/map-visit "Map `visit` over an array of objects.") -* [object-visit](https://www.npmjs.com/package/object-visit): Call a specified method on each value in the given object. | [homepage](https://github.com/jonschlinkert/object-visit "Call a specified method on each value in the given object.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 13 | [jonschlinkert](https://github.com/jonschlinkert) | -| 9 | [doowb](https://github.com/doowb) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 09, 2017._ \ No newline at end of file diff --git a/node_modules/collection-visit/index.js b/node_modules/collection-visit/index.js deleted file mode 100644 index d1977ab22..000000000 --- a/node_modules/collection-visit/index.js +++ /dev/null @@ -1,30 +0,0 @@ -/*! - * collection-visit - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var visit = require('object-visit'); -var mapVisit = require('map-visit'); - -module.exports = function(collection, method, val) { - var result; - - if (typeof val === 'string' && (method in collection)) { - var args = [].slice.call(arguments, 2); - result = collection[method].apply(collection, args); - } else if (Array.isArray(val)) { - result = mapVisit.apply(null, arguments); - } else { - result = visit.apply(null, arguments); - } - - if (typeof result !== 'undefined') { - return result; - } - - return collection; -}; diff --git a/node_modules/collection-visit/package.json b/node_modules/collection-visit/package.json deleted file mode 100644 index dae7e35db..000000000 --- a/node_modules/collection-visit/package.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "_args": [ - [ - "collection-visit@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "collection-visit@1.0.0", - "_id": "collection-visit@1.0.0", - "_inBundle": false, - "_integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "_location": "/collection-visit", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "collection-visit@1.0.0", - "name": "collection-visit", - "escapedName": "collection-visit", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/cache-base" - ], - "_resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/collection-visit/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "email": "brian.woodward@gmail.com", - "url": "https://twitter.com/doowb" - }, - { - "name": "Jon Schlinkert", - "email": "jon.schlinkert@sellside.com", - "url": "http://twitter.com/jonschlinkert" - } - ], - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "description": "Visit a method over the items in an object, or map visit over the objects in an array.", - "devDependencies": { - "clone-deep": "^0.2.4", - "gulp": "^3.9.1", - "gulp-eslint": "^3.0.1", - "gulp-format-md": "^0.1.12", - "gulp-istanbul": "^1.1.1", - "gulp-mocha": "^3.0.0", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/collection-visit", - "keywords": [ - "array", - "arrays", - "collection", - "context", - "function", - "helper", - "invoke", - "key", - "map", - "method", - "object", - "objects", - "value", - "visit", - "visitor" - ], - "license": "MIT", - "main": "index.js", - "name": "collection-visit", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/collection-visit.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "base-methods", - "map-visit", - "object-visit" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/component-emitter/History.md b/node_modules/component-emitter/History.md deleted file mode 100644 index e9fb4bc56..000000000 --- a/node_modules/component-emitter/History.md +++ /dev/null @@ -1,75 +0,0 @@ - -1.3.0 / 2018-04-15 -================== - - * removed bower support - * expose emitter on `exports` - * prevent de-optimization from using `arguments` - -1.2.1 / 2016-04-18 -================== - - * enable client side use - -1.2.0 / 2014-02-12 -================== - - * prefix events with `$` to support object prototype method names - -1.1.3 / 2014-06-20 -================== - - * republish for npm - * add LICENSE file - -1.1.2 / 2014-02-10 -================== - - * package: rename to "component-emitter" - * package: update "main" and "component" fields - * Add license to Readme (same format as the other components) - * created .npmignore - * travis stuff - -1.1.1 / 2013-12-01 -================== - - * fix .once adding .on to the listener - * docs: Emitter#off() - * component: add `.repo` prop - -1.1.0 / 2013-10-20 -================== - - * add `.addEventListener()` and `.removeEventListener()` aliases - -1.0.1 / 2013-06-27 -================== - - * add support for legacy ie - -1.0.0 / 2013-02-26 -================== - - * add `.off()` support for removing all listeners - -0.0.6 / 2012-10-08 -================== - - * add `this._callbacks` initialization to prevent funky gotcha - -0.0.5 / 2012-09-07 -================== - - * fix `Emitter.call(this)` usage - -0.0.3 / 2012-07-11 -================== - - * add `.listeners()` - * rename `.has()` to `.hasListeners()` - -0.0.2 / 2012-06-28 -================== - - * fix `.off()` with `.once()`-registered callbacks diff --git a/node_modules/component-emitter/LICENSE b/node_modules/component-emitter/LICENSE deleted file mode 100644 index de5169273..000000000 --- a/node_modules/component-emitter/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Component contributors - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/component-emitter/Readme.md b/node_modules/component-emitter/Readme.md deleted file mode 100644 index 0f3f9b9fc..000000000 --- a/node_modules/component-emitter/Readme.md +++ /dev/null @@ -1,74 +0,0 @@ -# Emitter [![Build Status](https://travis-ci.org/component/emitter.png)](https://travis-ci.org/component/emitter) - - Event emitter component. - -## Installation - -``` -$ component install component/emitter -``` - -## API - -### Emitter(obj) - - The `Emitter` may also be used as a mixin. For example - a "plain" object may become an emitter, or you may - extend an existing prototype. - - As an `Emitter` instance: - -```js -var Emitter = require('emitter'); -var emitter = new Emitter; -emitter.emit('something'); -``` - - As a mixin: - -```js -var Emitter = require('emitter'); -var user = { name: 'tobi' }; -Emitter(user); - -user.emit('im a user'); -``` - - As a prototype mixin: - -```js -var Emitter = require('emitter'); -Emitter(User.prototype); -``` - -### Emitter#on(event, fn) - - Register an `event` handler `fn`. - -### Emitter#once(event, fn) - - Register a single-shot `event` handler `fn`, - removed immediately after it is invoked the - first time. - -### Emitter#off(event, fn) - - * Pass `event` and `fn` to remove a listener. - * Pass `event` to remove all listeners on that event. - * Pass nothing to remove all listeners on all events. - -### Emitter#emit(event, ...) - - Emit an `event` with variable option args. - -### Emitter#listeners(event) - - Return an array of callbacks, or an empty array. - -### Emitter#hasListeners(event) - - Check if this emitter has `event` handlers. - -## License - -MIT diff --git a/node_modules/component-emitter/index.js b/node_modules/component-emitter/index.js deleted file mode 100644 index 6d7ed0ab3..000000000 --- a/node_modules/component-emitter/index.js +++ /dev/null @@ -1,175 +0,0 @@ - -/** - * Expose `Emitter`. - */ - -if (typeof module !== 'undefined') { - module.exports = Emitter; -} - -/** - * Initialize a new `Emitter`. - * - * @api public - */ - -function Emitter(obj) { - if (obj) return mixin(obj); -}; - -/** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; -} - -/** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.on = -Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks['$' + event] = this._callbacks['$' + event] || []) - .push(fn); - return this; -}; - -/** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.once = function(event, fn){ - function on() { - this.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; -}; - -/** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.off = -Emitter.prototype.removeListener = -Emitter.prototype.removeAllListeners = -Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks['$' + event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks['$' + event]; - return this; - } - - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } - - // Remove event specific arrays for event types that no - // one is subscribed for to avoid memory leak. - if (callbacks.length === 0) { - delete this._callbacks['$' + event]; - } - - return this; -}; - -/** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - -Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - - var args = new Array(arguments.length - 1) - , callbacks = this._callbacks['$' + event]; - - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; -}; - -/** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - -Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks['$' + event] || []; -}; - -/** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - -Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; -}; diff --git a/node_modules/component-emitter/package.json b/node_modules/component-emitter/package.json deleted file mode 100644 index 2d2d0efff..000000000 --- a/node_modules/component-emitter/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "_args": [ - [ - "component-emitter@1.3.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "component-emitter@1.3.0", - "_id": "component-emitter@1.3.0", - "_inBundle": false, - "_integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "_location": "/component-emitter", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "component-emitter@1.3.0", - "name": "component-emitter", - "escapedName": "component-emitter", - "rawSpec": "1.3.0", - "saveSpec": null, - "fetchSpec": "1.3.0" - }, - "_requiredBy": [ - "/base", - "/cache-base" - ], - "_resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "_spec": "1.3.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "bugs": { - "url": "https://github.com/component/emitter/issues" - }, - "component": { - "scripts": { - "emitter/index.js": "index.js" - } - }, - "description": "Event emitter", - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "files": [ - "index.js", - "LICENSE" - ], - "homepage": "https://github.com/component/emitter#readme", - "license": "MIT", - "main": "index.js", - "name": "component-emitter", - "repository": { - "type": "git", - "url": "git+https://github.com/component/emitter.git" - }, - "scripts": { - "test": "make test" - }, - "version": "1.3.0" -} diff --git a/node_modules/concat-with-sourcemaps/LICENSE.md b/node_modules/concat-with-sourcemaps/LICENSE.md deleted file mode 100644 index 674ee6257..000000000 --- a/node_modules/concat-with-sourcemaps/LICENSE.md +++ /dev/null @@ -1,15 +0,0 @@ -## ISC License - -Copyright (c) 2014, Florian Reiterer - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/concat-with-sourcemaps/README.md b/node_modules/concat-with-sourcemaps/README.md deleted file mode 100644 index 3cba2867c..000000000 --- a/node_modules/concat-with-sourcemaps/README.md +++ /dev/null @@ -1,45 +0,0 @@ -## Concat with source maps [![NPM version][npm-image]][npm-url] [![build status][travis-image]][travis-url] [![Test coverage][coveralls-image]][coveralls-url] - -NPM module for concatenating files and generating source maps. - -### Usage example -```js -var concat = new Concat(true, 'all.js', '\n'); -concat.add(null, "// (c) John Doe"); -concat.add('file1.js', file1Content); -concat.add('file2.js', file2Content, file2SourceMap); - -var concatenatedContent = concat.content; -var sourceMapForContent = concat.sourceMap; -``` - -### API - -#### new Concat(generateSourceMap, outFileName, separator) -Initialize a new concat object. - -Parameters: -- generateSourceMap: whether or not to generate a source map (default: false) -- outFileName: the file name/path of the output file (for the source map) -- separator: the string that should separate files (default: no separator) - -#### concat.add(fileName, content, sourceMap) -Add a file to the output file. - -Parameters: -- fileName: file name of the input file (can be null for content without a file reference, e.g. a license comment) -- content: content (Buffer or string) of the input file -- sourceMap: optional source map of the input file (string). Will be merged into the output source map. - -#### concat.content -The resulting concatenated file content (Buffer). - -#### concat.sourceMap -The resulting source map of the concatenated files (string). - -[npm-image]: https://img.shields.io/npm/v/concat-with-sourcemaps.svg -[npm-url]: https://www.npmjs.com/package/concat-with-sourcemaps -[travis-image]: https://img.shields.io/travis/floridoo/concat-with-sourcemaps.svg -[travis-url]: https://travis-ci.org/floridoo/concat-with-sourcemaps -[coveralls-image]: https://img.shields.io/coveralls/floridoo/concat-with-sourcemaps.svg -[coveralls-url]: https://coveralls.io/r/floridoo/concat-with-sourcemaps?branch=master diff --git a/node_modules/concat-with-sourcemaps/index.d.ts b/node_modules/concat-with-sourcemaps/index.d.ts deleted file mode 100644 index 4709a50a9..000000000 --- a/node_modules/concat-with-sourcemaps/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { RawSourceMap } from "source-map"; - -declare module "concat-with-sourcemaps" { - - export default class Concat { - constructor(generateSourceMap: boolean, fileName: string, separator?: string); - add(filePath: string | null, content: string | Buffer, sourceMap?: string | RawSourceMap): void; - readonly content: Buffer; - readonly sourceMap: string | undefined; - } - -} diff --git a/node_modules/concat-with-sourcemaps/index.js b/node_modules/concat-with-sourcemaps/index.js deleted file mode 100644 index 8059e8a7d..000000000 --- a/node_modules/concat-with-sourcemaps/index.js +++ /dev/null @@ -1,134 +0,0 @@ -'use strict'; -var SourceMapGenerator = require('source-map').SourceMapGenerator; -var SourceMapConsumer = require('source-map').SourceMapConsumer; - -function unixStylePath(filePath) { - return filePath.replace(/\\/g, '/'); -} - -function Concat(generateSourceMap, fileName, separator) { - this.lineOffset = 0; - this.columnOffset = 0; - this.sourceMapping = generateSourceMap; - this.contentParts = []; - - if (separator === undefined) { - this.separator = bufferFrom(''); - } else { - this.separator = bufferFrom(separator); - } - - if (this.sourceMapping) { - this._sourceMap = new SourceMapGenerator({file: unixStylePath(fileName)}); - this.separatorLineOffset = 0; - this.separatorColumnOffset = 0; - var separatorString = this.separator.toString(); - for (var i = 0; i < separatorString.length; i++) { - this.separatorColumnOffset++; - if (separatorString[i] === '\n') { - this.separatorLineOffset++; - this.separatorColumnOffset = 0; - } - } - } -} - -Concat.prototype.add = function(filePath, content, sourceMap) { - filePath = filePath && unixStylePath(filePath); - - if (!Buffer.isBuffer(content)) { - content = bufferFrom(content); - } - - if (this.contentParts.length !== 0) { - this.contentParts.push(this.separator); - } - this.contentParts.push(content); - - if (this.sourceMapping) { - var contentString = content.toString(); - var lines = contentString.split('\n').length; - - if (Object.prototype.toString.call(sourceMap) === '[object String]') - sourceMap = JSON.parse(sourceMap); - - if (sourceMap && sourceMap.mappings && sourceMap.mappings.length > 0) { - var upstreamSM = new SourceMapConsumer(sourceMap); - var _this = this; - upstreamSM.eachMapping(function(mapping) { - if (mapping.source) { - _this._sourceMap.addMapping({ - generated: { - line: _this.lineOffset + mapping.generatedLine, - column: (mapping.generatedLine === 1 ? _this.columnOffset : 0) + mapping.generatedColumn - }, - original: mapping.originalLine == null ? null : { - line: mapping.originalLine, - column: mapping.originalColumn - }, - source: mapping.originalLine != null ? mapping.source : null, - name: mapping.name - }); - } - }); - if (upstreamSM.sourcesContent) { - upstreamSM.sourcesContent.forEach(function(sourceContent, i) { - _this._sourceMap.setSourceContent(upstreamSM.sources[i], sourceContent); - }); - } - } else { - if (sourceMap && sourceMap.sources && sourceMap.sources.length > 0) - filePath = sourceMap.sources[0]; - if (filePath) { - for (var i = 1; i <= lines; i++) { - this._sourceMap.addMapping({ - generated: { - line: this.lineOffset + i, - column: (i === 1 ? this.columnOffset : 0) - }, - original: { - line: i, - column: 0 - }, - source: filePath - }); - } - if (sourceMap && sourceMap.sourcesContent) - this._sourceMap.setSourceContent(filePath, sourceMap.sourcesContent[0]); - } - } - if (lines > 1) - this.columnOffset = 0; - if (this.separatorLineOffset === 0) - this.columnOffset += contentString.length - Math.max(0, contentString.lastIndexOf('\n')+1); - this.columnOffset += this.separatorColumnOffset; - this.lineOffset += lines - 1 + this.separatorLineOffset; - } -}; - -Object.defineProperty(Concat.prototype, 'content', { - get: function content() { - return Buffer.concat(this.contentParts); - } -}); - -Object.defineProperty(Concat.prototype, 'sourceMap', { - get: function sourceMap() { - return this._sourceMap ? this._sourceMap.toString() : undefined; - } -}); - -function bufferFrom(content) { - try { - return Buffer.from(content); - } catch(e) { - if (Object.prototype.toString.call(content) !== '[object String]') { - throw new TypeError("separator must be a string"); - } - return new Buffer(content); - } -} -Concat.bufferFrom = bufferFrom; -Concat.default = Concat; - -module.exports = Concat; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/CHANGELOG.md b/node_modules/concat-with-sourcemaps/node_modules/source-map/CHANGELOG.md deleted file mode 100644 index 3a8c066c6..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/CHANGELOG.md +++ /dev/null @@ -1,301 +0,0 @@ -# Change Log - -## 0.5.6 - -* Fix for regression when people were using numbers as names in source maps. See - #236. - -## 0.5.5 - -* Fix "regression" of unsupported, implementation behavior that half the world - happens to have come to depend on. See #235. - -* Fix regression involving function hoisting in SpiderMonkey. See #233. - -## 0.5.4 - -* Large performance improvements to source-map serialization. See #228 and #229. - -## 0.5.3 - -* Do not include unnecessary distribution files. See - commit ef7006f8d1647e0a83fdc60f04f5a7ca54886f86. - -## 0.5.2 - -* Include browser distributions of the library in package.json's `files`. See - issue #212. - -## 0.5.1 - -* Fix latent bugs in IndexedSourceMapConsumer.prototype._parseMappings. See - ff05274becc9e6e1295ed60f3ea090d31d843379. - -## 0.5.0 - -* Node 0.8 is no longer supported. - -* Use webpack instead of dryice for bundling. - -* Big speedups serializing source maps. See pull request #203. - -* Fix a bug with `SourceMapConsumer.prototype.sourceContentFor` and sources that - explicitly start with the source root. See issue #199. - -## 0.4.4 - -* Fix an issue where using a `SourceMapGenerator` after having created a - `SourceMapConsumer` from it via `SourceMapConsumer.fromSourceMap` failed. See - issue #191. - -* Fix an issue with where `SourceMapGenerator` would mistakenly consider - different mappings as duplicates of each other and avoid generating them. See - issue #192. - -## 0.4.3 - -* A very large number of performance improvements, particularly when parsing - source maps. Collectively about 75% of time shaved off of the source map - parsing benchmark! - -* Fix a bug in `SourceMapConsumer.prototype.allGeneratedPositionsFor` and fuzzy - searching in the presence of a column option. See issue #177. - -* Fix a bug with joining a source and its source root when the source is above - the root. See issue #182. - -* Add the `SourceMapConsumer.prototype.hasContentsOfAllSources` method to - determine when all sources' contents are inlined into the source map. See - issue #190. - -## 0.4.2 - -* Add an `.npmignore` file so that the benchmarks aren't pulled down by - dependent projects. Issue #169. - -* Add an optional `column` argument to - `SourceMapConsumer.prototype.allGeneratedPositionsFor` and better handle lines - with no mappings. Issues #172 and #173. - -## 0.4.1 - -* Fix accidentally defining a global variable. #170. - -## 0.4.0 - -* The default direction for fuzzy searching was changed back to its original - direction. See #164. - -* There is now a `bias` option you can supply to `SourceMapConsumer` to control - the fuzzy searching direction. See #167. - -* About an 8% speed up in parsing source maps. See #159. - -* Added a benchmark for parsing and generating source maps. - -## 0.3.0 - -* Change the default direction that searching for positions fuzzes when there is - not an exact match. See #154. - -* Support for environments using json2.js for JSON serialization. See #156. - -## 0.2.0 - -* Support for consuming "indexed" source maps which do not have any remote - sections. See pull request #127. This introduces a minor backwards - incompatibility if you are monkey patching `SourceMapConsumer.prototype` - methods. - -## 0.1.43 - -* Performance improvements for `SourceMapGenerator` and `SourceNode`. See issue - #148 for some discussion and issues #150, #151, and #152 for implementations. - -## 0.1.42 - -* Fix an issue where `SourceNode`s from different versions of the source-map - library couldn't be used in conjunction with each other. See issue #142. - -## 0.1.41 - -* Fix a bug with getting the source content of relative sources with a "./" - prefix. See issue #145 and [Bug 1090768](bugzil.la/1090768). - -* Add the `SourceMapConsumer.prototype.computeColumnSpans` method to compute the - column span of each mapping. - -* Add the `SourceMapConsumer.prototype.allGeneratedPositionsFor` method to find - all generated positions associated with a given original source and line. - -## 0.1.40 - -* Performance improvements for parsing source maps in SourceMapConsumer. - -## 0.1.39 - -* Fix a bug where setting a source's contents to null before any source content - had been set before threw a TypeError. See issue #131. - -## 0.1.38 - -* Fix a bug where finding relative paths from an empty path were creating - absolute paths. See issue #129. - -## 0.1.37 - -* Fix a bug where if the source root was an empty string, relative source paths - would turn into absolute source paths. Issue #124. - -## 0.1.36 - -* Allow the `names` mapping property to be an empty string. Issue #121. - -## 0.1.35 - -* A third optional parameter was added to `SourceNode.fromStringWithSourceMap` - to specify a path that relative sources in the second parameter should be - relative to. Issue #105. - -* If no file property is given to a `SourceMapGenerator`, then the resulting - source map will no longer have a `null` file property. The property will - simply not exist. Issue #104. - -* Fixed a bug where consecutive newlines were ignored in `SourceNode`s. - Issue #116. - -## 0.1.34 - -* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103. - -* Fix bug involving source contents and the - `SourceMapGenerator.prototype.applySourceMap`. Issue #100. - -## 0.1.33 - -* Fix some edge cases surrounding path joining and URL resolution. - -* Add a third parameter for relative path to - `SourceMapGenerator.prototype.applySourceMap`. - -* Fix issues with mappings and EOLs. - -## 0.1.32 - -* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns - (issue 92). - -* Fixed test runner to actually report number of failed tests as its process - exit code. - -* Fixed a typo when reporting bad mappings (issue 87). - -## 0.1.31 - -* Delay parsing the mappings in SourceMapConsumer until queried for a source - location. - -* Support Sass source maps (which at the time of writing deviate from the spec - in small ways) in SourceMapConsumer. - -## 0.1.30 - -* Do not join source root with a source, when the source is a data URI. - -* Extend the test runner to allow running single specific test files at a time. - -* Performance improvements in `SourceNode.prototype.walk` and - `SourceMapConsumer.prototype.eachMapping`. - -* Source map browser builds will now work inside Workers. - -* Better error messages when attempting to add an invalid mapping to a - `SourceMapGenerator`. - -## 0.1.29 - -* Allow duplicate entries in the `names` and `sources` arrays of source maps - (usually from TypeScript) we are parsing. Fixes github issue 72. - -## 0.1.28 - -* Skip duplicate mappings when creating source maps from SourceNode; github - issue 75. - -## 0.1.27 - -* Don't throw an error when the `file` property is missing in SourceMapConsumer, - we don't use it anyway. - -## 0.1.26 - -* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70. - -## 0.1.25 - -* Make compatible with browserify - -## 0.1.24 - -* Fix issue with absolute paths and `file://` URIs. See - https://bugzilla.mozilla.org/show_bug.cgi?id=885597 - -## 0.1.23 - -* Fix issue with absolute paths and sourcesContent, github issue 64. - -## 0.1.22 - -* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. - -## 0.1.21 - -* Fixed handling of sources that start with a slash so that they are relative to - the source root's host. - -## 0.1.20 - -* Fixed github issue #43: absolute URLs aren't joined with the source root - anymore. - -## 0.1.19 - -* Using Travis CI to run tests. - -## 0.1.18 - -* Fixed a bug in the handling of sourceRoot. - -## 0.1.17 - -* Added SourceNode.fromStringWithSourceMap. - -## 0.1.16 - -* Added missing documentation. - -* Fixed the generating of empty mappings in SourceNode. - -## 0.1.15 - -* Added SourceMapGenerator.applySourceMap. - -## 0.1.14 - -* The sourceRoot is now handled consistently. - -## 0.1.13 - -* Added SourceMapGenerator.fromSourceMap. - -## 0.1.12 - -* SourceNode now generates empty mappings too. - -## 0.1.11 - -* Added name support to SourceNode. - -## 0.1.10 - -* Added sourcesContent support to the customer and generator. diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/LICENSE b/node_modules/concat-with-sourcemaps/node_modules/source-map/LICENSE deleted file mode 100644 index ed1b7cf27..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/README.md b/node_modules/concat-with-sourcemaps/node_modules/source-map/README.md deleted file mode 100644 index fea4beb19..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/README.md +++ /dev/null @@ -1,742 +0,0 @@ -# Source Map - -[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) - -[![NPM](https://nodei.co/npm/source-map.png?downloads=true&downloadRank=true)](https://www.npmjs.com/package/source-map) - -This is a library to generate and consume the source map format -[described here][format]. - -[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit - -## Use with Node - - $ npm install source-map - -## Use on the Web - - - --------------------------------------------------------------------------------- - - - - - -## Table of Contents - -- [Examples](#examples) - - [Consuming a source map](#consuming-a-source-map) - - [Generating a source map](#generating-a-source-map) - - [With SourceNode (high level API)](#with-sourcenode-high-level-api) - - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api) -- [API](#api) - - [SourceMapConsumer](#sourcemapconsumer) - - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap) - - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans) - - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition) - - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition) - - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition) - - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources) - - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing) - - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order) - - [SourceMapGenerator](#sourcemapgenerator) - - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap) - - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer) - - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping) - - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent) - - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath) - - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring) - - [SourceNode](#sourcenode) - - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name) - - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath) - - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk) - - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk) - - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent) - - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn) - - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn) - - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep) - - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement) - - [SourceNode.prototype.toString()](#sourcenodeprototypetostring) - - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap) - - - -## Examples - -### Consuming a source map - -```js -var rawSourceMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: 'http://example.com/www/js/', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' -}; - -var smc = new SourceMapConsumer(rawSourceMap); - -console.log(smc.sources); -// [ 'http://example.com/www/js/one.js', -// 'http://example.com/www/js/two.js' ] - -console.log(smc.originalPositionFor({ - line: 2, - column: 28 -})); -// { source: 'http://example.com/www/js/two.js', -// line: 2, -// column: 10, -// name: 'n' } - -console.log(smc.generatedPositionFor({ - source: 'http://example.com/www/js/two.js', - line: 2, - column: 10 -})); -// { line: 2, column: 28 } - -smc.eachMapping(function (m) { - // ... -}); -``` - -### Generating a source map - -In depth guide: -[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) - -#### With SourceNode (high level API) - -```js -function compile(ast) { - switch (ast.type) { - case 'BinaryExpression': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - [compile(ast.left), " + ", compile(ast.right)] - ); - case 'Literal': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - String(ast.value) - ); - // ... - default: - throw new Error("Bad AST"); - } -} - -var ast = parse("40 + 2", "add.js"); -console.log(compile(ast).toStringWithSourceMap({ - file: 'add.js' -})); -// { code: '40 + 2', -// map: [object SourceMapGenerator] } -``` - -#### With SourceMapGenerator (low level API) - -```js -var map = new SourceMapGenerator({ - file: "source-mapped.js" -}); - -map.addMapping({ - generated: { - line: 10, - column: 35 - }, - source: "foo.js", - original: { - line: 33, - column: 2 - }, - name: "christopher" -}); - -console.log(map.toString()); -// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' -``` - -## API - -Get a reference to the module: - -```js -// Node.js -var sourceMap = require('source-map'); - -// Browser builds -var sourceMap = window.sourceMap; - -// Inside Firefox -const sourceMap = require("devtools/toolkit/sourcemap/source-map.js"); -``` - -### SourceMapConsumer - -A SourceMapConsumer instance represents a parsed source map which we can query -for information about the original file positions by giving it a file position -in the generated source. - -#### new SourceMapConsumer(rawSourceMap) - -The only parameter is the raw source map (either as a string which can be -`JSON.parse`'d, or an object). According to the spec, source maps have the -following attributes: - -* `version`: Which version of the source map spec this map is following. - -* `sources`: An array of URLs to the original source files. - -* `names`: An array of identifiers which can be referenced by individual - mappings. - -* `sourceRoot`: Optional. The URL root from which all sources are relative. - -* `sourcesContent`: Optional. An array of contents of the original source files. - -* `mappings`: A string of base64 VLQs which contain the actual mappings. - -* `file`: Optional. The generated filename this source map is associated with. - -```js -var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData); -``` - -#### SourceMapConsumer.prototype.computeColumnSpans() - -Compute the last column for each generated mapping. The last column is -inclusive. - -```js -// Before: -consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1 }, -// { line: 2, -// column: 10 }, -// { line: 2, -// column: 20 } ] - -consumer.computeColumnSpans(); - -// After: -consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1, -// lastColumn: 9 }, -// { line: 2, -// column: 10, -// lastColumn: 19 }, -// { line: 2, -// column: 20, -// lastColumn: Infinity } ] - -``` - -#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) - -Returns the original source, line, and column information for the generated -source's line and column positions provided. The only argument is an object with -the following properties: - -* `line`: The line number in the generated source. Line numbers in - this library are 1-based (note that the underlying source map - specification uses 0-based line numbers -- this library handles the - translation). - -* `column`: The column number in the generated source. Column numbers - in this library are 0-based. - -* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or - `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest - element that is smaller than or greater than the one we are searching for, - respectively, if the exact element cannot be found. Defaults to - `SourceMapConsumer.GREATEST_LOWER_BOUND`. - -and an object is returned with the following properties: - -* `source`: The original source file, or null if this information is not - available. - -* `line`: The line number in the original source, or null if this information is - not available. The line number is 1-based. - -* `column`: The column number in the original source, or null if this - information is not available. The column number is 0-based. - -* `name`: The original identifier, or null if this information is not available. - -```js -consumer.originalPositionFor({ line: 2, column: 10 }) -// { source: 'foo.coffee', -// line: 2, -// column: 2, -// name: null } - -consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 }) -// { source: null, -// line: null, -// column: null, -// name: null } -``` - -#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) - -Returns the generated line and column information for the original source, -line, and column positions provided. The only argument is an object with -the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. The line number is - 1-based. - -* `column`: The column number in the original source. The column - number is 0-based. - -and an object is returned with the following properties: - -* `line`: The line number in the generated source, or null. The line - number is 1-based. - -* `column`: The column number in the generated source, or null. The - column number is 0-based. - -```js -consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 }) -// { line: 1, -// column: 56 } -``` - -#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition) - -Returns all generated line and column information for the original source, line, -and column provided. If no column is provided, returns all mappings -corresponding to a either the line we are searching for or the next closest line -that has any mappings. Otherwise, returns all mappings corresponding to the -given line and either the column we are searching for or the next closest column -that has any offsets. - -The only argument is an object with the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. The line number is - 1-based. - -* `column`: Optional. The column number in the original source. The - column number is 0-based. - -and an array of objects is returned, each with the following properties: - -* `line`: The line number in the generated source, or null. The line - number is 1-based. - -* `column`: The column number in the generated source, or null. The - column number is 0-based. - -```js -consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1 }, -// { line: 2, -// column: 10 }, -// { line: 2, -// column: 20 } ] -``` - -#### SourceMapConsumer.prototype.hasContentsOfAllSources() - -Return true if we have the embedded source content for every source listed in -the source map, false otherwise. - -In other words, if this method returns `true`, then -`consumer.sourceContentFor(s)` will succeed for every source `s` in -`consumer.sources`. - -```js -// ... -if (consumer.hasContentsOfAllSources()) { - consumerReadyCallback(consumer); -} else { - fetchSources(consumer, consumerReadyCallback); -} -// ... -``` - -#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing]) - -Returns the original source content for the source provided. The only -argument is the URL of the original source file. - -If the source content for the given source is not found, then an error is -thrown. Optionally, pass `true` as the second param to have `null` returned -instead. - -```js -consumer.sources -// [ "my-cool-lib.clj" ] - -consumer.sourceContentFor("my-cool-lib.clj") -// "..." - -consumer.sourceContentFor("this is not in the source map"); -// Error: "this is not in the source map" is not in the source map - -consumer.sourceContentFor("this is not in the source map", true); -// null -``` - -#### SourceMapConsumer.prototype.eachMapping(callback, context, order) - -Iterate over each mapping between an original source/line/column and a -generated line/column in this source map. - -* `callback`: The function that is called with each mapping. Mappings have the - form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, - name }` - -* `context`: Optional. If specified, this object will be the value of `this` - every time that `callback` is called. - -* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or - `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over - the mappings sorted by the generated file's line/column order or the - original's source/line/column order, respectively. Defaults to - `SourceMapConsumer.GENERATED_ORDER`. - -```js -consumer.eachMapping(function (m) { console.log(m); }) -// ... -// { source: 'illmatic.js', -// generatedLine: 1, -// generatedColumn: 0, -// originalLine: 1, -// originalColumn: 0, -// name: null } -// { source: 'illmatic.js', -// generatedLine: 2, -// generatedColumn: 0, -// originalLine: 2, -// originalColumn: 0, -// name: null } -// ... -``` -### SourceMapGenerator - -An instance of the SourceMapGenerator represents a source map which is being -built incrementally. - -#### new SourceMapGenerator([startOfSourceMap]) - -You may pass an object with the following properties: - -* `file`: The filename of the generated source that this source map is - associated with. - -* `sourceRoot`: A root for all relative URLs in this source map. - -* `skipValidation`: Optional. When `true`, disables validation of mappings as - they are added. This can improve performance but should be used with - discretion, as a last resort. Even then, one should avoid using this flag when - running tests, if possible. - -```js -var generator = new sourceMap.SourceMapGenerator({ - file: "my-generated-javascript-file.js", - sourceRoot: "http://example.com/app/js/" -}); -``` - -#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) - -Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance. - -* `sourceMapConsumer` The SourceMap. - -```js -var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer); -``` - -#### SourceMapGenerator.prototype.addMapping(mapping) - -Add a single mapping from original source line and column to the generated -source's line and column for this source map being created. The mapping object -should have the following properties: - -* `generated`: An object with the generated line and column positions. - -* `original`: An object with the original line and column positions. - -* `source`: The original source file (relative to the sourceRoot). - -* `name`: An optional original token name for this mapping. - -```js -generator.addMapping({ - source: "module-one.scm", - original: { line: 128, column: 0 }, - generated: { line: 3, column: 456 } -}) -``` - -#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for an original source file. - -* `sourceFile` the URL of the original source file. - -* `sourceContent` the content of the source file. - -```js -generator.setSourceContent("module-one.scm", - fs.readFileSync("path/to/module-one.scm")) -``` - -#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]]) - -Applies a SourceMap for a source file to the SourceMap. -Each mapping to the supplied source file is rewritten using the -supplied SourceMap. Note: The resolution for the resulting mappings -is the minimum of this map and the supplied map. - -* `sourceMapConsumer`: The SourceMap to be applied. - -* `sourceFile`: Optional. The filename of the source file. - If omitted, sourceMapConsumer.file will be used, if it exists. - Otherwise an error will be thrown. - -* `sourceMapPath`: Optional. The dirname of the path to the SourceMap - to be applied. If relative, it is relative to the SourceMap. - - This parameter is needed when the two SourceMaps aren't in the same - directory, and the SourceMap to be applied contains relative source - paths. If so, those relative source paths need to be rewritten - relative to the SourceMap. - - If omitted, it is assumed that both SourceMaps are in the same directory, - thus not needing any rewriting. (Supplying `'.'` has the same effect.) - -#### SourceMapGenerator.prototype.toString() - -Renders the source map being generated to a string. - -```js -generator.toString() -// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}' -``` - -### SourceNode - -SourceNodes provide a way to abstract over interpolating and/or concatenating -snippets of generated JavaScript source code, while maintaining the line and -column information associated between those snippets and the original source -code. This is useful as the final intermediate representation a compiler might -use before outputting the generated JS and source map. - -#### new SourceNode([line, column, source[, chunk[, name]]]) - -* `line`: The original line number associated with this source node, or null if - it isn't associated with an original line. The line number is 1-based. - -* `column`: The original column number associated with this source node, or null - if it isn't associated with an original column. The column number - is 0-based. - -* `source`: The original source's filename; null if no filename is provided. - -* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see - below. - -* `name`: Optional. The original identifier. - -```js -var node = new SourceNode(1, 2, "a.cpp", [ - new SourceNode(3, 4, "b.cpp", "extern int status;\n"), - new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"), - new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"), -]); -``` - -#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath]) - -Creates a SourceNode from generated code and a SourceMapConsumer. - -* `code`: The generated code - -* `sourceMapConsumer` The SourceMap for the generated code - -* `relativePath` The optional path that relative sources in `sourceMapConsumer` - should be relative to. - -```js -var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8")); -var node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"), - consumer); -``` - -#### SourceNode.prototype.add(chunk) - -Add a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -```js -node.add(" + "); -node.add(otherNode); -node.add([leftHandOperandNode, " + ", rightHandOperandNode]); -``` - -#### SourceNode.prototype.prepend(chunk) - -Prepend a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -```js -node.prepend("/** Build Id: f783haef86324gf **/\n\n"); -``` - -#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for a source file. This will be added to the -`SourceMap` in the `sourcesContent` field. - -* `sourceFile`: The filename of the source file - -* `sourceContent`: The content of the source file - -```js -node.setSourceContent("module-one.scm", - fs.readFileSync("path/to/module-one.scm")) -``` - -#### SourceNode.prototype.walk(fn) - -Walk over the tree of JS snippets in this node and its children. The walking -function is called once for each snippet of JS and is passed that snippet and -the its original associated source's line/column location. - -* `fn`: The traversal function. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.walk(function (code, loc) { console.log("WALK:", code, loc); }) -// WALK: uno { source: 'b.js', line: 3, column: 4, name: null } -// WALK: dos { source: 'a.js', line: 1, column: 2, name: null } -// WALK: tres { source: 'a.js', line: 1, column: 2, name: null } -// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null } -``` - -#### SourceNode.prototype.walkSourceContents(fn) - -Walk over the tree of SourceNodes. The walking function is called for each -source file content and is passed the filename and source content. - -* `fn`: The traversal function. - -```js -var a = new SourceNode(1, 2, "a.js", "generated from a"); -a.setSourceContent("a.js", "original a"); -var b = new SourceNode(1, 2, "b.js", "generated from b"); -b.setSourceContent("b.js", "original b"); -var c = new SourceNode(1, 2, "c.js", "generated from c"); -c.setSourceContent("c.js", "original c"); - -var node = new SourceNode(null, null, null, [a, b, c]); -node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); }) -// WALK: a.js : original a -// WALK: b.js : original b -// WALK: c.js : original c -``` - -#### SourceNode.prototype.join(sep) - -Like `Array.prototype.join` except for SourceNodes. Inserts the separator -between each of this source node's children. - -* `sep`: The separator. - -```js -var lhs = new SourceNode(1, 2, "a.rs", "my_copy"); -var operand = new SourceNode(3, 4, "a.rs", "="); -var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()"); - -var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]); -var joinedNode = node.join(" "); -``` - -#### SourceNode.prototype.replaceRight(pattern, replacement) - -Call `String.prototype.replace` on the very right-most source snippet. Useful -for trimming white space from the end of a source node, etc. - -* `pattern`: The pattern to replace. - -* `replacement`: The thing to replace the pattern with. - -```js -// Trim trailing white space. -node.replaceRight(/\s*$/, ""); -``` - -#### SourceNode.prototype.toString() - -Return the string representation of this source node. Walks over the tree and -concatenates all the various snippets together to one string. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.toString() -// 'unodostresquatro' -``` - -#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) - -Returns the string representation of this tree of source nodes, plus a -SourceMapGenerator which contains all the mappings between the generated and -original sources. - -The arguments are the same as those to `new SourceMapGenerator`. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.toStringWithSourceMap({ file: "my-output-file.js" }) -// { code: 'unodostresquatro', -// map: [object SourceMapGenerator] } -``` diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.debug.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.debug.js deleted file mode 100644 index aad0620d7..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.debug.js +++ /dev/null @@ -1,3234 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["sourceMap"] = factory(); - else - root["sourceMap"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - /* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ - exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; - exports.SourceNode = __webpack_require__(10).SourceNode; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var base64VLQ = __webpack_require__(2); - var util = __webpack_require__(4); - var ArraySet = __webpack_require__(5).ArraySet; - var MappingList = __webpack_require__(6).MappingList; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - var base64 = __webpack_require__(3); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - - /** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ - exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; - }; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || urlRegexp.test(aPath); - }; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - - var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); - }()); - - function identity (s) { - return s; - } - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - - function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 === null) { - return 1; // aStr2 !== null - } - - if (aStr2 === null) { - return -1; // aStr1 !== null - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; - } - - /** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - - /** - * Strip any JSON XSSI avoidance prefix from the string (as documented - * in the source maps specification), and then parse the string as - * JSON. - */ - function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); - } - exports.parseSourceMapInput = parseSourceMapInput; - - /** - * Compute the URL of a source given the the source root, the source's - * URL, and the source map's URL. - */ - function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ''; - - if (sourceRoot) { - // This follows what Chrome does. - if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { - sourceRoot += '/'; - } - // The spec says: - // Line 4: An optional source root, useful for relocating source - // files on a server or removing repeated values in the - // “sources” entry. This value is prepended to the individual - // entries in the “source” field. - sourceURL = sourceRoot + sourceURL; - } - - // Historically, SourceMapConsumer did not take the sourceMapURL as - // a parameter. This mode is still somewhat supported, which is why - // this code block is conditional. However, it's preferable to pass - // the source map URL to SourceMapConsumer, so that this function - // can implement the source URL resolution algorithm as outlined in - // the spec. This block is basically the equivalent of: - // new URL(sourceURL, sourceMapURL).toString() - // ... except it avoids using URL, which wasn't available in the - // older releases of node still supported by this library. - // - // The spec says: - // If the sources are not absolute URLs after prepending of the - // “sourceRoot”, the sources are resolved relative to the - // SourceMap (like resolving script src in a html document). - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - // Strip the last path component, but keep the "/". - var index = parsed.path.lastIndexOf('/'); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - - return normalize(sourceURL); - } - exports.computeSourceURL = computeSourceURL; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - - /** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ - function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - - /** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ - function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; - } - - /** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ - MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - - /** - * Add the given source mapping. - * - * @param Object aMapping - */ - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - - /** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - - exports.MappingList = MappingList; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var binarySearch = __webpack_require__(8); - var ArraySet = __webpack_require__(5).ArraySet; - var base64VLQ = __webpack_require__(2); - var quickSort = __webpack_require__(9).quickSort; - - function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) - : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); - } - - SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - - /** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number is 1-based. - * - column: Optional. the column number in the original source. - * The column number is 0-based. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - - exports.SourceMapConsumer = SourceMapConsumer; - - /** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The first parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this._absoluteSources = this._sources.toArray().map(function (s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; - } - - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - - /** - * Utility function to find the index of a source. Returns -1 if not - * found. - */ - BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - - // Maybe aSource is an absolute URL as returned by |sources|. In - // this case we can't simply undo the transform. - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - - return -1; - }; - - /** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @param String aSourceMapURL - * The URL at which the source map can be found (optional) - * @returns BasicSourceMapConsumer - */ - BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function (s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - BasicSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._absoluteSources.slice(); - } - }); - - /** - * Provide the JIT with a nice shape / hidden class. - */ - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - - /** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ - BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ - BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } - - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - - /** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The first parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ - function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) - } - }); - } - - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - - /** - * The version of the source mapping spec that we are consuming. - */ - IndexedSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ - IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - - /** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; - }; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - // It turns out that some (most?) JavaScript engines don't self-host - // `Array.prototype.sort`. This makes sense because C++ will likely remain - // faster than JS when doing raw CPU-intensive sorting. However, when using a - // custom comparator function, calling back and forth between the VM's C++ and - // JIT'd JS is rather slow *and* loses JIT type information, resulting in - // worse generated code for the comparator function than would be optimal. In - // fact, when sorting with a comparator, these costs outweigh the benefits of - // sorting in C++. By using our own JS-implemented Quick Sort (below), we get - // a ~3500ms mean speed-up in `bench/bench.html`. - - /** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - - /** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ - function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); - } - - /** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ - function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - - /** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ - exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - var util = __webpack_require__(4); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Newline character code for charCodeAt() comparisons - var NEWLINE_CODE = 10; - - // Private symbol for identifying `SourceNode`s when multiple versions of - // the source-map library are loaded. This MUST NOT CHANGE across - // versions! - var isSourceNode = "$$$isSourceNode$$$"; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex] || ''; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ''; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - - -/***/ }) -/******/ ]) -}); -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAxNjI0YzcyOTliODg3ZjdiZGY2NCIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEwQyxTQUFTO0FBQ25EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3hhQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBMkQ7QUFDM0QscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7O0FBRUg7QUFDQTtBQUNBOzs7Ozs7O0FDM0lBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFnQjtBQUNoQixpQkFBZ0I7O0FBRWhCLG9CQUFtQjtBQUNuQixxQkFBb0I7O0FBRXBCLGlCQUFnQjtBQUNoQixpQkFBZ0I7O0FBRWhCLGlCQUFnQjtBQUNoQixrQkFBaUI7O0FBRWpCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDbEVBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBMkIsUUFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWE7QUFDYjs7QUFFQTtBQUNBLGVBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUFzQztBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDdmVBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUFzQyxTQUFTO0FBQy9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7QUN4SEEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7QUM5RUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7O0FBRVg7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLE1BQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWEsa0NBQWtDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVEQUFzRCxZQUFZO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHdDQUF3QztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUErQyxtQkFBbUIsRUFBRTtBQUNwRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBNkIsTUFBTTtBQUNuQztBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsMkJBQTJCO0FBQzlDLHNCQUFxQiwrQ0FBK0M7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0Esc0JBQXFCLDRCQUE0QjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3huQ0EsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7QUM5R0EsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxNQUFNO0FBQ2pCO0FBQ0EsWUFBVyxTQUFTO0FBQ3BCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxNQUFNO0FBQ2pCO0FBQ0EsWUFBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNqSEEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLFNBQVM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQSx1Q0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQStDLFNBQVM7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsNkNBQTRDLGNBQWM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxjQUFhO0FBQ2I7QUFDQSxZQUFXO0FBQ1g7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQSxJQUFHOztBQUVILFdBQVU7QUFDVjs7QUFFQSIsImZpbGUiOiJzb3VyY2UtbWFwLmRlYnVnLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInNvdXJjZU1hcFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCAxNjI0YzcyOTliODg3ZjdiZGY2NCIsIi8qXG4gKiBDb3B5cmlnaHQgMjAwOS0yMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRS50eHQgb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbmV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyO1xuZXhwb3J0cy5Tb3VyY2VOb2RlID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW5vZGUnKS5Tb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zb3VyY2UtbWFwLmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIGJhc2U2NFZMUSA9IHJlcXVpcmUoJy4vYmFzZTY0LXZscScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcbnZhciBBcnJheVNldCA9IHJlcXVpcmUoJy4vYXJyYXktc2V0JykuQXJyYXlTZXQ7XG52YXIgTWFwcGluZ0xpc3QgPSByZXF1aXJlKCcuL21hcHBpbmctbGlzdCcpLk1hcHBpbmdMaXN0O1xuXG4vKipcbiAqIEFuIGluc3RhbmNlIG9mIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IgcmVwcmVzZW50cyBhIHNvdXJjZSBtYXAgd2hpY2ggaXNcbiAqIGJlaW5nIGJ1aWx0IGluY3JlbWVudGFsbHkuIFlvdSBtYXkgcGFzcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nXG4gKiBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBmaWxlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gc291cmNlUm9vdDogQSByb290IGZvciBhbGwgcmVsYXRpdmUgVVJMcyBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcihhQXJncykge1xuICBpZiAoIWFBcmdzKSB7XG4gICAgYUFyZ3MgPSB7fTtcbiAgfVxuICB0aGlzLl9maWxlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdmaWxlJywgbnVsbCk7XG4gIHRoaXMuX3NvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZVJvb3QnLCBudWxsKTtcbiAgdGhpcy5fc2tpcFZhbGlkYXRpb24gPSB1dGlsLmdldEFyZyhhQXJncywgJ3NraXBWYWxpZGF0aW9uJywgZmFsc2UpO1xuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX21hcHBpbmdzID0gbmV3IE1hcHBpbmdMaXN0KCk7XG4gIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG59XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgU291cmNlTWFwR2VuZXJhdG9yIGJhc2VkIG9uIGEgU291cmNlTWFwQ29uc3VtZXJcbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2Zyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyKSB7XG4gICAgdmFyIHNvdXJjZVJvb3QgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlUm9vdDtcbiAgICB2YXIgZ2VuZXJhdG9yID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcih7XG4gICAgICBmaWxlOiBhU291cmNlTWFwQ29uc3VtZXIuZmlsZSxcbiAgICAgIHNvdXJjZVJvb3Q6IHNvdXJjZVJvb3RcbiAgICB9KTtcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuZWFjaE1hcHBpbmcoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIHZhciBuZXdNYXBwaW5nID0ge1xuICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG5ld01hcHBpbmcuc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld01hcHBpbmcub3JpZ2luYWwgPSB7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5uYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGdlbmVyYXRvci5hZGRNYXBwaW5nKG5ld01hcHBpbmcpO1xuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBzb3VyY2VSZWxhdGl2ZSA9IHNvdXJjZUZpbGU7XG4gICAgICBpZiAoc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VSZWxhdGl2ZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZ2VuZXJhdG9yLl9zb3VyY2VzLmhhcyhzb3VyY2VSZWxhdGl2ZSkpIHtcbiAgICAgICAgZ2VuZXJhdG9yLl9zb3VyY2VzLmFkZChzb3VyY2VSZWxhdGl2ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGdlbmVyYXRvci5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH07XG5cbi8qKlxuICogQWRkIGEgc2luZ2xlIG1hcHBpbmcgZnJvbSBvcmlnaW5hbCBzb3VyY2UgbGluZSBhbmQgY29sdW1uIHRvIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBmb3IgdGhpcyBzb3VyY2UgbWFwIGJlaW5nIGNyZWF0ZWQuIFRoZSBtYXBwaW5nXG4gKiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBnZW5lcmF0ZWQ6IEFuIG9iamVjdCB3aXRoIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBvcmlnaW5hbDogQW4gb2JqZWN0IHdpdGggdGhlIG9yaWdpbmFsIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMuXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUgKHJlbGF0aXZlIHRvIHRoZSBzb3VyY2VSb290KS5cbiAqICAgLSBuYW1lOiBBbiBvcHRpb25hbCBvcmlnaW5hbCB0b2tlbiBuYW1lIGZvciB0aGlzIG1hcHBpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYWRkTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hZGRNYXBwaW5nKGFBcmdzKSB7XG4gICAgdmFyIGdlbmVyYXRlZCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnZ2VuZXJhdGVkJyk7XG4gICAgdmFyIG9yaWdpbmFsID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdvcmlnaW5hbCcsIG51bGwpO1xuICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScsIG51bGwpO1xuICAgIHZhciBuYW1lID0gdXRpbC5nZXRBcmcoYUFyZ3MsICduYW1lJywgbnVsbCk7XG5cbiAgICBpZiAoIXRoaXMuX3NraXBWYWxpZGF0aW9uKSB7XG4gICAgICB0aGlzLl92YWxpZGF0ZU1hcHBpbmcoZ2VuZXJhdGVkLCBvcmlnaW5hbCwgc291cmNlLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IFN0cmluZyhzb3VyY2UpO1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgIT0gbnVsbCkge1xuICAgICAgbmFtZSA9IFN0cmluZyhuYW1lKTtcbiAgICAgIGlmICghdGhpcy5fbmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9tYXBwaW5ncy5hZGQoe1xuICAgICAgZ2VuZXJhdGVkTGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IGdlbmVyYXRlZC5jb2x1bW4sXG4gICAgICBvcmlnaW5hbExpbmU6IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwubGluZSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiBvcmlnaW5hbCAhPSBudWxsICYmIG9yaWdpbmFsLmNvbHVtbixcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgbmFtZTogbmFtZVxuICAgIH0pO1xuICB9O1xuXG4vKipcbiAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuc2V0U291cmNlQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHZhciBzb3VyY2UgPSBhU291cmNlRmlsZTtcbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuX3NvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKGFTb3VyY2VDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIC8vIEFkZCB0aGUgc291cmNlIGNvbnRlbnQgdG8gdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwLlxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IF9zb3VyY2VzQ29udGVudHMgbWFwIGlmIHRoZSBwcm9wZXJ0eSBpcyBudWxsLlxuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIC8vIFJlbW92ZSB0aGUgc291cmNlIGZpbGUgZnJvbSB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBJZiB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAgaXMgZW1wdHksIHNldCB0aGUgcHJvcGVydHkgdG8gbnVsbC5cbiAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VzQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhzb3VyY2UpXTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9zb3VyY2VzQ29udGVudHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBtYXBwaW5ncyBvZiBhIHN1Yi1zb3VyY2UtbWFwIGZvciBhIHNwZWNpZmljIHNvdXJjZSBmaWxlIHRvIHRoZVxuICogc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQuIEVhY2ggbWFwcGluZyB0byB0aGUgc3VwcGxpZWQgc291cmNlIGZpbGUgaXNcbiAqIHJld3JpdHRlbiB1c2luZyB0aGUgc3VwcGxpZWQgc291cmNlIG1hcC4gTm90ZTogVGhlIHJlc29sdXRpb24gZm9yIHRoZVxuICogcmVzdWx0aW5nIG1hcHBpbmdzIGlzIHRoZSBtaW5pbWl1bSBvZiB0aGlzIG1hcCBhbmQgdGhlIHN1cHBsaWVkIG1hcC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBzb3VyY2UgbWFwIHRvIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgT3B0aW9uYWwuIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNlIGZpbGUuXG4gKiAgICAgICAgSWYgb21pdHRlZCwgU291cmNlTWFwQ29uc3VtZXIncyBmaWxlIHByb3BlcnR5IHdpbGwgYmUgdXNlZC5cbiAqIEBwYXJhbSBhU291cmNlTWFwUGF0aCBPcHRpb25hbC4gVGhlIGRpcm5hbWUgb2YgdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBtYXBcbiAqICAgICAgICB0byBiZSBhcHBsaWVkLiBJZiByZWxhdGl2ZSwgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcENvbnN1bWVyLlxuICogICAgICAgIFRoaXMgcGFyYW1ldGVyIGlzIG5lZWRlZCB3aGVuIHRoZSB0d28gc291cmNlIG1hcHMgYXJlbid0IGluIHRoZSBzYW1lXG4gKiAgICAgICAgZGlyZWN0b3J5LCBhbmQgdGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZCBjb250YWlucyByZWxhdGl2ZSBzb3VyY2VcbiAqICAgICAgICBwYXRocy4gSWYgc28sIHRob3NlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBuZWVkIHRvIGJlIHJld3JpdHRlblxuICogICAgICAgIHJlbGF0aXZlIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfYXBwbHlTb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyLCBhU291cmNlRmlsZSwgYVNvdXJjZU1hcFBhdGgpIHtcbiAgICB2YXIgc291cmNlRmlsZSA9IGFTb3VyY2VGaWxlO1xuICAgIC8vIElmIGFTb3VyY2VGaWxlIGlzIG9taXR0ZWQsIHdlIHdpbGwgdXNlIHRoZSBmaWxlIHByb3BlcnR5IG9mIHRoZSBTb3VyY2VNYXBcbiAgICBpZiAoYVNvdXJjZUZpbGUgPT0gbnVsbCkge1xuICAgICAgaWYgKGFTb3VyY2VNYXBDb25zdW1lci5maWxlID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLmFwcGx5U291cmNlTWFwIHJlcXVpcmVzIGVpdGhlciBhbiBleHBsaWNpdCBzb3VyY2UgZmlsZSwgJyArXG4gICAgICAgICAgJ29yIHRoZSBzb3VyY2UgbWFwXFwncyBcImZpbGVcIiBwcm9wZXJ0eS4gQm90aCB3ZXJlIG9taXR0ZWQuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgc291cmNlRmlsZSA9IGFTb3VyY2VNYXBDb25zdW1lci5maWxlO1xuICAgIH1cbiAgICB2YXIgc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgLy8gTWFrZSBcInNvdXJjZUZpbGVcIiByZWxhdGl2ZSBpZiBhbiBhYnNvbHV0ZSBVcmwgaXMgcGFzc2VkLlxuICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgIH1cbiAgICAvLyBBcHBseWluZyB0aGUgU291cmNlTWFwIGNhbiBhZGQgYW5kIHJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzb3VyY2VzIGFuZFxuICAgIC8vIHRoZSBuYW1lcyBhcnJheS5cbiAgICB2YXIgbmV3U291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICAgIHZhciBuZXdOYW1lcyA9IG5ldyBBcnJheVNldCgpO1xuXG4gICAgLy8gRmluZCBtYXBwaW5ncyBmb3IgdGhlIFwic291cmNlRmlsZVwiXG4gICAgdGhpcy5fbWFwcGluZ3MudW5zb3J0ZWRGb3JFYWNoKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IHNvdXJjZUZpbGUgJiYgbWFwcGluZy5vcmlnaW5hbExpbmUgIT0gbnVsbCkge1xuICAgICAgICAvLyBDaGVjayBpZiBpdCBjYW4gYmUgbWFwcGVkIGJ5IHRoZSBzb3VyY2UgbWFwLCB0aGVuIHVwZGF0ZSB0aGUgbWFwcGluZy5cbiAgICAgICAgdmFyIG9yaWdpbmFsID0gYVNvdXJjZU1hcENvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgIGNvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gQ29weSBtYXBwaW5nXG4gICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICAgICAgaWYgKGFTb3VyY2VNYXBQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gdXRpbC5qb2luKGFTb3VyY2VNYXBQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPSBvcmlnaW5hbC5saW5lO1xuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPSBvcmlnaW5hbC5jb2x1bW47XG4gICAgICAgICAgaWYgKG9yaWdpbmFsLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmICFuZXdTb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIG5ld1NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBuYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiAhbmV3TmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIG5ld05hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cblxuICAgIH0sIHRoaXMpO1xuICAgIHRoaXMuX3NvdXJjZXMgPSBuZXdTb3VyY2VzO1xuICAgIHRoaXMuX25hbWVzID0gbmV3TmFtZXM7XG5cbiAgICAvLyBDb3B5IHNvdXJjZXNDb250ZW50cyBvZiBhcHBsaWVkIG1hcC5cbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG4gIH07XG5cbi8qKlxuICogQSBtYXBwaW5nIGNhbiBoYXZlIG9uZSBvZiB0aGUgdGhyZWUgbGV2ZWxzIG9mIGRhdGE6XG4gKlxuICogICAxLiBKdXN0IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uXG4gKiAgIDIuIFRoZSBHZW5lcmF0ZWQgcG9zaXRpb24sIG9yaWdpbmFsIHBvc2l0aW9uLCBhbmQgb3JpZ2luYWwgc291cmNlLlxuICogICAzLiBHZW5lcmF0ZWQgYW5kIG9yaWdpbmFsIHBvc2l0aW9uLCBvcmlnaW5hbCBzb3VyY2UsIGFzIHdlbGwgYXMgYSBuYW1lXG4gKiAgICAgIHRva2VuLlxuICpcbiAqIFRvIG1haW50YWluIGNvbnNpc3RlbmN5LCB3ZSB2YWxpZGF0ZSB0aGF0IGFueSBuZXcgbWFwcGluZyBiZWluZyBhZGRlZCBmYWxsc1xuICogaW4gdG8gb25lIG9mIHRoZXNlIGNhdGVnb3JpZXMuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZhbGlkYXRlTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl92YWxpZGF0ZU1hcHBpbmcoYUdlbmVyYXRlZCwgYU9yaWdpbmFsLCBhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFOYW1lKSB7XG4gICAgLy8gV2hlbiBhT3JpZ2luYWwgaXMgdHJ1dGh5IGJ1dCBoYXMgZW1wdHkgdmFsdWVzIGZvciAubGluZSBhbmQgLmNvbHVtbixcbiAgICAvLyBpdCBpcyBtb3N0IGxpa2VseSBhIHByb2dyYW1tZXIgZXJyb3IuIEluIHRoaXMgY2FzZSB3ZSB0aHJvdyBhIHZlcnlcbiAgICAvLyBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIHRvIHRyeSB0byBndWlkZSB0aGVtIHRoZSByaWdodCB3YXkuXG4gICAgLy8gRm9yIGV4YW1wbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5bWVyL3BvbHltZXItYnVuZGxlci9wdWxsLzUxOVxuICAgIGlmIChhT3JpZ2luYWwgJiYgdHlwZW9mIGFPcmlnaW5hbC5saW5lICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgYU9yaWdpbmFsLmNvbHVtbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ29yaWdpbmFsLmxpbmUgYW5kIG9yaWdpbmFsLmNvbHVtbiBhcmUgbm90IG51bWJlcnMgLS0geW91IHByb2JhYmx5IG1lYW50IHRvIG9taXQgJyArXG4gICAgICAgICAgICAndGhlIG9yaWdpbmFsIG1hcHBpbmcgZW50aXJlbHkgYW5kIG9ubHkgbWFwIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uIElmIHNvLCBwYXNzICcgK1xuICAgICAgICAgICAgJ251bGwgZm9yIHRoZSBvcmlnaW5hbCBtYXBwaW5nIGluc3RlYWQgb2YgYW4gb2JqZWN0IHdpdGggZW1wdHkgb3IgbnVsbCB2YWx1ZXMuJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChhR2VuZXJhdGVkICYmICdsaW5lJyBpbiBhR2VuZXJhdGVkICYmICdjb2x1bW4nIGluIGFHZW5lcmF0ZWRcbiAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICYmICFhT3JpZ2luYWwgJiYgIWFTb3VyY2UgJiYgIWFOYW1lKSB7XG4gICAgICAvLyBDYXNlIDEuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2UgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbCAmJiAnbGluZScgaW4gYU9yaWdpbmFsICYmICdjb2x1bW4nIGluIGFPcmlnaW5hbFxuICAgICAgICAgICAgICYmIGFHZW5lcmF0ZWQubGluZSA+IDAgJiYgYUdlbmVyYXRlZC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbC5saW5lID4gMCAmJiBhT3JpZ2luYWwuY29sdW1uID49IDBcbiAgICAgICAgICAgICAmJiBhU291cmNlKSB7XG4gICAgICAvLyBDYXNlcyAyIGFuZCAzLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXBwaW5nOiAnICsgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBnZW5lcmF0ZWQ6IGFHZW5lcmF0ZWQsXG4gICAgICAgIHNvdXJjZTogYVNvdXJjZSxcbiAgICAgICAgb3JpZ2luYWw6IGFPcmlnaW5hbCxcbiAgICAgICAgbmFtZTogYU5hbWVcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogU2VyaWFsaXplIHRoZSBhY2N1bXVsYXRlZCBtYXBwaW5ncyBpbiB0byB0aGUgc3RyZWFtIG9mIGJhc2UgNjQgVkxRc1xuICogc3BlY2lmaWVkIGJ5IHRoZSBzb3VyY2UgbWFwIGZvcm1hdC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fc2VyaWFsaXplTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3Jfc2VyaWFsaXplTWFwcGluZ3MoKSB7XG4gICAgdmFyIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRMaW5lID0gMTtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgcHJldmlvdXNTb3VyY2UgPSAwO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgbmV4dDtcbiAgICB2YXIgbWFwcGluZztcbiAgICB2YXIgbmFtZUlkeDtcbiAgICB2YXIgc291cmNlSWR4O1xuXG4gICAgdmFyIG1hcHBpbmdzID0gdGhpcy5fbWFwcGluZ3MudG9BcnJheSgpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBtYXBwaW5ncy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgbWFwcGluZyA9IG1hcHBpbmdzW2ldO1xuICAgICAgbmV4dCA9ICcnXG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgIHdoaWxlIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIG5leHQgKz0gJzsnO1xuICAgICAgICAgIHByZXZpb3VzR2VuZXJhdGVkTGluZSsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgaWYgKCF1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmcsIG1hcHBpbmdzW2kgLSAxXSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0ICs9ICcsJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKG1hcHBpbmcuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlSWR4ID0gdGhpcy5fc291cmNlcy5pbmRleE9mKG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKHNvdXJjZUlkeCAtIHByZXZpb3VzU291cmNlKTtcbiAgICAgICAgcHJldmlvdXNTb3VyY2UgPSBzb3VyY2VJZHg7XG5cbiAgICAgICAgLy8gbGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkIGluIFNvdXJjZU1hcCBzcGVjIHZlcnNpb24gM1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbExpbmUgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbExpbmUpO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lIC0gMTtcblxuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4pO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuYW1lSWR4ID0gdGhpcy5fbmFtZXMuaW5kZXhPZihtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShuYW1lSWR4IC0gcHJldmlvdXNOYW1lKTtcbiAgICAgICAgICBwcmV2aW91c05hbWUgPSBuYW1lSWR4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZ2VuZXJhdGVTb3VyY2VzQ29udGVudChhU291cmNlcywgYVNvdXJjZVJvb3QpIHtcbiAgICByZXR1cm4gYVNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIGlmICghdGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGFTb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlID0gdXRpbC5yZWxhdGl2ZShhU291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHZhciBrZXkgPSB1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSk7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuX3NvdXJjZXNDb250ZW50cywga2V5KVxuICAgICAgICA/IHRoaXMuX3NvdXJjZXNDb250ZW50c1trZXldXG4gICAgICAgIDogbnVsbDtcbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBFeHRlcm5hbGl6ZSB0aGUgc291cmNlIG1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS50b0pTT04gPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9KU09OKCkge1xuICAgIHZhciBtYXAgPSB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLl92ZXJzaW9uLFxuICAgICAgc291cmNlczogdGhpcy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICBuYW1lczogdGhpcy5fbmFtZXMudG9BcnJheSgpLFxuICAgICAgbWFwcGluZ3M6IHRoaXMuX3NlcmlhbGl6ZU1hcHBpbmdzKClcbiAgICB9O1xuICAgIGlmICh0aGlzLl9maWxlICE9IG51bGwpIHtcbiAgICAgIG1hcC5maWxlID0gdGhpcy5fZmlsZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgbWFwLnNvdXJjZVJvb3QgPSB0aGlzLl9zb3VyY2VSb290O1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICBtYXAuc291cmNlc0NvbnRlbnQgPSB0aGlzLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KG1hcC5zb3VyY2VzLCBtYXAuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfTtcblxuLyoqXG4gKiBSZW5kZXIgdGhlIHNvdXJjZSBtYXAgYmVpbmcgZ2VuZXJhdGVkIHRvIGEgc3RyaW5nLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTigpKTtcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSBTb3VyY2VNYXBHZW5lcmF0b3I7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqIEJhc2VkIG9uIHRoZSBCYXNlIDY0IFZMUSBpbXBsZW1lbnRhdGlvbiBpbiBDbG9zdXJlIENvbXBpbGVyOlxuICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jbG9zdXJlLWNvbXBpbGVyL3NvdXJjZS9icm93c2UvdHJ1bmsvc3JjL2NvbS9nb29nbGUvZGVidWdnaW5nL3NvdXJjZW1hcC9CYXNlNjRWTFEuamF2YVxuICpcbiAqIENvcHlyaWdodCAyMDExIFRoZSBDbG9zdXJlIENvbXBpbGVyIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZVxuICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZFxuICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICogICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkXG4gKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSxcbiAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWVxuICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCcuL2Jhc2U2NCcpO1xuXG4vLyBBIHNpbmdsZSBiYXNlIDY0IGRpZ2l0IGNhbiBjb250YWluIDYgYml0cyBvZiBkYXRhLiBGb3IgdGhlIGJhc2UgNjQgdmFyaWFibGVcbi8vIGxlbmd0aCBxdWFudGl0aWVzIHdlIHVzZSBpbiB0aGUgc291cmNlIG1hcCBzcGVjLCB0aGUgZmlyc3QgYml0IGlzIHRoZSBzaWduLFxuLy8gdGhlIG5leHQgZm91ciBiaXRzIGFyZSB0aGUgYWN0dWFsIHZhbHVlLCBhbmQgdGhlIDZ0aCBiaXQgaXMgdGhlXG4vLyBjb250aW51YXRpb24gYml0LiBUaGUgY29udGludWF0aW9uIGJpdCB0ZWxscyB1cyB3aGV0aGVyIHRoZXJlIGFyZSBtb3JlXG4vLyBkaWdpdHMgaW4gdGhpcyB2YWx1ZSBmb2xsb3dpbmcgdGhpcyBkaWdpdC5cbi8vXG4vLyAgIENvbnRpbnVhdGlvblxuLy8gICB8ICAgIFNpZ25cbi8vICAgfCAgICB8XG4vLyAgIFYgICAgVlxuLy8gICAxMDEwMTFcblxudmFyIFZMUV9CQVNFX1NISUZUID0gNTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQkFTRSA9IDEgPDwgVkxRX0JBU0VfU0hJRlQ7XG5cbi8vIGJpbmFyeTogMDExMTExXG52YXIgVkxRX0JBU0VfTUFTSyA9IFZMUV9CQVNFIC0gMTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQ09OVElOVUFUSU9OX0JJVCA9IFZMUV9CQVNFO1xuXG4vKipcbiAqIENvbnZlcnRzIGZyb20gYSB0d28tY29tcGxlbWVudCB2YWx1ZSB0byBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDEgYmVjb21lcyAyICgxMCBiaW5hcnkpLCAtMSBiZWNvbWVzIDMgKDExIGJpbmFyeSlcbiAqICAgMiBiZWNvbWVzIDQgKDEwMCBiaW5hcnkpLCAtMiBiZWNvbWVzIDUgKDEwMSBiaW5hcnkpXG4gKi9cbmZ1bmN0aW9uIHRvVkxRU2lnbmVkKGFWYWx1ZSkge1xuICByZXR1cm4gYVZhbHVlIDwgMFxuICAgID8gKCgtYVZhbHVlKSA8PCAxKSArIDFcbiAgICA6IChhVmFsdWUgPDwgMSkgKyAwO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRvIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgZnJvbSBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAzICgxMSBiaW5hcnkpIGJlY29tZXMgLTFcbiAqICAgNCAoMTAwIGJpbmFyeSkgYmVjb21lcyAyLCA1ICgxMDEgYmluYXJ5KSBiZWNvbWVzIC0yXG4gKi9cbmZ1bmN0aW9uIGZyb21WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHZhciBpc05lZ2F0aXZlID0gKGFWYWx1ZSAmIDEpID09PSAxO1xuICB2YXIgc2hpZnRlZCA9IGFWYWx1ZSA+PiAxO1xuICByZXR1cm4gaXNOZWdhdGl2ZVxuICAgID8gLXNoaWZ0ZWRcbiAgICA6IHNoaWZ0ZWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSA2NCBWTFEgZW5jb2RlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0cy5lbmNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZW5jb2RlKGFWYWx1ZSkge1xuICB2YXIgZW5jb2RlZCA9IFwiXCI7XG4gIHZhciBkaWdpdDtcblxuICB2YXIgdmxxID0gdG9WTFFTaWduZWQoYVZhbHVlKTtcblxuICBkbyB7XG4gICAgZGlnaXQgPSB2bHEgJiBWTFFfQkFTRV9NQVNLO1xuICAgIHZscSA+Pj49IFZMUV9CQVNFX1NISUZUO1xuICAgIGlmICh2bHEgPiAwKSB7XG4gICAgICAvLyBUaGVyZSBhcmUgc3RpbGwgbW9yZSBkaWdpdHMgaW4gdGhpcyB2YWx1ZSwgc28gd2UgbXVzdCBtYWtlIHN1cmUgdGhlXG4gICAgICAvLyBjb250aW51YXRpb24gYml0IGlzIG1hcmtlZC5cbiAgICAgIGRpZ2l0IHw9IFZMUV9DT05USU5VQVRJT05fQklUO1xuICAgIH1cbiAgICBlbmNvZGVkICs9IGJhc2U2NC5lbmNvZGUoZGlnaXQpO1xuICB9IHdoaWxlICh2bHEgPiAwKTtcblxuICByZXR1cm4gZW5jb2RlZDtcbn07XG5cbi8qKlxuICogRGVjb2RlcyB0aGUgbmV4dCBiYXNlIDY0IFZMUSB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgYW5kIHJldHVybnMgdGhlXG4gKiB2YWx1ZSBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyB2aWEgdGhlIG91dCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gYmFzZTY0VkxRX2RlY29kZShhU3RyLCBhSW5kZXgsIGFPdXRQYXJhbSkge1xuICB2YXIgc3RyTGVuID0gYVN0ci5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSAwO1xuICB2YXIgc2hpZnQgPSAwO1xuICB2YXIgY29udGludWF0aW9uLCBkaWdpdDtcblxuICBkbyB7XG4gICAgaWYgKGFJbmRleCA+PSBzdHJMZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIG1vcmUgZGlnaXRzIGluIGJhc2UgNjQgVkxRIHZhbHVlLlwiKTtcbiAgICB9XG5cbiAgICBkaWdpdCA9IGJhc2U2NC5kZWNvZGUoYVN0ci5jaGFyQ29kZUF0KGFJbmRleCsrKSk7XG4gICAgaWYgKGRpZ2l0ID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjQgZGlnaXQ6IFwiICsgYVN0ci5jaGFyQXQoYUluZGV4IC0gMSkpO1xuICAgIH1cblxuICAgIGNvbnRpbnVhdGlvbiA9ICEhKGRpZ2l0ICYgVkxRX0NPTlRJTlVBVElPTl9CSVQpO1xuICAgIGRpZ2l0ICY9IFZMUV9CQVNFX01BU0s7XG4gICAgcmVzdWx0ID0gcmVzdWx0ICsgKGRpZ2l0IDw8IHNoaWZ0KTtcbiAgICBzaGlmdCArPSBWTFFfQkFTRV9TSElGVDtcbiAgfSB3aGlsZSAoY29udGludWF0aW9uKTtcblxuICBhT3V0UGFyYW0udmFsdWUgPSBmcm9tVkxRU2lnbmVkKHJlc3VsdCk7XG4gIGFPdXRQYXJhbS5yZXN0ID0gYUluZGV4O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2Jhc2U2NC12bHEuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgaW50VG9DaGFyTWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nLnNwbGl0KCcnKTtcblxuLyoqXG4gKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmdsZSBiYXNlIDY0IGRpZ2l0LlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgaWYgKDAgPD0gbnVtYmVyICYmIG51bWJlciA8IGludFRvQ2hhck1hcC5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50VG9DaGFyTWFwW251bWJlcl07XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgKyBudW1iZXIpO1xufTtcblxuLyoqXG4gKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBjaGFyYWN0ZXIgY29kZSBkaWdpdCB0byBhbiBpbnRlZ2VyLiBSZXR1cm5zIC0xIG9uXG4gKiBmYWlsdXJlLlxuICovXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChjaGFyQ29kZSkge1xuICB2YXIgYmlnQSA9IDY1OyAgICAgLy8gJ0EnXG4gIHZhciBiaWdaID0gOTA7ICAgICAvLyAnWidcblxuICB2YXIgbGl0dGxlQSA9IDk3OyAgLy8gJ2EnXG4gIHZhciBsaXR0bGVaID0gMTIyOyAvLyAneidcblxuICB2YXIgemVybyA9IDQ4OyAgICAgLy8gJzAnXG4gIHZhciBuaW5lID0gNTc7ICAgICAvLyAnOSdcblxuICB2YXIgcGx1cyA9IDQzOyAgICAgLy8gJysnXG4gIHZhciBzbGFzaCA9IDQ3OyAgICAvLyAnLydcblxuICB2YXIgbGl0dGxlT2Zmc2V0ID0gMjY7XG4gIHZhciBudW1iZXJPZmZzZXQgPSA1MjtcblxuICAvLyAwIC0gMjU6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXG4gIGlmIChiaWdBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGJpZ1opIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gYmlnQSk7XG4gIH1cblxuICAvLyAyNiAtIDUxOiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elxuICBpZiAobGl0dGxlQSA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBsaXR0bGVaKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIGxpdHRsZUEgKyBsaXR0bGVPZmZzZXQpO1xuICB9XG5cbiAgLy8gNTIgLSA2MTogMDEyMzQ1Njc4OVxuICBpZiAoemVybyA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBuaW5lKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIHplcm8gKyBudW1iZXJPZmZzZXQpO1xuICB9XG5cbiAgLy8gNjI6ICtcbiAgaWYgKGNoYXJDb2RlID09IHBsdXMpIHtcbiAgICByZXR1cm4gNjI7XG4gIH1cblxuICAvLyA2MzogL1xuICBpZiAoY2hhckNvZGUgPT0gc2xhc2gpIHtcbiAgICByZXR1cm4gNjM7XG4gIH1cblxuICAvLyBJbnZhbGlkIGJhc2U2NCBkaWdpdC5cbiAgcmV0dXJuIC0xO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2Jhc2U2NC5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8qKlxuICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB2YWx1ZXMgZnJvbSBwYXJhbWV0ZXIvb3B0aW9uc1xuICogb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gYXJncyBUaGUgb2JqZWN0IHdlIGFyZSBleHRyYWN0aW5nIHZhbHVlcyBmcm9tXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2UgYXJlIGdldHRpbmcuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIEFuIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgaXMgbWlzc2luZ1xuICogZnJvbSB0aGUgb2JqZWN0LiBJZiB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBhblxuICogZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gKi9cbmZ1bmN0aW9uIGdldEFyZyhhQXJncywgYU5hbWUsIGFEZWZhdWx0VmFsdWUpIHtcbiAgaWYgKGFOYW1lIGluIGFBcmdzKSB7XG4gICAgcmV0dXJuIGFBcmdzW2FOYW1lXTtcbiAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIGFEZWZhdWx0VmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhTmFtZSArICdcIiBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LicpO1xuICB9XG59XG5leHBvcnRzLmdldEFyZyA9IGdldEFyZztcblxudmFyIHVybFJlZ2V4cCA9IC9eKD86KFtcXHcrXFwtLl0rKTopP1xcL1xcLyg/OihcXHcrOlxcdyspQCk/KFtcXHcuLV0qKSg/OjooXFxkKykpPyguKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgdXJsUmVnZXhwLnRlc3QoYVBhdGgpO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlT3JpZ2luYWwpIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zID0gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnM7XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGRlZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBpbmRpY2VzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uLCBidXQgZGlmZmVyZW50XG4gKiBzb3VyY2UvbmFtZS9vcmlnaW5hbCBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYVxuICogbWFwcGluZyB3aXRoIGEgc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlR2VuZXJhdGVkKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZDtcblxuZnVuY3Rpb24gc3RyY21wKGFTdHIxLCBhU3RyMikge1xuICBpZiAoYVN0cjEgPT09IGFTdHIyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoYVN0cjEgPT09IG51bGwpIHtcbiAgICByZXR1cm4gMTsgLy8gYVN0cjIgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMiA9PT0gbnVsbCkge1xuICAgIHJldHVybiAtMTsgLy8gYVN0cjEgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuLyoqXG4gKiBTdHJpcCBhbnkgSlNPTiBYU1NJIGF2b2lkYW5jZSBwcmVmaXggZnJvbSB0aGUgc3RyaW5nIChhcyBkb2N1bWVudGVkXG4gKiBpbiB0aGUgc291cmNlIG1hcHMgc3BlY2lmaWNhdGlvbiksIGFuZCB0aGVuIHBhcnNlIHRoZSBzdHJpbmcgYXNcbiAqIEpTT04uXG4gKi9cbmZ1bmN0aW9uIHBhcnNlU291cmNlTWFwSW5wdXQoc3RyKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKHN0ci5yZXBsYWNlKC9eXFwpXX0nW15cXG5dKlxcbi8sICcnKSk7XG59XG5leHBvcnRzLnBhcnNlU291cmNlTWFwSW5wdXQgPSBwYXJzZVNvdXJjZU1hcElucHV0O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIFVSTCBvZiBhIHNvdXJjZSBnaXZlbiB0aGUgdGhlIHNvdXJjZSByb290LCB0aGUgc291cmNlJ3NcbiAqIFVSTCwgYW5kIHRoZSBzb3VyY2UgbWFwJ3MgVVJMLlxuICovXG5mdW5jdGlvbiBjb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKSB7XG4gIHNvdXJjZVVSTCA9IHNvdXJjZVVSTCB8fCAnJztcblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIC8vIFRoaXMgZm9sbG93cyB3aGF0IENocm9tZSBkb2VzLlxuICAgIGlmIChzb3VyY2VSb290W3NvdXJjZVJvb3QubGVuZ3RoIC0gMV0gIT09ICcvJyAmJiBzb3VyY2VVUkxbMF0gIT09ICcvJykge1xuICAgICAgc291cmNlUm9vdCArPSAnLyc7XG4gICAgfVxuICAgIC8vIFRoZSBzcGVjIHNheXM6XG4gICAgLy8gICBMaW5lIDQ6IEFuIG9wdGlvbmFsIHNvdXJjZSByb290LCB1c2VmdWwgZm9yIHJlbG9jYXRpbmcgc291cmNlXG4gICAgLy8gICBmaWxlcyBvbiBhIHNlcnZlciBvciByZW1vdmluZyByZXBlYXRlZCB2YWx1ZXMgaW4gdGhlXG4gICAgLy8gICDigJxzb3VyY2Vz4oCdIGVudHJ5LiAgVGhpcyB2YWx1ZSBpcyBwcmVwZW5kZWQgdG8gdGhlIGluZGl2aWR1YWxcbiAgICAvLyAgIGVudHJpZXMgaW4gdGhlIOKAnHNvdXJjZeKAnSBmaWVsZC5cbiAgICBzb3VyY2VVUkwgPSBzb3VyY2VSb290ICsgc291cmNlVVJMO1xuICB9XG5cbiAgLy8gSGlzdG9yaWNhbGx5LCBTb3VyY2VNYXBDb25zdW1lciBkaWQgbm90IHRha2UgdGhlIHNvdXJjZU1hcFVSTCBhc1xuICAvLyBhIHBhcmFtZXRlci4gIFRoaXMgbW9kZSBpcyBzdGlsbCBzb21ld2hhdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeVxuICAvLyB0aGlzIGNvZGUgYmxvY2sgaXMgY29uZGl0aW9uYWwuICBIb3dldmVyLCBpdCdzIHByZWZlcmFibGUgdG8gcGFzc1xuICAvLyB0aGUgc291cmNlIG1hcCBVUkwgdG8gU291cmNlTWFwQ29uc3VtZXIsIHNvIHRoYXQgdGhpcyBmdW5jdGlvblxuICAvLyBjYW4gaW1wbGVtZW50IHRoZSBzb3VyY2UgVVJMIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIG91dGxpbmVkIGluXG4gIC8vIHRoZSBzcGVjLiAgVGhpcyBibG9jayBpcyBiYXNpY2FsbHkgdGhlIGVxdWl2YWxlbnQgb2Y6XG4gIC8vICAgIG5ldyBVUkwoc291cmNlVVJMLCBzb3VyY2VNYXBVUkwpLnRvU3RyaW5nKClcbiAgLy8gLi4uIGV4Y2VwdCBpdCBhdm9pZHMgdXNpbmcgVVJMLCB3aGljaCB3YXNuJ3QgYXZhaWxhYmxlIGluIHRoZVxuICAvLyBvbGRlciByZWxlYXNlcyBvZiBub2RlIHN0aWxsIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnkuXG4gIC8vXG4gIC8vIFRoZSBzcGVjIHNheXM6XG4gIC8vICAgSWYgdGhlIHNvdXJjZXMgYXJlIG5vdCBhYnNvbHV0ZSBVUkxzIGFmdGVyIHByZXBlbmRpbmcgb2YgdGhlXG4gIC8vICAg4oCcc291cmNlUm9vdOKAnSwgdGhlIHNvdXJjZXMgYXJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZVxuICAvLyAgIFNvdXJjZU1hcCAobGlrZSByZXNvbHZpbmcgc2NyaXB0IHNyYyBpbiBhIGh0bWwgZG9jdW1lbnQpLlxuICBpZiAoc291cmNlTWFwVVJMKSB7XG4gICAgdmFyIHBhcnNlZCA9IHVybFBhcnNlKHNvdXJjZU1hcFVSTCk7XG4gICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInNvdXJjZU1hcFVSTCBjb3VsZCBub3QgYmUgcGFyc2VkXCIpO1xuICAgIH1cbiAgICBpZiAocGFyc2VkLnBhdGgpIHtcbiAgICAgIC8vIFN0cmlwIHRoZSBsYXN0IHBhdGggY29tcG9uZW50LCBidXQga2VlcCB0aGUgXCIvXCIuXG4gICAgICB2YXIgaW5kZXggPSBwYXJzZWQucGF0aC5sYXN0SW5kZXhPZignLycpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgcGFyc2VkLnBhdGggPSBwYXJzZWQucGF0aC5zdWJzdHJpbmcoMCwgaW5kZXggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc291cmNlVVJMID0gam9pbih1cmxHZW5lcmF0ZShwYXJzZWQpLCBzb3VyY2VVUkwpO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShzb3VyY2VVUkwpO1xufVxuZXhwb3J0cy5jb21wdXRlU291cmNlVVJMID0gY29tcHV0ZVNvdXJjZVVSTDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2FycmF5LXNldC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9tYXBwaW5nLWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICByZXR1cm4gc291cmNlTWFwLnNlY3Rpb25zICE9IG51bGxcbiAgICA/IG5ldyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKVxuICAgIDogbmV3IEJhc2ljU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9IGZ1bmN0aW9uKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgcmV0dXJuIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcChhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8vIGBfX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmQgYF9fb3JpZ2luYWxNYXBwaW5nc2AgYXJlIGFycmF5cyB0aGF0IGhvbGQgdGhlXG4vLyBwYXJzZWQgbWFwcGluZyBjb29yZGluYXRlcyBmcm9tIHRoZSBzb3VyY2UgbWFwJ3MgXCJtYXBwaW5nc1wiIGF0dHJpYnV0ZS4gVGhleVxuLy8gYXJlIGxhemlseSBpbnN0YW50aWF0ZWQsIGFjY2Vzc2VkIHZpYSB0aGUgYF9nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGdldHRlcnMgcmVzcGVjdGl2ZWx5LCBhbmQgd2Ugb25seSBwYXJzZSB0aGUgbWFwcGluZ3Ncbi8vIGFuZCBjcmVhdGUgdGhlc2UgYXJyYXlzIG9uY2UgcXVlcmllZCBmb3IgYSBzb3VyY2UgbG9jYXRpb24uIFdlIGp1bXAgdGhyb3VnaFxuLy8gdGhlc2UgaG9vcHMgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbWFueSB0aG91c2FuZHMgb2YgbWFwcGluZ3MsIGFuZCBwYXJzaW5nXG4vLyB0aGVtIGlzIGV4cGVuc2l2ZSwgc28gd2Ugb25seSB3YW50IHRvIGRvIGl0IGlmIHdlIG11c3QuXG4vL1xuLy8gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5cyBpcyBvZiB0aGUgZm9ybTpcbi8vXG4vLyAgICAge1xuLy8gICAgICAgZ2VuZXJhdGVkTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIGdlbmVyYXRlZENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgc291cmNlOiBUaGUgcGF0aCB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhhdCBnZW5lcmF0ZWQgdGhpc1xuLy8gICAgICAgICAgICAgICBjaHVuayBvZiBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBvcmlnaW5hbENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBzeW1ib2wgd2hpY2ggZ2VuZXJhdGVkIHRoaXMgY2h1bmsgb2Zcbi8vICAgICAgICAgICAgIGNvZGUuXG4vLyAgICAgfVxuLy9cbi8vIEFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCBmb3IgYGdlbmVyYXRlZExpbmVgIGFuZCBgZ2VuZXJhdGVkQ29sdW1uYCBjYW4gYmVcbi8vIGBudWxsYC5cbi8vXG4vLyBgX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zLlxuLy9cbi8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zLlxuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IG51bGw7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX2dlbmVyYXRlZE1hcHBpbmdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gIH1cbn0pO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19vcmlnaW5hbE1hcHBpbmdzID0gbnVsbDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfb3JpZ2luYWxNYXBwaW5ncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IE9wdGlvbmFsLiB0aGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKGFBcmdzKSB7XG4gICAgdmFyIGxpbmUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKTtcblxuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gZXhhY3QgbWF0Y2gsIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZ1xuICAgIC8vIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IG1hcHBpbmcgbGVzcyB0aGFuIHRoZSBuZWVkbGUuIEJ5XG4gICAgLy8gc2V0dGluZyBuZWVkbGUub3JpZ2luYWxDb2x1bW4gdG8gMCwgd2UgdGh1cyBmaW5kIHRoZSBsYXN0IG1hcHBpbmcgZm9yXG4gICAgLy8gdGhlIGdpdmVuIGxpbmUsIHByb3ZpZGVkIHN1Y2ggYSBtYXBwaW5nIGV4aXN0cy5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLFxuICAgICAgb3JpZ2luYWxMaW5lOiBsaW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJywgMClcbiAgICB9O1xuXG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChuZWVkbGUuc291cmNlKTtcbiAgICBpZiAobmVlZGxlLnNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGluZ3MgPSBbXTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKGFBcmdzLmNvbHVtbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBvcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIGZvdW5kLiBTaW5jZVxuICAgICAgICAvLyBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGZvdW5kLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gb3JpZ2luYWxMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIHdlcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgLy8gU2luY2UgbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAvLyB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBsaW5lICYmXG4gICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID09IG9yaWdpbmFsQ29sdW1uKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5ncztcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2ggd2UgY2FuXG4gKiBxdWVyeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb25zIGJ5IGdpdmluZyBpdCBhIGZpbGVcbiAqIHBvc2l0aW9uIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3JcbiAqIGFscmVhZHkgcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYywgc291cmNlIG1hcHMgaGF2ZSB0aGVcbiAqIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICpcbiAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogICAtIHNvdXJjZXM6IEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqICAgLSBuYW1lczogQW4gYXJyYXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVycmVuY2VkIGJ5IGluZGl2aWR1YWwgbWFwcGluZ3MuXG4gKiAgIC0gc291cmNlUm9vdDogT3B0aW9uYWwuIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAqICAgLSBzb3VyY2VzQ29udGVudDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbWFwcGluZ3M6IEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNoIGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy5cbiAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKlxuICogSGVyZSBpcyBhbiBleGFtcGxlIHNvdXJjZSBtYXAsIHRha2VuIGZyb20gdGhlIHNvdXJjZSBtYXAgc3BlY1swXTpcbiAqXG4gKiAgICAge1xuICogICAgICAgdmVyc2lvbiA6IDMsXG4gKiAgICAgICBmaWxlOiBcIm91dC5qc1wiLFxuICogICAgICAgc291cmNlUm9vdCA6IFwiXCIsXG4gKiAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAqICAgICAgIG1hcHBpbmdzOiBcIkFBLEFCOztBQkNERTtcIlxuICogICAgIH1cbiAqXG4gKiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlzIHRoZSBVUkxcbiAqIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIHdhcyBmb3VuZC4gIFRoaXMgVVJMIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGVcbiAqIHNvdXJjZXMgYXJyYXkuXG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICB2YXIgc291cmNlcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXMnKTtcbiAgLy8gU2FzcyAzLjMgbGVhdmVzIG91dCB0aGUgJ25hbWVzJyBhcnJheSwgc28gd2UgZGV2aWF0ZSBmcm9tIHRoZSBzcGVjICh3aGljaFxuICAvLyByZXF1aXJlcyB0aGUgYXJyYXkpIHRvIHBsYXkgbmljZSBoZXJlLlxuICB2YXIgbmFtZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICduYW1lcycsIFtdKTtcbiAgdmFyIHNvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7XG4gIHZhciBzb3VyY2VzQ29udGVudCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXNDb250ZW50JywgbnVsbCk7XG4gIHZhciBtYXBwaW5ncyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ21hcHBpbmdzJyk7XG4gIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScsIG51bGwpO1xuXG4gIC8vIE9uY2UgYWdhaW4sIFNhc3MgZGV2aWF0ZXMgZnJvbSB0aGUgc3BlYyBhbmQgc3VwcGxpZXMgdGhlIHZlcnNpb24gYXMgYVxuICAvLyBzdHJpbmcgcmF0aGVyIHRoYW4gYSBudW1iZXIsIHNvIHdlIHVzZSBsb29zZSBlcXVhbGl0eSBjaGVja2luZyBoZXJlLlxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIHNvdXJjZVJvb3QgPSB1dGlsLm5vcm1hbGl6ZShzb3VyY2VSb290KTtcbiAgfVxuXG4gIHNvdXJjZXMgPSBzb3VyY2VzXG4gICAgLm1hcChTdHJpbmcpXG4gICAgLy8gU29tZSBzb3VyY2UgbWFwcyBwcm9kdWNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBsaWtlIFwiLi9mb28uanNcIiBpbnN0ZWFkIG9mXG4gICAgLy8gXCJmb28uanNcIi4gIE5vcm1hbGl6ZSB0aGVzZSBmaXJzdCBzbyB0aGF0IGZ1dHVyZSBjb21wYXJpc29ucyB3aWxsIHN1Y2NlZWQuXG4gICAgLy8gU2VlIGJ1Z3ppbC5sYS8xMDkwNzY4LlxuICAgIC5tYXAodXRpbC5ub3JtYWxpemUpXG4gICAgLy8gQWx3YXlzIGVuc3VyZSB0aGF0IGFic29sdXRlIHNvdXJjZXMgYXJlIGludGVybmFsbHkgc3RvcmVkIHJlbGF0aXZlIHRvXG4gICAgLy8gdGhlIHNvdXJjZSByb290LCBpZiB0aGUgc291cmNlIHJvb3QgaXMgYWJzb2x1dGUuIE5vdCBkb2luZyB0aGlzIHdvdWxkXG4gICAgLy8gYmUgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIHdoZW4gdGhlIHNvdXJjZSByb290IGlzIGEgcHJlZml4IG9mIHRoZVxuICAgIC8vIHNvdXJjZSAodmFsaWQsIGJ1dCB3aHk/PykuIFNlZSBnaXRodWIgaXNzdWUgIzE5OSBhbmQgYnVnemlsLmxhLzExODg5ODIuXG4gICAgLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlUm9vdCAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlUm9vdCkgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZSlcbiAgICAgICAgPyB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZSlcbiAgICAgICAgOiBzb3VyY2U7XG4gICAgfSk7XG5cbiAgLy8gUGFzcyBgdHJ1ZWAgYmVsb3cgdG8gYWxsb3cgZHVwbGljYXRlIG5hbWVzIGFuZCBzb3VyY2VzLiBXaGlsZSBzb3VyY2UgbWFwc1xuICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkLCB0aGUgVHlwZVNjcmlwdCBjb21waWxlclxuICAvLyBzb21ldGltZXMgZ2VuZXJhdGVzIHNvdXJjZSBtYXBzIHdpdGggZHVwbGljYXRlcyBpbiB0aGVtLiBTZWUgR2l0aHViIGlzc3VlXG4gIC8vICM3MiBhbmQgYnVnemlsLmxhLzg4OTQ5Mi5cbiAgdGhpcy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkobmFtZXMubWFwKFN0cmluZyksIHRydWUpO1xuICB0aGlzLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMsIHRydWUpO1xuXG4gIHRoaXMuX2Fic29sdXRlU291cmNlcyA9IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgcywgYVNvdXJjZU1hcFVSTCk7XG4gIH0pO1xuXG4gIHRoaXMuc291cmNlUm9vdCA9IHNvdXJjZVJvb3Q7XG4gIHRoaXMuc291cmNlc0NvbnRlbnQgPSBzb3VyY2VzQ29udGVudDtcbiAgdGhpcy5fbWFwcGluZ3MgPSBtYXBwaW5ncztcbiAgdGhpcy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgdGhpcy5maWxlID0gZmlsZTtcbn1cblxuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZmluZCB0aGUgaW5kZXggb2YgYSBzb3VyY2UuICBSZXR1cm5zIC0xIGlmIG5vdFxuICogZm91bmQuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kU291cmNlSW5kZXggPSBmdW5jdGlvbihhU291cmNlKSB7XG4gIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgIHJlbGF0aXZlU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhyZWxhdGl2ZVNvdXJjZSkpIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlcy5pbmRleE9mKHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIC8vIE1heWJlIGFTb3VyY2UgaXMgYW4gYWJzb2x1dGUgVVJMIGFzIHJldHVybmVkIGJ5IHxzb3VyY2VzfC4gIEluXG4gIC8vIHRoaXMgY2FzZSB3ZSBjYW4ndCBzaW1wbHkgdW5kbyB0aGUgdHJhbnNmb3JtLlxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IHRoaXMuX2Fic29sdXRlU291cmNlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVNvdXJjZXNbaV0gPT0gYVNvdXJjZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGZyb20gYSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIFNvdXJjZU1hcEdlbmVyYXRvciBhU291cmNlTWFwXG4gKiAgICAgICAgVGhlIHNvdXJjZSBtYXAgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuICogQHBhcmFtIFN0cmluZyBhU291cmNlTWFwVVJMXG4gKiAgICAgICAgVGhlIFVSTCBhdCB3aGljaCB0aGUgc291cmNlIG1hcCBjYW4gYmUgZm91bmQgKG9wdGlvbmFsKVxuICogQHJldHVybnMgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgICB2YXIgc21jID0gT2JqZWN0LmNyZWF0ZShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5cbiAgICB2YXIgbmFtZXMgPSBzbWMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX25hbWVzLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gICAgdmFyIHNvdXJjZXMgPSBzbWMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fc291cmNlcy50b0FycmF5KCksIHRydWUpO1xuICAgIHNtYy5zb3VyY2VSb290ID0gYVNvdXJjZU1hcC5fc291cmNlUm9vdDtcbiAgICBzbWMuc291cmNlc0NvbnRlbnQgPSBhU291cmNlTWFwLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KHNtYy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWMuc291cmNlUm9vdCk7XG4gICAgc21jLmZpbGUgPSBhU291cmNlTWFwLl9maWxlO1xuICAgIHNtYy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgICBzbWMuX2Fic29sdXRlU291cmNlcyA9IHNtYy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gdXRpbC5jb21wdXRlU291cmNlVVJMKHNtYy5zb3VyY2VSb290LCBzLCBhU291cmNlTWFwVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlU291cmNlcy5zbGljZSgpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gbmFtZTogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIsIG9yIG51bGwuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsXG4gICAgICBcImdlbmVyYXRlZExpbmVcIixcbiAgICAgIFwiZ2VuZXJhdGVkQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuYXQoc291cmNlKTtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwodGhpcy5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbmFtZScsIG51bGwpO1xuICAgICAgICBpZiAobmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5hdChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbExpbmUnLCBudWxsKSxcbiAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIG5hbWU6IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgdGhlIHNvdXJjZSBjb250ZW50IGZvciBldmVyeSBzb3VyY2UgaW4gdGhlIHNvdXJjZVxuICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnQubGVuZ3RoID49IHRoaXMuX3NvdXJjZXMuc2l6ZSgpICYmXG4gICAgICAhdGhpcy5zb3VyY2VzQ29udGVudC5zb21lKGZ1bmN0aW9uIChzYykgeyByZXR1cm4gc2MgPT0gbnVsbDsgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChhU291cmNlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbaW5kZXhdO1xuICAgIH1cblxuICAgIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICByZWxhdGl2ZVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCByZWxhdGl2ZVNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIHVybDtcbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGxcbiAgICAgICAgJiYgKHVybCA9IHV0aWwudXJsUGFyc2UodGhpcy5zb3VyY2VSb290KSkpIHtcbiAgICAgIC8vIFhYWDogZmlsZTovLyBVUklzIGFuZCBhYnNvbHV0ZSBwYXRocyBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZm9yXG4gICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0b1xuICAgICAgLy8gYmVoYXZlIGxpa2UgaXQgd291bGQgaWYgdGhleSB3ZXJlIHJ1bm5pbmcgYSBsb2NhbCBIVFRQIHNlcnZlci4gU2VlXG4gICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODU1OTcuXG4gICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSByZWxhdGl2ZVNvdXJjZS5yZXBsYWNlKC9eZmlsZTpcXC9cXC8vLCBcIlwiKTtcbiAgICAgIGlmICh1cmwuc2NoZW1lID09IFwiZmlsZVwiXG4gICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihmaWxlVXJpQWJzUGF0aCldXG4gICAgICB9XG5cbiAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5wYXRoID09IFwiL1wiKVxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKFwiL1wiICsgcmVsYXRpdmVTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIHJlbGF0aXZlU291cmNlKV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IGZyb21cbiAgICAvLyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IuIEluIHRoYXQgY2FzZSwgd2VcbiAgICAvLyBkb24ndCB3YW50IHRvIHRocm93IGlmIHdlIGNhbid0IGZpbmQgdGhlIHNvdXJjZSAtIHdlIGp1c3Qgd2FudCB0b1xuICAgIC8vIHJldHVybiBudWxsLCBzbyB3ZSBwcm92aWRlIGEgZmxhZyB0byBleGl0IGdyYWNlZnVsbHkuXG4gICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgcmVsYXRpdmVTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgc291cmNlID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICBuZWVkbGUsXG4gICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gbmVlZGxlLnNvdXJjZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH07XG5cbmV4cG9ydHMuQmFzaWNTb3VyY2VNYXBDb25zdW1lciA9IEJhc2ljU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQW4gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaFxuICogd2UgY2FuIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbi4gSXQgZGlmZmVycyBmcm9tIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5cbiAqIHRoYXQgaXQgdGFrZXMgXCJpbmRleGVkXCIgc291cmNlIG1hcHMgKGkuZS4gb25lcyB3aXRoIGEgXCJzZWN0aW9uc1wiIGZpZWxkKSBhc1xuICogaW5wdXQuXG4gKlxuICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIsIGlmIGdpdmVuLCBpcyBhIHN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0aGUgVVJMXG4gKiBhdCB3aGljaCB0aGUgc291cmNlIG1hcCB3YXMgZm91bmQuICBUaGlzIFVSTCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlXG4gKiBzb3VyY2VzIGFycmF5LlxuICpcbiAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0I2hlYWRpbmc9aC41MzVlczN4ZXByZ3RcbiAqL1xuZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSwgYVNvdXJjZU1hcFVSTClcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb3IgbnVsbC5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbiB3ZSdyZSB0cnlpbmcgdG8gbWFwXG4gICAgLy8gdG8gYW4gb3JpZ2luYWwgcG9zaXRpb24uXG4gICAgdmFyIHNlY3Rpb25JbmRleCA9IGJpbmFyeVNlYXJjaC5zZWFyY2gobmVlZGxlLCB0aGlzLl9zZWN0aW9ucyxcbiAgICAgIGZ1bmN0aW9uKG5lZWRsZSwgc2VjdGlvbikge1xuICAgICAgICB2YXIgY21wID0gbmVlZGxlLmdlbmVyYXRlZExpbmUgLSBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lO1xuICAgICAgICBpZiAoY21wKSB7XG4gICAgICAgICAgcmV0dXJuIGNtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAobmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgIH0pO1xuICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcblxuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIG5hbWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlY3Rpb24uY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICBsaW5lOiBuZWVkbGUuZ2VuZXJhdGVkTGluZSAtXG4gICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICBjb2x1bW46IG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmVcbiAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgOiAwKSxcbiAgICAgIGJpYXM6IGFBcmdzLmJpYXNcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5ldmVyeShmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHMuY29uc3VtZXIuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKTtcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIHZhciBjb250ZW50ID0gc2VjdGlvbi5jb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIHRydWUpO1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuIFxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIC8vIE9ubHkgY29uc2lkZXIgdGhpcyBzZWN0aW9uIGlmIHRoZSByZXF1ZXN0ZWQgc291cmNlIGlzIGluIHRoZSBsaXN0IG9mXG4gICAgICAvLyBzb3VyY2VzIG9mIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLl9maW5kU291cmNlSW5kZXgodXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGdlbmVyYXRlZFBvc2l0aW9uID0gc2VjdGlvbi5jb25zdW1lci5nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncyk7XG4gICAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb24pIHtcbiAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWRQb3NpdGlvbi5jb2x1bW4gK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmVcbiAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICA6IDApXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuICAgICAgdmFyIHNlY3Rpb25NYXBwaW5ncyA9IHNlY3Rpb24uY29uc3VtZXIuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWN0aW9uTWFwcGluZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBzZWN0aW9uTWFwcGluZ3Nbal07XG5cbiAgICAgICAgdmFyIHNvdXJjZSA9IHNlY3Rpb24uY29uc3VtZXIuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc2VjdGlvbi5jb25zdW1lci5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSkge1xuICAgICAgICAgIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvcXVpY2stc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gfHwgJyc7XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdIHx8ICcnO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW5vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.js deleted file mode 100644 index b4eb08742..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.js +++ /dev/null @@ -1,3233 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["sourceMap"] = factory(); - else - root["sourceMap"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - /* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ - exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; - exports.SourceNode = __webpack_require__(10).SourceNode; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var base64VLQ = __webpack_require__(2); - var util = __webpack_require__(4); - var ArraySet = __webpack_require__(5).ArraySet; - var MappingList = __webpack_require__(6).MappingList; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - var base64 = __webpack_require__(3); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - - /** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ - exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; - }; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || urlRegexp.test(aPath); - }; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - - var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); - }()); - - function identity (s) { - return s; - } - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - - function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 === null) { - return 1; // aStr2 !== null - } - - if (aStr2 === null) { - return -1; // aStr1 !== null - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; - } - - /** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - - /** - * Strip any JSON XSSI avoidance prefix from the string (as documented - * in the source maps specification), and then parse the string as - * JSON. - */ - function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); - } - exports.parseSourceMapInput = parseSourceMapInput; - - /** - * Compute the URL of a source given the the source root, the source's - * URL, and the source map's URL. - */ - function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ''; - - if (sourceRoot) { - // This follows what Chrome does. - if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { - sourceRoot += '/'; - } - // The spec says: - // Line 4: An optional source root, useful for relocating source - // files on a server or removing repeated values in the - // “sources” entry. This value is prepended to the individual - // entries in the “source” field. - sourceURL = sourceRoot + sourceURL; - } - - // Historically, SourceMapConsumer did not take the sourceMapURL as - // a parameter. This mode is still somewhat supported, which is why - // this code block is conditional. However, it's preferable to pass - // the source map URL to SourceMapConsumer, so that this function - // can implement the source URL resolution algorithm as outlined in - // the spec. This block is basically the equivalent of: - // new URL(sourceURL, sourceMapURL).toString() - // ... except it avoids using URL, which wasn't available in the - // older releases of node still supported by this library. - // - // The spec says: - // If the sources are not absolute URLs after prepending of the - // “sourceRoot”, the sources are resolved relative to the - // SourceMap (like resolving script src in a html document). - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - // Strip the last path component, but keep the "/". - var index = parsed.path.lastIndexOf('/'); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - - return normalize(sourceURL); - } - exports.computeSourceURL = computeSourceURL; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - - /** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ - function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - - /** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ - function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; - } - - /** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ - MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - - /** - * Add the given source mapping. - * - * @param Object aMapping - */ - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - - /** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - - exports.MappingList = MappingList; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var binarySearch = __webpack_require__(8); - var ArraySet = __webpack_require__(5).ArraySet; - var base64VLQ = __webpack_require__(2); - var quickSort = __webpack_require__(9).quickSort; - - function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) - : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); - } - - SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - - /** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number is 1-based. - * - column: Optional. the column number in the original source. - * The column number is 0-based. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - - exports.SourceMapConsumer = SourceMapConsumer; - - /** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The first parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this._absoluteSources = this._sources.toArray().map(function (s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; - } - - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - - /** - * Utility function to find the index of a source. Returns -1 if not - * found. - */ - BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - - // Maybe aSource is an absolute URL as returned by |sources|. In - // this case we can't simply undo the transform. - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - - return -1; - }; - - /** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @param String aSourceMapURL - * The URL at which the source map can be found (optional) - * @returns BasicSourceMapConsumer - */ - BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function (s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - BasicSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._absoluteSources.slice(); - } - }); - - /** - * Provide the JIT with a nice shape / hidden class. - */ - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - - /** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ - BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ - BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } - - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - - /** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The first parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ - function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) - } - }); - } - - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - - /** - * The version of the source mapping spec that we are consuming. - */ - IndexedSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ - IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - - /** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; - }; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - // It turns out that some (most?) JavaScript engines don't self-host - // `Array.prototype.sort`. This makes sense because C++ will likely remain - // faster than JS when doing raw CPU-intensive sorting. However, when using a - // custom comparator function, calling back and forth between the VM's C++ and - // JIT'd JS is rather slow *and* loses JIT type information, resulting in - // worse generated code for the comparator function than would be optimal. In - // fact, when sorting with a comparator, these costs outweigh the benefits of - // sorting in C++. By using our own JS-implemented Quick Sort (below), we get - // a ~3500ms mean speed-up in `bench/bench.html`. - - /** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - - /** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ - function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); - } - - /** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ - function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - - /** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ - exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - var util = __webpack_require__(4); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Newline character code for charCodeAt() comparisons - var NEWLINE_CODE = 10; - - // Private symbol for identifying `SourceNode`s when multiple versions of - // the source-map library are loaded. This MUST NOT CHANGE across - // versions! - var isSourceNode = "$$$isSourceNode$$$"; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex] || ''; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ''; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - - -/***/ }) -/******/ ]) -}); -; \ No newline at end of file diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.min.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.min.js deleted file mode 100644 index c7c72dad8..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/dist/source-map.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sourceMap=n():e.sourceMap=n()}(this,function(){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){n.SourceMapGenerator=r(1).SourceMapGenerator,n.SourceMapConsumer=r(7).SourceMapConsumer,n.SourceNode=r(10).SourceNode},function(e,n,r){function t(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new s,this._names=new s,this._mappings=new a,this._sourcesContents=null}var o=r(2),i=r(4),s=r(5).ArraySet,a=r(6).MappingList;t.prototype._version=3,t.fromSourceMap=function(e){var n=e.sourceRoot,r=new t({file:e.file,sourceRoot:n});return e.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=n&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),r.addMapping(t)}),e.sources.forEach(function(t){var o=t;null!==n&&(o=i.relative(n,t)),r._sources.has(o)||r._sources.add(o);var s=e.sourceContentFor(t);null!=s&&r.setSourceContent(t,s)}),r},t.prototype.addMapping=function(e){var n=i.getArg(e,"generated"),r=i.getArg(e,"original",null),t=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,r,t,o),null!=t&&(t=String(t),this._sources.has(t)||this._sources.add(t)),null!=o&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:o})},t.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},t.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var o=this._sourceRoot;null!=o&&(t=i.relative(o,t));var a=new s,u=new s;this._mappings.unsortedForEach(function(n){if(n.source===t&&null!=n.originalLine){var s=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=s.source&&(n.source=s.source,null!=r&&(n.source=i.join(r,n.source)),null!=o&&(n.source=i.relative(o,n.source)),n.originalLine=s.line,n.originalColumn=s.column,null!=s.name&&(n.name=s.name))}var l=n.source;null==l||a.has(l)||a.add(l);var c=n.name;null==c||u.has(c)||u.add(c)},this),this._sources=a,this._names=u,e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=i.join(r,n)),null!=o&&(n=i.relative(o,n)),this.setSourceContent(n,t))},this)},t.prototype._validateMapping=function(e,n,r,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}))},t.prototype._serializeMappings=function(){for(var e,n,r,t,s=0,a=1,u=0,l=0,c=0,g=0,p="",h=this._mappings.toArray(),f=0,d=h.length;f0){if(!i.compareByGeneratedPositionsInflated(n,h[f-1]))continue;e+=","}e+=o.encode(n.generatedColumn-s),s=n.generatedColumn,null!=n.source&&(t=this._sources.indexOf(n.source),e+=o.encode(t-g),g=t,e+=o.encode(n.originalLine-1-l),l=n.originalLine-1,e+=o.encode(n.originalColumn-u),u=n.originalColumn,null!=n.name&&(r=this._names.indexOf(n.name),e+=o.encode(r-c),c=r)),p+=e}return p},t.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=i.relative(n,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},t.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},t.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=t},function(e,n,r){function t(e){return e<0?(-e<<1)+1:(e<<1)+0}function o(e){var n=1===(1&e),r=e>>1;return n?-r:r}var i=r(3),s=5,a=1<>>=s,o>0&&(n|=l),r+=i.encode(n);while(o>0);return r},n.decode=function(e,n,r){var t,a,c=e.length,g=0,p=0;do{if(n>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(a=i.decode(e.charCodeAt(n++)),a===-1)throw new Error("Invalid base64 digit: "+e.charAt(n-1));t=!!(a&l),a&=u,g+=a<=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return r=u.join("/"),""===r&&(r=a?"/":"."),i?(i.path=r,o(i)):r}function s(e,n){""===e&&(e="."),""===n&&(n=".");var r=t(n),s=t(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),o(r);if(r||n.match(y))return n;if(s&&!s.host&&!s.path)return s.host=n,o(s);var a="/"===n.charAt(0)?n:i(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,o(s)):a}function a(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return n;if(e=e.slice(0,t),e.match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)}function u(e){return e}function l(e){return g(e)?"$"+e:e}function c(e){return g(e)?e.slice(1):e}function g(e){if(!e)return!1;var n=e.length;if(n<9)return!1;if(95!==e.charCodeAt(n-1)||95!==e.charCodeAt(n-2)||111!==e.charCodeAt(n-3)||116!==e.charCodeAt(n-4)||111!==e.charCodeAt(n-5)||114!==e.charCodeAt(n-6)||112!==e.charCodeAt(n-7)||95!==e.charCodeAt(n-8)||95!==e.charCodeAt(n-9))return!1;for(var r=n-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function p(e,n,r){var t=f(e.source,n.source);return 0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t||r?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=e.generatedLine-n.generatedLine,0!==t?t:f(e.name,n.name)))))}function h(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t||r?t:(t=f(e.source,n.source),0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:f(e.name,n.name)))))}function f(e,n){return e===n?0:null===e?1:null===n?-1:e>n?1:-1}function d(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=f(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:f(e.name,n.name)))))}function m(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}function _(e,n,r){if(n=n||"",e&&("/"!==e[e.length-1]&&"/"!==n[0]&&(e+="/"),n=e+n),r){var a=t(r);if(!a)throw new Error("sourceMapURL could not be parsed");if(a.path){var u=a.path.lastIndexOf("/");u>=0&&(a.path=a.path.substring(0,u+1))}n=s(o(a),n)}return i(n)}n.getArg=r;var v=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,y=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||v.test(e)},n.relative=a;var C=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=C?u:l,n.fromSetString=C?u:c,n.compareByOriginalPositions=p,n.compareByGeneratedPositionsDeflated=h,n.compareByGeneratedPositionsInflated=d,n.parseSourceMapInput=m,n.computeSourceURL=_},function(e,n,r){function t(){this._array=[],this._set=s?new Map:Object.create(null)}var o=r(4),i=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;t.fromArray=function(e,n){for(var r=new t,o=0,i=e.length;o=0)return n}else{var r=o.toSetString(e);if(i.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},t.prototype.at=function(e){if(e>=0&&er||t==r&&s>=o||i.compareByGeneratedPositionsInflated(e,n)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=r(4);o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){t(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=o},function(e,n,r){function t(e,n){var r=e;return"string"==typeof e&&(r=a.parseSourceMapInput(e)),null!=r.sections?new s(r,n):new o(r,n)}function o(e,n){var r=e;"string"==typeof e&&(r=a.parseSourceMapInput(e));var t=a.getArg(r,"version"),o=a.getArg(r,"sources"),i=a.getArg(r,"names",[]),s=a.getArg(r,"sourceRoot",null),u=a.getArg(r,"sourcesContent",null),c=a.getArg(r,"mappings"),g=a.getArg(r,"file",null);if(t!=this._version)throw new Error("Unsupported version: "+t);s&&(s=a.normalize(s)),o=o.map(String).map(a.normalize).map(function(e){return s&&a.isAbsolute(s)&&a.isAbsolute(e)?a.relative(s,e):e}),this._names=l.fromArray(i.map(String),!0),this._sources=l.fromArray(o,!0),this._absoluteSources=this._sources.toArray().map(function(e){return a.computeSourceURL(s,e,n)}),this.sourceRoot=s,this.sourcesContent=u,this._mappings=c,this._sourceMapURL=n,this.file=g}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e,n){var r=e;"string"==typeof e&&(r=a.parseSourceMapInput(e));var o=a.getArg(r,"version"),i=a.getArg(r,"sections");if(o!=this._version)throw new Error("Unsupported version: "+o);this._sources=new l,this._names=new l;var s={line:-1,column:0};this._sections=i.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var r=a.getArg(e,"offset"),o=a.getArg(r,"line"),i=a.getArg(r,"column");if(o=0){var i=this._originalMappings[o];if(void 0===e.column)for(var s=i.originalLine;i&&i.originalLine===s;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o];else for(var l=i.originalColumn;i&&i.originalLine===n&&i.originalColumn==l;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o]}return t},n.SourceMapConsumer=t,o.prototype=Object.create(t.prototype),o.prototype.consumer=t,o.prototype._findSourceIndex=function(e){var n=e;if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),this._sources.has(n))return this._sources.indexOf(n);var r;for(r=0;r1&&(r.source=d+o[1],d+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=f+o[3],f=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),A.push(r),"number"==typeof r.originalLine&&S.push(r)}g(A,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=A,g(S,a.compareByOriginalPositions),this.__originalMappings=S},o.prototype._findMapping=function(e,n,r,t,o,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return u.search(e,n,o,i)},o.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=a.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),i=a.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var s=a.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:a.getArg(o,"originalLine",null),column:a.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},o.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},o.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var t=e;null!=this.sourceRoot&&(t=a.relative(this.sourceRoot,t));var o;if(null!=this.sourceRoot&&(o=a.urlParse(this.sourceRoot))){var i=t.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!o.path||"/"==o.path)&&this._sources.has("/"+t))return this.sourcesContent[this._sources.indexOf("/"+t)]}if(n)return null;throw new Error('"'+t+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(n=this._findSourceIndex(n),n<0)return{line:null,column:null,lastColumn:null};var r={source:n,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=o,s.prototype=Object.create(t.prototype),s.prototype.constructor=t,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],n=0;n0?t-u>1?r(u,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,o,i,s,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},function(e,n){function r(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}function t(e,n){return Math.round(e+Math.random()*(n-e))}function o(e,n,i,s){if(i=0;n--)this.prepend(e[n]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},t.prototype.walk=function(e){for(var n,r=0,t=this.children.length;r0){for(n=[],r=0;r 0 && aGenerated.column >= 0\n\t && !aOriginal && !aSource && !aName) {\n\t // Case 1.\n\t return;\n\t }\n\t else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && aOriginal.line > 0 && aOriginal.column >= 0\n\t && aSource) {\n\t // Cases 2 and 3.\n\t return;\n\t }\n\t else {\n\t throw new Error('Invalid mapping: ' + JSON.stringify({\n\t generated: aGenerated,\n\t source: aSource,\n\t original: aOriginal,\n\t name: aName\n\t }));\n\t }\n\t };\n\t\n\t/**\n\t * Serialize the accumulated mappings in to the stream of base 64 VLQs\n\t * specified by the source map format.\n\t */\n\tSourceMapGenerator.prototype._serializeMappings =\n\t function SourceMapGenerator_serializeMappings() {\n\t var previousGeneratedColumn = 0;\n\t var previousGeneratedLine = 1;\n\t var previousOriginalColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousName = 0;\n\t var previousSource = 0;\n\t var result = '';\n\t var next;\n\t var mapping;\n\t var nameIdx;\n\t var sourceIdx;\n\t\n\t var mappings = this._mappings.toArray();\n\t for (var i = 0, len = mappings.length; i < len; i++) {\n\t mapping = mappings[i];\n\t next = ''\n\t\n\t if (mapping.generatedLine !== previousGeneratedLine) {\n\t previousGeneratedColumn = 0;\n\t while (mapping.generatedLine !== previousGeneratedLine) {\n\t next += ';';\n\t previousGeneratedLine++;\n\t }\n\t }\n\t else {\n\t if (i > 0) {\n\t if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n\t continue;\n\t }\n\t next += ',';\n\t }\n\t }\n\t\n\t next += base64VLQ.encode(mapping.generatedColumn\n\t - previousGeneratedColumn);\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (mapping.source != null) {\n\t sourceIdx = this._sources.indexOf(mapping.source);\n\t next += base64VLQ.encode(sourceIdx - previousSource);\n\t previousSource = sourceIdx;\n\t\n\t // lines are stored 0-based in SourceMap spec version 3\n\t next += base64VLQ.encode(mapping.originalLine - 1\n\t - previousOriginalLine);\n\t previousOriginalLine = mapping.originalLine - 1;\n\t\n\t next += base64VLQ.encode(mapping.originalColumn\n\t - previousOriginalColumn);\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (mapping.name != null) {\n\t nameIdx = this._names.indexOf(mapping.name);\n\t next += base64VLQ.encode(nameIdx - previousName);\n\t previousName = nameIdx;\n\t }\n\t }\n\t\n\t result += next;\n\t }\n\t\n\t return result;\n\t };\n\t\n\tSourceMapGenerator.prototype._generateSourcesContent =\n\t function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n\t return aSources.map(function (source) {\n\t if (!this._sourcesContents) {\n\t return null;\n\t }\n\t if (aSourceRoot != null) {\n\t source = util.relative(aSourceRoot, source);\n\t }\n\t var key = util.toSetString(source);\n\t return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n\t ? this._sourcesContents[key]\n\t : null;\n\t }, this);\n\t };\n\t\n\t/**\n\t * Externalize the source map.\n\t */\n\tSourceMapGenerator.prototype.toJSON =\n\t function SourceMapGenerator_toJSON() {\n\t var map = {\n\t version: this._version,\n\t sources: this._sources.toArray(),\n\t names: this._names.toArray(),\n\t mappings: this._serializeMappings()\n\t };\n\t if (this._file != null) {\n\t map.file = this._file;\n\t }\n\t if (this._sourceRoot != null) {\n\t map.sourceRoot = this._sourceRoot;\n\t }\n\t if (this._sourcesContents) {\n\t map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n\t }\n\t\n\t return map;\n\t };\n\t\n\t/**\n\t * Render the source map being generated to a string.\n\t */\n\tSourceMapGenerator.prototype.toString =\n\t function SourceMapGenerator_toString() {\n\t return JSON.stringify(this.toJSON());\n\t };\n\t\n\texports.SourceMapGenerator = SourceMapGenerator;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\t\n\tvar base64 = __webpack_require__(3);\n\t\n\t// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t// length quantities we use in the source map spec, the first bit is the sign,\n\t// the next four bits are the actual value, and the 6th bit is the\n\t// continuation bit. The continuation bit tells us whether there are more\n\t// digits in this value following this digit.\n\t//\n\t// Continuation\n\t// | Sign\n\t// | |\n\t// V V\n\t// 101011\n\t\n\tvar VLQ_BASE_SHIFT = 5;\n\t\n\t// binary: 100000\n\tvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\t\n\t// binary: 011111\n\tvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\t\n\t// binary: 100000\n\tvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\t\n\t/**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\tfunction toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t}\n\t\n\t/**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\tfunction fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t}\n\t\n\t/**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\texports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\t\n\t var vlq = toVLQSigned(aValue);\n\t\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\t\n\t return encoded;\n\t};\n\t\n\t/**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\texports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\t\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\t\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\t\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\t\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\t\n\t/**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\texports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t};\n\t\n\t/**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\texports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\t\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\t\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\t\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\t\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\t\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\t\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\t\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\t\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\t\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\t\n\t // Invalid base64 digit.\n\t return -1;\n\t};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t/**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\tfunction getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t}\n\texports.getArg = getArg;\n\t\n\tvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\n\tvar dataUrlRegexp = /^data:.+\\,.+$/;\n\t\n\tfunction urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t}\n\texports.urlParse = urlParse;\n\t\n\tfunction urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t}\n\texports.urlGenerate = urlGenerate;\n\t\n\t/**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consecutive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\tfunction normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\t\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\t\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\t\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t}\n\texports.normalize = normalize;\n\t\n\t/**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\tfunction join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\t\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\t\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\t\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\t\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\t\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t}\n\texports.join = join;\n\t\n\texports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n\t};\n\t\n\t/**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\tfunction relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t\n\t aRoot = aRoot.replace(/\\/$/, '');\n\t\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\t\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\t\n\t ++level;\n\t }\n\t\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t}\n\texports.relative = relative;\n\t\n\tvar supportsNullProto = (function () {\n\t var obj = Object.create(null);\n\t return !('__proto__' in obj);\n\t}());\n\t\n\tfunction identity (s) {\n\t return s;\n\t}\n\t\n\t/**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\tfunction toSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return '$' + aStr;\n\t }\n\t\n\t return aStr;\n\t}\n\texports.toSetString = supportsNullProto ? identity : toSetString;\n\t\n\tfunction fromSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return aStr.slice(1);\n\t }\n\t\n\t return aStr;\n\t}\n\texports.fromSetString = supportsNullProto ? identity : fromSetString;\n\t\n\tfunction isProtoString(s) {\n\t if (!s) {\n\t return false;\n\t }\n\t\n\t var length = s.length;\n\t\n\t if (length < 9 /* \"__proto__\".length */) {\n\t return false;\n\t }\n\t\n\t if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n\t s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n\t s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n\t s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 9) !== 95 /* '_' */) {\n\t return false;\n\t }\n\t\n\t for (var i = length - 10; i >= 0; i--) {\n\t if (s.charCodeAt(i) !== 36 /* '$' */) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\tfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByOriginalPositions = compareByOriginalPositions;\n\t\n\t/**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\tfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\t\n\tfunction strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\t\n\t if (aStr1 === null) {\n\t return 1; // aStr2 !== null\n\t }\n\t\n\t if (aStr2 === null) {\n\t return -1; // aStr1 !== null\n\t }\n\t\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\t\n\t return -1;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\tfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\t\n\t/**\n\t * Strip any JSON XSSI avoidance prefix from the string (as documented\n\t * in the source maps specification), and then parse the string as\n\t * JSON.\n\t */\n\tfunction parseSourceMapInput(str) {\n\t return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n\t}\n\texports.parseSourceMapInput = parseSourceMapInput;\n\t\n\t/**\n\t * Compute the URL of a source given the the source root, the source's\n\t * URL, and the source map's URL.\n\t */\n\tfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n\t sourceURL = sourceURL || '';\n\t\n\t if (sourceRoot) {\n\t // This follows what Chrome does.\n\t if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n\t sourceRoot += '/';\n\t }\n\t // The spec says:\n\t // Line 4: An optional source root, useful for relocating source\n\t // files on a server or removing repeated values in the\n\t // “sources” entry. This value is prepended to the individual\n\t // entries in the “source” field.\n\t sourceURL = sourceRoot + sourceURL;\n\t }\n\t\n\t // Historically, SourceMapConsumer did not take the sourceMapURL as\n\t // a parameter. This mode is still somewhat supported, which is why\n\t // this code block is conditional. However, it's preferable to pass\n\t // the source map URL to SourceMapConsumer, so that this function\n\t // can implement the source URL resolution algorithm as outlined in\n\t // the spec. This block is basically the equivalent of:\n\t // new URL(sourceURL, sourceMapURL).toString()\n\t // ... except it avoids using URL, which wasn't available in the\n\t // older releases of node still supported by this library.\n\t //\n\t // The spec says:\n\t // If the sources are not absolute URLs after prepending of the\n\t // “sourceRoot”, the sources are resolved relative to the\n\t // SourceMap (like resolving script src in a html document).\n\t if (sourceMapURL) {\n\t var parsed = urlParse(sourceMapURL);\n\t if (!parsed) {\n\t throw new Error(\"sourceMapURL could not be parsed\");\n\t }\n\t if (parsed.path) {\n\t // Strip the last path component, but keep the \"/\".\n\t var index = parsed.path.lastIndexOf('/');\n\t if (index >= 0) {\n\t parsed.path = parsed.path.substring(0, index + 1);\n\t }\n\t }\n\t sourceURL = join(urlGenerate(parsed), sourceURL);\n\t }\n\t\n\t return normalize(sourceURL);\n\t}\n\texports.computeSourceURL = computeSourceURL;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar hasNativeMap = typeof Map !== \"undefined\";\n\t\n\t/**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\tfunction ArraySet() {\n\t this._array = [];\n\t this._set = hasNativeMap ? new Map() : Object.create(null);\n\t}\n\t\n\t/**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\tArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t};\n\t\n\t/**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\tArraySet.prototype.size = function ArraySet_size() {\n\t return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n\t};\n\t\n\t/**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n\t var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t if (hasNativeMap) {\n\t this._set.set(aStr, idx);\n\t } else {\n\t this._set[sStr] = idx;\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.has = function ArraySet_has(aStr) {\n\t if (hasNativeMap) {\n\t return this._set.has(aStr);\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t return has.call(this._set, sStr);\n\t }\n\t};\n\t\n\t/**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t if (hasNativeMap) {\n\t var idx = this._set.get(aStr);\n\t if (idx >= 0) {\n\t return idx;\n\t }\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t if (has.call(this._set, sStr)) {\n\t return this._set[sStr];\n\t }\n\t }\n\t\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t};\n\t\n\t/**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\tArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t};\n\t\n\t/**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\tArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t};\n\t\n\texports.ArraySet = ArraySet;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2014 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\t\n\t/**\n\t * Determine whether mappingB is after mappingA with respect to generated\n\t * position.\n\t */\n\tfunction generatedPositionAfter(mappingA, mappingB) {\n\t // Optimized for most common case\n\t var lineA = mappingA.generatedLine;\n\t var lineB = mappingB.generatedLine;\n\t var columnA = mappingA.generatedColumn;\n\t var columnB = mappingB.generatedColumn;\n\t return lineB > lineA || lineB == lineA && columnB >= columnA ||\n\t util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n\t}\n\t\n\t/**\n\t * A data structure to provide a sorted view of accumulated mappings in a\n\t * performance conscious manner. It trades a neglibable overhead in general\n\t * case for a large speedup in case of mappings being added in order.\n\t */\n\tfunction MappingList() {\n\t this._array = [];\n\t this._sorted = true;\n\t // Serves as infimum\n\t this._last = {generatedLine: -1, generatedColumn: 0};\n\t}\n\t\n\t/**\n\t * Iterate through internal items. This method takes the same arguments that\n\t * `Array.prototype.forEach` takes.\n\t *\n\t * NOTE: The order of the mappings is NOT guaranteed.\n\t */\n\tMappingList.prototype.unsortedForEach =\n\t function MappingList_forEach(aCallback, aThisArg) {\n\t this._array.forEach(aCallback, aThisArg);\n\t };\n\t\n\t/**\n\t * Add the given source mapping.\n\t *\n\t * @param Object aMapping\n\t */\n\tMappingList.prototype.add = function MappingList_add(aMapping) {\n\t if (generatedPositionAfter(this._last, aMapping)) {\n\t this._last = aMapping;\n\t this._array.push(aMapping);\n\t } else {\n\t this._sorted = false;\n\t this._array.push(aMapping);\n\t }\n\t};\n\t\n\t/**\n\t * Returns the flat, sorted array of mappings. The mappings are sorted by\n\t * generated position.\n\t *\n\t * WARNING: This method returns internal data without copying, for\n\t * performance. The return value must NOT be mutated, and should be treated as\n\t * an immutable borrow. If you want to take ownership, you must make your own\n\t * copy.\n\t */\n\tMappingList.prototype.toArray = function MappingList_toArray() {\n\t if (!this._sorted) {\n\t this._array.sort(util.compareByGeneratedPositionsInflated);\n\t this._sorted = true;\n\t }\n\t return this._array;\n\t};\n\t\n\texports.MappingList = MappingList;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar binarySearch = __webpack_require__(8);\n\tvar ArraySet = __webpack_require__(5).ArraySet;\n\tvar base64VLQ = __webpack_require__(2);\n\tvar quickSort = __webpack_require__(9).quickSort;\n\t\n\tfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t return sourceMap.sections != null\n\t ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n\t : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n\t}\n\t\n\tSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n\t return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n\t}\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tSourceMapConsumer.prototype._version = 3;\n\t\n\t// `__generatedMappings` and `__originalMappings` are arrays that hold the\n\t// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n\t// are lazily instantiated, accessed via the `_generatedMappings` and\n\t// `_originalMappings` getters respectively, and we only parse the mappings\n\t// and create these arrays once queried for a source location. We jump through\n\t// these hoops because there can be many thousands of mappings, and parsing\n\t// them is expensive, so we only want to do it if we must.\n\t//\n\t// Each object in the arrays is of the form:\n\t//\n\t// {\n\t// generatedLine: The line number in the generated code,\n\t// generatedColumn: The column number in the generated code,\n\t// source: The path to the original source file that generated this\n\t// chunk of code,\n\t// originalLine: The line number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// originalColumn: The column number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// name: The name of the original symbol which generated this chunk of\n\t// code.\n\t// }\n\t//\n\t// All properties except for `generatedLine` and `generatedColumn` can be\n\t// `null`.\n\t//\n\t// `_generatedMappings` is ordered by the generated positions.\n\t//\n\t// `_originalMappings` is ordered by the original positions.\n\t\n\tSourceMapConsumer.prototype.__generatedMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n\t configurable: true,\n\t enumerable: true,\n\t get: function () {\n\t if (!this.__generatedMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__generatedMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype.__originalMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n\t configurable: true,\n\t enumerable: true,\n\t get: function () {\n\t if (!this.__originalMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__originalMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype._charIsMappingSeparator =\n\t function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n\t var c = aStr.charAt(index);\n\t return c === \";\" || c === \",\";\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t throw new Error(\"Subclasses must implement _parseMappings\");\n\t };\n\t\n\tSourceMapConsumer.GENERATED_ORDER = 1;\n\tSourceMapConsumer.ORIGINAL_ORDER = 2;\n\t\n\tSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n\tSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Iterate over each mapping between an original source/line/column and a\n\t * generated line/column in this source map.\n\t *\n\t * @param Function aCallback\n\t * The function that is called with each mapping.\n\t * @param Object aContext\n\t * Optional. If specified, this object will be the value of `this` every\n\t * time that `aCallback` is called.\n\t * @param aOrder\n\t * Either `SourceMapConsumer.GENERATED_ORDER` or\n\t * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n\t * iterate over the mappings sorted by the generated file's line/column\n\t * order or the original's source/line/column order, respectively. Defaults to\n\t * `SourceMapConsumer.GENERATED_ORDER`.\n\t */\n\tSourceMapConsumer.prototype.eachMapping =\n\t function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n\t var context = aContext || null;\n\t var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\t\n\t var mappings;\n\t switch (order) {\n\t case SourceMapConsumer.GENERATED_ORDER:\n\t mappings = this._generatedMappings;\n\t break;\n\t case SourceMapConsumer.ORIGINAL_ORDER:\n\t mappings = this._originalMappings;\n\t break;\n\t default:\n\t throw new Error(\"Unknown order of iteration.\");\n\t }\n\t\n\t var sourceRoot = this.sourceRoot;\n\t mappings.map(function (mapping) {\n\t var source = mapping.source === null ? null : this._sources.at(mapping.source);\n\t source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n\t return {\n\t source: source,\n\t generatedLine: mapping.generatedLine,\n\t generatedColumn: mapping.generatedColumn,\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: mapping.name === null ? null : this._names.at(mapping.name)\n\t };\n\t }, this).forEach(aCallback, context);\n\t };\n\t\n\t/**\n\t * Returns all generated line and column information for the original source,\n\t * line, and column provided. If no column is provided, returns all mappings\n\t * corresponding to a either the line we are searching for or the next\n\t * closest line that has any mappings. Otherwise, returns all mappings\n\t * corresponding to the given line and either the column we are searching for\n\t * or the next closest column that has any offsets.\n\t *\n\t * The only argument is an object with the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number is 1-based.\n\t * - column: Optional. the column number in the original source.\n\t * The column number is 0-based.\n\t *\n\t * and an array of objects is returned, each with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tSourceMapConsumer.prototype.allGeneratedPositionsFor =\n\t function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n\t var line = util.getArg(aArgs, 'line');\n\t\n\t // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n\t // returns the index of the closest mapping less than the needle. By\n\t // setting needle.originalColumn to 0, we thus find the last mapping for\n\t // the given line, provided such a mapping exists.\n\t var needle = {\n\t source: util.getArg(aArgs, 'source'),\n\t originalLine: line,\n\t originalColumn: util.getArg(aArgs, 'column', 0)\n\t };\n\t\n\t needle.source = this._findSourceIndex(needle.source);\n\t if (needle.source < 0) {\n\t return [];\n\t }\n\t\n\t var mappings = [];\n\t\n\t var index = this._findMapping(needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t binarySearch.LEAST_UPPER_BOUND);\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\t\n\t return mappings;\n\t };\n\t\n\texports.SourceMapConsumer = SourceMapConsumer;\n\t\n\t/**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The first parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * The second parameter, if given, is a string whose value is the URL\n\t * at which the source map was found. This URL is used to compute the\n\t * sources array.\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\tfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\t\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t if (sourceRoot) {\n\t sourceRoot = util.normalize(sourceRoot);\n\t }\n\t\n\t sources = sources\n\t .map(String)\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\t\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names.map(String), true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\t\n\t this._absoluteSources = this._sources.toArray().map(function (s) {\n\t return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n\t });\n\t\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this._sourceMapURL = aSourceMapURL;\n\t this.file = file;\n\t}\n\t\n\tBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\t\n\t/**\n\t * Utility function to find the index of a source. Returns -1 if not\n\t * found.\n\t */\n\tBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n\t var relativeSource = aSource;\n\t if (this.sourceRoot != null) {\n\t relativeSource = util.relative(this.sourceRoot, relativeSource);\n\t }\n\t\n\t if (this._sources.has(relativeSource)) {\n\t return this._sources.indexOf(relativeSource);\n\t }\n\t\n\t // Maybe aSource is an absolute URL as returned by |sources|. In\n\t // this case we can't simply undo the transform.\n\t var i;\n\t for (i = 0; i < this._absoluteSources.length; ++i) {\n\t if (this._absoluteSources[i] == aSource) {\n\t return i;\n\t }\n\t }\n\t\n\t return -1;\n\t};\n\t\n\t/**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @param String aSourceMapURL\n\t * The URL at which the source map can be found (optional)\n\t * @returns BasicSourceMapConsumer\n\t */\n\tBasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\t\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\t smc._sourceMapURL = aSourceMapURL;\n\t smc._absoluteSources = smc._sources.toArray().map(function (s) {\n\t return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n\t });\n\t\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\t\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\t\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\t\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\t\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\t\n\t destOriginalMappings.push(destMapping);\n\t }\n\t\n\t destGeneratedMappings.push(destMapping);\n\t }\n\t\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\t\n\t return smc;\n\t };\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tBasicSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._absoluteSources.slice();\n\t }\n\t});\n\t\n\t/**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\tfunction Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t}\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tBasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\t\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\t\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\t\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\t\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\t\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\t\n\t cachedSegments[str] = segment;\n\t }\n\t\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\t\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\t\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\t\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\t\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\t\n\t/**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\tBasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\t\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\t\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\t\n\t/**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\tBasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\t\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\t\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source. The line number\n\t * is 1-based.\n\t * - column: The column number in the generated source. The column\n\t * number is 0-based.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the original source, or null. The\n\t * column number is 0-based.\n\t * - name: The original identifier, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\t\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tBasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\t\n\t var index = this._findSourceIndex(aSource);\n\t if (index >= 0) {\n\t return this.sourcesContent[index];\n\t }\n\t\n\t var relativeSource = aSource;\n\t if (this.sourceRoot != null) {\n\t relativeSource = util.relative(this.sourceRoot, relativeSource);\n\t }\n\t\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\t\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + relativeSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n\t }\n\t }\n\t\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number\n\t * is 1-based.\n\t * - column: The column number in the original source. The column\n\t * number is 0-based.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tBasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t source = this._findSourceIndex(source);\n\t if (source < 0) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\t\n\texports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\t\n\t/**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The first parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * The second parameter, if given, is a string whose value is the URL\n\t * at which the source map was found. This URL is used to compute the\n\t * sources array.\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\tfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\t\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\t\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\t\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n\t }\n\t });\n\t}\n\t\n\tIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tIndexedSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t});\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source. The line number\n\t * is 1-based.\n\t * - column: The column number in the generated source. The column\n\t * number is 0-based.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the original source, or null. The\n\t * column number is 0-based.\n\t * - name: The original identifier, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\t\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\t\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\t\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tIndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number\n\t * is 1-based.\n\t * - column: The column number in the original source. The column\n\t * number is 0-based.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based. \n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tIndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tIndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\t\n\t var source = section.consumer._sources.at(mapping.source);\n\t source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\t\n\t var name = null;\n\t if (mapping.name) {\n\t name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\t }\n\t\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\t\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\t\n\texports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\texports.GREATEST_LOWER_BOUND = 1;\n\texports.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\tfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\texports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\t\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\t\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\t\n\t return index;\n\t};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t// It turns out that some (most?) JavaScript engines don't self-host\n\t// `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t// faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t// custom comparator function, calling back and forth between the VM's C++ and\n\t// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t// worse generated code for the comparator function than would be optimal. In\n\t// fact, when sorting with a comparator, these costs outweigh the benefits of\n\t// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t// a ~3500ms mean speed-up in `bench/bench.html`.\n\t\n\t/**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\tfunction swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t}\n\t\n\t/**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\tfunction randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t}\n\t\n\t/**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\tfunction doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\t\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\t\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\t\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\t\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\t\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\t\n\t // (2) Recurse on each half.\n\t\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t}\n\t\n\t/**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\texports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\tvar util = __webpack_require__(4);\n\t\n\t// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n\t// operating systems these days (capturing the result).\n\tvar REGEX_NEWLINE = /(\\r?\\n)/;\n\t\n\t// Newline character code for charCodeAt() comparisons\n\tvar NEWLINE_CODE = 10;\n\t\n\t// Private symbol for identifying `SourceNode`s when multiple versions of\n\t// the source-map library are loaded. This MUST NOT CHANGE across\n\t// versions!\n\tvar isSourceNode = \"$$$isSourceNode$$$\";\n\t\n\t/**\n\t * SourceNodes provide a way to abstract over interpolating/concatenating\n\t * snippets of generated JavaScript source code while maintaining the line and\n\t * column information associated with the original source code.\n\t *\n\t * @param aLine The original line number.\n\t * @param aColumn The original column number.\n\t * @param aSource The original source's filename.\n\t * @param aChunks Optional. An array of strings which are snippets of\n\t * generated JS, or other SourceNodes.\n\t * @param aName The original identifier.\n\t */\n\tfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n\t this.children = [];\n\t this.sourceContents = {};\n\t this.line = aLine == null ? null : aLine;\n\t this.column = aColumn == null ? null : aColumn;\n\t this.source = aSource == null ? null : aSource;\n\t this.name = aName == null ? null : aName;\n\t this[isSourceNode] = true;\n\t if (aChunks != null) this.add(aChunks);\n\t}\n\t\n\t/**\n\t * Creates a SourceNode from generated code and a SourceMapConsumer.\n\t *\n\t * @param aGeneratedCode The generated code\n\t * @param aSourceMapConsumer The SourceMap for the generated code\n\t * @param aRelativePath Optional. The path that relative sources in the\n\t * SourceMapConsumer should be relative to.\n\t */\n\tSourceNode.fromStringWithSourceMap =\n\t function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n\t // The SourceNode we want to fill with the generated code\n\t // and the SourceMap\n\t var node = new SourceNode();\n\t\n\t // All even indices of this array are one line of the generated code,\n\t // while all odd indices are the newlines between two adjacent lines\n\t // (since `REGEX_NEWLINE` captures its match).\n\t // Processed fragments are accessed by calling `shiftNextLine`.\n\t var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n\t var remainingLinesIndex = 0;\n\t var shiftNextLine = function() {\n\t var lineContents = getNextLine();\n\t // The last line of a file might not have a newline.\n\t var newLine = getNextLine() || \"\";\n\t return lineContents + newLine;\n\t\n\t function getNextLine() {\n\t return remainingLinesIndex < remainingLines.length ?\n\t remainingLines[remainingLinesIndex++] : undefined;\n\t }\n\t };\n\t\n\t // We need to remember the position of \"remainingLines\"\n\t var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\t\n\t // The generate SourceNodes we need a code range.\n\t // To extract it current and last mapping is used.\n\t // Here we store the last mapping.\n\t var lastMapping = null;\n\t\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t if (lastMapping !== null) {\n\t // We add the code from \"lastMapping\" to \"mapping\":\n\t // First check if there is a new line in between.\n\t if (lastGeneratedLine < mapping.generatedLine) {\n\t // Associate first line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t lastGeneratedLine++;\n\t lastGeneratedColumn = 0;\n\t // The remaining code is added without mapping\n\t } else {\n\t // There is no new line in between.\n\t // Associate the code between \"lastGeneratedColumn\" and\n\t // \"mapping.generatedColumn\" with \"lastMapping\"\n\t var nextLine = remainingLines[remainingLinesIndex] || '';\n\t var code = nextLine.substr(0, mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t addMappingWithCode(lastMapping, code);\n\t // No more remaining code, continue\n\t lastMapping = mapping;\n\t return;\n\t }\n\t }\n\t // We add the generated code until the first mapping\n\t // to the SourceNode without any mapping.\n\t // Each line is added as separate string.\n\t while (lastGeneratedLine < mapping.generatedLine) {\n\t node.add(shiftNextLine());\n\t lastGeneratedLine++;\n\t }\n\t if (lastGeneratedColumn < mapping.generatedColumn) {\n\t var nextLine = remainingLines[remainingLinesIndex] || '';\n\t node.add(nextLine.substr(0, mapping.generatedColumn));\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t }\n\t lastMapping = mapping;\n\t }, this);\n\t // We have processed all mappings.\n\t if (remainingLinesIndex < remainingLines.length) {\n\t if (lastMapping) {\n\t // Associate the remaining code in the current line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t }\n\t // and add the remaining lines without any mapping\n\t node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n\t }\n\t\n\t // Copy sourcesContent into SourceNode\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aRelativePath != null) {\n\t sourceFile = util.join(aRelativePath, sourceFile);\n\t }\n\t node.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t\n\t return node;\n\t\n\t function addMappingWithCode(mapping, code) {\n\t if (mapping === null || mapping.source === undefined) {\n\t node.add(code);\n\t } else {\n\t var source = aRelativePath\n\t ? util.join(aRelativePath, mapping.source)\n\t : mapping.source;\n\t node.add(new SourceNode(mapping.originalLine,\n\t mapping.originalColumn,\n\t source,\n\t code,\n\t mapping.name));\n\t }\n\t }\n\t };\n\t\n\t/**\n\t * Add a chunk of generated JS to this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.add = function SourceNode_add(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t aChunk.forEach(function (chunk) {\n\t this.add(chunk);\n\t }, this);\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t if (aChunk) {\n\t this.children.push(aChunk);\n\t }\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Add a chunk of generated JS to the beginning of this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t for (var i = aChunk.length-1; i >= 0; i--) {\n\t this.prepend(aChunk[i]);\n\t }\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t this.children.unshift(aChunk);\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Walk over the tree of JS snippets in this node and its children. The\n\t * walking function is called once for each snippet of JS and is passed that\n\t * snippet and the its original associated source's line/column location.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n\t var chunk;\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t chunk = this.children[i];\n\t if (chunk[isSourceNode]) {\n\t chunk.walk(aFn);\n\t }\n\t else {\n\t if (chunk !== '') {\n\t aFn(chunk, { source: this.source,\n\t line: this.line,\n\t column: this.column,\n\t name: this.name });\n\t }\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n\t * each of `this.children`.\n\t *\n\t * @param aSep The separator.\n\t */\n\tSourceNode.prototype.join = function SourceNode_join(aSep) {\n\t var newChildren;\n\t var i;\n\t var len = this.children.length;\n\t if (len > 0) {\n\t newChildren = [];\n\t for (i = 0; i < len-1; i++) {\n\t newChildren.push(this.children[i]);\n\t newChildren.push(aSep);\n\t }\n\t newChildren.push(this.children[i]);\n\t this.children = newChildren;\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Call String.prototype.replace on the very right-most source snippet. Useful\n\t * for trimming whitespace from the end of a source node, etc.\n\t *\n\t * @param aPattern The pattern to replace.\n\t * @param aReplacement The thing to replace the pattern with.\n\t */\n\tSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n\t var lastChild = this.children[this.children.length - 1];\n\t if (lastChild[isSourceNode]) {\n\t lastChild.replaceRight(aPattern, aReplacement);\n\t }\n\t else if (typeof lastChild === 'string') {\n\t this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n\t }\n\t else {\n\t this.children.push(''.replace(aPattern, aReplacement));\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Set the source content for a source file. This will be added to the SourceMapGenerator\n\t * in the sourcesContent field.\n\t *\n\t * @param aSourceFile The filename of the source file\n\t * @param aSourceContent The content of the source file\n\t */\n\tSourceNode.prototype.setSourceContent =\n\t function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n\t this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n\t };\n\t\n\t/**\n\t * Walk over the tree of SourceNodes. The walking function is called for each\n\t * source file content and is passed the filename and source content.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walkSourceContents =\n\t function SourceNode_walkSourceContents(aFn) {\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t if (this.children[i][isSourceNode]) {\n\t this.children[i].walkSourceContents(aFn);\n\t }\n\t }\n\t\n\t var sources = Object.keys(this.sourceContents);\n\t for (var i = 0, len = sources.length; i < len; i++) {\n\t aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n\t }\n\t };\n\t\n\t/**\n\t * Return the string representation of this source node. Walks over the tree\n\t * and concatenates all the various snippets together to one string.\n\t */\n\tSourceNode.prototype.toString = function SourceNode_toString() {\n\t var str = \"\";\n\t this.walk(function (chunk) {\n\t str += chunk;\n\t });\n\t return str;\n\t};\n\t\n\t/**\n\t * Returns the string representation of this source node along with a source\n\t * map.\n\t */\n\tSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n\t var generated = {\n\t code: \"\",\n\t line: 1,\n\t column: 0\n\t };\n\t var map = new SourceMapGenerator(aArgs);\n\t var sourceMappingActive = false;\n\t var lastOriginalSource = null;\n\t var lastOriginalLine = null;\n\t var lastOriginalColumn = null;\n\t var lastOriginalName = null;\n\t this.walk(function (chunk, original) {\n\t generated.code += chunk;\n\t if (original.source !== null\n\t && original.line !== null\n\t && original.column !== null) {\n\t if(lastOriginalSource !== original.source\n\t || lastOriginalLine !== original.line\n\t || lastOriginalColumn !== original.column\n\t || lastOriginalName !== original.name) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t lastOriginalSource = original.source;\n\t lastOriginalLine = original.line;\n\t lastOriginalColumn = original.column;\n\t lastOriginalName = original.name;\n\t sourceMappingActive = true;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t }\n\t });\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t }\n\t for (var idx = 0, length = chunk.length; idx < length; idx++) {\n\t if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n\t generated.line++;\n\t generated.column = 0;\n\t // Mappings end at eol\n\t if (idx + 1 === length) {\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t } else {\n\t generated.column++;\n\t }\n\t }\n\t });\n\t this.walkSourceContents(function (sourceFile, sourceContent) {\n\t map.setSourceContent(sourceFile, sourceContent);\n\t });\n\t\n\t return { code: generated.code, map: map };\n\t};\n\t\n\texports.SourceNode = SourceNode;\n\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// source-map.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 0fd5815da764db5fb9fe","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./source-map.js\n// module id = 0\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-generator.js\n// module id = 1\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64-vlq.js\n// module id = 2\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64.js\n// module id = 3\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/util.js\n// module id = 4\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/array-set.js\n// module id = 5\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/mapping-list.js\n// module id = 6\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-consumer.js\n// module id = 7\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/binary-search.js\n// module id = 8\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/quick-sort.js\n// module id = 9\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-node.js\n// module id = 10\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/array-set.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/array-set.js deleted file mode 100644 index fbd5c81ca..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/array-set.js +++ /dev/null @@ -1,121 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); -var has = Object.prototype.hasOwnProperty; -var hasNativeMap = typeof Map !== "undefined"; - -/** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ -function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); -} - -/** - * Static method for creating ArraySet instances from an existing array. - */ -ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; -}; - -/** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ -ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; -}; - -/** - * Add the given string to this set. - * - * @param String aStr - */ -ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } -}; - -/** - * Is the given string a member of this set? - * - * @param String aStr - */ -ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } -}; - -/** - * What is the index of the given string in the array? - * - * @param String aStr - */ -ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); -}; - -/** - * What is the element at the given index? - * - * @param Number aIdx - */ -ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); -}; - -/** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ -ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); -}; - -exports.ArraySet = ArraySet; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/base64-vlq.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/base64-vlq.js deleted file mode 100644 index 612b40401..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/base64-vlq.js +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -var base64 = require('./base64'); - -// A single base 64 digit can contain 6 bits of data. For the base 64 variable -// length quantities we use in the source map spec, the first bit is the sign, -// the next four bits are the actual value, and the 6th bit is the -// continuation bit. The continuation bit tells us whether there are more -// digits in this value following this digit. -// -// Continuation -// | Sign -// | | -// V V -// 101011 - -var VLQ_BASE_SHIFT = 5; - -// binary: 100000 -var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - -// binary: 011111 -var VLQ_BASE_MASK = VLQ_BASE - 1; - -// binary: 100000 -var VLQ_CONTINUATION_BIT = VLQ_BASE; - -/** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ -function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; -} - -/** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ -function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; -} - -/** - * Returns the base 64 VLQ encoded value. - */ -exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; -}; - -/** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ -exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; -}; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/base64.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/base64.js deleted file mode 100644 index 8aa86b302..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/base64.js +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - -/** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ -exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); -}; - -/** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ -exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; -}; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/binary-search.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/binary-search.js deleted file mode 100644 index 010ac941e..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/binary-search.js +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -exports.GREATEST_LOWER_BOUND = 1; -exports.LEAST_UPPER_BOUND = 2; - -/** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ -function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } -} - -/** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ -exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; -}; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/mapping-list.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/mapping-list.js deleted file mode 100644 index 06d1274a0..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/mapping-list.js +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); - -/** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ -function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; -} - -/** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ -function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; -} - -/** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ -MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - -/** - * Add the given source mapping. - * - * @param Object aMapping - */ -MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } -}; - -/** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ -MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; -}; - -exports.MappingList = MappingList; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/quick-sort.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/quick-sort.js deleted file mode 100644 index 6a7caadbb..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/quick-sort.js +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -// It turns out that some (most?) JavaScript engines don't self-host -// `Array.prototype.sort`. This makes sense because C++ will likely remain -// faster than JS when doing raw CPU-intensive sorting. However, when using a -// custom comparator function, calling back and forth between the VM's C++ and -// JIT'd JS is rather slow *and* loses JIT type information, resulting in -// worse generated code for the comparator function than would be optimal. In -// fact, when sorting with a comparator, these costs outweigh the benefits of -// sorting in C++. By using our own JS-implemented Quick Sort (below), we get -// a ~3500ms mean speed-up in `bench/bench.html`. - -/** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ -function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; -} - -/** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ -function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); -} - -/** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ -function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } -} - -/** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ -exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); -}; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-map-consumer.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-map-consumer.js deleted file mode 100644 index 7b99d1da7..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-map-consumer.js +++ /dev/null @@ -1,1145 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); -var binarySearch = require('./binary-search'); -var ArraySet = require('./array-set').ArraySet; -var base64VLQ = require('./base64-vlq'); -var quickSort = require('./quick-sort').quickSort; - -function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) - : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); -} - -SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); -} - -/** - * The version of the source mapping spec that we are consuming. - */ -SourceMapConsumer.prototype._version = 3; - -// `__generatedMappings` and `__originalMappings` are arrays that hold the -// parsed mapping coordinates from the source map's "mappings" attribute. They -// are lazily instantiated, accessed via the `_generatedMappings` and -// `_originalMappings` getters respectively, and we only parse the mappings -// and create these arrays once queried for a source location. We jump through -// these hoops because there can be many thousands of mappings, and parsing -// them is expensive, so we only want to do it if we must. -// -// Each object in the arrays is of the form: -// -// { -// generatedLine: The line number in the generated code, -// generatedColumn: The column number in the generated code, -// source: The path to the original source file that generated this -// chunk of code, -// originalLine: The line number in the original source that -// corresponds to this chunk of generated code, -// originalColumn: The column number in the original source that -// corresponds to this chunk of generated code, -// name: The name of the original symbol which generated this chunk of -// code. -// } -// -// All properties except for `generatedLine` and `generatedColumn` can be -// `null`. -// -// `_generatedMappings` is ordered by the generated positions. -// -// `_originalMappings` is ordered by the original positions. - -SourceMapConsumer.prototype.__generatedMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } -}); - -SourceMapConsumer.prototype.__originalMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } -}); - -SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - -SourceMapConsumer.GENERATED_ORDER = 1; -SourceMapConsumer.ORIGINAL_ORDER = 2; - -SourceMapConsumer.GREATEST_LOWER_BOUND = 1; -SourceMapConsumer.LEAST_UPPER_BOUND = 2; - -/** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ -SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - -/** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number is 1-based. - * - column: Optional. the column number in the original source. - * The column number is 0-based. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - -exports.SourceMapConsumer = SourceMapConsumer; - -/** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The first parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ -function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this._absoluteSources = this._sources.toArray().map(function (s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; -} - -BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - -/** - * Utility function to find the index of a source. Returns -1 if not - * found. - */ -BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - - // Maybe aSource is an absolute URL as returned by |sources|. In - // this case we can't simply undo the transform. - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - - return -1; -}; - -/** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @param String aSourceMapURL - * The URL at which the source map can be found (optional) - * @returns BasicSourceMapConsumer - */ -BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function (s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - -/** - * The version of the source mapping spec that we are consuming. - */ -BasicSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._absoluteSources.slice(); - } -}); - -/** - * Provide the JIT with a nice shape / hidden class. - */ -function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; -} - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - -/** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ -BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - -/** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ -BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ -BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } - - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - -exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - -/** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The first parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ -function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) - } - }); -} - -IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - -/** - * The version of the source mapping spec that we are consuming. - */ -IndexedSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } -}); - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ -IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - -exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-map-generator.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-map-generator.js deleted file mode 100644 index 508bcfbbc..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-map-generator.js +++ /dev/null @@ -1,425 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var base64VLQ = require('./base64-vlq'); -var util = require('./util'); -var ArraySet = require('./array-set').ArraySet; -var MappingList = require('./mapping-list').MappingList; - -/** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ -function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; -} - -SourceMapGenerator.prototype._version = 3; - -/** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ -SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - -/** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ -SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - -/** - * Set the source content for a source file. - */ -SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - -/** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ -SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - -/** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ -SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - -/** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ -SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - -SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - -/** - * Externalize the source map. - */ -SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - -/** - * Render the source map being generated to a string. - */ -SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - -exports.SourceMapGenerator = SourceMapGenerator; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-node.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-node.js deleted file mode 100644 index 8bcdbe385..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/source-node.js +++ /dev/null @@ -1,413 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; -var util = require('./util'); - -// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other -// operating systems these days (capturing the result). -var REGEX_NEWLINE = /(\r?\n)/; - -// Newline character code for charCodeAt() comparisons -var NEWLINE_CODE = 10; - -// Private symbol for identifying `SourceNode`s when multiple versions of -// the source-map library are loaded. This MUST NOT CHANGE across -// versions! -var isSourceNode = "$$$isSourceNode$$$"; - -/** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ -function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); -} - -/** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ -SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex] || ''; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ''; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - -/** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } -}; - -/** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ -SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; -}; - -/** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ -SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; -}; - -/** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ -SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - -/** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - -/** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ -SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; -}; - -/** - * Returns the string representation of this source node along with a source - * map. - */ -SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; -}; - -exports.SourceNode = SourceNode; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/util.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/util.js deleted file mode 100644 index 3ca92e56f..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/lib/util.js +++ /dev/null @@ -1,488 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ -function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } -} -exports.getArg = getArg; - -var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; -var dataUrlRegexp = /^data:.+\,.+$/; - -function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; -} -exports.urlParse = urlParse; - -function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; -} -exports.urlGenerate = urlGenerate; - -/** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ -function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; -} -exports.normalize = normalize; - -/** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ -function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; -} -exports.join = join; - -exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || urlRegexp.test(aPath); -}; - -/** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ -function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); -} -exports.relative = relative; - -var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); -}()); - -function identity (s) { - return s; -} - -/** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ -function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; -} -exports.toSetString = supportsNullProto ? identity : toSetString; - -function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; -} -exports.fromSetString = supportsNullProto ? identity : fromSetString; - -function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; -} - -/** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ -function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByOriginalPositions = compareByOriginalPositions; - -/** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ -function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - -function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 === null) { - return 1; // aStr2 !== null - } - - if (aStr2 === null) { - return -1; // aStr1 !== null - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; -} - -/** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ -function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - -/** - * Strip any JSON XSSI avoidance prefix from the string (as documented - * in the source maps specification), and then parse the string as - * JSON. - */ -function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); -} -exports.parseSourceMapInput = parseSourceMapInput; - -/** - * Compute the URL of a source given the the source root, the source's - * URL, and the source map's URL. - */ -function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ''; - - if (sourceRoot) { - // This follows what Chrome does. - if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { - sourceRoot += '/'; - } - // The spec says: - // Line 4: An optional source root, useful for relocating source - // files on a server or removing repeated values in the - // “sources” entry. This value is prepended to the individual - // entries in the “source” field. - sourceURL = sourceRoot + sourceURL; - } - - // Historically, SourceMapConsumer did not take the sourceMapURL as - // a parameter. This mode is still somewhat supported, which is why - // this code block is conditional. However, it's preferable to pass - // the source map URL to SourceMapConsumer, so that this function - // can implement the source URL resolution algorithm as outlined in - // the spec. This block is basically the equivalent of: - // new URL(sourceURL, sourceMapURL).toString() - // ... except it avoids using URL, which wasn't available in the - // older releases of node still supported by this library. - // - // The spec says: - // If the sources are not absolute URLs after prepending of the - // “sourceRoot”, the sources are resolved relative to the - // SourceMap (like resolving script src in a html document). - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - // Strip the last path component, but keep the "/". - var index = parsed.path.lastIndexOf('/'); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - - return normalize(sourceURL); -} -exports.computeSourceURL = computeSourceURL; diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/package.json b/node_modules/concat-with-sourcemaps/node_modules/source-map/package.json deleted file mode 100644 index b89234a51..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/package.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "_from": "source-map@^0.6.1", - "_id": "source-map@0.6.1", - "_inBundle": false, - "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "_location": "/concat-with-sourcemaps/source-map", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "source-map@^0.6.1", - "name": "source-map", - "escapedName": "source-map", - "rawSpec": "^0.6.1", - "saveSpec": null, - "fetchSpec": "^0.6.1" - }, - "_requiredBy": [ - "/concat-with-sourcemaps" - ], - "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "_shasum": "74722af32e9614e9c287a8d0bbde48b5e2f1a263", - "_spec": "source-map@^0.6.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\concat-with-sourcemaps", - "author": { - "name": "Nick Fitzgerald", - "email": "nfitzgerald@mozilla.com" - }, - "bugs": { - "url": "https://github.com/mozilla/source-map/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Tobias Koppers", - "email": "tobias.koppers@googlemail.com" - }, - { - "name": "Duncan Beevers", - "email": "duncan@dweebd.com" - }, - { - "name": "Stephen Crane", - "email": "scrane@mozilla.com" - }, - { - "name": "Ryan Seddon", - "email": "seddon.ryan@gmail.com" - }, - { - "name": "Miles Elam", - "email": "miles.elam@deem.com" - }, - { - "name": "Mihai Bazon", - "email": "mihai.bazon@gmail.com" - }, - { - "name": "Michael Ficarra", - "email": "github.public.email@michael.ficarra.me" - }, - { - "name": "Todd Wolfson", - "email": "todd@twolfson.com" - }, - { - "name": "Alexander Solovyov", - "email": "alexander@solovyov.net" - }, - { - "name": "Felix Gnass", - "email": "fgnass@gmail.com" - }, - { - "name": "Conrad Irwin", - "email": "conrad.irwin@gmail.com" - }, - { - "name": "usrbincc", - "email": "usrbincc@yahoo.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Chase Douglas", - "email": "chase@newrelic.com" - }, - { - "name": "Evan Wallace", - "email": "evan.exe@gmail.com" - }, - { - "name": "Heather Arthur", - "email": "fayearthur@gmail.com" - }, - { - "name": "Hugh Kennedy", - "email": "hughskennedy@gmail.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Simon Lydell", - "email": "simon.lydell@gmail.com" - }, - { - "name": "Jmeas Smith", - "email": "jellyes2@gmail.com" - }, - { - "name": "Michael Z Goddard", - "email": "mzgoddard@gmail.com" - }, - { - "name": "azu", - "email": "azu@users.noreply.github.com" - }, - { - "name": "John Gozde", - "email": "john@gozde.ca" - }, - { - "name": "Adam Kirkton", - "email": "akirkton@truefitinnovation.com" - }, - { - "name": "Chris Montgomery", - "email": "christopher.montgomery@dowjones.com" - }, - { - "name": "J. Ryan Stinnett", - "email": "jryans@gmail.com" - }, - { - "name": "Jack Herrington", - "email": "jherrington@walmartlabs.com" - }, - { - "name": "Chris Truter", - "email": "jeffpalentine@gmail.com" - }, - { - "name": "Daniel Espeset", - "email": "daniel@danielespeset.com" - }, - { - "name": "Jamie Wong", - "email": "jamie.lf.wong@gmail.com" - }, - { - "name": "Eddy Bruël", - "email": "ejpbruel@mozilla.com" - }, - { - "name": "Hawken Rives", - "email": "hawkrives@gmail.com" - }, - { - "name": "Gilad Peleg", - "email": "giladp007@gmail.com" - }, - { - "name": "djchie", - "email": "djchie.dev@gmail.com" - }, - { - "name": "Gary Ye", - "email": "garysye@gmail.com" - }, - { - "name": "Nicolas Lalevée", - "email": "nicolas.lalevee@hibnet.org" - } - ], - "deprecated": false, - "description": "Generates and consumes source maps", - "devDependencies": { - "doctoc": "^0.15.0", - "webpack": "^1.12.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "source-map.js", - "source-map.d.ts", - "lib/", - "dist/source-map.debug.js", - "dist/source-map.js", - "dist/source-map.min.js", - "dist/source-map.min.js.map" - ], - "homepage": "https://github.com/mozilla/source-map", - "license": "BSD-3-Clause", - "main": "./source-map.js", - "name": "source-map", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/mozilla/source-map.git" - }, - "scripts": { - "build": "webpack --color", - "test": "npm run build && node test/run-tests.js", - "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" - }, - "typings": "source-map", - "version": "0.6.1" -} diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/source-map.d.ts b/node_modules/concat-with-sourcemaps/node_modules/source-map/source-map.d.ts deleted file mode 100644 index 8f972b0cf..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/source-map.d.ts +++ /dev/null @@ -1,98 +0,0 @@ -export interface StartOfSourceMap { - file?: string; - sourceRoot?: string; -} - -export interface RawSourceMap extends StartOfSourceMap { - version: string; - sources: string[]; - names: string[]; - sourcesContent?: string[]; - mappings: string; -} - -export interface Position { - line: number; - column: number; -} - -export interface LineRange extends Position { - lastColumn: number; -} - -export interface FindPosition extends Position { - // SourceMapConsumer.GREATEST_LOWER_BOUND or SourceMapConsumer.LEAST_UPPER_BOUND - bias?: number; -} - -export interface SourceFindPosition extends FindPosition { - source: string; -} - -export interface MappedPosition extends Position { - source: string; - name?: string; -} - -export interface MappingItem { - source: string; - generatedLine: number; - generatedColumn: number; - originalLine: number; - originalColumn: number; - name: string; -} - -export class SourceMapConsumer { - static GENERATED_ORDER: number; - static ORIGINAL_ORDER: number; - - static GREATEST_LOWER_BOUND: number; - static LEAST_UPPER_BOUND: number; - - constructor(rawSourceMap: RawSourceMap); - computeColumnSpans(): void; - originalPositionFor(generatedPosition: FindPosition): MappedPosition; - generatedPositionFor(originalPosition: SourceFindPosition): LineRange; - allGeneratedPositionsFor(originalPosition: MappedPosition): Position[]; - hasContentsOfAllSources(): boolean; - sourceContentFor(source: string, returnNullOnMissing?: boolean): string; - eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void; -} - -export interface Mapping { - generated: Position; - original: Position; - source: string; - name?: string; -} - -export class SourceMapGenerator { - constructor(startOfSourceMap?: StartOfSourceMap); - static fromSourceMap(sourceMapConsumer: SourceMapConsumer): SourceMapGenerator; - addMapping(mapping: Mapping): void; - setSourceContent(sourceFile: string, sourceContent: string): void; - applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void; - toString(): string; -} - -export interface CodeWithSourceMap { - code: string; - map: SourceMapGenerator; -} - -export class SourceNode { - constructor(); - constructor(line: number, column: number, source: string); - constructor(line: number, column: number, source: string, chunk?: string, name?: string); - static fromStringWithSourceMap(code: string, sourceMapConsumer: SourceMapConsumer, relativePath?: string): SourceNode; - add(chunk: string): void; - prepend(chunk: string): void; - setSourceContent(sourceFile: string, sourceContent: string): void; - walk(fn: (chunk: string, mapping: MappedPosition) => void): void; - walkSourceContents(fn: (file: string, content: string) => void): void; - join(sep: string): SourceNode; - replaceRight(pattern: string, replacement: string): SourceNode; - toString(): string; - toStringWithSourceMap(startOfSourceMap?: StartOfSourceMap): CodeWithSourceMap; -} diff --git a/node_modules/concat-with-sourcemaps/node_modules/source-map/source-map.js b/node_modules/concat-with-sourcemaps/node_modules/source-map/source-map.js deleted file mode 100644 index bc88fe820..000000000 --- a/node_modules/concat-with-sourcemaps/node_modules/source-map/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./lib/source-node').SourceNode; diff --git a/node_modules/concat-with-sourcemaps/package.json b/node_modules/concat-with-sourcemaps/package.json deleted file mode 100644 index b2ee62493..000000000 --- a/node_modules/concat-with-sourcemaps/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "_from": "concat-with-sourcemaps@*", - "_id": "concat-with-sourcemaps@1.1.0", - "_inBundle": false, - "_integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "_location": "/concat-with-sourcemaps", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "concat-with-sourcemaps@*", - "name": "concat-with-sourcemaps", - "escapedName": "concat-with-sourcemaps", - "rawSpec": "*", - "saveSpec": null, - "fetchSpec": "*" - }, - "_requiredBy": [ - "/gulp-header" - ], - "_resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "_shasum": "d4ea93f05ae25790951b99e7b3b09e3908a4082e", - "_spec": "concat-with-sourcemaps@*", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\gulp-header", - "author": { - "name": "Florian Reiterer", - "email": "me@florianreiterer.com" - }, - "bugs": { - "url": "https://github.com/floridoo/concat-with-sourcemaps/issues" - }, - "bundleDependencies": false, - "dependencies": { - "source-map": "^0.6.1" - }, - "deprecated": false, - "description": "Concatenate file contents with a custom separator and generate a source map", - "devDependencies": { - "coveralls": "^3.0.0", - "faucet": "0.0.1", - "istanbul": "^0.4.5", - "jshint": "^2.9.5", - "tape": "^4.9.0" - }, - "files": [ - "index.js", - "index.d.ts", - "package.json", - "README.md", - "LICENSE.md" - ], - "homepage": "http://github.com/floridoo/concat-with-sourcemaps", - "keywords": [ - "concat", - "source map" - ], - "license": "ISC", - "main": "index.js", - "name": "concat-with-sourcemaps", - "repository": { - "type": "git", - "url": "git://github.com/floridoo/concat-with-sourcemaps.git" - }, - "scripts": { - "cover": "istanbul cover --dir reports/coverage tape test/*.js", - "coveralls": "istanbul cover tape test/*.js --report lcovonly && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "tap": "tape test/*.js", - "test": "jshint *.js test/*.js && faucet test/*.js" - }, - "types": "index.d.ts", - "version": "1.1.0" -} diff --git a/node_modules/copy-descriptor/LICENSE b/node_modules/copy-descriptor/LICENSE deleted file mode 100644 index 652517172..000000000 --- a/node_modules/copy-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2016, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/copy-descriptor/index.js b/node_modules/copy-descriptor/index.js deleted file mode 100644 index 6da21b1b0..000000000 --- a/node_modules/copy-descriptor/index.js +++ /dev/null @@ -1,81 +0,0 @@ -/*! - * copy-descriptor - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -/** - * Copy a descriptor from one object to another. - * - * ```js - * function App() { - * this.cache = {}; - * } - * App.prototype.set = function(key, val) { - * this.cache[key] = val; - * return this; - * }; - * Object.defineProperty(App.prototype, 'count', { - * get: function() { - * return Object.keys(this.cache).length; - * } - * }); - * - * copy(App.prototype, 'count', 'len'); - * - * // create an instance - * var app = new App(); - * - * app.set('a', true); - * app.set('b', true); - * app.set('c', true); - * - * console.log(app.count); - * //=> 3 - * console.log(app.len); - * //=> 3 - * ``` - * @name copy - * @param {Object} `receiver` The target object - * @param {Object} `provider` The provider object - * @param {String} `from` The key to copy on provider. - * @param {String} `to` Optionally specify a new key name to use. - * @return {Object} - * @api public - */ - -module.exports = function copyDescriptor(receiver, provider, from, to) { - if (!isObject(provider) && typeof provider !== 'function') { - to = from; - from = provider; - provider = receiver; - } - if (!isObject(receiver) && typeof receiver !== 'function') { - throw new TypeError('expected the first argument to be an object'); - } - if (!isObject(provider) && typeof provider !== 'function') { - throw new TypeError('expected provider to be an object'); - } - - if (typeof to !== 'string') { - to = from; - } - if (typeof from !== 'string') { - throw new TypeError('expected key to be a string'); - } - - if (!(from in provider)) { - throw new Error('property "' + from + '" does not exist'); - } - - var val = Object.getOwnPropertyDescriptor(provider, from); - if (val) Object.defineProperty(receiver, to, val); -}; - -function isObject(val) { - return {}.toString.call(val) === '[object Object]'; -} - diff --git a/node_modules/copy-descriptor/package.json b/node_modules/copy-descriptor/package.json deleted file mode 100644 index 919162d9d..000000000 --- a/node_modules/copy-descriptor/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "copy-descriptor@0.1.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "copy-descriptor@0.1.1", - "_id": "copy-descriptor@0.1.1", - "_inBundle": false, - "_integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "_location": "/copy-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "copy-descriptor@0.1.1", - "name": "copy-descriptor", - "escapedName": "copy-descriptor", - "rawSpec": "0.1.1", - "saveSpec": null, - "fetchSpec": "0.1.1" - }, - "_requiredBy": [ - "/object-copy" - ], - "_resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "_spec": "0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/copy-descriptor/issues" - }, - "description": "Copy a descriptor from object A to object B", - "devDependencies": { - "gulp-format-md": "^0.1.9", - "mocha": "^2.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/copy-descriptor", - "keywords": [ - "copy", - "descriptor" - ], - "license": "MIT", - "main": "index.js", - "name": "copy-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/copy-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "is-plain-object", - "isobject" - ] - }, - "lint": { - "reflinks": true - }, - "reflinks": [ - "verb-readme-generator", - "verb" - ] - }, - "version": "0.1.1" -} diff --git a/node_modules/core-util-is/LICENSE b/node_modules/core-util-is/LICENSE deleted file mode 100644 index d8d7f9437..000000000 --- a/node_modules/core-util-is/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright Node.js contributors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/core-util-is/README.md b/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b4149..000000000 --- a/node_modules/core-util-is/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# core-util-is - -The `util.is*` functions introduced in Node v0.12. diff --git a/node_modules/core-util-is/float.patch b/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c05f..000000000 --- a/node_modules/core-util-is/float.patch +++ /dev/null @@ -1,604 +0,0 @@ -diff --git a/lib/util.js b/lib/util.js -index a03e874..9074e8e 100644 ---- a/lib/util.js -+++ b/lib/util.js -@@ -19,430 +19,6 @@ - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - --var formatRegExp = /%[sdj%]/g; --exports.format = function(f) { -- if (!isString(f)) { -- var objects = []; -- for (var i = 0; i < arguments.length; i++) { -- objects.push(inspect(arguments[i])); -- } -- return objects.join(' '); -- } -- -- var i = 1; -- var args = arguments; -- var len = args.length; -- var str = String(f).replace(formatRegExp, function(x) { -- if (x === '%%') return '%'; -- if (i >= len) return x; -- switch (x) { -- case '%s': return String(args[i++]); -- case '%d': return Number(args[i++]); -- case '%j': -- try { -- return JSON.stringify(args[i++]); -- } catch (_) { -- return '[Circular]'; -- } -- default: -- return x; -- } -- }); -- for (var x = args[i]; i < len; x = args[++i]) { -- if (isNull(x) || !isObject(x)) { -- str += ' ' + x; -- } else { -- str += ' ' + inspect(x); -- } -- } -- return str; --}; -- -- --// Mark that a method should not be used. --// Returns a modified function which warns once by default. --// If --no-deprecation is set, then it is a no-op. --exports.deprecate = function(fn, msg) { -- // Allow for deprecating things in the process of starting up. -- if (isUndefined(global.process)) { -- return function() { -- return exports.deprecate(fn, msg).apply(this, arguments); -- }; -- } -- -- if (process.noDeprecation === true) { -- return fn; -- } -- -- var warned = false; -- function deprecated() { -- if (!warned) { -- if (process.throwDeprecation) { -- throw new Error(msg); -- } else if (process.traceDeprecation) { -- console.trace(msg); -- } else { -- console.error(msg); -- } -- warned = true; -- } -- return fn.apply(this, arguments); -- } -- -- return deprecated; --}; -- -- --var debugs = {}; --var debugEnviron; --exports.debuglog = function(set) { -- if (isUndefined(debugEnviron)) -- debugEnviron = process.env.NODE_DEBUG || ''; -- set = set.toUpperCase(); -- if (!debugs[set]) { -- if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { -- var pid = process.pid; -- debugs[set] = function() { -- var msg = exports.format.apply(exports, arguments); -- console.error('%s %d: %s', set, pid, msg); -- }; -- } else { -- debugs[set] = function() {}; -- } -- } -- return debugs[set]; --}; -- -- --/** -- * Echos the value of a value. Trys to print the value out -- * in the best way possible given the different types. -- * -- * @param {Object} obj The object to print out. -- * @param {Object} opts Optional options object that alters the output. -- */ --/* legacy: obj, showHidden, depth, colors*/ --function inspect(obj, opts) { -- // default options -- var ctx = { -- seen: [], -- stylize: stylizeNoColor -- }; -- // legacy... -- if (arguments.length >= 3) ctx.depth = arguments[2]; -- if (arguments.length >= 4) ctx.colors = arguments[3]; -- if (isBoolean(opts)) { -- // legacy... -- ctx.showHidden = opts; -- } else if (opts) { -- // got an "options" object -- exports._extend(ctx, opts); -- } -- // set default options -- if (isUndefined(ctx.showHidden)) ctx.showHidden = false; -- if (isUndefined(ctx.depth)) ctx.depth = 2; -- if (isUndefined(ctx.colors)) ctx.colors = false; -- if (isUndefined(ctx.customInspect)) ctx.customInspect = true; -- if (ctx.colors) ctx.stylize = stylizeWithColor; -- return formatValue(ctx, obj, ctx.depth); --} --exports.inspect = inspect; -- -- --// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics --inspect.colors = { -- 'bold' : [1, 22], -- 'italic' : [3, 23], -- 'underline' : [4, 24], -- 'inverse' : [7, 27], -- 'white' : [37, 39], -- 'grey' : [90, 39], -- 'black' : [30, 39], -- 'blue' : [34, 39], -- 'cyan' : [36, 39], -- 'green' : [32, 39], -- 'magenta' : [35, 39], -- 'red' : [31, 39], -- 'yellow' : [33, 39] --}; -- --// Don't use 'blue' not visible on cmd.exe --inspect.styles = { -- 'special': 'cyan', -- 'number': 'yellow', -- 'boolean': 'yellow', -- 'undefined': 'grey', -- 'null': 'bold', -- 'string': 'green', -- 'date': 'magenta', -- // "name": intentionally not styling -- 'regexp': 'red' --}; -- -- --function stylizeWithColor(str, styleType) { -- var style = inspect.styles[styleType]; -- -- if (style) { -- return '\u001b[' + inspect.colors[style][0] + 'm' + str + -- '\u001b[' + inspect.colors[style][1] + 'm'; -- } else { -- return str; -- } --} -- -- --function stylizeNoColor(str, styleType) { -- return str; --} -- -- --function arrayToHash(array) { -- var hash = {}; -- -- array.forEach(function(val, idx) { -- hash[val] = true; -- }); -- -- return hash; --} -- -- --function formatValue(ctx, value, recurseTimes) { -- // Provide a hook for user-specified inspect functions. -- // Check that value is an object with an inspect function on it -- if (ctx.customInspect && -- value && -- isFunction(value.inspect) && -- // Filter out the util module, it's inspect function is special -- value.inspect !== exports.inspect && -- // Also filter out any prototype objects using the circular check. -- !(value.constructor && value.constructor.prototype === value)) { -- var ret = value.inspect(recurseTimes, ctx); -- if (!isString(ret)) { -- ret = formatValue(ctx, ret, recurseTimes); -- } -- return ret; -- } -- -- // Primitive types cannot have properties -- var primitive = formatPrimitive(ctx, value); -- if (primitive) { -- return primitive; -- } -- -- // Look up the keys of the object. -- var keys = Object.keys(value); -- var visibleKeys = arrayToHash(keys); -- -- if (ctx.showHidden) { -- keys = Object.getOwnPropertyNames(value); -- } -- -- // Some type of object without properties can be shortcutted. -- if (keys.length === 0) { -- if (isFunction(value)) { -- var name = value.name ? ': ' + value.name : ''; -- return ctx.stylize('[Function' + name + ']', 'special'); -- } -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } -- if (isDate(value)) { -- return ctx.stylize(Date.prototype.toString.call(value), 'date'); -- } -- if (isError(value)) { -- return formatError(value); -- } -- } -- -- var base = '', array = false, braces = ['{', '}']; -- -- // Make Array say that they are Array -- if (isArray(value)) { -- array = true; -- braces = ['[', ']']; -- } -- -- // Make functions say that they are functions -- if (isFunction(value)) { -- var n = value.name ? ': ' + value.name : ''; -- base = ' [Function' + n + ']'; -- } -- -- // Make RegExps say that they are RegExps -- if (isRegExp(value)) { -- base = ' ' + RegExp.prototype.toString.call(value); -- } -- -- // Make dates with properties first say the date -- if (isDate(value)) { -- base = ' ' + Date.prototype.toUTCString.call(value); -- } -- -- // Make error with message first say the error -- if (isError(value)) { -- base = ' ' + formatError(value); -- } -- -- if (keys.length === 0 && (!array || value.length == 0)) { -- return braces[0] + base + braces[1]; -- } -- -- if (recurseTimes < 0) { -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } else { -- return ctx.stylize('[Object]', 'special'); -- } -- } -- -- ctx.seen.push(value); -- -- var output; -- if (array) { -- output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); -- } else { -- output = keys.map(function(key) { -- return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); -- }); -- } -- -- ctx.seen.pop(); -- -- return reduceToSingleString(output, base, braces); --} -- -- --function formatPrimitive(ctx, value) { -- if (isUndefined(value)) -- return ctx.stylize('undefined', 'undefined'); -- if (isString(value)) { -- var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') -- .replace(/'/g, "\\'") -- .replace(/\\"/g, '"') + '\''; -- return ctx.stylize(simple, 'string'); -- } -- if (isNumber(value)) { -- // Format -0 as '-0'. Strict equality won't distinguish 0 from -0, -- // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 . -- if (value === 0 && 1 / value < 0) -- return ctx.stylize('-0', 'number'); -- return ctx.stylize('' + value, 'number'); -- } -- if (isBoolean(value)) -- return ctx.stylize('' + value, 'boolean'); -- // For some reason typeof null is "object", so special case here. -- if (isNull(value)) -- return ctx.stylize('null', 'null'); --} -- -- --function formatError(value) { -- return '[' + Error.prototype.toString.call(value) + ']'; --} -- -- --function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { -- var output = []; -- for (var i = 0, l = value.length; i < l; ++i) { -- if (hasOwnProperty(value, String(i))) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- String(i), true)); -- } else { -- output.push(''); -- } -- } -- keys.forEach(function(key) { -- if (!key.match(/^\d+$/)) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- key, true)); -- } -- }); -- return output; --} -- -- --function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { -- var name, str, desc; -- desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; -- if (desc.get) { -- if (desc.set) { -- str = ctx.stylize('[Getter/Setter]', 'special'); -- } else { -- str = ctx.stylize('[Getter]', 'special'); -- } -- } else { -- if (desc.set) { -- str = ctx.stylize('[Setter]', 'special'); -- } -- } -- if (!hasOwnProperty(visibleKeys, key)) { -- name = '[' + key + ']'; -- } -- if (!str) { -- if (ctx.seen.indexOf(desc.value) < 0) { -- if (isNull(recurseTimes)) { -- str = formatValue(ctx, desc.value, null); -- } else { -- str = formatValue(ctx, desc.value, recurseTimes - 1); -- } -- if (str.indexOf('\n') > -1) { -- if (array) { -- str = str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n').substr(2); -- } else { -- str = '\n' + str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n'); -- } -- } -- } else { -- str = ctx.stylize('[Circular]', 'special'); -- } -- } -- if (isUndefined(name)) { -- if (array && key.match(/^\d+$/)) { -- return str; -- } -- name = JSON.stringify('' + key); -- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { -- name = name.substr(1, name.length - 2); -- name = ctx.stylize(name, 'name'); -- } else { -- name = name.replace(/'/g, "\\'") -- .replace(/\\"/g, '"') -- .replace(/(^"|"$)/g, "'"); -- name = ctx.stylize(name, 'string'); -- } -- } -- -- return name + ': ' + str; --} -- -- --function reduceToSingleString(output, base, braces) { -- var numLinesEst = 0; -- var length = output.reduce(function(prev, cur) { -- numLinesEst++; -- if (cur.indexOf('\n') >= 0) numLinesEst++; -- return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; -- }, 0); -- -- if (length > 60) { -- return braces[0] + -- (base === '' ? '' : base + '\n ') + -- ' ' + -- output.join(',\n ') + -- ' ' + -- braces[1]; -- } -- -- return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; --} -- -- - // NOTE: These type checking functions intentionally don't use `instanceof` - // because it is fragile and can be easily faked with `Object.create()`. - function isArray(ar) { -@@ -522,166 +98,10 @@ function isPrimitive(arg) { - exports.isPrimitive = isPrimitive; - - function isBuffer(arg) { -- return arg instanceof Buffer; -+ return Buffer.isBuffer(arg); - } - exports.isBuffer = isBuffer; - - function objectToString(o) { - return Object.prototype.toString.call(o); --} -- -- --function pad(n) { -- return n < 10 ? '0' + n.toString(10) : n.toString(10); --} -- -- --var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', -- 'Oct', 'Nov', 'Dec']; -- --// 26 Feb 16:19:34 --function timestamp() { -- var d = new Date(); -- var time = [pad(d.getHours()), -- pad(d.getMinutes()), -- pad(d.getSeconds())].join(':'); -- return [d.getDate(), months[d.getMonth()], time].join(' '); --} -- -- --// log is just a thin wrapper to console.log that prepends a timestamp --exports.log = function() { -- console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); --}; -- -- --/** -- * Inherit the prototype methods from one constructor into another. -- * -- * The Function.prototype.inherits from lang.js rewritten as a standalone -- * function (not on Function.prototype). NOTE: If this file is to be loaded -- * during bootstrapping this function needs to be rewritten using some native -- * functions as prototype setup using normal JavaScript does not work as -- * expected during bootstrapping (see mirror.js in r114903). -- * -- * @param {function} ctor Constructor function which needs to inherit the -- * prototype. -- * @param {function} superCtor Constructor function to inherit prototype from. -- */ --exports.inherits = function(ctor, superCtor) { -- ctor.super_ = superCtor; -- ctor.prototype = Object.create(superCtor.prototype, { -- constructor: { -- value: ctor, -- enumerable: false, -- writable: true, -- configurable: true -- } -- }); --}; -- --exports._extend = function(origin, add) { -- // Don't do anything if add isn't an object -- if (!add || !isObject(add)) return origin; -- -- var keys = Object.keys(add); -- var i = keys.length; -- while (i--) { -- origin[keys[i]] = add[keys[i]]; -- } -- return origin; --}; -- --function hasOwnProperty(obj, prop) { -- return Object.prototype.hasOwnProperty.call(obj, prop); --} -- -- --// Deprecated old stuff. -- --exports.p = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- console.error(exports.inspect(arguments[i])); -- } --}, 'util.p: Use console.error() instead'); -- -- --exports.exec = exports.deprecate(function() { -- return require('child_process').exec.apply(this, arguments); --}, 'util.exec is now called `child_process.exec`.'); -- -- --exports.print = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(String(arguments[i])); -- } --}, 'util.print: Use console.log instead'); -- -- --exports.puts = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(arguments[i] + '\n'); -- } --}, 'util.puts: Use console.log instead'); -- -- --exports.debug = exports.deprecate(function(x) { -- process.stderr.write('DEBUG: ' + x + '\n'); --}, 'util.debug: Use console.error instead'); -- -- --exports.error = exports.deprecate(function(x) { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stderr.write(arguments[i] + '\n'); -- } --}, 'util.error: Use console.error instead'); -- -- --exports.pump = exports.deprecate(function(readStream, writeStream, callback) { -- var callbackCalled = false; -- -- function call(a, b, c) { -- if (callback && !callbackCalled) { -- callback(a, b, c); -- callbackCalled = true; -- } -- } -- -- readStream.addListener('data', function(chunk) { -- if (writeStream.write(chunk) === false) readStream.pause(); -- }); -- -- writeStream.addListener('drain', function() { -- readStream.resume(); -- }); -- -- readStream.addListener('end', function() { -- writeStream.end(); -- }); -- -- readStream.addListener('close', function() { -- call(); -- }); -- -- readStream.addListener('error', function(err) { -- writeStream.end(); -- call(err); -- }); -- -- writeStream.addListener('error', function(err) { -- readStream.destroy(); -- call(err); -- }); --}, 'util.pump(): Use readableStream.pipe() instead'); -- -- --var uv; --exports._errnoException = function(err, syscall) { -- if (isUndefined(uv)) uv = process.binding('uv'); -- var errname = uv.errname(err); -- var e = new Error(syscall + ' ' + errname); -- e.code = errname; -- e.errno = errname; -- e.syscall = syscall; -- return e; --}; -+} \ No newline at end of file diff --git a/node_modules/core-util-is/lib/util.js b/node_modules/core-util-is/lib/util.js deleted file mode 100644 index ff4c851c0..000000000 --- a/node_modules/core-util-is/lib/util.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/node_modules/core-util-is/package.json b/node_modules/core-util-is/package.json deleted file mode 100644 index 4bbae557f..000000000 --- a/node_modules/core-util-is/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "_args": [ - [ - "core-util-is@1.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "core-util-is@1.0.2", - "_id": "core-util-is@1.0.2", - "_inBundle": false, - "_integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "_location": "/core-util-is", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "core-util-is@1.0.2", - "name": "core-util-is", - "escapedName": "core-util-is", - "rawSpec": "1.0.2", - "saveSpec": null, - "fetchSpec": "1.0.2" - }, - "_requiredBy": [ - "/verror" - ], - "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "_spec": "1.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/core-util-is/issues" - }, - "description": "The `util.is*` functions introduced in Node v0.12.", - "devDependencies": { - "tap": "^2.3.0" - }, - "homepage": "https://github.com/isaacs/core-util-is#readme", - "keywords": [ - "util", - "isBuffer", - "isArray", - "isNumber", - "isString", - "isRegExp", - "isThis", - "isThat", - "polyfill" - ], - "license": "MIT", - "main": "lib/util.js", - "name": "core-util-is", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/core-util-is.git" - }, - "scripts": { - "test": "tap test.js" - }, - "version": "1.0.2" -} diff --git a/node_modules/core-util-is/test.js b/node_modules/core-util-is/test.js deleted file mode 100644 index 1a490c65a..000000000 --- a/node_modules/core-util-is/test.js +++ /dev/null @@ -1,68 +0,0 @@ -var assert = require('tap'); - -var t = require('./lib/util'); - -assert.equal(t.isArray([]), true); -assert.equal(t.isArray({}), false); - -assert.equal(t.isBoolean(null), false); -assert.equal(t.isBoolean(true), true); -assert.equal(t.isBoolean(false), true); - -assert.equal(t.isNull(null), true); -assert.equal(t.isNull(undefined), false); -assert.equal(t.isNull(false), false); -assert.equal(t.isNull(), false); - -assert.equal(t.isNullOrUndefined(null), true); -assert.equal(t.isNullOrUndefined(undefined), true); -assert.equal(t.isNullOrUndefined(false), false); -assert.equal(t.isNullOrUndefined(), true); - -assert.equal(t.isNumber(null), false); -assert.equal(t.isNumber('1'), false); -assert.equal(t.isNumber(1), true); - -assert.equal(t.isString(null), false); -assert.equal(t.isString('1'), true); -assert.equal(t.isString(1), false); - -assert.equal(t.isSymbol(null), false); -assert.equal(t.isSymbol('1'), false); -assert.equal(t.isSymbol(1), false); -assert.equal(t.isSymbol(Symbol()), true); - -assert.equal(t.isUndefined(null), false); -assert.equal(t.isUndefined(undefined), true); -assert.equal(t.isUndefined(false), false); -assert.equal(t.isUndefined(), true); - -assert.equal(t.isRegExp(null), false); -assert.equal(t.isRegExp('1'), false); -assert.equal(t.isRegExp(new RegExp()), true); - -assert.equal(t.isObject({}), true); -assert.equal(t.isObject([]), true); -assert.equal(t.isObject(new RegExp()), true); -assert.equal(t.isObject(new Date()), true); - -assert.equal(t.isDate(null), false); -assert.equal(t.isDate('1'), false); -assert.equal(t.isDate(new Date()), true); - -assert.equal(t.isError(null), false); -assert.equal(t.isError({ err: true }), false); -assert.equal(t.isError(new Error()), true); - -assert.equal(t.isFunction(null), false); -assert.equal(t.isFunction({ }), false); -assert.equal(t.isFunction(function() {}), true); - -assert.equal(t.isPrimitive(null), true); -assert.equal(t.isPrimitive(''), true); -assert.equal(t.isPrimitive(0), true); -assert.equal(t.isPrimitive(new Date()), false); - -assert.equal(t.isBuffer(null), false); -assert.equal(t.isBuffer({}), false); -assert.equal(t.isBuffer(new Buffer(0)), true); diff --git a/node_modules/create-frame/LICENSE b/node_modules/create-frame/LICENSE deleted file mode 100644 index 652517172..000000000 --- a/node_modules/create-frame/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2016, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/create-frame/README.md b/node_modules/create-frame/README.md deleted file mode 100644 index 49db10079..000000000 --- a/node_modules/create-frame/README.md +++ /dev/null @@ -1,92 +0,0 @@ -# create-frame [![NPM version](https://img.shields.io/npm/v/create-frame.svg?style=flat)](https://www.npmjs.com/package/create-frame) [![NPM downloads](https://img.shields.io/npm/dm/create-frame.svg?style=flat)](https://npmjs.org/package/create-frame) [![Build Status](https://img.shields.io/travis/jonschlinkert/create-frame.svg?style=flat)](https://travis-ci.org/jonschlinkert/create-frame) - -Easily add private variables to handlebars block helpers. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save create-frame -``` - -## Usage - -```js -var createFrame = require('create-frame'); -``` - -## Example - -Create private variables from options hash arguments. - -**Template** - -The `@post` variable inside the block is created by the `post` hash argument. So the context of `@post` is the `this` object that is passed to the block. - -```handlebars -{{#block post=this}} -

{{@post.title}}

-{{/block}} -``` - -**Helper** - -The following helper uses `createFrame`, then it extends the "frame" with hash arguments. - -```js -handlebars.registerHelper('block', function (options) { - var frame = createFrame(options.data); - // extend the frame with hash arguments - frame.extend(options.hash); - return options.fn(options, {data: frame}); -}); - -var fn = handlebars.compile(str); -fn({title: 'My Blog Post'}); -``` - -## About - -### Related projects - -* [assemble](https://www.npmjs.com/package/assemble): Get the rocks out of your socks! Assemble makes you fast at creating web projects… [more](https://github.com/assemble/assemble) | [homepage](https://github.com/assemble/assemble "Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit") -* [handlebars-helpers](https://www.npmjs.com/package/handlebars-helpers): More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate… [more](https://github.com/assemble/handlebars-helpers) | [homepage](https://github.com/assemble/handlebars-helpers "More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ - -To generate the readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install -g verb verb-generate-readme && verb -``` - -### Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -### License - -Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/create-frame/blob/master/LICENSE). - -*** - -_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on July 21, 2016._ \ No newline at end of file diff --git a/node_modules/create-frame/index.js b/node_modules/create-frame/index.js deleted file mode 100644 index ed5cd62bd..000000000 --- a/node_modules/create-frame/index.js +++ /dev/null @@ -1,33 +0,0 @@ -/*! - * create-frame - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var utils = require('./utils'); - -module.exports = function createFrame(data) { - if (!utils.isObject(data)) { - throw new TypeError('createFrame expects data to be an object'); - } - - var extend = utils.extend; - var frame = extend({}, data); - frame._parent = data; - - utils.define(frame, 'extend', function(data) { - extend(this, data); - }); - - if (arguments.length > 1) { - var args = [].slice.call(arguments, 1); - var len = args.length, i = -1; - while (++i < len) { - frame.extend(args[i] || {}); - } - } - return frame; -}; diff --git a/node_modules/create-frame/node_modules/define-property/LICENSE b/node_modules/create-frame/node_modules/define-property/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/create-frame/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/create-frame/node_modules/define-property/README.md b/node_modules/create-frame/node_modules/define-property/README.md deleted file mode 100644 index 8cac698ad..000000000 --- a/node_modules/create-frame/node_modules/define-property/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# define-property [![NPM version](https://badge.fury.io/js/define-property.svg)](http://badge.fury.io/js/define-property) - -> Define a non-enumerable property on an object. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i define-property --save -``` - -## Usage - -**Params** - -* `obj`: The object on which to define the property. -* `prop`: The name of the property to be defined or modified. -* `descriptor`: The descriptor for the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**get/set** - -```js -define(obj, 'foo', { - get: function() {}, - set: function() {} -}); -``` - -## Related projects - -* [delegate-object](https://www.npmjs.com/package/delegate-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/delegate-object) | [homepage](https://github.com/doowb/delegate-object) -* [forward-object](https://www.npmjs.com/package/forward-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/forward-object) | [homepage](https://github.com/doowb/forward-object) -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep) -* [mixin-object](https://www.npmjs.com/package/mixin-object): Mixin the own and inherited properties of other objects onto the first object. Pass an… [more](https://www.npmjs.com/package/mixin-object) | [homepage](https://github.com/jonschlinkert/mixin-object) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/define-property/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 31, 2015._ diff --git a/node_modules/create-frame/node_modules/define-property/index.js b/node_modules/create-frame/node_modules/define-property/index.js deleted file mode 100644 index 3e0e5e133..000000000 --- a/node_modules/create-frame/node_modules/define-property/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var isDescriptor = require('is-descriptor'); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; diff --git a/node_modules/create-frame/node_modules/define-property/package.json b/node_modules/create-frame/node_modules/define-property/package.json deleted file mode 100644 index dc79274c5..000000000 --- a/node_modules/create-frame/node_modules/define-property/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "_from": "define-property@^0.2.5", - "_id": "define-property@0.2.5", - "_inBundle": false, - "_integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "_location": "/create-frame/define-property", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "define-property@^0.2.5", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "^0.2.5", - "saveSpec": null, - "fetchSpec": "^0.2.5" - }, - "_requiredBy": [ - "/create-frame" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "_shasum": "c35b1ef918ec3c990f9a5bc57be04aacec5c8116", - "_spec": "define-property@^0.2.5", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\create-frame", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "bundleDependencies": false, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "deprecated": false, - "description": "Define a non-enumerable property on an object.", - "devDependencies": { - "mocha": "*", - "should": "^7.0.4" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "mixin-deep", - "mixin-object", - "delegate-object", - "forward-object" - ] - } - }, - "version": "0.2.5" -} diff --git a/node_modules/create-frame/node_modules/extend-shallow/LICENSE b/node_modules/create-frame/node_modules/extend-shallow/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/create-frame/node_modules/extend-shallow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/create-frame/node_modules/extend-shallow/README.md b/node_modules/create-frame/node_modules/extend-shallow/README.md deleted file mode 100644 index cdc45d4ff..000000000 --- a/node_modules/create-frame/node_modules/extend-shallow/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# extend-shallow [![NPM version](https://badge.fury.io/js/extend-shallow.svg)](http://badge.fury.io/js/extend-shallow) [![Build Status](https://travis-ci.org/jonschlinkert/extend-shallow.svg)](https://travis-ci.org/jonschlinkert/extend-shallow) - -> Extend an object with the properties of additional objects. node.js/javascript util. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i extend-shallow --save -``` - -## Usage - -```js -var extend = require('extend-shallow'); - -extend({a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -Pass an empty object to shallow clone: - -```js -var obj = {}; -extend(obj, {a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -## Related - -* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. -* [for-own](https://github.com/jonschlinkert/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) -* [for-in](https://github.com/jonschlinkert/for-in): Iterate over the own and inherited enumerable properties of an objecte, and return an object… [more](https://github.com/jonschlinkert/for-in) -* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. -* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. -* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 29, 2015._ \ No newline at end of file diff --git a/node_modules/create-frame/node_modules/extend-shallow/index.js b/node_modules/create-frame/node_modules/extend-shallow/index.js deleted file mode 100644 index 92a067fcc..000000000 --- a/node_modules/create-frame/node_modules/extend-shallow/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var isObject = require('is-extendable'); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} diff --git a/node_modules/create-frame/node_modules/extend-shallow/package.json b/node_modules/create-frame/node_modules/extend-shallow/package.json deleted file mode 100644 index f133e8822..000000000 --- a/node_modules/create-frame/node_modules/extend-shallow/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_from": "extend-shallow@^2.0.1", - "_id": "extend-shallow@2.0.1", - "_inBundle": false, - "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "_location": "/create-frame/extend-shallow", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "extend-shallow@^2.0.1", - "name": "extend-shallow", - "escapedName": "extend-shallow", - "rawSpec": "^2.0.1", - "saveSpec": null, - "fetchSpec": "^2.0.1" - }, - "_requiredBy": [ - "/create-frame" - ], - "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "_shasum": "51af7d614ad9a9f610ea1bafbb989d6b1c56890f", - "_spec": "extend-shallow@^2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\create-frame", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/extend-shallow/issues" - }, - "bundleDependencies": false, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "deprecated": false, - "description": "Extend an object with the properties of additional objects. node.js/javascript util.", - "devDependencies": { - "array-slice": "^0.2.3", - "benchmarked": "^0.1.4", - "chalk": "^1.0.0", - "for-own": "^0.1.3", - "glob": "^5.0.12", - "is-plain-object": "^2.0.1", - "kind-of": "^2.0.0", - "minimist": "^1.1.1", - "mocha": "^2.2.5", - "should": "^7.0.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/extend-shallow", - "keywords": [ - "assign", - "extend", - "javascript", - "js", - "keys", - "merge", - "obj", - "object", - "prop", - "properties", - "property", - "props", - "shallow", - "util", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "extend-shallow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/extend-shallow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.1" -} diff --git a/node_modules/create-frame/package.json b/node_modules/create-frame/package.json deleted file mode 100644 index 246f9e0dc..000000000 --- a/node_modules/create-frame/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_from": "create-frame@^1.0.0", - "_id": "create-frame@1.0.0", - "_inBundle": false, - "_integrity": "sha1-i5XyaR4ySbYIBEPjPQutn49pdao=", - "_location": "/create-frame", - "_phantomChildren": { - "is-descriptor": "0.1.6", - "is-extendable": "0.1.1" - }, - "_requested": { - "type": "range", - "registry": true, - "raw": "create-frame@^1.0.0", - "name": "create-frame", - "escapedName": "create-frame", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/handlebars-helper-create-frame", - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/create-frame/-/create-frame-1.0.0.tgz", - "_shasum": "8b95f2691e3249b6080443e33d0bad9f8f6975aa", - "_spec": "create-frame@^1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/create-frame/issues" - }, - "bundleDependencies": false, - "dependencies": { - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "isobject": "^3.0.0", - "lazy-cache": "^2.0.2" - }, - "deprecated": false, - "description": "Easily add private variables to handlebars block helpers.", - "devDependencies": { - "gulp-format-md": "^0.1.11", - "handlebars": "^4.0.6", - "mocha": "^3.2.0", - "should": "^11.1.2" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "utils.js" - ], - "homepage": "https://github.com/jonschlinkert/create-frame", - "keywords": [ - "create", - "frame", - "handlebars", - "handlebars-helpers", - "helpers" - ], - "license": "MIT", - "main": "index.js", - "name": "create-frame", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/create-frame.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "assemble", - "handlebars-helpers" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "verb", - "verb-generate-readme" - ] - }, - "version": "1.0.0" -} diff --git a/node_modules/create-frame/utils.js b/node_modules/create-frame/utils.js deleted file mode 100644 index d7dc8fa50..000000000 --- a/node_modules/create-frame/utils.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -var utils = require('lazy-cache')(require); -var fn = require; -require = utils; - -/** - * Lazily required module dependencies - */ - -require('define-property', 'define'); -require('extend-shallow', 'extend'); -require('isobject', 'isObject'); -require = fn; - -/** - * Expose `utils` modules - */ - -module.exports = utils; diff --git a/node_modules/date.js/.travis.yml b/node_modules/date.js/.travis.yml deleted file mode 100644 index 91b317ca6..000000000 --- a/node_modules/date.js/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.12" - - "4" - - "5" diff --git a/node_modules/date.js/History.md b/node_modules/date.js/History.md deleted file mode 100644 index b2deff5a6..000000000 --- a/node_modules/date.js/History.md +++ /dev/null @@ -1,69 +0,0 @@ - -0.3.3 / 2018-04-07 -================== - - * fix the distribution and switch to browserify - -0.3.1 / 2016-03-02 -================== - - * remove lodash dep - -0.3.0 / 2016-03-02 -================== - - * update the readme - * update dist - * remove map - * fix travis. include only the lodash methods that we need. minor tweaks to be more consistent with the rest of the project. - * update lodash to find the latest available - * remove template string for legacy support - * remove template string for legacy support - * natural language normalization, fixes #66, 64, 28, 16, 15, 11, 4 - * normalize string at parser using norm.js; add lodash as dep - * add issues under work - * fix npm i warning by adding MIT license field - -0.2.2 / 2016-01-25 -================== - - * fix tonight with minutes issue #72, add test - -0.2.1 / 2015-11-20 -================== - - * fix(months): adds no extra day when months in the past - -0.2.0 / 2014-02-21 -================== - - * update the distributions - * Fix rMonths reg exp - * Unparsable strings return the current date instead of tomorrow. Better prediction if parsed date is close to now (same minute). - * parsing of str's like `2 minutes ago` working now - * Capturing the time unit minutes..months - * added travis - * correctly parse dates like "1st of March" - * parsing of "1st of march" working - * Extend at hour to support 24 hour clock and add support for hour.minute format - * 12:30pm no longer resolves to 12:30am. fixes: #6 - * fixed an issue that prevented Monday at 10 am to be matched correctly - -0.1.1 / 2013-05-21 -================== - -* fixed: infinite loop for non-matching characters - -0.1.0 / 2013-05-20 -================== - -* fixed: dates in the past -* added: ago -* added: implied meridiem -* added: months -* added: tests - -0.0.1 / 2013-05-13 -================== - -* initial commit diff --git a/node_modules/date.js/Makefile b/node_modules/date.js/Makefile deleted file mode 100644 index 9b670b1e3..000000000 --- a/node_modules/date.js/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -test: - @./node_modules/.bin/mocha -R spec - -build: index.js - @./node_modules/.bin/browserify --bare --standalone date -o dist/date.js index.js - -dist: build minify - -minify: dist/date.js - @curl -s \ - -d compilation_level=SIMPLE_OPTIMIZATIONS \ - -d output_format=text \ - -d output_info=compiled_code \ - --data-urlencode "js_code@$<" \ - http://closure-compiler.appspot.com/compile \ - > $<.tmp - @mv $<.tmp dist/date.min.js - -.PHONY: test clean minify diff --git a/node_modules/date.js/Readme.md b/node_modules/date.js/Readme.md deleted file mode 100644 index 29a54ce5a..000000000 --- a/node_modules/date.js/Readme.md +++ /dev/null @@ -1,111 +0,0 @@ -# date [![Build Status](https://travis-ci.org/matthewmueller/date.svg?branch=master)](https://travis-ci.org/matthewmueller/date) [![Libscore](http://img.shields.io/badge/libscore-35-brightgreen.svg?style=flat-square)](http://libscore.com/#date) - -Date is an english language date parser for node.js and the browser. For examples and demos, see: [http://matthewmueller.github.io/date/](http://matthewmueller.github.io/date/) - -**Update:** date.js now has much better NLP support thanks to [@kengz](https://github.com/kengz) - -## Installation - -### On the server or in the browser: - - npm install date.js - -## Examples - -```js -date('10 minutes from now') -date('in 5 hours') -date('at 5pm') -date('at 12:30') -date('at 23:35') -date('in 2 days') -date('tuesday at 9am') -date('monday at 1:00am') -date('last monday at 1:00am') -date('tomorrow at 3pm') -date('yesterday at 12:30am') -date('5pm tonight') -date('tomorrow at noon') -date('next week tuesday') -date('next week tuesday at 4:30pm') -date('2 weeks from wednesday') -date('tomorrow night at 9') -date('tomorrow afternoon') -date('this morning at 9') -date('at 12:30pm') -date('tomorrow at 9 in the morning') -date('2 years from yesterday at 5pm') -date('last month') -date('2nd of January') -date('1st of March') -date('1 st of March') -date('31st of September 4:00am') -date('1st of January 4:00am') -date('9th of December 4:00am') -date('tomorrow afternoon at 4:30pm 1 month from now') -date('10 seconds ago') -date('1 minute ago') -date('2 hours ago') -date('5 weeks ago') -date('2 months ago') -date('1 year ago') -date('an hour later') -date('2w from wednesday') -date('2nd day of January') -date('two hours later') -date('a fortnight from wednesday') -date('a minute ago') - -date('at 12:30') -date('at 12.30') -date('tuesday at 9') -date('tomorrow at 15') -``` - -## API - -### date(str, [offset]) - -Create a `Date` from a `str`. You may also supply an optional `offset` to the starting date. `offset` defaults to the current date and time. - -## Tests - -To run the tests, you'll need node.js: - - npm install - make test - -## Contributors - -``` - project : date - repo age : 2 years, 10 months - active : 39 days - commits : 87 - files : 17 - authors : - 27 Matt Mueller 31.0% - 12 Bulkan Evcimen 13.8% - 8 kengz 9.2% - 3 Eero Norri 3.4% - 2 thomas 2.3% - 2 Patrick Stadler 2.3% - 1 Christopher Blum 1.1% - 1 Federico Rampazzo 1.1% - 1 Timothy Cyrus 1.1% - 1 chencheng 1.1% - 1 HipsterBrown 1.1% - 1 Jimmy Gaussen 1.1% -``` - -## License - -(The MIT License) - -Copyright (c) 2013 Matt Mueller - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/date.js/component.json b/node_modules/date.js/component.json deleted file mode 100644 index 8ae64abf5..000000000 --- a/node_modules/date.js/component.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "date", - "repo": "matthewmueller/date", - "description": "dates for humans", - "version": "0.3.3", - "keywords": [ - "date", - "parsing", - "human" - ], - "dependencies": { - "visionmedia/debug": "*" - }, - "main": "index.js", - "scripts": [ - "index.js", - "lib/date.js", - "lib/parser.js" - ] -} diff --git a/node_modules/date.js/dist/date.js b/node_modules/date.js/dist/date.js deleted file mode 100644 index 5b3e49d0e..000000000 --- a/node_modules/date.js/dist/date.js +++ /dev/null @@ -1,3633 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.date = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0) --n - diff += (7 * n) - this.update(diff * _day) - return this -} - -/** - * Update the date - * - * @param {Number} ms - * @return {Date} - * @api private - */ - -date.prototype.update = function (ms) { - this.date = new Date(this.date.getTime() + ms) - return this -} - -/** - * leap year - * - * @param {Number} yr - * @return {Boolean} - */ - -function leapyear (yr) { - return (yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0 -} - -},{"debug":10}],3:[function(require,module,exports){ -module.exports={ - "op": { - "plus": ["and", "plus", "+", "add", "on"], - "minus": ["minus", "subtract"], - "times": ["times", "multiply"], - "divide": ["divide"] - }, - "o": { - "plus": ["at", "in", "past", "late", "later", "after", "next", "from", "start", "starting", "since", "coming"], - "minus": ["last", "minus", "subtract", "ago", "before", "from"] - }, - "n": { - "0.25": ["quarter"], - "0.5": ["half", "1/2", "half an"], - "0": ["zero"], - "1": ["one", "a", "an", "first"], - "2": ["two", "second"], - "3": ["three", "third"], - "4": ["four", "fourth"], - "5": ["five", "fifth"], - "6": ["six", "sixth"], - "7": ["seven", "seventh"], - "8": ["eight", "eighth"], - "9": ["nine", "ninth"], - "10": ["ten", "tenth"], - "11": ["eleven", "eleventh"], - "12": ["twelve", "twelveth"], - "13": ["thirteen", "thirteenth"], - "14": ["fourteen", "fourteenth"], - "15": ["fifteen", "fifteenth"], - "16": ["sixteen", "sixteenth"], - "17": ["seventeen", "seventeenth"], - "18": ["eighteen", "eighteenth"], - "19": ["nineteen", "nineteenth"], - "20": ["twenty", "twentieth"], - "30": ["thirty", "thirtieth"], - "40": ["fourty", "fourtieth"], - "50": ["fifty", "fiftieth"], - "60": ["sixty", "sixtieth"], - "70": ["seventy", "seventieth"], - "80": ["eighty", "eightieth"], - "90": ["ninety", "ninetieth"], - "100": ["hundred", "hundreds", "hundredth"], - "1000": ["thousand", "thousands", "thousandth", "k", "K"] - }, - "t": { - }, - "dt": { - "s": ["second", "seconds", "s", "sec", "secs"], - "m": ["minute", "minutes", "m", "min", "mins"], - "h": ["hour", "hours", "h", "hr", "hrs"], - "d": ["day", "days", "d", "dai"], - "w": ["week", "weeks", "w", "wk", "wks"], - "M": ["month", "months", "monthes", "M", "mo", "moon", "moons"], - "y": ["year", "years", "y", "yr", "yrs"] - }, - "T": { - "t:,dt:=3h": ["later", "soon"], - "t:=1d,dt:": ["st", "nd", "rd", "th", "st day", "nd day", "rd day", "th day"], - "t:,dt:1w": ["st week", "nd week", "rd week", "th week"], - "t:,dt:14d": ["day", "fortnight"], - "t:=0h=0m=0s1mer,dt:": ["pm", "p.m", "p.m.", "noon"], - "t:,dt:1d": ["tomorrow", "tmr"], - "t:,dt:-1d": ["yesterday", "ytd"], - "t:,0dt:": ["today"], - "t:=2h=0m=0s1mer,dt:": ["afternoon"], - "t:=6h=0m=0s0mer,dt:": ["dawn"], - "t:=7h=0m=0s0mer,dt:": ["am", "a.m", "a.m."], - "t:=7h=0m=0s1mer,dt:": ["evening"], - "t:=8h=0m=0s0mer,dt:": ["morning"], - "t:=9h=0m=0s1mer,dt:": ["tonight", "night"], - "t:=0h=0m=0s0mer,dt:1d": ["midnight"], - "t:,dt:=0w0wd": ["sunday", "sun"], - "t:,dt:=0w1wd": ["monday", "mon"], - "t:,dt:=0w2wd": ["tuesday", "tue", "tues"], - "t:,dt:=0w3wd": ["wednesday", "wed"], - "t:,dt:=0w4wd": ["thursday", "thu", "thur", "thurs"], - "t:,dt:=0w5wd": ["friday", "fri"], - "t:,dt:=0w6wd": ["saturday", "sat"], - "t:1M=1d,dt:": ["january", "jan"], - "t:2M=1d,dt:": ["february", "feb"], - "t:3M=1d,dt:": ["march", "mar"], - "t:4M=1d,dt:": ["april", "apr"], - "t:5M=1d,dt:": ["may"], - "t:6M=1d,dt:": ["june", "jun"], - "t:7M=1d,dt:": ["july", "jul"], - "t:8M=1d,dt:": ["august", "aug"], - "t:9M=1d,dt:": ["september", "sept", "sep"], - "t:10M=1d,dt:": ["october", "oct"], - "t:11M=1d,dt:": ["november", "nov"], - "t:12M=1d,dt:": ["december", "dec"], - "t:12M25d,dt:": ["christmas"] - }, - "f": { - "1": ["once"], - "2": ["twice"] - } -} - -},{}],4:[function(require,module,exports){ -// Production rule module for the CFG -// !leap year -// !proper carry considering # of days per month - -/** - * Module Dependencies - */ - -var _ = require('./subdash') -var util = require('./util') -var symbol = require('./symbol') -var tokenize = require('./tokenize') - -/** - * Export `norm` - */ - -module.exports = norm - -// a partial implementation of norm -/** - * Preprocess a string using the human language for time CFG, return a triple of original str, preprocessed tokens, and the normal forms (extracted dates in normal forms) - */ -function norm (str, offset) { - try { - // Production rules: CFG algorithm for human language for time - var tokObj = tokenize(str) - // console.log('p#0: parse normal forms', tokObj) - var syms = pickTokens(tokObj.symbols) || [] - // console.log('p#0: remove nulls, pick tokens', syms) - syms = reduce(syms, ['n', 'n']) - // console.log('p#1: arithmetics: [] ~ , + if n1 > n2, * else', syms) - syms = nTnRedistribute(syms) - // console.log('p#2: redistribute, [] ~ [] ', syms) - syms = reduce(syms, ['o', 'o']) - // console.log('p#3: ~ *', syms) - - // preprocessing ends, now format output - var restored = restoreTokens(syms, tokObj) - return restored - } catch (e) { - return { - str: str, - tokens: [], - normals: [] - } - } - -} - -/** - * format a preprocessed array of symbols back into string, using some info from tokObj - */ -function restoreTokens (syms, tokObj) { - var tokens = [], - normals = [], - tokensOut = tokObj.tokensOut, - tokensIn = tokObj.tokensIn - - syms = util.removeTnPlus(syms) - for (var i = 0; i < syms.length; i++) { - var s = syms[i], - sName = util.sName(s), - token = '' - switch (sName) { - case 'n': - // if token is already numeric, use it - token = (s.token.match(/^\s*[\d\.\-\+]+\s*$/)) ? s.token.trim() : s.value.toString() - break - case 'T': - // handles shits like 1 am ~ t:1h00m,dt:, am (token returned) - token = restoreNormal(s) - break - default: - // the other cases like op, o, cron, range - token = s.token.toString() - } - - // extract the protected normal string - if (typeof token == 'string') { - tokens.push(token) - } else { - // get protected normal forms - normals.push(token.normal) - } - } - return { - tokens: tokens, - str: tokens.join(' ').replace(/\s+/g, ' '), - normals: normals - } -} - -/** - * Given a T symbol, try to restore its normal form (return wrapped in JSON if it's a complete date string {normal: }), or just return the plain string as token - */ -function restoreNormal (T) { - var token = T.token - if (token.match(util.reT)) { - // if it is normal form, convert back into the normal1 or normal2 strings - var split = util.splitT(token) - if (_.includes(split, undefined)) { - // if it's normal2 form - // either it's a date or time - var dateArr = split.slice(0, 3), - timeArr = split.slice(3) - if (timeArr[0] != undefined) { - // check time first, it's first signature (hour) is defined - // return hh:mm - return util.TtoStdT(token).match(/(\d+\:\d+)/)[1] - } else { - // else it's a date, parse arr and return complete stdT instead - // return wrapped in JSON if it's a complete date string - return { normal: util.TtoStdT(token) } - } - } else { - // if it's normal1 form, use TtoStd - // return wrapped in JSON if it's a complete date string - return { normal: util.TtoStdT(token) } - } - } else if (!util.has_t(T) && util.has_dt(T) && util.has_pureTimeUnit(T)) { - // handle pure dt: T that are purel displacement, e.g. week, fortnight - var dtStr = '', - units = _.keys(T.dt), - dt = T.dt - // accumulate dtStr - for (var i = 0; i < units.length; i++) { - var u = units[i], - kval = parseFloat(dt[u]), - // set number has default, or is 0, 1 - numStr = (kval != dt[u] || kval == 0 || Math.abs(kval) == 1) ? '' : dt[u].toString() + ' ' - - // set canon from lemma only if it exists, and key is word, else use u - var canon = u - if (T.canon != undefined) { - // and if it's also a timeUnit - canon = T.canon - } else { - // get the lemma for u, its canon and key - var lemma = util.lemma(u), - lemmaCanon = lemma.canon, - lemmaKey = lemma.value - if (lemmaKey && lemmaKey.match(/^\w+$/)) { canon = lemmaCanon } - } - // set the units, number, and canonical form of the unit - dtStr = dtStr + numStr + canon + ' ' - } - return dtStr - } else { - // else it's just plain english, return - return token - } -} -// var fakes = { t: { h: '1', m: '00' }, dt: {}, token: 't:1h00m,dt:' } -// var fakes = { t: { M: '12', d: '25', m: '00' }, dt: {}, token: 't:12M25d00m,dt:' } -// console.log(restoreNormal(fakes)) - -/** - * !Backburner for future extension: Main method: Run the CFG algorithm to parse the string, return JSON of {input, output, diffStr}. Normalize the string before Matt's algorithm runs it. - * @example - * var str = 'having lunch today at 3 hours after 9am' - * norm(str) - * // => { input: 'having lunch today at 3 hours after 9am', - * output: '2016-03-04T05:00:09Z', - * difference: 'having lunch' } - */ -function CFGproduce (str, offset) { - // try all the below till all is elegantly fixed - var diffStr = str, - finalStr = null, - output = str - // Production rules: CFG algorithm for human language for time - // p#0: tokenize, remove nulls, pick tokens - var tokObj = tokenize(str) - var syms = pickTokens(tokObj.symbols) - // console.log('p#0: parse normal forms, remove nulls, pick tokens', tokObj) - - try { - syms = reduce(syms, ['n', 'n']) - // console.log('p#1: arithmetics: [] ~ , + if n1 > n2, * else', syms) - syms = nTnRedistribute(syms) - // console.log('p#2: redistribute, [] ~ [] ', syms) - output = util.tokenToStr(syms) - - // !okay replace back the normal forms in the str - - // // !Till future completion: Mute from below - // syms = reduce(syms, ['n', 'T']) - // // console.log('p#3: [] ~ , * if dt, + if t', syms) - // syms = reduce(syms, ['T', 'T']) - // // console.log('p#4: [] ~ ', syms) - // syms = nDefTSyms(syms) - // // console.log('p#5: defaulter ~ , d defaults to t:h', syms) - // syms = reduce(syms, ['o', 'o']) - // // console.log('p#6: ~ *', syms) - // syms = autoHourModding(syms) - // syms = weekModding(syms, offset) - // // console.log('p#7: modding: meridiem, weeks', syms) - // syms = optReduce(syms, ['T', 'T'], ['o'], null, symbol(util.nowT(offset))) - // // console.log('p#8: ~ ', syms) - - // // !future: - // // syms = reduce(syms, ['T'], ['r']) - // // syms = reduce(syms, ['f', 'T', 'rT'], ['c']) - - // console.log('tokObj', tokObj) - syms = finalizeT(syms, offset) - // console.log('p#9: finalizeT with origin', syms) - - finalStr = symsToStdT(syms, offset) - // console.log('finalStr', finalStr) - - } catch (e) {} - // extract the tokens for difference string later - // diffStr = util.unparsedStr(tokObj.str, tokObj.symbols) - // console.log('diffStr', diffStr) - // !convert dt into proper terms - - return { - input: str, - // output: new Date(finalStr), - output: output, - difference: diffStr - } - -} - -/** - * Production rule #0: pick tokens, remove nulls. - * 1. break into chunks of arrs delimited by triple-null-or-more - * 2. reorder chunks by arr length - * 3.1 init candidate = [] - * 3.2 pull and push the chunks not containing into candidate - * 3.3 pull and push the chunks containing into candidate - * 4. pick the last candidate - */ -function pickTokens (syms) { - // 1. 2. 3. - var delimited = util.delimSyms(syms), - chunks = util.splitSyms(delimited, 'trinull'), - candidates = util.orderChunks(chunks) - // 4. - return candidates.pop() -} - -/** - * Reduce an array of symbols with binary operations between permissible symbols. - * @param {Array} syms Array of input symbols - * @param {Array} varArr String names of permissible variables. - * @param {Array} opArr String names of permissible operations. - * @return {Array} The reduced result. - */ -function reduce (syms, varArr, opArr) { - if (syms.length < 2) { - return syms - } - // the operator arrays - var opArr = opArr || ['op'] - // endmark for handling last symbol - syms.push('null') - // the result, past-pointer(previous non-null symbol), default-op, current-op, and whether current-op is inter-symbol op, i.e. will not be used up - var res = [], - past = null, - defOp = null, - op = defOp, - interOp = false - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (!past || !s) { - // edge case or null - if (i == 0) { past = s; } - } else if (util.isSym(s, opArr)) { - // s is an op. mark op as won't be used yet - op = s - interOp = true - // the nDefT for when past = 'n', s = 'o' - } else if (util.isSym(past, [varArr[0]]) && util.isSym(s, [varArr[1]])) { - // s and past are operable variables specified by varArr - past = execOp(past, op, s) - // reset after op is used - op = defOp - interOp = false - } else { - // no further legal operation made, push and continue - // change of class, past is finalized, push to res - res.push(past) - if (Array.isArray(past)) { - // if past was returned from execOp as array (not executed), then flatten it and dont push op to res, since it's already included in op - res = _.flatten(res) - } else { - // if inter-op (not used), push a clone (prevent overwrite later) - if (interOp) { res.push(symbol(op.value)) } - } - // reset - op = defOp - interOp = false - past = s - } - } - return res -} - -/** - * Optional reduce: similar to reduce() but either argument is optional. - * algorithm: return a T - * 1. for each t, dt, do: - * 2. for each key in union of keys for Lt, Rt, do: - * 3. _Rt = _Rt op _Lt - * @param {Array} syms Array of input symbols - * @param {Array} varArr String names of permissible variables. - * @param {Array} opArr String names of permissible operations. - * @param {symbol} Ldef default for left argument - * @param {symbol} Rdef default for right argument - * @return {Array} The reduced result. - */ -function optReduce (syms, varArr, opArr, Ldef, Rdef) { - if (syms.length < 2) { - return syms - } - // use peek - var res = [], - sum = null, - L = null, - R = null - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (util.isSym(s, opArr)) { - if (sum == null) { - L = syms[i - 1] - sum = (util.isSym(L, [varArr[0]])) ? L : Ldef - } - R = syms[i + 1] - // if is var skip it since will be consumed - if (util.isSym(R, [varArr[1]])) { i++; } - // else reset to default - else { R = Rdef; } - // compute: - sum = execOp(sum, s, R) - // before loop quits due to possible i++, push the last - if (i == syms.length - 1) { - res.push(sum) - } - } else { - // s is not opArr, can't have been varArr either - // edge case: at first dont push - if (i > 0) { - res.push(sum) - res.push(s) - sum = null - } - } - } - return res -} - -/** - * Execute non-commutative operation between 2 argument symbols and an op symbol; carry out respective ops according to symbol names. - * @param {symbol} L Left argument - * @param {symbol} op operation - * @param {symbol} R Right argument - * @param {str} offset The time origin offset - * @return {symbol} Result - */ -function execOp (L, op, R, offset) { - var otype = util.opType(L, op, R), - res = null - if (_.includes(['nn'], otype)) { - res = nnOp(L, op, R) - } else if (_.includes(['nT'], otype)) { - res = nTOp(L, op, R) - } else if (_.includes(['TT'], otype)) { - res = TTOp(L, op, R) - } else if (_.includes(['ToT', 'oT', 'To'], otype)) { - res = ToTOp(L, op, R, offset) - } else if (_.includes(['oo'], otype)) { - res = ooOp(L, R) - } else if (_.includes(['rT', 'TrT'], otype)) { - // has optional arg - res = rTOp(L, R) - } else if (_.includes(['cT', 'fcT', 'crT', 'fcrT'], otype)) { - // has optional arg - res = cTOp(L, R) - } else { - // not executable, e.g. not in the right order, return fully - res = (op == null) ? [L, R] : [L, op, R] - } - return res -} - -/** - * Atomic binary arithmetic operation on the numerical level, with default overriding the argument prepended with '='. - * @param {string|Number} Lval The left argument value. - * @param {symbol} op The op symbol - * @param {string|Number} Rval The right argument value. - * @return {Number} Result from the operation. - */ -function atomicOp (Lval, op, Rval, dontOp) { - dontOp = dontOp || false - var oName = op.value - if (Lval == undefined) { - // if L is missing, R must exist tho - return (oName == 'minus') ? Rval.toString().replace(/(\d)/, '-$1') : Rval - } else if (Rval == undefined) { - // if L exists, be it def or not, R missing - return Lval - } else { - // or R exist or is default (parse to NaN), L can be default too but ignore then - var defL = Lval.toString().match(/^=/), - defR = Rval.toString().match(/^=/) - var l = parseFloat(Lval.toString().replace(/^=/, '')), - r = parseFloat(Rval.toString().replace(/^=/, '')) - if (defL && defR) { - // if both are default, return r 'last come last serve' - return r - } else if (defL && !defR) { - // if either default, return the non-default - return r - } else if (!defL && defR) { - return l - } else { - // none default - if (dontOp) { - // if is a don't operate together, i.e. for t, just return l - // 'first come first serve' - return l - } else { - // make the into proper floats first - if (oName == 'minus') { - return l - r - } else if (oName == 'plus') { - return l + r - } else if (oName == 'times') { - return l * r - } else if (oName == 'divide') { - return l / r - } - } - } - } -} - -/** - * p#1: arithmetics: [] ~ , + if n1 > n2, * else - */ -function nnOp (L, op, R) { - var l = L.value, - r = R.value - // set the default op according to value in nn op - if (l > r) { - op = op || symbol('plus') - } else { - op = op || symbol('times') - } - var res = atomicOp(l, op, r) - return symbol(res) -} - -/** - * p#2: redistribute, [] ~ [] - * algorithm: note that from previous steps no 's can occur adjacently - * 1. scan array L to R, on each found: - * 2.1 if its R is , continue - * 2.2 else, this is the target. do: - * 3.1 init carry = []. remove and push into carry, - * 3.2 if its L is , remove and prepend into carry, - * 4.1 find the first to the left, if not , drop the carry and continue - * 4.2 else merge the carry after the - * 5. At the end of loop, rerun production rule #1 - */ -function nTnRedistribute (syms) { - if (syms.length < 2) { - return syms - } - // 1. - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (util.sName(s) != 'n') { - continue - } - // 1. - - var R = syms[i + 1] - if (util.sName(R) == 'T') { - continue - } - // 2.2 - - // 3.1 prepare the carry - var carry = [] - // 3.2 the Left symbol - var L = syms[i - 1], - Li = -1 - if (util.sName(L) == 'op') { - // if L is an 'op', remember to pull it later - Li = i - 1 - } - // 4.1 - // find L...L of L that is 'n' - var LLi = _.findLastIndex(syms.slice(0, i - 1), function (Ls) { - return util.sName(Ls) == 'n' - }) - if (!syms[LLi] || util.sName(syms[LLi + 1]) != 'T') { - // if can't find 'n' (index = -1), or the R of 'n' isn't T, abort mission - // syms.splice(i, 0, carry) - } else { - // 4.2 - // else, pull s at [i], optional L at [Li], and push at LLi+1 - carry.push(_.pullAt(syms, i)[0]) - if (Li != -1) { - carry.unshift(_.pullAt(syms, Li)[0]) - } - syms.splice(LLi + 1, 0, carry) - syms = _.flatten(syms) - } - } - - // 5. redo the op - syms = reduce(syms, ['n', 'n']) - return syms -} - -/** - * p#3: [] ~ , * if dt, + if t - * 1. if t can be overidden, start from the highest unit set to n, then return. - * 2. otherwise, if
not empty,
= *
, then return - * 3. else, if not empty, = +, then return - */ -function nTOp (nL, op, TR) { - var tOverrideUnit = util.highestOverride(TR.t) - if (tOverrideUnit) { - // 1. - TR.t[tOverrideUnit] = nL.value - } else if (_.keys(TR.dt).length) { - // 2. - op = op || symbol('times') - for (var k in TR.dt) { - if (k == 'wd') { - continue - } - TR.dt[k] = atomicOp(nL.value, op, TR.dt[k]) - } - } else if (_.keys(TR.t).length) { - // 3. - op = op || symbol('plus') - for (var k in TR.t) { - TR.t[k] = atomicOp(nL.value, op, TR.t[k]) - } - } - return TR -} - -/** - * p#4: [] ~ - */ -function TTOp (TL, op, TR) { - // set the default op - op = op || symbol('plus') - // util.sName - // mutate into TL - for (var k in TR.t) { - // okay done add absolute time, just as you don't add origins together put u take gradual specificity, the 'true' param for dontOp if exist, return r - // override default tho, taken care of by atomic - TL.t[k] = atomicOp(TL.t[k], op, TR.t[k], true) - } - for (var k in TR.dt) { - if (k == 'wd') { - continue - } - TL.dt[k] = atomicOp(TL.dt[k], op, TR.dt[k]) - } - return TL -} - -/** - * p#5: defaulter ~ , d defaults to t:h - */ -function nDefTSyms (syms) { - var res = [] - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - res.push(util.isSym(s, ['n']) ? nDefT(s) : s) - } - return res -} - -/** - * Helper: default a singlet n to T, i.e. next available hour - */ -function nDefT (n) { - var deft = symbol('t:1h,dt:') - var nVal = n.value - var currentHour = new Date().getHours() - var nextnVal = Math.floor(currentHour / 12) * 12 + nVal - var tHour = execOp(symbol(nextnVal), symbol('times'), deft) - return tHour -} - -/** - * ~ * - * To handle 'before next' etc. - */ -function ooOp (L, R) { - var Lsign = (L.value == 'plus') ? +1 : -1, - Rsign = (R.value == 'plus') ? +1 : -1, - LRsign = Lsign * Rsign - return (LRsign > 0) ? symbol('after') : symbol('before') -} - -/** - * Next available T', given an offset, by incrementing in dt the next unit ++1 from the current largest unit in t. - */ -function nextAvailable (T, offset) { - // find the current largest and next largest unit - var nextUnit = util.nextLargestUnit(T) - - // first finalized T - var finT1 = finalizeT([T], offset)[0], - stdStr1 = util.TtoStdT(finT1), - UTC1 = Date.parse(stdStr1), - UTCnow = Date.parse(new Date()), - UTCdiff = UTC1 - UTCnow - // if UTC1 is not in the future, add next unit - if (UTCdiff < 0) { - T.dt[nextUnit] = (T.dt[nextUnit] || 0) + 1 - var finT2 = finalizeT([T], offset)[0] - return finT2 - } else { - return finT1 - } -} - -/** - * p#6: ~ - */ -function ToTOp (L, op, R, offset) { - if (L && !R) { - // if R is missing, set to now - R = symbol(util.nowT(offset)) - } else if (!L && R) { - // if L missing - if (util.has_t(R)) { - // if R has t => part of origin, so L shd be the according dt - var nextUnit = util.nextLargestUnit(R) - R = nextAvailable(R, offset) - // so arbitrarily set as 0.5 * next largest unit - L = execOp(symbol(0.5), symbol('times'), symbol(nextUnit)) - } else { - // R has dt only, make L an origin then - L = symbol(util.nowT(offset)) - } - } else if (!L && !R) { - L = symbol(util.nowT(offset)) - R = symbol(util.nowT(offset)) - } - - var Ttype = ['t', 'dt'] - for (var i = 0; i < Ttype.length; i++) { - var _Ttype = Ttype[i], - // the dontOp for 't' - dontOp = (_Ttype == 't') - var concatKeys = _.keys(L[_Ttype]).concat(_.keys(R[_Ttype])) - var keys = _.unique(concatKeys) - for (var j = 0; j < keys.length; j++) { - var k = keys[j] - // run atomic op, note the reversed order of R op L - R[_Ttype][k] = atomicOp(R[_Ttype][k], op, L[_Ttype][k], dontOp) - } - } - return R -} - -/** - * p#7: auto-hour-modding: t:h mod 12 - * then add the meridiem to t:h if exist - */ -function autoHourModding (syms) { - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (util.isSym(s, ['T'])) { - if (syms[i]['t']['h']) { - // if t has 'h', mod it - var value = syms[i]['t']['h'].toString() - var isDefault = (value.match(/^=/) || [])[0] || '' - value = parseFloat(value.replace(/^=/, '')) - value = value > 12 ? value % 12 : value - syms[i]['t']['h'] = isDefault + value - } - // apply the non-0 meridiem after modding: - if (syms[i]['t']['mer']) { - var dt_h = (syms[i]['dt']['h'] || '0').toString() - // dump default at last - dt_h = dt_h.replace(/^=/, '') - if (syms[i]['t']['mer'] == 1) { - syms[i]['dt']['h'] = parseFloat(dt_h) + 12 - } - // delete mer - delete syms[i]['t']['mer'] - } - } - } - return syms -} - -// do it at last, to use like '2nd week of march' -function weekModding (syms, offset) { - // weekday of the offset to calculate dt:d - var offsetWD = new Date(util.TtoStdT(util.nowT())).getDay() - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (util.isSym(s, ['T'])) { - if (syms[i]['dt']['wd']) { - // if dt has 'wd', mod it and turn into dt:d + %wd - var WD = parseInt(syms[i]['dt']['wd']) - var diffWD = (WD - offsetWD) % 7 - if (diffWD < 0) { diffWD = diffWD + 7 } - syms[i]['dt']['d'] = (syms[i]['dt']['d'] || 0) + diffWD - delete syms[i]['dt']['wd'] - } - } - } - return syms -} - -/** - * p#8: Finalize each T in syms array: - * 1. remove defaults from T - * 2. add origin symbol.nowT() with given T.t, override missing units - * 3. add t and dt - */ -function finalizeT (syms, offset) { - // remove defaults - for (var i = 0; i < syms.length; i++) { - syms[i] = removeDefaults(syms[i]) - } - // default with origin at end - syms.push(symbol(util.nowT(offset))) - syms = reduce(syms, ['T', 'T']) - // combine t and dt - var newSyms = [] - for (var i = 0; i < syms.length; i++) { - var s = syms[i], - sum = tdtAdd(s) - sum.token = util.TtoStr(sum) - newSyms.push(tdtAdd(s)) - } - return syms -} - -/** - * remove the defaults before adding with origin - */ -function removeDefaults (T) { - for (var k in T.dt) { - T.dt[k] = T.dt[k].toString().replace(/^=/, '') - } - for (var k in T.t) { - T.t[k] = T.t[k].toString().replace(/^=/, '') - } - // delete meridiem too - delete T['t']['mer'] - - return T -} - -/** - * add t and dt within a T together, delete the dt keys - */ -function tdtAdd (T) { - // guard for non-T - if (!util.isSym(T, ['T'])) { - return T - } - for (var k in T.dt) { - // absolute add, disregard defaults - var t_k = (T.t[k] == undefined) ? 0 : T.t[k], - dt_k = T.dt[k] - // cleanup the default - t_k = t_k.toString().replace(/^=/, '') - dt_k = dt_k.toString().replace(/^=/, '') - var sum = parseFloat(t_k) + parseFloat(dt_k) - // set the result, remove used dt - T.t[k] = sum - delete T.dt[k] - } - return T -} - -/** - * p#9: Convert an array of symbols to normalized stdT strings. - * if token was normal form already, parse into stdT. - * if is n: return n.value - * else return org token - */ -function symsToStdT (syms, offset) { - var tokens = [] - for (var i = 0; i < syms.length; i++) { - var s = syms[i], - token = s.token.toString() - // default, don't switch unless: - if (util.isSym(s, ['n'])) { - token = s.value - } else if (token.match(util.reT)) { - // is normal T form - token = util.TtoStdT(token, offset) - } - tokens.push(token) - } - return tokens.join(' ') -} - -/** - * !to be implemented for range - */ -function rTOp (L, R) { - var start, end - if (!R) { - start = symbol(util.nowT()) - end = L - } else { - start = L - end = R - } - return symbol({ start: start, end: end }) -} - -/** - * !to be implemented for cron - */ -function cTOp (L, R) {} - -},{"./subdash":6,"./symbol":7,"./tokenize":8,"./util":9}],5:[function(require,module,exports){ -/** - * Module Dependencies - */ - -var debug = require('debug')('date:parser') -var date = require('./date') -var norm = require('./norm') - -/** - * Days - */ - -var days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'] -var months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', - 'october', 'november', 'december' -] - -/** - * Regexs - */ - -// 5, 05, 5:30, 5.30, 05:30:10, 05:30.10, 05.30.10, at 5 -var rMeridiem = /^(\d{1,2})([:.](\d{1,2}))?([:.](\d{1,2}))?\s*([ap]m)/ -var rHourMinute = /^(\d{1,2})([:.](\d{1,2}))([:.](\d{1,2}))?/ -var rAtHour = /^at\s?(\d{1,2})$/ -var rDays = /\b(sun(day)?|mon(day)?|tues(day)?|wed(nesday)?|thur(sday|s)?|fri(day)?|sat(urday)?)s?\b/ -var rMonths = /^((\d{1,2})\s*(st|nd|rd|th))\s(day\s)?(of\s)?(january|february|march|april|may|june|july|august|september|october|november|december)/i -var rPast = /\b(last|yesterday|ago)\b/ -var rDayMod = /\b(morning|noon|afternoon|night|evening|midnight)\b/ -var rAgo = /^(\d*)\s?\b(second|minute|hour|day|week|month|year)[s]?\b\s?ago$/ - -/** - * Expose `parser` - */ - -module.exports = parser - -/** - * Initialize `parser` - * - * @param {String} str - * @return {Date} - * @api publics - */ - -function parser (str, offset) { - if (!(this instanceof parser)) return new parser(str, offset) - if (typeof offset == 'string') offset = parser(offset) - - // CFG preprocessing into normalized format, - // get {str, tokens, normals} - // !future: return multiple parsed times, some from it - var prepro = norm(str, offset) - // console.log(prepro) - // reset the str to prepro str - str = prepro.str - // if proprocessed doesn't leave any str to be processed (non-date-time) format, check normals - if (!str) { - if (prepro.normals.length) { - // if there's normal date parsed already, - // !return the first - return new Date(prepro.normals[0]) - } else { - // otherwise go back to below to return proper Error - str = str - } - } - - var d = offset || new Date - this.date = new date(d) - this.original = str - this.str = str.toLowerCase() - this.stash = [] - this.tokens = [] - while (this.advance() !== 'eos') - debug('tokens %j', this.tokens) - this.nextTime(d) - if (this.date.date == d) throw new Error('Invalid date') - return this.date.date -} - -/** - * Advance a token - */ - -parser.prototype.advance = function () { - var tok = this.eos() - || this.space() - || this._next() - || this.last() - || this.dayByName() - || this.monthByName() - || this.timeAgo() - || this.ago() - || this.yesterday() - || this.tomorrow() - || this.noon() - || this.midnight() - || this.night() - || this.evening() - || this.afternoon() - || this.morning() - || this.tonight() - || this.meridiem() - || this.hourminute() - || this.athour() - || this.week() - || this.month() - || this.year() - || this.second() - || this.minute() - || this.hour() - || this.day() - || this.number() - || this.string() - || this.other() - - this.tokens.push(tok) - return tok -} - -/** - * Lookahead `n` tokens. - * - * @param {Number} n - * @return {Object} - * @api private - */ - -parser.prototype.lookahead = function (n) { - var fetch = n - this.stash.length - if (fetch == 0) return this.lookahead(++n) - while (fetch-- > 0) this.stash.push(this.advance()) - return this.stash[--n] -} - -/** - * Lookahead a single token. - * - * @return {Token} - * @api private - */ - -parser.prototype.peek = function () { - return this.lookahead(1) -} - -/** - * Fetch next token including those stashed by peek. - * - * @return {Token} - * @api private - */ - -parser.prototype.next = function () { - var tok = this.stashed() || this.advance() - return tok -} - -/** - * Return the next possibly stashed token. - * - * @return {Token} - * @api private - */ - -parser.prototype.stashed = function () { - var stashed = this.stash.shift() - return stashed -} - -/** - * Consume the given `len`. - * - * @param {Number|Array} len - * @api private - */ - -parser.prototype.skip = function (len) { - this.str = this.str.substr(Array.isArray(len) ? len[0].length : len) -} - -/** - * EOS - */ - -parser.prototype.eos = function () { - if (this.str.length) return - return 'eos' -} - -/** - * Space - */ - -parser.prototype.space = function () { - var captures - if (captures = /^([ \t]+)/.exec(this.str)) { - this.skip(captures) - return this.advance() - } -} - -/** - * Second - */ - -parser.prototype.second = function () { - var captures - if (captures = /^s(ec|econd)?s?/.exec(this.str)) { - this.skip(captures) - return 'second' - } -} - -/** - * Minute - */ - -parser.prototype.minute = function () { - var captures - if (captures = /^m(in|inute)?s?/.exec(this.str)) { - this.skip(captures) - return 'minute' - } -} - -/** - * Hour - */ - -parser.prototype.hour = function () { - var captures - if (captures = /^h(r|our)s?/.exec(this.str)) { - this.skip(captures) - return 'hour' - } -} - -/** - * Day - */ - -parser.prototype.day = function () { - var captures - if (captures = /^d(ay)?s?/.exec(this.str)) { - this.skip(captures) - return 'day' - } -} - -/** - * Day by name - */ - -parser.prototype.dayByName = function () { - var captures - var r = new RegExp('^' + rDays.source) - if (captures = r.exec(this.str)) { - var day = captures[1] - this.skip(captures) - this.date[day](1) - return captures[1] - } -} - -/** - * Month by name - */ - -parser.prototype.monthByName = function () { - var captures - if (captures = rMonths.exec(this.str)) { - var day = captures[2] - var month = captures[6] - this.date.date.setMonth((months.indexOf(month))) - if (day) this.date.date.setDate(parseInt(day)) - this.skip(captures) - return captures[0] - } -} - -parser.prototype.timeAgo = function () { - var captures - if (captures = rAgo.exec(this.str)) { - var num = captures[1] - var mod = captures[2] - this.date[mod](-num) - this.skip(captures) - return 'timeAgo' - } -} - -/** - * Week - */ - -parser.prototype.week = function () { - var captures - if (captures = /^w(k|eek)s?/.exec(this.str)) { - this.skip(captures) - return 'week' - } -} - -/** - * Month - */ - -parser.prototype.month = function () { - var captures - if (captures = /^mon(th)?(es|s)?\b/.exec(this.str)) { - this.skip(captures) - return 'month' - } - -} - -/** - * Week - */ - -parser.prototype.year = function () { - var captures - if (captures = /^y(r|ear)s?/.exec(this.str)) { - this.skip(captures) - return 'year' - } -} - -/** - * Meridiem am/pm - */ - -parser.prototype.meridiem = function () { - var captures - if (captures = rMeridiem.exec(this.str)) { - this.skip(captures) - this.time(captures[1], captures[3], captures[5], captures[6]) - return 'meridiem' - } -} - -/** - * Hour Minute (ex. 12:30) - */ - -parser.prototype.hourminute = function () { - var captures - if (captures = rHourMinute.exec(this.str)) { - this.skip(captures) - this.time(captures[1], captures[3], captures[5], this._meridiem) - return 'hourminute' - } -} - -/** - * At Hour (ex. at 5) - */ - -parser.prototype.athour = function () { - var captures - if (captures = rAtHour.exec(this.str)) { - this.skip(captures) - this.time(captures[1], 0, 0, this._meridiem) - this._meridiem = null - return 'athour' - } -} - -/** - * Time set helper - */ - -parser.prototype.time = function (h, m, s, meridiem) { - var d = this.date - var before = d.clone() - - if (meridiem) { - // convert to 24 hour - h = ('pm' == meridiem && 12 > h) ? +h + 12 : h; // 6pm => 18 - h = ('am' == meridiem && 12 == h) ? 0 : h; // 12am => 0 - } - - m = (!m && d.changed('minutes')) ? false : m - s = (!s && d.changed('seconds')) ? false : s - d.time(h, m, s) -} - -/** - * Best attempt to pick the next time this date will occur - * - * TODO: place at the end of the parsing - */ - -parser.prototype.nextTime = function (before) { - var d = this.date - var orig = this.original - - if (before <= d.date || rPast.test(orig)) return this - - // If time is in the past, we need to guess at the next time - if (rDays.test(orig)) { - d.day(7) - } else if ((before - d.date) / 1000 > 60) { - // If it is a month in the past, don't add a day - if (rMonths.test(orig)) { - d.day(0) - } else { - d.day(1) - } - } - - return this -} - -/** - * Yesterday - */ - -parser.prototype.yesterday = function () { - var captures - if (captures = /^(yes(terday)?)/.exec(this.str)) { - this.skip(captures) - this.date.day(-1) - return 'yesterday' - } -} - -/** - * Tomorrow - */ - -parser.prototype.tomorrow = function () { - var captures - if (captures = /^tom(orrow)?/.exec(this.str)) { - this.skip(captures) - this.date.day(1) - return 'tomorrow' - } -} - -/** - * Noon - */ - -parser.prototype.noon = function () { - var captures - if (captures = /^noon\b/.exec(this.str)) { - this.skip(captures) - var before = this.date.clone() - this.date.date.setHours(12, 0, 0) - return 'noon' - } -} - -/** - * Midnight - */ - -parser.prototype.midnight = function () { - var captures - if (captures = /^midnight\b/.exec(this.str)) { - this.skip(captures) - var before = this.date.clone() - this.date.date.setHours(0, 0, 0) - return 'midnight' - } -} - -/** - * Night (arbitrarily set at 7pm) - */ - -parser.prototype.night = function () { - var captures - if (captures = /^night\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'pm' - var before = this.date.clone() - this.date.date.setHours(19, 0, 0) - return 'night' - } -} - -/** - * Evening (arbitrarily set at 5pm) - */ - -parser.prototype.evening = function () { - var captures - if (captures = /^evening\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'pm' - var before = this.date.clone() - this.date.date.setHours(17, 0, 0) - return 'evening' - } -} - -/** - * Afternoon (arbitrarily set at 2pm) - */ - -parser.prototype.afternoon = function () { - var captures - if (captures = /^afternoon\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'pm' - var before = this.date.clone() - - if (this.date.changed('hours')) return 'afternoon' - - this.date.date.setHours(14, 0, 0) - return 'afternoon' - } -} - -/** - * Morning (arbitrarily set at 8am) - */ - -parser.prototype.morning = function () { - var captures - if (captures = /^morning\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'am' - var before = this.date.clone() - if (!this.date.changed('hours')) this.date.date.setHours(8, 0, 0) - return 'morning' - } -} - -/** - * Tonight - */ - -parser.prototype.tonight = function () { - var captures - if (captures = /^tonight\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'pm' - return 'tonight' - } -} - -/** - * Next time - */ - -parser.prototype._next = function () { - var captures - if (captures = /^next/.exec(this.str)) { - this.skip(captures) - var d = new Date(this.date.date) - var mod = this.peek() - - // If we have a defined modifier, then update - if (this.date[mod]) { - this.next() - // slight hack to modify already modified - this.date = date(d) - this.date[mod](1) - } else if (rDayMod.test(mod)) { - this.date.day(1) - } - - return 'next' - } -} - -/** - * Last time - */ - -parser.prototype.last = function () { - var captures - if (captures = /^last/.exec(this.str)) { - this.skip(captures) - var d = new Date(this.date.date) - var mod = this.peek() - - // If we have a defined modifier, then update - if (this.date[mod]) { - this.next() - // slight hack to modify already modified - this.date = date(d) - this.date[mod](-1) - } else if (rDayMod.test(mod)) { - this.date.day(-1) - } - - return 'last' - } -} - -/** - * Ago - */ - -parser.prototype.ago = function () { - var captures - if (captures = /^ago\b/.exec(this.str)) { - this.skip(captures) - return 'ago' - } -} - -/** - * Number - */ - -parser.prototype.number = function () { - var captures - if (captures = /^(\d+)/.exec(this.str)) { - var n = captures[1] - this.skip(captures) - var mod = this.peek() - - // If we have a defined modifier, then update - if (this.date[mod]) { - if ('ago' == this.peek()) n = -n - this.date[mod](n) - } else if (this._meridiem) { - // when we don't have meridiem, possibly use context to guess - this.time(n, 0, 0, this._meridiem) - this._meridiem = null - } else if (this.original.indexOf('at') > -1) { - this.time(n, 0, 0, this._meridiem) - this._meridiem = null - } - - return 'number' - } -} - -/** - * String - */ - -parser.prototype.string = function () { - var captures - if (captures = /^\w+/.exec(this.str)) { - this.skip(captures) - return 'string' - } -} - -/** - * Other - */ - -parser.prototype.other = function () { - var captures - if (captures = /^./.exec(this.str)) { - this.skip(captures) - return 'other' - } -} - -},{"./date":2,"./norm":4,"debug":10}],6:[function(require,module,exports){ -/** - * Substitutes for lodash methods - */ - -exports.difference = function (bigArr, smallArr) { - var diff = [] - for (var i = 0; i < bigArr.length; i++) { - var ele = bigArr[i] - if (smallArr.indexOf(ele) == -1) { - diff.push(ele) - } - } - return diff -} - -exports.flatten = function (arr) { - return [].concat.apply([], arr) -} - -exports.find = function (arr, fn) { - var found = null - for (var i = 0; i < arr.length; i++) { - if (fn(arr[i])) { - found = arr[i] - break - } - } - return found -} - -exports.findLastIndex = function (arr, fn) { - var found = -1 - for (var i = arr.length - 1; i >= 0; i--) { - if (fn(arr[i])) { - found = i - break - } - } - return found -} - -exports.includes = function (arr, item) { - var found = false - for (var i = 0; i < arr.length; i++) { - if (arr[i] === item) { - found = true - break - } - } - return found -} - -exports.isNaN = function (n) { - return Number.isNaN(n) -} - -exports.keys = function (obj) { - return Object.keys(obj) -} - -exports.pullAt = function (arr, i) { - var res = arr.splice(i, 1) - return res -} - -exports.unique = function (arr, i) { - return arr.filter(function (elem, pos) { - return arr.indexOf(elem) == pos - }) -} - -},{}],7:[function(require,module,exports){ -// Module to enumerate all CFG symbols for the human language for time - -/** - * Module Dependencies - */ - -var maps = require('./maps.json') -var util = require('./util') - -/** - * Constructors for all types of symbols - */ -var symbolConstructors = { - op: op, - c: c, - r: r, - n: n, - t: T, - dt: T, - T: T, - f: f, - o: o, - rT: rT, - cT: cT, -} - -/** - * Export `symbol` - */ - -module.exports = symbol - -/** - * The symbol constructor, given a string, lemmatize it, then return a symbol from {∅=null,op,c,r,n,t,dt,T,f}. - * i.e. str -> parseFloat(str) -> new n(str) -> return - * or str -> lemma(str) -> new (symbol-value) -> return - * @param {string} str the input string - * @return {*} The object from the class of symbols - * @example - * symbol('90') - * // => n { value: 10 } - * symbol('hour') - * // a
time difference object - * // => dt { h: '1' } - * symbol('tonight') - * // or equivalently, takes the T string too - * symbol('t:=9h,dt:12h') - * // a T object containing ,
- * // => T { t: t { h: '=9' }, dt: dt { h: '12' } } - * symbol('unrecognized') - * // an unrecognized string yields the null symbol ∅ - * // => null - */ -function symbol (str) { - var s - if (str == null) { - // null gets null - s = null - } else if (str['start'] && str['end']) { - // range: with 'start' and 'end' - s = new symbolConstructors['rT'](str) - } else if (parseFloat(str) == str) { - // 'n' - s = new symbolConstructors['n'](str) - } else if (str.match(util.reT)) { - // if is of the T string format t:,dt: - s = str.match(/\s+/g) ? null : new symbolConstructors['T'](str) - } else { - var lem = util.lemma(str) - s = lem.name ? new symbolConstructors[lem.name](lem.value, lem.name) : null - // set the canonical word from lemma - if (s) { s.canon = lem.canon } - // set the original token for reference - } - if (s) { s.token = str } - return s -} - -// console.log(symbol('10')) -// console.log(symbol('hour')) -// console.log(symbol('tonight')) -// console.log(symbol('t:=9h,dt:12h')) -// console.log(symbol('unrecognized')) - -// /////////////////// -// the CFG symbols // -// /////////////////// - -/** - * The op for arithmetic operator. - * note that since scaling(*,/) is very rare, we omit its implementation for now. - */ -function op (value) { - this.value = value -} - -/** - * The origin operator. - */ -function o (value) { - this.value = value -} - -/** - * The range operator. - */ -function r (value) { - this.value = value -} - -/** - * The cron operator. - */ -function c (value) { - this.value = value -} - -/** - * The n number. Calls parseFloat. - */ -function n (value) { - this.value = parseFloat(value) -} - -/** - * The t for time t, i.e. a point in the timeline - * units: ms, s, m, h, d, w, M, y - * All values are string, to represent the "=" default in the units. so when performing numerical operation, use parseFloat. - * @example - * new t(undefined) - * new t("") - * // => t {} - * new t("7h30m") - * // => t { h: '7', m: '30' } - * new t("7h=30m") - * // => t { h: '7', m: '=30' } - */ -function t (value) { - // guard against falsy input - if (!value) { - return null - } - // 1. see if unit is prepended with "=" for default, or set to '' - // 2. then consume chunks of like "30m" - while (value) { - var isDefault = (value.match(/^=/) || [])[0] || '' - value = value.replace(/^=/, '') - // default number is "1" - var number = (value.match(/^\-?\d+(\.\d+)?/) || [])[0] || '1' - value = value.replace(/^\-?\d+(\.\d+)?/, '') - var unit = (value.match(/^[a-zA-Z]+/) || [])[0] - value = value.replace(/^[a-zA-Z]+/, '') - // prepend the number (string) with isDefault, i.e. "=" or "" - this[unit] = isDefault + number - } -} - -/** - * The dt for time t, i.e. a displacement in the timeline - * units: ms, s, m, h, d, w, M, y - * All values are string, to represent the "=" default in the units. so when performing numerical operation, use parseFloat. - * Same keys as to allow for component-wise operation, e.g. t + dt = { ms+(d)ms, s+(d)s, ... } - */ -function dt (value) { - // guard against falsy input - if (!value) { - return null - } - // 1. see if unit is prepended with "=" for default, or set to '' - // 2. then consume chunks of like "30m" - while (value) { - var isDefault = (value.match(/^=/) || [])[0] || '' - value = value.replace(/^=/, '') - // default number is "1" - var number = (value.match(/^\-?\d+(\.\d+)?/) || [])[0] || '1' - value = value.replace(/^\-?\d+(\.\d+)?/, '') - var unit = (value.match(/^[a-zA-Z]+/) || [])[0] - value = value.replace(/^[a-zA-Z]+/, '') - // prepend the number (string) with isDefault, i.e. "=" or "" - this[unit] = isDefault + number - } -} - -// console.log(new t(undefined)) -// console.log(new t("")) -// console.log(new t("7h30m")) -// console.log(new t("=7h30m")) -// console.log(new t().constructor.name) - -/** - * The T, implementation-specific, is a linear combination of and
. - * Used to capture the human Ts, e.g. noon, afternoon, dawn, evening, today, tonight, Sunday, fortnight, weekdays, weekends, christmas, spring, summer, holidays etc. - * To specify T in maps.json, follow the syntax: - * `:` means "set", `=` means "default", use t:,dt: for the symbol-value, e.g. "t:=7h,dt:0h" - * evening ~ t:=7h,dt:12h, read as "t set to default 7h, dt set to 12h" - * later ~ t:,dt:=3h, read as "t set to nothing, dt set to default 3h" - * beware, "" and "0" are diferent, the former is empty, the later a numerical value. - * @param {string} value from the Symbol. - * @param {string} [name] from the Symbol. - * @example - * var T = new symbol("t:=7h,dt:0h") - * // => T { t: t { h: '=7' }, dt: dt { h: '0' } } - * T.t - * // => t { h: '=7' } - * T.dt - * // => t { h: '0' } - */ -function T (value, name) { - if (name == 't') { - this.t = new t(value) - this.dt = new dt() - } else if (name == 'dt') { - this.t = new t() - this.dt = new dt(value) - } else { - var split = value.split(','), - _t = split[0].split(':').pop(), - _dt = split[1].split(':').pop() - this.t = new t(_t) - this.dt = new dt(_dt) - } -} - -// var T = new T("t:=7h,dt:0h") -// console.log(T.t) -// console.log(T.dt) - -/** - * The product of , gives a time interval - */ -function rT (interval) { - this.start = interval.start - this.end = interval.end -} - -/** - * The f to capture frequency for . - */ -function f (value) { - this.value = value -} - -/** - * The product of or , gives a cron time - */ -function cT (cron) { - this.cron = cron -} - -},{"./maps.json":3,"./util":9}],8:[function(require,module,exports){ -// Module to tokenize a string into CFG symbols - -/** - * Module Dependencies - */ -var util = require('./util') -var symbol = require('./symbol') -var maps = require('./maps.json') - -/** - * regexes for Subnormal forms - */ - -var re = { - // 12/20 - 12/21, 2012/12 - 2013/12 - MMsDDdMMsDD: /(?!\d{1,4}\/\d{1,4}\s*-\s*\d{1,4}\/\d{1,4}\/)(\d{1,4})\/(\d{1,4})\s*-\s*(\d{1,4})\/(\d{1,4})/g, - // 12/22 - 23, 2012/10 - 12 - MMsDDdDD: /(?!\d{1,4}\/\d{1,4}\s*-\s*\d{1,4}\/)(\d{1,4})\/(\d{1,4})\s*-\s*(\d{1,4})/g, - // 12/24, 2012/12 - MMsDD: /(?!\d{1,4}\/\d{1,4}\/)(\d{1,4})\/(\d{1,4})/g, - // 05:30pm, 0530pm, 1730, 1730pm, 1730[re:h], remove the [re:h] - hhcmm: /(\s+\d{1,2}|^\d{1,2})\:?(\d{2})\s*(\S+)*/g -} - -/** - * Export `tokenize` - */ - -module.exports = tokenize - -/** - * Parse and tokenize a string into array of valid CFG symbols, in these steps: - * 1. parse normal forms - * 2. parse subnormal forms - * 3. parse english forms - * @param {string} str The input string. - * @return {JSON} {str, tokensIn, tokensOut, symbols} - */ -function tokenize (str) { - // split num from alphabets - str = (' ' + str) - .replace(/\s+(\d+)([a-zA-Z]+)/g, ' $1 $2') - .replace(/\s+([a-zA-Z]+)(\d+)/g, ' $1 $2') - .replace(/\s+/g, ' ') - .replace(/^\s+/, '') - // 1. 2. parse normal and subnormal forms - var p = parseNormal12(str), - pStr = p.str, - tokens = pStr.split(' '), - symbols = [] - // clean the non-normal tokens a bit, allow to be wrapped by words only - for (var i = 0; i < tokens.length; i++) { - if (!tokens[i].match(util.reT)) { - tokens[i] = tokens[i].replace(/^\W+/, '').replace(/\W+$/, '') - } - } - - // 3. parse english forms - for (var i = 0; i < tokens.length; i++) { - var tok = tokens[i] - var oneGram = tok, - twoGram = tok + ' ' + (tokens[i + 1] || ''), - oneSym = symbol(oneGram), - twoSym = symbol(twoGram) - if (twoSym && twoSym.value == oneSym.value) { - // if lemmatization must happen for both, - // pick the longer, skip next token - // skip this once, reset skip - i++ - symbols.push(symbol(twoGram)) - } else { - symbols.push(symbol(oneGram)) - } - } - return { - str: pStr, - tokensOut: p.tokensOut, - tokensIn: p.tokensIn, - symbols: symbols - } -} - -/** - * Run 1. parseNormal then 2. parseNormal2, return the parsed string with T-format tokens. - * @private - * @param {string} str The input string - * @return {JSON} Parsed string - */ -function parseNormal12 (str) { - var p1 = parseNormal1(str) - // find tokens that are purely normal, and reinject into string - var p1TokensOut = p1.tokensOut.filter(notSubnormal) - var p1Str = injectNormal(str, p1TokensOut) - // now parse the subnormal - var p2 = parseNormal2(p1Str, [], []) - // the tokens that taken out, and their replacements, in order - var pTokensOut = p1.tokensOut.concat(p2.tokensOut) - var pTokensIn = p1.tokensIn.concat(p2.tokensIn) - return { - str: p2.str, - tokensOut: pTokensOut, - tokensIn: pTokensIn - } -} - -/** - * 1. Parse normal forms. Try to parse and return a normal Date, parseable from new Date(str), by continuously trimming off its tail and retry until either get a valid date, or string runs out. - * Doesn't parse string with length <5 - * @private - * @param {string} str The input string. - * @return {string} A Date in stdT string, or null. - */ -function parseNormal1 (str) { - // keep chopping off tail until either get a valid date, or string runs out - // array of parsed date and the string consumed - var tokensIn = [], - tokensOut = [] - // ensure single spacing - str = str.replace(/\s+/g, ' ') - // tokenize by space - var strArr = str.split(/\s+/g) - - // init the normalDate and head string used - var normalDate = null, - head = '' - // do while there's still string to go - while (strArr.length) { - head = (head + ' ' + strArr.shift()).trim() - try { - normalDate = util.stdT(new Date(head)) - // Extend head: if parse successful, extend continuously until failure, then that's the longest parseable head string, ... - var advanceHead = head + ' ' + strArr[0] - while (1) { - try { - var advanceDate = util.stdT(new Date(advanceHead)) - if (advanceDate != 'Invalid Date') { - // if advanceDate is parseable, set to current, update heads - var normalDate = advanceDate - head = head + ' ' + strArr.shift() - advanceHead = advanceHead + ' ' + strArr[0] - } else { - break - } - } catch (e) { - // when fail, just break - break - } - } - // Shrink head: from the whole parseable head ..., trim front till we get - while (1) { - try { - if (util.stdT(new Date(head.replace(/^\s*\S+\s*/, ''))) != normalDate) { - // front token eaten causes change, dont update head - break - } else { - // update head - head = head.replace(/^\s*\S+\s*/, '') - } - } catch (e) { - break - } - } - // only consider a valid parse if the parsed str is long enough - if (head.length > 6) { - tokensIn.push(normalDate) - // get head = only, then reset - tokensOut.push(head) - } - head = '' - } catch (e) {} - } - return { tokensIn: tokensIn, tokensOut: tokensOut } -} - -/** - * 2. Parse subnormal forms after parseNormal. Gradually replace tokens of the input string while parseable. - * @private - */ -function parseNormal2 (str, tokensIn, tokensOut) { - var m, res - if (m = re.MMsDDdMMsDD.exec(str)) { - // 12/20 - 12/21 - var yMd1 = yMdParse(m[1], m[2]) - var yMd2 = yMdParse(m[3], m[4]) - res = ' t:' + yMd1 + ',dt: - t:' + yMd2 + ',dt: ' - } else if (m = re.MMsDDdDD.exec(str)) { - // 12/22 - 23 - var yMd1 = yMdParse(m[1], m[2]) - var yMd2 = yMdParse(m[1], m[3]) - res = ' t:' + yMd1 + ',dt: - t:' + yMd2 + ',dt: ' - } else if (m = re.MMsDD.exec(str)) { - // if year - var yMd = yMdParse(m[1], m[2]) - // 12/24 - res = ' t:' + yMd + ',dt: ' - } else if (m = re.hhcmm.exec(str)) { - // 05:30pm, 0530pm, 1730, 1730pm, 1730[re:h], remove the [re:h] - res = ' t:' + m[1].trim() + 'h' + m[2] + 'm' + ',dt: ' + (m[3] || '') - } else { - // exit recursion if hits here - return { - str: str, - tokensIn: tokensIn, - tokensOut: tokensOut - } - } - // recurse down till no more substitution (CFG is not cyclic, so ok) - tokensOut.push(m[0]) - tokensIn.push(res) - str = parseNormal2(str.replace(m[0], res), tokensIn, tokensOut).str - return { - str: str, - tokensIn: tokensIn, - tokensOut: tokensOut - } -} - -// //////////////////// -// Helper functions // -// //////////////////// - -/** - * Try to parse two tokens for T form into MM/dd, or MM/yyyy if either token hsa length 4. - * @private - * @param {string} token1 - * @param {string} token2 - * @return {string} in the form - */ -function yMdParse (token1, token2) { - var part0 = [token1, token2].filter(function (token) { - return token.length == 4 - }) - var part1 = [token1, token2].filter(function (token) { - return token.length != 4 - }) - var y = part0[0] ? part0[0] + 'y' : '' - var M = part1[0] + 'M' - var d = part1[1] ? part1[1] + 'd' : '' - return y + M + d -} - -/** - * Check if the dateStr is strictly normal and not subnormal. Used to extract parseNormal2 overrides. - * @private - * @param {string} dateStr - * @return {Boolean} - */ -function notSubnormal (dateStr) { - var subnormalStr = parseNormal2(dateStr, [], []).str - // remove T and see if still has words - var noT = subnormalStr.replace(/t\:\S*,dt\:\S*(\s*-\s*t\:\S*,dt\:\S*)?/, '') - return /\w+/g.exec(noT) != null -} - -/** - * Given a string and array of its parsed phrases, convert them into T stdT then T format, and inject into the original string, return. - * @private - * @param {string} str The original string. - * @param {Array} parsedArr The parsed phrases from the string. - * @return {string} The string with parsed phrases replaced in T format. - * - * @example - * injectNormal('05 October 2011 14:48 UTC 08/11 2020', [ '05 October 2011 14:48 UTC', '08/11 2020' ]) - * // => 't:2011y10M05d14h48m00.000s,dt: t:2020y08M11d04h00m00.000s,dt: ' - */ -function injectNormal (str, parsedArr) { - for (var i = 0; i < parsedArr.length; i++) { - var parsed = parsedArr[i] - var T = util.stdTtoT(util.stdT(new Date(parsed))) - str = str.replace(parsed, T) - } - return str -} - -},{"./maps.json":3,"./symbol":7,"./util":9}],9:[function(require,module,exports){ -/** - * Module Dependencies - */ - -var _ = require('./subdash') -var maps = require('./maps.json') - -/** - * The T string regex, e.g. "t:=9h,dt:12h", to encode T =
. Is case sensitive. - */ - -var reT = /t\:\S*,dt\:\S*/g - -/** - * The ordering of time units, large to small, - * 'mer' is the meridiem, 0 for am, 1 for pm - * and the units used for carrying - */ - -var timeUnitOrder = ['y', 'M', 'w', 'd', 'h', 'm', 's', 'ms'] -var canonTimeUnitOrder = [] -for (var i = 0; i < timeUnitOrder.length; i++) { - var unit = timeUnitOrder[i] - canonTimeUnitOrder.push(lemma(unit).canon) -} -var tOrdering = ['y', 'M', 'd', 'h', 'm', 's'] -var tFactor = [365, 30, 24, 60, 60] - -/** - * Delimiters for stdT string - */ - -var stdTdelim = ['-', '-', ' ', ':', ':', ''] - -/** - * Export `util` - */ - -module.exports = { - TtoStdT: TtoStdT, - TtoStr: TtoStr, - delimSyms: delimSyms, - hasSym: hasSym, - has_dt: has_dt, - has_pureTimeUnit: has_pureTimeUnit, - has_t: has_t, - highestOverride: highestOverride, - isSym: isSym, - largestUnit: largestUnit, - lemma: lemma, - nextLargestUnit: nextLargestUnit, - nowT: nowT, - opType: opType, - orderChunks: orderChunks, - removeTnPlus: removeTnPlus, - reT: reT, - sName: sName, - splitByArr: splitByArr, - splitSyms: splitSyms, - splitT: splitT, - stdT: stdT, - stdTdelim: stdTdelim, - stdTtoT: stdTtoT, - tOrdering: tOrdering, - timeUnitOrder: timeUnitOrder, - canonTimeUnitOrder: canonTimeUnitOrder, - tokenToStr: tokenToStr, - unparsedStr: unparsedStr, -} - -/** - * Convert a T string to stdT string, with default filled by nowT(). - * @example - * TtoStdT('t:10M05d14h48m00.000s,dt:') - * // => 2016-10-05 14:48:00 - */ -function TtoStdT (str, offset) { - if (typeof str != 'string') { - str = TtoStr(str) - } - var nowStr = nowT(offset), - nowArr = splitT(nowStr), - strArr = splitT(str) - var resArr = [] - for (var i = 0; i < nowArr.length; i++) { - var val = parseFloat(strArr[i]) - if (Number.isNaN(val)) { val = parseFloat(nowArr[i]) } - resArr.push(val) - } - var resStr = '' - for (var i = 0; i < stdTdelim.length; i++) { - var num = resArr[i].toString() - // e.g. '5.123' tends to be '05.123', fix it - var predecimal = /(\d+)(\.\d+)?/.exec(num)[1], - postdecimal = /(\d+)\.?(\d+)?/.exec(num)[2] - if (predecimal.length == 1) { num = '0' + num } - if (postdecimal != null) { - for (var j = 0; j < 3 - postdecimal.length; j++) { - num = num + '0' - } - } - resStr += (num + stdTdelim[i]) - } - // console.log('resStr', resStr) - return resStr -} -// console.log(TtoStdT('t:10M05d14h48m00.010s,dt:')) - -/** - * Convert a T symbol into its T string. - */ -function TtoStr (T) { - var tStr = 't:', - dtStr = ',dt:' - for (var i = 0; i < timeUnitOrder.length; i++) { - var tUnit = timeUnitOrder[i] - // if unit exist, write to str - if (T['t'][tUnit] != undefined) { - tStr += T['t'][tUnit] + tUnit - } - if (T['dt'][tUnit] != undefined) { - dtStr += T['dt'][tUnit] + tUnit - } - } - return tStr + dtStr -} - -/** - * Delimit the array of timeChunk symbols by combining consecutive nulls (>3) into one, and dumping those shorter. Result is then delimited by 'trinull'. - * @param {Array} syms Of parsed symbols aka time chunks. - * @return {Array} symbols delimited by 'trinull' - */ -function delimSyms (syms) { - // 1. - // contract the nulls into trinulls in a single array - var newSyms = [], - count = 0 - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (s == null) { - count++ - } else { - if (count > 2) { - newSyms.push('trinull') - } - newSyms.push(s) - count = 0 - } - } - return newSyms -} -// console.log(delimSyms([1, 2, null, null, null, 3])) - -/** - * Check if arr has symbol whose name is listen in symArr. - * @param {Array} arr Array of symbols. - * @param {Array} symArr Array of symbol names. - * @return {Boolean} - */ -function hasSym (syms, symArr) { - var found = false - for (var i = 0; i < syms.length; i++) { - if (isSym(syms[i], symArr)) { - found = true - break - } - } - return found -} - -/** - * Check if T.dt is not empty - */ -function has_dt (T) { - return _.keys(T.dt).length > 0 -} - -/** - * Check if T has only t, dt with units from timeUnitOrder - */ -function has_pureTimeUnit (T) { - var dt = T.dt, - t = T.t - var pure = true - for (var k in dt) { - if (!_.includes(timeUnitOrder, k)) { - pure = false - break - } - } - for (var k in t) { - if (!_.includes(timeUnitOrder, k)) { - pure = false - break - } - } - return pure -} - -/** - * Check if T.t is not empty - */ -function has_t (T) { - return _.keys(T.t).length > 0 -} - -/** - * find the lowest overridable unit in t or dt - */ -function highestOverride (t) { - var lowestOverable = null - for (var i = 0; i < tOrdering.length; i++) { - var unit = tOrdering[i] - if (/^=/.exec(t[unit])) { - lowestOverable = unit - break - } - } - return lowestOverable -} - -/** - * Check if arr has the symbol name of s. - * @param {symbol} s symbol object - * @param {Array} arr Of string symbol names - * @return {Boolean} - */ -function isSym (s, arr) { - return _.includes(arr, sName(s)) -} - -/** - * Find the largest enumerated unit in T.t, or if none, in T.dt - */ -function largestUnit (T) { - var lu = _.find(tOrdering, function (unit) { - return T.t[unit] - }) - if (lu == null) { - lu = _.find(tOrdering, function (unit) { - return T.dt[unit] - }) - } - return lu -} - -/** - * Return the lemma symbol of a word string, i.e. the name and value of the symbol it belongs to in the CFG. Uses ./maps.json. - * NLP Lemmatization refers here: htp://nlp.stanford.edu/Ir-book/html/htmledition/stemming-and-lemmatization-1.html. Inflections = all possible alternative words of a lemma. - * @param {string} str To lemmatize. - * @return {JSON} Lemma symbol {name, value} for CFG - * @example - * lemma('zero') - * // => { value: '0', name: 'n' } - */ -function lemma (str) { - // change all to lower case except for 'M' for month - str = (str == 'M') ? str : str.toLowerCase() - var lem = {}, - name = null, - value = null, - canon = str - var mapsKeys = _.keys(maps) - for (var i = 0; i < mapsKeys.length; i++) { - var sMap = maps[mapsKeys[i]], - sMapKeys = _.keys(sMap) - for (var j = 0; j < sMapKeys.length; j++) { - var inflectionArr = sMap[sMapKeys[j]] - if (_.includes(inflectionArr, str)) { - // set the canonical form as the first in inflectionArr - canon = inflectionArr[0] - // if str is in inflections - value = sMapKeys[j] - break - } - } - if (value != null) { - name = mapsKeys[i] - break - } - } - // set value - lem['name'] = name - lem['value'] = value - lem['canon'] = canon - return lem -} -// console.log(lemma('zero')) - -/** - * Find the next largest enumerated unit in T.t, or if none, in T.dt - */ -function nextLargestUnit (T) { - var lu = largestUnit(T) - return tOrdering[tOrdering.indexOf(lu) - 1] -} - -/** - * Convenient method to get current time in T format. - * @return {string} T format string. - */ -function nowT (offset) { - var dateStr = (offset == undefined) ? stdT(new Date()) : stdT(offset) - return stdTtoT(dateStr) -} - -/** - * Determine the op type based on arguments - */ -function opType (L, op, R) { - var LsName = sName(L) || '', - RsName = sName(R) || '' - var opsName = sName(op) - if (opsName != 'o' && opsName != 'r' && opsName != 'c') { opsName = '' } - return LsName + opsName + RsName -} - -/** - * Order time chunks by not containing T, short to long, then containing T, short to long. Used for .pop() to get the candidate timechunk for parsing. - */ -function orderChunks (matrix) { - // 2. - // ok partition first then sort - var hasNoT = matrix.filter(function (row) { - return !hasSym(row, ['T']) - }) - var hasT = matrix.filter(function (row) { - return hasSym(row, ['T']) - }) - // matrix, sorted short to long - var lengthSortedNotTMat = hasNoT.sort(function (a, b) { - return a.length - b.length - }) - var lengthSortedTMat = hasT.sort(function (a, b) { - return a.length - b.length - }) - // 3.1 3.2 3.3 - return lengthSortedNotTMat.concat(lengthSortedTMat) -} - -/** - * !remove the defaul that is 'plus' between , for defaulting to plus. - * !is a quickfix for mat - */ -function removeTnPlus (syms) { - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (isSym(s, ['op']) && s.value == 'plus' && isSym(syms[i + 1], ['n'])) { - syms.splice(i, 1) - } - } - return syms -} - -/** - * Return the name of a symbol: {op,c,r,n,T,f} - * @param {Symbol} symbol A CFG symbol. - * @return {string} name of the symbol. - */ -function sName (symbol) { - return symbol ? symbol.constructor.name : null -} - -/** - * Split a string by an array of tokens. - * @param {string} str The input string. - * @param {Array} tokenArr Array of tokens to split the string by. - * @return {Array} The split string array. - */ -function splitByArr (str, tokenArr) { - var delim = '#{REPLACE}' - // inject into tokens - for (var i = 0; i < tokenArr.length; i++) { - var token = tokenArr[i] - str = str.replace(token, delim) - } - // split into arr - return str.split(delim) -} -// console.log(splitByArr('lorem 1 ipsum 2 dolor 3', [1,2,3])) - -/** - * Split an array of symbols by delimiter into matrix. - * @param {Array} syms The input array - * @param {string|symbol} delimiter To split the array by - * @return {matrix} delimited arrays. - */ -function splitSyms (syms, delimiter) { - // split the single array into matrix - var matrix = [], - newRow = [] - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (s == delimiter || sName(s) == delimiter) { - // delimit and push to matrix - matrix.push(newRow) - newRow = [] - } else if (i == syms.length - 1) { - // edge case, push res - newRow.push(s) - matrix.push(newRow) - } else { - // accumulate in row - newRow.push(s) - } - } - return matrix -} - -/** - * Split a T string into array of [_y, _M, _d, _h, _m, _s] - */ -function splitT (str) { - if (!str.match(reT)) { - return null - } - var _y = (/(\d+(\.\d+)?)y/.exec(str) || [])[1], - _M = (/(\d+(\.\d+)?)M/.exec(str) || [])[1], - _w = (/(\d+(\.\d+)?)w/.exec(str) || [])[1], - _d = (/(\d+(\.\d+)?)d/.exec(str) || [])[1], - _h = (/(\d+(\.\d+)?)h/.exec(str) || [])[1], - _m = (/(\d+(\.\d+)?)m/.exec(str) || [])[1], - _s = (/(\d+(\.\d+)?)s/.exec(str) || [])[1] - - // The Time Object - var TO = { - y: _y, - M: _M, - w: _w, - d: _d, - h: _h, - m: _m, - s: _s - } - // do the carries - TO = carry(TO) - - // compose results - var res = [] - for (var i = 0; i < tOrdering.length; i++) { - var k = tOrdering[i] - res.push(TO[k]) - } - return res -} - -/** - * Function to properly down- and up- carry Time Object - * 1. dumpweek, 2. carryDown, 3. carryUp - */ -function carry (TO) { - TO = dumpWeek(TO) - TO = carryDown(TO) - TO = carryUp(TO) - return TO -} - -/** - * 1. dumpWeek - */ -function dumpWeek (TO) { - var _w = parseFloat(TO['w'] || '0'), - _d = parseFloat(TO['d'] || '0') - TO['d'] = _d + (_w * 7) - delete TO['w'] - return TO -} - -/** - * 2. carryDown - */ -function carryDown (TO) { - // shall reverse the ordering and factors for opp direction - var ordering = tOrdering, - factor = tFactor - var carry = 0 - for (var i = 0; i < ordering.length; i++) { - // the time unit in the ordering - var u = ordering[i] - // skip the rest of loopbody if this unit is undefined and nothing to carry - if (TO[u] == undefined && carry == 0) { - continue - } - // carry - TO[u] = parseFloat(TO[u] || '0') + carry - // dont go in after the last one - if (i == ordering.length - 1) { - // overlong s decimal will be fixed in TtoStdT - break - } - var decimal = parseFloat(TO[u] || '0') - parseInt(TO[u] || '0') - if (decimal > 0) { - // set next carry - carry = decimal * factor[i] - // update current u - TO[u] = parseInt(TO[u]) - } else { - // else reset to 0 if no carry - carry = 0 - } - } - return TO -} - -/** - * 3. carryUp - */ -function carryUp (TO) { - // shall reverse the ordering and factors for opp direction - var ordering = tOrdering.slice().reverse(), - factor = tFactor.slice().reverse() - var carry = 0 - for (var i = 0; i < ordering.length; i++) { - // the time unit in the ordering - var u = ordering[i] - // skip the rest of loopbody if this unit is undefined and nothing to carry - if (TO[u] == undefined && carry == 0) { - continue - } - // carry - TO[u] = parseFloat(TO[u] || '0') + carry - // dont go in after the last one - if (i == ordering.length - 1) { - break - } - var deci = parseInt(parseFloat(TO[u] || '0') / factor[i]) - if (deci > 0) { - // set next carry - carry = deci - // update current u - TO[u] = parseFloat(TO[u] || '0') % factor[i] - } else { - // else reset to 0 if no carry - carry = 0 - } - } - return TO -} - -/** - * Take a date or string, parse it into standard format as yyyy-MM-dd hh:mm:ss.sss - */ -function stdT (date) { - if (typeof date == 'string') { - date = new Date(date) - } - var _y = date.getFullYear(), - _M = date.getMonth() + 1, - _d = date.getDate(), - _date = [_y, _M, _d].join('-') - _time = /(\d\S+)/.exec(date.toTimeString())[1], - format = _date + ' ' + _time - return format -} - -/** - * Convert std time string to T string. - * @example - * stdTtoT('2011-10-05T14:48:00.000') - * // => 't:2011y10M05d14h48m00.000s,dt:' - */ -function stdTtoT (str) { - var datetime = str.split(' ') - var date = datetime[0].split('-'), - time = datetime[1].split(':') - return 't:' + date[0] + 'y' + date[1] + 'M' + date[2] + 'd' + time[0] + 'h' + time[1] + 'm' + time[2] + 's,dt:' -} -// console.log(stdTtoT('2011-10-05T14:48:00.000Z')) - -/** - * Recombine array of symbols back into str - */ -function tokenToStr (syms) { - var tokens = [] - for (var i = 0; i < syms.length; i++) { - tokens.push(syms[i].token) - } - return tokens.join(' ') -} - -/** - * Extract unparsedTokens from str and parsed syms then join them - */ -function unparsedStr (str, syms) { - var inputTokens = str.split(/\s+/) - var tokens = [] - for (var i = 0; i < syms.length; i++) { - if (syms[i] == null) { - tokens.push(inputTokens[i]) - } - } - return tokens.join(' ') -} - -},{"./maps.json":3,"./subdash":6}],10:[function(require,module,exports){ -/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', - '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', - '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', - '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', - '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', - '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', - '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', - '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', - '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', - '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', - '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { - return true; - } - - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - - // is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - try { - return JSON.stringify(v); - } catch (err) { - return '[UnexpectedJSONParseError]: ' + err.message; - } -}; - - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - var useColors = this.useColors; - - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); - - if (!useColors) return; - - var c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit') - - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ - -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - return window.localStorage; - } catch (e) {} -} - -},{"./debug":11}],11:[function(require,module,exports){ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = require('ms'); - -/** - * Active `debug` instances. - */ -exports.instances = []; - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - -exports.formatters = {}; - -/** - * Select a color. - * @param {String} namespace - * @return {Number} - * @api private - */ - -function selectColor(namespace) { - var hash = 0, i; - - for (i in namespace) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return exports.colors[Math.abs(hash) % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function createDebug(namespace) { - - var prevTime; - - function debug() { - // disabled? - if (!debug.enabled) return; - - var self = debug; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // turn the `arguments` into a proper Array - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %O - args.unshift('%O'); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // apply env-specific formatting (colors, etc.) - exports.formatArgs.call(self, args); - - var logFn = debug.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = exports.enabled(namespace); - debug.useColors = exports.useColors(); - debug.color = selectColor(namespace); - debug.destroy = destroy; - - // env-specific initialization logic for debug instances - if ('function' === typeof exports.init) { - exports.init(debug); - } - - exports.instances.push(debug); - - return debug; -} - -function destroy () { - var index = exports.instances.indexOf(this); - if (index !== -1) { - exports.instances.splice(index, 1); - return true; - } else { - return false; - } -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - exports.names = []; - exports.skips = []; - - var i; - var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - var len = split.length; - - for (i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } - - for (i = 0; i < exports.instances.length; i++) { - var instance = exports.instances[i]; - instance.enabled = exports.enabled(instance.namespace); - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - if (name[name.length - 1] === '*') { - return true; - } - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} - -},{"ms":12}],12:[function(require,module,exports){ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isNaN(val) === false) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - if (ms >= d) { - return Math.round(ms / d) + 'd'; - } - if (ms >= h) { - return Math.round(ms / h) + 'h'; - } - if (ms >= m) { - return Math.round(ms / m) + 'm'; - } - if (ms >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - return plural(ms, d, 'day') || - plural(ms, h, 'hour') || - plural(ms, m, 'minute') || - plural(ms, s, 'second') || - ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; -} - -},{}]},{},[1])(1) -}); diff --git a/node_modules/date.js/dist/date.min.js b/node_modules/date.js/dist/date.min.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/node_modules/date.js/index.js b/node_modules/date.js/index.js deleted file mode 100644 index c11a92a37..000000000 --- a/node_modules/date.js/index.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Expose `Date` - */ - -module.exports = require('./lib/parser'); diff --git a/node_modules/date.js/lib/date.js b/node_modules/date.js/lib/date.js deleted file mode 100644 index f49d534f8..000000000 --- a/node_modules/date.js/lib/date.js +++ /dev/null @@ -1,260 +0,0 @@ -/** - * Module Dependencies - */ - -var debug = require('debug')('date:date') - -/** - * Time constants - */ - -var _second = 1000 -var _minute = 60 * _second -var _hour = 60 * _minute -var _day = 24 * _hour -var _week = 7 * _day -var _year = 56 * _week -var _daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - -/** - * Expose `date` - */ - -module.exports = date - -/** - * Initialize `date` - * - * @param {Date} offset (optional) - * @return {Date} - * @api publics - */ - -function date (offset) { - if (!(this instanceof date)) return new date(offset) - this._changed = {} - this.date = new Date(offset) -} - -/** - * Clone the current date - */ - -date.prototype.clone = function () { - return new Date(this.date) -} - -/** - * Has changed - * - * @param {String} str - * @return {Boolean} - */ - -date.prototype.changed = function (str) { - if (this._changed[str] === undefined) return false - return this._changed[str] -} - -/** - * add or subtract seconds - * - * @param {Number} n - * @return {date} - */ - -date.prototype.second = function (n) { - var seconds = +n * _second - this.update(seconds) - this._changed['seconds'] = true - return this -} - -/** - * add or subtract minutes - * - * @param {Number} n - * @return {date} - */ - -date.prototype.minute = function (n) { - var minutes = +n * _minute - this.update(minutes) - this._changed['minutes'] = true - return this -} - -/** - * add or subtract hours - * - * @param {Number} n - * @return {date} - */ - -date.prototype.hour = function (n) { - var hours = +n * _hour - this.update(hours) - this._changed['hours'] = true - return this -} - -/** - * add or subtract days - * - * @param {Number} n - * @return {date} - */ - -date.prototype.day = function (n) { - var days = +n * _day - this.update(days) - this._changed['days'] = true - return this -} - -/** - * add or subtract weeks - * - * @param {Number} n - * @return {date} - */ - -date.prototype.week = function (n) { - var weeks = +n * _week - this.update(weeks) - this._changed['weeks'] = true - return this -} - -/** - * add or subtract months - * - * @param {Number} n - * @return {Date} - */ - -date.prototype.month = function (n) { - var d = this.date - var day = d.getDate() - d.setDate(1) - var month = +n + d.getMonth() - d.setMonth(month) - - // Handle dates with less days - var dim = this.daysInMonth(month) - d.setDate(Math.min(dim, day)) - return this -} - -/** - * get the days in the month - */ - -date.prototype.daysInMonth = function (m) { - var dim = _daysInMonth[m] - var leap = leapyear(this.date.getFullYear()) - return (1 == m && leap) ? 29 : 28 -} - -/** - * add or subtract years - * - * @param {Number} n - * @return {date} - */ - -date.prototype.year = function (n) { - var yr = this.date.getFullYear() - yr += +n - this.date.setFullYear(yr) - this._changed['years'] = true - return this -} - -/** - * Set the time - * - * @param {String} h - * @param {String} m - * @param {String} s - * @return {date} - */ - -date.prototype.time = function (h, m, s, meridiem) { - if (h === false) { - h = this.date.getHours() - } else { - h = +h || 0 - this._changed['hours'] = h - } - - if (m === false) { - m = this.date.getMinutes() - } else { - m = +m || 0 - this._changed['minutes'] = m - } - - if (s === false) { - s = this.date.getSeconds() - } else { - s = +s || 0 - this._changed['seconds'] = s - } - - this.date.setHours(h, m, s) - return this -} - -/** - * Dynamically create day functions (sunday(n), monday(n), etc.) - */ - -var days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'] -days.forEach(function (day, i) { - date.prototype[days[i]] = function (n) { - this._changed['days'] = true - this.updateDay(i, n) - } -}) - -/** - * go to day of week - * - * @param {Number} day - * @param {Number} n - * @return {date} - */ - -date.prototype.updateDay = function (d, n) { - n = +(n || 1) - var diff = (d - this.date.getDay() + 7) % 7 - if (n > 0) --n - diff += (7 * n) - this.update(diff * _day) - return this -} - -/** - * Update the date - * - * @param {Number} ms - * @return {Date} - * @api private - */ - -date.prototype.update = function (ms) { - this.date = new Date(this.date.getTime() + ms) - return this -} - -/** - * leap year - * - * @param {Number} yr - * @return {Boolean} - */ - -function leapyear (yr) { - return (yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0 -} diff --git a/node_modules/date.js/lib/maps.json b/node_modules/date.js/lib/maps.json deleted file mode 100644 index 142346986..000000000 --- a/node_modules/date.js/lib/maps.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "op": { - "plus": ["and", "plus", "+", "add", "on"], - "minus": ["minus", "subtract"], - "times": ["times", "multiply"], - "divide": ["divide"] - }, - "o": { - "plus": ["at", "in", "past", "late", "later", "after", "next", "from", "start", "starting", "since", "coming"], - "minus": ["last", "minus", "subtract", "ago", "before", "from"] - }, - "n": { - "0.25": ["quarter"], - "0.5": ["half", "1/2", "half an"], - "0": ["zero"], - "1": ["one", "a", "an", "first"], - "2": ["two", "second"], - "3": ["three", "third"], - "4": ["four", "fourth"], - "5": ["five", "fifth"], - "6": ["six", "sixth"], - "7": ["seven", "seventh"], - "8": ["eight", "eighth"], - "9": ["nine", "ninth"], - "10": ["ten", "tenth"], - "11": ["eleven", "eleventh"], - "12": ["twelve", "twelveth"], - "13": ["thirteen", "thirteenth"], - "14": ["fourteen", "fourteenth"], - "15": ["fifteen", "fifteenth"], - "16": ["sixteen", "sixteenth"], - "17": ["seventeen", "seventeenth"], - "18": ["eighteen", "eighteenth"], - "19": ["nineteen", "nineteenth"], - "20": ["twenty", "twentieth"], - "30": ["thirty", "thirtieth"], - "40": ["fourty", "fourtieth"], - "50": ["fifty", "fiftieth"], - "60": ["sixty", "sixtieth"], - "70": ["seventy", "seventieth"], - "80": ["eighty", "eightieth"], - "90": ["ninety", "ninetieth"], - "100": ["hundred", "hundreds", "hundredth"], - "1000": ["thousand", "thousands", "thousandth", "k", "K"] - }, - "t": { - }, - "dt": { - "s": ["second", "seconds", "s", "sec", "secs"], - "m": ["minute", "minutes", "m", "min", "mins"], - "h": ["hour", "hours", "h", "hr", "hrs"], - "d": ["day", "days", "d", "dai"], - "w": ["week", "weeks", "w", "wk", "wks"], - "M": ["month", "months", "monthes", "M", "mo", "moon", "moons"], - "y": ["year", "years", "y", "yr", "yrs"] - }, - "T": { - "t:,dt:=3h": ["later", "soon"], - "t:=1d,dt:": ["st", "nd", "rd", "th", "st day", "nd day", "rd day", "th day"], - "t:,dt:1w": ["st week", "nd week", "rd week", "th week"], - "t:,dt:14d": ["day", "fortnight"], - "t:=0h=0m=0s1mer,dt:": ["pm", "p.m", "p.m.", "noon"], - "t:,dt:1d": ["tomorrow", "tmr"], - "t:,dt:-1d": ["yesterday", "ytd"], - "t:,0dt:": ["today"], - "t:=2h=0m=0s1mer,dt:": ["afternoon"], - "t:=6h=0m=0s0mer,dt:": ["dawn"], - "t:=7h=0m=0s0mer,dt:": ["am", "a.m", "a.m."], - "t:=7h=0m=0s1mer,dt:": ["evening"], - "t:=8h=0m=0s0mer,dt:": ["morning"], - "t:=9h=0m=0s1mer,dt:": ["tonight", "night"], - "t:=0h=0m=0s0mer,dt:1d": ["midnight"], - "t:,dt:=0w0wd": ["sunday", "sun"], - "t:,dt:=0w1wd": ["monday", "mon"], - "t:,dt:=0w2wd": ["tuesday", "tue", "tues"], - "t:,dt:=0w3wd": ["wednesday", "wed"], - "t:,dt:=0w4wd": ["thursday", "thu", "thur", "thurs"], - "t:,dt:=0w5wd": ["friday", "fri"], - "t:,dt:=0w6wd": ["saturday", "sat"], - "t:1M=1d,dt:": ["january", "jan"], - "t:2M=1d,dt:": ["february", "feb"], - "t:3M=1d,dt:": ["march", "mar"], - "t:4M=1d,dt:": ["april", "apr"], - "t:5M=1d,dt:": ["may"], - "t:6M=1d,dt:": ["june", "jun"], - "t:7M=1d,dt:": ["july", "jul"], - "t:8M=1d,dt:": ["august", "aug"], - "t:9M=1d,dt:": ["september", "sept", "sep"], - "t:10M=1d,dt:": ["october", "oct"], - "t:11M=1d,dt:": ["november", "nov"], - "t:12M=1d,dt:": ["december", "dec"], - "t:12M25d,dt:": ["christmas"] - }, - "f": { - "1": ["once"], - "2": ["twice"] - } -} diff --git a/node_modules/date.js/lib/norm.js b/node_modules/date.js/lib/norm.js deleted file mode 100644 index a1a1ffbc2..000000000 --- a/node_modules/date.js/lib/norm.js +++ /dev/null @@ -1,829 +0,0 @@ -// Production rule module for the CFG -// !leap year -// !proper carry considering # of days per month - -/** - * Module Dependencies - */ - -var _ = require('./subdash') -var util = require('./util') -var symbol = require('./symbol') -var tokenize = require('./tokenize') - -/** - * Export `norm` - */ - -module.exports = norm - -// a partial implementation of norm -/** - * Preprocess a string using the human language for time CFG, return a triple of original str, preprocessed tokens, and the normal forms (extracted dates in normal forms) - */ -function norm (str, offset) { - try { - // Production rules: CFG algorithm for human language for time - var tokObj = tokenize(str) - // console.log('p#0: parse normal forms', tokObj) - var syms = pickTokens(tokObj.symbols) || [] - // console.log('p#0: remove nulls, pick tokens', syms) - syms = reduce(syms, ['n', 'n']) - // console.log('p#1: arithmetics: [] ~ , + if n1 > n2, * else', syms) - syms = nTnRedistribute(syms) - // console.log('p#2: redistribute, [] ~ [] ', syms) - syms = reduce(syms, ['o', 'o']) - // console.log('p#3: ~ *', syms) - - // preprocessing ends, now format output - var restored = restoreTokens(syms, tokObj) - return restored - } catch (e) { - return { - str: str, - tokens: [], - normals: [] - } - } - -} - -/** - * format a preprocessed array of symbols back into string, using some info from tokObj - */ -function restoreTokens (syms, tokObj) { - var tokens = [], - normals = [], - tokensOut = tokObj.tokensOut, - tokensIn = tokObj.tokensIn - - syms = util.removeTnPlus(syms) - for (var i = 0; i < syms.length; i++) { - var s = syms[i], - sName = util.sName(s), - token = '' - switch (sName) { - case 'n': - // if token is already numeric, use it - token = (s.token.match(/^\s*[\d\.\-\+]+\s*$/)) ? s.token.trim() : s.value.toString() - break - case 'T': - // handles shits like 1 am ~ t:1h00m,dt:, am (token returned) - token = restoreNormal(s) - break - default: - // the other cases like op, o, cron, range - token = s.token.toString() - } - - // extract the protected normal string - if (typeof token == 'string') { - tokens.push(token) - } else { - // get protected normal forms - normals.push(token.normal) - } - } - return { - tokens: tokens, - str: tokens.join(' ').replace(/\s+/g, ' '), - normals: normals - } -} - -/** - * Given a T symbol, try to restore its normal form (return wrapped in JSON if it's a complete date string {normal: }), or just return the plain string as token - */ -function restoreNormal (T) { - var token = T.token - if (token.match(util.reT)) { - // if it is normal form, convert back into the normal1 or normal2 strings - var split = util.splitT(token) - if (_.includes(split, undefined)) { - // if it's normal2 form - // either it's a date or time - var dateArr = split.slice(0, 3), - timeArr = split.slice(3) - if (timeArr[0] != undefined) { - // check time first, it's first signature (hour) is defined - // return hh:mm - return util.TtoStdT(token).match(/(\d+\:\d+)/)[1] - } else { - // else it's a date, parse arr and return complete stdT instead - // return wrapped in JSON if it's a complete date string - return { normal: util.TtoStdT(token) } - } - } else { - // if it's normal1 form, use TtoStd - // return wrapped in JSON if it's a complete date string - return { normal: util.TtoStdT(token) } - } - } else if (!util.has_t(T) && util.has_dt(T) && util.has_pureTimeUnit(T)) { - // handle pure dt: T that are purel displacement, e.g. week, fortnight - var dtStr = '', - units = _.keys(T.dt), - dt = T.dt - // accumulate dtStr - for (var i = 0; i < units.length; i++) { - var u = units[i], - kval = parseFloat(dt[u]), - // set number has default, or is 0, 1 - numStr = (kval != dt[u] || kval == 0 || Math.abs(kval) == 1) ? '' : dt[u].toString() + ' ' - - // set canon from lemma only if it exists, and key is word, else use u - var canon = u - if (T.canon != undefined) { - // and if it's also a timeUnit - canon = T.canon - } else { - // get the lemma for u, its canon and key - var lemma = util.lemma(u), - lemmaCanon = lemma.canon, - lemmaKey = lemma.value - if (lemmaKey && lemmaKey.match(/^\w+$/)) { canon = lemmaCanon } - } - // set the units, number, and canonical form of the unit - dtStr = dtStr + numStr + canon + ' ' - } - return dtStr - } else { - // else it's just plain english, return - return token - } -} -// var fakes = { t: { h: '1', m: '00' }, dt: {}, token: 't:1h00m,dt:' } -// var fakes = { t: { M: '12', d: '25', m: '00' }, dt: {}, token: 't:12M25d00m,dt:' } -// console.log(restoreNormal(fakes)) - -/** - * !Backburner for future extension: Main method: Run the CFG algorithm to parse the string, return JSON of {input, output, diffStr}. Normalize the string before Matt's algorithm runs it. - * @example - * var str = 'having lunch today at 3 hours after 9am' - * norm(str) - * // => { input: 'having lunch today at 3 hours after 9am', - * output: '2016-03-04T05:00:09Z', - * difference: 'having lunch' } - */ -function CFGproduce (str, offset) { - // try all the below till all is elegantly fixed - var diffStr = str, - finalStr = null, - output = str - // Production rules: CFG algorithm for human language for time - // p#0: tokenize, remove nulls, pick tokens - var tokObj = tokenize(str) - var syms = pickTokens(tokObj.symbols) - // console.log('p#0: parse normal forms, remove nulls, pick tokens', tokObj) - - try { - syms = reduce(syms, ['n', 'n']) - // console.log('p#1: arithmetics: [] ~ , + if n1 > n2, * else', syms) - syms = nTnRedistribute(syms) - // console.log('p#2: redistribute, [] ~ [] ', syms) - output = util.tokenToStr(syms) - - // !okay replace back the normal forms in the str - - // // !Till future completion: Mute from below - // syms = reduce(syms, ['n', 'T']) - // // console.log('p#3: [] ~ , * if dt, + if t', syms) - // syms = reduce(syms, ['T', 'T']) - // // console.log('p#4: [] ~ ', syms) - // syms = nDefTSyms(syms) - // // console.log('p#5: defaulter ~ , d defaults to t:h', syms) - // syms = reduce(syms, ['o', 'o']) - // // console.log('p#6: ~ *', syms) - // syms = autoHourModding(syms) - // syms = weekModding(syms, offset) - // // console.log('p#7: modding: meridiem, weeks', syms) - // syms = optReduce(syms, ['T', 'T'], ['o'], null, symbol(util.nowT(offset))) - // // console.log('p#8: ~ ', syms) - - // // !future: - // // syms = reduce(syms, ['T'], ['r']) - // // syms = reduce(syms, ['f', 'T', 'rT'], ['c']) - - // console.log('tokObj', tokObj) - syms = finalizeT(syms, offset) - // console.log('p#9: finalizeT with origin', syms) - - finalStr = symsToStdT(syms, offset) - // console.log('finalStr', finalStr) - - } catch (e) {} - // extract the tokens for difference string later - // diffStr = util.unparsedStr(tokObj.str, tokObj.symbols) - // console.log('diffStr', diffStr) - // !convert dt into proper terms - - return { - input: str, - // output: new Date(finalStr), - output: output, - difference: diffStr - } - -} - -/** - * Production rule #0: pick tokens, remove nulls. - * 1. break into chunks of arrs delimited by triple-null-or-more - * 2. reorder chunks by arr length - * 3.1 init candidate = [] - * 3.2 pull and push the chunks not containing into candidate - * 3.3 pull and push the chunks containing into candidate - * 4. pick the last candidate - */ -function pickTokens (syms) { - // 1. 2. 3. - var delimited = util.delimSyms(syms), - chunks = util.splitSyms(delimited, 'trinull'), - candidates = util.orderChunks(chunks) - // 4. - return candidates.pop() -} - -/** - * Reduce an array of symbols with binary operations between permissible symbols. - * @param {Array} syms Array of input symbols - * @param {Array} varArr String names of permissible variables. - * @param {Array} opArr String names of permissible operations. - * @return {Array} The reduced result. - */ -function reduce (syms, varArr, opArr) { - if (syms.length < 2) { - return syms - } - // the operator arrays - var opArr = opArr || ['op'] - // endmark for handling last symbol - syms.push('null') - // the result, past-pointer(previous non-null symbol), default-op, current-op, and whether current-op is inter-symbol op, i.e. will not be used up - var res = [], - past = null, - defOp = null, - op = defOp, - interOp = false - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (!past || !s) { - // edge case or null - if (i == 0) { past = s; } - } else if (util.isSym(s, opArr)) { - // s is an op. mark op as won't be used yet - op = s - interOp = true - // the nDefT for when past = 'n', s = 'o' - } else if (util.isSym(past, [varArr[0]]) && util.isSym(s, [varArr[1]])) { - // s and past are operable variables specified by varArr - past = execOp(past, op, s) - // reset after op is used - op = defOp - interOp = false - } else { - // no further legal operation made, push and continue - // change of class, past is finalized, push to res - res.push(past) - if (Array.isArray(past)) { - // if past was returned from execOp as array (not executed), then flatten it and dont push op to res, since it's already included in op - res = _.flatten(res) - } else { - // if inter-op (not used), push a clone (prevent overwrite later) - if (interOp) { res.push(symbol(op.value)) } - } - // reset - op = defOp - interOp = false - past = s - } - } - return res -} - -/** - * Optional reduce: similar to reduce() but either argument is optional. - * algorithm: return a T - * 1. for each t, dt, do: - * 2. for each key in union of keys for Lt, Rt, do: - * 3. _Rt = _Rt op _Lt - * @param {Array} syms Array of input symbols - * @param {Array} varArr String names of permissible variables. - * @param {Array} opArr String names of permissible operations. - * @param {symbol} Ldef default for left argument - * @param {symbol} Rdef default for right argument - * @return {Array} The reduced result. - */ -function optReduce (syms, varArr, opArr, Ldef, Rdef) { - if (syms.length < 2) { - return syms - } - // use peek - var res = [], - sum = null, - L = null, - R = null - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (util.isSym(s, opArr)) { - if (sum == null) { - L = syms[i - 1] - sum = (util.isSym(L, [varArr[0]])) ? L : Ldef - } - R = syms[i + 1] - // if is var skip it since will be consumed - if (util.isSym(R, [varArr[1]])) { i++; } - // else reset to default - else { R = Rdef; } - // compute: - sum = execOp(sum, s, R) - // before loop quits due to possible i++, push the last - if (i == syms.length - 1) { - res.push(sum) - } - } else { - // s is not opArr, can't have been varArr either - // edge case: at first dont push - if (i > 0) { - res.push(sum) - res.push(s) - sum = null - } - } - } - return res -} - -/** - * Execute non-commutative operation between 2 argument symbols and an op symbol; carry out respective ops according to symbol names. - * @param {symbol} L Left argument - * @param {symbol} op operation - * @param {symbol} R Right argument - * @param {str} offset The time origin offset - * @return {symbol} Result - */ -function execOp (L, op, R, offset) { - var otype = util.opType(L, op, R), - res = null - if (_.includes(['nn'], otype)) { - res = nnOp(L, op, R) - } else if (_.includes(['nT'], otype)) { - res = nTOp(L, op, R) - } else if (_.includes(['TT'], otype)) { - res = TTOp(L, op, R) - } else if (_.includes(['ToT', 'oT', 'To'], otype)) { - res = ToTOp(L, op, R, offset) - } else if (_.includes(['oo'], otype)) { - res = ooOp(L, R) - } else if (_.includes(['rT', 'TrT'], otype)) { - // has optional arg - res = rTOp(L, R) - } else if (_.includes(['cT', 'fcT', 'crT', 'fcrT'], otype)) { - // has optional arg - res = cTOp(L, R) - } else { - // not executable, e.g. not in the right order, return fully - res = (op == null) ? [L, R] : [L, op, R] - } - return res -} - -/** - * Atomic binary arithmetic operation on the numerical level, with default overriding the argument prepended with '='. - * @param {string|Number} Lval The left argument value. - * @param {symbol} op The op symbol - * @param {string|Number} Rval The right argument value. - * @return {Number} Result from the operation. - */ -function atomicOp (Lval, op, Rval, dontOp) { - dontOp = dontOp || false - var oName = op.value - if (Lval == undefined) { - // if L is missing, R must exist tho - return (oName == 'minus') ? Rval.toString().replace(/(\d)/, '-$1') : Rval - } else if (Rval == undefined) { - // if L exists, be it def or not, R missing - return Lval - } else { - // or R exist or is default (parse to NaN), L can be default too but ignore then - var defL = Lval.toString().match(/^=/), - defR = Rval.toString().match(/^=/) - var l = parseFloat(Lval.toString().replace(/^=/, '')), - r = parseFloat(Rval.toString().replace(/^=/, '')) - if (defL && defR) { - // if both are default, return r 'last come last serve' - return r - } else if (defL && !defR) { - // if either default, return the non-default - return r - } else if (!defL && defR) { - return l - } else { - // none default - if (dontOp) { - // if is a don't operate together, i.e. for t, just return l - // 'first come first serve' - return l - } else { - // make the into proper floats first - if (oName == 'minus') { - return l - r - } else if (oName == 'plus') { - return l + r - } else if (oName == 'times') { - return l * r - } else if (oName == 'divide') { - return l / r - } - } - } - } -} - -/** - * p#1: arithmetics: [] ~ , + if n1 > n2, * else - */ -function nnOp (L, op, R) { - var l = L.value, - r = R.value - // set the default op according to value in nn op - if (l > r) { - op = op || symbol('plus') - } else { - op = op || symbol('times') - } - var res = atomicOp(l, op, r) - return symbol(res) -} - -/** - * p#2: redistribute, [] ~ [] - * algorithm: note that from previous steps no 's can occur adjacently - * 1. scan array L to R, on each found: - * 2.1 if its R is , continue - * 2.2 else, this is the target. do: - * 3.1 init carry = []. remove and push into carry, - * 3.2 if its L is , remove and prepend into carry, - * 4.1 find the first to the left, if not , drop the carry and continue - * 4.2 else merge the carry after the - * 5. At the end of loop, rerun production rule #1 - */ -function nTnRedistribute (syms) { - if (syms.length < 2) { - return syms - } - // 1. - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (util.sName(s) != 'n') { - continue - } - // 1. - - var R = syms[i + 1] - if (util.sName(R) == 'T') { - continue - } - // 2.2 - - // 3.1 prepare the carry - var carry = [] - // 3.2 the Left symbol - var L = syms[i - 1], - Li = -1 - if (util.sName(L) == 'op') { - // if L is an 'op', remember to pull it later - Li = i - 1 - } - // 4.1 - // find L...L of L that is 'n' - var LLi = _.findLastIndex(syms.slice(0, i - 1), function (Ls) { - return util.sName(Ls) == 'n' - }) - if (!syms[LLi] || util.sName(syms[LLi + 1]) != 'T') { - // if can't find 'n' (index = -1), or the R of 'n' isn't T, abort mission - // syms.splice(i, 0, carry) - } else { - // 4.2 - // else, pull s at [i], optional L at [Li], and push at LLi+1 - carry.push(_.pullAt(syms, i)[0]) - if (Li != -1) { - carry.unshift(_.pullAt(syms, Li)[0]) - } - syms.splice(LLi + 1, 0, carry) - syms = _.flatten(syms) - } - } - - // 5. redo the op - syms = reduce(syms, ['n', 'n']) - return syms -} - -/** - * p#3: [] ~ , * if dt, + if t - * 1. if t can be overidden, start from the highest unit set to n, then return. - * 2. otherwise, if
not empty,
= *
, then return - * 3. else, if not empty, = +, then return - */ -function nTOp (nL, op, TR) { - var tOverrideUnit = util.highestOverride(TR.t) - if (tOverrideUnit) { - // 1. - TR.t[tOverrideUnit] = nL.value - } else if (_.keys(TR.dt).length) { - // 2. - op = op || symbol('times') - for (var k in TR.dt) { - if (k == 'wd') { - continue - } - TR.dt[k] = atomicOp(nL.value, op, TR.dt[k]) - } - } else if (_.keys(TR.t).length) { - // 3. - op = op || symbol('plus') - for (var k in TR.t) { - TR.t[k] = atomicOp(nL.value, op, TR.t[k]) - } - } - return TR -} - -/** - * p#4: [] ~ - */ -function TTOp (TL, op, TR) { - // set the default op - op = op || symbol('plus') - // util.sName - // mutate into TL - for (var k in TR.t) { - // okay done add absolute time, just as you don't add origins together put u take gradual specificity, the 'true' param for dontOp if exist, return r - // override default tho, taken care of by atomic - TL.t[k] = atomicOp(TL.t[k], op, TR.t[k], true) - } - for (var k in TR.dt) { - if (k == 'wd') { - continue - } - TL.dt[k] = atomicOp(TL.dt[k], op, TR.dt[k]) - } - return TL -} - -/** - * p#5: defaulter ~ , d defaults to t:h - */ -function nDefTSyms (syms) { - var res = [] - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - res.push(util.isSym(s, ['n']) ? nDefT(s) : s) - } - return res -} - -/** - * Helper: default a singlet n to T, i.e. next available hour - */ -function nDefT (n) { - var deft = symbol('t:1h,dt:') - var nVal = n.value - var currentHour = new Date().getHours() - var nextnVal = Math.floor(currentHour / 12) * 12 + nVal - var tHour = execOp(symbol(nextnVal), symbol('times'), deft) - return tHour -} - -/** - * ~ * - * To handle 'before next' etc. - */ -function ooOp (L, R) { - var Lsign = (L.value == 'plus') ? +1 : -1, - Rsign = (R.value == 'plus') ? +1 : -1, - LRsign = Lsign * Rsign - return (LRsign > 0) ? symbol('after') : symbol('before') -} - -/** - * Next available T', given an offset, by incrementing in dt the next unit ++1 from the current largest unit in t. - */ -function nextAvailable (T, offset) { - // find the current largest and next largest unit - var nextUnit = util.nextLargestUnit(T) - - // first finalized T - var finT1 = finalizeT([T], offset)[0], - stdStr1 = util.TtoStdT(finT1), - UTC1 = Date.parse(stdStr1), - UTCnow = Date.parse(new Date()), - UTCdiff = UTC1 - UTCnow - // if UTC1 is not in the future, add next unit - if (UTCdiff < 0) { - T.dt[nextUnit] = (T.dt[nextUnit] || 0) + 1 - var finT2 = finalizeT([T], offset)[0] - return finT2 - } else { - return finT1 - } -} - -/** - * p#6: ~ - */ -function ToTOp (L, op, R, offset) { - if (L && !R) { - // if R is missing, set to now - R = symbol(util.nowT(offset)) - } else if (!L && R) { - // if L missing - if (util.has_t(R)) { - // if R has t => part of origin, so L shd be the according dt - var nextUnit = util.nextLargestUnit(R) - R = nextAvailable(R, offset) - // so arbitrarily set as 0.5 * next largest unit - L = execOp(symbol(0.5), symbol('times'), symbol(nextUnit)) - } else { - // R has dt only, make L an origin then - L = symbol(util.nowT(offset)) - } - } else if (!L && !R) { - L = symbol(util.nowT(offset)) - R = symbol(util.nowT(offset)) - } - - var Ttype = ['t', 'dt'] - for (var i = 0; i < Ttype.length; i++) { - var _Ttype = Ttype[i], - // the dontOp for 't' - dontOp = (_Ttype == 't') - var concatKeys = _.keys(L[_Ttype]).concat(_.keys(R[_Ttype])) - var keys = _.unique(concatKeys) - for (var j = 0; j < keys.length; j++) { - var k = keys[j] - // run atomic op, note the reversed order of R op L - R[_Ttype][k] = atomicOp(R[_Ttype][k], op, L[_Ttype][k], dontOp) - } - } - return R -} - -/** - * p#7: auto-hour-modding: t:h mod 12 - * then add the meridiem to t:h if exist - */ -function autoHourModding (syms) { - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (util.isSym(s, ['T'])) { - if (syms[i]['t']['h']) { - // if t has 'h', mod it - var value = syms[i]['t']['h'].toString() - var isDefault = (value.match(/^=/) || [])[0] || '' - value = parseFloat(value.replace(/^=/, '')) - value = value > 12 ? value % 12 : value - syms[i]['t']['h'] = isDefault + value - } - // apply the non-0 meridiem after modding: - if (syms[i]['t']['mer']) { - var dt_h = (syms[i]['dt']['h'] || '0').toString() - // dump default at last - dt_h = dt_h.replace(/^=/, '') - if (syms[i]['t']['mer'] == 1) { - syms[i]['dt']['h'] = parseFloat(dt_h) + 12 - } - // delete mer - delete syms[i]['t']['mer'] - } - } - } - return syms -} - -// do it at last, to use like '2nd week of march' -function weekModding (syms, offset) { - // weekday of the offset to calculate dt:d - var offsetWD = new Date(util.TtoStdT(util.nowT())).getDay() - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (util.isSym(s, ['T'])) { - if (syms[i]['dt']['wd']) { - // if dt has 'wd', mod it and turn into dt:d + %wd - var WD = parseInt(syms[i]['dt']['wd']) - var diffWD = (WD - offsetWD) % 7 - if (diffWD < 0) { diffWD = diffWD + 7 } - syms[i]['dt']['d'] = (syms[i]['dt']['d'] || 0) + diffWD - delete syms[i]['dt']['wd'] - } - } - } - return syms -} - -/** - * p#8: Finalize each T in syms array: - * 1. remove defaults from T - * 2. add origin symbol.nowT() with given T.t, override missing units - * 3. add t and dt - */ -function finalizeT (syms, offset) { - // remove defaults - for (var i = 0; i < syms.length; i++) { - syms[i] = removeDefaults(syms[i]) - } - // default with origin at end - syms.push(symbol(util.nowT(offset))) - syms = reduce(syms, ['T', 'T']) - // combine t and dt - var newSyms = [] - for (var i = 0; i < syms.length; i++) { - var s = syms[i], - sum = tdtAdd(s) - sum.token = util.TtoStr(sum) - newSyms.push(tdtAdd(s)) - } - return syms -} - -/** - * remove the defaults before adding with origin - */ -function removeDefaults (T) { - for (var k in T.dt) { - T.dt[k] = T.dt[k].toString().replace(/^=/, '') - } - for (var k in T.t) { - T.t[k] = T.t[k].toString().replace(/^=/, '') - } - // delete meridiem too - delete T['t']['mer'] - - return T -} - -/** - * add t and dt within a T together, delete the dt keys - */ -function tdtAdd (T) { - // guard for non-T - if (!util.isSym(T, ['T'])) { - return T - } - for (var k in T.dt) { - // absolute add, disregard defaults - var t_k = (T.t[k] == undefined) ? 0 : T.t[k], - dt_k = T.dt[k] - // cleanup the default - t_k = t_k.toString().replace(/^=/, '') - dt_k = dt_k.toString().replace(/^=/, '') - var sum = parseFloat(t_k) + parseFloat(dt_k) - // set the result, remove used dt - T.t[k] = sum - delete T.dt[k] - } - return T -} - -/** - * p#9: Convert an array of symbols to normalized stdT strings. - * if token was normal form already, parse into stdT. - * if is n: return n.value - * else return org token - */ -function symsToStdT (syms, offset) { - var tokens = [] - for (var i = 0; i < syms.length; i++) { - var s = syms[i], - token = s.token.toString() - // default, don't switch unless: - if (util.isSym(s, ['n'])) { - token = s.value - } else if (token.match(util.reT)) { - // is normal T form - token = util.TtoStdT(token, offset) - } - tokens.push(token) - } - return tokens.join(' ') -} - -/** - * !to be implemented for range - */ -function rTOp (L, R) { - var start, end - if (!R) { - start = symbol(util.nowT()) - end = L - } else { - start = L - end = R - } - return symbol({ start: start, end: end }) -} - -/** - * !to be implemented for cron - */ -function cTOp (L, R) {} diff --git a/node_modules/date.js/lib/parser.js b/node_modules/date.js/lib/parser.js deleted file mode 100644 index b0df8b39d..000000000 --- a/node_modules/date.js/lib/parser.js +++ /dev/null @@ -1,659 +0,0 @@ -/** - * Module Dependencies - */ - -var debug = require('debug')('date:parser') -var date = require('./date') -var norm = require('./norm') - -/** - * Days - */ - -var days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'] -var months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', - 'october', 'november', 'december' -] - -/** - * Regexs - */ - -// 5, 05, 5:30, 5.30, 05:30:10, 05:30.10, 05.30.10, at 5 -var rMeridiem = /^(\d{1,2})([:.](\d{1,2}))?([:.](\d{1,2}))?\s*([ap]m)/ -var rHourMinute = /^(\d{1,2})([:.](\d{1,2}))([:.](\d{1,2}))?/ -var rAtHour = /^at\s?(\d{1,2})$/ -var rDays = /\b(sun(day)?|mon(day)?|tues(day)?|wed(nesday)?|thur(sday|s)?|fri(day)?|sat(urday)?)s?\b/ -var rMonths = /^((\d{1,2})\s*(st|nd|rd|th))\s(day\s)?(of\s)?(january|february|march|april|may|june|july|august|september|october|november|december)/i -var rPast = /\b(last|yesterday|ago)\b/ -var rDayMod = /\b(morning|noon|afternoon|night|evening|midnight)\b/ -var rAgo = /^(\d*)\s?\b(second|minute|hour|day|week|month|year)[s]?\b\s?ago$/ - -/** - * Expose `parser` - */ - -module.exports = parser - -/** - * Initialize `parser` - * - * @param {String} str - * @return {Date} - * @api publics - */ - -function parser (str, offset) { - if (!(this instanceof parser)) return new parser(str, offset) - if (typeof offset == 'string') offset = parser(offset) - - // CFG preprocessing into normalized format, - // get {str, tokens, normals} - // !future: return multiple parsed times, some from it - var prepro = norm(str, offset) - // console.log(prepro) - // reset the str to prepro str - str = prepro.str - // if proprocessed doesn't leave any str to be processed (non-date-time) format, check normals - if (!str) { - if (prepro.normals.length) { - // if there's normal date parsed already, - // !return the first - return new Date(prepro.normals[0]) - } else { - // otherwise go back to below to return proper Error - str = str - } - } - - var d = offset || new Date - this.date = new date(d) - this.original = str - this.str = str.toLowerCase() - this.stash = [] - this.tokens = [] - while (this.advance() !== 'eos') - debug('tokens %j', this.tokens) - this.nextTime(d) - if (this.date.date == d) throw new Error('Invalid date') - return this.date.date -} - -/** - * Advance a token - */ - -parser.prototype.advance = function () { - var tok = this.eos() - || this.space() - || this._next() - || this.last() - || this.dayByName() - || this.monthByName() - || this.timeAgo() - || this.ago() - || this.yesterday() - || this.tomorrow() - || this.noon() - || this.midnight() - || this.night() - || this.evening() - || this.afternoon() - || this.morning() - || this.tonight() - || this.meridiem() - || this.hourminute() - || this.athour() - || this.week() - || this.month() - || this.year() - || this.second() - || this.minute() - || this.hour() - || this.day() - || this.number() - || this.string() - || this.other() - - this.tokens.push(tok) - return tok -} - -/** - * Lookahead `n` tokens. - * - * @param {Number} n - * @return {Object} - * @api private - */ - -parser.prototype.lookahead = function (n) { - var fetch = n - this.stash.length - if (fetch == 0) return this.lookahead(++n) - while (fetch-- > 0) this.stash.push(this.advance()) - return this.stash[--n] -} - -/** - * Lookahead a single token. - * - * @return {Token} - * @api private - */ - -parser.prototype.peek = function () { - return this.lookahead(1) -} - -/** - * Fetch next token including those stashed by peek. - * - * @return {Token} - * @api private - */ - -parser.prototype.next = function () { - var tok = this.stashed() || this.advance() - return tok -} - -/** - * Return the next possibly stashed token. - * - * @return {Token} - * @api private - */ - -parser.prototype.stashed = function () { - var stashed = this.stash.shift() - return stashed -} - -/** - * Consume the given `len`. - * - * @param {Number|Array} len - * @api private - */ - -parser.prototype.skip = function (len) { - this.str = this.str.substr(Array.isArray(len) ? len[0].length : len) -} - -/** - * EOS - */ - -parser.prototype.eos = function () { - if (this.str.length) return - return 'eos' -} - -/** - * Space - */ - -parser.prototype.space = function () { - var captures - if (captures = /^([ \t]+)/.exec(this.str)) { - this.skip(captures) - return this.advance() - } -} - -/** - * Second - */ - -parser.prototype.second = function () { - var captures - if (captures = /^s(ec|econd)?s?/.exec(this.str)) { - this.skip(captures) - return 'second' - } -} - -/** - * Minute - */ - -parser.prototype.minute = function () { - var captures - if (captures = /^m(in|inute)?s?/.exec(this.str)) { - this.skip(captures) - return 'minute' - } -} - -/** - * Hour - */ - -parser.prototype.hour = function () { - var captures - if (captures = /^h(r|our)s?/.exec(this.str)) { - this.skip(captures) - return 'hour' - } -} - -/** - * Day - */ - -parser.prototype.day = function () { - var captures - if (captures = /^d(ay)?s?/.exec(this.str)) { - this.skip(captures) - return 'day' - } -} - -/** - * Day by name - */ - -parser.prototype.dayByName = function () { - var captures - var r = new RegExp('^' + rDays.source) - if (captures = r.exec(this.str)) { - var day = captures[1] - this.skip(captures) - this.date[day](1) - return captures[1] - } -} - -/** - * Month by name - */ - -parser.prototype.monthByName = function () { - var captures - if (captures = rMonths.exec(this.str)) { - var day = captures[2] - var month = captures[6] - this.date.date.setMonth((months.indexOf(month))) - if (day) this.date.date.setDate(parseInt(day)) - this.skip(captures) - return captures[0] - } -} - -parser.prototype.timeAgo = function () { - var captures - if (captures = rAgo.exec(this.str)) { - var num = captures[1] - var mod = captures[2] - this.date[mod](-num) - this.skip(captures) - return 'timeAgo' - } -} - -/** - * Week - */ - -parser.prototype.week = function () { - var captures - if (captures = /^w(k|eek)s?/.exec(this.str)) { - this.skip(captures) - return 'week' - } -} - -/** - * Month - */ - -parser.prototype.month = function () { - var captures - if (captures = /^mon(th)?(es|s)?\b/.exec(this.str)) { - this.skip(captures) - return 'month' - } - -} - -/** - * Week - */ - -parser.prototype.year = function () { - var captures - if (captures = /^y(r|ear)s?/.exec(this.str)) { - this.skip(captures) - return 'year' - } -} - -/** - * Meridiem am/pm - */ - -parser.prototype.meridiem = function () { - var captures - if (captures = rMeridiem.exec(this.str)) { - this.skip(captures) - this.time(captures[1], captures[3], captures[5], captures[6]) - return 'meridiem' - } -} - -/** - * Hour Minute (ex. 12:30) - */ - -parser.prototype.hourminute = function () { - var captures - if (captures = rHourMinute.exec(this.str)) { - this.skip(captures) - this.time(captures[1], captures[3], captures[5], this._meridiem) - return 'hourminute' - } -} - -/** - * At Hour (ex. at 5) - */ - -parser.prototype.athour = function () { - var captures - if (captures = rAtHour.exec(this.str)) { - this.skip(captures) - this.time(captures[1], 0, 0, this._meridiem) - this._meridiem = null - return 'athour' - } -} - -/** - * Time set helper - */ - -parser.prototype.time = function (h, m, s, meridiem) { - var d = this.date - var before = d.clone() - - if (meridiem) { - // convert to 24 hour - h = ('pm' == meridiem && 12 > h) ? +h + 12 : h; // 6pm => 18 - h = ('am' == meridiem && 12 == h) ? 0 : h; // 12am => 0 - } - - m = (!m && d.changed('minutes')) ? false : m - s = (!s && d.changed('seconds')) ? false : s - d.time(h, m, s) -} - -/** - * Best attempt to pick the next time this date will occur - * - * TODO: place at the end of the parsing - */ - -parser.prototype.nextTime = function (before) { - var d = this.date - var orig = this.original - - if (before <= d.date || rPast.test(orig)) return this - - // If time is in the past, we need to guess at the next time - if (rDays.test(orig)) { - d.day(7) - } else if ((before - d.date) / 1000 > 60) { - // If it is a month in the past, don't add a day - if (rMonths.test(orig)) { - d.day(0) - } else { - d.day(1) - } - } - - return this -} - -/** - * Yesterday - */ - -parser.prototype.yesterday = function () { - var captures - if (captures = /^(yes(terday)?)/.exec(this.str)) { - this.skip(captures) - this.date.day(-1) - return 'yesterday' - } -} - -/** - * Tomorrow - */ - -parser.prototype.tomorrow = function () { - var captures - if (captures = /^tom(orrow)?/.exec(this.str)) { - this.skip(captures) - this.date.day(1) - return 'tomorrow' - } -} - -/** - * Noon - */ - -parser.prototype.noon = function () { - var captures - if (captures = /^noon\b/.exec(this.str)) { - this.skip(captures) - var before = this.date.clone() - this.date.date.setHours(12, 0, 0) - return 'noon' - } -} - -/** - * Midnight - */ - -parser.prototype.midnight = function () { - var captures - if (captures = /^midnight\b/.exec(this.str)) { - this.skip(captures) - var before = this.date.clone() - this.date.date.setHours(0, 0, 0) - return 'midnight' - } -} - -/** - * Night (arbitrarily set at 7pm) - */ - -parser.prototype.night = function () { - var captures - if (captures = /^night\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'pm' - var before = this.date.clone() - this.date.date.setHours(19, 0, 0) - return 'night' - } -} - -/** - * Evening (arbitrarily set at 5pm) - */ - -parser.prototype.evening = function () { - var captures - if (captures = /^evening\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'pm' - var before = this.date.clone() - this.date.date.setHours(17, 0, 0) - return 'evening' - } -} - -/** - * Afternoon (arbitrarily set at 2pm) - */ - -parser.prototype.afternoon = function () { - var captures - if (captures = /^afternoon\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'pm' - var before = this.date.clone() - - if (this.date.changed('hours')) return 'afternoon' - - this.date.date.setHours(14, 0, 0) - return 'afternoon' - } -} - -/** - * Morning (arbitrarily set at 8am) - */ - -parser.prototype.morning = function () { - var captures - if (captures = /^morning\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'am' - var before = this.date.clone() - if (!this.date.changed('hours')) this.date.date.setHours(8, 0, 0) - return 'morning' - } -} - -/** - * Tonight - */ - -parser.prototype.tonight = function () { - var captures - if (captures = /^tonight\b/.exec(this.str)) { - this.skip(captures) - this._meridiem = 'pm' - return 'tonight' - } -} - -/** - * Next time - */ - -parser.prototype._next = function () { - var captures - if (captures = /^next/.exec(this.str)) { - this.skip(captures) - var d = new Date(this.date.date) - var mod = this.peek() - - // If we have a defined modifier, then update - if (this.date[mod]) { - this.next() - // slight hack to modify already modified - this.date = date(d) - this.date[mod](1) - } else if (rDayMod.test(mod)) { - this.date.day(1) - } - - return 'next' - } -} - -/** - * Last time - */ - -parser.prototype.last = function () { - var captures - if (captures = /^last/.exec(this.str)) { - this.skip(captures) - var d = new Date(this.date.date) - var mod = this.peek() - - // If we have a defined modifier, then update - if (this.date[mod]) { - this.next() - // slight hack to modify already modified - this.date = date(d) - this.date[mod](-1) - } else if (rDayMod.test(mod)) { - this.date.day(-1) - } - - return 'last' - } -} - -/** - * Ago - */ - -parser.prototype.ago = function () { - var captures - if (captures = /^ago\b/.exec(this.str)) { - this.skip(captures) - return 'ago' - } -} - -/** - * Number - */ - -parser.prototype.number = function () { - var captures - if (captures = /^(\d+)/.exec(this.str)) { - var n = captures[1] - this.skip(captures) - var mod = this.peek() - - // If we have a defined modifier, then update - if (this.date[mod]) { - if ('ago' == this.peek()) n = -n - this.date[mod](n) - } else if (this._meridiem) { - // when we don't have meridiem, possibly use context to guess - this.time(n, 0, 0, this._meridiem) - this._meridiem = null - } else if (this.original.indexOf('at') > -1) { - this.time(n, 0, 0, this._meridiem) - this._meridiem = null - } - - return 'number' - } -} - -/** - * String - */ - -parser.prototype.string = function () { - var captures - if (captures = /^\w+/.exec(this.str)) { - this.skip(captures) - return 'string' - } -} - -/** - * Other - */ - -parser.prototype.other = function () { - var captures - if (captures = /^./.exec(this.str)) { - this.skip(captures) - return 'other' - } -} diff --git a/node_modules/date.js/lib/subdash.js b/node_modules/date.js/lib/subdash.js deleted file mode 100644 index cb6074d04..000000000 --- a/node_modules/date.js/lib/subdash.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Substitutes for lodash methods - */ - -exports.difference = function (bigArr, smallArr) { - var diff = [] - for (var i = 0; i < bigArr.length; i++) { - var ele = bigArr[i] - if (smallArr.indexOf(ele) == -1) { - diff.push(ele) - } - } - return diff -} - -exports.flatten = function (arr) { - return [].concat.apply([], arr) -} - -exports.find = function (arr, fn) { - var found = null - for (var i = 0; i < arr.length; i++) { - if (fn(arr[i])) { - found = arr[i] - break - } - } - return found -} - -exports.findLastIndex = function (arr, fn) { - var found = -1 - for (var i = arr.length - 1; i >= 0; i--) { - if (fn(arr[i])) { - found = i - break - } - } - return found -} - -exports.includes = function (arr, item) { - var found = false - for (var i = 0; i < arr.length; i++) { - if (arr[i] === item) { - found = true - break - } - } - return found -} - -exports.isNaN = function (n) { - return Number.isNaN(n) -} - -exports.keys = function (obj) { - return Object.keys(obj) -} - -exports.pullAt = function (arr, i) { - var res = arr.splice(i, 1) - return res -} - -exports.unique = function (arr, i) { - return arr.filter(function (elem, pos) { - return arr.indexOf(elem) == pos - }) -} diff --git a/node_modules/date.js/lib/symbol.js b/node_modules/date.js/lib/symbol.js deleted file mode 100644 index 65153a67a..000000000 --- a/node_modules/date.js/lib/symbol.js +++ /dev/null @@ -1,248 +0,0 @@ -// Module to enumerate all CFG symbols for the human language for time - -/** - * Module Dependencies - */ - -var maps = require('./maps.json') -var util = require('./util') - -/** - * Constructors for all types of symbols - */ -var symbolConstructors = { - op: op, - c: c, - r: r, - n: n, - t: T, - dt: T, - T: T, - f: f, - o: o, - rT: rT, - cT: cT, -} - -/** - * Export `symbol` - */ - -module.exports = symbol - -/** - * The symbol constructor, given a string, lemmatize it, then return a symbol from {∅=null,op,c,r,n,t,dt,T,f}. - * i.e. str -> parseFloat(str) -> new n(str) -> return - * or str -> lemma(str) -> new (symbol-value) -> return - * @param {string} str the input string - * @return {*} The object from the class of symbols - * @example - * symbol('90') - * // => n { value: 10 } - * symbol('hour') - * // a
time difference object - * // => dt { h: '1' } - * symbol('tonight') - * // or equivalently, takes the T string too - * symbol('t:=9h,dt:12h') - * // a T object containing ,
- * // => T { t: t { h: '=9' }, dt: dt { h: '12' } } - * symbol('unrecognized') - * // an unrecognized string yields the null symbol ∅ - * // => null - */ -function symbol (str) { - var s - if (str == null) { - // null gets null - s = null - } else if (str['start'] && str['end']) { - // range: with 'start' and 'end' - s = new symbolConstructors['rT'](str) - } else if (parseFloat(str) == str) { - // 'n' - s = new symbolConstructors['n'](str) - } else if (str.match(util.reT)) { - // if is of the T string format t:,dt: - s = str.match(/\s+/g) ? null : new symbolConstructors['T'](str) - } else { - var lem = util.lemma(str) - s = lem.name ? new symbolConstructors[lem.name](lem.value, lem.name) : null - // set the canonical word from lemma - if (s) { s.canon = lem.canon } - // set the original token for reference - } - if (s) { s.token = str } - return s -} - -// console.log(symbol('10')) -// console.log(symbol('hour')) -// console.log(symbol('tonight')) -// console.log(symbol('t:=9h,dt:12h')) -// console.log(symbol('unrecognized')) - -// /////////////////// -// the CFG symbols // -// /////////////////// - -/** - * The op for arithmetic operator. - * note that since scaling(*,/) is very rare, we omit its implementation for now. - */ -function op (value) { - this.value = value -} - -/** - * The origin operator. - */ -function o (value) { - this.value = value -} - -/** - * The range operator. - */ -function r (value) { - this.value = value -} - -/** - * The cron operator. - */ -function c (value) { - this.value = value -} - -/** - * The n number. Calls parseFloat. - */ -function n (value) { - this.value = parseFloat(value) -} - -/** - * The t for time t, i.e. a point in the timeline - * units: ms, s, m, h, d, w, M, y - * All values are string, to represent the "=" default in the units. so when performing numerical operation, use parseFloat. - * @example - * new t(undefined) - * new t("") - * // => t {} - * new t("7h30m") - * // => t { h: '7', m: '30' } - * new t("7h=30m") - * // => t { h: '7', m: '=30' } - */ -function t (value) { - // guard against falsy input - if (!value) { - return null - } - // 1. see if unit is prepended with "=" for default, or set to '' - // 2. then consume chunks of like "30m" - while (value) { - var isDefault = (value.match(/^=/) || [])[0] || '' - value = value.replace(/^=/, '') - // default number is "1" - var number = (value.match(/^\-?\d+(\.\d+)?/) || [])[0] || '1' - value = value.replace(/^\-?\d+(\.\d+)?/, '') - var unit = (value.match(/^[a-zA-Z]+/) || [])[0] - value = value.replace(/^[a-zA-Z]+/, '') - // prepend the number (string) with isDefault, i.e. "=" or "" - this[unit] = isDefault + number - } -} - -/** - * The dt for time t, i.e. a displacement in the timeline - * units: ms, s, m, h, d, w, M, y - * All values are string, to represent the "=" default in the units. so when performing numerical operation, use parseFloat. - * Same keys as to allow for component-wise operation, e.g. t + dt = { ms+(d)ms, s+(d)s, ... } - */ -function dt (value) { - // guard against falsy input - if (!value) { - return null - } - // 1. see if unit is prepended with "=" for default, or set to '' - // 2. then consume chunks of like "30m" - while (value) { - var isDefault = (value.match(/^=/) || [])[0] || '' - value = value.replace(/^=/, '') - // default number is "1" - var number = (value.match(/^\-?\d+(\.\d+)?/) || [])[0] || '1' - value = value.replace(/^\-?\d+(\.\d+)?/, '') - var unit = (value.match(/^[a-zA-Z]+/) || [])[0] - value = value.replace(/^[a-zA-Z]+/, '') - // prepend the number (string) with isDefault, i.e. "=" or "" - this[unit] = isDefault + number - } -} - -// console.log(new t(undefined)) -// console.log(new t("")) -// console.log(new t("7h30m")) -// console.log(new t("=7h30m")) -// console.log(new t().constructor.name) - -/** - * The T, implementation-specific, is a linear combination of and
. - * Used to capture the human Ts, e.g. noon, afternoon, dawn, evening, today, tonight, Sunday, fortnight, weekdays, weekends, christmas, spring, summer, holidays etc. - * To specify T in maps.json, follow the syntax: - * `:` means "set", `=` means "default", use t:,dt: for the symbol-value, e.g. "t:=7h,dt:0h" - * evening ~ t:=7h,dt:12h, read as "t set to default 7h, dt set to 12h" - * later ~ t:,dt:=3h, read as "t set to nothing, dt set to default 3h" - * beware, "" and "0" are diferent, the former is empty, the later a numerical value. - * @param {string} value from the Symbol. - * @param {string} [name] from the Symbol. - * @example - * var T = new symbol("t:=7h,dt:0h") - * // => T { t: t { h: '=7' }, dt: dt { h: '0' } } - * T.t - * // => t { h: '=7' } - * T.dt - * // => t { h: '0' } - */ -function T (value, name) { - if (name == 't') { - this.t = new t(value) - this.dt = new dt() - } else if (name == 'dt') { - this.t = new t() - this.dt = new dt(value) - } else { - var split = value.split(','), - _t = split[0].split(':').pop(), - _dt = split[1].split(':').pop() - this.t = new t(_t) - this.dt = new dt(_dt) - } -} - -// var T = new T("t:=7h,dt:0h") -// console.log(T.t) -// console.log(T.dt) - -/** - * The product of , gives a time interval - */ -function rT (interval) { - this.start = interval.start - this.end = interval.end -} - -/** - * The f to capture frequency for . - */ -function f (value) { - this.value = value -} - -/** - * The product of or , gives a cron time - */ -function cT (cron) { - this.cron = cron -} diff --git a/node_modules/date.js/lib/tokenize.js b/node_modules/date.js/lib/tokenize.js deleted file mode 100644 index f1cbede07..000000000 --- a/node_modules/date.js/lib/tokenize.js +++ /dev/null @@ -1,273 +0,0 @@ -// Module to tokenize a string into CFG symbols - -/** - * Module Dependencies - */ -var util = require('./util') -var symbol = require('./symbol') -var maps = require('./maps.json') - -/** - * regexes for Subnormal forms - */ - -var re = { - // 12/20 - 12/21, 2012/12 - 2013/12 - MMsDDdMMsDD: /(?!\d{1,4}\/\d{1,4}\s*-\s*\d{1,4}\/\d{1,4}\/)(\d{1,4})\/(\d{1,4})\s*-\s*(\d{1,4})\/(\d{1,4})/g, - // 12/22 - 23, 2012/10 - 12 - MMsDDdDD: /(?!\d{1,4}\/\d{1,4}\s*-\s*\d{1,4}\/)(\d{1,4})\/(\d{1,4})\s*-\s*(\d{1,4})/g, - // 12/24, 2012/12 - MMsDD: /(?!\d{1,4}\/\d{1,4}\/)(\d{1,4})\/(\d{1,4})/g, - // 05:30pm, 0530pm, 1730, 1730pm, 1730[re:h], remove the [re:h] - hhcmm: /(\s+\d{1,2}|^\d{1,2})\:?(\d{2})\s*(\S+)*/g -} - -/** - * Export `tokenize` - */ - -module.exports = tokenize - -/** - * Parse and tokenize a string into array of valid CFG symbols, in these steps: - * 1. parse normal forms - * 2. parse subnormal forms - * 3. parse english forms - * @param {string} str The input string. - * @return {JSON} {str, tokensIn, tokensOut, symbols} - */ -function tokenize (str) { - // split num from alphabets - str = (' ' + str) - .replace(/\s+(\d+)([a-zA-Z]+)/g, ' $1 $2') - .replace(/\s+([a-zA-Z]+)(\d+)/g, ' $1 $2') - .replace(/\s+/g, ' ') - .replace(/^\s+/, '') - // 1. 2. parse normal and subnormal forms - var p = parseNormal12(str), - pStr = p.str, - tokens = pStr.split(' '), - symbols = [] - // clean the non-normal tokens a bit, allow to be wrapped by words only - for (var i = 0; i < tokens.length; i++) { - if (!tokens[i].match(util.reT)) { - tokens[i] = tokens[i].replace(/^\W+/, '').replace(/\W+$/, '') - } - } - - // 3. parse english forms - for (var i = 0; i < tokens.length; i++) { - var tok = tokens[i] - var oneGram = tok, - twoGram = tok + ' ' + (tokens[i + 1] || ''), - oneSym = symbol(oneGram), - twoSym = symbol(twoGram) - if (twoSym && twoSym.value == oneSym.value) { - // if lemmatization must happen for both, - // pick the longer, skip next token - // skip this once, reset skip - i++ - symbols.push(symbol(twoGram)) - } else { - symbols.push(symbol(oneGram)) - } - } - return { - str: pStr, - tokensOut: p.tokensOut, - tokensIn: p.tokensIn, - symbols: symbols - } -} - -/** - * Run 1. parseNormal then 2. parseNormal2, return the parsed string with T-format tokens. - * @private - * @param {string} str The input string - * @return {JSON} Parsed string - */ -function parseNormal12 (str) { - var p1 = parseNormal1(str) - // find tokens that are purely normal, and reinject into string - var p1TokensOut = p1.tokensOut.filter(notSubnormal) - var p1Str = injectNormal(str, p1TokensOut) - // now parse the subnormal - var p2 = parseNormal2(p1Str, [], []) - // the tokens that taken out, and their replacements, in order - var pTokensOut = p1.tokensOut.concat(p2.tokensOut) - var pTokensIn = p1.tokensIn.concat(p2.tokensIn) - return { - str: p2.str, - tokensOut: pTokensOut, - tokensIn: pTokensIn - } -} - -/** - * 1. Parse normal forms. Try to parse and return a normal Date, parseable from new Date(str), by continuously trimming off its tail and retry until either get a valid date, or string runs out. - * Doesn't parse string with length <5 - * @private - * @param {string} str The input string. - * @return {string} A Date in stdT string, or null. - */ -function parseNormal1 (str) { - // keep chopping off tail until either get a valid date, or string runs out - // array of parsed date and the string consumed - var tokensIn = [], - tokensOut = [] - // ensure single spacing - str = str.replace(/\s+/g, ' ') - // tokenize by space - var strArr = str.split(/\s+/g) - - // init the normalDate and head string used - var normalDate = null, - head = '' - // do while there's still string to go - while (strArr.length) { - head = (head + ' ' + strArr.shift()).trim() - try { - normalDate = util.stdT(new Date(head)) - // Extend head: if parse successful, extend continuously until failure, then that's the longest parseable head string, ... - var advanceHead = head + ' ' + strArr[0] - while (1) { - try { - var advanceDate = util.stdT(new Date(advanceHead)) - if (advanceDate != 'Invalid Date') { - // if advanceDate is parseable, set to current, update heads - var normalDate = advanceDate - head = head + ' ' + strArr.shift() - advanceHead = advanceHead + ' ' + strArr[0] - } else { - break - } - } catch (e) { - // when fail, just break - break - } - } - // Shrink head: from the whole parseable head ..., trim front till we get - while (1) { - try { - if (util.stdT(new Date(head.replace(/^\s*\S+\s*/, ''))) != normalDate) { - // front token eaten causes change, dont update head - break - } else { - // update head - head = head.replace(/^\s*\S+\s*/, '') - } - } catch (e) { - break - } - } - // only consider a valid parse if the parsed str is long enough - if (head.length > 6) { - tokensIn.push(normalDate) - // get head = only, then reset - tokensOut.push(head) - } - head = '' - } catch (e) {} - } - return { tokensIn: tokensIn, tokensOut: tokensOut } -} - -/** - * 2. Parse subnormal forms after parseNormal. Gradually replace tokens of the input string while parseable. - * @private - */ -function parseNormal2 (str, tokensIn, tokensOut) { - var m, res - if (m = re.MMsDDdMMsDD.exec(str)) { - // 12/20 - 12/21 - var yMd1 = yMdParse(m[1], m[2]) - var yMd2 = yMdParse(m[3], m[4]) - res = ' t:' + yMd1 + ',dt: - t:' + yMd2 + ',dt: ' - } else if (m = re.MMsDDdDD.exec(str)) { - // 12/22 - 23 - var yMd1 = yMdParse(m[1], m[2]) - var yMd2 = yMdParse(m[1], m[3]) - res = ' t:' + yMd1 + ',dt: - t:' + yMd2 + ',dt: ' - } else if (m = re.MMsDD.exec(str)) { - // if year - var yMd = yMdParse(m[1], m[2]) - // 12/24 - res = ' t:' + yMd + ',dt: ' - } else if (m = re.hhcmm.exec(str)) { - // 05:30pm, 0530pm, 1730, 1730pm, 1730[re:h], remove the [re:h] - res = ' t:' + m[1].trim() + 'h' + m[2] + 'm' + ',dt: ' + (m[3] || '') - } else { - // exit recursion if hits here - return { - str: str, - tokensIn: tokensIn, - tokensOut: tokensOut - } - } - // recurse down till no more substitution (CFG is not cyclic, so ok) - tokensOut.push(m[0]) - tokensIn.push(res) - str = parseNormal2(str.replace(m[0], res), tokensIn, tokensOut).str - return { - str: str, - tokensIn: tokensIn, - tokensOut: tokensOut - } -} - -// //////////////////// -// Helper functions // -// //////////////////// - -/** - * Try to parse two tokens for T form into MM/dd, or MM/yyyy if either token hsa length 4. - * @private - * @param {string} token1 - * @param {string} token2 - * @return {string} in the form - */ -function yMdParse (token1, token2) { - var part0 = [token1, token2].filter(function (token) { - return token.length == 4 - }) - var part1 = [token1, token2].filter(function (token) { - return token.length != 4 - }) - var y = part0[0] ? part0[0] + 'y' : '' - var M = part1[0] + 'M' - var d = part1[1] ? part1[1] + 'd' : '' - return y + M + d -} - -/** - * Check if the dateStr is strictly normal and not subnormal. Used to extract parseNormal2 overrides. - * @private - * @param {string} dateStr - * @return {Boolean} - */ -function notSubnormal (dateStr) { - var subnormalStr = parseNormal2(dateStr, [], []).str - // remove T and see if still has words - var noT = subnormalStr.replace(/t\:\S*,dt\:\S*(\s*-\s*t\:\S*,dt\:\S*)?/, '') - return /\w+/g.exec(noT) != null -} - -/** - * Given a string and array of its parsed phrases, convert them into T stdT then T format, and inject into the original string, return. - * @private - * @param {string} str The original string. - * @param {Array} parsedArr The parsed phrases from the string. - * @return {string} The string with parsed phrases replaced in T format. - * - * @example - * injectNormal('05 October 2011 14:48 UTC 08/11 2020', [ '05 October 2011 14:48 UTC', '08/11 2020' ]) - * // => 't:2011y10M05d14h48m00.000s,dt: t:2020y08M11d04h00m00.000s,dt: ' - */ -function injectNormal (str, parsedArr) { - for (var i = 0; i < parsedArr.length; i++) { - var parsed = parsedArr[i] - var T = util.stdTtoT(util.stdT(new Date(parsed))) - str = str.replace(parsed, T) - } - return str -} diff --git a/node_modules/date.js/lib/util.js b/node_modules/date.js/lib/util.js deleted file mode 100644 index a354cd69e..000000000 --- a/node_modules/date.js/lib/util.js +++ /dev/null @@ -1,593 +0,0 @@ -/** - * Module Dependencies - */ - -var _ = require('./subdash') -var maps = require('./maps.json') - -/** - * The T string regex, e.g. "t:=9h,dt:12h", to encode T =
. Is case sensitive. - */ - -var reT = /t\:\S*,dt\:\S*/g - -/** - * The ordering of time units, large to small, - * 'mer' is the meridiem, 0 for am, 1 for pm - * and the units used for carrying - */ - -var timeUnitOrder = ['y', 'M', 'w', 'd', 'h', 'm', 's', 'ms'] -var canonTimeUnitOrder = [] -for (var i = 0; i < timeUnitOrder.length; i++) { - var unit = timeUnitOrder[i] - canonTimeUnitOrder.push(lemma(unit).canon) -} -var tOrdering = ['y', 'M', 'd', 'h', 'm', 's'] -var tFactor = [365, 30, 24, 60, 60] - -/** - * Delimiters for stdT string - */ - -var stdTdelim = ['-', '-', ' ', ':', ':', ''] - -/** - * Export `util` - */ - -module.exports = { - TtoStdT: TtoStdT, - TtoStr: TtoStr, - delimSyms: delimSyms, - hasSym: hasSym, - has_dt: has_dt, - has_pureTimeUnit: has_pureTimeUnit, - has_t: has_t, - highestOverride: highestOverride, - isSym: isSym, - largestUnit: largestUnit, - lemma: lemma, - nextLargestUnit: nextLargestUnit, - nowT: nowT, - opType: opType, - orderChunks: orderChunks, - removeTnPlus: removeTnPlus, - reT: reT, - sName: sName, - splitByArr: splitByArr, - splitSyms: splitSyms, - splitT: splitT, - stdT: stdT, - stdTdelim: stdTdelim, - stdTtoT: stdTtoT, - tOrdering: tOrdering, - timeUnitOrder: timeUnitOrder, - canonTimeUnitOrder: canonTimeUnitOrder, - tokenToStr: tokenToStr, - unparsedStr: unparsedStr, -} - -/** - * Convert a T string to stdT string, with default filled by nowT(). - * @example - * TtoStdT('t:10M05d14h48m00.000s,dt:') - * // => 2016-10-05 14:48:00 - */ -function TtoStdT (str, offset) { - if (typeof str != 'string') { - str = TtoStr(str) - } - var nowStr = nowT(offset), - nowArr = splitT(nowStr), - strArr = splitT(str) - var resArr = [] - for (var i = 0; i < nowArr.length; i++) { - var val = parseFloat(strArr[i]) - if (Number.isNaN(val)) { val = parseFloat(nowArr[i]) } - resArr.push(val) - } - var resStr = '' - for (var i = 0; i < stdTdelim.length; i++) { - var num = resArr[i].toString() - // e.g. '5.123' tends to be '05.123', fix it - var predecimal = /(\d+)(\.\d+)?/.exec(num)[1], - postdecimal = /(\d+)\.?(\d+)?/.exec(num)[2] - if (predecimal.length == 1) { num = '0' + num } - if (postdecimal != null) { - for (var j = 0; j < 3 - postdecimal.length; j++) { - num = num + '0' - } - } - resStr += (num + stdTdelim[i]) - } - // console.log('resStr', resStr) - return resStr -} -// console.log(TtoStdT('t:10M05d14h48m00.010s,dt:')) - -/** - * Convert a T symbol into its T string. - */ -function TtoStr (T) { - var tStr = 't:', - dtStr = ',dt:' - for (var i = 0; i < timeUnitOrder.length; i++) { - var tUnit = timeUnitOrder[i] - // if unit exist, write to str - if (T['t'][tUnit] != undefined) { - tStr += T['t'][tUnit] + tUnit - } - if (T['dt'][tUnit] != undefined) { - dtStr += T['dt'][tUnit] + tUnit - } - } - return tStr + dtStr -} - -/** - * Delimit the array of timeChunk symbols by combining consecutive nulls (>3) into one, and dumping those shorter. Result is then delimited by 'trinull'. - * @param {Array} syms Of parsed symbols aka time chunks. - * @return {Array} symbols delimited by 'trinull' - */ -function delimSyms (syms) { - // 1. - // contract the nulls into trinulls in a single array - var newSyms = [], - count = 0 - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (s == null) { - count++ - } else { - if (count > 2) { - newSyms.push('trinull') - } - newSyms.push(s) - count = 0 - } - } - return newSyms -} -// console.log(delimSyms([1, 2, null, null, null, 3])) - -/** - * Check if arr has symbol whose name is listen in symArr. - * @param {Array} arr Array of symbols. - * @param {Array} symArr Array of symbol names. - * @return {Boolean} - */ -function hasSym (syms, symArr) { - var found = false - for (var i = 0; i < syms.length; i++) { - if (isSym(syms[i], symArr)) { - found = true - break - } - } - return found -} - -/** - * Check if T.dt is not empty - */ -function has_dt (T) { - return _.keys(T.dt).length > 0 -} - -/** - * Check if T has only t, dt with units from timeUnitOrder - */ -function has_pureTimeUnit (T) { - var dt = T.dt, - t = T.t - var pure = true - for (var k in dt) { - if (!_.includes(timeUnitOrder, k)) { - pure = false - break - } - } - for (var k in t) { - if (!_.includes(timeUnitOrder, k)) { - pure = false - break - } - } - return pure -} - -/** - * Check if T.t is not empty - */ -function has_t (T) { - return _.keys(T.t).length > 0 -} - -/** - * find the lowest overridable unit in t or dt - */ -function highestOverride (t) { - var lowestOverable = null - for (var i = 0; i < tOrdering.length; i++) { - var unit = tOrdering[i] - if (/^=/.exec(t[unit])) { - lowestOverable = unit - break - } - } - return lowestOverable -} - -/** - * Check if arr has the symbol name of s. - * @param {symbol} s symbol object - * @param {Array} arr Of string symbol names - * @return {Boolean} - */ -function isSym (s, arr) { - return _.includes(arr, sName(s)) -} - -/** - * Find the largest enumerated unit in T.t, or if none, in T.dt - */ -function largestUnit (T) { - var lu = _.find(tOrdering, function (unit) { - return T.t[unit] - }) - if (lu == null) { - lu = _.find(tOrdering, function (unit) { - return T.dt[unit] - }) - } - return lu -} - -/** - * Return the lemma symbol of a word string, i.e. the name and value of the symbol it belongs to in the CFG. Uses ./maps.json. - * NLP Lemmatization refers here: htp://nlp.stanford.edu/Ir-book/html/htmledition/stemming-and-lemmatization-1.html. Inflections = all possible alternative words of a lemma. - * @param {string} str To lemmatize. - * @return {JSON} Lemma symbol {name, value} for CFG - * @example - * lemma('zero') - * // => { value: '0', name: 'n' } - */ -function lemma (str) { - // change all to lower case except for 'M' for month - str = (str == 'M') ? str : str.toLowerCase() - var lem = {}, - name = null, - value = null, - canon = str - var mapsKeys = _.keys(maps) - for (var i = 0; i < mapsKeys.length; i++) { - var sMap = maps[mapsKeys[i]], - sMapKeys = _.keys(sMap) - for (var j = 0; j < sMapKeys.length; j++) { - var inflectionArr = sMap[sMapKeys[j]] - if (_.includes(inflectionArr, str)) { - // set the canonical form as the first in inflectionArr - canon = inflectionArr[0] - // if str is in inflections - value = sMapKeys[j] - break - } - } - if (value != null) { - name = mapsKeys[i] - break - } - } - // set value - lem['name'] = name - lem['value'] = value - lem['canon'] = canon - return lem -} -// console.log(lemma('zero')) - -/** - * Find the next largest enumerated unit in T.t, or if none, in T.dt - */ -function nextLargestUnit (T) { - var lu = largestUnit(T) - return tOrdering[tOrdering.indexOf(lu) - 1] -} - -/** - * Convenient method to get current time in T format. - * @return {string} T format string. - */ -function nowT (offset) { - var dateStr = (offset == undefined) ? stdT(new Date()) : stdT(offset) - return stdTtoT(dateStr) -} - -/** - * Determine the op type based on arguments - */ -function opType (L, op, R) { - var LsName = sName(L) || '', - RsName = sName(R) || '' - var opsName = sName(op) - if (opsName != 'o' && opsName != 'r' && opsName != 'c') { opsName = '' } - return LsName + opsName + RsName -} - -/** - * Order time chunks by not containing T, short to long, then containing T, short to long. Used for .pop() to get the candidate timechunk for parsing. - */ -function orderChunks (matrix) { - // 2. - // ok partition first then sort - var hasNoT = matrix.filter(function (row) { - return !hasSym(row, ['T']) - }) - var hasT = matrix.filter(function (row) { - return hasSym(row, ['T']) - }) - // matrix, sorted short to long - var lengthSortedNotTMat = hasNoT.sort(function (a, b) { - return a.length - b.length - }) - var lengthSortedTMat = hasT.sort(function (a, b) { - return a.length - b.length - }) - // 3.1 3.2 3.3 - return lengthSortedNotTMat.concat(lengthSortedTMat) -} - -/** - * !remove the defaul that is 'plus' between , for defaulting to plus. - * !is a quickfix for mat - */ -function removeTnPlus (syms) { - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (isSym(s, ['op']) && s.value == 'plus' && isSym(syms[i + 1], ['n'])) { - syms.splice(i, 1) - } - } - return syms -} - -/** - * Return the name of a symbol: {op,c,r,n,T,f} - * @param {Symbol} symbol A CFG symbol. - * @return {string} name of the symbol. - */ -function sName (symbol) { - return symbol ? symbol.constructor.name : null -} - -/** - * Split a string by an array of tokens. - * @param {string} str The input string. - * @param {Array} tokenArr Array of tokens to split the string by. - * @return {Array} The split string array. - */ -function splitByArr (str, tokenArr) { - var delim = '#{REPLACE}' - // inject into tokens - for (var i = 0; i < tokenArr.length; i++) { - var token = tokenArr[i] - str = str.replace(token, delim) - } - // split into arr - return str.split(delim) -} -// console.log(splitByArr('lorem 1 ipsum 2 dolor 3', [1,2,3])) - -/** - * Split an array of symbols by delimiter into matrix. - * @param {Array} syms The input array - * @param {string|symbol} delimiter To split the array by - * @return {matrix} delimited arrays. - */ -function splitSyms (syms, delimiter) { - // split the single array into matrix - var matrix = [], - newRow = [] - for (var i = 0; i < syms.length; i++) { - var s = syms[i] - if (s == delimiter || sName(s) == delimiter) { - // delimit and push to matrix - matrix.push(newRow) - newRow = [] - } else if (i == syms.length - 1) { - // edge case, push res - newRow.push(s) - matrix.push(newRow) - } else { - // accumulate in row - newRow.push(s) - } - } - return matrix -} - -/** - * Split a T string into array of [_y, _M, _d, _h, _m, _s] - */ -function splitT (str) { - if (!str.match(reT)) { - return null - } - var _y = (/(\d+(\.\d+)?)y/.exec(str) || [])[1], - _M = (/(\d+(\.\d+)?)M/.exec(str) || [])[1], - _w = (/(\d+(\.\d+)?)w/.exec(str) || [])[1], - _d = (/(\d+(\.\d+)?)d/.exec(str) || [])[1], - _h = (/(\d+(\.\d+)?)h/.exec(str) || [])[1], - _m = (/(\d+(\.\d+)?)m/.exec(str) || [])[1], - _s = (/(\d+(\.\d+)?)s/.exec(str) || [])[1] - - // The Time Object - var TO = { - y: _y, - M: _M, - w: _w, - d: _d, - h: _h, - m: _m, - s: _s - } - // do the carries - TO = carry(TO) - - // compose results - var res = [] - for (var i = 0; i < tOrdering.length; i++) { - var k = tOrdering[i] - res.push(TO[k]) - } - return res -} - -/** - * Function to properly down- and up- carry Time Object - * 1. dumpweek, 2. carryDown, 3. carryUp - */ -function carry (TO) { - TO = dumpWeek(TO) - TO = carryDown(TO) - TO = carryUp(TO) - return TO -} - -/** - * 1. dumpWeek - */ -function dumpWeek (TO) { - var _w = parseFloat(TO['w'] || '0'), - _d = parseFloat(TO['d'] || '0') - TO['d'] = _d + (_w * 7) - delete TO['w'] - return TO -} - -/** - * 2. carryDown - */ -function carryDown (TO) { - // shall reverse the ordering and factors for opp direction - var ordering = tOrdering, - factor = tFactor - var carry = 0 - for (var i = 0; i < ordering.length; i++) { - // the time unit in the ordering - var u = ordering[i] - // skip the rest of loopbody if this unit is undefined and nothing to carry - if (TO[u] == undefined && carry == 0) { - continue - } - // carry - TO[u] = parseFloat(TO[u] || '0') + carry - // dont go in after the last one - if (i == ordering.length - 1) { - // overlong s decimal will be fixed in TtoStdT - break - } - var decimal = parseFloat(TO[u] || '0') - parseInt(TO[u] || '0') - if (decimal > 0) { - // set next carry - carry = decimal * factor[i] - // update current u - TO[u] = parseInt(TO[u]) - } else { - // else reset to 0 if no carry - carry = 0 - } - } - return TO -} - -/** - * 3. carryUp - */ -function carryUp (TO) { - // shall reverse the ordering and factors for opp direction - var ordering = tOrdering.slice().reverse(), - factor = tFactor.slice().reverse() - var carry = 0 - for (var i = 0; i < ordering.length; i++) { - // the time unit in the ordering - var u = ordering[i] - // skip the rest of loopbody if this unit is undefined and nothing to carry - if (TO[u] == undefined && carry == 0) { - continue - } - // carry - TO[u] = parseFloat(TO[u] || '0') + carry - // dont go in after the last one - if (i == ordering.length - 1) { - break - } - var deci = parseInt(parseFloat(TO[u] || '0') / factor[i]) - if (deci > 0) { - // set next carry - carry = deci - // update current u - TO[u] = parseFloat(TO[u] || '0') % factor[i] - } else { - // else reset to 0 if no carry - carry = 0 - } - } - return TO -} - -/** - * Take a date or string, parse it into standard format as yyyy-MM-dd hh:mm:ss.sss - */ -function stdT (date) { - if (typeof date == 'string') { - date = new Date(date) - } - var _y = date.getFullYear(), - _M = date.getMonth() + 1, - _d = date.getDate(), - _date = [_y, _M, _d].join('-') - _time = /(\d\S+)/.exec(date.toTimeString())[1], - format = _date + ' ' + _time - return format -} - -/** - * Convert std time string to T string. - * @example - * stdTtoT('2011-10-05T14:48:00.000') - * // => 't:2011y10M05d14h48m00.000s,dt:' - */ -function stdTtoT (str) { - var datetime = str.split(' ') - var date = datetime[0].split('-'), - time = datetime[1].split(':') - return 't:' + date[0] + 'y' + date[1] + 'M' + date[2] + 'd' + time[0] + 'h' + time[1] + 'm' + time[2] + 's,dt:' -} -// console.log(stdTtoT('2011-10-05T14:48:00.000Z')) - -/** - * Recombine array of symbols back into str - */ -function tokenToStr (syms) { - var tokens = [] - for (var i = 0; i < syms.length; i++) { - tokens.push(syms[i].token) - } - return tokens.join(' ') -} - -/** - * Extract unparsedTokens from str and parsed syms then join them - */ -function unparsedStr (str, syms) { - var inputTokens = str.split(/\s+/) - var tokens = [] - for (var i = 0; i < syms.length; i++) { - if (syms[i] == null) { - tokens.push(inputTokens[i]) - } - } - return tokens.join(' ') -} diff --git a/node_modules/date.js/node_modules/debug/.coveralls.yml b/node_modules/date.js/node_modules/debug/.coveralls.yml deleted file mode 100644 index 20a706858..000000000 --- a/node_modules/date.js/node_modules/debug/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve diff --git a/node_modules/date.js/node_modules/debug/.eslintrc b/node_modules/date.js/node_modules/debug/.eslintrc deleted file mode 100644 index 146371edb..000000000 --- a/node_modules/date.js/node_modules/debug/.eslintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "env": { - "browser": true, - "node": true - }, - "globals": { - "chrome": true - }, - "rules": { - "no-console": 0, - "no-empty": [1, { "allowEmptyCatch": true }] - }, - "extends": "eslint:recommended" -} diff --git a/node_modules/date.js/node_modules/debug/.npmignore b/node_modules/date.js/node_modules/debug/.npmignore deleted file mode 100644 index 5f60eecc8..000000000 --- a/node_modules/date.js/node_modules/debug/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -support -test -examples -example -*.sock -dist -yarn.lock -coverage -bower.json diff --git a/node_modules/date.js/node_modules/debug/.travis.yml b/node_modules/date.js/node_modules/debug/.travis.yml deleted file mode 100644 index a76430037..000000000 --- a/node_modules/date.js/node_modules/debug/.travis.yml +++ /dev/null @@ -1,20 +0,0 @@ -sudo: false - -language: node_js - -node_js: - - "4" - - "6" - - "8" - -install: - - make install - -script: - - make lint - - make test - -matrix: - include: - - node_js: '8' - env: BROWSER=1 diff --git a/node_modules/date.js/node_modules/debug/CHANGELOG.md b/node_modules/date.js/node_modules/debug/CHANGELOG.md deleted file mode 100644 index 820d21e33..000000000 --- a/node_modules/date.js/node_modules/debug/CHANGELOG.md +++ /dev/null @@ -1,395 +0,0 @@ - -3.1.0 / 2017-09-26 -================== - - * Add `DEBUG_HIDE_DATE` env var (#486) - * Remove ReDoS regexp in %o formatter (#504) - * Remove "component" from package.json - * Remove `component.json` - * Ignore package-lock.json - * Examples: fix colors printout - * Fix: browser detection - * Fix: spelling mistake (#496, @EdwardBetts) - -3.0.1 / 2017-08-24 -================== - - * Fix: Disable colors in Edge and Internet Explorer (#489) - -3.0.0 / 2017-08-08 -================== - - * Breaking: Remove DEBUG_FD (#406) - * Breaking: Use `Date#toISOString()` instead to `Date#toUTCString()` when output is not a TTY (#418) - * Breaking: Make millisecond timer namespace specific and allow 'always enabled' output (#408) - * Addition: document `enabled` flag (#465) - * Addition: add 256 colors mode (#481) - * Addition: `enabled()` updates existing debug instances, add `destroy()` function (#440) - * Update: component: update "ms" to v2.0.0 - * Update: separate the Node and Browser tests in Travis-CI - * Update: refactor Readme, fixed documentation, added "Namespace Colors" section, redid screenshots - * Update: separate Node.js and web browser examples for organization - * Update: update "browserify" to v14.4.0 - * Fix: fix Readme typo (#473) - -2.6.9 / 2017-09-22 -================== - - * remove ReDoS regexp in %o formatter (#504) - -2.6.8 / 2017-05-18 -================== - - * Fix: Check for undefined on browser globals (#462, @marbemac) - -2.6.7 / 2017-05-16 -================== - - * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom) - * Fix: Inline extend function in node implementation (#452, @dougwilson) - * Docs: Fix typo (#455, @msasad) - -2.6.5 / 2017-04-27 -================== - - * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek) - * Misc: clean up browser reference checks (#447, @thebigredgeek) - * Misc: add npm-debug.log to .gitignore (@thebigredgeek) - - -2.6.4 / 2017-04-20 -================== - - * Fix: bug that would occur if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo) - * Chore: ignore bower.json in npm installations. (#437, @joaovieira) - * Misc: update "ms" to v0.7.3 (@tootallnate) - -2.6.3 / 2017-03-13 -================== - - * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts) - * Docs: Changelog fix (@thebigredgeek) - -2.6.2 / 2017-03-10 -================== - - * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin) - * Docs: Add backers and sponsors from Open Collective (#422, @piamancini) - * Docs: Add Slackin invite badge (@tootallnate) - -2.6.1 / 2017-02-10 -================== - - * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error - * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0) - * Fix: IE8 "Expected identifier" error (#414, @vgoma) - * Fix: Namespaces would not disable once enabled (#409, @musikov) - -2.6.0 / 2016-12-28 -================== - - * Fix: added better null pointer checks for browser useColors (@thebigredgeek) - * Improvement: removed explicit `window.debug` export (#404, @tootallnate) - * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate) - -2.5.2 / 2016-12-25 -================== - - * Fix: reference error on window within webworkers (#393, @KlausTrainer) - * Docs: fixed README typo (#391, @lurch) - * Docs: added notice about v3 api discussion (@thebigredgeek) - -2.5.1 / 2016-12-20 -================== - - * Fix: babel-core compatibility - -2.5.0 / 2016-12-20 -================== - - * Fix: wrong reference in bower file (@thebigredgeek) - * Fix: webworker compatibility (@thebigredgeek) - * Fix: output formatting issue (#388, @kribblo) - * Fix: babel-loader compatibility (#383, @escwald) - * Misc: removed built asset from repo and publications (@thebigredgeek) - * Misc: moved source files to /src (#378, @yamikuronue) - * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue) - * Test: coveralls integration (#378, @yamikuronue) - * Docs: simplified language in the opening paragraph (#373, @yamikuronue) - -2.4.5 / 2016-12-17 -================== - - * Fix: `navigator` undefined in Rhino (#376, @jochenberger) - * Fix: custom log function (#379, @hsiliev) - * Improvement: bit of cleanup + linting fixes (@thebigredgeek) - * Improvement: rm non-maintainted `dist/` dir (#375, @freewil) - * Docs: simplified language in the opening paragraph. (#373, @yamikuronue) - -2.4.4 / 2016-12-14 -================== - - * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts) - -2.4.3 / 2016-12-14 -================== - - * Fix: navigation.userAgent error for react native (#364, @escwald) - -2.4.2 / 2016-12-14 -================== - - * Fix: browser colors (#367, @tootallnate) - * Misc: travis ci integration (@thebigredgeek) - * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek) - -2.4.1 / 2016-12-13 -================== - - * Fix: typo that broke the package (#356) - -2.4.0 / 2016-12-13 -================== - - * Fix: bower.json references unbuilt src entry point (#342, @justmatt) - * Fix: revert "handle regex special characters" (@tootallnate) - * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate) - * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate) - * Improvement: allow colors in workers (#335, @botverse) - * Improvement: use same color for same namespace. (#338, @lchenay) - -2.3.3 / 2016-11-09 -================== - - * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne) - * Fix: Returning `localStorage` saved values (#331, Levi Thomason) - * Improvement: Don't create an empty object when no `process` (Nathan Rajlich) - -2.3.2 / 2016-11-09 -================== - - * Fix: be super-safe in index.js as well (@TooTallNate) - * Fix: should check whether process exists (Tom Newby) - -2.3.1 / 2016-11-09 -================== - - * Fix: Added electron compatibility (#324, @paulcbetts) - * Improvement: Added performance optimizations (@tootallnate) - * Readme: Corrected PowerShell environment variable example (#252, @gimre) - * Misc: Removed yarn lock file from source control (#321, @fengmk2) - -2.3.0 / 2016-11-07 -================== - - * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic) - * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos) - * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15) - * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran) - * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom) - * Package: Update "ms" to 0.7.2 (#315, @DevSide) - * Package: removed superfluous version property from bower.json (#207 @kkirsche) - * Readme: fix USE_COLORS to DEBUG_COLORS - * Readme: Doc fixes for format string sugar (#269, @mlucool) - * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0) - * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable) - * Readme: better docs for browser support (#224, @matthewmueller) - * Tooling: Added yarn integration for development (#317, @thebigredgeek) - * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek) - * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman) - * Misc: Updated contributors (@thebigredgeek) - -2.2.0 / 2015-05-09 -================== - - * package: update "ms" to v0.7.1 (#202, @dougwilson) - * README: add logging to file example (#193, @DanielOchoa) - * README: fixed a typo (#191, @amir-s) - * browser: expose `storage` (#190, @stephenmathieson) - * Makefile: add a `distclean` target (#189, @stephenmathieson) - -2.1.3 / 2015-03-13 -================== - - * Updated stdout/stderr example (#186) - * Updated example/stdout.js to match debug current behaviour - * Renamed example/stderr.js to stdout.js - * Update Readme.md (#184) - * replace high intensity foreground color for bold (#182, #183) - -2.1.2 / 2015-03-01 -================== - - * dist: recompile - * update "ms" to v0.7.0 - * package: update "browserify" to v9.0.3 - * component: fix "ms.js" repo location - * changed bower package name - * updated documentation about using debug in a browser - * fix: security error on safari (#167, #168, @yields) - -2.1.1 / 2014-12-29 -================== - - * browser: use `typeof` to check for `console` existence - * browser: check for `console.log` truthiness (fix IE 8/9) - * browser: add support for Chrome apps - * Readme: added Windows usage remarks - * Add `bower.json` to properly support bower install - -2.1.0 / 2014-10-15 -================== - - * node: implement `DEBUG_FD` env variable support - * package: update "browserify" to v6.1.0 - * package: add "license" field to package.json (#135, @panuhorsmalahti) - -2.0.0 / 2014-09-01 -================== - - * package: update "browserify" to v5.11.0 - * node: use stderr rather than stdout for logging (#29, @stephenmathieson) - -1.0.4 / 2014-07-15 -================== - - * dist: recompile - * example: remove `console.info()` log usage - * example: add "Content-Type" UTF-8 header to browser example - * browser: place %c marker after the space character - * browser: reset the "content" color via `color: inherit` - * browser: add colors support for Firefox >= v31 - * debug: prefer an instance `log()` function over the global one (#119) - * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) - -1.0.3 / 2014-07-09 -================== - - * Add support for multiple wildcards in namespaces (#122, @seegno) - * browser: fix lint - -1.0.2 / 2014-06-10 -================== - - * browser: update color palette (#113, @gscottolson) - * common: make console logging function configurable (#108, @timoxley) - * node: fix %o colors on old node <= 0.8.x - * Makefile: find node path using shell/which (#109, @timoxley) - -1.0.1 / 2014-06-06 -================== - - * browser: use `removeItem()` to clear localStorage - * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) - * package: add "contributors" section - * node: fix comment typo - * README: list authors - -1.0.0 / 2014-06-04 -================== - - * make ms diff be global, not be scope - * debug: ignore empty strings in enable() - * node: make DEBUG_COLORS able to disable coloring - * *: export the `colors` array - * npmignore: don't publish the `dist` dir - * Makefile: refactor to use browserify - * package: add "browserify" as a dev dependency - * Readme: add Web Inspector Colors section - * node: reset terminal color for the debug content - * node: map "%o" to `util.inspect()` - * browser: map "%j" to `JSON.stringify()` - * debug: add custom "formatters" - * debug: use "ms" module for humanizing the diff - * Readme: add "bash" syntax highlighting - * browser: add Firebug color support - * browser: add colors for WebKit browsers - * node: apply log to `console` - * rewrite: abstract common logic for Node & browsers - * add .jshintrc file - -0.8.1 / 2014-04-14 -================== - - * package: re-add the "component" section - -0.8.0 / 2014-03-30 -================== - - * add `enable()` method for nodejs. Closes #27 - * change from stderr to stdout - * remove unnecessary index.js file - -0.7.4 / 2013-11-13 -================== - - * remove "browserify" key from package.json (fixes something in browserify) - -0.7.3 / 2013-10-30 -================== - - * fix: catch localStorage security error when cookies are blocked (Chrome) - * add debug(err) support. Closes #46 - * add .browser prop to package.json. Closes #42 - -0.7.2 / 2013-02-06 -================== - - * fix package.json - * fix: Mobile Safari (private mode) is broken with debug - * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript - -0.7.1 / 2013-02-05 -================== - - * add repository URL to package.json - * add DEBUG_COLORED to force colored output - * add browserify support - * fix component. Closes #24 - -0.7.0 / 2012-05-04 -================== - - * Added .component to package.json - * Added debug.component.js build - -0.6.0 / 2012-03-16 -================== - - * Added support for "-" prefix in DEBUG [Vinay Pulim] - * Added `.enabled` flag to the node version [TooTallNate] - -0.5.0 / 2012-02-02 -================== - - * Added: humanize diffs. Closes #8 - * Added `debug.disable()` to the CS variant - * Removed padding. Closes #10 - * Fixed: persist client-side variant again. Closes #9 - -0.4.0 / 2012-02-01 -================== - - * Added browser variant support for older browsers [TooTallNate] - * Added `debug.enable('project:*')` to browser variant [TooTallNate] - * Added padding to diff (moved it to the right) - -0.3.0 / 2012-01-26 -================== - - * Added millisecond diff when isatty, otherwise UTC string - -0.2.0 / 2012-01-22 -================== - - * Added wildcard support - -0.1.0 / 2011-12-02 -================== - - * Added: remove colors unless stderr isatty [TooTallNate] - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/date.js/node_modules/debug/LICENSE b/node_modules/date.js/node_modules/debug/LICENSE deleted file mode 100644 index 658c933d2..000000000 --- a/node_modules/date.js/node_modules/debug/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 TJ Holowaychuk - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the 'Software'), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/node_modules/date.js/node_modules/debug/Makefile b/node_modules/date.js/node_modules/debug/Makefile deleted file mode 100644 index 3ddd1360e..000000000 --- a/node_modules/date.js/node_modules/debug/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 -THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) -THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) - -# BIN directory -BIN := $(THIS_DIR)/node_modules/.bin - -# Path -PATH := node_modules/.bin:$(PATH) -SHELL := /bin/bash - -# applications -NODE ?= $(shell which node) -YARN ?= $(shell which yarn) -PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) -BROWSERIFY ?= $(NODE) $(BIN)/browserify - -install: node_modules - -browser: dist/debug.js - -node_modules: package.json - @NODE_ENV= $(PKG) install - @touch node_modules - -dist/debug.js: src/*.js node_modules - @mkdir -p dist - @$(BROWSERIFY) \ - --standalone debug \ - . > dist/debug.js - -lint: - @eslint *.js src/*.js - -test-node: - @istanbul cover node_modules/mocha/bin/_mocha -- test/**.js - @cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js - -test-browser: - @$(MAKE) browser - @karma start --single-run - -test-all: - @concurrently \ - "make test-node" \ - "make test-browser" - -test: - @if [ "x$(BROWSER)" = "x" ]; then \ - $(MAKE) test-node; \ - else \ - $(MAKE) test-browser; \ - fi - -clean: - rimraf dist coverage - -.PHONY: browser install clean lint test test-all test-node test-browser diff --git a/node_modules/date.js/node_modules/debug/README.md b/node_modules/date.js/node_modules/debug/README.md deleted file mode 100644 index 8e754d17b..000000000 --- a/node_modules/date.js/node_modules/debug/README.md +++ /dev/null @@ -1,368 +0,0 @@ -# debug -[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) - - - -A tiny JavaScript debugging utility modelled after Node.js core's debugging -technique. Works in Node.js and web browsers. - -## Installation - -```bash -$ npm install debug -``` - -## Usage - -`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. - -Example [_app.js_](./examples/node/app.js): - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %o', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example [_worker.js_](./examples/node/worker.js): - -```js -var a = require('debug')('worker:a') - , b = require('debug')('worker:b'); - -function work() { - a('doing lots of uninteresting work'); - setTimeout(work, Math.random() * 1000); -} - -work(); - -function workb() { - b('doing some work'); - setTimeout(workb, Math.random() * 2000); -} - -workb(); -``` - -The `DEBUG` environment variable is then used to enable these based on space or -comma-delimited names. - -Here are some examples: - -screen shot 2017-08-08 at 12 53 04 pm -screen shot 2017-08-08 at 12 53 38 pm -screen shot 2017-08-08 at 12 53 25 pm - -#### Windows note - -On Windows the environment variable is set using the `set` command. - -```cmd -set DEBUG=*,-not_this -``` - -Note that PowerShell uses different syntax to set environment variables. - -```cmd -$env:DEBUG = "*,-not_this" -``` - -Then, run the program to be debugged as usual. - - -## Namespace Colors - -Every debug instance has a color generated for it based on its namespace name. -This helps when visually parsing the debug output to identify which debug instance -a debug line belongs to. - -#### Node.js - -In Node.js, colors are enabled when stderr is a TTY. You also _should_ install -the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, -otherwise debug will only use a small handful of basic colors. - - - -#### Web Browser - -Colors are also enabled on "Web Inspectors" that understand the `%c` formatting -option. These are WebKit web inspectors, Firefox ([since version -31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) -and the Firebug plugin for Firefox (any version). - - - - -## Millisecond diff - -When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - - -When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: - - - - -## Conventions - -If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. - -## Wildcards - -The `*` character may be used as a wildcard. Suppose for example your library has -debuggers named "connect:bodyParser", "connect:compress", "connect:session", -instead of listing all three with -`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do -`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - -You can also exclude specific debuggers by prefixing them with a "-" character. -For example, `DEBUG=*,-connect:*` would include all debuggers except those -starting with "connect:". - -## Environment Variables - -When running through Node.js, you can set a few environment variables that will -change the behavior of the debug logging: - -| Name | Purpose | -|-----------|-------------------------------------------------| -| `DEBUG` | Enables/disables specific debugging namespaces. | -| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | -| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | -| `DEBUG_DEPTH` | Object inspection depth. | -| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | - - -__Note:__ The environment variables beginning with `DEBUG_` end up being -converted into an Options object that gets used with `%o`/`%O` formatters. -See the Node.js documentation for -[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) -for the complete list. - -## Formatters - -Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. -Below are the officially supported formatters: - -| Formatter | Representation | -|-----------|----------------| -| `%O` | Pretty-print an Object on multiple lines. | -| `%o` | Pretty-print an Object all on a single line. | -| `%s` | String. | -| `%d` | Number (both integer and float). | -| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | -| `%%` | Single percent sign ('%'). This does not consume an argument. | - - -### Custom formatters - -You can add custom formatters by extending the `debug.formatters` object. -For example, if you wanted to add support for rendering a Buffer as hex with -`%h`, you could do something like: - -```js -const createDebug = require('debug') -createDebug.formatters.h = (v) => { - return v.toString('hex') -} - -// …elsewhere -const debug = createDebug('foo') -debug('this is hex: %h', new Buffer('hello world')) -// foo this is hex: 68656c6c6f20776f726c6421 +0ms -``` - - -## Browser Support - -You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), -or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), -if you don't want to build it yourself. - -Debug's enable state is currently persisted by `localStorage`. -Consider the situation shown below where you have `worker:a` and `worker:b`, -and wish to debug both. You can enable this using `localStorage.debug`: - -```js -localStorage.debug = 'worker:*' -``` - -And then refresh the page. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - - -## Output streams - - By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: - -Example [_stdout.js_](./examples/node/stdout.js): - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - -## Checking whether a debug target is enabled - -After you've created a debug instance, you can determine whether or not it is -enabled by checking the `enabled` property: - -```javascript -const debug = require('debug')('http'); - -if (debug.enabled) { - // do stuff... -} -``` - -You can also manually toggle this property to force the debug instance to be -enabled or disabled. - - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - - Andrew Rhyne - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## License - -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/date.js/node_modules/debug/karma.conf.js b/node_modules/date.js/node_modules/debug/karma.conf.js deleted file mode 100644 index 103a82d15..000000000 --- a/node_modules/date.js/node_modules/debug/karma.conf.js +++ /dev/null @@ -1,70 +0,0 @@ -// Karma configuration -// Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC) - -module.exports = function(config) { - config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['mocha', 'chai', 'sinon'], - - - // list of files / patterns to load in the browser - files: [ - 'dist/debug.js', - 'test/*spec.js' - ], - - - // list of files to exclude - exclude: [ - 'src/node.js' - ], - - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - }, - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - - - // web server port - port: 9876, - - - // enable / disable colors in the output (reporters and logs) - colors: true, - - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['PhantomJS'], - - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity - }) -} diff --git a/node_modules/date.js/node_modules/debug/node.js b/node_modules/date.js/node_modules/debug/node.js deleted file mode 100644 index 7fc36fe6d..000000000 --- a/node_modules/date.js/node_modules/debug/node.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./src/node'); diff --git a/node_modules/date.js/node_modules/debug/package.json b/node_modules/date.js/node_modules/debug/package.json deleted file mode 100644 index 8457a7ef7..000000000 --- a/node_modules/date.js/node_modules/debug/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "_from": "debug@~3.1.0", - "_id": "debug@3.1.0", - "_inBundle": false, - "_integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "_location": "/date.js/debug", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "debug@~3.1.0", - "name": "debug", - "escapedName": "debug", - "rawSpec": "~3.1.0", - "saveSpec": null, - "fetchSpec": "~3.1.0" - }, - "_requiredBy": [ - "/date.js" - ], - "_resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "_shasum": "5bb5a0672628b64149566ba16819e61518c67261", - "_spec": "debug@~3.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\date.js", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "browser": "./src/browser.js", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "http://n8.io" - }, - { - "name": "Andrew Rhyne", - "email": "rhyneandrew@gmail.com" - } - ], - "dependencies": { - "ms": "2.0.0" - }, - "deprecated": false, - "description": "small debugging utility", - "devDependencies": { - "browserify": "14.4.0", - "chai": "^3.5.0", - "concurrently": "^3.1.0", - "coveralls": "^2.11.15", - "eslint": "^3.12.1", - "istanbul": "^0.4.5", - "karma": "^1.3.0", - "karma-chai": "^0.1.0", - "karma-mocha": "^1.3.0", - "karma-phantomjs-launcher": "^1.0.2", - "karma-sinon": "^1.0.5", - "mocha": "^3.2.0", - "mocha-lcov-reporter": "^1.2.0", - "rimraf": "^2.5.4", - "sinon": "^1.17.6", - "sinon-chai": "^2.8.0" - }, - "homepage": "https://github.com/visionmedia/debug#readme", - "keywords": [ - "debug", - "log", - "debugger" - ], - "license": "MIT", - "main": "./src/index.js", - "name": "debug", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "version": "3.1.0" -} diff --git a/node_modules/date.js/node_modules/debug/src/browser.js b/node_modules/date.js/node_modules/debug/src/browser.js deleted file mode 100644 index f5149ff52..000000000 --- a/node_modules/date.js/node_modules/debug/src/browser.js +++ /dev/null @@ -1,195 +0,0 @@ -/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', - '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', - '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', - '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', - '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', - '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', - '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', - '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', - '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', - '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', - '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { - return true; - } - - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - - // is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - try { - return JSON.stringify(v); - } catch (err) { - return '[UnexpectedJSONParseError]: ' + err.message; - } -}; - - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - var useColors = this.useColors; - - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); - - if (!useColors) return; - - var c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit') - - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ - -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - return window.localStorage; - } catch (e) {} -} diff --git a/node_modules/date.js/node_modules/debug/src/debug.js b/node_modules/date.js/node_modules/debug/src/debug.js deleted file mode 100644 index 77e6384a3..000000000 --- a/node_modules/date.js/node_modules/debug/src/debug.js +++ /dev/null @@ -1,225 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = require('ms'); - -/** - * Active `debug` instances. - */ -exports.instances = []; - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - -exports.formatters = {}; - -/** - * Select a color. - * @param {String} namespace - * @return {Number} - * @api private - */ - -function selectColor(namespace) { - var hash = 0, i; - - for (i in namespace) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return exports.colors[Math.abs(hash) % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function createDebug(namespace) { - - var prevTime; - - function debug() { - // disabled? - if (!debug.enabled) return; - - var self = debug; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // turn the `arguments` into a proper Array - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %O - args.unshift('%O'); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // apply env-specific formatting (colors, etc.) - exports.formatArgs.call(self, args); - - var logFn = debug.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = exports.enabled(namespace); - debug.useColors = exports.useColors(); - debug.color = selectColor(namespace); - debug.destroy = destroy; - - // env-specific initialization logic for debug instances - if ('function' === typeof exports.init) { - exports.init(debug); - } - - exports.instances.push(debug); - - return debug; -} - -function destroy () { - var index = exports.instances.indexOf(this); - if (index !== -1) { - exports.instances.splice(index, 1); - return true; - } else { - return false; - } -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - exports.names = []; - exports.skips = []; - - var i; - var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - var len = split.length; - - for (i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } - - for (i = 0; i < exports.instances.length; i++) { - var instance = exports.instances[i]; - instance.enabled = exports.enabled(instance.namespace); - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - if (name[name.length - 1] === '*') { - return true; - } - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} diff --git a/node_modules/date.js/node_modules/debug/src/index.js b/node_modules/date.js/node_modules/debug/src/index.js deleted file mode 100644 index cabcbcda1..000000000 --- a/node_modules/date.js/node_modules/debug/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Detect Electron renderer process, which is node, but we should - * treat as a browser. - */ - -if (typeof process === 'undefined' || process.type === 'renderer') { - module.exports = require('./browser.js'); -} else { - module.exports = require('./node.js'); -} diff --git a/node_modules/date.js/node_modules/debug/src/node.js b/node_modules/date.js/node_modules/debug/src/node.js deleted file mode 100644 index d666fb9c0..000000000 --- a/node_modules/date.js/node_modules/debug/src/node.js +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Module dependencies. - */ - -var tty = require('tty'); -var util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; - -/** - * Colors. - */ - -exports.colors = [ 6, 2, 3, 4, 5, 1 ]; - -try { - var supportsColor = require('supports-color'); - if (supportsColor && supportsColor.level >= 2) { - exports.colors = [ - 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, - 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, - 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 214, 215, 220, 221 - ]; - } -} catch (err) { - // swallow - we only care if `supports-color` is available; it doesn't have to be. -} - -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ - -exports.inspectOpts = Object.keys(process.env).filter(function (key) { - return /^debug_/i.test(key); -}).reduce(function (obj, key) { - // camel-case - var prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); - - // coerce string value into JS value - var val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) val = true; - else if (/^(no|off|false|disabled)$/i.test(val)) val = false; - else if (val === 'null') val = null; - else val = Number(val); - - obj[prop] = val; - return obj; -}, {}); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - return 'colors' in exports.inspectOpts - ? Boolean(exports.inspectOpts.colors) - : tty.isatty(process.stderr.fd); -} - -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -exports.formatters.o = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n').map(function(str) { - return str.trim() - }).join(' '); -}; - -/** - * Map %o to `util.inspect()`, allowing multiple lines if needed. - */ - -exports.formatters.O = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - var name = this.namespace; - var useColors = this.useColors; - - if (useColors) { - var c = this.color; - var colorCode = '\u001b[3' + (c < 8 ? c : '8;5;' + c); - var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\u001b[0m'; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); - } else { - args[0] = getDate() + name + ' ' + args[0]; - } -} - -function getDate() { - if (exports.inspectOpts.hideDate) { - return ''; - } else { - return new Date().toISOString() + ' '; - } -} - -/** - * Invokes `util.format()` with the specified arguments and writes to stderr. - */ - -function log() { - return process.stderr.write(util.format.apply(util, arguments) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - if (null == namespaces) { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } else { - process.env.DEBUG = namespaces; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init (debug) { - debug.inspectOpts = {}; - - var keys = Object.keys(exports.inspectOpts); - for (var i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -/** - * Enable namespaces listed in `process.env.DEBUG` initially. - */ - -exports.enable(load()); diff --git a/node_modules/date.js/node_modules/ms/index.js b/node_modules/date.js/node_modules/ms/index.js deleted file mode 100644 index 6a522b16b..000000000 --- a/node_modules/date.js/node_modules/ms/index.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isNaN(val) === false) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - if (ms >= d) { - return Math.round(ms / d) + 'd'; - } - if (ms >= h) { - return Math.round(ms / h) + 'h'; - } - if (ms >= m) { - return Math.round(ms / m) + 'm'; - } - if (ms >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - return plural(ms, d, 'day') || - plural(ms, h, 'hour') || - plural(ms, m, 'minute') || - plural(ms, s, 'second') || - ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; -} diff --git a/node_modules/date.js/node_modules/ms/license.md b/node_modules/date.js/node_modules/ms/license.md deleted file mode 100644 index 69b61253a..000000000 --- a/node_modules/date.js/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Zeit, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/date.js/node_modules/ms/package.json b/node_modules/date.js/node_modules/ms/package.json deleted file mode 100644 index d9d0f164a..000000000 --- a/node_modules/date.js/node_modules/ms/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_from": "ms@2.0.0", - "_id": "ms@2.0.0", - "_inBundle": false, - "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "_location": "/date.js/ms", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "ms@2.0.0", - "name": "ms", - "escapedName": "ms", - "rawSpec": "2.0.0", - "saveSpec": null, - "fetchSpec": "2.0.0" - }, - "_requiredBy": [ - "/date.js/debug" - ], - "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "_shasum": "5608aeadfc00be6c2901df5f9861788de0d597c8", - "_spec": "ms@2.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\date.js\\node_modules\\debug", - "bugs": { - "url": "https://github.com/zeit/ms/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Tiny milisecond conversion utility", - "devDependencies": { - "eslint": "3.19.0", - "expect.js": "0.3.1", - "husky": "0.13.3", - "lint-staged": "3.4.1", - "mocha": "3.4.1" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/zeit/ms#readme", - "license": "MIT", - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "main": "./index", - "name": "ms", - "repository": { - "type": "git", - "url": "git+https://github.com/zeit/ms.git" - }, - "scripts": { - "lint": "eslint lib/* bin/*", - "precommit": "lint-staged", - "test": "mocha tests.js" - }, - "version": "2.0.0" -} diff --git a/node_modules/date.js/node_modules/ms/readme.md b/node_modules/date.js/node_modules/ms/readme.md deleted file mode 100644 index 84a9974cc..000000000 --- a/node_modules/date.js/node_modules/ms/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# ms - -[![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms) -[![Slack Channel](http://zeit-slackin.now.sh/badge.svg)](https://zeit.chat/) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -``` - -### Convert from milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(ms('10 hours')) // "10h" -``` - -### Time format written-out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [node](https://nodejs.org) and in the browser. -- If a number is supplied to `ms`, a string with a unit is returned. -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`). -- If you pass a string with a number and a valid unit, the number of equivalent ms is returned. - -## Caught a bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, node will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/node_modules/date.js/package.json b/node_modules/date.js/package.json deleted file mode 100644 index 02e9db42a..000000000 --- a/node_modules/date.js/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "_from": "date.js@^0.3.1", - "_id": "date.js@0.3.3", - "_inBundle": false, - "_integrity": "sha512-HgigOS3h3k6HnW011nAb43c5xx5rBXk8P2v/WIT9Zv4koIaVXiH2BURguI78VVp+5Qc076T7OR378JViCnZtBw==", - "_location": "/date.js", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "date.js@^0.3.1", - "name": "date.js", - "escapedName": "date.js", - "rawSpec": "^0.3.1", - "saveSpec": null, - "fetchSpec": "^0.3.1" - }, - "_requiredBy": [ - "/helper-date" - ], - "_resolved": "https://registry.npmjs.org/date.js/-/date.js-0.3.3.tgz", - "_shasum": "ef1e92332f507a638795dbb985e951882e50bbda", - "_spec": "date.js@^0.3.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\helper-date", - "author": { - "name": "Matthew Mueller" - }, - "bugs": { - "url": "https://github.com/MatthewMueller/date/issues" - }, - "bundleDependencies": false, - "dependencies": { - "debug": "~3.1.0" - }, - "deprecated": false, - "description": "dates for humans", - "devDependencies": { - "better-assert": "~1.0.0", - "browserify": "^16.1.1", - "mocha": "~4.0.1" - }, - "homepage": "https://github.com/MatthewMueller/date#readme", - "keywords": [ - "nlp", - "natural language processing", - "time", - "parser", - "cfg", - "dates", - "humans", - "parsing" - ], - "license": "MIT", - "main": "index.js", - "name": "date.js", - "repository": { - "type": "git", - "url": "git+https://github.com/MatthewMueller/date.git" - }, - "scripts": { - "test": "make test" - }, - "spm": { - "main": "index.js", - "dependencies": { - "debug": "0.8.1" - } - }, - "version": "0.3.3" -} diff --git a/node_modules/date.js/test/parser.js b/node_modules/date.js/test/parser.js deleted file mode 100644 index 8b462e8a5..000000000 --- a/node_modules/date.js/test/parser.js +++ /dev/null @@ -1,982 +0,0 @@ -/** - * Module Dependencies - */ - -var parse = require('../lib/parser'); -var assert = require('better-assert'); - -/** - * Some predefined dates - */ - -var mon = new Date('May 13, 2013 01:30:00'); - -/** - * Test parser - */ - -/** - * Minutes - */ - -describe('minutes', function() { - it('10m', function() { - var date = parse('10m', mon); - assert('1:40:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('10min', function() { - var date = parse('10min', mon); - assert('1:40:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('10 minutes', function() { - var date = parse('10 minutes', mon); - assert('1:40:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('10 minutes from now', function() { - var date = parse('10 minutes from now', mon); - assert('1:40:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('10 minutes starting tomorrow', function() { - var date = parse('10 minutes starting tomorrow', mon); - assert('1:40:00' == t(date)); - assert('5/14/13' == d(date)); - }); -}); - -/** - * Hours - */ - -describe('hours', function() { - it('in 5 hours', function() { - var date = parse('in 5 hours', mon); - assert('6:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('5 hours later', function() { - var date = parse('5 hours later', mon); - assert('6:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('in 5h', function() { - var date = parse('in 5h', mon); - assert('6:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('in 5hrs', function() { - var date = parse('in 5hrs', mon); - assert('6:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('at 5am', function() { - var date = parse('5am', mon); - assert('5:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('at 5pm', function() { - var date = parse('5pm', mon); - assert('17:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('at5', function() { - var date = parse('at5', mon); - assert('5:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('at 17', function() { - var date = parse('at 17', mon); - assert('17:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('at 12:30', function() { - var date = parse('at 12:30', mon); - assert('12:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('at 12.30', function() { - var date = parse('at 12.30', mon); - assert('12:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('at 23:35', function() { - var date = parse('at 23:35', mon); - assert('23:35:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('at 0:30', function() { - var date = parse('at 0:30', mon); - assert('0:30:00' == t(date)); - assert('5/14/13' == d(date)); - }); -}); - -/** - * Days - */ - -describe('days', function() { - it('in 2 days', function() { - var date = parse('in 2 days', mon); - assert('1:30:00' == t(date)); - assert('5/15/13' == d(date)); - }); - - it('in 2d', function() { - var date = parse('in 2d', mon); - assert('1:30:00' == t(date)); - assert('5/15/13' == d(date)); - }); -}); - -/** - * Dates - */ - -describe('dates', function() { - it('tuesday at 9am', function() { - var date = parse('tuesday at 9am', mon); - assert('9:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('monday at 9am', function() { - var date = parse('monday at 9am', mon); - assert('9:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('Monday at 9am', function() { - var date = parse('Monday at 9am', mon); - assert('9:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('monday at 9', function() { - var date = parse('monday at 9', mon); - assert('9:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('monday at 21', function() { - var date = parse('monday at 21', mon); - assert('21:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('monday at 1:00am', function() { - var date = parse('monday at 1:00am', mon); - assert('1:00:00' == t(date)); - assert('5/20/13' == d(date)); - }); - - it('next monday at 1:00am', function() { - var date = parse('next monday at 1:00am', mon); - assert('1:00:00' == t(date)); - assert('5/20/13' == d(date)); - }); - - it('last monday at 1:00am', function() { - var date = parse('last monday at 1:00am', mon); - assert('1:00:00' == t(date)); - assert('5/6/13' == d(date)); - }); -}); - -/** - * Tomorrow - */ - -describe('tomorrow', function() { - it('tomorrow at 3pm', function() { - var date = parse('tomorrow at 3pm', mon); - assert('15:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('tmr at 3pm', function() { - var date = parse('tmr at 3pm', mon); - assert('15:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); -}); - -/** - * Yesterday - */ - -describe('yesterday', function() { - it('yesterday at 3pm', function() { - var date = parse('yesterday at 3pm', mon); - assert('15:00:00' == t(date)); - assert('5/12/13' == d(date)); - }); - - it('ytd at 3pm', function() { - var date = parse('ytd at 3pm', mon); - assert('15:00:00' == t(date)); - assert('5/12/13' == d(date)); - }); - - it('yesterday at 15', function() { - var date = parse('yesterday at 15', mon); - assert('15:00:00' == t(date)); - assert('5/12/13' == d(date)); - }); - - it('yesterday at 12:30am', function() { - var date = parse('yesterday at 12:30am', mon); - assert('0:30:00' == t(date)); - assert('5/12/13' == d(date)); - }); -}); - -/** - * Tonight - */ - -describe('tonight', function() { - it('5pm tonight', function() { - var date = parse('5pm tonight', mon); - assert('17:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('tonight at 5pm', function() { - var date = parse('tonight at 5pm', mon); - assert('17:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('tonight at 5', function() { - var date = parse('tonight at 5', mon); - assert('17:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('tonight at 5:30', function() { - var date = parse('tonight at 5:30', mon); - assert('17:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); -}); - -/** - * Midnight - */ -describe('mightnight', function() { - it('midnight', function() { - var date = parse('midnight', mon); - - assert('0:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('tomorrow at midnight', function() { - var date = parse('tomorrow at midnight', mon); - assert('0:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('midnight (@ 1:30pm)', function() { - var afternoon = new Date('May 13, 2013 13:30:00') - var date = parse('midnight', afternoon); - assert('0:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); -}); - -/** - * Noon - */ - -describe('noon', function() { - it('noon', function() { - var date = parse('noon', mon); - assert('12:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('tomorrow at noon', function() { - var date = parse('tomorrow at noon', mon); - assert('12:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('noon (@ 1:30pm)', function() { - var afternoon = new Date('May 13, 2013 13:30:00') - var date = parse('noon', afternoon); - assert('12:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); -}); - -/** - * Weeks - */ - -describe('weeks', function() { - it('next week tuesday', function() { - var date = parse('next week tuesday', mon); - assert('1:30:00' == t(date)); - assert('5/21/13' == d(date)); - }); - - it('next w tuesday', function() { - var date = parse('next w tuesday', mon); - assert('1:30:00' == t(date)); - assert('5/21/13' == d(date)); - }); - - it('next wk tuesday', function() { - var date = parse('next wk tuesday', mon); - assert('1:30:00' == t(date)); - assert('5/21/13' == d(date)); - }); - - it('next week tuesday at 4:30pm', function() { - var date = parse('next week tuesday at 4:30pm', mon); - assert('16:30:00' == t(date)); - assert('5/21/13' == d(date)); - }); - - it('2 weeks from wednesday', function() { - var date = parse('2 weeks from wednesday', mon); - assert('1:30:00' == t(date)); - assert('5/29/13' == d(date)); - }); -}); - -/** - * Night - */ - -describe('night', function() { - it('night', function() { - var date = parse('night', mon); - assert('19:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('tomorrow night', function() { - var date = parse('tomorrow night', mon); - assert('19:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('tomorrow night at 9', function() { - var date = parse('tomorrow night at 9', mon); - assert('21:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('last night', function() { - var date = parse('last night', mon); - assert('19:00:00' == t(date)); - assert('5/12/13' == d(date)); - }); -}) - -/** - * Evening - */ - -describe('evening', function() { - it('evening', function() { - var date = parse('evening', mon); - assert('17:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('tomorrow evening', function() { - var date = parse('tomorrow evening', mon); - assert('17:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('tomorrow evening at 9', function() { - var date = parse('tomorrow evening at 9', mon); - assert('21:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('last evening', function() { - var date = parse('last evening', mon); - assert('17:00:00' == t(date)); - assert('5/12/13' == d(date)); - }); -}) - -/** - * Afternoon - */ - -describe('afternoon', function() { - it('afternoon', function() { - var date = parse('afternoon', mon); - assert('14:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('tomorrow afternoon', function() { - var date = parse('tomorrow afternoon', mon); - assert('14:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('last afternoon', function() { - var date = parse('last afternoon', mon); - assert('14:00:00' == t(date)); - assert('5/12/13' == d(date)); - }); -}) - -/** - * Morning - */ - -describe('morning', function() { - it('morning', function() { - var date = parse('morning', mon); - assert('8:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('tomorrow morning', function() { - var date = parse('tomorrow morning', mon); - assert('8:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('last morning', function() { - var date = parse('last morning', mon); - assert('8:00:00' == t(date)); - assert('5/12/13' == d(date)); - }); - - it('this morning at 9', function() { - var date = parse('this morning at 9', mon); - assert('9:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); -}) - -/** - * Months - */ - -describe('months', function() { - it('this month', function() { - var date = parse('this month', mon); - assert('1:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('next month', function() { - var date = parse('next month', mon); - assert('1:30:00' == t(date)); - assert('6/13/13' == d(date)); - }); - - it('last month', function() { - var date = parse('last month', mon); - assert('1:30:00' == t(date)); - assert('4/13/13' == d(date)); - }); - - it('2 months from tomorrow', function() { - var date = parse('2 months from tomorrow', mon); - assert('1:30:00' == t(date)); - assert('7/14/13' == d(date)); - }); - - it('2M from tomorrow', function() { - var date = parse('2M from tomorrow', mon); - assert('1:30:00' == t(date)); - assert('7/14/13' == d(date)); - }); - - it('2 monthes from tomorrow (misspelling)', function() { - var date = parse('2 monthes from tomorrow', mon); - assert('1:30:00' == t(date)); - assert('7/14/13' == d(date)); - }); - - it('should handle months with less days', function() { - var date = parse('1 month', new Date('01/31/2011')); - assert('2/28/11' == d(date)) - }); - - it('should handle leap year', function() { - var date = parse('1 month', new Date('01/31/2012')); - assert('2/29/12' == d(date)); - }); - - it('tomorrow afternoon at 4:30pm 1 month from now', function() { - var date = parse('tomorrow afternoon at 4:30pm 1 month from now', mon); - assert('16:30:00' == t(date)); - assert('6/14/13' == d(date)); - }); -}); - -/** - * Year - */ - -describe('year', function() { - it('this year', function() { - var date = parse('year', mon); - assert('1:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('this yr', function() { - var date = parse('year', mon); - assert('1:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('next year', function() { - var date = parse('next year', mon); - assert('1:30:00' == t(date)); - assert('5/13/14' == d(date)); - }); - - it('last year', function() { - var date = parse('last year', mon); - assert('1:30:00' == t(date)); - assert('5/13/12' == d(date)); - }); - - it('2 years from yesterday at 5pm', function() { - var date = parse('2 years from yesterday at 5pm', mon); - assert('17:00:00' == t(date)); - assert('5/12/15' == d(date)); - }); - - it('2 years ago', function() { - var date = parse('2 years ago', mon); - assert('1:30:00' == t(date)); - assert('5/13/11' == d(date)); - }) - - it('2 years ago--.', function() { - var date = parse('2 years ago--.', mon); - assert('1:30:00' == t(date)); - assert('5/13/11' == d(date)); - }) - - it('2 years ago tomorrow', function() { - var date = parse('2 years ago tomorrow', mon); - assert('1:30:00' == t(date)); - assert('5/14/11' == d(date)); - }) -}); - -/** - * Dates in the past - */ - -describe('dates in the past', function() { - var past = new Date('May 13, 2013 18:00:00') - - it('tomorrow afternoon', function() { - var date = parse('tomorrow afternoon', past); - assert('14:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('tomorrow afternoon at 3pm', function() { - var date = parse('tomorrow afternoon at 3pm', past); - assert('15:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - // Need to place .nextTime() at the end - - it('3pm tomorrow afternoon', function() { - var date = parse('3pm tomorrow afternoon', past); - assert('15:00:00' == t(date)); - assert('5/14/13' == d(date)); - }); -}); - -/** - * Times - */ -describe('times', function() { - it('1:30', function() { - var date = parse('1:30', mon); - assert('1:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('2:31', function() { - var date = parse('2:31', mon); - assert('2:31:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('00:28', function() { - // past time will result in tomorrow - var date = parse('00:28', mon); - assert('0:28:00' == t(date)); - assert('5/14/13' == d(date)); - }); -}); - -/** - * Ignore other input - */ - -describe('other inputs', function() { - // it('yesterday, 2 years ago--.', function() { - // var date = parse('yesterday, 2 years ago--.', mon); - // assert('1:30:00' == t(date)); - // assert('5/12/11' == d(date)) - // }); - - it('invalid', function() { - var date = parse('invalid', mon); - assert(d(mon) == d(date)); - }); - - it('empty', function() { - var date = parse('', mon); - assert(d(mon) == d(date)); - }); -}); - -/** - * Bug fixes - */ - -describe('bug fixes', function() { - it('at 12:30pm (fixes: #6)', function() { - var after = new Date('May 13, 2013 13:30:00'); - var date = parse('at 12:30pm', after); - assert('12:30:00' == t(date)); - assert('5/14/13' == d(date)); - }); - - it('at X in the morning (fixes: #36)', function() { - var past = new Date('May 13, 2013 18:00:00') - var date = parse('tomorrow at 9 in the morning', past); - assert('9:00:00' == t(date)); - assert('5/14/13' == d(date)); - }) -}); - -/** - * If context is a string parse it as date - */ - -describe('parse context if its a string (fixes: #38)', function() { - it('string context', function() { - var today = new Date(); - today.setDate(today.getDate() - 1); - var date = parse('today at 11am', 'yesterday at 12:30am'); - - assert(d(date) == d(today)); - assert('11:00:00' == t(date)); - }); -}); - - -/** - * Support for dates with months - */ - -describe('months (fixes: #10)', function() { - var after = new Date('May 13, 2013 13:30:00'); - it('2nd of January', function() { - var date = parse('2nd of January 12:30', after); - assert('12:30:00' == t(date)); - assert('1/2/13' == d(date)); - }); - - it('1st of March', function() { - var date = parse('1st of March', after); - assert('13:30:00' == t(date)); - assert('3/1/13' == d(date)); - }); - - it('1 st of March', function() { - var date = parse('1 st of March', after); - assert('13:30:00' == t(date)); - assert('3/1/13' == d(date)); - }); - - it('31st of September 4:00am', function() { - var date = parse('31st of September 4:00am', after); - assert('4:00:00' == t(date)); - assert('9/31/13' != d(date)); - assert('10/1/13' == d(date)); - }); - - it('1st of January 4:00am', function() { - var date = parse('1st of January 4:00am', after); - assert('4:00:00' == t(date)); - assert('1/1/13' == d(date)); - }) - - it('9th of December 4:00am', function() { - var date = parse('9th of December 4:00am', after); - assert('4:00:00' == t(date)); - assert('12/9/13' == d(date)); - }) -}); - -/** - * Suppport 'ago' modifier - */ - -describe('support "ago" modifier (fixes: #20)', function() { - var after = new Date('May 13, 2013 13:30:00'); - - it('x seconds ago', function() { - var date = parse('10 seconds ago', after); - assert('13:29:50' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('x minutes ago', function() { - var date = parse('5 minutes ago', after); - assert('13:25:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('x minute ago', function() { - var date = parse('1 minutes ago', after); - assert('13:29:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('x hours ago', function() { - var date = parse('5 hours ago', after); - assert('8:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - // !pending operator canonicalization - // it('x hours from now', function() { - // var date = parse('5 hours from now', after); - // assert('8:30:00' == t(date)); - // assert('5/13/13' == d(date)); - // }); - - it('x days ago', function() { - var date = parse('5 day ago', after); - assert('13:30:00' == t(date)); - assert('5/8/13' == d(date)); - }); - - it('x week ago', function() { - var date = parse('2 week ago', after); - assert('13:30:00' == t(date)); - assert('4/29/13' == d(date)); - }); - - it('x months ago', function() { - var date = parse('10 months ago', after); - assert('13:30:00' == t(date)); - assert('7/13/12' == d(date)); - }); - - it('x year ago', function() { - var date = parse('10 year ago', after); - assert('13:30:00' == t(date)); - assert('5/13/03' == d(date)); - }); - -}); - - -/** - * Suppport natural language - */ - -describe('support natural language, single-tokens without arithmetics (fixes: #66, 64, 28, 16, 15, 11, 4)', function() { - - it('#66: an hour later', function() { - var date = parse('an hour later', mon); - assert('2:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('#64: 2w from wednesday', function() { - var date = parse('2w from wednesday', mon); - assert('1:30:00' == t(date)); - assert('5/29/13' == d(date)); - }); - - var after = new Date('May 13, 2013 13:30:00'); - it('#28: 2nd day of January', function() { - var date = parse('2nd day of January 12:30', after); - assert('12:30:00' == t(date)); - assert('1/2/13' == d(date)); - }); - - it('#16: two hours later', function() { - var date = parse('two hour later', mon); - assert('3:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('#15: a fortnight from wednesday', function() { - var date = parse('a fortnight from wednesday', mon); - assert('1:30:00' == t(date)); - assert('5/29/13' == d(date)); - }); - - it('#11: a minute ago', function() { - var date = parse('a minute ago', after); - assert('13:29:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('#4: two hours later', function() { - var date = parse('two hours later', mon); - assert('3:30:00' == t(date)); - assert('5/13/13' == d(date)); - }); - -}); - - -/** - * Suppport arithmetics - */ - -describe('support timeline arithmetics (fixes: #70, 62, 21)', function() { - - // !isn't an elegant fix, utilizes util.removeTnPlus for defaulting - it('#70: 5 days and 2 hours', function() { - var date = parse('5 days and 2 hours', mon); - assert('3:30:00' == t(date)); - assert('5/18/13' == d(date)); - }); - - it('#62: 5 days 2 hours', function() { - var date = parse('5 days 2 hours', mon); - assert('3:30:00' == t(date)); - assert('5/18/13' == d(date)); - }); - - it('#62: 2 hours 30 mins', function() { - var date = parse('2 hours 30 mins', mon); - assert('4:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - // !pending, need datejs to carry decimals - // it('#66: half an hour later', function () { - // var date = parse('half an hour later', mon); - // assert('2:00:00' == t(date)); - // assert('5/13/13' == d(date)); - // }); - // it('compatible arithmetics: an hour and half later', function () { - // var date = parse('an hour and half later', mon); - // assert('3:00:00' == t(date)); - // assert('5/13/13' == d(date)); - // }); - - // it('#63: this year', function () { - // var date = parse('this year', mon); - // }); - - // it('#63: this week', function () { - // var date = parse('this week', mon); - // }); - - // !isn't an elegant fix, utilizes util.removeTnPlus for defaulting - it('#21: 15 2nd January 12:30', function() { - var date = parse('on 2nd January 12:30', mon); - assert('12:30:00' == t(date)); - assert('1/2/13' == d(date)); - }); - - // !pending, waiting full CFG arithmetics - // it('#18: quarter to 12', function() { - // var date = parse('quarter to 12', mon); - // assert('11:40:00' == t(date)); - // assert('1/2/13' == d(date)); - // }); - - // !pending, waiting full CFG arithmetics - // it('#25: day after tomorrow', function() { - // var date = parse('day after tomorrow', mon); - // assert('1:30:00' == t(date)); - // assert('5/15/13' == d(date)); - // }); - -}); - - -/** - * Suppport arithmetics - */ - -describe('Time extraction from arbitrary sentence', function() { - - it('time extraction: remind me about laundry in 2 hours 30 mins please', function() { - var date = parse('remind me about laundry in 2 hours 30 mins please', mon); - assert('4:00:00' == t(date)); - assert('5/13/13' == d(date)); - }); - - it('Normal form: May 13, 2011 01:30:00', function() { - var date = parse('May 13, 2011 01:30:00', mon); - assert('1:30:00' == t(date)); - assert('5/13/11' == d(date)); - }); - - it('Normal form: 13 May 2011 01:30 UTC', function() { - // not testing the UTC cuz result will differ across timezones - var date = parse('13 May 2011 01:30', mon); - assert('1:30:00' == t(date)); - assert('5/13/11' == d(date)); - }); - -}) - - -/** - * Time helper function - */ - -function t(date) { - var t = date.toTimeString().split(' ')[0]; - t = ('0' == t[0]) ? t.slice(1) : t; - return t; -} - -/** - * Date helper function - */ - -function d(date) { - var d = date.toString(); - var month = date.getMonth() + 1; - var day = date.getDate(); - var year = '' + date.getFullYear(); - return [month, day, year.slice(2)].join('/'); -} diff --git a/node_modules/decode-uri-component/index.js b/node_modules/decode-uri-component/index.js deleted file mode 100644 index 691499b0e..000000000 --- a/node_modules/decode-uri-component/index.js +++ /dev/null @@ -1,94 +0,0 @@ -'use strict'; -var token = '%[a-f0-9]{2}'; -var singleMatcher = new RegExp(token, 'gi'); -var multiMatcher = new RegExp('(' + token + ')+', 'gi'); - -function decodeComponents(components, split) { - try { - // Try to decode the entire string first - return decodeURIComponent(components.join('')); - } catch (err) { - // Do nothing - } - - if (components.length === 1) { - return components; - } - - split = split || 1; - - // Split the array in 2 parts - var left = components.slice(0, split); - var right = components.slice(split); - - return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right)); -} - -function decode(input) { - try { - return decodeURIComponent(input); - } catch (err) { - var tokens = input.match(singleMatcher); - - for (var i = 1; i < tokens.length; i++) { - input = decodeComponents(tokens, i).join(''); - - tokens = input.match(singleMatcher); - } - - return input; - } -} - -function customDecodeURIComponent(input) { - // Keep track of all the replacements and prefill the map with the `BOM` - var replaceMap = { - '%FE%FF': '\uFFFD\uFFFD', - '%FF%FE': '\uFFFD\uFFFD' - }; - - var match = multiMatcher.exec(input); - while (match) { - try { - // Decode as big chunks as possible - replaceMap[match[0]] = decodeURIComponent(match[0]); - } catch (err) { - var result = decode(match[0]); - - if (result !== match[0]) { - replaceMap[match[0]] = result; - } - } - - match = multiMatcher.exec(input); - } - - // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else - replaceMap['%C2'] = '\uFFFD'; - - var entries = Object.keys(replaceMap); - - for (var i = 0; i < entries.length; i++) { - // Replace all decoded components - var key = entries[i]; - input = input.replace(new RegExp(key, 'g'), replaceMap[key]); - } - - return input; -} - -module.exports = function (encodedURI) { - if (typeof encodedURI !== 'string') { - throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`'); - } - - try { - encodedURI = encodedURI.replace(/\+/g, ' '); - - // Try the built in decoder first - return decodeURIComponent(encodedURI); - } catch (err) { - // Fallback to a more advanced decoder - return customDecodeURIComponent(encodedURI); - } -}; diff --git a/node_modules/decode-uri-component/license b/node_modules/decode-uri-component/license deleted file mode 100644 index 78b08554a..000000000 --- a/node_modules/decode-uri-component/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sam Verschueren (github.com/SamVerschueren) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/decode-uri-component/package.json b/node_modules/decode-uri-component/package.json deleted file mode 100644 index 8afbe6dcd..000000000 --- a/node_modules/decode-uri-component/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "_args": [ - [ - "decode-uri-component@0.2.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "decode-uri-component@0.2.0", - "_id": "decode-uri-component@0.2.0", - "_inBundle": false, - "_integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "_location": "/decode-uri-component", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "decode-uri-component@0.2.0", - "name": "decode-uri-component", - "escapedName": "decode-uri-component", - "rawSpec": "0.2.0", - "saveSpec": null, - "fetchSpec": "0.2.0" - }, - "_requiredBy": [ - "/source-map-resolve" - ], - "_resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "_spec": "0.2.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Sam Verschueren", - "email": "sam.verschueren@gmail.com", - "url": "github.com/SamVerschueren" - }, - "bugs": { - "url": "https://github.com/SamVerschueren/decode-uri-component/issues" - }, - "description": "A better decodeURIComponent", - "devDependencies": { - "ava": "^0.17.0", - "coveralls": "^2.13.1", - "nyc": "^10.3.2", - "xo": "^0.16.0" - }, - "engines": { - "node": ">=0.10" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/SamVerschueren/decode-uri-component#readme", - "keywords": [ - "decode", - "uri", - "component", - "decodeuricomponent", - "components", - "decoder", - "url" - ], - "license": "MIT", - "name": "decode-uri-component", - "repository": { - "type": "git", - "url": "git+https://github.com/SamVerschueren/decode-uri-component.git" - }, - "scripts": { - "coveralls": "nyc report --reporter=text-lcov | coveralls", - "test": "xo && nyc ava" - }, - "version": "0.2.0" -} diff --git a/node_modules/decode-uri-component/readme.md b/node_modules/decode-uri-component/readme.md deleted file mode 100644 index 795c87ff7..000000000 --- a/node_modules/decode-uri-component/readme.md +++ /dev/null @@ -1,70 +0,0 @@ -# decode-uri-component - -[![Build Status](https://travis-ci.org/SamVerschueren/decode-uri-component.svg?branch=master)](https://travis-ci.org/SamVerschueren/decode-uri-component) [![Coverage Status](https://coveralls.io/repos/SamVerschueren/decode-uri-component/badge.svg?branch=master&service=github)](https://coveralls.io/github/SamVerschueren/decode-uri-component?branch=master) - -> A better [decodeURIComponent](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent) - - -## Why? - -- Decodes `+` to a space. -- Converts the [BOM](https://en.wikipedia.org/wiki/Byte_order_mark) to a [replacement character](https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character) `�`. -- Does not throw with invalid encoded input. -- Decodes as much of the string as possible. - - -## Install - -``` -$ npm install --save decode-uri-component -``` - - -## Usage - -```js -const decodeUriComponent = require('decode-uri-component'); - -decodeUriComponent('%25'); -//=> '%' - -decodeUriComponent('%'); -//=> '%' - -decodeUriComponent('st%C3%A5le'); -//=> 'ståle' - -decodeUriComponent('%st%C3%A5le%'); -//=> '%ståle%' - -decodeUriComponent('%%7Bst%C3%A5le%7D%'); -//=> '%{ståle}%' - -decodeUriComponent('%7B%ab%%7C%de%%7D'); -//=> '{%ab%|%de%}' - -decodeUriComponent('%FE%FF'); -//=> '\uFFFD\uFFFD' - -decodeUriComponent('%C2'); -//=> '\uFFFD' - -decodeUriComponent('%C2%B5'); -//=> 'µ' -``` - - -## API - -### decodeUriComponent(encodedURI) - -#### encodedURI - -Type: `string` - -An encoded component of a Uniform Resource Identifier. - - -## License - -MIT © [Sam Verschueren](https://github.com/SamVerschueren) diff --git a/node_modules/default-compare/LICENSE b/node_modules/default-compare/LICENSE deleted file mode 100644 index ffb7ec590..000000000 --- a/node_modules/default-compare/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017, Brian Woodward. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/node_modules/default-compare/README.md b/node_modules/default-compare/README.md deleted file mode 100644 index 7ca91e437..000000000 --- a/node_modules/default-compare/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# default-compare [![NPM version](https://img.shields.io/npm/v/default-compare.svg?style=flat)](https://www.npmjs.com/package/default-compare) [![NPM monthly downloads](https://img.shields.io/npm/dm/default-compare.svg?style=flat)](https://npmjs.org/package/default-compare) [![NPM total downloads](https://img.shields.io/npm/dt/default-compare.svg?style=flat)](https://npmjs.org/package/default-compare) [![Linux Build Status](https://img.shields.io/travis/doowb/default-compare.svg?style=flat&label=Travis)](https://travis-ci.org/doowb/default-compare) [![Windows Build Status](https://img.shields.io/appveyor/ci/doowb/default-compare.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/doowb/default-compare) - -> Basic sort algorithm that has similar behavior to Array.prototype.sort for null and undefined, but also allows sorting by an object property. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save default-compare -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add default-compare -``` - -## Usage - -```js -var defaultCompare = require('default-compare'); -``` - -**basic array** - -```js -var arr = ['c', 'a', undefined, 'b', 'd', null, 'e']; -console.log(arr.sort(defaultCompare)); -//=> ['a', 'b', 'c', 'd', 'e', null, undefined] -``` - -**objects sorted by their "name" property** - -```js -var arr = [ - {name: 'c', title: 'C'}, - {name: 'a', title: 'A'}, - {title: 'G'}, - {name: 'b', title: 'B'}, - {name: 'd', title: 'D'}, - {name: null, title: 'F'}, - {name: 'e', title: 'E'} -]; - -arr.sort(function(a, b) { - return defaultCompare(a, b, 'name'); -}); - -console.log(arr); -//=> [ -//=> {name: 'a', title: 'A'}, -//=> {name: 'b', title: 'B'}, -//=> {name: 'c', title: 'C'}, -//=> {name: 'd', title: 'D'}, -//=> {name: 'e', title: 'E'}, -//=> {name: null, title: 'F'}, -//=> {title: 'G'} -//=> ]; -``` - -## API - -### [defaultCompare](index.js#L16) - -Basic sort algorithm that has similar behavior to `Array.prototype.sort` -for null and undefined, but also allows sorting by an object property. - -**Params** - -* `a` **{Mixed}**: First value to compare. -* `b` **{Mixed}**: Second value to compare. -* `prop` **{String}**: Optional property to use when comparing objects. If specified must be a string. -* `returns` **{Number}**: Returns 1 when `a` should come after `b`, -1 when `a` should come before `b`, and 0 when `a` and `b` are equal. - -## About - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Brian Woodward** - -* [github/doowb](https://github.com/doowb) -* [twitter/doowb](https://twitter.com/doowb) - -### License - -Copyright © 2017, [Brian Woodward](https://doowb.com). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on September 11, 2017._ \ No newline at end of file diff --git a/node_modules/default-compare/index.js b/node_modules/default-compare/index.js deleted file mode 100644 index 6f05fe51d..000000000 --- a/node_modules/default-compare/index.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -var typeOf = require('kind-of'); - -/** - * Basic sort algorithm that has similar behavior to `Array.prototype.sort` - * for null and undefined, but also allows sorting by an object property. - * - * @param {Mixed} `a` First value to compare. - * @param {Mixed} `b` Second value to compare. - * @param {String} `prop` Optional property to use when comparing objects. If specified must be a string. - * @return {Number} Returns 1 when `a` should come after `b`, -1 when `a` should come before `b`, and 0 when `a` and `b` are equal. - * @api public - */ - -module.exports = function defaultCompare(a, b, prop) { - if (prop != null && typeOf(prop) !== 'string') { - throw new TypeError('expected "prop" to be undefined or a string'); - } - - var typeA = typeOf(a); - var typeB = typeOf(b); - - if (prop) { - if (typeA === 'object') { - a = a[prop]; - typeA = typeOf(a); - } - if (typeB === 'object') { - b = b[prop]; - typeB = typeOf(b); - } - } - - if (typeA === 'null') { - return typeB === 'null' ? 0 : (typeB === 'undefined' ? -1 : 1); - } else if (typeA === 'undefined') { - return typeB === 'null' ? 1 : (typeB === 'undefined' ? 0 : 1); - } else if (typeB === 'null' || typeB === 'undefined') { - return -1; - } else { - return a < b ? -1 : (a > b ? 1 : 0); - } -}; diff --git a/node_modules/default-compare/node_modules/kind-of/LICENSE b/node_modules/default-compare/node_modules/kind-of/LICENSE deleted file mode 100644 index 3f2eca18f..000000000 --- a/node_modules/default-compare/node_modules/kind-of/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/default-compare/node_modules/kind-of/README.md b/node_modules/default-compare/node_modules/kind-of/README.md deleted file mode 100644 index 170bf3049..000000000 --- a/node_modules/default-compare/node_modules/kind-of/README.md +++ /dev/null @@ -1,342 +0,0 @@ -# kind-of [![NPM version](https://img.shields.io/npm/v/kind-of.svg?style=flat)](https://www.npmjs.com/package/kind-of) [![NPM monthly downloads](https://img.shields.io/npm/dm/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![NPM total downloads](https://img.shields.io/npm/dt/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/kind-of.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/kind-of) - -> Get the native type of a value. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save kind-of -``` - -Install with [bower](https://bower.io/) - -```sh -$ bower install kind-of --save -``` - -## Why use this? - -1. [it's fast](#benchmarks) | [optimizations](#optimizations) -2. [better type checking](#better-type-checking) - -## Usage - -> es5, browser and es6 ready - -```js -var kindOf = require('kind-of'); - -kindOf(undefined); -//=> 'undefined' - -kindOf(null); -//=> 'null' - -kindOf(true); -//=> 'boolean' - -kindOf(false); -//=> 'boolean' - -kindOf(new Boolean(true)); -//=> 'boolean' - -kindOf(new Buffer('')); -//=> 'buffer' - -kindOf(42); -//=> 'number' - -kindOf(new Number(42)); -//=> 'number' - -kindOf('str'); -//=> 'string' - -kindOf(new String('str')); -//=> 'string' - -kindOf(arguments); -//=> 'arguments' - -kindOf({}); -//=> 'object' - -kindOf(Object.create(null)); -//=> 'object' - -kindOf(new Test()); -//=> 'object' - -kindOf(new Date()); -//=> 'date' - -kindOf([]); -//=> 'array' - -kindOf([1, 2, 3]); -//=> 'array' - -kindOf(new Array()); -//=> 'array' - -kindOf(/foo/); -//=> 'regexp' - -kindOf(new RegExp('foo')); -//=> 'regexp' - -kindOf(function () {}); -//=> 'function' - -kindOf(function * () {}); -//=> 'function' - -kindOf(new Function()); -//=> 'function' - -kindOf(new Map()); -//=> 'map' - -kindOf(new WeakMap()); -//=> 'weakmap' - -kindOf(new Set()); -//=> 'set' - -kindOf(new WeakSet()); -//=> 'weakset' - -kindOf(Symbol('str')); -//=> 'symbol' - -kindOf(new Int8Array()); -//=> 'int8array' - -kindOf(new Uint8Array()); -//=> 'uint8array' - -kindOf(new Uint8ClampedArray()); -//=> 'uint8clampedarray' - -kindOf(new Int16Array()); -//=> 'int16array' - -kindOf(new Uint16Array()); -//=> 'uint16array' - -kindOf(new Int32Array()); -//=> 'int32array' - -kindOf(new Uint32Array()); -//=> 'uint32array' - -kindOf(new Float32Array()); -//=> 'float32array' - -kindOf(new Float64Array()); -//=> 'float64array' -``` - -## Release history - -### v4.0.0 - -**Added** - -* `promise` support - -### v5.0.0 - -**Added** - -* `Set Iterator` and `Map Iterator` support - -**Fixed** - -* Now returns `generatorfunction` for generator functions - -## Benchmarks - -Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of). -Note that performaces is slower for es6 features `Map`, `WeakMap`, `Set` and `WeakSet`. - -```bash -#1: array - current x 23,329,397 ops/sec ±0.82% (94 runs sampled) - lib-type-of x 4,170,273 ops/sec ±0.55% (94 runs sampled) - lib-typeof x 9,686,935 ops/sec ±0.59% (98 runs sampled) - -#2: boolean - current x 27,197,115 ops/sec ±0.85% (94 runs sampled) - lib-type-of x 3,145,791 ops/sec ±0.73% (97 runs sampled) - lib-typeof x 9,199,562 ops/sec ±0.44% (99 runs sampled) - -#3: date - current x 20,190,117 ops/sec ±0.86% (92 runs sampled) - lib-type-of x 5,166,970 ops/sec ±0.74% (94 runs sampled) - lib-typeof x 9,610,821 ops/sec ±0.50% (96 runs sampled) - -#4: function - current x 23,855,460 ops/sec ±0.60% (97 runs sampled) - lib-type-of x 5,667,740 ops/sec ±0.54% (100 runs sampled) - lib-typeof x 10,010,644 ops/sec ±0.44% (100 runs sampled) - -#5: null - current x 27,061,047 ops/sec ±0.97% (96 runs sampled) - lib-type-of x 13,965,573 ops/sec ±0.62% (97 runs sampled) - lib-typeof x 8,460,194 ops/sec ±0.61% (97 runs sampled) - -#6: number - current x 25,075,682 ops/sec ±0.53% (99 runs sampled) - lib-type-of x 2,266,405 ops/sec ±0.41% (98 runs sampled) - lib-typeof x 9,821,481 ops/sec ±0.45% (99 runs sampled) - -#7: object - current x 3,348,980 ops/sec ±0.49% (99 runs sampled) - lib-type-of x 3,245,138 ops/sec ±0.60% (94 runs sampled) - lib-typeof x 9,262,952 ops/sec ±0.59% (99 runs sampled) - -#8: regex - current x 21,284,827 ops/sec ±0.72% (96 runs sampled) - lib-type-of x 4,689,241 ops/sec ±0.43% (100 runs sampled) - lib-typeof x 8,957,593 ops/sec ±0.62% (98 runs sampled) - -#9: string - current x 25,379,234 ops/sec ±0.58% (96 runs sampled) - lib-type-of x 3,635,148 ops/sec ±0.76% (93 runs sampled) - lib-typeof x 9,494,134 ops/sec ±0.49% (98 runs sampled) - -#10: undef - current x 27,459,221 ops/sec ±1.01% (93 runs sampled) - lib-type-of x 14,360,433 ops/sec ±0.52% (99 runs sampled) - lib-typeof x 23,202,868 ops/sec ±0.59% (94 runs sampled) - -``` - -## Optimizations - -In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library: - -1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot. -2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it. -3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'` -4. There is no reason to make the code in a microlib as terse as possible, just to win points for making it shorter. It's always better to favor performant code over terse code. You will always only be using a single `require()` statement to use the library anyway, regardless of how the code is written. - -## Better type checking - -kind-of is more correct than other type checking libs I've looked at. For example, here are some differing results from other popular libs: - -### [typeof](https://github.com/CodingFu/typeof) lib - -Incorrectly tests instances of custom constructors (pretty common): - -```js -var typeOf = require('typeof'); -function Test() {} -console.log(typeOf(new Test())); -//=> 'test' -``` - -Returns `object` instead of `arguments`: - -```js -function foo() { - console.log(typeOf(arguments)) //=> 'object' -} -foo(); -``` - -### [type-of](https://github.com/ForbesLindesay/type-of) lib - -Incorrectly returns `object` for generator functions, buffers, `Map`, `Set`, `WeakMap` and `WeakSet`: - -```js -function * foo() {} -console.log(typeOf(foo)); -//=> 'object' -console.log(typeOf(new Buffer(''))); -//=> 'object' -console.log(typeOf(new Map())); -//=> 'object' -console.log(typeOf(new Set())); -//=> 'object' -console.log(typeOf(new WeakMap())); -//=> 'object' -console.log(typeOf(new WeakSet())); -//=> 'object' -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 82 | [jonschlinkert](https://github.com/jonschlinkert) | -| 3 | [aretecode](https://github.com/aretecode) | -| 2 | [miguelmota](https://github.com/miguelmota) | -| 1 | [dtothefp](https://github.com/dtothefp) | -| 1 | [ksheedlo](https://github.com/ksheedlo) | -| 1 | [pdehaan](https://github.com/pdehaan) | -| 1 | [laggingreflex](https://github.com/laggingreflex) | -| 1 | [charlike](https://github.com/charlike) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on October 13, 2017._ \ No newline at end of file diff --git a/node_modules/default-compare/node_modules/kind-of/index.js b/node_modules/default-compare/node_modules/kind-of/index.js deleted file mode 100644 index fc5cde96e..000000000 --- a/node_modules/default-compare/node_modules/kind-of/index.js +++ /dev/null @@ -1,147 +0,0 @@ -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - var type = typeof val; - - // primitivies - if (type === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (type === 'string' || val instanceof String) { - return 'string'; - } - if (type === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (type === 'function' || val instanceof Function) { - if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') { - return 'generatorfunction'; - } - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - if (type === '[object Promise]') { - return 'promise'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - if (type === '[object Map Iterator]') { - return 'mapiterator'; - } - if (type === '[object Set Iterator]') { - return 'setiterator'; - } - if (type === '[object String Iterator]') { - return 'stringiterator'; - } - if (type === '[object Array Iterator]') { - return 'arrayiterator'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - -/** - * If you need to support Safari 5-7 (8-10 yr-old browser), - * take a look at https://github.com/feross/is-buffer - */ - -function isBuffer(val) { - return val.constructor - && typeof val.constructor.isBuffer === 'function' - && val.constructor.isBuffer(val); -} diff --git a/node_modules/default-compare/node_modules/kind-of/package.json b/node_modules/default-compare/node_modules/kind-of/package.json deleted file mode 100644 index f5668c213..000000000 --- a/node_modules/default-compare/node_modules/kind-of/package.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "_from": "kind-of@^5.0.2", - "_id": "kind-of@5.1.0", - "_inBundle": false, - "_integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "_location": "/default-compare/kind-of", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "kind-of@^5.0.2", - "name": "kind-of", - "escapedName": "kind-of", - "rawSpec": "^5.0.2", - "saveSpec": null, - "fetchSpec": "^5.0.2" - }, - "_requiredBy": [ - "/default-compare" - ], - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "_shasum": "729c91e2d857b7a419a1f9aa65685c4c33f5845d", - "_spec": "kind-of@^5.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\default-compare", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/kind-of/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "David Fox-Powell", - "url": "https://dtothefp.github.io/me" - }, - { - "name": "James", - "url": "https://twitter.com/aretecode" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Ken Sheedlo", - "url": "kensheedlo.com" - }, - { - "name": "laggingreflex", - "url": "https://github.com/laggingreflex" - }, - { - "name": "Miguel Mota", - "url": "https://miguelmota.com" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - }, - { - "name": "tunnckoCore", - "url": "https://i.am.charlike.online" - } - ], - "deprecated": false, - "description": "Get the native type of a value.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "benchmarked": "^1.1.1", - "browserify": "^14.4.0", - "gulp-format-md": "^0.1.12", - "matched": "^0.4.4", - "mocha": "^3.4.2", - "type-of": "^2.0.1", - "typeof": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/kind-of", - "keywords": [ - "arguments", - "array", - "boolean", - "check", - "date", - "function", - "is", - "is-type", - "is-type-of", - "kind", - "kind-of", - "number", - "object", - "of", - "regexp", - "string", - "test", - "type", - "type-of", - "typeof", - "types" - ], - "license": "MIT", - "main": "index.js", - "name": "kind-of", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/kind-of.git" - }, - "scripts": { - "prepublish": "browserify -o browser.js -e index.js -s index --bare", - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-glob", - "is-number", - "is-primitive" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "type-of", - "typeof", - "verb" - ] - }, - "version": "5.1.0" -} diff --git a/node_modules/default-compare/package.json b/node_modules/default-compare/package.json deleted file mode 100644 index 5fa81f329..000000000 --- a/node_modules/default-compare/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_from": "default-compare@^1.0.0", - "_id": "default-compare@1.0.0", - "_inBundle": false, - "_integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "_location": "/default-compare", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "default-compare@^1.0.0", - "name": "default-compare", - "escapedName": "default-compare", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/array-sort" - ], - "_resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "_shasum": "cb61131844ad84d84788fb68fd01681ca7781a2f", - "_spec": "default-compare@^1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\array-sort", - "author": { - "name": "Brian Woodward", - "url": "https://doowb.com" - }, - "bugs": { - "url": "https://github.com/doowb/default-compare/issues" - }, - "bundleDependencies": false, - "dependencies": { - "kind-of": "^5.0.2" - }, - "deprecated": false, - "description": "Basic sort algorithm that has similar behavior to Array.prototype.sort for null and undefined, but also allows sorting by an object property.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.2" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/doowb/default-compare", - "keywords": [ - "compare", - "default" - ], - "license": "MIT", - "main": "index.js", - "name": "default-compare", - "repository": { - "type": "git", - "url": "git+https://github.com/doowb/default-compare.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/define-property/CHANGELOG.md b/node_modules/define-property/CHANGELOG.md deleted file mode 100644 index 901c8aaee..000000000 --- a/node_modules/define-property/CHANGELOG.md +++ /dev/null @@ -1,82 +0,0 @@ -# Release history - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). - -
- Guiding Principles - -- Changelogs are for humans, not machines. -- There should be an entry for every single version. -- The same types of changes should be grouped. -- Versions and sections should be linkable. -- The latest version comes first. -- The release date of each versions is displayed. -- Mention whether you follow Semantic Versioning. - -
- -
- Types of changes - -Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_): - -- `Added` for new features. -- `Changed` for changes in existing functionality. -- `Deprecated` for soon-to-be removed features. -- `Removed` for now removed features. -- `Fixed` for any bug fixes. -- `Security` in case of vulnerabilities. - -
- -## [2.0.0] - 2017-04-20 - -### Changed - -- Now supports data descriptors in addition to accessor descriptors. -- Now uses [Reflect.defineProperty][reflect] when available, otherwise falls back to [Object.defineProperty][object]. - -## [1.0.0] - 2017-04-20 - -- stable release - -## [0.2.5] - 2015-08-31 - -- use is-descriptor - -## [0.2.3] - 2015-08-29 - -- check keys length - -## [0.2.2] - 2015-08-27 - -- ensure val is an object - -## [0.2.1] - 2015-08-27 - -- support functions - -## [0.2.0] - 2015-08-27 - -- support get/set -- update docs - -## [0.1.0] - 2015-08-12 - -- first commit - -[2.0.0]: https://github.com/jonschlinkert/define-property/compare/1.0.0...2.0.0 -[1.0.0]: https://github.com/jonschlinkert/define-property/compare/0.2.5...1.0.0 -[0.2.5]: https://github.com/jonschlinkert/define-property/compare/0.2.3...0.2.5 -[0.2.3]: https://github.com/jonschlinkert/define-property/compare/0.2.2...0.2.3 -[0.2.2]: https://github.com/jonschlinkert/define-property/compare/0.2.1...0.2.2 -[0.2.1]: https://github.com/jonschlinkert/define-property/compare/0.2.0...0.2.1 -[0.2.0]: https://github.com/jonschlinkert/define-property/compare/0.1.3...0.2.0 - -[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog - -[object]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty -[reflect]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty diff --git a/node_modules/define-property/LICENSE b/node_modules/define-property/LICENSE deleted file mode 100644 index f8de06305..000000000 --- a/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2018, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/define-property/README.md b/node_modules/define-property/README.md deleted file mode 100644 index f1ee8f92e..000000000 --- a/node_modules/define-property/README.md +++ /dev/null @@ -1,117 +0,0 @@ -# define-property [![NPM version](https://img.shields.io/npm/v/define-property.svg?style=flat)](https://www.npmjs.com/package/define-property) [![NPM monthly downloads](https://img.shields.io/npm/dm/define-property.svg?style=flat)](https://npmjs.org/package/define-property) [![NPM total downloads](https://img.shields.io/npm/dt/define-property.svg?style=flat)](https://npmjs.org/package/define-property) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/define-property.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/define-property) - -> Define a non-enumerable property on an object. Uses Reflect.defineProperty when available, otherwise Object.defineProperty. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save define-property -``` - -## Release history - -See [the CHANGELOG](changelog.md) for updates. - -## Usage - -**Params** - -* `object`: The object on which to define the property. -* `key`: The name of the property to be defined or modified. -* `value`: The value or descriptor of the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -// by default, defined properties are non-enumberable -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**defining setters/getters** - -Pass the same properties you would if using [Object.defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) or [Reflect.defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty). - -```js -define(obj, 'foo', { - set: function() {}, - get: function() {} -}); -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.") -* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.") -* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep "Recursively merge values in a javascript object.") -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 28 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [doowb](https://github.com/doowb) | - -### Author - -**Jon Schlinkert** - -* Connect with me on [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert) -* Follow me on [github/jonschlinkert](https://github.com/jonschlinkert) -* Follow me on [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on January 25, 2018._ \ No newline at end of file diff --git a/node_modules/define-property/index.js b/node_modules/define-property/index.js deleted file mode 100644 index 0efa0a9e6..000000000 --- a/node_modules/define-property/index.js +++ /dev/null @@ -1,38 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var isobject = require('isobject'); -var isDescriptor = require('is-descriptor'); -var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) - ? Reflect.defineProperty - : Object.defineProperty; - -module.exports = function defineProperty(obj, key, val) { - if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) { - throw new TypeError('expected an object, function, or array'); - } - - if (typeof key !== 'string') { - throw new TypeError('expected "key" to be a string'); - } - - if (isDescriptor(val)) { - define(obj, key, val); - return obj; - } - - define(obj, key, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); - - return obj; -}; diff --git a/node_modules/define-property/node_modules/is-accessor-descriptor/LICENSE b/node_modules/define-property/node_modules/is-accessor-descriptor/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/define-property/node_modules/is-accessor-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/define-property/node_modules/is-accessor-descriptor/README.md b/node_modules/define-property/node_modules/is-accessor-descriptor/README.md deleted file mode 100644 index d198e1f05..000000000 --- a/node_modules/define-property/node_modules/is-accessor-descriptor/README.md +++ /dev/null @@ -1,144 +0,0 @@ -# is-accessor-descriptor [![NPM version](https://img.shields.io/npm/v/is-accessor-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-accessor-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-accessor-descriptor.svg?style=flat)](https://npmjs.org/package/is-accessor-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-accessor-descriptor.svg?style=flat)](https://npmjs.org/package/is-accessor-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-accessor-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-accessor-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-accessor-descriptor -``` - -## Usage - -```js -var isAccessor = require('is-accessor-descriptor'); - -isAccessor({get: function() {}}); -//=> true -``` - -You may also pass an object and property name to check if the property is an accessor: - -```js -isAccessor(foo, 'bar'); -``` - -## Examples - -`false` when not an object - -```js -isAccessor('a') -isAccessor(null) -isAccessor([]) -//=> false -``` - -`true` when the object has valid properties - -and the properties all have the correct JavaScript types: - -```js -isAccessor({get: noop, set: noop}) -isAccessor({get: noop}) -isAccessor({set: noop}) -//=> true -``` - -`false` when the object has invalid properties - -```js -isAccessor({get: noop, set: noop, bar: 'baz'}) -isAccessor({get: noop, writable: true}) -isAccessor({get: noop, value: true}) -//=> false -``` - -`false` when an accessor is not a function - -```js -isAccessor({get: noop, set: 'baz'}) -isAccessor({get: 'foo', set: noop}) -isAccessor({get: 'foo', bar: 'baz'}) -isAccessor({get: 'foo', set: 'baz'}) -//=> false -``` - -`false` when a value is not the correct type - -```js -isAccessor({get: noop, set: noop, enumerable: 'foo'}) -isAccessor({set: noop, configurable: 'foo'}) -isAccessor({get: noop, configurable: 'foo'}) -//=> false -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 22 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [realityking](https://github.com/realityking) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._ \ No newline at end of file diff --git a/node_modules/define-property/node_modules/is-accessor-descriptor/index.js b/node_modules/define-property/node_modules/is-accessor-descriptor/index.js deleted file mode 100644 index d2e6fe8b9..000000000 --- a/node_modules/define-property/node_modules/is-accessor-descriptor/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - * is-accessor-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -// accessor descriptor properties -var accessor = { - get: 'function', - set: 'function', - configurable: 'boolean', - enumerable: 'boolean' -}; - -function isAccessorDescriptor(obj, prop) { - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (typeOf(obj) !== 'object') { - return false; - } - - if (has(obj, 'value') || has(obj, 'writable')) { - return false; - } - - if (!has(obj, 'get') || typeof obj.get !== 'function') { - return false; - } - - // tldr: it's valid to have "set" be undefined - // "set" might be undefined if `Object.getOwnPropertyDescriptor` - // was used to get the value, and only `get` was defined by the user - if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { - return false; - } - - for (var key in obj) { - if (!accessor.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === accessor[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -} - -function has(obj, key) { - return {}.hasOwnProperty.call(obj, key); -} - -/** - * Expose `isAccessorDescriptor` - */ - -module.exports = isAccessorDescriptor; diff --git a/node_modules/define-property/node_modules/is-accessor-descriptor/package.json b/node_modules/define-property/node_modules/is-accessor-descriptor/package.json deleted file mode 100644 index 30d36c0c0..000000000 --- a/node_modules/define-property/node_modules/is-accessor-descriptor/package.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "_args": [ - [ - "is-accessor-descriptor@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-accessor-descriptor@1.0.0", - "_id": "is-accessor-descriptor@1.0.0", - "_inBundle": false, - "_integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "_location": "/define-property/is-accessor-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-accessor-descriptor@1.0.0", - "name": "is-accessor-descriptor", - "escapedName": "is-accessor-descriptor", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/define-property/is-descriptor" - ], - "_resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Rouven Weßling", - "url": "www.rouvenwessling.de" - } - ], - "dependencies": { - "kind-of": "^6.0.0" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-accessor-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-accessor-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "is-plain-object", - "isobject" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/define-property/node_modules/is-data-descriptor/LICENSE b/node_modules/define-property/node_modules/is-data-descriptor/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/define-property/node_modules/is-data-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/define-property/node_modules/is-data-descriptor/README.md b/node_modules/define-property/node_modules/is-data-descriptor/README.md deleted file mode 100644 index 42b071446..000000000 --- a/node_modules/define-property/node_modules/is-data-descriptor/README.md +++ /dev/null @@ -1,161 +0,0 @@ -# is-data-descriptor [![NPM version](https://img.shields.io/npm/v/is-data-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-data-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-data-descriptor.svg?style=flat)](https://npmjs.org/package/is-data-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-data-descriptor.svg?style=flat)](https://npmjs.org/package/is-data-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-data-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-data-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript data descriptor. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-data-descriptor -``` - -## Usage - -```js -var isDataDesc = require('is-data-descriptor'); -``` - -## Examples - -`true` when the descriptor has valid properties with valid values. - -```js -// `value` can be anything -isDataDesc({value: 'foo'}) -isDataDesc({value: function() {}}) -isDataDesc({value: true}) -//=> true -``` - -`false` when not an object - -```js -isDataDesc('a') -//=> false -isDataDesc(null) -//=> false -isDataDesc([]) -//=> false -``` - -`false` when the object has invalid properties - -```js -isDataDesc({value: 'foo', bar: 'baz'}) -//=> false -isDataDesc({value: 'foo', bar: 'baz'}) -//=> false -isDataDesc({value: 'foo', get: function(){}}) -//=> false -isDataDesc({get: function(){}, value: 'foo'}) -//=> false -``` - -`false` when a value is not the correct type - -```js -isDataDesc({value: 'foo', enumerable: 'foo'}) -//=> false -isDataDesc({value: 'foo', configurable: 'foo'}) -//=> false -isDataDesc({value: 'foo', writable: 'foo'}) -//=> false -``` - -## Valid properties - -The only valid data descriptor properties are the following: - -* `configurable` (required) -* `enumerable` (required) -* `value` (optional) -* `writable` (optional) - -To be a valid data descriptor, either `value` or `writable` must be defined. - -**Invalid properties** - -A descriptor may have additional _invalid_ properties (an error will **not** be thrown). - -```js -var foo = {}; - -Object.defineProperty(foo, 'bar', { - enumerable: true, - whatever: 'blah', // invalid, but doesn't cause an error - get: function() { - return 'baz'; - } -}); - -console.log(foo.bar); -//=> 'baz' -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 21 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [realityking](https://github.com/realityking) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._ \ No newline at end of file diff --git a/node_modules/define-property/node_modules/is-data-descriptor/index.js b/node_modules/define-property/node_modules/is-data-descriptor/index.js deleted file mode 100644 index cfeae3619..000000000 --- a/node_modules/define-property/node_modules/is-data-descriptor/index.js +++ /dev/null @@ -1,49 +0,0 @@ -/*! - * is-data-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -module.exports = function isDataDescriptor(obj, prop) { - // data descriptor properties - var data = { - configurable: 'boolean', - enumerable: 'boolean', - writable: 'boolean' - }; - - if (typeOf(obj) !== 'object') { - return false; - } - - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (!('value' in obj) && !('writable' in obj)) { - return false; - } - - for (var key in obj) { - if (key === 'value') continue; - - if (!data.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === data[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -}; diff --git a/node_modules/define-property/node_modules/is-data-descriptor/package.json b/node_modules/define-property/node_modules/is-data-descriptor/package.json deleted file mode 100644 index a2c98b64e..000000000 --- a/node_modules/define-property/node_modules/is-data-descriptor/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_args": [ - [ - "is-data-descriptor@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-data-descriptor@1.0.0", - "_id": "is-data-descriptor@1.0.0", - "_inBundle": false, - "_integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "_location": "/define-property/is-data-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-data-descriptor@1.0.0", - "name": "is-data-descriptor", - "escapedName": "is-data-descriptor", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/define-property/is-descriptor" - ], - "_resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-data-descriptor/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Rouven Weßling", - "url": "www.rouvenwessling.de" - } - ], - "dependencies": { - "kind-of": "^6.0.0" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-data-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-data-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-data-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "isobject" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/define-property/node_modules/is-descriptor/LICENSE b/node_modules/define-property/node_modules/is-descriptor/LICENSE deleted file mode 100644 index c0d7f1362..000000000 --- a/node_modules/define-property/node_modules/is-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/define-property/node_modules/is-descriptor/README.md b/node_modules/define-property/node_modules/is-descriptor/README.md deleted file mode 100644 index 658e53301..000000000 --- a/node_modules/define-property/node_modules/is-descriptor/README.md +++ /dev/null @@ -1,193 +0,0 @@ -# is-descriptor [![NPM version](https://img.shields.io/npm/v/is-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-descriptor.svg?style=flat)](https://npmjs.org/package/is-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-descriptor.svg?style=flat)](https://npmjs.org/package/is-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-descriptor -``` - -## Usage - -```js -var isDescriptor = require('is-descriptor'); - -isDescriptor({value: 'foo'}) -//=> true -isDescriptor({get: function(){}, set: function(){}}) -//=> true -isDescriptor({get: 'foo', set: function(){}}) -//=> false -``` - -You may also check for a descriptor by passing an object as the first argument and property name (`string`) as the second argument. - -```js -var obj = {}; -obj.foo = 'abc'; - -Object.defineProperty(obj, 'bar', { - value: 'xyz' -}); - -isDescriptor(obj, 'foo'); -//=> true -isDescriptor(obj, 'bar'); -//=> true -``` - -## Examples - -### value type - -`false` when not an object - -```js -isDescriptor('a'); -//=> false -isDescriptor(null); -//=> false -isDescriptor([]); -//=> false -``` - -### data descriptor - -`true` when the object has valid properties with valid values. - -```js -isDescriptor({value: 'foo'}); -//=> true -isDescriptor({value: noop}); -//=> true -``` - -`false` when the object has invalid properties - -```js -isDescriptor({value: 'foo', bar: 'baz'}); -//=> false -isDescriptor({value: 'foo', bar: 'baz'}); -//=> false -isDescriptor({value: 'foo', get: noop}); -//=> false -isDescriptor({get: noop, value: noop}); -//=> false -``` - -`false` when a value is not the correct type - -```js -isDescriptor({value: 'foo', enumerable: 'foo'}); -//=> false -isDescriptor({value: 'foo', configurable: 'foo'}); -//=> false -isDescriptor({value: 'foo', writable: 'foo'}); -//=> false -``` - -### accessor descriptor - -`true` when the object has valid properties with valid values. - -```js -isDescriptor({get: noop, set: noop}); -//=> true -isDescriptor({get: noop}); -//=> true -isDescriptor({set: noop}); -//=> true -``` - -`false` when the object has invalid properties - -```js -isDescriptor({get: noop, set: noop, bar: 'baz'}); -//=> false -isDescriptor({get: noop, writable: true}); -//=> false -isDescriptor({get: noop, value: true}); -//=> false -``` - -`false` when an accessor is not a function - -```js -isDescriptor({get: noop, set: 'baz'}); -//=> false -isDescriptor({get: 'foo', set: noop}); -//=> false -isDescriptor({get: 'foo', bar: 'baz'}); -//=> false -isDescriptor({get: 'foo', set: 'baz'}); -//=> false -``` - -`false` when a value is not the correct type - -```js -isDescriptor({get: noop, set: noop, enumerable: 'foo'}); -//=> false -isDescriptor({set: noop, configurable: 'foo'}); -//=> false -isDescriptor({get: noop, configurable: 'foo'}); -//=> false -``` - -## About - -### Related projects - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 24 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [doowb](https://github.com/doowb) | -| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 22, 2017._ \ No newline at end of file diff --git a/node_modules/define-property/node_modules/is-descriptor/index.js b/node_modules/define-property/node_modules/is-descriptor/index.js deleted file mode 100644 index c9b91d762..000000000 --- a/node_modules/define-property/node_modules/is-descriptor/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * is-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); -var isAccessor = require('is-accessor-descriptor'); -var isData = require('is-data-descriptor'); - -module.exports = function isDescriptor(obj, key) { - if (typeOf(obj) !== 'object') { - return false; - } - if ('get' in obj) { - return isAccessor(obj, key); - } - return isData(obj, key); -}; diff --git a/node_modules/define-property/node_modules/is-descriptor/package.json b/node_modules/define-property/node_modules/is-descriptor/package.json deleted file mode 100644 index ac77558d8..000000000 --- a/node_modules/define-property/node_modules/is-descriptor/package.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "_args": [ - [ - "is-descriptor@1.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-descriptor@1.0.2", - "_id": "is-descriptor@1.0.2", - "_inBundle": false, - "_integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "_location": "/define-property/is-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-descriptor@1.0.2", - "name": "is-descriptor", - "escapedName": "is-descriptor", - "rawSpec": "1.0.2", - "saveSpec": null, - "fetchSpec": "1.0.2" - }, - "_requiredBy": [ - "/define-property" - ], - "_resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "_spec": "1.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-descriptor/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - } - ], - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "isobject" - ] - }, - "plugins": [ - "gulp-format-md" - ], - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.2" -} diff --git a/node_modules/define-property/package.json b/node_modules/define-property/package.json deleted file mode 100644 index f0c7ad3f8..000000000 --- a/node_modules/define-property/package.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "_args": [ - [ - "define-property@2.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "define-property@2.0.2", - "_id": "define-property@2.0.2", - "_inBundle": false, - "_integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "_location": "/define-property", - "_phantomChildren": { - "kind-of": "6.0.3" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "define-property@2.0.2", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "2.0.2", - "saveSpec": null, - "fetchSpec": "2.0.2" - }, - "_requiredBy": [ - "/micromatch", - "/nanomatch", - "/to-regex" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "_spec": "2.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - } - ], - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "description": "Define a non-enumerable property on an object. Uses Reflect.defineProperty when available, otherwise Object.defineProperty.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "assign-deep", - "extend-shallow", - "merge-deep", - "mixin-deep" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "2.0.2" -} diff --git a/node_modules/deprecation/LICENSE b/node_modules/deprecation/LICENSE deleted file mode 100644 index 1683b5838..000000000 --- a/node_modules/deprecation/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Gregor Martynus and contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/deprecation/README.md b/node_modules/deprecation/README.md deleted file mode 100644 index 648809d5d..000000000 --- a/node_modules/deprecation/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# deprecation - -> Log a deprecation message with stack - -![build](https://action-badges.now.sh/gr2m/deprecation) - -## Usage - - - - - - -
-Browsers - - -Load `deprecation` directly from [cdn.pika.dev](https://cdn.pika.dev) - -```html - -``` - -
-Node - - -Install with `npm install deprecation` - -```js -const { Deprecation } = require("deprecation"); -// or: import { Deprecation } from "deprecation"; -``` - -
- -```js -function foo() { - bar(); -} - -function bar() { - baz(); -} - -function baz() { - console.warn(new Deprecation("[my-lib] foo() is deprecated, use bar()")); -} - -foo(); -// { Deprecation: [my-lib] foo() is deprecated, use bar() -// at baz (/path/to/file.js:12:15) -// at bar (/path/to/file.js:8:3) -// at foo (/path/to/file.js:4:3) -``` - -To log a deprecation message only once, you can use the [once](https://www.npmjs.com/package/once) module. - -```js -const Deprecation = require("deprecation"); -const once = require("once"); - -const deprecateFoo = once(console.warn); - -function foo() { - deprecateFoo(new Deprecation("[my-lib] foo() is deprecated, use bar()")); -} - -foo(); -foo(); // logs nothing -``` - -## License - -[ISC](LICENSE) diff --git a/node_modules/deprecation/dist-node/index.js b/node_modules/deprecation/dist-node/index.js deleted file mode 100644 index 9da177570..000000000 --- a/node_modules/deprecation/dist-node/index.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -class Deprecation extends Error { - constructor(message) { - super(message); // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = 'Deprecation'; - } - -} - -exports.Deprecation = Deprecation; diff --git a/node_modules/deprecation/dist-src/index.js b/node_modules/deprecation/dist-src/index.js deleted file mode 100644 index 7950fdc06..000000000 --- a/node_modules/deprecation/dist-src/index.js +++ /dev/null @@ -1,14 +0,0 @@ -export class Deprecation extends Error { - constructor(message) { - super(message); // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = 'Deprecation'; - } - -} \ No newline at end of file diff --git a/node_modules/deprecation/dist-types/index.d.ts b/node_modules/deprecation/dist-types/index.d.ts deleted file mode 100644 index e3ae7ad42..000000000 --- a/node_modules/deprecation/dist-types/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export class Deprecation extends Error { - name: "Deprecation"; -} diff --git a/node_modules/deprecation/dist-web/index.js b/node_modules/deprecation/dist-web/index.js deleted file mode 100644 index c6bbda759..000000000 --- a/node_modules/deprecation/dist-web/index.js +++ /dev/null @@ -1,16 +0,0 @@ -class Deprecation extends Error { - constructor(message) { - super(message); // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = 'Deprecation'; - } - -} - -export { Deprecation }; diff --git a/node_modules/deprecation/package.json b/node_modules/deprecation/package.json deleted file mode 100644 index 062c4c292..000000000 --- a/node_modules/deprecation/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "_from": "deprecation@^2.0.0", - "_id": "deprecation@2.3.1", - "_inBundle": false, - "_integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "_location": "/deprecation", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "deprecation@^2.0.0", - "name": "deprecation", - "escapedName": "deprecation", - "rawSpec": "^2.0.0", - "saveSpec": null, - "fetchSpec": "^2.0.0" - }, - "_requiredBy": [ - "/@octokit/plugin-rest-endpoint-methods", - "/@octokit/request", - "/@octokit/request-error" - ], - "_resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "_shasum": "6368cbdb40abf3373b525ac87e4a260c3a700919", - "_spec": "deprecation@^2.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\request", - "bugs": { - "url": "https://github.com/gr2m/deprecation/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "Log a deprecation message with stack", - "devDependencies": { - "@pika/pack": "^0.3.7", - "@pika/plugin-build-node": "^0.4.0", - "@pika/plugin-build-types": "^0.4.0", - "@pika/plugin-build-web": "^0.4.0", - "@pika/plugin-standard-pkg": "^0.4.0", - "semantic-release": "^15.13.3" - }, - "esnext": "dist-src/index.js", - "files": [ - "dist-*/", - "bin/" - ], - "homepage": "https://github.com/gr2m/deprecation#readme", - "keywords": [ - "deprecate", - "deprecated", - "deprecation" - ], - "license": "ISC", - "main": "dist-node/index.js", - "module": "dist-web/index.js", - "name": "deprecation", - "pika": true, - "repository": { - "type": "git", - "url": "git+https://github.com/gr2m/deprecation.git" - }, - "sideEffects": false, - "types": "dist-types/index.d.ts", - "version": "2.3.1" -} diff --git a/node_modules/ent/.npmignore b/node_modules/ent/.npmignore deleted file mode 100644 index 378eac25d..000000000 --- a/node_modules/ent/.npmignore +++ /dev/null @@ -1 +0,0 @@ -build diff --git a/node_modules/ent/.travis.yml b/node_modules/ent/.travis.yml deleted file mode 100644 index 895dbd362..000000000 --- a/node_modules/ent/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/node_modules/ent/LICENSE b/node_modules/ent/LICENSE deleted file mode 100644 index ee27ba4b4..000000000 --- a/node_modules/ent/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/ent/decode.js b/node_modules/ent/decode.js deleted file mode 100644 index fee2e907d..000000000 --- a/node_modules/ent/decode.js +++ /dev/null @@ -1,32 +0,0 @@ -var punycode = require('punycode'); -var entities = require('./entities.json'); - -module.exports = decode; - -function decode (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a String'); - } - - return str.replace(/&(#?[^;\W]+;?)/g, function (_, match) { - var m; - if (m = /^#(\d+);?$/.exec(match)) { - return punycode.ucs2.encode([ parseInt(m[1], 10) ]); - } else if (m = /^#[Xx]([A-Fa-f0-9]+);?/.exec(match)) { - return punycode.ucs2.encode([ parseInt(m[1], 16) ]); - } else { - // named entity - var hasSemi = /;$/.test(match); - var withoutSemi = hasSemi ? match.replace(/;$/, '') : match; - var target = entities[withoutSemi] || (hasSemi && entities[match]); - - if (typeof target === 'number') { - return punycode.ucs2.encode([ target ]); - } else if (typeof target === 'string') { - return target; - } else { - return '&' + match; - } - } - }); -} diff --git a/node_modules/ent/encode.js b/node_modules/ent/encode.js deleted file mode 100644 index f48764c81..000000000 --- a/node_modules/ent/encode.js +++ /dev/null @@ -1,39 +0,0 @@ -var punycode = require('punycode'); -var revEntities = require('./reversed.json'); - -module.exports = encode; - -function encode (str, opts) { - if (typeof str !== 'string') { - throw new TypeError('Expected a String'); - } - if (!opts) opts = {}; - - var numeric = true; - if (opts.named) numeric = false; - if (opts.numeric !== undefined) numeric = opts.numeric; - - var special = opts.special || { - '"': true, "'": true, - '<': true, '>': true, - '&': true - }; - - var codePoints = punycode.ucs2.decode(str); - var chars = []; - for (var i = 0; i < codePoints.length; i++) { - var cc = codePoints[i]; - var c = punycode.ucs2.encode([ cc ]); - var e = revEntities[cc]; - if (e && (cc >= 127 || special[c]) && !numeric) { - chars.push('&' + (/;$/.test(e) ? e : e + ';')); - } - else if (cc < 32 || cc >= 127 || special[c]) { - chars.push('&#' + cc + ';'); - } - else { - chars.push(c); - } - } - return chars.join(''); -} diff --git a/node_modules/ent/entities.json b/node_modules/ent/entities.json deleted file mode 100644 index 69e4cf09d..000000000 --- a/node_modules/ent/entities.json +++ /dev/null @@ -1,2233 +0,0 @@ -{ - "Aacute;": "\u00C1", - "Aacute": "\u00C1", - "aacute;": "\u00E1", - "aacute": "\u00E1", - "Abreve;": "\u0102", - "abreve;": "\u0103", - "ac;": "\u223E", - "acd;": "\u223F", - "acE;": "\u223E\u0333", - "Acirc;": "\u00C2", - "Acirc": "\u00C2", - "acirc;": "\u00E2", - "acirc": "\u00E2", - "acute;": "\u00B4", - "acute": "\u00B4", - "Acy;": "\u0410", - "acy;": "\u0430", - "AElig;": "\u00C6", - "AElig": "\u00C6", - "aelig;": "\u00E6", - "aelig": "\u00E6", - "af;": "\u2061", - "Afr;": "\uD835\uDD04", - "afr;": "\uD835\uDD1E", - "Agrave;": "\u00C0", - "Agrave": "\u00C0", - "agrave;": "\u00E0", - "agrave": "\u00E0", - "alefsym;": "\u2135", - "aleph;": "\u2135", - "Alpha;": "\u0391", - "alpha;": "\u03B1", - "Amacr;": "\u0100", - "amacr;": "\u0101", - "amalg;": "\u2A3F", - "AMP;": "&", - "AMP": "&", - "amp;": "&", - "amp": "&", - "And;": "\u2A53", - "and;": "\u2227", - "andand;": "\u2A55", - "andd;": "\u2A5C", - "andslope;": "\u2A58", - "andv;": "\u2A5A", - "ang;": "\u2220", - "ange;": "\u29A4", - "angle;": "\u2220", - "angmsd;": "\u2221", - "angmsdaa;": "\u29A8", - "angmsdab;": "\u29A9", - "angmsdac;": "\u29AA", - "angmsdad;": "\u29AB", - "angmsdae;": "\u29AC", - "angmsdaf;": "\u29AD", - "angmsdag;": "\u29AE", - "angmsdah;": "\u29AF", - "angrt;": "\u221F", - "angrtvb;": "\u22BE", - "angrtvbd;": "\u299D", - "angsph;": "\u2222", - "angst;": "\u00C5", - "angzarr;": "\u237C", - "Aogon;": "\u0104", - "aogon;": "\u0105", - "Aopf;": "\uD835\uDD38", - "aopf;": "\uD835\uDD52", - "ap;": "\u2248", - "apacir;": "\u2A6F", - "apE;": "\u2A70", - "ape;": "\u224A", - "apid;": "\u224B", - "apos;": "'", - "ApplyFunction;": "\u2061", - "approx;": "\u2248", - "approxeq;": "\u224A", - "Aring;": "\u00C5", - "Aring": "\u00C5", - "aring;": "\u00E5", - "aring": "\u00E5", - "Ascr;": "\uD835\uDC9C", - "ascr;": "\uD835\uDCB6", - "Assign;": "\u2254", - "ast;": "*", - "asymp;": "\u2248", - "asympeq;": "\u224D", - "Atilde;": "\u00C3", - "Atilde": "\u00C3", - "atilde;": "\u00E3", - "atilde": "\u00E3", - "Auml;": "\u00C4", - "Auml": "\u00C4", - "auml;": "\u00E4", - "auml": "\u00E4", - "awconint;": "\u2233", - "awint;": "\u2A11", - "backcong;": "\u224C", - "backepsilon;": "\u03F6", - "backprime;": "\u2035", - "backsim;": "\u223D", - "backsimeq;": "\u22CD", - "Backslash;": "\u2216", - "Barv;": "\u2AE7", - "barvee;": "\u22BD", - "Barwed;": "\u2306", - "barwed;": "\u2305", - "barwedge;": "\u2305", - "bbrk;": "\u23B5", - "bbrktbrk;": "\u23B6", - "bcong;": "\u224C", - "Bcy;": "\u0411", - "bcy;": "\u0431", - "bdquo;": "\u201E", - "becaus;": "\u2235", - "Because;": "\u2235", - "because;": "\u2235", - "bemptyv;": "\u29B0", - "bepsi;": "\u03F6", - "bernou;": "\u212C", - "Bernoullis;": "\u212C", - "Beta;": "\u0392", - "beta;": "\u03B2", - "beth;": "\u2136", - "between;": "\u226C", - "Bfr;": "\uD835\uDD05", - "bfr;": "\uD835\uDD1F", - "bigcap;": "\u22C2", - "bigcirc;": "\u25EF", - "bigcup;": "\u22C3", - "bigodot;": "\u2A00", - "bigoplus;": "\u2A01", - "bigotimes;": "\u2A02", - "bigsqcup;": "\u2A06", - "bigstar;": "\u2605", - "bigtriangledown;": "\u25BD", - "bigtriangleup;": "\u25B3", - "biguplus;": "\u2A04", - "bigvee;": "\u22C1", - "bigwedge;": "\u22C0", - "bkarow;": "\u290D", - "blacklozenge;": "\u29EB", - "blacksquare;": "\u25AA", - "blacktriangle;": "\u25B4", - "blacktriangledown;": "\u25BE", - "blacktriangleleft;": "\u25C2", - "blacktriangleright;": "\u25B8", - "blank;": "\u2423", - "blk12;": "\u2592", - "blk14;": "\u2591", - "blk34;": "\u2593", - "block;": "\u2588", - "bne;": "=\u20E5", - "bnequiv;": "\u2261\u20E5", - "bNot;": "\u2AED", - "bnot;": "\u2310", - "Bopf;": "\uD835\uDD39", - "bopf;": "\uD835\uDD53", - "bot;": "\u22A5", - "bottom;": "\u22A5", - "bowtie;": "\u22C8", - "boxbox;": "\u29C9", - "boxDL;": "\u2557", - "boxDl;": "\u2556", - "boxdL;": "\u2555", - "boxdl;": "\u2510", - "boxDR;": "\u2554", - "boxDr;": "\u2553", - "boxdR;": "\u2552", - "boxdr;": "\u250C", - "boxH;": "\u2550", - "boxh;": "\u2500", - "boxHD;": "\u2566", - "boxHd;": "\u2564", - "boxhD;": "\u2565", - "boxhd;": "\u252C", - "boxHU;": "\u2569", - "boxHu;": "\u2567", - "boxhU;": "\u2568", - "boxhu;": "\u2534", - "boxminus;": "\u229F", - "boxplus;": "\u229E", - "boxtimes;": "\u22A0", - "boxUL;": "\u255D", - "boxUl;": "\u255C", - "boxuL;": "\u255B", - "boxul;": "\u2518", - "boxUR;": "\u255A", - "boxUr;": "\u2559", - "boxuR;": "\u2558", - "boxur;": "\u2514", - "boxV;": "\u2551", - "boxv;": "\u2502", - "boxVH;": "\u256C", - "boxVh;": "\u256B", - "boxvH;": "\u256A", - "boxvh;": "\u253C", - "boxVL;": "\u2563", - "boxVl;": "\u2562", - "boxvL;": "\u2561", - "boxvl;": "\u2524", - "boxVR;": "\u2560", - "boxVr;": "\u255F", - "boxvR;": "\u255E", - "boxvr;": "\u251C", - "bprime;": "\u2035", - "Breve;": "\u02D8", - "breve;": "\u02D8", - "brvbar;": "\u00A6", - "brvbar": "\u00A6", - "Bscr;": "\u212C", - "bscr;": "\uD835\uDCB7", - "bsemi;": "\u204F", - "bsim;": "\u223D", - "bsime;": "\u22CD", - "bsol;": "\\", - "bsolb;": "\u29C5", - "bsolhsub;": "\u27C8", - "bull;": "\u2022", - "bullet;": "\u2022", - "bump;": "\u224E", - "bumpE;": "\u2AAE", - "bumpe;": "\u224F", - "Bumpeq;": "\u224E", - "bumpeq;": "\u224F", - "Cacute;": "\u0106", - "cacute;": "\u0107", - "Cap;": "\u22D2", - "cap;": "\u2229", - "capand;": "\u2A44", - "capbrcup;": "\u2A49", - "capcap;": "\u2A4B", - "capcup;": "\u2A47", - "capdot;": "\u2A40", - "CapitalDifferentialD;": "\u2145", - "caps;": "\u2229\uFE00", - "caret;": "\u2041", - "caron;": "\u02C7", - "Cayleys;": "\u212D", - "ccaps;": "\u2A4D", - "Ccaron;": "\u010C", - "ccaron;": "\u010D", - "Ccedil;": "\u00C7", - "Ccedil": "\u00C7", - "ccedil;": "\u00E7", - "ccedil": "\u00E7", - "Ccirc;": "\u0108", - "ccirc;": "\u0109", - "Cconint;": "\u2230", - "ccups;": "\u2A4C", - "ccupssm;": "\u2A50", - "Cdot;": "\u010A", - "cdot;": "\u010B", - "cedil;": "\u00B8", - "cedil": "\u00B8", - "Cedilla;": "\u00B8", - "cemptyv;": "\u29B2", - "cent;": "\u00A2", - "cent": "\u00A2", - "CenterDot;": "\u00B7", - "centerdot;": "\u00B7", - "Cfr;": "\u212D", - "cfr;": "\uD835\uDD20", - "CHcy;": "\u0427", - "chcy;": "\u0447", - "check;": "\u2713", - "checkmark;": "\u2713", - "Chi;": "\u03A7", - "chi;": "\u03C7", - "cir;": "\u25CB", - "circ;": "\u02C6", - "circeq;": "\u2257", - "circlearrowleft;": "\u21BA", - "circlearrowright;": "\u21BB", - "circledast;": "\u229B", - "circledcirc;": "\u229A", - "circleddash;": "\u229D", - "CircleDot;": "\u2299", - "circledR;": "\u00AE", - "circledS;": "\u24C8", - "CircleMinus;": "\u2296", - "CirclePlus;": "\u2295", - "CircleTimes;": "\u2297", - "cirE;": "\u29C3", - "cire;": "\u2257", - "cirfnint;": "\u2A10", - "cirmid;": "\u2AEF", - "cirscir;": "\u29C2", - "ClockwiseContourIntegral;": "\u2232", - "CloseCurlyDoubleQuote;": "\u201D", - "CloseCurlyQuote;": "\u2019", - "clubs;": "\u2663", - "clubsuit;": "\u2663", - "Colon;": "\u2237", - "colon;": ":", - "Colone;": "\u2A74", - "colone;": "\u2254", - "coloneq;": "\u2254", - "comma;": ",", - "commat;": "@", - "comp;": "\u2201", - "compfn;": "\u2218", - "complement;": "\u2201", - "complexes;": "\u2102", - "cong;": "\u2245", - "congdot;": "\u2A6D", - "Congruent;": "\u2261", - "Conint;": "\u222F", - "conint;": "\u222E", - "ContourIntegral;": "\u222E", - "Copf;": "\u2102", - "copf;": "\uD835\uDD54", - "coprod;": "\u2210", - "Coproduct;": "\u2210", - "COPY;": "\u00A9", - "COPY": "\u00A9", - "copy;": "\u00A9", - "copy": "\u00A9", - "copysr;": "\u2117", - "CounterClockwiseContourIntegral;": "\u2233", - "crarr;": "\u21B5", - "Cross;": "\u2A2F", - "cross;": "\u2717", - "Cscr;": "\uD835\uDC9E", - "cscr;": "\uD835\uDCB8", - "csub;": "\u2ACF", - "csube;": "\u2AD1", - "csup;": "\u2AD0", - "csupe;": "\u2AD2", - "ctdot;": "\u22EF", - "cudarrl;": "\u2938", - "cudarrr;": "\u2935", - "cuepr;": "\u22DE", - "cuesc;": "\u22DF", - "cularr;": "\u21B6", - "cularrp;": "\u293D", - "Cup;": "\u22D3", - "cup;": "\u222A", - "cupbrcap;": "\u2A48", - "CupCap;": "\u224D", - "cupcap;": "\u2A46", - "cupcup;": "\u2A4A", - "cupdot;": "\u228D", - "cupor;": "\u2A45", - "cups;": "\u222A\uFE00", - "curarr;": "\u21B7", - "curarrm;": "\u293C", - "curlyeqprec;": "\u22DE", - "curlyeqsucc;": "\u22DF", - "curlyvee;": "\u22CE", - "curlywedge;": "\u22CF", - "curren;": "\u00A4", - "curren": "\u00A4", - "curvearrowleft;": "\u21B6", - "curvearrowright;": "\u21B7", - "cuvee;": "\u22CE", - "cuwed;": "\u22CF", - "cwconint;": "\u2232", - "cwint;": "\u2231", - "cylcty;": "\u232D", - "Dagger;": "\u2021", - "dagger;": "\u2020", - "daleth;": "\u2138", - "Darr;": "\u21A1", - "dArr;": "\u21D3", - "darr;": "\u2193", - "dash;": "\u2010", - "Dashv;": "\u2AE4", - "dashv;": "\u22A3", - "dbkarow;": "\u290F", - "dblac;": "\u02DD", - "Dcaron;": "\u010E", - "dcaron;": "\u010F", - "Dcy;": "\u0414", - "dcy;": "\u0434", - "DD;": "\u2145", - "dd;": "\u2146", - "ddagger;": "\u2021", - "ddarr;": "\u21CA", - "DDotrahd;": "\u2911", - "ddotseq;": "\u2A77", - "deg;": "\u00B0", - "deg": "\u00B0", - "Del;": "\u2207", - "Delta;": "\u0394", - "delta;": "\u03B4", - "demptyv;": "\u29B1", - "dfisht;": "\u297F", - "Dfr;": "\uD835\uDD07", - "dfr;": "\uD835\uDD21", - "dHar;": "\u2965", - "dharl;": "\u21C3", - "dharr;": "\u21C2", - "DiacriticalAcute;": "\u00B4", - "DiacriticalDot;": "\u02D9", - "DiacriticalDoubleAcute;": "\u02DD", - "DiacriticalGrave;": "`", - "DiacriticalTilde;": "\u02DC", - "diam;": "\u22C4", - "Diamond;": "\u22C4", - "diamond;": "\u22C4", - "diamondsuit;": "\u2666", - "diams;": "\u2666", - "die;": "\u00A8", - "DifferentialD;": "\u2146", - "digamma;": "\u03DD", - "disin;": "\u22F2", - "div;": "\u00F7", - "divide;": "\u00F7", - "divide": "\u00F7", - "divideontimes;": "\u22C7", - "divonx;": "\u22C7", - "DJcy;": "\u0402", - "djcy;": "\u0452", - "dlcorn;": "\u231E", - "dlcrop;": "\u230D", - "dollar;": "$", - "Dopf;": "\uD835\uDD3B", - "dopf;": "\uD835\uDD55", - "Dot;": "\u00A8", - "dot;": "\u02D9", - "DotDot;": "\u20DC", - "doteq;": "\u2250", - "doteqdot;": "\u2251", - "DotEqual;": "\u2250", - "dotminus;": "\u2238", - "dotplus;": "\u2214", - "dotsquare;": "\u22A1", - "doublebarwedge;": "\u2306", - "DoubleContourIntegral;": "\u222F", - "DoubleDot;": "\u00A8", - "DoubleDownArrow;": "\u21D3", - "DoubleLeftArrow;": "\u21D0", - "DoubleLeftRightArrow;": "\u21D4", - "DoubleLeftTee;": "\u2AE4", - "DoubleLongLeftArrow;": "\u27F8", - "DoubleLongLeftRightArrow;": "\u27FA", - "DoubleLongRightArrow;": "\u27F9", - "DoubleRightArrow;": "\u21D2", - "DoubleRightTee;": "\u22A8", - "DoubleUpArrow;": "\u21D1", - "DoubleUpDownArrow;": "\u21D5", - "DoubleVerticalBar;": "\u2225", - "DownArrow;": "\u2193", - "Downarrow;": "\u21D3", - "downarrow;": "\u2193", - "DownArrowBar;": "\u2913", - "DownArrowUpArrow;": "\u21F5", - "DownBreve;": "\u0311", - "downdownarrows;": "\u21CA", - "downharpoonleft;": "\u21C3", - "downharpoonright;": "\u21C2", - "DownLeftRightVector;": "\u2950", - "DownLeftTeeVector;": "\u295E", - "DownLeftVector;": "\u21BD", - "DownLeftVectorBar;": "\u2956", - "DownRightTeeVector;": "\u295F", - "DownRightVector;": "\u21C1", - "DownRightVectorBar;": "\u2957", - "DownTee;": "\u22A4", - "DownTeeArrow;": "\u21A7", - "drbkarow;": "\u2910", - "drcorn;": "\u231F", - "drcrop;": "\u230C", - "Dscr;": "\uD835\uDC9F", - "dscr;": "\uD835\uDCB9", - "DScy;": "\u0405", - "dscy;": "\u0455", - "dsol;": "\u29F6", - "Dstrok;": "\u0110", - "dstrok;": "\u0111", - "dtdot;": "\u22F1", - "dtri;": "\u25BF", - "dtrif;": "\u25BE", - "duarr;": "\u21F5", - "duhar;": "\u296F", - "dwangle;": "\u29A6", - "DZcy;": "\u040F", - "dzcy;": "\u045F", - "dzigrarr;": "\u27FF", - "Eacute;": "\u00C9", - "Eacute": "\u00C9", - "eacute;": "\u00E9", - "eacute": "\u00E9", - "easter;": "\u2A6E", - "Ecaron;": "\u011A", - "ecaron;": "\u011B", - "ecir;": "\u2256", - "Ecirc;": "\u00CA", - "Ecirc": "\u00CA", - "ecirc;": "\u00EA", - "ecirc": "\u00EA", - "ecolon;": "\u2255", - "Ecy;": "\u042D", - "ecy;": "\u044D", - "eDDot;": "\u2A77", - "Edot;": "\u0116", - "eDot;": "\u2251", - "edot;": "\u0117", - "ee;": "\u2147", - "efDot;": "\u2252", - "Efr;": "\uD835\uDD08", - "efr;": "\uD835\uDD22", - "eg;": "\u2A9A", - "Egrave;": "\u00C8", - "Egrave": "\u00C8", - "egrave;": "\u00E8", - "egrave": "\u00E8", - "egs;": "\u2A96", - "egsdot;": "\u2A98", - "el;": "\u2A99", - "Element;": "\u2208", - "elinters;": "\u23E7", - "ell;": "\u2113", - "els;": "\u2A95", - "elsdot;": "\u2A97", - "Emacr;": "\u0112", - "emacr;": "\u0113", - "empty;": "\u2205", - "emptyset;": "\u2205", - "EmptySmallSquare;": "\u25FB", - "emptyv;": "\u2205", - "EmptyVerySmallSquare;": "\u25AB", - "emsp;": "\u2003", - "emsp13;": "\u2004", - "emsp14;": "\u2005", - "ENG;": "\u014A", - "eng;": "\u014B", - "ensp;": "\u2002", - "Eogon;": "\u0118", - "eogon;": "\u0119", - "Eopf;": "\uD835\uDD3C", - "eopf;": "\uD835\uDD56", - "epar;": "\u22D5", - "eparsl;": "\u29E3", - "eplus;": "\u2A71", - "epsi;": "\u03B5", - "Epsilon;": "\u0395", - "epsilon;": "\u03B5", - "epsiv;": "\u03F5", - "eqcirc;": "\u2256", - "eqcolon;": "\u2255", - "eqsim;": "\u2242", - "eqslantgtr;": "\u2A96", - "eqslantless;": "\u2A95", - "Equal;": "\u2A75", - "equals;": "=", - "EqualTilde;": "\u2242", - "equest;": "\u225F", - "Equilibrium;": "\u21CC", - "equiv;": "\u2261", - "equivDD;": "\u2A78", - "eqvparsl;": "\u29E5", - "erarr;": "\u2971", - "erDot;": "\u2253", - "Escr;": "\u2130", - "escr;": "\u212F", - "esdot;": "\u2250", - "Esim;": "\u2A73", - "esim;": "\u2242", - "Eta;": "\u0397", - "eta;": "\u03B7", - "ETH;": "\u00D0", - "ETH": "\u00D0", - "eth;": "\u00F0", - "eth": "\u00F0", - "Euml;": "\u00CB", - "Euml": "\u00CB", - "euml;": "\u00EB", - "euml": "\u00EB", - "euro;": "\u20AC", - "excl;": "!", - "exist;": "\u2203", - "Exists;": "\u2203", - "expectation;": "\u2130", - "ExponentialE;": "\u2147", - "exponentiale;": "\u2147", - "fallingdotseq;": "\u2252", - "Fcy;": "\u0424", - "fcy;": "\u0444", - "female;": "\u2640", - "ffilig;": "\uFB03", - "fflig;": "\uFB00", - "ffllig;": "\uFB04", - "Ffr;": "\uD835\uDD09", - "ffr;": "\uD835\uDD23", - "filig;": "\uFB01", - "FilledSmallSquare;": "\u25FC", - "FilledVerySmallSquare;": "\u25AA", - "fjlig;": "fj", - "flat;": "\u266D", - "fllig;": "\uFB02", - "fltns;": "\u25B1", - "fnof;": "\u0192", - "Fopf;": "\uD835\uDD3D", - "fopf;": "\uD835\uDD57", - "ForAll;": "\u2200", - "forall;": "\u2200", - "fork;": "\u22D4", - "forkv;": "\u2AD9", - "Fouriertrf;": "\u2131", - "fpartint;": "\u2A0D", - "frac12;": "\u00BD", - "frac12": "\u00BD", - "frac13;": "\u2153", - "frac14;": "\u00BC", - "frac14": "\u00BC", - "frac15;": "\u2155", - "frac16;": "\u2159", - "frac18;": "\u215B", - "frac23;": "\u2154", - "frac25;": "\u2156", - "frac34;": "\u00BE", - "frac34": "\u00BE", - "frac35;": "\u2157", - "frac38;": "\u215C", - "frac45;": "\u2158", - "frac56;": "\u215A", - "frac58;": "\u215D", - "frac78;": "\u215E", - "frasl;": "\u2044", - "frown;": "\u2322", - "Fscr;": "\u2131", - "fscr;": "\uD835\uDCBB", - "gacute;": "\u01F5", - "Gamma;": "\u0393", - "gamma;": "\u03B3", - "Gammad;": "\u03DC", - "gammad;": "\u03DD", - "gap;": "\u2A86", - "Gbreve;": "\u011E", - "gbreve;": "\u011F", - "Gcedil;": "\u0122", - "Gcirc;": "\u011C", - "gcirc;": "\u011D", - "Gcy;": "\u0413", - "gcy;": "\u0433", - "Gdot;": "\u0120", - "gdot;": "\u0121", - "gE;": "\u2267", - "ge;": "\u2265", - "gEl;": "\u2A8C", - "gel;": "\u22DB", - "geq;": "\u2265", - "geqq;": "\u2267", - "geqslant;": "\u2A7E", - "ges;": "\u2A7E", - "gescc;": "\u2AA9", - "gesdot;": "\u2A80", - "gesdoto;": "\u2A82", - "gesdotol;": "\u2A84", - "gesl;": "\u22DB\uFE00", - "gesles;": "\u2A94", - "Gfr;": "\uD835\uDD0A", - "gfr;": "\uD835\uDD24", - "Gg;": "\u22D9", - "gg;": "\u226B", - "ggg;": "\u22D9", - "gimel;": "\u2137", - "GJcy;": "\u0403", - "gjcy;": "\u0453", - "gl;": "\u2277", - "gla;": "\u2AA5", - "glE;": "\u2A92", - "glj;": "\u2AA4", - "gnap;": "\u2A8A", - "gnapprox;": "\u2A8A", - "gnE;": "\u2269", - "gne;": "\u2A88", - "gneq;": "\u2A88", - "gneqq;": "\u2269", - "gnsim;": "\u22E7", - "Gopf;": "\uD835\uDD3E", - "gopf;": "\uD835\uDD58", - "grave;": "`", - "GreaterEqual;": "\u2265", - "GreaterEqualLess;": "\u22DB", - "GreaterFullEqual;": "\u2267", - "GreaterGreater;": "\u2AA2", - "GreaterLess;": "\u2277", - "GreaterSlantEqual;": "\u2A7E", - "GreaterTilde;": "\u2273", - "Gscr;": "\uD835\uDCA2", - "gscr;": "\u210A", - "gsim;": "\u2273", - "gsime;": "\u2A8E", - "gsiml;": "\u2A90", - "GT;": ">", - "GT": ">", - "Gt;": "\u226B", - "gt;": ">", - "gt": ">", - "gtcc;": "\u2AA7", - "gtcir;": "\u2A7A", - "gtdot;": "\u22D7", - "gtlPar;": "\u2995", - "gtquest;": "\u2A7C", - "gtrapprox;": "\u2A86", - "gtrarr;": "\u2978", - "gtrdot;": "\u22D7", - "gtreqless;": "\u22DB", - "gtreqqless;": "\u2A8C", - "gtrless;": "\u2277", - "gtrsim;": "\u2273", - "gvertneqq;": "\u2269\uFE00", - "gvnE;": "\u2269\uFE00", - "Hacek;": "\u02C7", - "hairsp;": "\u200A", - "half;": "\u00BD", - "hamilt;": "\u210B", - "HARDcy;": "\u042A", - "hardcy;": "\u044A", - "hArr;": "\u21D4", - "harr;": "\u2194", - "harrcir;": "\u2948", - "harrw;": "\u21AD", - "Hat;": "^", - "hbar;": "\u210F", - "Hcirc;": "\u0124", - "hcirc;": "\u0125", - "hearts;": "\u2665", - "heartsuit;": "\u2665", - "hellip;": "\u2026", - "hercon;": "\u22B9", - "Hfr;": "\u210C", - "hfr;": "\uD835\uDD25", - "HilbertSpace;": "\u210B", - "hksearow;": "\u2925", - "hkswarow;": "\u2926", - "hoarr;": "\u21FF", - "homtht;": "\u223B", - "hookleftarrow;": "\u21A9", - "hookrightarrow;": "\u21AA", - "Hopf;": "\u210D", - "hopf;": "\uD835\uDD59", - "horbar;": "\u2015", - "HorizontalLine;": "\u2500", - "Hscr;": "\u210B", - "hscr;": "\uD835\uDCBD", - "hslash;": "\u210F", - "Hstrok;": "\u0126", - "hstrok;": "\u0127", - "HumpDownHump;": "\u224E", - "HumpEqual;": "\u224F", - "hybull;": "\u2043", - "hyphen;": "\u2010", - "Iacute;": "\u00CD", - "Iacute": "\u00CD", - "iacute;": "\u00ED", - "iacute": "\u00ED", - "ic;": "\u2063", - "Icirc;": "\u00CE", - "Icirc": "\u00CE", - "icirc;": "\u00EE", - "icirc": "\u00EE", - "Icy;": "\u0418", - "icy;": "\u0438", - "Idot;": "\u0130", - "IEcy;": "\u0415", - "iecy;": "\u0435", - "iexcl;": "\u00A1", - "iexcl": "\u00A1", - "iff;": "\u21D4", - "Ifr;": "\u2111", - "ifr;": "\uD835\uDD26", - "Igrave;": "\u00CC", - "Igrave": "\u00CC", - "igrave;": "\u00EC", - "igrave": "\u00EC", - "ii;": "\u2148", - "iiiint;": "\u2A0C", - "iiint;": "\u222D", - "iinfin;": "\u29DC", - "iiota;": "\u2129", - "IJlig;": "\u0132", - "ijlig;": "\u0133", - "Im;": "\u2111", - "Imacr;": "\u012A", - "imacr;": "\u012B", - "image;": "\u2111", - "ImaginaryI;": "\u2148", - "imagline;": "\u2110", - "imagpart;": "\u2111", - "imath;": "\u0131", - "imof;": "\u22B7", - "imped;": "\u01B5", - "Implies;": "\u21D2", - "in;": "\u2208", - "incare;": "\u2105", - "infin;": "\u221E", - "infintie;": "\u29DD", - "inodot;": "\u0131", - "Int;": "\u222C", - "int;": "\u222B", - "intcal;": "\u22BA", - "integers;": "\u2124", - "Integral;": "\u222B", - "intercal;": "\u22BA", - "Intersection;": "\u22C2", - "intlarhk;": "\u2A17", - "intprod;": "\u2A3C", - "InvisibleComma;": "\u2063", - "InvisibleTimes;": "\u2062", - "IOcy;": "\u0401", - "iocy;": "\u0451", - "Iogon;": "\u012E", - "iogon;": "\u012F", - "Iopf;": "\uD835\uDD40", - "iopf;": "\uD835\uDD5A", - "Iota;": "\u0399", - "iota;": "\u03B9", - "iprod;": "\u2A3C", - "iquest;": "\u00BF", - "iquest": "\u00BF", - "Iscr;": "\u2110", - "iscr;": "\uD835\uDCBE", - "isin;": "\u2208", - "isindot;": "\u22F5", - "isinE;": "\u22F9", - "isins;": "\u22F4", - "isinsv;": "\u22F3", - "isinv;": "\u2208", - "it;": "\u2062", - "Itilde;": "\u0128", - "itilde;": "\u0129", - "Iukcy;": "\u0406", - "iukcy;": "\u0456", - "Iuml;": "\u00CF", - "Iuml": "\u00CF", - "iuml;": "\u00EF", - "iuml": "\u00EF", - "Jcirc;": "\u0134", - "jcirc;": "\u0135", - "Jcy;": "\u0419", - "jcy;": "\u0439", - "Jfr;": "\uD835\uDD0D", - "jfr;": "\uD835\uDD27", - "jmath;": "\u0237", - "Jopf;": "\uD835\uDD41", - "jopf;": "\uD835\uDD5B", - "Jscr;": "\uD835\uDCA5", - "jscr;": "\uD835\uDCBF", - "Jsercy;": "\u0408", - "jsercy;": "\u0458", - "Jukcy;": "\u0404", - "jukcy;": "\u0454", - "Kappa;": "\u039A", - "kappa;": "\u03BA", - "kappav;": "\u03F0", - "Kcedil;": "\u0136", - "kcedil;": "\u0137", - "Kcy;": "\u041A", - "kcy;": "\u043A", - "Kfr;": "\uD835\uDD0E", - "kfr;": "\uD835\uDD28", - "kgreen;": "\u0138", - "KHcy;": "\u0425", - "khcy;": "\u0445", - "KJcy;": "\u040C", - "kjcy;": "\u045C", - "Kopf;": "\uD835\uDD42", - "kopf;": "\uD835\uDD5C", - "Kscr;": "\uD835\uDCA6", - "kscr;": "\uD835\uDCC0", - "lAarr;": "\u21DA", - "Lacute;": "\u0139", - "lacute;": "\u013A", - "laemptyv;": "\u29B4", - "lagran;": "\u2112", - "Lambda;": "\u039B", - "lambda;": "\u03BB", - "Lang;": "\u27EA", - "lang;": "\u27E8", - "langd;": "\u2991", - "langle;": "\u27E8", - "lap;": "\u2A85", - "Laplacetrf;": "\u2112", - "laquo;": "\u00AB", - "laquo": "\u00AB", - "Larr;": "\u219E", - "lArr;": "\u21D0", - "larr;": "\u2190", - "larrb;": "\u21E4", - "larrbfs;": "\u291F", - "larrfs;": "\u291D", - "larrhk;": "\u21A9", - "larrlp;": "\u21AB", - "larrpl;": "\u2939", - "larrsim;": "\u2973", - "larrtl;": "\u21A2", - "lat;": "\u2AAB", - "lAtail;": "\u291B", - "latail;": "\u2919", - "late;": "\u2AAD", - "lates;": "\u2AAD\uFE00", - "lBarr;": "\u290E", - "lbarr;": "\u290C", - "lbbrk;": "\u2772", - "lbrace;": "{", - "lbrack;": "[", - "lbrke;": "\u298B", - "lbrksld;": "\u298F", - "lbrkslu;": "\u298D", - "Lcaron;": "\u013D", - "lcaron;": "\u013E", - "Lcedil;": "\u013B", - "lcedil;": "\u013C", - "lceil;": "\u2308", - "lcub;": "{", - "Lcy;": "\u041B", - "lcy;": "\u043B", - "ldca;": "\u2936", - "ldquo;": "\u201C", - "ldquor;": "\u201E", - "ldrdhar;": "\u2967", - "ldrushar;": "\u294B", - "ldsh;": "\u21B2", - "lE;": "\u2266", - "le;": "\u2264", - "LeftAngleBracket;": "\u27E8", - "LeftArrow;": "\u2190", - "Leftarrow;": "\u21D0", - "leftarrow;": "\u2190", - "LeftArrowBar;": "\u21E4", - "LeftArrowRightArrow;": "\u21C6", - "leftarrowtail;": "\u21A2", - "LeftCeiling;": "\u2308", - "LeftDoubleBracket;": "\u27E6", - "LeftDownTeeVector;": "\u2961", - "LeftDownVector;": "\u21C3", - "LeftDownVectorBar;": "\u2959", - "LeftFloor;": "\u230A", - "leftharpoondown;": "\u21BD", - "leftharpoonup;": "\u21BC", - "leftleftarrows;": "\u21C7", - "LeftRightArrow;": "\u2194", - "Leftrightarrow;": "\u21D4", - "leftrightarrow;": "\u2194", - "leftrightarrows;": "\u21C6", - "leftrightharpoons;": "\u21CB", - "leftrightsquigarrow;": "\u21AD", - "LeftRightVector;": "\u294E", - "LeftTee;": "\u22A3", - "LeftTeeArrow;": "\u21A4", - "LeftTeeVector;": "\u295A", - "leftthreetimes;": "\u22CB", - "LeftTriangle;": "\u22B2", - "LeftTriangleBar;": "\u29CF", - "LeftTriangleEqual;": "\u22B4", - "LeftUpDownVector;": "\u2951", - "LeftUpTeeVector;": "\u2960", - "LeftUpVector;": "\u21BF", - "LeftUpVectorBar;": "\u2958", - "LeftVector;": "\u21BC", - "LeftVectorBar;": "\u2952", - "lEg;": "\u2A8B", - "leg;": "\u22DA", - "leq;": "\u2264", - "leqq;": "\u2266", - "leqslant;": "\u2A7D", - "les;": "\u2A7D", - "lescc;": "\u2AA8", - "lesdot;": "\u2A7F", - "lesdoto;": "\u2A81", - "lesdotor;": "\u2A83", - "lesg;": "\u22DA\uFE00", - "lesges;": "\u2A93", - "lessapprox;": "\u2A85", - "lessdot;": "\u22D6", - "lesseqgtr;": "\u22DA", - "lesseqqgtr;": "\u2A8B", - "LessEqualGreater;": "\u22DA", - "LessFullEqual;": "\u2266", - "LessGreater;": "\u2276", - "lessgtr;": "\u2276", - "LessLess;": "\u2AA1", - "lesssim;": "\u2272", - "LessSlantEqual;": "\u2A7D", - "LessTilde;": "\u2272", - "lfisht;": "\u297C", - "lfloor;": "\u230A", - "Lfr;": "\uD835\uDD0F", - "lfr;": "\uD835\uDD29", - "lg;": "\u2276", - "lgE;": "\u2A91", - "lHar;": "\u2962", - "lhard;": "\u21BD", - "lharu;": "\u21BC", - "lharul;": "\u296A", - "lhblk;": "\u2584", - "LJcy;": "\u0409", - "ljcy;": "\u0459", - "Ll;": "\u22D8", - "ll;": "\u226A", - "llarr;": "\u21C7", - "llcorner;": "\u231E", - "Lleftarrow;": "\u21DA", - "llhard;": "\u296B", - "lltri;": "\u25FA", - "Lmidot;": "\u013F", - "lmidot;": "\u0140", - "lmoust;": "\u23B0", - "lmoustache;": "\u23B0", - "lnap;": "\u2A89", - "lnapprox;": "\u2A89", - "lnE;": "\u2268", - "lne;": "\u2A87", - "lneq;": "\u2A87", - "lneqq;": "\u2268", - "lnsim;": "\u22E6", - "loang;": "\u27EC", - "loarr;": "\u21FD", - "lobrk;": "\u27E6", - "LongLeftArrow;": "\u27F5", - "Longleftarrow;": "\u27F8", - "longleftarrow;": "\u27F5", - "LongLeftRightArrow;": "\u27F7", - "Longleftrightarrow;": "\u27FA", - "longleftrightarrow;": "\u27F7", - "longmapsto;": "\u27FC", - "LongRightArrow;": "\u27F6", - "Longrightarrow;": "\u27F9", - "longrightarrow;": "\u27F6", - "looparrowleft;": "\u21AB", - "looparrowright;": "\u21AC", - "lopar;": "\u2985", - "Lopf;": "\uD835\uDD43", - "lopf;": "\uD835\uDD5D", - "loplus;": "\u2A2D", - "lotimes;": "\u2A34", - "lowast;": "\u2217", - "lowbar;": "_", - "LowerLeftArrow;": "\u2199", - "LowerRightArrow;": "\u2198", - "loz;": "\u25CA", - "lozenge;": "\u25CA", - "lozf;": "\u29EB", - "lpar;": "(", - "lparlt;": "\u2993", - "lrarr;": "\u21C6", - "lrcorner;": "\u231F", - "lrhar;": "\u21CB", - "lrhard;": "\u296D", - "lrm;": "\u200E", - "lrtri;": "\u22BF", - "lsaquo;": "\u2039", - "Lscr;": "\u2112", - "lscr;": "\uD835\uDCC1", - "Lsh;": "\u21B0", - "lsh;": "\u21B0", - "lsim;": "\u2272", - "lsime;": "\u2A8D", - "lsimg;": "\u2A8F", - "lsqb;": "[", - "lsquo;": "\u2018", - "lsquor;": "\u201A", - "Lstrok;": "\u0141", - "lstrok;": "\u0142", - "LT;": "<", - "LT": "<", - "Lt;": "\u226A", - "lt;": "<", - "lt": "<", - "ltcc;": "\u2AA6", - "ltcir;": "\u2A79", - "ltdot;": "\u22D6", - "lthree;": "\u22CB", - "ltimes;": "\u22C9", - "ltlarr;": "\u2976", - "ltquest;": "\u2A7B", - "ltri;": "\u25C3", - "ltrie;": "\u22B4", - "ltrif;": "\u25C2", - "ltrPar;": "\u2996", - "lurdshar;": "\u294A", - "luruhar;": "\u2966", - "lvertneqq;": "\u2268\uFE00", - "lvnE;": "\u2268\uFE00", - "macr;": "\u00AF", - "macr": "\u00AF", - "male;": "\u2642", - "malt;": "\u2720", - "maltese;": "\u2720", - "Map;": "\u2905", - "map;": "\u21A6", - "mapsto;": "\u21A6", - "mapstodown;": "\u21A7", - "mapstoleft;": "\u21A4", - "mapstoup;": "\u21A5", - "marker;": "\u25AE", - "mcomma;": "\u2A29", - "Mcy;": "\u041C", - "mcy;": "\u043C", - "mdash;": "\u2014", - "mDDot;": "\u223A", - "measuredangle;": "\u2221", - "MediumSpace;": "\u205F", - "Mellintrf;": "\u2133", - "Mfr;": "\uD835\uDD10", - "mfr;": "\uD835\uDD2A", - "mho;": "\u2127", - "micro;": "\u00B5", - "micro": "\u00B5", - "mid;": "\u2223", - "midast;": "*", - "midcir;": "\u2AF0", - "middot;": "\u00B7", - "middot": "\u00B7", - "minus;": "\u2212", - "minusb;": "\u229F", - "minusd;": "\u2238", - "minusdu;": "\u2A2A", - "MinusPlus;": "\u2213", - "mlcp;": "\u2ADB", - "mldr;": "\u2026", - "mnplus;": "\u2213", - "models;": "\u22A7", - "Mopf;": "\uD835\uDD44", - "mopf;": "\uD835\uDD5E", - "mp;": "\u2213", - "Mscr;": "\u2133", - "mscr;": "\uD835\uDCC2", - "mstpos;": "\u223E", - "Mu;": "\u039C", - "mu;": "\u03BC", - "multimap;": "\u22B8", - "mumap;": "\u22B8", - "nabla;": "\u2207", - "Nacute;": "\u0143", - "nacute;": "\u0144", - "nang;": "\u2220\u20D2", - "nap;": "\u2249", - "napE;": "\u2A70\u0338", - "napid;": "\u224B\u0338", - "napos;": "\u0149", - "napprox;": "\u2249", - "natur;": "\u266E", - "natural;": "\u266E", - "naturals;": "\u2115", - "nbsp;": "\u00A0", - "nbsp": "\u00A0", - "nbump;": "\u224E\u0338", - "nbumpe;": "\u224F\u0338", - "ncap;": "\u2A43", - "Ncaron;": "\u0147", - "ncaron;": "\u0148", - "Ncedil;": "\u0145", - "ncedil;": "\u0146", - "ncong;": "\u2247", - "ncongdot;": "\u2A6D\u0338", - "ncup;": "\u2A42", - "Ncy;": "\u041D", - "ncy;": "\u043D", - "ndash;": "\u2013", - "ne;": "\u2260", - "nearhk;": "\u2924", - "neArr;": "\u21D7", - "nearr;": "\u2197", - "nearrow;": "\u2197", - "nedot;": "\u2250\u0338", - "NegativeMediumSpace;": "\u200B", - "NegativeThickSpace;": "\u200B", - "NegativeThinSpace;": "\u200B", - "NegativeVeryThinSpace;": "\u200B", - "nequiv;": "\u2262", - "nesear;": "\u2928", - "nesim;": "\u2242\u0338", - "NestedGreaterGreater;": "\u226B", - "NestedLessLess;": "\u226A", - "NewLine;": "\n", - "nexist;": "\u2204", - "nexists;": "\u2204", - "Nfr;": "\uD835\uDD11", - "nfr;": "\uD835\uDD2B", - "ngE;": "\u2267\u0338", - "nge;": "\u2271", - "ngeq;": "\u2271", - "ngeqq;": "\u2267\u0338", - "ngeqslant;": "\u2A7E\u0338", - "nges;": "\u2A7E\u0338", - "nGg;": "\u22D9\u0338", - "ngsim;": "\u2275", - "nGt;": "\u226B\u20D2", - "ngt;": "\u226F", - "ngtr;": "\u226F", - "nGtv;": "\u226B\u0338", - "nhArr;": "\u21CE", - "nharr;": "\u21AE", - "nhpar;": "\u2AF2", - "ni;": "\u220B", - "nis;": "\u22FC", - "nisd;": "\u22FA", - "niv;": "\u220B", - "NJcy;": "\u040A", - "njcy;": "\u045A", - "nlArr;": "\u21CD", - "nlarr;": "\u219A", - "nldr;": "\u2025", - "nlE;": "\u2266\u0338", - "nle;": "\u2270", - "nLeftarrow;": "\u21CD", - "nleftarrow;": "\u219A", - "nLeftrightarrow;": "\u21CE", - "nleftrightarrow;": "\u21AE", - "nleq;": "\u2270", - "nleqq;": "\u2266\u0338", - "nleqslant;": "\u2A7D\u0338", - "nles;": "\u2A7D\u0338", - "nless;": "\u226E", - "nLl;": "\u22D8\u0338", - "nlsim;": "\u2274", - "nLt;": "\u226A\u20D2", - "nlt;": "\u226E", - "nltri;": "\u22EA", - "nltrie;": "\u22EC", - "nLtv;": "\u226A\u0338", - "nmid;": "\u2224", - "NoBreak;": "\u2060", - "NonBreakingSpace;": "\u00A0", - "Nopf;": "\u2115", - "nopf;": "\uD835\uDD5F", - "Not;": "\u2AEC", - "not;": "\u00AC", - "not": "\u00AC", - "NotCongruent;": "\u2262", - "NotCupCap;": "\u226D", - "NotDoubleVerticalBar;": "\u2226", - "NotElement;": "\u2209", - "NotEqual;": "\u2260", - "NotEqualTilde;": "\u2242\u0338", - "NotExists;": "\u2204", - "NotGreater;": "\u226F", - "NotGreaterEqual;": "\u2271", - "NotGreaterFullEqual;": "\u2267\u0338", - "NotGreaterGreater;": "\u226B\u0338", - "NotGreaterLess;": "\u2279", - "NotGreaterSlantEqual;": "\u2A7E\u0338", - "NotGreaterTilde;": "\u2275", - "NotHumpDownHump;": "\u224E\u0338", - "NotHumpEqual;": "\u224F\u0338", - "notin;": "\u2209", - "notindot;": "\u22F5\u0338", - "notinE;": "\u22F9\u0338", - "notinva;": "\u2209", - "notinvb;": "\u22F7", - "notinvc;": "\u22F6", - "NotLeftTriangle;": "\u22EA", - "NotLeftTriangleBar;": "\u29CF\u0338", - "NotLeftTriangleEqual;": "\u22EC", - "NotLess;": "\u226E", - "NotLessEqual;": "\u2270", - "NotLessGreater;": "\u2278", - "NotLessLess;": "\u226A\u0338", - "NotLessSlantEqual;": "\u2A7D\u0338", - "NotLessTilde;": "\u2274", - "NotNestedGreaterGreater;": "\u2AA2\u0338", - "NotNestedLessLess;": "\u2AA1\u0338", - "notni;": "\u220C", - "notniva;": "\u220C", - "notnivb;": "\u22FE", - "notnivc;": "\u22FD", - "NotPrecedes;": "\u2280", - "NotPrecedesEqual;": "\u2AAF\u0338", - "NotPrecedesSlantEqual;": "\u22E0", - "NotReverseElement;": "\u220C", - "NotRightTriangle;": "\u22EB", - "NotRightTriangleBar;": "\u29D0\u0338", - "NotRightTriangleEqual;": "\u22ED", - "NotSquareSubset;": "\u228F\u0338", - "NotSquareSubsetEqual;": "\u22E2", - "NotSquareSuperset;": "\u2290\u0338", - "NotSquareSupersetEqual;": "\u22E3", - "NotSubset;": "\u2282\u20D2", - "NotSubsetEqual;": "\u2288", - "NotSucceeds;": "\u2281", - "NotSucceedsEqual;": "\u2AB0\u0338", - "NotSucceedsSlantEqual;": "\u22E1", - "NotSucceedsTilde;": "\u227F\u0338", - "NotSuperset;": "\u2283\u20D2", - "NotSupersetEqual;": "\u2289", - "NotTilde;": "\u2241", - "NotTildeEqual;": "\u2244", - "NotTildeFullEqual;": "\u2247", - "NotTildeTilde;": "\u2249", - "NotVerticalBar;": "\u2224", - "npar;": "\u2226", - "nparallel;": "\u2226", - "nparsl;": "\u2AFD\u20E5", - "npart;": "\u2202\u0338", - "npolint;": "\u2A14", - "npr;": "\u2280", - "nprcue;": "\u22E0", - "npre;": "\u2AAF\u0338", - "nprec;": "\u2280", - "npreceq;": "\u2AAF\u0338", - "nrArr;": "\u21CF", - "nrarr;": "\u219B", - "nrarrc;": "\u2933\u0338", - "nrarrw;": "\u219D\u0338", - "nRightarrow;": "\u21CF", - "nrightarrow;": "\u219B", - "nrtri;": "\u22EB", - "nrtrie;": "\u22ED", - "nsc;": "\u2281", - "nsccue;": "\u22E1", - "nsce;": "\u2AB0\u0338", - "Nscr;": "\uD835\uDCA9", - "nscr;": "\uD835\uDCC3", - "nshortmid;": "\u2224", - "nshortparallel;": "\u2226", - "nsim;": "\u2241", - "nsime;": "\u2244", - "nsimeq;": "\u2244", - "nsmid;": "\u2224", - "nspar;": "\u2226", - "nsqsube;": "\u22E2", - "nsqsupe;": "\u22E3", - "nsub;": "\u2284", - "nsubE;": "\u2AC5\u0338", - "nsube;": "\u2288", - "nsubset;": "\u2282\u20D2", - "nsubseteq;": "\u2288", - "nsubseteqq;": "\u2AC5\u0338", - "nsucc;": "\u2281", - "nsucceq;": "\u2AB0\u0338", - "nsup;": "\u2285", - "nsupE;": "\u2AC6\u0338", - "nsupe;": "\u2289", - "nsupset;": "\u2283\u20D2", - "nsupseteq;": "\u2289", - "nsupseteqq;": "\u2AC6\u0338", - "ntgl;": "\u2279", - "Ntilde;": "\u00D1", - "Ntilde": "\u00D1", - "ntilde;": "\u00F1", - "ntilde": "\u00F1", - "ntlg;": "\u2278", - "ntriangleleft;": "\u22EA", - "ntrianglelefteq;": "\u22EC", - "ntriangleright;": "\u22EB", - "ntrianglerighteq;": "\u22ED", - "Nu;": "\u039D", - "nu;": "\u03BD", - "num;": "#", - "numero;": "\u2116", - "numsp;": "\u2007", - "nvap;": "\u224D\u20D2", - "nVDash;": "\u22AF", - "nVdash;": "\u22AE", - "nvDash;": "\u22AD", - "nvdash;": "\u22AC", - "nvge;": "\u2265\u20D2", - "nvgt;": ">\u20D2", - "nvHarr;": "\u2904", - "nvinfin;": "\u29DE", - "nvlArr;": "\u2902", - "nvle;": "\u2264\u20D2", - "nvlt;": "<\u20D2", - "nvltrie;": "\u22B4\u20D2", - "nvrArr;": "\u2903", - "nvrtrie;": "\u22B5\u20D2", - "nvsim;": "\u223C\u20D2", - "nwarhk;": "\u2923", - "nwArr;": "\u21D6", - "nwarr;": "\u2196", - "nwarrow;": "\u2196", - "nwnear;": "\u2927", - "Oacute;": "\u00D3", - "Oacute": "\u00D3", - "oacute;": "\u00F3", - "oacute": "\u00F3", - "oast;": "\u229B", - "ocir;": "\u229A", - "Ocirc;": "\u00D4", - "Ocirc": "\u00D4", - "ocirc;": "\u00F4", - "ocirc": "\u00F4", - "Ocy;": "\u041E", - "ocy;": "\u043E", - "odash;": "\u229D", - "Odblac;": "\u0150", - "odblac;": "\u0151", - "odiv;": "\u2A38", - "odot;": "\u2299", - "odsold;": "\u29BC", - "OElig;": "\u0152", - "oelig;": "\u0153", - "ofcir;": "\u29BF", - "Ofr;": "\uD835\uDD12", - "ofr;": "\uD835\uDD2C", - "ogon;": "\u02DB", - "Ograve;": "\u00D2", - "Ograve": "\u00D2", - "ograve;": "\u00F2", - "ograve": "\u00F2", - "ogt;": "\u29C1", - "ohbar;": "\u29B5", - "ohm;": "\u03A9", - "oint;": "\u222E", - "olarr;": "\u21BA", - "olcir;": "\u29BE", - "olcross;": "\u29BB", - "oline;": "\u203E", - "olt;": "\u29C0", - "Omacr;": "\u014C", - "omacr;": "\u014D", - "Omega;": "\u03A9", - "omega;": "\u03C9", - "Omicron;": "\u039F", - "omicron;": "\u03BF", - "omid;": "\u29B6", - "ominus;": "\u2296", - "Oopf;": "\uD835\uDD46", - "oopf;": "\uD835\uDD60", - "opar;": "\u29B7", - "OpenCurlyDoubleQuote;": "\u201C", - "OpenCurlyQuote;": "\u2018", - "operp;": "\u29B9", - "oplus;": "\u2295", - "Or;": "\u2A54", - "or;": "\u2228", - "orarr;": "\u21BB", - "ord;": "\u2A5D", - "order;": "\u2134", - "orderof;": "\u2134", - "ordf;": "\u00AA", - "ordf": "\u00AA", - "ordm;": "\u00BA", - "ordm": "\u00BA", - "origof;": "\u22B6", - "oror;": "\u2A56", - "orslope;": "\u2A57", - "orv;": "\u2A5B", - "oS;": "\u24C8", - "Oscr;": "\uD835\uDCAA", - "oscr;": "\u2134", - "Oslash;": "\u00D8", - "Oslash": "\u00D8", - "oslash;": "\u00F8", - "oslash": "\u00F8", - "osol;": "\u2298", - "Otilde;": "\u00D5", - "Otilde": "\u00D5", - "otilde;": "\u00F5", - "otilde": "\u00F5", - "Otimes;": "\u2A37", - "otimes;": "\u2297", - "otimesas;": "\u2A36", - "Ouml;": "\u00D6", - "Ouml": "\u00D6", - "ouml;": "\u00F6", - "ouml": "\u00F6", - "ovbar;": "\u233D", - "OverBar;": "\u203E", - "OverBrace;": "\u23DE", - "OverBracket;": "\u23B4", - "OverParenthesis;": "\u23DC", - "par;": "\u2225", - "para;": "\u00B6", - "para": "\u00B6", - "parallel;": "\u2225", - "parsim;": "\u2AF3", - "parsl;": "\u2AFD", - "part;": "\u2202", - "PartialD;": "\u2202", - "Pcy;": "\u041F", - "pcy;": "\u043F", - "percnt;": "%", - "period;": ".", - "permil;": "\u2030", - "perp;": "\u22A5", - "pertenk;": "\u2031", - "Pfr;": "\uD835\uDD13", - "pfr;": "\uD835\uDD2D", - "Phi;": "\u03A6", - "phi;": "\u03C6", - "phiv;": "\u03D5", - "phmmat;": "\u2133", - "phone;": "\u260E", - "Pi;": "\u03A0", - "pi;": "\u03C0", - "pitchfork;": "\u22D4", - "piv;": "\u03D6", - "planck;": "\u210F", - "planckh;": "\u210E", - "plankv;": "\u210F", - "plus;": "+", - "plusacir;": "\u2A23", - "plusb;": "\u229E", - "pluscir;": "\u2A22", - "plusdo;": "\u2214", - "plusdu;": "\u2A25", - "pluse;": "\u2A72", - "PlusMinus;": "\u00B1", - "plusmn;": "\u00B1", - "plusmn": "\u00B1", - "plussim;": "\u2A26", - "plustwo;": "\u2A27", - "pm;": "\u00B1", - "Poincareplane;": "\u210C", - "pointint;": "\u2A15", - "Popf;": "\u2119", - "popf;": "\uD835\uDD61", - "pound;": "\u00A3", - "pound": "\u00A3", - "Pr;": "\u2ABB", - "pr;": "\u227A", - "prap;": "\u2AB7", - "prcue;": "\u227C", - "prE;": "\u2AB3", - "pre;": "\u2AAF", - "prec;": "\u227A", - "precapprox;": "\u2AB7", - "preccurlyeq;": "\u227C", - "Precedes;": "\u227A", - "PrecedesEqual;": "\u2AAF", - "PrecedesSlantEqual;": "\u227C", - "PrecedesTilde;": "\u227E", - "preceq;": "\u2AAF", - "precnapprox;": "\u2AB9", - "precneqq;": "\u2AB5", - "precnsim;": "\u22E8", - "precsim;": "\u227E", - "Prime;": "\u2033", - "prime;": "\u2032", - "primes;": "\u2119", - "prnap;": "\u2AB9", - "prnE;": "\u2AB5", - "prnsim;": "\u22E8", - "prod;": "\u220F", - "Product;": "\u220F", - "profalar;": "\u232E", - "profline;": "\u2312", - "profsurf;": "\u2313", - "prop;": "\u221D", - "Proportion;": "\u2237", - "Proportional;": "\u221D", - "propto;": "\u221D", - "prsim;": "\u227E", - "prurel;": "\u22B0", - "Pscr;": "\uD835\uDCAB", - "pscr;": "\uD835\uDCC5", - "Psi;": "\u03A8", - "psi;": "\u03C8", - "puncsp;": "\u2008", - "Qfr;": "\uD835\uDD14", - "qfr;": "\uD835\uDD2E", - "qint;": "\u2A0C", - "Qopf;": "\u211A", - "qopf;": "\uD835\uDD62", - "qprime;": "\u2057", - "Qscr;": "\uD835\uDCAC", - "qscr;": "\uD835\uDCC6", - "quaternions;": "\u210D", - "quatint;": "\u2A16", - "quest;": "?", - "questeq;": "\u225F", - "QUOT;": "\"", - "QUOT": "\"", - "quot;": "\"", - "quot": "\"", - "rAarr;": "\u21DB", - "race;": "\u223D\u0331", - "Racute;": "\u0154", - "racute;": "\u0155", - "radic;": "\u221A", - "raemptyv;": "\u29B3", - "Rang;": "\u27EB", - "rang;": "\u27E9", - "rangd;": "\u2992", - "range;": "\u29A5", - "rangle;": "\u27E9", - "raquo;": "\u00BB", - "raquo": "\u00BB", - "Rarr;": "\u21A0", - "rArr;": "\u21D2", - "rarr;": "\u2192", - "rarrap;": "\u2975", - "rarrb;": "\u21E5", - "rarrbfs;": "\u2920", - "rarrc;": "\u2933", - "rarrfs;": "\u291E", - "rarrhk;": "\u21AA", - "rarrlp;": "\u21AC", - "rarrpl;": "\u2945", - "rarrsim;": "\u2974", - "Rarrtl;": "\u2916", - "rarrtl;": "\u21A3", - "rarrw;": "\u219D", - "rAtail;": "\u291C", - "ratail;": "\u291A", - "ratio;": "\u2236", - "rationals;": "\u211A", - "RBarr;": "\u2910", - "rBarr;": "\u290F", - "rbarr;": "\u290D", - "rbbrk;": "\u2773", - "rbrace;": "}", - "rbrack;": "]", - "rbrke;": "\u298C", - "rbrksld;": "\u298E", - "rbrkslu;": "\u2990", - "Rcaron;": "\u0158", - "rcaron;": "\u0159", - "Rcedil;": "\u0156", - "rcedil;": "\u0157", - "rceil;": "\u2309", - "rcub;": "}", - "Rcy;": "\u0420", - "rcy;": "\u0440", - "rdca;": "\u2937", - "rdldhar;": "\u2969", - "rdquo;": "\u201D", - "rdquor;": "\u201D", - "rdsh;": "\u21B3", - "Re;": "\u211C", - "real;": "\u211C", - "realine;": "\u211B", - "realpart;": "\u211C", - "reals;": "\u211D", - "rect;": "\u25AD", - "REG;": "\u00AE", - "REG": "\u00AE", - "reg;": "\u00AE", - "reg": "\u00AE", - "ReverseElement;": "\u220B", - "ReverseEquilibrium;": "\u21CB", - "ReverseUpEquilibrium;": "\u296F", - "rfisht;": "\u297D", - "rfloor;": "\u230B", - "Rfr;": "\u211C", - "rfr;": "\uD835\uDD2F", - "rHar;": "\u2964", - "rhard;": "\u21C1", - "rharu;": "\u21C0", - "rharul;": "\u296C", - "Rho;": "\u03A1", - "rho;": "\u03C1", - "rhov;": "\u03F1", - "RightAngleBracket;": "\u27E9", - "RightArrow;": "\u2192", - "Rightarrow;": "\u21D2", - "rightarrow;": "\u2192", - "RightArrowBar;": "\u21E5", - "RightArrowLeftArrow;": "\u21C4", - "rightarrowtail;": "\u21A3", - "RightCeiling;": "\u2309", - "RightDoubleBracket;": "\u27E7", - "RightDownTeeVector;": "\u295D", - "RightDownVector;": "\u21C2", - "RightDownVectorBar;": "\u2955", - "RightFloor;": "\u230B", - "rightharpoondown;": "\u21C1", - "rightharpoonup;": "\u21C0", - "rightleftarrows;": "\u21C4", - "rightleftharpoons;": "\u21CC", - "rightrightarrows;": "\u21C9", - "rightsquigarrow;": "\u219D", - "RightTee;": "\u22A2", - "RightTeeArrow;": "\u21A6", - "RightTeeVector;": "\u295B", - "rightthreetimes;": "\u22CC", - "RightTriangle;": "\u22B3", - "RightTriangleBar;": "\u29D0", - "RightTriangleEqual;": "\u22B5", - "RightUpDownVector;": "\u294F", - "RightUpTeeVector;": "\u295C", - "RightUpVector;": "\u21BE", - "RightUpVectorBar;": "\u2954", - "RightVector;": "\u21C0", - "RightVectorBar;": "\u2953", - "ring;": "\u02DA", - "risingdotseq;": "\u2253", - "rlarr;": "\u21C4", - "rlhar;": "\u21CC", - "rlm;": "\u200F", - "rmoust;": "\u23B1", - "rmoustache;": "\u23B1", - "rnmid;": "\u2AEE", - "roang;": "\u27ED", - "roarr;": "\u21FE", - "robrk;": "\u27E7", - "ropar;": "\u2986", - "Ropf;": "\u211D", - "ropf;": "\uD835\uDD63", - "roplus;": "\u2A2E", - "rotimes;": "\u2A35", - "RoundImplies;": "\u2970", - "rpar;": ")", - "rpargt;": "\u2994", - "rppolint;": "\u2A12", - "rrarr;": "\u21C9", - "Rrightarrow;": "\u21DB", - "rsaquo;": "\u203A", - "Rscr;": "\u211B", - "rscr;": "\uD835\uDCC7", - "Rsh;": "\u21B1", - "rsh;": "\u21B1", - "rsqb;": "]", - "rsquo;": "\u2019", - "rsquor;": "\u2019", - "rthree;": "\u22CC", - "rtimes;": "\u22CA", - "rtri;": "\u25B9", - "rtrie;": "\u22B5", - "rtrif;": "\u25B8", - "rtriltri;": "\u29CE", - "RuleDelayed;": "\u29F4", - "ruluhar;": "\u2968", - "rx;": "\u211E", - "Sacute;": "\u015A", - "sacute;": "\u015B", - "sbquo;": "\u201A", - "Sc;": "\u2ABC", - "sc;": "\u227B", - "scap;": "\u2AB8", - "Scaron;": "\u0160", - "scaron;": "\u0161", - "sccue;": "\u227D", - "scE;": "\u2AB4", - "sce;": "\u2AB0", - "Scedil;": "\u015E", - "scedil;": "\u015F", - "Scirc;": "\u015C", - "scirc;": "\u015D", - "scnap;": "\u2ABA", - "scnE;": "\u2AB6", - "scnsim;": "\u22E9", - "scpolint;": "\u2A13", - "scsim;": "\u227F", - "Scy;": "\u0421", - "scy;": "\u0441", - "sdot;": "\u22C5", - "sdotb;": "\u22A1", - "sdote;": "\u2A66", - "searhk;": "\u2925", - "seArr;": "\u21D8", - "searr;": "\u2198", - "searrow;": "\u2198", - "sect;": "\u00A7", - "sect": "\u00A7", - "semi;": ";", - "seswar;": "\u2929", - "setminus;": "\u2216", - "setmn;": "\u2216", - "sext;": "\u2736", - "Sfr;": "\uD835\uDD16", - "sfr;": "\uD835\uDD30", - "sfrown;": "\u2322", - "sharp;": "\u266F", - "SHCHcy;": "\u0429", - "shchcy;": "\u0449", - "SHcy;": "\u0428", - "shcy;": "\u0448", - "ShortDownArrow;": "\u2193", - "ShortLeftArrow;": "\u2190", - "shortmid;": "\u2223", - "shortparallel;": "\u2225", - "ShortRightArrow;": "\u2192", - "ShortUpArrow;": "\u2191", - "shy;": "\u00AD", - "shy": "\u00AD", - "Sigma;": "\u03A3", - "sigma;": "\u03C3", - "sigmaf;": "\u03C2", - "sigmav;": "\u03C2", - "sim;": "\u223C", - "simdot;": "\u2A6A", - "sime;": "\u2243", - "simeq;": "\u2243", - "simg;": "\u2A9E", - "simgE;": "\u2AA0", - "siml;": "\u2A9D", - "simlE;": "\u2A9F", - "simne;": "\u2246", - "simplus;": "\u2A24", - "simrarr;": "\u2972", - "slarr;": "\u2190", - "SmallCircle;": "\u2218", - "smallsetminus;": "\u2216", - "smashp;": "\u2A33", - "smeparsl;": "\u29E4", - "smid;": "\u2223", - "smile;": "\u2323", - "smt;": "\u2AAA", - "smte;": "\u2AAC", - "smtes;": "\u2AAC\uFE00", - "SOFTcy;": "\u042C", - "softcy;": "\u044C", - "sol;": "/", - "solb;": "\u29C4", - "solbar;": "\u233F", - "Sopf;": "\uD835\uDD4A", - "sopf;": "\uD835\uDD64", - "spades;": "\u2660", - "spadesuit;": "\u2660", - "spar;": "\u2225", - "sqcap;": "\u2293", - "sqcaps;": "\u2293\uFE00", - "sqcup;": "\u2294", - "sqcups;": "\u2294\uFE00", - "Sqrt;": "\u221A", - "sqsub;": "\u228F", - "sqsube;": "\u2291", - "sqsubset;": "\u228F", - "sqsubseteq;": "\u2291", - "sqsup;": "\u2290", - "sqsupe;": "\u2292", - "sqsupset;": "\u2290", - "sqsupseteq;": "\u2292", - "squ;": "\u25A1", - "Square;": "\u25A1", - "square;": "\u25A1", - "SquareIntersection;": "\u2293", - "SquareSubset;": "\u228F", - "SquareSubsetEqual;": "\u2291", - "SquareSuperset;": "\u2290", - "SquareSupersetEqual;": "\u2292", - "SquareUnion;": "\u2294", - "squarf;": "\u25AA", - "squf;": "\u25AA", - "srarr;": "\u2192", - "Sscr;": "\uD835\uDCAE", - "sscr;": "\uD835\uDCC8", - "ssetmn;": "\u2216", - "ssmile;": "\u2323", - "sstarf;": "\u22C6", - "Star;": "\u22C6", - "star;": "\u2606", - "starf;": "\u2605", - "straightepsilon;": "\u03F5", - "straightphi;": "\u03D5", - "strns;": "\u00AF", - "Sub;": "\u22D0", - "sub;": "\u2282", - "subdot;": "\u2ABD", - "subE;": "\u2AC5", - "sube;": "\u2286", - "subedot;": "\u2AC3", - "submult;": "\u2AC1", - "subnE;": "\u2ACB", - "subne;": "\u228A", - "subplus;": "\u2ABF", - "subrarr;": "\u2979", - "Subset;": "\u22D0", - "subset;": "\u2282", - "subseteq;": "\u2286", - "subseteqq;": "\u2AC5", - "SubsetEqual;": "\u2286", - "subsetneq;": "\u228A", - "subsetneqq;": "\u2ACB", - "subsim;": "\u2AC7", - "subsub;": "\u2AD5", - "subsup;": "\u2AD3", - "succ;": "\u227B", - "succapprox;": "\u2AB8", - "succcurlyeq;": "\u227D", - "Succeeds;": "\u227B", - "SucceedsEqual;": "\u2AB0", - "SucceedsSlantEqual;": "\u227D", - "SucceedsTilde;": "\u227F", - "succeq;": "\u2AB0", - "succnapprox;": "\u2ABA", - "succneqq;": "\u2AB6", - "succnsim;": "\u22E9", - "succsim;": "\u227F", - "SuchThat;": "\u220B", - "Sum;": "\u2211", - "sum;": "\u2211", - "sung;": "\u266A", - "Sup;": "\u22D1", - "sup;": "\u2283", - "sup1;": "\u00B9", - "sup1": "\u00B9", - "sup2;": "\u00B2", - "sup2": "\u00B2", - "sup3;": "\u00B3", - "sup3": "\u00B3", - "supdot;": "\u2ABE", - "supdsub;": "\u2AD8", - "supE;": "\u2AC6", - "supe;": "\u2287", - "supedot;": "\u2AC4", - "Superset;": "\u2283", - "SupersetEqual;": "\u2287", - "suphsol;": "\u27C9", - "suphsub;": "\u2AD7", - "suplarr;": "\u297B", - "supmult;": "\u2AC2", - "supnE;": "\u2ACC", - "supne;": "\u228B", - "supplus;": "\u2AC0", - "Supset;": "\u22D1", - "supset;": "\u2283", - "supseteq;": "\u2287", - "supseteqq;": "\u2AC6", - "supsetneq;": "\u228B", - "supsetneqq;": "\u2ACC", - "supsim;": "\u2AC8", - "supsub;": "\u2AD4", - "supsup;": "\u2AD6", - "swarhk;": "\u2926", - "swArr;": "\u21D9", - "swarr;": "\u2199", - "swarrow;": "\u2199", - "swnwar;": "\u292A", - "szlig;": "\u00DF", - "szlig": "\u00DF", - "Tab;": "\t", - "target;": "\u2316", - "Tau;": "\u03A4", - "tau;": "\u03C4", - "tbrk;": "\u23B4", - "Tcaron;": "\u0164", - "tcaron;": "\u0165", - "Tcedil;": "\u0162", - "tcedil;": "\u0163", - "Tcy;": "\u0422", - "tcy;": "\u0442", - "tdot;": "\u20DB", - "telrec;": "\u2315", - "Tfr;": "\uD835\uDD17", - "tfr;": "\uD835\uDD31", - "there4;": "\u2234", - "Therefore;": "\u2234", - "therefore;": "\u2234", - "Theta;": "\u0398", - "theta;": "\u03B8", - "thetasym;": "\u03D1", - "thetav;": "\u03D1", - "thickapprox;": "\u2248", - "thicksim;": "\u223C", - "ThickSpace;": "\u205F\u200A", - "thinsp;": "\u2009", - "ThinSpace;": "\u2009", - "thkap;": "\u2248", - "thksim;": "\u223C", - "THORN;": "\u00DE", - "THORN": "\u00DE", - "thorn;": "\u00FE", - "thorn": "\u00FE", - "Tilde;": "\u223C", - "tilde;": "\u02DC", - "TildeEqual;": "\u2243", - "TildeFullEqual;": "\u2245", - "TildeTilde;": "\u2248", - "times;": "\u00D7", - "times": "\u00D7", - "timesb;": "\u22A0", - "timesbar;": "\u2A31", - "timesd;": "\u2A30", - "tint;": "\u222D", - "toea;": "\u2928", - "top;": "\u22A4", - "topbot;": "\u2336", - "topcir;": "\u2AF1", - "Topf;": "\uD835\uDD4B", - "topf;": "\uD835\uDD65", - "topfork;": "\u2ADA", - "tosa;": "\u2929", - "tprime;": "\u2034", - "TRADE;": "\u2122", - "trade;": "\u2122", - "triangle;": "\u25B5", - "triangledown;": "\u25BF", - "triangleleft;": "\u25C3", - "trianglelefteq;": "\u22B4", - "triangleq;": "\u225C", - "triangleright;": "\u25B9", - "trianglerighteq;": "\u22B5", - "tridot;": "\u25EC", - "trie;": "\u225C", - "triminus;": "\u2A3A", - "TripleDot;": "\u20DB", - "triplus;": "\u2A39", - "trisb;": "\u29CD", - "tritime;": "\u2A3B", - "trpezium;": "\u23E2", - "Tscr;": "\uD835\uDCAF", - "tscr;": "\uD835\uDCC9", - "TScy;": "\u0426", - "tscy;": "\u0446", - "TSHcy;": "\u040B", - "tshcy;": "\u045B", - "Tstrok;": "\u0166", - "tstrok;": "\u0167", - "twixt;": "\u226C", - "twoheadleftarrow;": "\u219E", - "twoheadrightarrow;": "\u21A0", - "Uacute;": "\u00DA", - "Uacute": "\u00DA", - "uacute;": "\u00FA", - "uacute": "\u00FA", - "Uarr;": "\u219F", - "uArr;": "\u21D1", - "uarr;": "\u2191", - "Uarrocir;": "\u2949", - "Ubrcy;": "\u040E", - "ubrcy;": "\u045E", - "Ubreve;": "\u016C", - "ubreve;": "\u016D", - "Ucirc;": "\u00DB", - "Ucirc": "\u00DB", - "ucirc;": "\u00FB", - "ucirc": "\u00FB", - "Ucy;": "\u0423", - "ucy;": "\u0443", - "udarr;": "\u21C5", - "Udblac;": "\u0170", - "udblac;": "\u0171", - "udhar;": "\u296E", - "ufisht;": "\u297E", - "Ufr;": "\uD835\uDD18", - "ufr;": "\uD835\uDD32", - "Ugrave;": "\u00D9", - "Ugrave": "\u00D9", - "ugrave;": "\u00F9", - "ugrave": "\u00F9", - "uHar;": "\u2963", - "uharl;": "\u21BF", - "uharr;": "\u21BE", - "uhblk;": "\u2580", - "ulcorn;": "\u231C", - "ulcorner;": "\u231C", - "ulcrop;": "\u230F", - "ultri;": "\u25F8", - "Umacr;": "\u016A", - "umacr;": "\u016B", - "uml;": "\u00A8", - "uml": "\u00A8", - "UnderBar;": "_", - "UnderBrace;": "\u23DF", - "UnderBracket;": "\u23B5", - "UnderParenthesis;": "\u23DD", - "Union;": "\u22C3", - "UnionPlus;": "\u228E", - "Uogon;": "\u0172", - "uogon;": "\u0173", - "Uopf;": "\uD835\uDD4C", - "uopf;": "\uD835\uDD66", - "UpArrow;": "\u2191", - "Uparrow;": "\u21D1", - "uparrow;": "\u2191", - "UpArrowBar;": "\u2912", - "UpArrowDownArrow;": "\u21C5", - "UpDownArrow;": "\u2195", - "Updownarrow;": "\u21D5", - "updownarrow;": "\u2195", - "UpEquilibrium;": "\u296E", - "upharpoonleft;": "\u21BF", - "upharpoonright;": "\u21BE", - "uplus;": "\u228E", - "UpperLeftArrow;": "\u2196", - "UpperRightArrow;": "\u2197", - "Upsi;": "\u03D2", - "upsi;": "\u03C5", - "upsih;": "\u03D2", - "Upsilon;": "\u03A5", - "upsilon;": "\u03C5", - "UpTee;": "\u22A5", - "UpTeeArrow;": "\u21A5", - "upuparrows;": "\u21C8", - "urcorn;": "\u231D", - "urcorner;": "\u231D", - "urcrop;": "\u230E", - "Uring;": "\u016E", - "uring;": "\u016F", - "urtri;": "\u25F9", - "Uscr;": "\uD835\uDCB0", - "uscr;": "\uD835\uDCCA", - "utdot;": "\u22F0", - "Utilde;": "\u0168", - "utilde;": "\u0169", - "utri;": "\u25B5", - "utrif;": "\u25B4", - "uuarr;": "\u21C8", - "Uuml;": "\u00DC", - "Uuml": "\u00DC", - "uuml;": "\u00FC", - "uuml": "\u00FC", - "uwangle;": "\u29A7", - "vangrt;": "\u299C", - "varepsilon;": "\u03F5", - "varkappa;": "\u03F0", - "varnothing;": "\u2205", - "varphi;": "\u03D5", - "varpi;": "\u03D6", - "varpropto;": "\u221D", - "vArr;": "\u21D5", - "varr;": "\u2195", - "varrho;": "\u03F1", - "varsigma;": "\u03C2", - "varsubsetneq;": "\u228A\uFE00", - "varsubsetneqq;": "\u2ACB\uFE00", - "varsupsetneq;": "\u228B\uFE00", - "varsupsetneqq;": "\u2ACC\uFE00", - "vartheta;": "\u03D1", - "vartriangleleft;": "\u22B2", - "vartriangleright;": "\u22B3", - "Vbar;": "\u2AEB", - "vBar;": "\u2AE8", - "vBarv;": "\u2AE9", - "Vcy;": "\u0412", - "vcy;": "\u0432", - "VDash;": "\u22AB", - "Vdash;": "\u22A9", - "vDash;": "\u22A8", - "vdash;": "\u22A2", - "Vdashl;": "\u2AE6", - "Vee;": "\u22C1", - "vee;": "\u2228", - "veebar;": "\u22BB", - "veeeq;": "\u225A", - "vellip;": "\u22EE", - "Verbar;": "\u2016", - "verbar;": "|", - "Vert;": "\u2016", - "vert;": "|", - "VerticalBar;": "\u2223", - "VerticalLine;": "|", - "VerticalSeparator;": "\u2758", - "VerticalTilde;": "\u2240", - "VeryThinSpace;": "\u200A", - "Vfr;": "\uD835\uDD19", - "vfr;": "\uD835\uDD33", - "vltri;": "\u22B2", - "vnsub;": "\u2282\u20D2", - "vnsup;": "\u2283\u20D2", - "Vopf;": "\uD835\uDD4D", - "vopf;": "\uD835\uDD67", - "vprop;": "\u221D", - "vrtri;": "\u22B3", - "Vscr;": "\uD835\uDCB1", - "vscr;": "\uD835\uDCCB", - "vsubnE;": "\u2ACB\uFE00", - "vsubne;": "\u228A\uFE00", - "vsupnE;": "\u2ACC\uFE00", - "vsupne;": "\u228B\uFE00", - "Vvdash;": "\u22AA", - "vzigzag;": "\u299A", - "Wcirc;": "\u0174", - "wcirc;": "\u0175", - "wedbar;": "\u2A5F", - "Wedge;": "\u22C0", - "wedge;": "\u2227", - "wedgeq;": "\u2259", - "weierp;": "\u2118", - "Wfr;": "\uD835\uDD1A", - "wfr;": "\uD835\uDD34", - "Wopf;": "\uD835\uDD4E", - "wopf;": "\uD835\uDD68", - "wp;": "\u2118", - "wr;": "\u2240", - "wreath;": "\u2240", - "Wscr;": "\uD835\uDCB2", - "wscr;": "\uD835\uDCCC", - "xcap;": "\u22C2", - "xcirc;": "\u25EF", - "xcup;": "\u22C3", - "xdtri;": "\u25BD", - "Xfr;": "\uD835\uDD1B", - "xfr;": "\uD835\uDD35", - "xhArr;": "\u27FA", - "xharr;": "\u27F7", - "Xi;": "\u039E", - "xi;": "\u03BE", - "xlArr;": "\u27F8", - "xlarr;": "\u27F5", - "xmap;": "\u27FC", - "xnis;": "\u22FB", - "xodot;": "\u2A00", - "Xopf;": "\uD835\uDD4F", - "xopf;": "\uD835\uDD69", - "xoplus;": "\u2A01", - "xotime;": "\u2A02", - "xrArr;": "\u27F9", - "xrarr;": "\u27F6", - "Xscr;": "\uD835\uDCB3", - "xscr;": "\uD835\uDCCD", - "xsqcup;": "\u2A06", - "xuplus;": "\u2A04", - "xutri;": "\u25B3", - "xvee;": "\u22C1", - "xwedge;": "\u22C0", - "Yacute;": "\u00DD", - "Yacute": "\u00DD", - "yacute;": "\u00FD", - "yacute": "\u00FD", - "YAcy;": "\u042F", - "yacy;": "\u044F", - "Ycirc;": "\u0176", - "ycirc;": "\u0177", - "Ycy;": "\u042B", - "ycy;": "\u044B", - "yen;": "\u00A5", - "yen": "\u00A5", - "Yfr;": "\uD835\uDD1C", - "yfr;": "\uD835\uDD36", - "YIcy;": "\u0407", - "yicy;": "\u0457", - "Yopf;": "\uD835\uDD50", - "yopf;": "\uD835\uDD6A", - "Yscr;": "\uD835\uDCB4", - "yscr;": "\uD835\uDCCE", - "YUcy;": "\u042E", - "yucy;": "\u044E", - "Yuml;": "\u0178", - "yuml;": "\u00FF", - "yuml": "\u00FF", - "Zacute;": "\u0179", - "zacute;": "\u017A", - "Zcaron;": "\u017D", - "zcaron;": "\u017E", - "Zcy;": "\u0417", - "zcy;": "\u0437", - "Zdot;": "\u017B", - "zdot;": "\u017C", - "zeetrf;": "\u2128", - "ZeroWidthSpace;": "\u200B", - "Zeta;": "\u0396", - "zeta;": "\u03B6", - "Zfr;": "\u2128", - "zfr;": "\uD835\uDD37", - "ZHcy;": "\u0416", - "zhcy;": "\u0436", - "zigrarr;": "\u21DD", - "Zopf;": "\u2124", - "zopf;": "\uD835\uDD6B", - "Zscr;": "\uD835\uDCB5", - "zscr;": "\uD835\uDCCF", - "zwj;": "\u200D", - "zwnj;": "\u200C" -} \ No newline at end of file diff --git a/node_modules/ent/examples/simple.js b/node_modules/ent/examples/simple.js deleted file mode 100644 index 48c4e6f95..000000000 --- a/node_modules/ent/examples/simple.js +++ /dev/null @@ -1,3 +0,0 @@ -var ent = require('ent'); -console.log(ent.encode('©moo')) -console.log(ent.decode('π & ρ')); diff --git a/node_modules/ent/index.js b/node_modules/ent/index.js deleted file mode 100644 index 8dae62942..000000000 --- a/node_modules/ent/index.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.encode = require('./encode'); -exports.decode = require('./decode'); diff --git a/node_modules/ent/package.json b/node_modules/ent/package.json deleted file mode 100644 index f3d115ee3..000000000 --- a/node_modules/ent/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "_from": "ent@^2.2.0", - "_id": "ent@2.2.0", - "_inBundle": false, - "_integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "_location": "/ent", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ent@^2.2.0", - "name": "ent", - "escapedName": "ent", - "rawSpec": "^2.2.0", - "saveSpec": null, - "fetchSpec": "^2.2.0" - }, - "_requiredBy": [ - "/helper-md" - ], - "_resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "_shasum": "e964219325a21d05f44466a2f686ed6ce5f5dd1d", - "_spec": "ent@^2.2.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\helper-md", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "bugs": { - "url": "https://github.com/substack/node-ent/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Encode and decode HTML entities", - "devDependencies": { - "tape": "~2.3.2" - }, - "homepage": "https://github.com/substack/node-ent#readme", - "keywords": [ - "entities", - "entitify", - "entity", - "html", - "encode", - "decode" - ], - "license": "MIT", - "main": "./index.js", - "name": "ent", - "repository": { - "type": "git", - "url": "git+https://github.com/substack/node-ent.git" - }, - "scripts": { - "prepublish": "node build/index.js", - "test": "tape test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6..latest", - "ff/3.5", - "ff/latest", - "chrome/10", - "chrome/latest", - "safari/latest", - "opera/latest" - ] - }, - "version": "2.2.0" -} diff --git a/node_modules/ent/readme.markdown b/node_modules/ent/readme.markdown deleted file mode 100644 index a09b48079..000000000 --- a/node_modules/ent/readme.markdown +++ /dev/null @@ -1,71 +0,0 @@ -# ent - -Encode and decode HTML entities - -[![browser support](http://ci.testling.com/substack/node-ent.png)](http://ci.testling.com/substack/node-ent) - -[![build status](https://secure.travis-ci.org/substack/node-ent.png)](http://travis-ci.org/substack/node-ent) - -# example - -``` js -var ent = require('ent'); -console.log(ent.encode('©moo')) -console.log(ent.decode('π & ρ')); -``` - -``` -<span>©moo</span> -π & ρ -``` - -![ent](http://substack.net/images/ent.png) - -# methods - -``` js -var ent = require('ent'); -var encode = require('ent/encode'); -var decode = require('ent/decode'); -``` - -## encode(str, opts={}) - -Escape unsafe characters in `str` with html entities. - -By default, entities are encoded with numeric decimal codes. - -If `opts.numeric` is false or `opts.named` is true, encoding will used named -codes like `π`. - -If `opts.special` is set to an Object, the key names will be forced -to be encoded (defaults to forcing: `<>'"&`). For example: - -``` js -console.log(encode('hello', { special: { l: true } })); -``` - -``` -hello -``` - -## decode(str) - -Convert html entities in `str` back to raw text. - -# credits - -HTML entity tables shamelessly lifted from perl's -[HTML::Entities](http://cpansearch.perl.org/src/GAAS/HTML-Parser-3.68/lib/HTML/Entities.pm) - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install ent -``` - -# license - -MIT diff --git a/node_modules/ent/reversed.json b/node_modules/ent/reversed.json deleted file mode 100644 index d9a53a5f5..000000000 --- a/node_modules/ent/reversed.json +++ /dev/null @@ -1,1315 +0,0 @@ -{ - "9": "Tab;", - "10": "NewLine;", - "33": "excl;", - "34": "quot;", - "35": "num;", - "36": "dollar;", - "37": "percnt;", - "38": "amp;", - "39": "apos;", - "40": "lpar;", - "41": "rpar;", - "42": "midast;", - "43": "plus;", - "44": "comma;", - "46": "period;", - "47": "sol;", - "58": "colon;", - "59": "semi;", - "60": "lt;", - "61": "equals;", - "62": "gt;", - "63": "quest;", - "64": "commat;", - "91": "lsqb;", - "92": "bsol;", - "93": "rsqb;", - "94": "Hat;", - "95": "UnderBar;", - "96": "grave;", - "123": "lcub;", - "124": "VerticalLine;", - "125": "rcub;", - "160": "NonBreakingSpace;", - "161": "iexcl;", - "162": "cent;", - "163": "pound;", - "164": "curren;", - "165": "yen;", - "166": "brvbar;", - "167": "sect;", - "168": "uml;", - "169": "copy;", - "170": "ordf;", - "171": "laquo;", - "172": "not;", - "173": "shy;", - "174": "reg;", - "175": "strns;", - "176": "deg;", - "177": "pm;", - "178": "sup2;", - "179": "sup3;", - "180": "DiacriticalAcute;", - "181": "micro;", - "182": "para;", - "183": "middot;", - "184": "Cedilla;", - "185": "sup1;", - "186": "ordm;", - "187": "raquo;", - "188": "frac14;", - "189": "half;", - "190": "frac34;", - "191": "iquest;", - "192": "Agrave;", - "193": "Aacute;", - "194": "Acirc;", - "195": "Atilde;", - "196": "Auml;", - "197": "Aring;", - "198": "AElig;", - "199": "Ccedil;", - "200": "Egrave;", - "201": "Eacute;", - "202": "Ecirc;", - "203": "Euml;", - "204": "Igrave;", - "205": "Iacute;", - "206": "Icirc;", - "207": "Iuml;", - "208": "ETH;", - "209": "Ntilde;", - "210": "Ograve;", - "211": "Oacute;", - "212": "Ocirc;", - "213": "Otilde;", - "214": "Ouml;", - "215": "times;", - "216": "Oslash;", - "217": "Ugrave;", - "218": "Uacute;", - "219": "Ucirc;", - "220": "Uuml;", - "221": "Yacute;", - "222": "THORN;", - "223": "szlig;", - "224": "agrave;", - "225": "aacute;", - "226": "acirc;", - "227": "atilde;", - "228": "auml;", - "229": "aring;", - "230": "aelig;", - "231": "ccedil;", - "232": "egrave;", - "233": "eacute;", - "234": "ecirc;", - "235": "euml;", - "236": "igrave;", - "237": "iacute;", - "238": "icirc;", - "239": "iuml;", - "240": "eth;", - "241": "ntilde;", - "242": "ograve;", - "243": "oacute;", - "244": "ocirc;", - "245": "otilde;", - "246": "ouml;", - "247": "divide;", - "248": "oslash;", - "249": "ugrave;", - "250": "uacute;", - "251": "ucirc;", - "252": "uuml;", - "253": "yacute;", - "254": "thorn;", - "255": "yuml;", - "256": "Amacr;", - "257": "amacr;", - "258": "Abreve;", - "259": "abreve;", - "260": "Aogon;", - "261": "aogon;", - "262": "Cacute;", - "263": "cacute;", - "264": "Ccirc;", - "265": "ccirc;", - "266": "Cdot;", - "267": "cdot;", - "268": "Ccaron;", - "269": "ccaron;", - "270": "Dcaron;", - "271": "dcaron;", - "272": "Dstrok;", - "273": "dstrok;", - "274": "Emacr;", - "275": "emacr;", - "278": "Edot;", - "279": "edot;", - "280": "Eogon;", - "281": "eogon;", - "282": "Ecaron;", - "283": "ecaron;", - "284": "Gcirc;", - "285": "gcirc;", - "286": "Gbreve;", - "287": "gbreve;", - "288": "Gdot;", - "289": "gdot;", - "290": "Gcedil;", - "292": "Hcirc;", - "293": "hcirc;", - "294": "Hstrok;", - "295": "hstrok;", - "296": "Itilde;", - "297": "itilde;", - "298": "Imacr;", - "299": "imacr;", - "302": "Iogon;", - "303": "iogon;", - "304": "Idot;", - "305": "inodot;", - "306": "IJlig;", - "307": "ijlig;", - "308": "Jcirc;", - "309": "jcirc;", - "310": "Kcedil;", - "311": "kcedil;", - "312": "kgreen;", - "313": "Lacute;", - "314": "lacute;", - "315": "Lcedil;", - "316": "lcedil;", - "317": "Lcaron;", - "318": "lcaron;", - "319": "Lmidot;", - "320": "lmidot;", - "321": "Lstrok;", - "322": "lstrok;", - "323": "Nacute;", - "324": "nacute;", - "325": "Ncedil;", - "326": "ncedil;", - "327": "Ncaron;", - "328": "ncaron;", - "329": "napos;", - "330": "ENG;", - "331": "eng;", - "332": "Omacr;", - "333": "omacr;", - "336": "Odblac;", - "337": "odblac;", - "338": "OElig;", - "339": "oelig;", - "340": "Racute;", - "341": "racute;", - "342": "Rcedil;", - "343": "rcedil;", - "344": "Rcaron;", - "345": "rcaron;", - "346": "Sacute;", - "347": "sacute;", - "348": "Scirc;", - "349": "scirc;", - "350": "Scedil;", - "351": "scedil;", - "352": "Scaron;", - "353": "scaron;", - "354": "Tcedil;", - "355": "tcedil;", - "356": "Tcaron;", - "357": "tcaron;", - "358": "Tstrok;", - "359": "tstrok;", - "360": "Utilde;", - "361": "utilde;", - "362": "Umacr;", - "363": "umacr;", - "364": "Ubreve;", - "365": "ubreve;", - "366": "Uring;", - "367": "uring;", - "368": "Udblac;", - "369": "udblac;", - "370": "Uogon;", - "371": "uogon;", - "372": "Wcirc;", - "373": "wcirc;", - "374": "Ycirc;", - "375": "ycirc;", - "376": "Yuml;", - "377": "Zacute;", - "378": "zacute;", - "379": "Zdot;", - "380": "zdot;", - "381": "Zcaron;", - "382": "zcaron;", - "402": "fnof;", - "437": "imped;", - "501": "gacute;", - "567": "jmath;", - "710": "circ;", - "711": "Hacek;", - "728": "breve;", - "729": "dot;", - "730": "ring;", - "731": "ogon;", - "732": "tilde;", - "733": "DiacriticalDoubleAcute;", - "785": "DownBreve;", - "913": "Alpha;", - "914": "Beta;", - "915": "Gamma;", - "916": "Delta;", - "917": "Epsilon;", - "918": "Zeta;", - "919": "Eta;", - "920": "Theta;", - "921": "Iota;", - "922": "Kappa;", - "923": "Lambda;", - "924": "Mu;", - "925": "Nu;", - "926": "Xi;", - "927": "Omicron;", - "928": "Pi;", - "929": "Rho;", - "931": "Sigma;", - "932": "Tau;", - "933": "Upsilon;", - "934": "Phi;", - "935": "Chi;", - "936": "Psi;", - "937": "Omega;", - "945": "alpha;", - "946": "beta;", - "947": "gamma;", - "948": "delta;", - "949": "epsilon;", - "950": "zeta;", - "951": "eta;", - "952": "theta;", - "953": "iota;", - "954": "kappa;", - "955": "lambda;", - "956": "mu;", - "957": "nu;", - "958": "xi;", - "959": "omicron;", - "960": "pi;", - "961": "rho;", - "962": "varsigma;", - "963": "sigma;", - "964": "tau;", - "965": "upsilon;", - "966": "phi;", - "967": "chi;", - "968": "psi;", - "969": "omega;", - "977": "vartheta;", - "978": "upsih;", - "981": "varphi;", - "982": "varpi;", - "988": "Gammad;", - "989": "gammad;", - "1008": "varkappa;", - "1009": "varrho;", - "1013": "varepsilon;", - "1014": "bepsi;", - "1025": "IOcy;", - "1026": "DJcy;", - "1027": "GJcy;", - "1028": "Jukcy;", - "1029": "DScy;", - "1030": "Iukcy;", - "1031": "YIcy;", - "1032": "Jsercy;", - "1033": "LJcy;", - "1034": "NJcy;", - "1035": "TSHcy;", - "1036": "KJcy;", - "1038": "Ubrcy;", - "1039": "DZcy;", - "1040": "Acy;", - "1041": "Bcy;", - "1042": "Vcy;", - "1043": "Gcy;", - "1044": "Dcy;", - "1045": "IEcy;", - "1046": "ZHcy;", - "1047": "Zcy;", - "1048": "Icy;", - "1049": "Jcy;", - "1050": "Kcy;", - "1051": "Lcy;", - "1052": "Mcy;", - "1053": "Ncy;", - "1054": "Ocy;", - "1055": "Pcy;", - "1056": "Rcy;", - "1057": "Scy;", - "1058": "Tcy;", - "1059": "Ucy;", - "1060": "Fcy;", - "1061": "KHcy;", - "1062": "TScy;", - "1063": "CHcy;", - "1064": "SHcy;", - "1065": "SHCHcy;", - "1066": "HARDcy;", - "1067": "Ycy;", - "1068": "SOFTcy;", - "1069": "Ecy;", - "1070": "YUcy;", - "1071": "YAcy;", - "1072": "acy;", - "1073": "bcy;", - "1074": "vcy;", - "1075": "gcy;", - "1076": "dcy;", - "1077": "iecy;", - "1078": "zhcy;", - "1079": "zcy;", - "1080": "icy;", - "1081": "jcy;", - "1082": "kcy;", - "1083": "lcy;", - "1084": "mcy;", - "1085": "ncy;", - "1086": "ocy;", - "1087": "pcy;", - "1088": "rcy;", - "1089": "scy;", - "1090": "tcy;", - "1091": "ucy;", - "1092": "fcy;", - "1093": "khcy;", - "1094": "tscy;", - "1095": "chcy;", - "1096": "shcy;", - "1097": "shchcy;", - "1098": "hardcy;", - "1099": "ycy;", - "1100": "softcy;", - "1101": "ecy;", - "1102": "yucy;", - "1103": "yacy;", - "1105": "iocy;", - "1106": "djcy;", - "1107": "gjcy;", - "1108": "jukcy;", - "1109": "dscy;", - "1110": "iukcy;", - "1111": "yicy;", - "1112": "jsercy;", - "1113": "ljcy;", - "1114": "njcy;", - "1115": "tshcy;", - "1116": "kjcy;", - "1118": "ubrcy;", - "1119": "dzcy;", - "8194": "ensp;", - "8195": "emsp;", - "8196": "emsp13;", - "8197": "emsp14;", - "8199": "numsp;", - "8200": "puncsp;", - "8201": "ThinSpace;", - "8202": "VeryThinSpace;", - "8203": "ZeroWidthSpace;", - "8204": "zwnj;", - "8205": "zwj;", - "8206": "lrm;", - "8207": "rlm;", - "8208": "hyphen;", - "8211": "ndash;", - "8212": "mdash;", - "8213": "horbar;", - "8214": "Vert;", - "8216": "OpenCurlyQuote;", - "8217": "rsquor;", - "8218": "sbquo;", - "8220": "OpenCurlyDoubleQuote;", - "8221": "rdquor;", - "8222": "ldquor;", - "8224": "dagger;", - "8225": "ddagger;", - "8226": "bullet;", - "8229": "nldr;", - "8230": "mldr;", - "8240": "permil;", - "8241": "pertenk;", - "8242": "prime;", - "8243": "Prime;", - "8244": "tprime;", - "8245": "bprime;", - "8249": "lsaquo;", - "8250": "rsaquo;", - "8254": "OverBar;", - "8257": "caret;", - "8259": "hybull;", - "8260": "frasl;", - "8271": "bsemi;", - "8279": "qprime;", - "8287": "MediumSpace;", - "8288": "NoBreak;", - "8289": "ApplyFunction;", - "8290": "it;", - "8291": "InvisibleComma;", - "8364": "euro;", - "8411": "TripleDot;", - "8412": "DotDot;", - "8450": "Copf;", - "8453": "incare;", - "8458": "gscr;", - "8459": "Hscr;", - "8460": "Poincareplane;", - "8461": "quaternions;", - "8462": "planckh;", - "8463": "plankv;", - "8464": "Iscr;", - "8465": "imagpart;", - "8466": "Lscr;", - "8467": "ell;", - "8469": "Nopf;", - "8470": "numero;", - "8471": "copysr;", - "8472": "wp;", - "8473": "primes;", - "8474": "rationals;", - "8475": "Rscr;", - "8476": "Rfr;", - "8477": "Ropf;", - "8478": "rx;", - "8482": "trade;", - "8484": "Zopf;", - "8487": "mho;", - "8488": "Zfr;", - "8489": "iiota;", - "8492": "Bscr;", - "8493": "Cfr;", - "8495": "escr;", - "8496": "expectation;", - "8497": "Fscr;", - "8499": "phmmat;", - "8500": "oscr;", - "8501": "aleph;", - "8502": "beth;", - "8503": "gimel;", - "8504": "daleth;", - "8517": "DD;", - "8518": "DifferentialD;", - "8519": "exponentiale;", - "8520": "ImaginaryI;", - "8531": "frac13;", - "8532": "frac23;", - "8533": "frac15;", - "8534": "frac25;", - "8535": "frac35;", - "8536": "frac45;", - "8537": "frac16;", - "8538": "frac56;", - "8539": "frac18;", - "8540": "frac38;", - "8541": "frac58;", - "8542": "frac78;", - "8592": "slarr;", - "8593": "uparrow;", - "8594": "srarr;", - "8595": "ShortDownArrow;", - "8596": "leftrightarrow;", - "8597": "varr;", - "8598": "UpperLeftArrow;", - "8599": "UpperRightArrow;", - "8600": "searrow;", - "8601": "swarrow;", - "8602": "nleftarrow;", - "8603": "nrightarrow;", - "8605": "rightsquigarrow;", - "8606": "twoheadleftarrow;", - "8607": "Uarr;", - "8608": "twoheadrightarrow;", - "8609": "Darr;", - "8610": "leftarrowtail;", - "8611": "rightarrowtail;", - "8612": "mapstoleft;", - "8613": "UpTeeArrow;", - "8614": "RightTeeArrow;", - "8615": "mapstodown;", - "8617": "larrhk;", - "8618": "rarrhk;", - "8619": "looparrowleft;", - "8620": "rarrlp;", - "8621": "leftrightsquigarrow;", - "8622": "nleftrightarrow;", - "8624": "lsh;", - "8625": "rsh;", - "8626": "ldsh;", - "8627": "rdsh;", - "8629": "crarr;", - "8630": "curvearrowleft;", - "8631": "curvearrowright;", - "8634": "olarr;", - "8635": "orarr;", - "8636": "lharu;", - "8637": "lhard;", - "8638": "upharpoonright;", - "8639": "upharpoonleft;", - "8640": "RightVector;", - "8641": "rightharpoondown;", - "8642": "RightDownVector;", - "8643": "LeftDownVector;", - "8644": "rlarr;", - "8645": "UpArrowDownArrow;", - "8646": "lrarr;", - "8647": "llarr;", - "8648": "uuarr;", - "8649": "rrarr;", - "8650": "downdownarrows;", - "8651": "ReverseEquilibrium;", - "8652": "rlhar;", - "8653": "nLeftarrow;", - "8654": "nLeftrightarrow;", - "8655": "nRightarrow;", - "8656": "Leftarrow;", - "8657": "Uparrow;", - "8658": "Rightarrow;", - "8659": "Downarrow;", - "8660": "Leftrightarrow;", - "8661": "vArr;", - "8662": "nwArr;", - "8663": "neArr;", - "8664": "seArr;", - "8665": "swArr;", - "8666": "Lleftarrow;", - "8667": "Rrightarrow;", - "8669": "zigrarr;", - "8676": "LeftArrowBar;", - "8677": "RightArrowBar;", - "8693": "duarr;", - "8701": "loarr;", - "8702": "roarr;", - "8703": "hoarr;", - "8704": "forall;", - "8705": "complement;", - "8706": "PartialD;", - "8707": "Exists;", - "8708": "NotExists;", - "8709": "varnothing;", - "8711": "nabla;", - "8712": "isinv;", - "8713": "notinva;", - "8715": "SuchThat;", - "8716": "NotReverseElement;", - "8719": "Product;", - "8720": "Coproduct;", - "8721": "sum;", - "8722": "minus;", - "8723": "mp;", - "8724": "plusdo;", - "8726": "ssetmn;", - "8727": "lowast;", - "8728": "SmallCircle;", - "8730": "Sqrt;", - "8733": "vprop;", - "8734": "infin;", - "8735": "angrt;", - "8736": "angle;", - "8737": "measuredangle;", - "8738": "angsph;", - "8739": "VerticalBar;", - "8740": "nsmid;", - "8741": "spar;", - "8742": "nspar;", - "8743": "wedge;", - "8744": "vee;", - "8745": "cap;", - "8746": "cup;", - "8747": "Integral;", - "8748": "Int;", - "8749": "tint;", - "8750": "oint;", - "8751": "DoubleContourIntegral;", - "8752": "Cconint;", - "8753": "cwint;", - "8754": "cwconint;", - "8755": "CounterClockwiseContourIntegral;", - "8756": "therefore;", - "8757": "because;", - "8758": "ratio;", - "8759": "Proportion;", - "8760": "minusd;", - "8762": "mDDot;", - "8763": "homtht;", - "8764": "Tilde;", - "8765": "bsim;", - "8766": "mstpos;", - "8767": "acd;", - "8768": "wreath;", - "8769": "nsim;", - "8770": "esim;", - "8771": "TildeEqual;", - "8772": "nsimeq;", - "8773": "TildeFullEqual;", - "8774": "simne;", - "8775": "NotTildeFullEqual;", - "8776": "TildeTilde;", - "8777": "NotTildeTilde;", - "8778": "approxeq;", - "8779": "apid;", - "8780": "bcong;", - "8781": "CupCap;", - "8782": "HumpDownHump;", - "8783": "HumpEqual;", - "8784": "esdot;", - "8785": "eDot;", - "8786": "fallingdotseq;", - "8787": "risingdotseq;", - "8788": "coloneq;", - "8789": "eqcolon;", - "8790": "eqcirc;", - "8791": "cire;", - "8793": "wedgeq;", - "8794": "veeeq;", - "8796": "trie;", - "8799": "questeq;", - "8800": "NotEqual;", - "8801": "equiv;", - "8802": "NotCongruent;", - "8804": "leq;", - "8805": "GreaterEqual;", - "8806": "LessFullEqual;", - "8807": "GreaterFullEqual;", - "8808": "lneqq;", - "8809": "gneqq;", - "8810": "NestedLessLess;", - "8811": "NestedGreaterGreater;", - "8812": "twixt;", - "8813": "NotCupCap;", - "8814": "NotLess;", - "8815": "NotGreater;", - "8816": "NotLessEqual;", - "8817": "NotGreaterEqual;", - "8818": "lsim;", - "8819": "gtrsim;", - "8820": "NotLessTilde;", - "8821": "NotGreaterTilde;", - "8822": "lg;", - "8823": "gtrless;", - "8824": "ntlg;", - "8825": "ntgl;", - "8826": "Precedes;", - "8827": "Succeeds;", - "8828": "PrecedesSlantEqual;", - "8829": "SucceedsSlantEqual;", - "8830": "prsim;", - "8831": "succsim;", - "8832": "nprec;", - "8833": "nsucc;", - "8834": "subset;", - "8835": "supset;", - "8836": "nsub;", - "8837": "nsup;", - "8838": "SubsetEqual;", - "8839": "supseteq;", - "8840": "nsubseteq;", - "8841": "nsupseteq;", - "8842": "subsetneq;", - "8843": "supsetneq;", - "8845": "cupdot;", - "8846": "uplus;", - "8847": "SquareSubset;", - "8848": "SquareSuperset;", - "8849": "SquareSubsetEqual;", - "8850": "SquareSupersetEqual;", - "8851": "SquareIntersection;", - "8852": "SquareUnion;", - "8853": "oplus;", - "8854": "ominus;", - "8855": "otimes;", - "8856": "osol;", - "8857": "odot;", - "8858": "ocir;", - "8859": "oast;", - "8861": "odash;", - "8862": "plusb;", - "8863": "minusb;", - "8864": "timesb;", - "8865": "sdotb;", - "8866": "vdash;", - "8867": "LeftTee;", - "8868": "top;", - "8869": "UpTee;", - "8871": "models;", - "8872": "vDash;", - "8873": "Vdash;", - "8874": "Vvdash;", - "8875": "VDash;", - "8876": "nvdash;", - "8877": "nvDash;", - "8878": "nVdash;", - "8879": "nVDash;", - "8880": "prurel;", - "8882": "vltri;", - "8883": "vrtri;", - "8884": "trianglelefteq;", - "8885": "trianglerighteq;", - "8886": "origof;", - "8887": "imof;", - "8888": "mumap;", - "8889": "hercon;", - "8890": "intercal;", - "8891": "veebar;", - "8893": "barvee;", - "8894": "angrtvb;", - "8895": "lrtri;", - "8896": "xwedge;", - "8897": "xvee;", - "8898": "xcap;", - "8899": "xcup;", - "8900": "diamond;", - "8901": "sdot;", - "8902": "Star;", - "8903": "divonx;", - "8904": "bowtie;", - "8905": "ltimes;", - "8906": "rtimes;", - "8907": "lthree;", - "8908": "rthree;", - "8909": "bsime;", - "8910": "cuvee;", - "8911": "cuwed;", - "8912": "Subset;", - "8913": "Supset;", - "8914": "Cap;", - "8915": "Cup;", - "8916": "pitchfork;", - "8917": "epar;", - "8918": "ltdot;", - "8919": "gtrdot;", - "8920": "Ll;", - "8921": "ggg;", - "8922": "LessEqualGreater;", - "8923": "gtreqless;", - "8926": "curlyeqprec;", - "8927": "curlyeqsucc;", - "8928": "nprcue;", - "8929": "nsccue;", - "8930": "nsqsube;", - "8931": "nsqsupe;", - "8934": "lnsim;", - "8935": "gnsim;", - "8936": "prnsim;", - "8937": "succnsim;", - "8938": "ntriangleleft;", - "8939": "ntriangleright;", - "8940": "ntrianglelefteq;", - "8941": "ntrianglerighteq;", - "8942": "vellip;", - "8943": "ctdot;", - "8944": "utdot;", - "8945": "dtdot;", - "8946": "disin;", - "8947": "isinsv;", - "8948": "isins;", - "8949": "isindot;", - "8950": "notinvc;", - "8951": "notinvb;", - "8953": "isinE;", - "8954": "nisd;", - "8955": "xnis;", - "8956": "nis;", - "8957": "notnivc;", - "8958": "notnivb;", - "8965": "barwedge;", - "8966": "doublebarwedge;", - "8968": "LeftCeiling;", - "8969": "RightCeiling;", - "8970": "lfloor;", - "8971": "RightFloor;", - "8972": "drcrop;", - "8973": "dlcrop;", - "8974": "urcrop;", - "8975": "ulcrop;", - "8976": "bnot;", - "8978": "profline;", - "8979": "profsurf;", - "8981": "telrec;", - "8982": "target;", - "8988": "ulcorner;", - "8989": "urcorner;", - "8990": "llcorner;", - "8991": "lrcorner;", - "8994": "sfrown;", - "8995": "ssmile;", - "9005": "cylcty;", - "9006": "profalar;", - "9014": "topbot;", - "9021": "ovbar;", - "9023": "solbar;", - "9084": "angzarr;", - "9136": "lmoustache;", - "9137": "rmoustache;", - "9140": "tbrk;", - "9141": "UnderBracket;", - "9142": "bbrktbrk;", - "9180": "OverParenthesis;", - "9181": "UnderParenthesis;", - "9182": "OverBrace;", - "9183": "UnderBrace;", - "9186": "trpezium;", - "9191": "elinters;", - "9251": "blank;", - "9416": "oS;", - "9472": "HorizontalLine;", - "9474": "boxv;", - "9484": "boxdr;", - "9488": "boxdl;", - "9492": "boxur;", - "9496": "boxul;", - "9500": "boxvr;", - "9508": "boxvl;", - "9516": "boxhd;", - "9524": "boxhu;", - "9532": "boxvh;", - "9552": "boxH;", - "9553": "boxV;", - "9554": "boxdR;", - "9555": "boxDr;", - "9556": "boxDR;", - "9557": "boxdL;", - "9558": "boxDl;", - "9559": "boxDL;", - "9560": "boxuR;", - "9561": "boxUr;", - "9562": "boxUR;", - "9563": "boxuL;", - "9564": "boxUl;", - "9565": "boxUL;", - "9566": "boxvR;", - "9567": "boxVr;", - "9568": "boxVR;", - "9569": "boxvL;", - "9570": "boxVl;", - "9571": "boxVL;", - "9572": "boxHd;", - "9573": "boxhD;", - "9574": "boxHD;", - "9575": "boxHu;", - "9576": "boxhU;", - "9577": "boxHU;", - "9578": "boxvH;", - "9579": "boxVh;", - "9580": "boxVH;", - "9600": "uhblk;", - "9604": "lhblk;", - "9608": "block;", - "9617": "blk14;", - "9618": "blk12;", - "9619": "blk34;", - "9633": "square;", - "9642": "squf;", - "9643": "EmptyVerySmallSquare;", - "9645": "rect;", - "9646": "marker;", - "9649": "fltns;", - "9651": "xutri;", - "9652": "utrif;", - "9653": "utri;", - "9656": "rtrif;", - "9657": "triangleright;", - "9661": "xdtri;", - "9662": "dtrif;", - "9663": "triangledown;", - "9666": "ltrif;", - "9667": "triangleleft;", - "9674": "lozenge;", - "9675": "cir;", - "9708": "tridot;", - "9711": "xcirc;", - "9720": "ultri;", - "9721": "urtri;", - "9722": "lltri;", - "9723": "EmptySmallSquare;", - "9724": "FilledSmallSquare;", - "9733": "starf;", - "9734": "star;", - "9742": "phone;", - "9792": "female;", - "9794": "male;", - "9824": "spadesuit;", - "9827": "clubsuit;", - "9829": "heartsuit;", - "9830": "diams;", - "9834": "sung;", - "9837": "flat;", - "9838": "natural;", - "9839": "sharp;", - "10003": "checkmark;", - "10007": "cross;", - "10016": "maltese;", - "10038": "sext;", - "10072": "VerticalSeparator;", - "10098": "lbbrk;", - "10099": "rbbrk;", - "10184": "bsolhsub;", - "10185": "suphsol;", - "10214": "lobrk;", - "10215": "robrk;", - "10216": "LeftAngleBracket;", - "10217": "RightAngleBracket;", - "10218": "Lang;", - "10219": "Rang;", - "10220": "loang;", - "10221": "roang;", - "10229": "xlarr;", - "10230": "xrarr;", - "10231": "xharr;", - "10232": "xlArr;", - "10233": "xrArr;", - "10234": "xhArr;", - "10236": "xmap;", - "10239": "dzigrarr;", - "10498": "nvlArr;", - "10499": "nvrArr;", - "10500": "nvHarr;", - "10501": "Map;", - "10508": "lbarr;", - "10509": "rbarr;", - "10510": "lBarr;", - "10511": "rBarr;", - "10512": "RBarr;", - "10513": "DDotrahd;", - "10514": "UpArrowBar;", - "10515": "DownArrowBar;", - "10518": "Rarrtl;", - "10521": "latail;", - "10522": "ratail;", - "10523": "lAtail;", - "10524": "rAtail;", - "10525": "larrfs;", - "10526": "rarrfs;", - "10527": "larrbfs;", - "10528": "rarrbfs;", - "10531": "nwarhk;", - "10532": "nearhk;", - "10533": "searhk;", - "10534": "swarhk;", - "10535": "nwnear;", - "10536": "toea;", - "10537": "tosa;", - "10538": "swnwar;", - "10547": "rarrc;", - "10549": "cudarrr;", - "10550": "ldca;", - "10551": "rdca;", - "10552": "cudarrl;", - "10553": "larrpl;", - "10556": "curarrm;", - "10557": "cularrp;", - "10565": "rarrpl;", - "10568": "harrcir;", - "10569": "Uarrocir;", - "10570": "lurdshar;", - "10571": "ldrushar;", - "10574": "LeftRightVector;", - "10575": "RightUpDownVector;", - "10576": "DownLeftRightVector;", - "10577": "LeftUpDownVector;", - "10578": "LeftVectorBar;", - "10579": "RightVectorBar;", - "10580": "RightUpVectorBar;", - "10581": "RightDownVectorBar;", - "10582": "DownLeftVectorBar;", - "10583": "DownRightVectorBar;", - "10584": "LeftUpVectorBar;", - "10585": "LeftDownVectorBar;", - "10586": "LeftTeeVector;", - "10587": "RightTeeVector;", - "10588": "RightUpTeeVector;", - "10589": "RightDownTeeVector;", - "10590": "DownLeftTeeVector;", - "10591": "DownRightTeeVector;", - "10592": "LeftUpTeeVector;", - "10593": "LeftDownTeeVector;", - "10594": "lHar;", - "10595": "uHar;", - "10596": "rHar;", - "10597": "dHar;", - "10598": "luruhar;", - "10599": "ldrdhar;", - "10600": "ruluhar;", - "10601": "rdldhar;", - "10602": "lharul;", - "10603": "llhard;", - "10604": "rharul;", - "10605": "lrhard;", - "10606": "UpEquilibrium;", - "10607": "ReverseUpEquilibrium;", - "10608": "RoundImplies;", - "10609": "erarr;", - "10610": "simrarr;", - "10611": "larrsim;", - "10612": "rarrsim;", - "10613": "rarrap;", - "10614": "ltlarr;", - "10616": "gtrarr;", - "10617": "subrarr;", - "10619": "suplarr;", - "10620": "lfisht;", - "10621": "rfisht;", - "10622": "ufisht;", - "10623": "dfisht;", - "10629": "lopar;", - "10630": "ropar;", - "10635": "lbrke;", - "10636": "rbrke;", - "10637": "lbrkslu;", - "10638": "rbrksld;", - "10639": "lbrksld;", - "10640": "rbrkslu;", - "10641": "langd;", - "10642": "rangd;", - "10643": "lparlt;", - "10644": "rpargt;", - "10645": "gtlPar;", - "10646": "ltrPar;", - "10650": "vzigzag;", - "10652": "vangrt;", - "10653": "angrtvbd;", - "10660": "ange;", - "10661": "range;", - "10662": "dwangle;", - "10663": "uwangle;", - "10664": "angmsdaa;", - "10665": "angmsdab;", - "10666": "angmsdac;", - "10667": "angmsdad;", - "10668": "angmsdae;", - "10669": "angmsdaf;", - "10670": "angmsdag;", - "10671": "angmsdah;", - "10672": "bemptyv;", - "10673": "demptyv;", - "10674": "cemptyv;", - "10675": "raemptyv;", - "10676": "laemptyv;", - "10677": "ohbar;", - "10678": "omid;", - "10679": "opar;", - "10681": "operp;", - "10683": "olcross;", - "10684": "odsold;", - "10686": "olcir;", - "10687": "ofcir;", - "10688": "olt;", - "10689": "ogt;", - "10690": "cirscir;", - "10691": "cirE;", - "10692": "solb;", - "10693": "bsolb;", - "10697": "boxbox;", - "10701": "trisb;", - "10702": "rtriltri;", - "10703": "LeftTriangleBar;", - "10704": "RightTriangleBar;", - "10716": "iinfin;", - "10717": "infintie;", - "10718": "nvinfin;", - "10723": "eparsl;", - "10724": "smeparsl;", - "10725": "eqvparsl;", - "10731": "lozf;", - "10740": "RuleDelayed;", - "10742": "dsol;", - "10752": "xodot;", - "10753": "xoplus;", - "10754": "xotime;", - "10756": "xuplus;", - "10758": "xsqcup;", - "10764": "qint;", - "10765": "fpartint;", - "10768": "cirfnint;", - "10769": "awint;", - "10770": "rppolint;", - "10771": "scpolint;", - "10772": "npolint;", - "10773": "pointint;", - "10774": "quatint;", - "10775": "intlarhk;", - "10786": "pluscir;", - "10787": "plusacir;", - "10788": "simplus;", - "10789": "plusdu;", - "10790": "plussim;", - "10791": "plustwo;", - "10793": "mcomma;", - "10794": "minusdu;", - "10797": "loplus;", - "10798": "roplus;", - "10799": "Cross;", - "10800": "timesd;", - "10801": "timesbar;", - "10803": "smashp;", - "10804": "lotimes;", - "10805": "rotimes;", - "10806": "otimesas;", - "10807": "Otimes;", - "10808": "odiv;", - "10809": "triplus;", - "10810": "triminus;", - "10811": "tritime;", - "10812": "iprod;", - "10815": "amalg;", - "10816": "capdot;", - "10818": "ncup;", - "10819": "ncap;", - "10820": "capand;", - "10821": "cupor;", - "10822": "cupcap;", - "10823": "capcup;", - "10824": "cupbrcap;", - "10825": "capbrcup;", - "10826": "cupcup;", - "10827": "capcap;", - "10828": "ccups;", - "10829": "ccaps;", - "10832": "ccupssm;", - "10835": "And;", - "10836": "Or;", - "10837": "andand;", - "10838": "oror;", - "10839": "orslope;", - "10840": "andslope;", - "10842": "andv;", - "10843": "orv;", - "10844": "andd;", - "10845": "ord;", - "10847": "wedbar;", - "10854": "sdote;", - "10858": "simdot;", - "10861": "congdot;", - "10862": "easter;", - "10863": "apacir;", - "10864": "apE;", - "10865": "eplus;", - "10866": "pluse;", - "10867": "Esim;", - "10868": "Colone;", - "10869": "Equal;", - "10871": "eDDot;", - "10872": "equivDD;", - "10873": "ltcir;", - "10874": "gtcir;", - "10875": "ltquest;", - "10876": "gtquest;", - "10877": "LessSlantEqual;", - "10878": "GreaterSlantEqual;", - "10879": "lesdot;", - "10880": "gesdot;", - "10881": "lesdoto;", - "10882": "gesdoto;", - "10883": "lesdotor;", - "10884": "gesdotol;", - "10885": "lessapprox;", - "10886": "gtrapprox;", - "10887": "lneq;", - "10888": "gneq;", - "10889": "lnapprox;", - "10890": "gnapprox;", - "10891": "lesseqqgtr;", - "10892": "gtreqqless;", - "10893": "lsime;", - "10894": "gsime;", - "10895": "lsimg;", - "10896": "gsiml;", - "10897": "lgE;", - "10898": "glE;", - "10899": "lesges;", - "10900": "gesles;", - "10901": "eqslantless;", - "10902": "eqslantgtr;", - "10903": "elsdot;", - "10904": "egsdot;", - "10905": "el;", - "10906": "eg;", - "10909": "siml;", - "10910": "simg;", - "10911": "simlE;", - "10912": "simgE;", - "10913": "LessLess;", - "10914": "GreaterGreater;", - "10916": "glj;", - "10917": "gla;", - "10918": "ltcc;", - "10919": "gtcc;", - "10920": "lescc;", - "10921": "gescc;", - "10922": "smt;", - "10923": "lat;", - "10924": "smte;", - "10925": "late;", - "10926": "bumpE;", - "10927": "preceq;", - "10928": "succeq;", - "10931": "prE;", - "10932": "scE;", - "10933": "prnE;", - "10934": "succneqq;", - "10935": "precapprox;", - "10936": "succapprox;", - "10937": "prnap;", - "10938": "succnapprox;", - "10939": "Pr;", - "10940": "Sc;", - "10941": "subdot;", - "10942": "supdot;", - "10943": "subplus;", - "10944": "supplus;", - "10945": "submult;", - "10946": "supmult;", - "10947": "subedot;", - "10948": "supedot;", - "10949": "subseteqq;", - "10950": "supseteqq;", - "10951": "subsim;", - "10952": "supsim;", - "10955": "subsetneqq;", - "10956": "supsetneqq;", - "10959": "csub;", - "10960": "csup;", - "10961": "csube;", - "10962": "csupe;", - "10963": "subsup;", - "10964": "supsub;", - "10965": "subsub;", - "10966": "supsup;", - "10967": "suphsub;", - "10968": "supdsub;", - "10969": "forkv;", - "10970": "topfork;", - "10971": "mlcp;", - "10980": "DoubleLeftTee;", - "10982": "Vdashl;", - "10983": "Barv;", - "10984": "vBar;", - "10985": "vBarv;", - "10987": "Vbar;", - "10988": "Not;", - "10989": "bNot;", - "10990": "rnmid;", - "10991": "cirmid;", - "10992": "midcir;", - "10993": "topcir;", - "10994": "nhpar;", - "10995": "parsim;", - "11005": "parsl;", - "64256": "fflig;", - "64257": "filig;", - "64258": "fllig;", - "64259": "ffilig;", - "64260": "ffllig;" -} \ No newline at end of file diff --git a/node_modules/ent/test/codes.js b/node_modules/ent/test/codes.js deleted file mode 100644 index d993400a5..000000000 --- a/node_modules/ent/test/codes.js +++ /dev/null @@ -1,101 +0,0 @@ -var test = require('tape'); -var punycode = require('punycode'); -var ent = require('../'); - -test('amp', function (t) { - var a = 'a & b & c'; - var b = 'a & b & c'; - t.equal(ent.encode(a), b); - t.equal(ent.decode(b), a); - t.end(); -}); - -test('html', function (t) { - var a = ' © π " \''; - var b = '<html> © π " ''; - t.equal(ent.encode(a), b); - t.equal(ent.decode(b), a); - t.end(); -}); - -test('html named', function (t) { - var a = ' © π " \' ∴ Β β'; - var b = '<html> © π " ' ∴ Β β'; - t.equal(ent.encode(a, { named: true }), b); - t.equal(ent.decode(b), a); - t.end(); -}); - -test('ambiguous ampersands', function (t) { - var a = '• &bullet'; - var b = '• &bullet'; - var c = '• &bullet'; - t.equal(ent.encode(a, { named: true }), c); - t.equal(ent.decode(b), a); - t.equal(ent.decode(c), a); - t.end(); -}); - -test('entities', function (t) { - var a = '\u2124'; - var b = 'ℤ'; - t.equal(ent.encode(a), b); - t.equal(ent.decode(b), a); - t.end(); -}); - -test('entities named', function (t) { - var a = '\u2124'; - var b = 'ℤ'; - t.equal(ent.encode(a, { named: true }), b); - t.equal(ent.decode(b), a); - t.end(); -}); - -test('num', function (t) { - var a = String.fromCharCode(1337); - var b = 'Թ'; - t.equal(ent.encode(a), b); - t.equal(ent.decode(b), a); - - t.equal(ent.encode(a + a), b + b); - t.equal(ent.decode(b + b), a + a); - t.end(); -}); - -test('astral num', function (t) { - var a = punycode.ucs2.encode([0x1d306]); - var b = '𝌆'; - t.equal(ent.encode(a), b); - t.equal(ent.decode(b), a); - - t.equal(ent.encode(a + a), b + b); - t.equal(ent.decode(b + b), a + a); - t.end(); -}); - -test('nested escapes', function (t) { - var a = '&'; - var b = '&amp;'; - t.equal(ent.encode(a), b); - t.equal(ent.decode(b), a); - - t.equal(ent.encode(a + a), b + b); - t.equal(ent.decode(b + b), a + a); - t.end(); -}); - -test('encode `special` option', function (t) { - var a = '<>\'"&'; - var b = '<>\'"&'; - t.equal(ent.encode(a, { - named: true, - special: { - '<': true, - '>': true, - '&': true - } - }), b); - - t.end(); -}); diff --git a/node_modules/ent/test/hex.js b/node_modules/ent/test/hex.js deleted file mode 100644 index bad2a9ac7..000000000 --- a/node_modules/ent/test/hex.js +++ /dev/null @@ -1,35 +0,0 @@ -var test = require('tape'); -var punycode = require('punycode'); -var ent = require('../'); - -test('hex', function (t) { - for (var i = 0; i < 32; i++) { - var a = String.fromCharCode(i); - if (a.match(/\s/)) { - t.equal(ent.decode(a), a); - } - else { - var b = '&#x' + i.toString(16) + ';'; - t.equal(ent.decode(b), a); - t.equal(ent.encode(a), '&#' + i + ';'); - } - } - - for (var i = 127; i < 2000; i++) { - var a = String.fromCharCode(i); - var b = '&#x' + i.toString(16) + ';'; - var c = '&#X' + i.toString(16) + ';'; - - t.equal(ent.decode(b), a); - t.equal(ent.decode(c), a); - - var encoded = ent.encode(a); - var encoded2 = ent.encode(a + a); - if (!encoded.match(/^&\w+;/)) { - t.equal(encoded, '&#' + i + ';'); - t.equal(encoded2, '&#' + i + ';&#' + i + ';'); - } - } - t.end(); -}); - diff --git a/node_modules/ent/test/num.js b/node_modules/ent/test/num.js deleted file mode 100644 index 399d28c91..000000000 --- a/node_modules/ent/test/num.js +++ /dev/null @@ -1,13 +0,0 @@ -var test = require('tape'); -var ent = require('../'); - -test('opts.numeric', function (t) { - var a = 'a & b & c'; - var ax = 'a & b & c'; - var b = ' © π " \''; - var bx = '<html> © π " ''; - - t.equal(ent.encode(a), ax); - t.equal(ent.encode(b), bx); - t.end(); -}); diff --git a/node_modules/error-symbol/LICENSE b/node_modules/error-symbol/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/error-symbol/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/error-symbol/README.md b/node_modules/error-symbol/README.md deleted file mode 100644 index d94532410..000000000 --- a/node_modules/error-symbol/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# error-symbol [![NPM version](https://badge.fury.io/js/error-symbol.svg)](http://badge.fury.io/js/error-symbol) - -> Cross-platform error symbol. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i error-symbol --save -``` - -## Usage - -```js -var error = require('error-symbol'); -``` - -## Related projects - -* [success-symbol](https://github.com/jonschlinkert/success-symbol) -* [warning-symbol](https://github.com/jonschlinkert/warning-symbol) -* [error-symbol](https://github.com/jonschlinkert/error-symbol) -* [info-symbol](https://github.com/jonschlinkert/info-symbol) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/error-symbol/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 27, 2015._ \ No newline at end of file diff --git a/node_modules/error-symbol/index.js b/node_modules/error-symbol/index.js deleted file mode 100644 index ab0a9d6fd..000000000 --- a/node_modules/error-symbol/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = process.platform === 'win32' ? '×' : '✖'; diff --git a/node_modules/error-symbol/package.json b/node_modules/error-symbol/package.json deleted file mode 100644 index 65643a84d..000000000 --- a/node_modules/error-symbol/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "_from": "error-symbol@^0.1.0", - "_id": "error-symbol@0.1.0", - "_inBundle": false, - "_integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=", - "_location": "/error-symbol", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "error-symbol@^0.1.0", - "name": "error-symbol", - "escapedName": "error-symbol", - "rawSpec": "^0.1.0", - "saveSpec": null, - "fetchSpec": "^0.1.0" - }, - "_requiredBy": [ - "/log-utils" - ], - "_resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz", - "_shasum": "0a4dae37d600d15a29ba453d8ef920f1844333f6", - "_spec": "error-symbol@^0.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/error-symbol/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Cross-platform error symbol.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/error-symbol", - "keywords": [ - "error", - "256", - "ansi", - "cli", - "symbol", - "symbols", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "error-symbol", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/error-symbol.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.0" -} diff --git a/node_modules/expand-brackets/LICENSE b/node_modules/expand-brackets/LICENSE deleted file mode 100644 index 652517172..000000000 --- a/node_modules/expand-brackets/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2016, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/expand-brackets/README.md b/node_modules/expand-brackets/README.md deleted file mode 100644 index c0e33d080..000000000 --- a/node_modules/expand-brackets/README.md +++ /dev/null @@ -1,302 +0,0 @@ -# expand-brackets [![NPM version](https://img.shields.io/npm/v/expand-brackets.svg?style=flat)](https://www.npmjs.com/package/expand-brackets) [![NPM monthly downloads](https://img.shields.io/npm/dm/expand-brackets.svg?style=flat)](https://npmjs.org/package/expand-brackets) [![NPM total downloads](https://img.shields.io/npm/dt/expand-brackets.svg?style=flat)](https://npmjs.org/package/expand-brackets) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/expand-brackets.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/expand-brackets) [![Windows Build Status](https://img.shields.io/appveyor/ci/jonschlinkert/expand-brackets.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/jonschlinkert/expand-brackets) - -> Expand POSIX bracket expressions (character classes) in glob patterns. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save expand-brackets -``` - -## Usage - -```js -var brackets = require('expand-brackets'); -brackets(string[, options]); -``` - -**Params** - -The main export is a function that takes the following parameters: - -* `pattern` **{String}**: the pattern to convert -* `options` **{Object}**: optionally supply an options object -* `returns` **{String}**: returns a string that can be used to create a regex - -**Example** - -```js -console.log(brackets('[![:lower:]]')); -//=> '[^a-z]' -``` - -## API - -### [brackets](index.js#L29) - -Parses the given POSIX character class `pattern` and returns a -string that can be used for creating regular expressions for matching. - -**Params** - -* `pattern` **{String}** -* `options` **{Object}** -* `returns` **{Object}** - -### [.match](index.js#L54) - -Takes an array of strings and a POSIX character class pattern, and returns a new array with only the strings that matched the pattern. - -**Example** - -```js -var brackets = require('expand-brackets'); -console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]')); -//=> ['a'] - -console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]+')); -//=> ['a', 'ab'] -``` - -**Params** - -* `arr` **{Array}**: Array of strings to match -* `pattern` **{String}**: POSIX character class pattern(s) -* `options` **{Object}** -* `returns` **{Array}** - -### [.isMatch](index.js#L100) - -Returns true if the specified `string` matches the given brackets `pattern`. - -**Example** - -```js -var brackets = require('expand-brackets'); - -console.log(brackets.isMatch('a.a', '[[:alpha:]].[[:alpha:]]')); -//=> true -console.log(brackets.isMatch('1.2', '[[:alpha:]].[[:alpha:]]')); -//=> false -``` - -**Params** - -* `string` **{String}**: String to match -* `pattern` **{String}**: Poxis pattern -* `options` **{String}** -* `returns` **{Boolean}** - -### [.matcher](index.js#L123) - -Takes a POSIX character class pattern and returns a matcher function. The returned function takes the string to match as its only argument. - -**Example** - -```js -var brackets = require('expand-brackets'); -var isMatch = brackets.matcher('[[:lower:]].[[:upper:]]'); - -console.log(isMatch('a.a')); -//=> false -console.log(isMatch('a.A')); -//=> true -``` - -**Params** - -* `pattern` **{String}**: Poxis pattern -* `options` **{String}** -* `returns` **{Boolean}** - -### [.makeRe](index.js#L145) - -Create a regular expression from the given `pattern`. - -**Example** - -```js -var brackets = require('expand-brackets'); -var re = brackets.makeRe('[[:alpha:]]'); -console.log(re); -//=> /^(?:[a-zA-Z])$/ -``` - -**Params** - -* `pattern` **{String}**: The pattern to convert to regex. -* `options` **{Object}** -* `returns` **{RegExp}** - -### [.create](index.js#L187) - -Parses the given POSIX character class `pattern` and returns an object with the compiled `output` and optional source `map`. - -**Example** - -```js -var brackets = require('expand-brackets'); -console.log(brackets('[[:alpha:]]')); -// { options: { source: 'string' }, -// input: '[[:alpha:]]', -// state: {}, -// compilers: -// { eos: [Function], -// noop: [Function], -// bos: [Function], -// not: [Function], -// escape: [Function], -// text: [Function], -// posix: [Function], -// bracket: [Function], -// 'bracket.open': [Function], -// 'bracket.inner': [Function], -// 'bracket.literal': [Function], -// 'bracket.close': [Function] }, -// output: '[a-zA-Z]', -// ast: -// { type: 'root', -// errors: [], -// nodes: [ [Object], [Object], [Object] ] }, -// parsingErrors: [] } -``` - -**Params** - -* `pattern` **{String}** -* `options` **{Object}** -* `returns` **{Object}** - -## Options - -### options.sourcemap - -Generate a source map for the given pattern. - -**Example** - -```js -var res = brackets('[:alpha:]', {sourcemap: true}); - -console.log(res.map); -// { version: 3, -// sources: [ 'brackets' ], -// names: [], -// mappings: 'AAAA,MAAS', -// sourcesContent: [ '[:alpha:]' ] } -``` - -### POSIX Character classes - -The following named POSIX bracket expressions are supported: - -* `[:alnum:]`: Alphanumeric characters (`a-zA-Z0-9]`) -* `[:alpha:]`: Alphabetic characters (`a-zA-Z]`) -* `[:blank:]`: Space and tab (`[ t]`) -* `[:digit:]`: Digits (`[0-9]`) -* `[:lower:]`: Lowercase letters (`[a-z]`) -* `[:punct:]`: Punctuation and symbols. (`[!"#$%&'()*+, -./:;<=>?@ [\]^_``{|}~]`) -* `[:upper:]`: Uppercase letters (`[A-Z]`) -* `[:word:]`: Word characters (letters, numbers and underscores) (`[A-Za-z0-9_]`) -* `[:xdigit:]`: Hexadecimal digits (`[A-Fa-f0-9]`) - -See [posix-character-classes](https://github.com/jonschlinkert/posix-character-classes) for more details. - -**Not supported** - -* [equivalence classes](https://www.gnu.org/software/gawk/manual/html_node/Bracket-Expressions.html) are not supported -* [POSIX.2 collating symbols](https://www.gnu.org/software/gawk/manual/html_node/Bracket-Expressions.html) are not supported - -## Changelog - -### v2.0.0 - -**Breaking changes** - -* The main export now returns the compiled string, instead of the object returned from the compiler - -**Added features** - -* Adds a `.create` method to do what the main function did before v2.0.0 - -### v0.2.0 - -In addition to performance and matching improvements, the v0.2.0 refactor adds complete POSIX character class support, with the exception of equivalence classes and POSIX.2 collating symbols which are not relevant to node.js usage. - -**Added features** - -* parser is exposed, so that expand-brackets parsers can be used by upstream parsers (like [micromatch](https://github.com/jonschlinkert/micromatch)) -* compiler is exposed, so that expand-brackets compilers can be used by upstream compilers -* source maps - -**source map example** - -```js -var brackets = require('expand-brackets'); -var res = brackets('[:alpha:]'); -console.log(res.map); - -{ version: 3, - sources: [ 'brackets' ], - names: [], - mappings: 'AAAA,MAAS', - sourcesContent: [ '[:alpha:]' ] } -``` - -## About - -### Related projects - -* [braces](https://www.npmjs.com/package/braces): Fast, comprehensive, bash-like brace expansion implemented in JavaScript. Complete support for the Bash 4.3 braces… [more](https://github.com/jonschlinkert/braces) | [homepage](https://github.com/jonschlinkert/braces "Fast, comprehensive, bash-like brace expansion implemented in JavaScript. Complete support for the Bash 4.3 braces specification, without sacrificing speed.") -* [extglob](https://www.npmjs.com/package/extglob): Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob… [more](https://github.com/jonschlinkert/extglob) | [homepage](https://github.com/jonschlinkert/extglob "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.") -* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") -* [nanomatch](https://www.npmjs.com/package/nanomatch): Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash… [more](https://github.com/jonschlinkert/nanomatch) | [homepage](https://github.com/jonschlinkert/nanomatch "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor**
| -| --- | --- | -| 66 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [MartinKolarik](https://github.com/MartinKolarik) | -| 2 | [es128](https://github.com/es128) | -| 1 | [eush77](https://github.com/eush77) | - -### Building docs - -_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ - -To generate the readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install -g verb verb-generate-readme && verb -``` - -### Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -### License - -Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/expand-brackets/blob/master/LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.2.0, on December 12, 2016._ \ No newline at end of file diff --git a/node_modules/expand-brackets/changelog.md b/node_modules/expand-brackets/changelog.md deleted file mode 100644 index 0c0723ab4..000000000 --- a/node_modules/expand-brackets/changelog.md +++ /dev/null @@ -1,35 +0,0 @@ -## Changelog - -### v2.0.0 - -**Breaking changes** - -- The main export now returns the compiled string, instead of the object returned from the compiler - -**Added features** - -- Adds a `.create` method to do what the main function did before v2.0.0 - -### v0.2.0 - -In addition to performance and matching improvements, the v0.2.0 refactor adds complete POSIX character class support, with the exception of equivalence classes and POSIX.2 collating symbols which are not relevant to node.js usage. - -**Added features** - -- parser is exposed, so that expand-brackets parsers can be used by upstream parsers (like [micromatch][]) -- compiler is exposed, so that expand-brackets compilers can be used by upstream compilers -- source maps - -**source map example** - -```js -var brackets = require('expand-brackets'); -var res = brackets('[:alpha:]'); -console.log(res.map); - -{ version: 3, - sources: [ 'brackets' ], - names: [], - mappings: 'AAAA,MAAS', - sourcesContent: [ '[:alpha:]' ] } -``` diff --git a/node_modules/expand-brackets/index.js b/node_modules/expand-brackets/index.js deleted file mode 100644 index 74b8b1556..000000000 --- a/node_modules/expand-brackets/index.js +++ /dev/null @@ -1,211 +0,0 @@ -'use strict'; - -/** - * Local dependencies - */ - -var compilers = require('./lib/compilers'); -var parsers = require('./lib/parsers'); - -/** - * Module dependencies - */ - -var debug = require('debug')('expand-brackets'); -var extend = require('extend-shallow'); -var Snapdragon = require('snapdragon'); -var toRegex = require('to-regex'); - -/** - * Parses the given POSIX character class `pattern` and returns a - * string that can be used for creating regular expressions for matching. - * - * @param {String} `pattern` - * @param {Object} `options` - * @return {Object} - * @api public - */ - -function brackets(pattern, options) { - debug('initializing from <%s>', __filename); - var res = brackets.create(pattern, options); - return res.output; -} - -/** - * Takes an array of strings and a POSIX character class pattern, and returns a new - * array with only the strings that matched the pattern. - * - * ```js - * var brackets = require('expand-brackets'); - * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]')); - * //=> ['a'] - * - * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]+')); - * //=> ['a', 'ab'] - * ``` - * @param {Array} `arr` Array of strings to match - * @param {String} `pattern` POSIX character class pattern(s) - * @param {Object} `options` - * @return {Array} - * @api public - */ - -brackets.match = function(arr, pattern, options) { - arr = [].concat(arr); - var opts = extend({}, options); - var isMatch = brackets.matcher(pattern, opts); - var len = arr.length; - var idx = -1; - var res = []; - - while (++idx < len) { - var ele = arr[idx]; - if (isMatch(ele)) { - res.push(ele); - } - } - - if (res.length === 0) { - if (opts.failglob === true) { - throw new Error('no matches found for "' + pattern + '"'); - } - - if (opts.nonull === true || opts.nullglob === true) { - return [pattern.split('\\').join('')]; - } - } - return res; -}; - -/** - * Returns true if the specified `string` matches the given - * brackets `pattern`. - * - * ```js - * var brackets = require('expand-brackets'); - * - * console.log(brackets.isMatch('a.a', '[[:alpha:]].[[:alpha:]]')); - * //=> true - * console.log(brackets.isMatch('1.2', '[[:alpha:]].[[:alpha:]]')); - * //=> false - * ``` - * @param {String} `string` String to match - * @param {String} `pattern` Poxis pattern - * @param {String} `options` - * @return {Boolean} - * @api public - */ - -brackets.isMatch = function(str, pattern, options) { - return brackets.matcher(pattern, options)(str); -}; - -/** - * Takes a POSIX character class pattern and returns a matcher function. The returned - * function takes the string to match as its only argument. - * - * ```js - * var brackets = require('expand-brackets'); - * var isMatch = brackets.matcher('[[:lower:]].[[:upper:]]'); - * - * console.log(isMatch('a.a')); - * //=> false - * console.log(isMatch('a.A')); - * //=> true - * ``` - * @param {String} `pattern` Poxis pattern - * @param {String} `options` - * @return {Boolean} - * @api public - */ - -brackets.matcher = function(pattern, options) { - var re = brackets.makeRe(pattern, options); - return function(str) { - return re.test(str); - }; -}; - -/** - * Create a regular expression from the given `pattern`. - * - * ```js - * var brackets = require('expand-brackets'); - * var re = brackets.makeRe('[[:alpha:]]'); - * console.log(re); - * //=> /^(?:[a-zA-Z])$/ - * ``` - * @param {String} `pattern` The pattern to convert to regex. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ - -brackets.makeRe = function(pattern, options) { - var res = brackets.create(pattern, options); - var opts = extend({strictErrors: false}, options); - return toRegex(res.output, opts); -}; - -/** - * Parses the given POSIX character class `pattern` and returns an object - * with the compiled `output` and optional source `map`. - * - * ```js - * var brackets = require('expand-brackets'); - * console.log(brackets('[[:alpha:]]')); - * // { options: { source: 'string' }, - * // input: '[[:alpha:]]', - * // state: {}, - * // compilers: - * // { eos: [Function], - * // noop: [Function], - * // bos: [Function], - * // not: [Function], - * // escape: [Function], - * // text: [Function], - * // posix: [Function], - * // bracket: [Function], - * // 'bracket.open': [Function], - * // 'bracket.inner': [Function], - * // 'bracket.literal': [Function], - * // 'bracket.close': [Function] }, - * // output: '[a-zA-Z]', - * // ast: - * // { type: 'root', - * // errors: [], - * // nodes: [ [Object], [Object], [Object] ] }, - * // parsingErrors: [] } - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {Object} - * @api public - */ - -brackets.create = function(pattern, options) { - var snapdragon = (options && options.snapdragon) || new Snapdragon(options); - compilers(snapdragon); - parsers(snapdragon); - - var ast = snapdragon.parse(pattern, options); - ast.input = pattern; - var res = snapdragon.compile(ast, options); - res.input = pattern; - return res; -}; - -/** - * Expose `brackets` constructor, parsers and compilers - */ - -brackets.compilers = compilers; -brackets.parsers = parsers; - -/** - * Expose `brackets` - * @type {Function} - */ - -module.exports = brackets; diff --git a/node_modules/expand-brackets/lib/compilers.js b/node_modules/expand-brackets/lib/compilers.js deleted file mode 100644 index fbf7fe818..000000000 --- a/node_modules/expand-brackets/lib/compilers.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; - -var posix = require('posix-character-classes'); - -module.exports = function(brackets) { - brackets.compiler - - /** - * Escaped characters - */ - - .set('escape', function(node) { - return this.emit('\\' + node.val.replace(/^\\/, ''), node); - }) - - /** - * Text - */ - - .set('text', function(node) { - return this.emit(node.val.replace(/([{}])/g, '\\$1'), node); - }) - - /** - * POSIX character classes - */ - - .set('posix', function(node) { - if (node.val === '[::]') { - return this.emit('\\[::\\]', node); - } - - var val = posix[node.inner]; - if (typeof val === 'undefined') { - val = '[' + node.inner + ']'; - } - return this.emit(val, node); - }) - - /** - * Non-posix brackets - */ - - .set('bracket', function(node) { - return this.mapVisit(node.nodes); - }) - .set('bracket.open', function(node) { - return this.emit(node.val, node); - }) - .set('bracket.inner', function(node) { - var inner = node.val; - - if (inner === '[' || inner === ']') { - return this.emit('\\' + node.val, node); - } - if (inner === '^]') { - return this.emit('^\\]', node); - } - if (inner === '^') { - return this.emit('^', node); - } - - if (/-/.test(inner) && !/(\d-\d|\w-\w)/.test(inner)) { - inner = inner.split('-').join('\\-'); - } - - var isNegated = inner.charAt(0) === '^'; - // add slashes to negated brackets, per spec - if (isNegated && inner.indexOf('/') === -1) { - inner += '/'; - } - if (isNegated && inner.indexOf('.') === -1) { - inner += '.'; - } - - // don't unescape `0` (octal literal) - inner = inner.replace(/\\([1-9])/g, '$1'); - return this.emit(inner, node); - }) - .set('bracket.close', function(node) { - var val = node.val.replace(/^\\/, ''); - if (node.parent.escaped === true) { - return this.emit('\\' + val, node); - } - return this.emit(val, node); - }); -}; diff --git a/node_modules/expand-brackets/lib/parsers.js b/node_modules/expand-brackets/lib/parsers.js deleted file mode 100644 index 450a512e4..000000000 --- a/node_modules/expand-brackets/lib/parsers.js +++ /dev/null @@ -1,219 +0,0 @@ -'use strict'; - -var utils = require('./utils'); -var define = require('define-property'); - -/** - * Text regex - */ - -var TEXT_REGEX = '(\\[(?=.*\\])|\\])+'; -var not = utils.createRegex(TEXT_REGEX); - -/** - * Brackets parsers - */ - -function parsers(brackets) { - brackets.state = brackets.state || {}; - brackets.parser.sets.bracket = brackets.parser.sets.bracket || []; - brackets.parser - - .capture('escape', function() { - if (this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(/^\\(.)/); - if (!m) return; - - return pos({ - type: 'escape', - val: m[0] - }); - }) - - /** - * Text parser - */ - - .capture('text', function() { - if (this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(not); - if (!m || !m[0]) return; - - return pos({ - type: 'text', - val: m[0] - }); - }) - - /** - * POSIX character classes: "[[:alpha:][:digits:]]" - */ - - .capture('posix', function() { - var pos = this.position(); - var m = this.match(/^\[:(.*?):\](?=.*\])/); - if (!m) return; - - var inside = this.isInside('bracket'); - if (inside) { - brackets.posix++; - } - - return pos({ - type: 'posix', - insideBracket: inside, - inner: m[1], - val: m[0] - }); - }) - - /** - * Bracket (noop) - */ - - .capture('bracket', function() {}) - - /** - * Open: '[' - */ - - .capture('bracket.open', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\[(?=.*\])/); - if (!m) return; - - var prev = this.prev(); - var last = utils.last(prev.nodes); - - if (parsed.slice(-1) === '\\' && !this.isInside('bracket')) { - last.val = last.val.slice(0, last.val.length - 1); - return pos({ - type: 'escape', - val: m[0] - }); - } - - var open = pos({ - type: 'bracket.open', - val: m[0] - }); - - if (last.type === 'bracket.open' || this.isInside('bracket')) { - open.val = '\\' + open.val; - open.type = 'bracket.inner'; - open.escaped = true; - return open; - } - - var node = pos({ - type: 'bracket', - nodes: [open] - }); - - define(node, 'parent', prev); - define(open, 'parent', node); - this.push('bracket', node); - prev.nodes.push(node); - }) - - /** - * Bracket text - */ - - .capture('bracket.inner', function() { - if (!this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(not); - if (!m || !m[0]) return; - - var next = this.input.charAt(0); - var val = m[0]; - - var node = pos({ - type: 'bracket.inner', - val: val - }); - - if (val === '\\\\') { - return node; - } - - var first = val.charAt(0); - var last = val.slice(-1); - - if (first === '!') { - val = '^' + val.slice(1); - } - - if (last === '\\' || (val === '^' && next === ']')) { - val += this.input[0]; - this.consume(1); - } - - node.val = val; - return node; - }) - - /** - * Close: ']' - */ - - .capture('bracket.close', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\]/); - if (!m) return; - - var prev = this.prev(); - var last = utils.last(prev.nodes); - - if (parsed.slice(-1) === '\\' && !this.isInside('bracket')) { - last.val = last.val.slice(0, last.val.length - 1); - - return pos({ - type: 'escape', - val: m[0] - }); - } - - var node = pos({ - type: 'bracket.close', - rest: this.input, - val: m[0] - }); - - if (last.type === 'bracket.open') { - node.type = 'bracket.inner'; - node.escaped = true; - return node; - } - - var bracket = this.pop('bracket'); - if (!this.isType(bracket, 'bracket')) { - if (this.options.strict) { - throw new Error('missing opening "["'); - } - node.type = 'bracket.inner'; - node.escaped = true; - return node; - } - - bracket.nodes.push(node); - define(node, 'parent', bracket); - }); -} - -/** - * Brackets parsers - */ - -module.exports = parsers; - -/** - * Expose text regex - */ - -module.exports.TEXT_REGEX = TEXT_REGEX; diff --git a/node_modules/expand-brackets/lib/utils.js b/node_modules/expand-brackets/lib/utils.js deleted file mode 100644 index 599ff5126..000000000 --- a/node_modules/expand-brackets/lib/utils.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -var toRegex = require('to-regex'); -var regexNot = require('regex-not'); -var cached; - -/** - * Get the last element from `array` - * @param {Array} `array` - * @return {*} - */ - -exports.last = function(arr) { - return arr[arr.length - 1]; -}; - -/** - * Create and cache regex to use for text nodes - */ - -exports.createRegex = function(pattern, include) { - if (cached) return cached; - var opts = {contains: true, strictClose: false}; - var not = regexNot.create(pattern, opts); - var re; - - if (typeof include === 'string') { - re = toRegex('^(?:' + include + '|' + not + ')', opts); - } else { - re = toRegex(not, opts); - } - - return (cached = re); -}; diff --git a/node_modules/expand-brackets/node_modules/debug/.coveralls.yml b/node_modules/expand-brackets/node_modules/debug/.coveralls.yml deleted file mode 100644 index 20a706858..000000000 --- a/node_modules/expand-brackets/node_modules/debug/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve diff --git a/node_modules/expand-brackets/node_modules/debug/.eslintrc b/node_modules/expand-brackets/node_modules/debug/.eslintrc deleted file mode 100644 index 8a37ae2c2..000000000 --- a/node_modules/expand-brackets/node_modules/debug/.eslintrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "env": { - "browser": true, - "node": true - }, - "rules": { - "no-console": 0, - "no-empty": [1, { "allowEmptyCatch": true }] - }, - "extends": "eslint:recommended" -} diff --git a/node_modules/expand-brackets/node_modules/debug/.npmignore b/node_modules/expand-brackets/node_modules/debug/.npmignore deleted file mode 100644 index 5f60eecc8..000000000 --- a/node_modules/expand-brackets/node_modules/debug/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -support -test -examples -example -*.sock -dist -yarn.lock -coverage -bower.json diff --git a/node_modules/expand-brackets/node_modules/debug/.travis.yml b/node_modules/expand-brackets/node_modules/debug/.travis.yml deleted file mode 100644 index 6c6090c3b..000000000 --- a/node_modules/expand-brackets/node_modules/debug/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ - -language: node_js -node_js: - - "6" - - "5" - - "4" - -install: - - make node_modules - -script: - - make lint - - make test - - make coveralls diff --git a/node_modules/expand-brackets/node_modules/debug/CHANGELOG.md b/node_modules/expand-brackets/node_modules/debug/CHANGELOG.md deleted file mode 100644 index eadaa1895..000000000 --- a/node_modules/expand-brackets/node_modules/debug/CHANGELOG.md +++ /dev/null @@ -1,362 +0,0 @@ - -2.6.9 / 2017-09-22 -================== - - * remove ReDoS regexp in %o formatter (#504) - -2.6.8 / 2017-05-18 -================== - - * Fix: Check for undefined on browser globals (#462, @marbemac) - -2.6.7 / 2017-05-16 -================== - - * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom) - * Fix: Inline extend function in node implementation (#452, @dougwilson) - * Docs: Fix typo (#455, @msasad) - -2.6.5 / 2017-04-27 -================== - - * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek) - * Misc: clean up browser reference checks (#447, @thebigredgeek) - * Misc: add npm-debug.log to .gitignore (@thebigredgeek) - - -2.6.4 / 2017-04-20 -================== - - * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo) - * Chore: ignore bower.json in npm installations. (#437, @joaovieira) - * Misc: update "ms" to v0.7.3 (@tootallnate) - -2.6.3 / 2017-03-13 -================== - - * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts) - * Docs: Changelog fix (@thebigredgeek) - -2.6.2 / 2017-03-10 -================== - - * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin) - * Docs: Add backers and sponsors from Open Collective (#422, @piamancini) - * Docs: Add Slackin invite badge (@tootallnate) - -2.6.1 / 2017-02-10 -================== - - * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error - * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0) - * Fix: IE8 "Expected identifier" error (#414, @vgoma) - * Fix: Namespaces would not disable once enabled (#409, @musikov) - -2.6.0 / 2016-12-28 -================== - - * Fix: added better null pointer checks for browser useColors (@thebigredgeek) - * Improvement: removed explicit `window.debug` export (#404, @tootallnate) - * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate) - -2.5.2 / 2016-12-25 -================== - - * Fix: reference error on window within webworkers (#393, @KlausTrainer) - * Docs: fixed README typo (#391, @lurch) - * Docs: added notice about v3 api discussion (@thebigredgeek) - -2.5.1 / 2016-12-20 -================== - - * Fix: babel-core compatibility - -2.5.0 / 2016-12-20 -================== - - * Fix: wrong reference in bower file (@thebigredgeek) - * Fix: webworker compatibility (@thebigredgeek) - * Fix: output formatting issue (#388, @kribblo) - * Fix: babel-loader compatibility (#383, @escwald) - * Misc: removed built asset from repo and publications (@thebigredgeek) - * Misc: moved source files to /src (#378, @yamikuronue) - * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue) - * Test: coveralls integration (#378, @yamikuronue) - * Docs: simplified language in the opening paragraph (#373, @yamikuronue) - -2.4.5 / 2016-12-17 -================== - - * Fix: `navigator` undefined in Rhino (#376, @jochenberger) - * Fix: custom log function (#379, @hsiliev) - * Improvement: bit of cleanup + linting fixes (@thebigredgeek) - * Improvement: rm non-maintainted `dist/` dir (#375, @freewil) - * Docs: simplified language in the opening paragraph. (#373, @yamikuronue) - -2.4.4 / 2016-12-14 -================== - - * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts) - -2.4.3 / 2016-12-14 -================== - - * Fix: navigation.userAgent error for react native (#364, @escwald) - -2.4.2 / 2016-12-14 -================== - - * Fix: browser colors (#367, @tootallnate) - * Misc: travis ci integration (@thebigredgeek) - * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek) - -2.4.1 / 2016-12-13 -================== - - * Fix: typo that broke the package (#356) - -2.4.0 / 2016-12-13 -================== - - * Fix: bower.json references unbuilt src entry point (#342, @justmatt) - * Fix: revert "handle regex special characters" (@tootallnate) - * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate) - * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate) - * Improvement: allow colors in workers (#335, @botverse) - * Improvement: use same color for same namespace. (#338, @lchenay) - -2.3.3 / 2016-11-09 -================== - - * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne) - * Fix: Returning `localStorage` saved values (#331, Levi Thomason) - * Improvement: Don't create an empty object when no `process` (Nathan Rajlich) - -2.3.2 / 2016-11-09 -================== - - * Fix: be super-safe in index.js as well (@TooTallNate) - * Fix: should check whether process exists (Tom Newby) - -2.3.1 / 2016-11-09 -================== - - * Fix: Added electron compatibility (#324, @paulcbetts) - * Improvement: Added performance optimizations (@tootallnate) - * Readme: Corrected PowerShell environment variable example (#252, @gimre) - * Misc: Removed yarn lock file from source control (#321, @fengmk2) - -2.3.0 / 2016-11-07 -================== - - * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic) - * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos) - * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15) - * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran) - * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom) - * Package: Update "ms" to 0.7.2 (#315, @DevSide) - * Package: removed superfluous version property from bower.json (#207 @kkirsche) - * Readme: fix USE_COLORS to DEBUG_COLORS - * Readme: Doc fixes for format string sugar (#269, @mlucool) - * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0) - * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable) - * Readme: better docs for browser support (#224, @matthewmueller) - * Tooling: Added yarn integration for development (#317, @thebigredgeek) - * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek) - * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman) - * Misc: Updated contributors (@thebigredgeek) - -2.2.0 / 2015-05-09 -================== - - * package: update "ms" to v0.7.1 (#202, @dougwilson) - * README: add logging to file example (#193, @DanielOchoa) - * README: fixed a typo (#191, @amir-s) - * browser: expose `storage` (#190, @stephenmathieson) - * Makefile: add a `distclean` target (#189, @stephenmathieson) - -2.1.3 / 2015-03-13 -================== - - * Updated stdout/stderr example (#186) - * Updated example/stdout.js to match debug current behaviour - * Renamed example/stderr.js to stdout.js - * Update Readme.md (#184) - * replace high intensity foreground color for bold (#182, #183) - -2.1.2 / 2015-03-01 -================== - - * dist: recompile - * update "ms" to v0.7.0 - * package: update "browserify" to v9.0.3 - * component: fix "ms.js" repo location - * changed bower package name - * updated documentation about using debug in a browser - * fix: security error on safari (#167, #168, @yields) - -2.1.1 / 2014-12-29 -================== - - * browser: use `typeof` to check for `console` existence - * browser: check for `console.log` truthiness (fix IE 8/9) - * browser: add support for Chrome apps - * Readme: added Windows usage remarks - * Add `bower.json` to properly support bower install - -2.1.0 / 2014-10-15 -================== - - * node: implement `DEBUG_FD` env variable support - * package: update "browserify" to v6.1.0 - * package: add "license" field to package.json (#135, @panuhorsmalahti) - -2.0.0 / 2014-09-01 -================== - - * package: update "browserify" to v5.11.0 - * node: use stderr rather than stdout for logging (#29, @stephenmathieson) - -1.0.4 / 2014-07-15 -================== - - * dist: recompile - * example: remove `console.info()` log usage - * example: add "Content-Type" UTF-8 header to browser example - * browser: place %c marker after the space character - * browser: reset the "content" color via `color: inherit` - * browser: add colors support for Firefox >= v31 - * debug: prefer an instance `log()` function over the global one (#119) - * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) - -1.0.3 / 2014-07-09 -================== - - * Add support for multiple wildcards in namespaces (#122, @seegno) - * browser: fix lint - -1.0.2 / 2014-06-10 -================== - - * browser: update color palette (#113, @gscottolson) - * common: make console logging function configurable (#108, @timoxley) - * node: fix %o colors on old node <= 0.8.x - * Makefile: find node path using shell/which (#109, @timoxley) - -1.0.1 / 2014-06-06 -================== - - * browser: use `removeItem()` to clear localStorage - * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) - * package: add "contributors" section - * node: fix comment typo - * README: list authors - -1.0.0 / 2014-06-04 -================== - - * make ms diff be global, not be scope - * debug: ignore empty strings in enable() - * node: make DEBUG_COLORS able to disable coloring - * *: export the `colors` array - * npmignore: don't publish the `dist` dir - * Makefile: refactor to use browserify - * package: add "browserify" as a dev dependency - * Readme: add Web Inspector Colors section - * node: reset terminal color for the debug content - * node: map "%o" to `util.inspect()` - * browser: map "%j" to `JSON.stringify()` - * debug: add custom "formatters" - * debug: use "ms" module for humanizing the diff - * Readme: add "bash" syntax highlighting - * browser: add Firebug color support - * browser: add colors for WebKit browsers - * node: apply log to `console` - * rewrite: abstract common logic for Node & browsers - * add .jshintrc file - -0.8.1 / 2014-04-14 -================== - - * package: re-add the "component" section - -0.8.0 / 2014-03-30 -================== - - * add `enable()` method for nodejs. Closes #27 - * change from stderr to stdout - * remove unnecessary index.js file - -0.7.4 / 2013-11-13 -================== - - * remove "browserify" key from package.json (fixes something in browserify) - -0.7.3 / 2013-10-30 -================== - - * fix: catch localStorage security error when cookies are blocked (Chrome) - * add debug(err) support. Closes #46 - * add .browser prop to package.json. Closes #42 - -0.7.2 / 2013-02-06 -================== - - * fix package.json - * fix: Mobile Safari (private mode) is broken with debug - * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript - -0.7.1 / 2013-02-05 -================== - - * add repository URL to package.json - * add DEBUG_COLORED to force colored output - * add browserify support - * fix component. Closes #24 - -0.7.0 / 2012-05-04 -================== - - * Added .component to package.json - * Added debug.component.js build - -0.6.0 / 2012-03-16 -================== - - * Added support for "-" prefix in DEBUG [Vinay Pulim] - * Added `.enabled` flag to the node version [TooTallNate] - -0.5.0 / 2012-02-02 -================== - - * Added: humanize diffs. Closes #8 - * Added `debug.disable()` to the CS variant - * Removed padding. Closes #10 - * Fixed: persist client-side variant again. Closes #9 - -0.4.0 / 2012-02-01 -================== - - * Added browser variant support for older browsers [TooTallNate] - * Added `debug.enable('project:*')` to browser variant [TooTallNate] - * Added padding to diff (moved it to the right) - -0.3.0 / 2012-01-26 -================== - - * Added millisecond diff when isatty, otherwise UTC string - -0.2.0 / 2012-01-22 -================== - - * Added wildcard support - -0.1.0 / 2011-12-02 -================== - - * Added: remove colors unless stderr isatty [TooTallNate] - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/expand-brackets/node_modules/debug/LICENSE b/node_modules/expand-brackets/node_modules/debug/LICENSE deleted file mode 100644 index 658c933d2..000000000 --- a/node_modules/expand-brackets/node_modules/debug/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 TJ Holowaychuk - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the 'Software'), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/node_modules/expand-brackets/node_modules/debug/Makefile b/node_modules/expand-brackets/node_modules/debug/Makefile deleted file mode 100644 index 584da8bf9..000000000 --- a/node_modules/expand-brackets/node_modules/debug/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 -THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) -THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) - -# BIN directory -BIN := $(THIS_DIR)/node_modules/.bin - -# Path -PATH := node_modules/.bin:$(PATH) -SHELL := /bin/bash - -# applications -NODE ?= $(shell which node) -YARN ?= $(shell which yarn) -PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) -BROWSERIFY ?= $(NODE) $(BIN)/browserify - -.FORCE: - -install: node_modules - -node_modules: package.json - @NODE_ENV= $(PKG) install - @touch node_modules - -lint: .FORCE - eslint browser.js debug.js index.js node.js - -test-node: .FORCE - istanbul cover node_modules/mocha/bin/_mocha -- test/**.js - -test-browser: .FORCE - mkdir -p dist - - @$(BROWSERIFY) \ - --standalone debug \ - . > dist/debug.js - - karma start --single-run - rimraf dist - -test: .FORCE - concurrently \ - "make test-node" \ - "make test-browser" - -coveralls: - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js - -.PHONY: all install clean distclean diff --git a/node_modules/expand-brackets/node_modules/debug/README.md b/node_modules/expand-brackets/node_modules/debug/README.md deleted file mode 100644 index f67be6b31..000000000 --- a/node_modules/expand-brackets/node_modules/debug/README.md +++ /dev/null @@ -1,312 +0,0 @@ -# debug -[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) - - - -A tiny node.js debugging utility modelled after node core's debugging technique. - -**Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)** - -## Installation - -```bash -$ npm install debug -``` - -## Usage - -`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. - -Example _app.js_: - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %s', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example _worker.js_: - -```js -var debug = require('debug')('worker'); - -setInterval(function(){ - debug('doing some work'); -}, 1000); -``` - - The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: - - ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) - - ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) - -#### Windows note - - On Windows the environment variable is set using the `set` command. - - ```cmd - set DEBUG=*,-not_this - ``` - - Note that PowerShell uses different syntax to set environment variables. - - ```cmd - $env:DEBUG = "*,-not_this" - ``` - -Then, run the program to be debugged as usual. - -## Millisecond diff - - When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) - - When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: - - ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) - -## Conventions - - If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". - -## Wildcards - - The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - - You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". - -## Environment Variables - - When running through Node.js, you can set a few environment variables that will - change the behavior of the debug logging: - -| Name | Purpose | -|-----------|-------------------------------------------------| -| `DEBUG` | Enables/disables specific debugging namespaces. | -| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | -| `DEBUG_DEPTH` | Object inspection depth. | -| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | - - - __Note:__ The environment variables beginning with `DEBUG_` end up being - converted into an Options object that gets used with `%o`/`%O` formatters. - See the Node.js documentation for - [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) - for the complete list. - -## Formatters - - - Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters: - -| Formatter | Representation | -|-----------|----------------| -| `%O` | Pretty-print an Object on multiple lines. | -| `%o` | Pretty-print an Object all on a single line. | -| `%s` | String. | -| `%d` | Number (both integer and float). | -| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | -| `%%` | Single percent sign ('%'). This does not consume an argument. | - -### Custom formatters - - You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like: - -```js -const createDebug = require('debug') -createDebug.formatters.h = (v) => { - return v.toString('hex') -} - -// …elsewhere -const debug = createDebug('foo') -debug('this is hex: %h', new Buffer('hello world')) -// foo this is hex: 68656c6c6f20776f726c6421 +0ms -``` - -## Browser support - You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), - or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), - if you don't want to build it yourself. - - Debug's enable state is currently persisted by `localStorage`. - Consider the situation shown below where you have `worker:a` and `worker:b`, - and wish to debug both. You can enable this using `localStorage.debug`: - -```js -localStorage.debug = 'worker:*' -``` - -And then refresh the page. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -#### Web Inspector Colors - - Colors are also enabled on "Web Inspectors" that understand the `%c` formatting - option. These are WebKit web inspectors, Firefox ([since version - 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) - and the Firebug plugin for Firefox (any version). - - Colored output looks something like: - - ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png) - - -## Output streams - - By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: - -Example _stdout.js_: - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - - Andrew Rhyne - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## License - -(The MIT License) - -Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/expand-brackets/node_modules/debug/component.json b/node_modules/expand-brackets/node_modules/debug/component.json deleted file mode 100644 index 9de26410f..000000000 --- a/node_modules/expand-brackets/node_modules/debug/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "debug", - "repo": "visionmedia/debug", - "description": "small debugging utility", - "version": "2.6.9", - "keywords": [ - "debug", - "log", - "debugger" - ], - "main": "src/browser.js", - "scripts": [ - "src/browser.js", - "src/debug.js" - ], - "dependencies": { - "rauchg/ms.js": "0.7.1" - } -} diff --git a/node_modules/expand-brackets/node_modules/debug/karma.conf.js b/node_modules/expand-brackets/node_modules/debug/karma.conf.js deleted file mode 100644 index 103a82d15..000000000 --- a/node_modules/expand-brackets/node_modules/debug/karma.conf.js +++ /dev/null @@ -1,70 +0,0 @@ -// Karma configuration -// Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC) - -module.exports = function(config) { - config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['mocha', 'chai', 'sinon'], - - - // list of files / patterns to load in the browser - files: [ - 'dist/debug.js', - 'test/*spec.js' - ], - - - // list of files to exclude - exclude: [ - 'src/node.js' - ], - - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - }, - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - - - // web server port - port: 9876, - - - // enable / disable colors in the output (reporters and logs) - colors: true, - - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['PhantomJS'], - - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity - }) -} diff --git a/node_modules/expand-brackets/node_modules/debug/node.js b/node_modules/expand-brackets/node_modules/debug/node.js deleted file mode 100644 index 7fc36fe6d..000000000 --- a/node_modules/expand-brackets/node_modules/debug/node.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./src/node'); diff --git a/node_modules/expand-brackets/node_modules/debug/package.json b/node_modules/expand-brackets/node_modules/debug/package.json deleted file mode 100644 index a9dbee8a5..000000000 --- a/node_modules/expand-brackets/node_modules/debug/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_args": [ - [ - "debug@2.6.9", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "debug@2.6.9", - "_id": "debug@2.6.9", - "_inBundle": false, - "_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "_location": "/expand-brackets/debug", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "debug@2.6.9", - "name": "debug", - "escapedName": "debug", - "rawSpec": "2.6.9", - "saveSpec": null, - "fetchSpec": "2.6.9" - }, - "_requiredBy": [ - "/expand-brackets" - ], - "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "_spec": "2.6.9", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "browser": "./src/browser.js", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, - "component": { - "scripts": { - "debug/index.js": "browser.js", - "debug/debug.js": "debug.js" - } - }, - "contributors": [ - { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "http://n8.io" - }, - { - "name": "Andrew Rhyne", - "email": "rhyneandrew@gmail.com" - } - ], - "dependencies": { - "ms": "2.0.0" - }, - "description": "small debugging utility", - "devDependencies": { - "browserify": "9.0.3", - "chai": "^3.5.0", - "concurrently": "^3.1.0", - "coveralls": "^2.11.15", - "eslint": "^3.12.1", - "istanbul": "^0.4.5", - "karma": "^1.3.0", - "karma-chai": "^0.1.0", - "karma-mocha": "^1.3.0", - "karma-phantomjs-launcher": "^1.0.2", - "karma-sinon": "^1.0.5", - "mocha": "^3.2.0", - "mocha-lcov-reporter": "^1.2.0", - "rimraf": "^2.5.4", - "sinon": "^1.17.6", - "sinon-chai": "^2.8.0" - }, - "homepage": "https://github.com/visionmedia/debug#readme", - "keywords": [ - "debug", - "log", - "debugger" - ], - "license": "MIT", - "main": "./src/index.js", - "name": "debug", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "version": "2.6.9" -} diff --git a/node_modules/expand-brackets/node_modules/debug/src/browser.js b/node_modules/expand-brackets/node_modules/debug/src/browser.js deleted file mode 100644 index 710692493..000000000 --- a/node_modules/expand-brackets/node_modules/debug/src/browser.js +++ /dev/null @@ -1,185 +0,0 @@ -/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - 'lightseagreen', - 'forestgreen', - 'goldenrod', - 'dodgerblue', - 'darkorchid', - 'crimson' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { - return true; - } - - // is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - try { - return JSON.stringify(v); - } catch (err) { - return '[UnexpectedJSONParseError]: ' + err.message; - } -}; - - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - var useColors = this.useColors; - - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); - - if (!useColors) return; - - var c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit') - - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ - -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - return window.localStorage; - } catch (e) {} -} diff --git a/node_modules/expand-brackets/node_modules/debug/src/debug.js b/node_modules/expand-brackets/node_modules/debug/src/debug.js deleted file mode 100644 index 6a5e3fc94..000000000 --- a/node_modules/expand-brackets/node_modules/debug/src/debug.js +++ /dev/null @@ -1,202 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = require('ms'); - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - -exports.formatters = {}; - -/** - * Previous log timestamp. - */ - -var prevTime; - -/** - * Select a color. - * @param {String} namespace - * @return {Number} - * @api private - */ - -function selectColor(namespace) { - var hash = 0, i; - - for (i in namespace) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return exports.colors[Math.abs(hash) % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function createDebug(namespace) { - - function debug() { - // disabled? - if (!debug.enabled) return; - - var self = debug; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // turn the `arguments` into a proper Array - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %O - args.unshift('%O'); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // apply env-specific formatting (colors, etc.) - exports.formatArgs.call(self, args); - - var logFn = debug.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = exports.enabled(namespace); - debug.useColors = exports.useColors(); - debug.color = selectColor(namespace); - - // env-specific initialization logic for debug instances - if ('function' === typeof exports.init) { - exports.init(debug); - } - - return debug; -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - exports.names = []; - exports.skips = []; - - var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - var len = split.length; - - for (var i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} diff --git a/node_modules/expand-brackets/node_modules/debug/src/index.js b/node_modules/expand-brackets/node_modules/debug/src/index.js deleted file mode 100644 index e12cf4d58..000000000 --- a/node_modules/expand-brackets/node_modules/debug/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Detect Electron renderer process, which is node, but we should - * treat as a browser. - */ - -if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = require('./browser.js'); -} else { - module.exports = require('./node.js'); -} diff --git a/node_modules/expand-brackets/node_modules/debug/src/inspector-log.js b/node_modules/expand-brackets/node_modules/debug/src/inspector-log.js deleted file mode 100644 index 60ea6c04a..000000000 --- a/node_modules/expand-brackets/node_modules/debug/src/inspector-log.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = inspectorLog; - -// black hole -const nullStream = new (require('stream').Writable)(); -nullStream._write = () => {}; - -/** - * Outputs a `console.log()` to the Node.js Inspector console *only*. - */ -function inspectorLog() { - const stdout = console._stdout; - console._stdout = nullStream; - console.log.apply(console, arguments); - console._stdout = stdout; -} diff --git a/node_modules/expand-brackets/node_modules/debug/src/node.js b/node_modules/expand-brackets/node_modules/debug/src/node.js deleted file mode 100644 index b15109c90..000000000 --- a/node_modules/expand-brackets/node_modules/debug/src/node.js +++ /dev/null @@ -1,248 +0,0 @@ -/** - * Module dependencies. - */ - -var tty = require('tty'); -var util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ - -exports.inspectOpts = Object.keys(process.env).filter(function (key) { - return /^debug_/i.test(key); -}).reduce(function (obj, key) { - // camel-case - var prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); - - // coerce string value into JS value - var val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) val = true; - else if (/^(no|off|false|disabled)$/i.test(val)) val = false; - else if (val === 'null') val = null; - else val = Number(val); - - obj[prop] = val; - return obj; -}, {}); - -/** - * The file descriptor to write the `debug()` calls to. - * Set the `DEBUG_FD` env variable to override with another value. i.e.: - * - * $ DEBUG_FD=3 node script.js 3>debug.log - */ - -var fd = parseInt(process.env.DEBUG_FD, 10) || 2; - -if (1 !== fd && 2 !== fd) { - util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() -} - -var stream = 1 === fd ? process.stdout : - 2 === fd ? process.stderr : - createWritableStdioStream(fd); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - return 'colors' in exports.inspectOpts - ? Boolean(exports.inspectOpts.colors) - : tty.isatty(fd); -} - -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -exports.formatters.o = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n').map(function(str) { - return str.trim() - }).join(' '); -}; - -/** - * Map %o to `util.inspect()`, allowing multiple lines if needed. - */ - -exports.formatters.O = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - var name = this.namespace; - var useColors = this.useColors; - - if (useColors) { - var c = this.color; - var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); - } else { - args[0] = new Date().toUTCString() - + ' ' + name + ' ' + args[0]; - } -} - -/** - * Invokes `util.format()` with the specified arguments and writes to `stream`. - */ - -function log() { - return stream.write(util.format.apply(util, arguments) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - if (null == namespaces) { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } else { - process.env.DEBUG = namespaces; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Copied from `node/src/node.js`. - * - * XXX: It's lame that node doesn't expose this API out-of-the-box. It also - * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. - */ - -function createWritableStdioStream (fd) { - var stream; - var tty_wrap = process.binding('tty_wrap'); - - // Note stream._type is used for test-module-load-list.js - - switch (tty_wrap.guessHandleType(fd)) { - case 'TTY': - stream = new tty.WriteStream(fd); - stream._type = 'tty'; - - // Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - case 'FILE': - var fs = require('fs'); - stream = new fs.SyncWriteStream(fd, { autoClose: false }); - stream._type = 'fs'; - break; - - case 'PIPE': - case 'TCP': - var net = require('net'); - stream = new net.Socket({ - fd: fd, - readable: false, - writable: true - }); - - // FIXME Should probably have an option in net.Socket to create a - // stream from an existing fd which is writable only. But for now - // we'll just add this hack and set the `readable` member to false. - // Test: ./node test/fixtures/echo.js < /etc/passwd - stream.readable = false; - stream.read = null; - stream._type = 'pipe'; - - // FIXME Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - default: - // Probably an error on in uv_guess_handle() - throw new Error('Implement me. Unknown stream file type!'); - } - - // For supporting legacy API we put the FD here. - stream.fd = fd; - - stream._isStdio = true; - - return stream; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init (debug) { - debug.inspectOpts = {}; - - var keys = Object.keys(exports.inspectOpts); - for (var i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -/** - * Enable namespaces listed in `process.env.DEBUG` initially. - */ - -exports.enable(load()); diff --git a/node_modules/expand-brackets/node_modules/define-property/LICENSE b/node_modules/expand-brackets/node_modules/define-property/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/expand-brackets/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/expand-brackets/node_modules/define-property/README.md b/node_modules/expand-brackets/node_modules/define-property/README.md deleted file mode 100644 index 8cac698ad..000000000 --- a/node_modules/expand-brackets/node_modules/define-property/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# define-property [![NPM version](https://badge.fury.io/js/define-property.svg)](http://badge.fury.io/js/define-property) - -> Define a non-enumerable property on an object. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i define-property --save -``` - -## Usage - -**Params** - -* `obj`: The object on which to define the property. -* `prop`: The name of the property to be defined or modified. -* `descriptor`: The descriptor for the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**get/set** - -```js -define(obj, 'foo', { - get: function() {}, - set: function() {} -}); -``` - -## Related projects - -* [delegate-object](https://www.npmjs.com/package/delegate-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/delegate-object) | [homepage](https://github.com/doowb/delegate-object) -* [forward-object](https://www.npmjs.com/package/forward-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/forward-object) | [homepage](https://github.com/doowb/forward-object) -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep) -* [mixin-object](https://www.npmjs.com/package/mixin-object): Mixin the own and inherited properties of other objects onto the first object. Pass an… [more](https://www.npmjs.com/package/mixin-object) | [homepage](https://github.com/jonschlinkert/mixin-object) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/define-property/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 31, 2015._ diff --git a/node_modules/expand-brackets/node_modules/define-property/index.js b/node_modules/expand-brackets/node_modules/define-property/index.js deleted file mode 100644 index 3e0e5e133..000000000 --- a/node_modules/expand-brackets/node_modules/define-property/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var isDescriptor = require('is-descriptor'); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; diff --git a/node_modules/expand-brackets/node_modules/define-property/package.json b/node_modules/expand-brackets/node_modules/define-property/package.json deleted file mode 100644 index c004c0a55..000000000 --- a/node_modules/expand-brackets/node_modules/define-property/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_args": [ - [ - "define-property@0.2.5", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "define-property@0.2.5", - "_id": "define-property@0.2.5", - "_inBundle": false, - "_integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "_location": "/expand-brackets/define-property", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "define-property@0.2.5", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "0.2.5", - "saveSpec": null, - "fetchSpec": "0.2.5" - }, - "_requiredBy": [ - "/expand-brackets" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "_spec": "0.2.5", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "description": "Define a non-enumerable property on an object.", - "devDependencies": { - "mocha": "*", - "should": "^7.0.4" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "mixin-deep", - "mixin-object", - "delegate-object", - "forward-object" - ] - } - }, - "version": "0.2.5" -} diff --git a/node_modules/expand-brackets/node_modules/extend-shallow/LICENSE b/node_modules/expand-brackets/node_modules/extend-shallow/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/expand-brackets/node_modules/extend-shallow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/expand-brackets/node_modules/extend-shallow/README.md b/node_modules/expand-brackets/node_modules/extend-shallow/README.md deleted file mode 100644 index cdc45d4ff..000000000 --- a/node_modules/expand-brackets/node_modules/extend-shallow/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# extend-shallow [![NPM version](https://badge.fury.io/js/extend-shallow.svg)](http://badge.fury.io/js/extend-shallow) [![Build Status](https://travis-ci.org/jonschlinkert/extend-shallow.svg)](https://travis-ci.org/jonschlinkert/extend-shallow) - -> Extend an object with the properties of additional objects. node.js/javascript util. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i extend-shallow --save -``` - -## Usage - -```js -var extend = require('extend-shallow'); - -extend({a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -Pass an empty object to shallow clone: - -```js -var obj = {}; -extend(obj, {a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -## Related - -* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. -* [for-own](https://github.com/jonschlinkert/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) -* [for-in](https://github.com/jonschlinkert/for-in): Iterate over the own and inherited enumerable properties of an objecte, and return an object… [more](https://github.com/jonschlinkert/for-in) -* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. -* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. -* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 29, 2015._ \ No newline at end of file diff --git a/node_modules/expand-brackets/node_modules/extend-shallow/index.js b/node_modules/expand-brackets/node_modules/extend-shallow/index.js deleted file mode 100644 index 92a067fcc..000000000 --- a/node_modules/expand-brackets/node_modules/extend-shallow/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var isObject = require('is-extendable'); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} diff --git a/node_modules/expand-brackets/node_modules/extend-shallow/package.json b/node_modules/expand-brackets/node_modules/extend-shallow/package.json deleted file mode 100644 index 2b046b8d1..000000000 --- a/node_modules/expand-brackets/node_modules/extend-shallow/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "extend-shallow@2.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "extend-shallow@2.0.1", - "_id": "extend-shallow@2.0.1", - "_inBundle": false, - "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "_location": "/expand-brackets/extend-shallow", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "extend-shallow@2.0.1", - "name": "extend-shallow", - "escapedName": "extend-shallow", - "rawSpec": "2.0.1", - "saveSpec": null, - "fetchSpec": "2.0.1" - }, - "_requiredBy": [ - "/expand-brackets" - ], - "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "_spec": "2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/extend-shallow/issues" - }, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "description": "Extend an object with the properties of additional objects. node.js/javascript util.", - "devDependencies": { - "array-slice": "^0.2.3", - "benchmarked": "^0.1.4", - "chalk": "^1.0.0", - "for-own": "^0.1.3", - "glob": "^5.0.12", - "is-plain-object": "^2.0.1", - "kind-of": "^2.0.0", - "minimist": "^1.1.1", - "mocha": "^2.2.5", - "should": "^7.0.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/extend-shallow", - "keywords": [ - "assign", - "extend", - "javascript", - "js", - "keys", - "merge", - "obj", - "object", - "prop", - "properties", - "property", - "props", - "shallow", - "util", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "extend-shallow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/extend-shallow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.1" -} diff --git a/node_modules/expand-brackets/node_modules/ms/index.js b/node_modules/expand-brackets/node_modules/ms/index.js deleted file mode 100644 index 6a522b16b..000000000 --- a/node_modules/expand-brackets/node_modules/ms/index.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isNaN(val) === false) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - if (ms >= d) { - return Math.round(ms / d) + 'd'; - } - if (ms >= h) { - return Math.round(ms / h) + 'h'; - } - if (ms >= m) { - return Math.round(ms / m) + 'm'; - } - if (ms >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - return plural(ms, d, 'day') || - plural(ms, h, 'hour') || - plural(ms, m, 'minute') || - plural(ms, s, 'second') || - ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; -} diff --git a/node_modules/expand-brackets/node_modules/ms/license.md b/node_modules/expand-brackets/node_modules/ms/license.md deleted file mode 100644 index 69b61253a..000000000 --- a/node_modules/expand-brackets/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Zeit, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/expand-brackets/node_modules/ms/package.json b/node_modules/expand-brackets/node_modules/ms/package.json deleted file mode 100644 index c3c2efde2..000000000 --- a/node_modules/expand-brackets/node_modules/ms/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "_args": [ - [ - "ms@2.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "ms@2.0.0", - "_id": "ms@2.0.0", - "_inBundle": false, - "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "_location": "/expand-brackets/ms", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "ms@2.0.0", - "name": "ms", - "escapedName": "ms", - "rawSpec": "2.0.0", - "saveSpec": null, - "fetchSpec": "2.0.0" - }, - "_requiredBy": [ - "/expand-brackets/debug" - ], - "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "_spec": "2.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "bugs": { - "url": "https://github.com/zeit/ms/issues" - }, - "description": "Tiny milisecond conversion utility", - "devDependencies": { - "eslint": "3.19.0", - "expect.js": "0.3.1", - "husky": "0.13.3", - "lint-staged": "3.4.1", - "mocha": "3.4.1" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/zeit/ms#readme", - "license": "MIT", - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "main": "./index", - "name": "ms", - "repository": { - "type": "git", - "url": "git+https://github.com/zeit/ms.git" - }, - "scripts": { - "lint": "eslint lib/* bin/*", - "precommit": "lint-staged", - "test": "mocha tests.js" - }, - "version": "2.0.0" -} diff --git a/node_modules/expand-brackets/node_modules/ms/readme.md b/node_modules/expand-brackets/node_modules/ms/readme.md deleted file mode 100644 index 84a9974cc..000000000 --- a/node_modules/expand-brackets/node_modules/ms/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# ms - -[![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms) -[![Slack Channel](http://zeit-slackin.now.sh/badge.svg)](https://zeit.chat/) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -``` - -### Convert from milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(ms('10 hours')) // "10h" -``` - -### Time format written-out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [node](https://nodejs.org) and in the browser. -- If a number is supplied to `ms`, a string with a unit is returned. -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`). -- If you pass a string with a number and a valid unit, the number of equivalent ms is returned. - -## Caught a bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, node will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/node_modules/expand-brackets/package.json b/node_modules/expand-brackets/package.json deleted file mode 100644 index 82612c736..000000000 --- a/node_modules/expand-brackets/package.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "_args": [ - [ - "expand-brackets@2.1.4", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "expand-brackets@2.1.4", - "_id": "expand-brackets@2.1.4", - "_inBundle": false, - "_integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "_location": "/expand-brackets", - "_phantomChildren": { - "is-descriptor": "0.1.6", - "is-extendable": "0.1.1" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "expand-brackets@2.1.4", - "name": "expand-brackets", - "escapedName": "expand-brackets", - "rawSpec": "2.1.4", - "saveSpec": null, - "fetchSpec": "2.1.4" - }, - "_requiredBy": [ - "/extglob" - ], - "_resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "_spec": "2.1.4", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/expand-brackets/issues" - }, - "contributors": [ - { - "name": "Elan Shanker", - "url": "https://github.com/es128" - }, - { - "name": "Eugene Sharygin", - "url": "https://github.com/eush77" - }, - { - "name": "Jon Schlinkert", - "email": "jon.schlinkert@sellside.com", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Martin Kolárik", - "email": "martin@kolarik.sk", - "url": "http://kolarik.sk" - } - ], - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "description": "Expand POSIX bracket expressions (character classes) in glob patterns.", - "devDependencies": { - "bash-match": "^0.1.1", - "gulp-format-md": "^0.1.10", - "helper-changelog": "^0.3.0", - "minimatch": "^3.0.3", - "mocha": "^3.0.2", - "multimatch": "^2.1.0", - "yargs-parser": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "lib" - ], - "homepage": "https://github.com/jonschlinkert/expand-brackets", - "keywords": [ - "bracket", - "brackets", - "character class", - "expand", - "expression", - "posix" - ], - "license": "MIT", - "main": "index.js", - "name": "expand-brackets", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/expand-brackets.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "helpers": [ - "helper-changelog" - ], - "related": { - "list": [ - "braces", - "extglob", - "micromatch", - "nanomatch" - ] - }, - "reflinks": [ - "micromatch", - "verb", - "verb-generate-readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "2.1.4" -} diff --git a/node_modules/extend-shallow/LICENSE b/node_modules/extend-shallow/LICENSE deleted file mode 100644 index 99c936915..000000000 --- a/node_modules/extend-shallow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, 2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/extend-shallow/README.md b/node_modules/extend-shallow/README.md deleted file mode 100644 index dee226f45..000000000 --- a/node_modules/extend-shallow/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# extend-shallow [![NPM version](https://img.shields.io/npm/v/extend-shallow.svg?style=flat)](https://www.npmjs.com/package/extend-shallow) [![NPM monthly downloads](https://img.shields.io/npm/dm/extend-shallow.svg?style=flat)](https://npmjs.org/package/extend-shallow) [![NPM total downloads](https://img.shields.io/npm/dt/extend-shallow.svg?style=flat)](https://npmjs.org/package/extend-shallow) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/extend-shallow.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/extend-shallow) - -> Extend an object with the properties of additional objects. node.js/javascript util. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save extend-shallow -``` - -## Usage - -```js -var extend = require('extend-shallow'); - -extend({a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -Pass an empty object to shallow clone: - -```js -var obj = {}; -extend(obj, {a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.") -* [for-in](https://www.npmjs.com/package/for-in): Iterate over the own and inherited enumerable properties of an object, and return an object… [more](https://github.com/jonschlinkert/for-in) | [homepage](https://github.com/jonschlinkert/for-in "Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js") -* [for-own](https://www.npmjs.com/package/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) | [homepage](https://github.com/jonschlinkert/for-own "Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js.") -* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") -* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 33 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [pdehaan](https://github.com/pdehaan) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 19, 2017._ \ No newline at end of file diff --git a/node_modules/extend-shallow/index.js b/node_modules/extend-shallow/index.js deleted file mode 100644 index c9582f8f9..000000000 --- a/node_modules/extend-shallow/index.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -var isExtendable = require('is-extendable'); -var assignSymbols = require('assign-symbols'); - -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); - } - } - return obj; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -function isString(val) { - return (val && typeof val === 'string'); -} - -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; -} - -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); -} diff --git a/node_modules/extend-shallow/node_modules/is-extendable/LICENSE b/node_modules/extend-shallow/node_modules/is-extendable/LICENSE deleted file mode 100644 index c0d7f1362..000000000 --- a/node_modules/extend-shallow/node_modules/is-extendable/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/extend-shallow/node_modules/is-extendable/README.md b/node_modules/extend-shallow/node_modules/is-extendable/README.md deleted file mode 100644 index 875b56a73..000000000 --- a/node_modules/extend-shallow/node_modules/is-extendable/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# is-extendable [![NPM version](https://img.shields.io/npm/v/is-extendable.svg?style=flat)](https://www.npmjs.com/package/is-extendable) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-extendable.svg?style=flat)](https://npmjs.org/package/is-extendable) [![NPM total downloads](https://img.shields.io/npm/dt/is-extendable.svg?style=flat)](https://npmjs.org/package/is-extendable) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-extendable.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-extendable) - -> Returns true if a value is a plain object, array or function. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-extendable -``` - -## Usage - -```js -var isExtendable = require('is-extendable'); -``` - -Returns true if the value is any of the following: - -* array -* plain object -* function - -## Notes - -All objects in JavaScript can have keys, but it's a pain to check for this, since we ether need to verify that the value is not `null` or `undefined` and: - -* the value is not a primitive, or -* that the object is a plain object, function or array - -Also note that an `extendable` object is not the same as an [extensible object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible), which is one that (in es6) is not sealed, frozen, or marked as non-extensible using `preventExtensions`. - -## Release history - -### v1.0.0 - 2017/07/20 - -**Breaking changes** - -* No longer considers date, regex or error objects to be extendable - -## About - -### Related projects - -* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.") -* [is-equal-shallow](https://www.npmjs.com/package/is-equal-shallow): Does a shallow comparison of two objects, returning false if the keys or values differ. | [homepage](https://github.com/jonschlinkert/is-equal-shallow "Does a shallow comparison of two objects, returning false if the keys or values differ.") -* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") -* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 20, 2017._ \ No newline at end of file diff --git a/node_modules/extend-shallow/node_modules/is-extendable/index.d.ts b/node_modules/extend-shallow/node_modules/is-extendable/index.d.ts deleted file mode 100644 index b96d50754..000000000 --- a/node_modules/extend-shallow/node_modules/is-extendable/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export = isExtendable; - -declare function isExtendable(val: any): boolean; - -declare namespace isExtendable {} diff --git a/node_modules/extend-shallow/node_modules/is-extendable/index.js b/node_modules/extend-shallow/node_modules/is-extendable/index.js deleted file mode 100644 index a8b26ad08..000000000 --- a/node_modules/extend-shallow/node_modules/is-extendable/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var isPlainObject = require('is-plain-object'); - -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; diff --git a/node_modules/extend-shallow/node_modules/is-extendable/package.json b/node_modules/extend-shallow/node_modules/is-extendable/package.json deleted file mode 100644 index 8f85fd5f4..000000000 --- a/node_modules/extend-shallow/node_modules/is-extendable/package.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "_args": [ - [ - "is-extendable@1.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-extendable@1.0.1", - "_id": "is-extendable@1.0.1", - "_inBundle": false, - "_integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "_location": "/extend-shallow/is-extendable", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-extendable@1.0.1", - "name": "is-extendable", - "escapedName": "is-extendable", - "rawSpec": "1.0.1", - "saveSpec": null, - "fetchSpec": "1.0.1" - }, - "_requiredBy": [ - "/extend-shallow" - ], - "_resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "_spec": "1.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-extendable/issues" - }, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "description": "Returns true if a value is a plain object, array or function.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.4.2" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "index.d.ts" - ], - "homepage": "https://github.com/jonschlinkert/is-extendable", - "keywords": [ - "array", - "assign", - "check", - "date", - "extend", - "extendable", - "extensible", - "function", - "is", - "object", - "regex", - "test" - ], - "license": "MIT", - "main": "index.js", - "name": "is-extendable", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-extendable.git" - }, - "scripts": { - "test": "mocha" - }, - "types": "index.d.ts", - "verb": { - "related": { - "list": [ - "assign-deep", - "is-equal-shallow", - "is-plain-object", - "isobject", - "kind-of" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.1" -} diff --git a/node_modules/extend-shallow/package.json b/node_modules/extend-shallow/package.json deleted file mode 100644 index 6d13b62f3..000000000 --- a/node_modules/extend-shallow/package.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_args": [ - [ - "extend-shallow@3.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "extend-shallow@3.0.2", - "_id": "extend-shallow@3.0.2", - "_inBundle": false, - "_integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "_location": "/extend-shallow", - "_phantomChildren": { - "is-plain-object": "2.0.4" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "extend-shallow@3.0.2", - "name": "extend-shallow", - "escapedName": "extend-shallow", - "rawSpec": "3.0.2", - "saveSpec": null, - "fetchSpec": "3.0.2" - }, - "_requiredBy": [ - "/micromatch", - "/nanomatch", - "/regex-not", - "/split-string", - "/to-regex" - ], - "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "_spec": "3.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/extend-shallow/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - } - ], - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "description": "Extend an object with the properties of additional objects. node.js/javascript util.", - "devDependencies": { - "array-slice": "^1.0.0", - "benchmarked": "^2.0.0", - "for-own": "^1.0.0", - "gulp-format-md": "^1.0.0", - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.1", - "minimist": "^1.2.0", - "mocha": "^3.5.3", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/extend-shallow", - "keywords": [ - "assign", - "clone", - "extend", - "merge", - "obj", - "object", - "object-assign", - "object.assign", - "prop", - "properties", - "property", - "props", - "shallow", - "util", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "extend-shallow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/extend-shallow.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "related": { - "list": [ - "extend-shallow", - "for-in", - "for-own", - "is-plain-object", - "isobject", - "kind-of" - ] - }, - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "3.0.2" -} diff --git a/node_modules/extglob/LICENSE b/node_modules/extglob/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/extglob/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/extglob/README.md b/node_modules/extglob/README.md deleted file mode 100644 index 3255ea2b7..000000000 --- a/node_modules/extglob/README.md +++ /dev/null @@ -1,362 +0,0 @@ -# extglob [![NPM version](https://img.shields.io/npm/v/extglob.svg?style=flat)](https://www.npmjs.com/package/extglob) [![NPM monthly downloads](https://img.shields.io/npm/dm/extglob.svg?style=flat)](https://npmjs.org/package/extglob) [![NPM total downloads](https://img.shields.io/npm/dt/extglob.svg?style=flat)](https://npmjs.org/package/extglob) [![Linux Build Status](https://img.shields.io/travis/micromatch/extglob.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/extglob) [![Windows Build Status](https://img.shields.io/appveyor/ci/micromatch/extglob.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/micromatch/extglob) - -> Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save extglob -``` - -* Convert an extglob string to a regex-compatible string. -* More complete (and correct) support than [minimatch](https://github.com/isaacs/minimatch) (minimatch fails a large percentage of the extglob tests) -* Handles [negation patterns](#extglob-patterns) -* Handles [nested patterns](#extglob-patterns) -* Organized code base, easy to maintain and make changes when edge cases arise -* As you can see by the [benchmarks](#benchmarks), extglob doesn't pay with speed for it's completeness, accuracy and quality. - -**Heads up!**: This library only supports extglobs, to handle full glob patterns and other extended globbing features use [micromatch](https://github.com/jonschlinkert/micromatch) instead. - -## Usage - -The main export is a function that takes a string and options, and returns an object with the parsed AST and the compiled `.output`, which is a regex-compatible string that can be used for matching. - -```js -var extglob = require('extglob'); -console.log(extglob('!(xyz)*.js')); -``` - -## Extglob cheatsheet - -Extended globbing patterns can be defined as follows (as described by the [bash man page](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html)): - -| **pattern** | **regex equivalent** | **description** | -| --- | --- | --- | -| `?(pattern-list)` | `(...|...)?` | Matches zero or one occurrence of the given pattern(s) | -| `*(pattern-list)` | `(...|...)*` | Matches zero or more occurrences of the given pattern(s) | -| `+(pattern-list)` | `(...|...)+` | Matches one or more occurrences of the given pattern(s) | -| `@(pattern-list)` | `(...|...)` [1] | Matches one of the given pattern(s) | -| `!(pattern-list)` | N/A | Matches anything except one of the given pattern(s) | - -## API - -### [extglob](index.js#L36) - -Convert the given `extglob` pattern into a regex-compatible string. Returns an object with the compiled result and the parsed AST. - -**Params** - -* `pattern` **{String}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```js -var extglob = require('extglob'); -console.log(extglob('*.!(*a)')); -//=> '(?!\\.)[^/]*?\\.(?!(?!\\.)[^/]*?a\\b).*?' -``` - -### [.match](index.js#L56) - -Takes an array of strings and an extglob pattern and returns a new array that contains only the strings that match the pattern. - -**Params** - -* `list` **{Array}**: Array of strings to match -* `pattern` **{String}**: Extglob pattern -* `options` **{Object}** -* `returns` **{Array}**: Returns an array of matches - -**Example** - -```js -var extglob = require('extglob'); -console.log(extglob.match(['a.a', 'a.b', 'a.c'], '*.!(*a)')); -//=> ['a.b', 'a.c'] -``` - -### [.isMatch](index.js#L111) - -Returns true if the specified `string` matches the given extglob `pattern`. - -**Params** - -* `string` **{String}**: String to match -* `pattern` **{String}**: Extglob pattern -* `options` **{String}** -* `returns` **{Boolean}** - -**Example** - -```js -var extglob = require('extglob'); - -console.log(extglob.isMatch('a.a', '*.!(*a)')); -//=> false -console.log(extglob.isMatch('a.b', '*.!(*a)')); -//=> true -``` - -### [.contains](index.js#L150) - -Returns true if the given `string` contains the given pattern. Similar to `.isMatch` but the pattern can match any part of the string. - -**Params** - -* `str` **{String}**: The string to match. -* `pattern` **{String}**: Glob pattern to use for matching. -* `options` **{Object}** -* `returns` **{Boolean}**: Returns true if the patter matches any part of `str`. - -**Example** - -```js -var extglob = require('extglob'); -console.log(extglob.contains('aa/bb/cc', '*b')); -//=> true -console.log(extglob.contains('aa/bb/cc', '*d')); -//=> false -``` - -### [.matcher](index.js#L184) - -Takes an extglob pattern and returns a matcher function. The returned function takes the string to match as its only argument. - -**Params** - -* `pattern` **{String}**: Extglob pattern -* `options` **{String}** -* `returns` **{Boolean}** - -**Example** - -```js -var extglob = require('extglob'); -var isMatch = extglob.matcher('*.!(*a)'); - -console.log(isMatch('a.a')); -//=> false -console.log(isMatch('a.b')); -//=> true -``` - -### [.create](index.js#L214) - -Convert the given `extglob` pattern into a regex-compatible string. Returns an object with the compiled result and the parsed AST. - -**Params** - -* `str` **{String}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```js -var extglob = require('extglob'); -console.log(extglob.create('*.!(*a)').output); -//=> '(?!\\.)[^/]*?\\.(?!(?!\\.)[^/]*?a\\b).*?' -``` - -### [.capture](index.js#L248) - -Returns an array of matches captured by `pattern` in `string`, or `null` if the pattern did not match. - -**Params** - -* `pattern` **{String}**: Glob pattern to use for matching. -* `string` **{String}**: String to match -* `options` **{Object}**: See available [options](#options) for changing how matches are performed -* `returns` **{Boolean}**: Returns an array of captures if the string matches the glob pattern, otherwise `null`. - -**Example** - -```js -var extglob = require('extglob'); -extglob.capture(pattern, string[, options]); - -console.log(extglob.capture('test/*.js', 'test/foo.js')); -//=> ['foo'] -console.log(extglob.capture('test/*.js', 'foo/bar.css')); -//=> null -``` - -### [.makeRe](index.js#L281) - -Create a regular expression from the given `pattern` and `options`. - -**Params** - -* `pattern` **{String}**: The pattern to convert to regex. -* `options` **{Object}** -* `returns` **{RegExp}** - -**Example** - -```js -var extglob = require('extglob'); -var re = extglob.makeRe('*.!(*a)'); -console.log(re); -//=> /^[^\/]*?\.(?![^\/]*?a)[^\/]*?$/ -``` - -## Options - -Available options are based on the options from Bash (and the option names used in bash). - -### options.nullglob - -**Type**: `boolean` - -**Default**: `undefined` - -When enabled, the pattern itself will be returned when no matches are found. - -### options.nonull - -Alias for [options.nullglob](#optionsnullglob), included for parity with minimatch. - -### options.cache - -**Type**: `boolean` - -**Default**: `undefined` - -Functions are memoized based on the given glob patterns and options. Disable memoization by setting `options.cache` to false. - -### options.failglob - -**Type**: `boolean` - -**Default**: `undefined` - -Throw an error is no matches are found. - -## Benchmarks - -Last run on December 21, 2017 - -```sh -# negation-nested (49 bytes) - extglob x 2,228,255 ops/sec ±0.98% (89 runs sampled) - minimatch x 207,875 ops/sec ±0.61% (91 runs sampled) - - fastest is extglob (by 1072% avg) - -# negation-simple (43 bytes) - extglob x 2,205,668 ops/sec ±1.00% (91 runs sampled) - minimatch x 311,923 ops/sec ±1.25% (91 runs sampled) - - fastest is extglob (by 707% avg) - -# range-false (57 bytes) - extglob x 2,263,877 ops/sec ±0.40% (94 runs sampled) - minimatch x 271,372 ops/sec ±1.02% (91 runs sampled) - - fastest is extglob (by 834% avg) - -# range-true (56 bytes) - extglob x 2,161,891 ops/sec ±0.41% (92 runs sampled) - minimatch x 268,265 ops/sec ±1.17% (91 runs sampled) - - fastest is extglob (by 806% avg) - -# star-simple (46 bytes) - extglob x 2,211,081 ops/sec ±0.49% (92 runs sampled) - minimatch x 343,319 ops/sec ±0.59% (91 runs sampled) - - fastest is extglob (by 644% avg) - -``` - -## Differences from Bash - -This library has complete parity with Bash 4.3 with only a couple of minor differences. - -* In some cases Bash returns true if the given string "contains" the pattern, whereas this library returns true if the string is an exact match for the pattern. You can relax this by setting `options.contains` to true. -* This library is more accurate than Bash and thus does not fail some of the tests that Bash 4.3 still lists as failing in their unit tests - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
-
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [braces](https://www.npmjs.com/package/braces): Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support… [more](https://github.com/micromatch/braces) | [homepage](https://github.com/micromatch/braces "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.") -* [expand-brackets](https://www.npmjs.com/package/expand-brackets): Expand POSIX bracket expressions (character classes) in glob patterns. | [homepage](https://github.com/jonschlinkert/expand-brackets "Expand POSIX bracket expressions (character classes) in glob patterns.") -* [expand-range](https://www.npmjs.com/package/expand-range): Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. Used… [more](https://github.com/jonschlinkert/expand-range) | [homepage](https://github.com/jonschlinkert/expand-range "Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. Used by [micromatch].") -* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`") -* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/micromatch/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 49 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [isiahmeadows](https://github.com/isiahmeadows) | -| 1 | [doowb](https://github.com/doowb) | -| 1 | [devongovett](https://github.com/devongovett) | -| 1 | [mjbvz](https://github.com/mjbvz) | -| 1 | [shinnn](https://github.com/shinnn) | - -### Author - -**Jon Schlinkert** - -* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert) -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on December 21, 2017._ - -
-
-
    -
  1. `@` isn "'t a RegEx character." - -
  2. -
-
\ No newline at end of file diff --git a/node_modules/extglob/changelog.md b/node_modules/extglob/changelog.md deleted file mode 100644 index c9fc4fcd7..000000000 --- a/node_modules/extglob/changelog.md +++ /dev/null @@ -1,25 +0,0 @@ -## Changelog - -### v2.0.0 - -**Added features** - -- Adds [.capture](readme.md#capture) method for capturing matches, thanks to [devongovett](https://github.com/devongovett) - - -### v1.0.0 - -**Breaking changes** - -- The main export now returns the compiled string, instead of the object returned from the compiler - -**Added features** - -- Adds a `.create` method to do what the main function did before v1.0.0 - -**Other changes** - -- adds `expand-brackets` parsers/compilers to handle nested brackets and extglobs -- uses `to-regex` to build regex for `makeRe` method -- improves coverage -- optimizations \ No newline at end of file diff --git a/node_modules/extglob/index.js b/node_modules/extglob/index.js deleted file mode 100644 index 116e6d5cb..000000000 --- a/node_modules/extglob/index.js +++ /dev/null @@ -1,331 +0,0 @@ -'use strict'; - -/** - * Module dependencies - */ - -var extend = require('extend-shallow'); -var unique = require('array-unique'); -var toRegex = require('to-regex'); - -/** - * Local dependencies - */ - -var compilers = require('./lib/compilers'); -var parsers = require('./lib/parsers'); -var Extglob = require('./lib/extglob'); -var utils = require('./lib/utils'); -var MAX_LENGTH = 1024 * 64; - -/** - * Convert the given `extglob` pattern into a regex-compatible string. Returns - * an object with the compiled result and the parsed AST. - * - * ```js - * var extglob = require('extglob'); - * console.log(extglob('*.!(*a)')); - * //=> '(?!\\.)[^/]*?\\.(?!(?!\\.)[^/]*?a\\b).*?' - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {String} - * @api public - */ - -function extglob(pattern, options) { - return extglob.create(pattern, options).output; -} - -/** - * Takes an array of strings and an extglob pattern and returns a new - * array that contains only the strings that match the pattern. - * - * ```js - * var extglob = require('extglob'); - * console.log(extglob.match(['a.a', 'a.b', 'a.c'], '*.!(*a)')); - * //=> ['a.b', 'a.c'] - * ``` - * @param {Array} `list` Array of strings to match - * @param {String} `pattern` Extglob pattern - * @param {Object} `options` - * @return {Array} Returns an array of matches - * @api public - */ - -extglob.match = function(list, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } - - list = utils.arrayify(list); - var isMatch = extglob.matcher(pattern, options); - var len = list.length; - var idx = -1; - var matches = []; - - while (++idx < len) { - var ele = list[idx]; - - if (isMatch(ele)) { - matches.push(ele); - } - } - - // if no options were passed, uniquify results and return - if (typeof options === 'undefined') { - return unique(matches); - } - - if (matches.length === 0) { - if (options.failglob === true) { - throw new Error('no matches found for "' + pattern + '"'); - } - if (options.nonull === true || options.nullglob === true) { - return [pattern.split('\\').join('')]; - } - } - - return options.nodupes !== false ? unique(matches) : matches; -}; - -/** - * Returns true if the specified `string` matches the given - * extglob `pattern`. - * - * ```js - * var extglob = require('extglob'); - * - * console.log(extglob.isMatch('a.a', '*.!(*a)')); - * //=> false - * console.log(extglob.isMatch('a.b', '*.!(*a)')); - * //=> true - * ``` - * @param {String} `string` String to match - * @param {String} `pattern` Extglob pattern - * @param {String} `options` - * @return {Boolean} - * @api public - */ - -extglob.isMatch = function(str, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } - - if (typeof str !== 'string') { - throw new TypeError('expected a string'); - } - - if (pattern === str) { - return true; - } - - if (pattern === '' || pattern === ' ' || pattern === '.') { - return pattern === str; - } - - var isMatch = utils.memoize('isMatch', pattern, options, extglob.matcher); - return isMatch(str); -}; - -/** - * Returns true if the given `string` contains the given pattern. Similar to `.isMatch` but - * the pattern can match any part of the string. - * - * ```js - * var extglob = require('extglob'); - * console.log(extglob.contains('aa/bb/cc', '*b')); - * //=> true - * console.log(extglob.contains('aa/bb/cc', '*d')); - * //=> false - * ``` - * @param {String} `str` The string to match. - * @param {String} `pattern` Glob pattern to use for matching. - * @param {Object} `options` - * @return {Boolean} Returns true if the patter matches any part of `str`. - * @api public - */ - -extglob.contains = function(str, pattern, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string'); - } - - if (pattern === '' || pattern === ' ' || pattern === '.') { - return pattern === str; - } - - var opts = extend({}, options, {contains: true}); - opts.strictClose = false; - opts.strictOpen = false; - return extglob.isMatch(str, pattern, opts); -}; - -/** - * Takes an extglob pattern and returns a matcher function. The returned - * function takes the string to match as its only argument. - * - * ```js - * var extglob = require('extglob'); - * var isMatch = extglob.matcher('*.!(*a)'); - * - * console.log(isMatch('a.a')); - * //=> false - * console.log(isMatch('a.b')); - * //=> true - * ``` - * @param {String} `pattern` Extglob pattern - * @param {String} `options` - * @return {Boolean} - * @api public - */ - -extglob.matcher = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } - - function matcher() { - var re = extglob.makeRe(pattern, options); - return function(str) { - return re.test(str); - }; - } - - return utils.memoize('matcher', pattern, options, matcher); -}; - -/** - * Convert the given `extglob` pattern into a regex-compatible string. Returns - * an object with the compiled result and the parsed AST. - * - * ```js - * var extglob = require('extglob'); - * console.log(extglob.create('*.!(*a)').output); - * //=> '(?!\\.)[^/]*?\\.(?!(?!\\.)[^/]*?a\\b).*?' - * ``` - * @param {String} `str` - * @param {Object} `options` - * @return {String} - * @api public - */ - -extglob.create = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } - - function create() { - var ext = new Extglob(options); - var ast = ext.parse(pattern, options); - return ext.compile(ast, options); - } - - return utils.memoize('create', pattern, options, create); -}; - -/** - * Returns an array of matches captured by `pattern` in `string`, or `null` - * if the pattern did not match. - * - * ```js - * var extglob = require('extglob'); - * extglob.capture(pattern, string[, options]); - * - * console.log(extglob.capture('test/*.js', 'test/foo.js')); - * //=> ['foo'] - * console.log(extglob.capture('test/*.js', 'foo/bar.css')); - * //=> null - * ``` - * @param {String} `pattern` Glob pattern to use for matching. - * @param {String} `string` String to match - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`. - * @api public - */ - -extglob.capture = function(pattern, str, options) { - var re = extglob.makeRe(pattern, extend({capture: true}, options)); - - function match() { - return function(string) { - var match = re.exec(string); - if (!match) { - return null; - } - - return match.slice(1); - }; - } - - var capture = utils.memoize('capture', pattern, options, match); - return capture(str); -}; - -/** - * Create a regular expression from the given `pattern` and `options`. - * - * ```js - * var extglob = require('extglob'); - * var re = extglob.makeRe('*.!(*a)'); - * console.log(re); - * //=> /^[^\/]*?\.(?![^\/]*?a)[^\/]*?$/ - * ``` - * @param {String} `pattern` The pattern to convert to regex. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ - -extglob.makeRe = function(pattern, options) { - if (pattern instanceof RegExp) { - return pattern; - } - - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } - - if (pattern.length > MAX_LENGTH) { - throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); - } - - function makeRe() { - var opts = extend({strictErrors: false}, options); - if (opts.strictErrors === true) opts.strict = true; - var res = extglob.create(pattern, opts); - return toRegex(res.output, opts); - } - - var regex = utils.memoize('makeRe', pattern, options, makeRe); - if (regex.source.length > MAX_LENGTH) { - throw new SyntaxError('potentially malicious regex detected'); - } - - return regex; -}; - -/** - * Cache - */ - -extglob.cache = utils.cache; -extglob.clearCache = function() { - extglob.cache.__data__ = {}; -}; - -/** - * Expose `Extglob` constructor, parsers and compilers - */ - -extglob.Extglob = Extglob; -extglob.compilers = compilers; -extglob.parsers = parsers; - -/** - * Expose `extglob` - * @type {Function} - */ - -module.exports = extglob; diff --git a/node_modules/extglob/lib/compilers.js b/node_modules/extglob/lib/compilers.js deleted file mode 100644 index d7bed252a..000000000 --- a/node_modules/extglob/lib/compilers.js +++ /dev/null @@ -1,169 +0,0 @@ -'use strict'; - -var brackets = require('expand-brackets'); - -/** - * Extglob compilers - */ - -module.exports = function(extglob) { - function star() { - if (typeof extglob.options.star === 'function') { - return extglob.options.star.apply(this, arguments); - } - if (typeof extglob.options.star === 'string') { - return extglob.options.star; - } - return '.*?'; - } - - /** - * Use `expand-brackets` compilers - */ - - extglob.use(brackets.compilers); - extglob.compiler - - /** - * Escaped: "\\*" - */ - - .set('escape', function(node) { - return this.emit(node.val, node); - }) - - /** - * Dot: "." - */ - - .set('dot', function(node) { - return this.emit('\\' + node.val, node); - }) - - /** - * Question mark: "?" - */ - - .set('qmark', function(node) { - var val = '[^\\\\/.]'; - var prev = this.prev(); - - if (node.parsed.slice(-1) === '(') { - var ch = node.rest.charAt(0); - if (ch !== '!' && ch !== '=' && ch !== ':') { - return this.emit(val, node); - } - return this.emit(node.val, node); - } - - if (prev.type === 'text' && prev.val) { - return this.emit(val, node); - } - - if (node.val.length > 1) { - val += '{' + node.val.length + '}'; - } - return this.emit(val, node); - }) - - /** - * Plus: "+" - */ - - .set('plus', function(node) { - var prev = node.parsed.slice(-1); - if (prev === ']' || prev === ')') { - return this.emit(node.val, node); - } - var ch = this.output.slice(-1); - if (!this.output || (/[?*+]/.test(ch) && node.parent.type !== 'bracket')) { - return this.emit('\\+', node); - } - if (/\w/.test(ch) && !node.inside) { - return this.emit('+\\+?', node); - } - return this.emit('+', node); - }) - - /** - * Star: "*" - */ - - .set('star', function(node) { - var prev = this.prev(); - var prefix = prev.type !== 'text' && prev.type !== 'escape' - ? '(?!\\.)' - : ''; - - return this.emit(prefix + star.call(this, node), node); - }) - - /** - * Parens - */ - - .set('paren', function(node) { - return this.mapVisit(node.nodes); - }) - .set('paren.open', function(node) { - var capture = this.options.capture ? '(' : ''; - - switch (node.parent.prefix) { - case '!': - case '^': - return this.emit(capture + '(?:(?!(?:', node); - case '*': - case '+': - case '?': - case '@': - return this.emit(capture + '(?:', node); - default: { - var val = node.val; - if (this.options.bash === true) { - val = '\\' + val; - } else if (!this.options.capture && val === '(' && node.parent.rest[0] !== '?') { - val += '?:'; - } - - return this.emit(val, node); - } - } - }) - .set('paren.close', function(node) { - var capture = this.options.capture ? ')' : ''; - - switch (node.prefix) { - case '!': - case '^': - var prefix = /^(\)|$)/.test(node.rest) ? '$' : ''; - var str = star.call(this, node); - - // if the extglob has a slash explicitly defined, we know the user wants - // to match slashes, so we need to ensure the "star" regex allows for it - if (node.parent.hasSlash && !this.options.star && this.options.slash !== false) { - str = '.*?'; - } - - return this.emit(prefix + ('))' + str + ')') + capture, node); - case '*': - case '+': - case '?': - return this.emit(')' + node.prefix + capture, node); - case '@': - return this.emit(')' + capture, node); - default: { - var val = (this.options.bash === true ? '\\' : '') + ')'; - return this.emit(val, node); - } - } - }) - - /** - * Text - */ - - .set('text', function(node) { - var val = node.val.replace(/[\[\]]/g, '\\$&'); - return this.emit(val, node); - }); -}; diff --git a/node_modules/extglob/lib/extglob.js b/node_modules/extglob/lib/extglob.js deleted file mode 100644 index 015f92895..000000000 --- a/node_modules/extglob/lib/extglob.js +++ /dev/null @@ -1,78 +0,0 @@ -'use strict'; - -/** - * Module dependencies - */ - -var Snapdragon = require('snapdragon'); -var define = require('define-property'); -var extend = require('extend-shallow'); - -/** - * Local dependencies - */ - -var compilers = require('./compilers'); -var parsers = require('./parsers'); - -/** - * Customize Snapdragon parser and renderer - */ - -function Extglob(options) { - this.options = extend({source: 'extglob'}, options); - this.snapdragon = this.options.snapdragon || new Snapdragon(this.options); - this.snapdragon.patterns = this.snapdragon.patterns || {}; - this.compiler = this.snapdragon.compiler; - this.parser = this.snapdragon.parser; - - compilers(this.snapdragon); - parsers(this.snapdragon); - - /** - * Override Snapdragon `.parse` method - */ - - define(this.snapdragon, 'parse', function(str, options) { - var parsed = Snapdragon.prototype.parse.apply(this, arguments); - parsed.input = str; - - // escape unmatched brace/bracket/parens - var last = this.parser.stack.pop(); - if (last && this.options.strict !== true) { - var node = last.nodes[0]; - node.val = '\\' + node.val; - var sibling = node.parent.nodes[1]; - if (sibling.type === 'star') { - sibling.loose = true; - } - } - - // add non-enumerable parser reference - define(parsed, 'parser', this.parser); - return parsed; - }); - - /** - * Decorate `.parse` method - */ - - define(this, 'parse', function(ast, options) { - return this.snapdragon.parse.apply(this.snapdragon, arguments); - }); - - /** - * Decorate `.compile` method - */ - - define(this, 'compile', function(ast, options) { - return this.snapdragon.compile.apply(this.snapdragon, arguments); - }); - -} - -/** - * Expose `Extglob` - */ - -module.exports = Extglob; diff --git a/node_modules/extglob/lib/parsers.js b/node_modules/extglob/lib/parsers.js deleted file mode 100644 index 2ba7352e9..000000000 --- a/node_modules/extglob/lib/parsers.js +++ /dev/null @@ -1,156 +0,0 @@ -'use strict'; - -var brackets = require('expand-brackets'); -var define = require('define-property'); -var utils = require('./utils'); - -/** - * Characters to use in text regex (we want to "not" match - * characters that are matched by other parsers) - */ - -var TEXT_REGEX = '([!@*?+]?\\(|\\)|[*?.+\\\\]|\\[:?(?=.*\\])|:?\\])+'; -var not = utils.createRegex(TEXT_REGEX); - -/** - * Extglob parsers - */ - -function parsers(extglob) { - extglob.state = extglob.state || {}; - - /** - * Use `expand-brackets` parsers - */ - - extglob.use(brackets.parsers); - extglob.parser.sets.paren = extglob.parser.sets.paren || []; - extglob.parser - - /** - * Extglob open: "*(" - */ - - .capture('paren.open', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^([!@*?+])?\(/); - if (!m) return; - - var prev = this.prev(); - var prefix = m[1]; - var val = m[0]; - - var open = pos({ - type: 'paren.open', - parsed: parsed, - val: val - }); - - var node = pos({ - type: 'paren', - prefix: prefix, - nodes: [open] - }); - - // if nested negation extglobs, just cancel them out to simplify - if (prefix === '!' && prev.type === 'paren' && prev.prefix === '!') { - prev.prefix = '@'; - node.prefix = '@'; - } - - define(node, 'rest', this.input); - define(node, 'parsed', parsed); - define(node, 'parent', prev); - define(open, 'parent', node); - - this.push('paren', node); - prev.nodes.push(node); - }) - - /** - * Extglob close: ")" - */ - - .capture('paren.close', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\)/); - if (!m) return; - - var parent = this.pop('paren'); - var node = pos({ - type: 'paren.close', - rest: this.input, - parsed: parsed, - val: m[0] - }); - - if (!this.isType(parent, 'paren')) { - if (this.options.strict) { - throw new Error('missing opening paren: "("'); - } - node.escaped = true; - return node; - } - - node.prefix = parent.prefix; - parent.nodes.push(node); - define(node, 'parent', parent); - }) - - /** - * Escape: "\\." - */ - - .capture('escape', function() { - var pos = this.position(); - var m = this.match(/^\\(.)/); - if (!m) return; - - return pos({ - type: 'escape', - val: m[0], - ch: m[1] - }); - }) - - /** - * Question marks: "?" - */ - - .capture('qmark', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\?+(?!\()/); - if (!m) return; - extglob.state.metachar = true; - return pos({ - type: 'qmark', - rest: this.input, - parsed: parsed, - val: m[0] - }); - }) - - /** - * Character parsers - */ - - .capture('star', /^\*(?!\()/) - .capture('plus', /^\+(?!\()/) - .capture('dot', /^\./) - .capture('text', not); -}; - -/** - * Expose text regex string - */ - -module.exports.TEXT_REGEX = TEXT_REGEX; - -/** - * Extglob parsers - */ - -module.exports = parsers; diff --git a/node_modules/extglob/lib/utils.js b/node_modules/extglob/lib/utils.js deleted file mode 100644 index 37a59fbce..000000000 --- a/node_modules/extglob/lib/utils.js +++ /dev/null @@ -1,69 +0,0 @@ -'use strict'; - -var regex = require('regex-not'); -var Cache = require('fragment-cache'); - -/** - * Utils - */ - -var utils = module.exports; -var cache = utils.cache = new Cache(); - -/** - * Cast `val` to an array - * @return {Array} - */ - -utils.arrayify = function(val) { - if (!Array.isArray(val)) { - return [val]; - } - return val; -}; - -/** - * Memoize a generated regex or function - */ - -utils.memoize = function(type, pattern, options, fn) { - var key = utils.createKey(type + pattern, options); - - if (cache.has(type, key)) { - return cache.get(type, key); - } - - var val = fn(pattern, options); - if (options && options.cache === false) { - return val; - } - - cache.set(type, key, val); - return val; -}; - -/** - * Create the key to use for memoization. The key is generated - * by iterating over the options and concatenating key-value pairs - * to the pattern string. - */ - -utils.createKey = function(pattern, options) { - var key = pattern; - if (typeof options === 'undefined') { - return key; - } - for (var prop in options) { - key += ';' + prop + '=' + String(options[prop]); - } - return key; -}; - -/** - * Create the regex to use for matching text - */ - -utils.createRegex = function(str) { - var opts = {contains: true, strictClose: false}; - return regex(str, opts); -}; diff --git a/node_modules/extglob/node_modules/define-property/LICENSE b/node_modules/extglob/node_modules/define-property/LICENSE deleted file mode 100644 index ec85897eb..000000000 --- a/node_modules/extglob/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, 2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/extglob/node_modules/define-property/README.md b/node_modules/extglob/node_modules/define-property/README.md deleted file mode 100644 index 2f1af05f3..000000000 --- a/node_modules/extglob/node_modules/define-property/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# define-property [![NPM version](https://img.shields.io/npm/v/define-property.svg?style=flat)](https://www.npmjs.com/package/define-property) [![NPM monthly downloads](https://img.shields.io/npm/dm/define-property.svg?style=flat)](https://npmjs.org/package/define-property) [![NPM total downloads](https://img.shields.io/npm/dt/define-property.svg?style=flat)](https://npmjs.org/package/define-property) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/define-property.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/define-property) - -> Define a non-enumerable property on an object. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save define-property -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add define-property -``` - -## Usage - -**Params** - -* `obj`: The object on which to define the property. -* `prop`: The name of the property to be defined or modified. -* `descriptor`: The descriptor for the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**get/set** - -```js -define(obj, 'foo', { - get: function() {}, - set: function() {} -}); -``` - -## About - -### Related projects - -* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.") -* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.") -* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep "Recursively merge values in a javascript object.") -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 20, 2017._ \ No newline at end of file diff --git a/node_modules/extglob/node_modules/define-property/index.js b/node_modules/extglob/node_modules/define-property/index.js deleted file mode 100644 index 27c19ebf6..000000000 --- a/node_modules/extglob/node_modules/define-property/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var isDescriptor = require('is-descriptor'); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; diff --git a/node_modules/extglob/node_modules/define-property/package.json b/node_modules/extglob/node_modules/define-property/package.json deleted file mode 100644 index 9a64a2123..000000000 --- a/node_modules/extglob/node_modules/define-property/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "define-property@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "define-property@1.0.0", - "_id": "define-property@1.0.0", - "_inBundle": false, - "_integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "_location": "/extglob/define-property", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "define-property@1.0.0", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/extglob" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "description": "Define a non-enumerable property on an object.", - "devDependencies": { - "gulp-format-md": "^0.1.12", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "extend-shallow", - "merge-deep", - "assign-deep", - "mixin-deep" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/extglob/node_modules/extend-shallow/LICENSE b/node_modules/extglob/node_modules/extend-shallow/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/extglob/node_modules/extend-shallow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/extglob/node_modules/extend-shallow/README.md b/node_modules/extglob/node_modules/extend-shallow/README.md deleted file mode 100644 index cdc45d4ff..000000000 --- a/node_modules/extglob/node_modules/extend-shallow/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# extend-shallow [![NPM version](https://badge.fury.io/js/extend-shallow.svg)](http://badge.fury.io/js/extend-shallow) [![Build Status](https://travis-ci.org/jonschlinkert/extend-shallow.svg)](https://travis-ci.org/jonschlinkert/extend-shallow) - -> Extend an object with the properties of additional objects. node.js/javascript util. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i extend-shallow --save -``` - -## Usage - -```js -var extend = require('extend-shallow'); - -extend({a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -Pass an empty object to shallow clone: - -```js -var obj = {}; -extend(obj, {a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -## Related - -* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. -* [for-own](https://github.com/jonschlinkert/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) -* [for-in](https://github.com/jonschlinkert/for-in): Iterate over the own and inherited enumerable properties of an objecte, and return an object… [more](https://github.com/jonschlinkert/for-in) -* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. -* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. -* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 29, 2015._ \ No newline at end of file diff --git a/node_modules/extglob/node_modules/extend-shallow/index.js b/node_modules/extglob/node_modules/extend-shallow/index.js deleted file mode 100644 index 92a067fcc..000000000 --- a/node_modules/extglob/node_modules/extend-shallow/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var isObject = require('is-extendable'); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} diff --git a/node_modules/extglob/node_modules/extend-shallow/package.json b/node_modules/extglob/node_modules/extend-shallow/package.json deleted file mode 100644 index b0dd0228d..000000000 --- a/node_modules/extglob/node_modules/extend-shallow/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "extend-shallow@2.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "extend-shallow@2.0.1", - "_id": "extend-shallow@2.0.1", - "_inBundle": false, - "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "_location": "/extglob/extend-shallow", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "extend-shallow@2.0.1", - "name": "extend-shallow", - "escapedName": "extend-shallow", - "rawSpec": "2.0.1", - "saveSpec": null, - "fetchSpec": "2.0.1" - }, - "_requiredBy": [ - "/extglob" - ], - "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "_spec": "2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/extend-shallow/issues" - }, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "description": "Extend an object with the properties of additional objects. node.js/javascript util.", - "devDependencies": { - "array-slice": "^0.2.3", - "benchmarked": "^0.1.4", - "chalk": "^1.0.0", - "for-own": "^0.1.3", - "glob": "^5.0.12", - "is-plain-object": "^2.0.1", - "kind-of": "^2.0.0", - "minimist": "^1.1.1", - "mocha": "^2.2.5", - "should": "^7.0.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/extend-shallow", - "keywords": [ - "assign", - "extend", - "javascript", - "js", - "keys", - "merge", - "obj", - "object", - "prop", - "properties", - "property", - "props", - "shallow", - "util", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "extend-shallow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/extend-shallow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.1" -} diff --git a/node_modules/extglob/node_modules/is-accessor-descriptor/LICENSE b/node_modules/extglob/node_modules/is-accessor-descriptor/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/extglob/node_modules/is-accessor-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/extglob/node_modules/is-accessor-descriptor/README.md b/node_modules/extglob/node_modules/is-accessor-descriptor/README.md deleted file mode 100644 index d198e1f05..000000000 --- a/node_modules/extglob/node_modules/is-accessor-descriptor/README.md +++ /dev/null @@ -1,144 +0,0 @@ -# is-accessor-descriptor [![NPM version](https://img.shields.io/npm/v/is-accessor-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-accessor-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-accessor-descriptor.svg?style=flat)](https://npmjs.org/package/is-accessor-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-accessor-descriptor.svg?style=flat)](https://npmjs.org/package/is-accessor-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-accessor-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-accessor-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-accessor-descriptor -``` - -## Usage - -```js -var isAccessor = require('is-accessor-descriptor'); - -isAccessor({get: function() {}}); -//=> true -``` - -You may also pass an object and property name to check if the property is an accessor: - -```js -isAccessor(foo, 'bar'); -``` - -## Examples - -`false` when not an object - -```js -isAccessor('a') -isAccessor(null) -isAccessor([]) -//=> false -``` - -`true` when the object has valid properties - -and the properties all have the correct JavaScript types: - -```js -isAccessor({get: noop, set: noop}) -isAccessor({get: noop}) -isAccessor({set: noop}) -//=> true -``` - -`false` when the object has invalid properties - -```js -isAccessor({get: noop, set: noop, bar: 'baz'}) -isAccessor({get: noop, writable: true}) -isAccessor({get: noop, value: true}) -//=> false -``` - -`false` when an accessor is not a function - -```js -isAccessor({get: noop, set: 'baz'}) -isAccessor({get: 'foo', set: noop}) -isAccessor({get: 'foo', bar: 'baz'}) -isAccessor({get: 'foo', set: 'baz'}) -//=> false -``` - -`false` when a value is not the correct type - -```js -isAccessor({get: noop, set: noop, enumerable: 'foo'}) -isAccessor({set: noop, configurable: 'foo'}) -isAccessor({get: noop, configurable: 'foo'}) -//=> false -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 22 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [realityking](https://github.com/realityking) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._ \ No newline at end of file diff --git a/node_modules/extglob/node_modules/is-accessor-descriptor/index.js b/node_modules/extglob/node_modules/is-accessor-descriptor/index.js deleted file mode 100644 index d2e6fe8b9..000000000 --- a/node_modules/extglob/node_modules/is-accessor-descriptor/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - * is-accessor-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -// accessor descriptor properties -var accessor = { - get: 'function', - set: 'function', - configurable: 'boolean', - enumerable: 'boolean' -}; - -function isAccessorDescriptor(obj, prop) { - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (typeOf(obj) !== 'object') { - return false; - } - - if (has(obj, 'value') || has(obj, 'writable')) { - return false; - } - - if (!has(obj, 'get') || typeof obj.get !== 'function') { - return false; - } - - // tldr: it's valid to have "set" be undefined - // "set" might be undefined if `Object.getOwnPropertyDescriptor` - // was used to get the value, and only `get` was defined by the user - if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { - return false; - } - - for (var key in obj) { - if (!accessor.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === accessor[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -} - -function has(obj, key) { - return {}.hasOwnProperty.call(obj, key); -} - -/** - * Expose `isAccessorDescriptor` - */ - -module.exports = isAccessorDescriptor; diff --git a/node_modules/extglob/node_modules/is-accessor-descriptor/package.json b/node_modules/extglob/node_modules/is-accessor-descriptor/package.json deleted file mode 100644 index 86ec1e12b..000000000 --- a/node_modules/extglob/node_modules/is-accessor-descriptor/package.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "_args": [ - [ - "is-accessor-descriptor@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-accessor-descriptor@1.0.0", - "_id": "is-accessor-descriptor@1.0.0", - "_inBundle": false, - "_integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "_location": "/extglob/is-accessor-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-accessor-descriptor@1.0.0", - "name": "is-accessor-descriptor", - "escapedName": "is-accessor-descriptor", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/extglob/is-descriptor" - ], - "_resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Rouven Weßling", - "url": "www.rouvenwessling.de" - } - ], - "dependencies": { - "kind-of": "^6.0.0" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-accessor-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-accessor-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "is-plain-object", - "isobject" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/extglob/node_modules/is-data-descriptor/LICENSE b/node_modules/extglob/node_modules/is-data-descriptor/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/extglob/node_modules/is-data-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/extglob/node_modules/is-data-descriptor/README.md b/node_modules/extglob/node_modules/is-data-descriptor/README.md deleted file mode 100644 index 42b071446..000000000 --- a/node_modules/extglob/node_modules/is-data-descriptor/README.md +++ /dev/null @@ -1,161 +0,0 @@ -# is-data-descriptor [![NPM version](https://img.shields.io/npm/v/is-data-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-data-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-data-descriptor.svg?style=flat)](https://npmjs.org/package/is-data-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-data-descriptor.svg?style=flat)](https://npmjs.org/package/is-data-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-data-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-data-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript data descriptor. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-data-descriptor -``` - -## Usage - -```js -var isDataDesc = require('is-data-descriptor'); -``` - -## Examples - -`true` when the descriptor has valid properties with valid values. - -```js -// `value` can be anything -isDataDesc({value: 'foo'}) -isDataDesc({value: function() {}}) -isDataDesc({value: true}) -//=> true -``` - -`false` when not an object - -```js -isDataDesc('a') -//=> false -isDataDesc(null) -//=> false -isDataDesc([]) -//=> false -``` - -`false` when the object has invalid properties - -```js -isDataDesc({value: 'foo', bar: 'baz'}) -//=> false -isDataDesc({value: 'foo', bar: 'baz'}) -//=> false -isDataDesc({value: 'foo', get: function(){}}) -//=> false -isDataDesc({get: function(){}, value: 'foo'}) -//=> false -``` - -`false` when a value is not the correct type - -```js -isDataDesc({value: 'foo', enumerable: 'foo'}) -//=> false -isDataDesc({value: 'foo', configurable: 'foo'}) -//=> false -isDataDesc({value: 'foo', writable: 'foo'}) -//=> false -``` - -## Valid properties - -The only valid data descriptor properties are the following: - -* `configurable` (required) -* `enumerable` (required) -* `value` (optional) -* `writable` (optional) - -To be a valid data descriptor, either `value` or `writable` must be defined. - -**Invalid properties** - -A descriptor may have additional _invalid_ properties (an error will **not** be thrown). - -```js -var foo = {}; - -Object.defineProperty(foo, 'bar', { - enumerable: true, - whatever: 'blah', // invalid, but doesn't cause an error - get: function() { - return 'baz'; - } -}); - -console.log(foo.bar); -//=> 'baz' -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 21 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [realityking](https://github.com/realityking) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._ \ No newline at end of file diff --git a/node_modules/extglob/node_modules/is-data-descriptor/index.js b/node_modules/extglob/node_modules/is-data-descriptor/index.js deleted file mode 100644 index cfeae3619..000000000 --- a/node_modules/extglob/node_modules/is-data-descriptor/index.js +++ /dev/null @@ -1,49 +0,0 @@ -/*! - * is-data-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -module.exports = function isDataDescriptor(obj, prop) { - // data descriptor properties - var data = { - configurable: 'boolean', - enumerable: 'boolean', - writable: 'boolean' - }; - - if (typeOf(obj) !== 'object') { - return false; - } - - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (!('value' in obj) && !('writable' in obj)) { - return false; - } - - for (var key in obj) { - if (key === 'value') continue; - - if (!data.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === data[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -}; diff --git a/node_modules/extglob/node_modules/is-data-descriptor/package.json b/node_modules/extglob/node_modules/is-data-descriptor/package.json deleted file mode 100644 index fab84cb1e..000000000 --- a/node_modules/extglob/node_modules/is-data-descriptor/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_args": [ - [ - "is-data-descriptor@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-data-descriptor@1.0.0", - "_id": "is-data-descriptor@1.0.0", - "_inBundle": false, - "_integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "_location": "/extglob/is-data-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-data-descriptor@1.0.0", - "name": "is-data-descriptor", - "escapedName": "is-data-descriptor", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/extglob/is-descriptor" - ], - "_resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-data-descriptor/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Rouven Weßling", - "url": "www.rouvenwessling.de" - } - ], - "dependencies": { - "kind-of": "^6.0.0" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-data-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-data-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-data-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "isobject" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/extglob/node_modules/is-descriptor/LICENSE b/node_modules/extglob/node_modules/is-descriptor/LICENSE deleted file mode 100644 index c0d7f1362..000000000 --- a/node_modules/extglob/node_modules/is-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/extglob/node_modules/is-descriptor/README.md b/node_modules/extglob/node_modules/is-descriptor/README.md deleted file mode 100644 index 658e53301..000000000 --- a/node_modules/extglob/node_modules/is-descriptor/README.md +++ /dev/null @@ -1,193 +0,0 @@ -# is-descriptor [![NPM version](https://img.shields.io/npm/v/is-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-descriptor.svg?style=flat)](https://npmjs.org/package/is-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-descriptor.svg?style=flat)](https://npmjs.org/package/is-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-descriptor -``` - -## Usage - -```js -var isDescriptor = require('is-descriptor'); - -isDescriptor({value: 'foo'}) -//=> true -isDescriptor({get: function(){}, set: function(){}}) -//=> true -isDescriptor({get: 'foo', set: function(){}}) -//=> false -``` - -You may also check for a descriptor by passing an object as the first argument and property name (`string`) as the second argument. - -```js -var obj = {}; -obj.foo = 'abc'; - -Object.defineProperty(obj, 'bar', { - value: 'xyz' -}); - -isDescriptor(obj, 'foo'); -//=> true -isDescriptor(obj, 'bar'); -//=> true -``` - -## Examples - -### value type - -`false` when not an object - -```js -isDescriptor('a'); -//=> false -isDescriptor(null); -//=> false -isDescriptor([]); -//=> false -``` - -### data descriptor - -`true` when the object has valid properties with valid values. - -```js -isDescriptor({value: 'foo'}); -//=> true -isDescriptor({value: noop}); -//=> true -``` - -`false` when the object has invalid properties - -```js -isDescriptor({value: 'foo', bar: 'baz'}); -//=> false -isDescriptor({value: 'foo', bar: 'baz'}); -//=> false -isDescriptor({value: 'foo', get: noop}); -//=> false -isDescriptor({get: noop, value: noop}); -//=> false -``` - -`false` when a value is not the correct type - -```js -isDescriptor({value: 'foo', enumerable: 'foo'}); -//=> false -isDescriptor({value: 'foo', configurable: 'foo'}); -//=> false -isDescriptor({value: 'foo', writable: 'foo'}); -//=> false -``` - -### accessor descriptor - -`true` when the object has valid properties with valid values. - -```js -isDescriptor({get: noop, set: noop}); -//=> true -isDescriptor({get: noop}); -//=> true -isDescriptor({set: noop}); -//=> true -``` - -`false` when the object has invalid properties - -```js -isDescriptor({get: noop, set: noop, bar: 'baz'}); -//=> false -isDescriptor({get: noop, writable: true}); -//=> false -isDescriptor({get: noop, value: true}); -//=> false -``` - -`false` when an accessor is not a function - -```js -isDescriptor({get: noop, set: 'baz'}); -//=> false -isDescriptor({get: 'foo', set: noop}); -//=> false -isDescriptor({get: 'foo', bar: 'baz'}); -//=> false -isDescriptor({get: 'foo', set: 'baz'}); -//=> false -``` - -`false` when a value is not the correct type - -```js -isDescriptor({get: noop, set: noop, enumerable: 'foo'}); -//=> false -isDescriptor({set: noop, configurable: 'foo'}); -//=> false -isDescriptor({get: noop, configurable: 'foo'}); -//=> false -``` - -## About - -### Related projects - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 24 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [doowb](https://github.com/doowb) | -| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 22, 2017._ \ No newline at end of file diff --git a/node_modules/extglob/node_modules/is-descriptor/index.js b/node_modules/extglob/node_modules/is-descriptor/index.js deleted file mode 100644 index c9b91d762..000000000 --- a/node_modules/extglob/node_modules/is-descriptor/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * is-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); -var isAccessor = require('is-accessor-descriptor'); -var isData = require('is-data-descriptor'); - -module.exports = function isDescriptor(obj, key) { - if (typeOf(obj) !== 'object') { - return false; - } - if ('get' in obj) { - return isAccessor(obj, key); - } - return isData(obj, key); -}; diff --git a/node_modules/extglob/node_modules/is-descriptor/package.json b/node_modules/extglob/node_modules/is-descriptor/package.json deleted file mode 100644 index e26b7e447..000000000 --- a/node_modules/extglob/node_modules/is-descriptor/package.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "_args": [ - [ - "is-descriptor@1.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-descriptor@1.0.2", - "_id": "is-descriptor@1.0.2", - "_inBundle": false, - "_integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "_location": "/extglob/is-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-descriptor@1.0.2", - "name": "is-descriptor", - "escapedName": "is-descriptor", - "rawSpec": "1.0.2", - "saveSpec": null, - "fetchSpec": "1.0.2" - }, - "_requiredBy": [ - "/extglob/define-property" - ], - "_resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "_spec": "1.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-descriptor/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - } - ], - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "isobject" - ] - }, - "plugins": [ - "gulp-format-md" - ], - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.2" -} diff --git a/node_modules/extglob/package.json b/node_modules/extglob/package.json deleted file mode 100644 index 2f5bce00d..000000000 --- a/node_modules/extglob/package.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "_args": [ - [ - "extglob@2.0.4", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "extglob@2.0.4", - "_id": "extglob@2.0.4", - "_inBundle": false, - "_integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "_location": "/extglob", - "_phantomChildren": { - "is-extendable": "0.1.1", - "kind-of": "6.0.3" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "extglob@2.0.4", - "name": "extglob", - "escapedName": "extglob", - "rawSpec": "2.0.4", - "saveSpec": null, - "fetchSpec": "2.0.4" - }, - "_requiredBy": [ - "/micromatch" - ], - "_resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "_spec": "2.0.4", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/micromatch/extglob/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Devon Govett", - "url": "http://badassjs.com" - }, - { - "name": "Isiah Meadows", - "url": "https://www.isiahmeadows.com" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Matt Bierner", - "url": "http://mattbierner.com" - }, - { - "name": "Shinnosuke Watanabe", - "url": "https://shinnn.github.io" - } - ], - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "description": "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.", - "devDependencies": { - "bash-match": "^1.0.2", - "for-own": "^1.0.0", - "gulp": "^3.9.1", - "gulp-eslint": "^4.0.0", - "gulp-format-md": "^1.0.0", - "gulp-istanbul": "^1.1.2", - "gulp-mocha": "^3.0.1", - "gulp-unused": "^0.2.1", - "helper-changelog": "^0.3.0", - "is-windows": "^1.0.1", - "micromatch": "^3.0.4", - "minimatch": "^3.0.4", - "minimist": "^1.2.0", - "mocha": "^3.5.0", - "multimatch": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "lib" - ], - "homepage": "https://github.com/micromatch/extglob", - "keywords": [ - "bash", - "extended", - "extglob", - "glob", - "globbing", - "ksh", - "match", - "pattern", - "patterns", - "regex", - "test", - "wildcard" - ], - "license": "MIT", - "lintDeps": { - "devDependencies": { - "files": { - "options": { - "ignore": [ - "benchmark/**/*.js" - ] - } - } - } - }, - "main": "index.js", - "name": "extglob", - "repository": { - "type": "git", - "url": "git+https://github.com/micromatch/extglob.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "related": { - "list": [ - "braces", - "expand-brackets", - "expand-range", - "fill-range", - "micromatch" - ] - }, - "helpers": [ - "helper-changelog" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "2.0.4" -} diff --git a/node_modules/falsey/LICENSE b/node_modules/falsey/LICENSE deleted file mode 100644 index 3f2eca18f..000000000 --- a/node_modules/falsey/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/falsey/README.md b/node_modules/falsey/README.md deleted file mode 100644 index 50cbc51ed..000000000 --- a/node_modules/falsey/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# falsey [![NPM version](https://img.shields.io/npm/v/falsey.svg?style=flat)](https://www.npmjs.com/package/falsey) [![NPM monthly downloads](https://img.shields.io/npm/dm/falsey.svg?style=flat)](https://npmjs.org/package/falsey) [![NPM total downloads](https://img.shields.io/npm/dt/falsey.svg?style=flat)](https://npmjs.org/package/falsey) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/falsey.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/falsey) [![Windows Build Status](https://img.shields.io/appveyor/ci/jonschlinkert/falsey.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/jonschlinkert/falsey) - -> Returns true if `value` is falsey. Works for strings, arrays and `arguments` objects with a length of `0`, and objects with no own enumerable properties are considered falsey. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save falsey -``` - -What makes this lib unique (and fun) is the option to pass an array of values that should always evuate as "falsey". - -This is useful for CLI prompts, web forms, etc. For example, you might want to allow users to define `nil` or `nope` to disable something. - -## Usage - -```js -var isFalsey = require('falsey'); - -console.log(isFalsey('nil'); -//=> `true` -``` - -## Examples - -All of the following return `true` - -```js -isFalsey(undefined); -isFalsey(null); -isFalsey(false); -isFalsey(0); -isFalsey(''); -isFalsey(NaN); -isFalsey({}); -isFalsey([]); -``` - -All of the following return `false`: - -```js -isFalsey('foo'); -isFalsey(true); -isFalsey(50); -isFalsey('10'); -isFalsey({a: 'b'}); -isFalsey([0]); -``` - -### Special cases - -There are several additional "falsey" words built in, but these can be overridden or turned off by passing a value as the second argument. - -**Built-in additional falsey keywords** - -* `none` -* `nil` -* `nope` -* `no` -* `nada` -* `0` -* `false` - -**Disable additions** - -```js -isFalsey('nil', []); -//=> false -``` - -**Customize additions** - -Pass one or more keywords that should return `true` when evaluated as _falsey_: - -```js -isFalsey('zilch', ['no', 'nope', 'nada', 'zilch']); -//=> true -``` - -**Extend additions** - -Built-in keywords are exposed on the `.keywords` property. These can be used to extend the defaults: - -```js -isFalsey('zilch', isFalsey.keywords.concat(['zilch'])); -//=> true -``` - -## About - -### Related projects - -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") -* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on September 11, 2017._ \ No newline at end of file diff --git a/node_modules/falsey/index.js b/node_modules/falsey/index.js deleted file mode 100644 index ccd10ad23..000000000 --- a/node_modules/falsey/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/*! - * falsey - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -function falsey(val, keywords) { - if (!val) return true; - - if (Array.isArray(val) || typeOf(val) === 'arguments') { - return !val.length; - } - - if (typeOf(val) === 'object') { - return !Object.keys(val).length; - } - - var arr = !keywords - ? falsey.keywords - : arrayify(keywords); - - return arr.indexOf(val.toLowerCase ? val.toLowerCase() : val) !== -1; -} - -/** - * Expose `keywords` - */ - -falsey.keywords = ['none', 'nil', 'nope', 'no', 'nada', '0', 'false']; - -function arrayify(val) { - return Array.isArray(val) ? val : [val]; -} - -module.exports = falsey; diff --git a/node_modules/falsey/node_modules/kind-of/LICENSE b/node_modules/falsey/node_modules/kind-of/LICENSE deleted file mode 100644 index 3f2eca18f..000000000 --- a/node_modules/falsey/node_modules/kind-of/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/falsey/node_modules/kind-of/README.md b/node_modules/falsey/node_modules/kind-of/README.md deleted file mode 100644 index 170bf3049..000000000 --- a/node_modules/falsey/node_modules/kind-of/README.md +++ /dev/null @@ -1,342 +0,0 @@ -# kind-of [![NPM version](https://img.shields.io/npm/v/kind-of.svg?style=flat)](https://www.npmjs.com/package/kind-of) [![NPM monthly downloads](https://img.shields.io/npm/dm/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![NPM total downloads](https://img.shields.io/npm/dt/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/kind-of.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/kind-of) - -> Get the native type of a value. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save kind-of -``` - -Install with [bower](https://bower.io/) - -```sh -$ bower install kind-of --save -``` - -## Why use this? - -1. [it's fast](#benchmarks) | [optimizations](#optimizations) -2. [better type checking](#better-type-checking) - -## Usage - -> es5, browser and es6 ready - -```js -var kindOf = require('kind-of'); - -kindOf(undefined); -//=> 'undefined' - -kindOf(null); -//=> 'null' - -kindOf(true); -//=> 'boolean' - -kindOf(false); -//=> 'boolean' - -kindOf(new Boolean(true)); -//=> 'boolean' - -kindOf(new Buffer('')); -//=> 'buffer' - -kindOf(42); -//=> 'number' - -kindOf(new Number(42)); -//=> 'number' - -kindOf('str'); -//=> 'string' - -kindOf(new String('str')); -//=> 'string' - -kindOf(arguments); -//=> 'arguments' - -kindOf({}); -//=> 'object' - -kindOf(Object.create(null)); -//=> 'object' - -kindOf(new Test()); -//=> 'object' - -kindOf(new Date()); -//=> 'date' - -kindOf([]); -//=> 'array' - -kindOf([1, 2, 3]); -//=> 'array' - -kindOf(new Array()); -//=> 'array' - -kindOf(/foo/); -//=> 'regexp' - -kindOf(new RegExp('foo')); -//=> 'regexp' - -kindOf(function () {}); -//=> 'function' - -kindOf(function * () {}); -//=> 'function' - -kindOf(new Function()); -//=> 'function' - -kindOf(new Map()); -//=> 'map' - -kindOf(new WeakMap()); -//=> 'weakmap' - -kindOf(new Set()); -//=> 'set' - -kindOf(new WeakSet()); -//=> 'weakset' - -kindOf(Symbol('str')); -//=> 'symbol' - -kindOf(new Int8Array()); -//=> 'int8array' - -kindOf(new Uint8Array()); -//=> 'uint8array' - -kindOf(new Uint8ClampedArray()); -//=> 'uint8clampedarray' - -kindOf(new Int16Array()); -//=> 'int16array' - -kindOf(new Uint16Array()); -//=> 'uint16array' - -kindOf(new Int32Array()); -//=> 'int32array' - -kindOf(new Uint32Array()); -//=> 'uint32array' - -kindOf(new Float32Array()); -//=> 'float32array' - -kindOf(new Float64Array()); -//=> 'float64array' -``` - -## Release history - -### v4.0.0 - -**Added** - -* `promise` support - -### v5.0.0 - -**Added** - -* `Set Iterator` and `Map Iterator` support - -**Fixed** - -* Now returns `generatorfunction` for generator functions - -## Benchmarks - -Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of). -Note that performaces is slower for es6 features `Map`, `WeakMap`, `Set` and `WeakSet`. - -```bash -#1: array - current x 23,329,397 ops/sec ±0.82% (94 runs sampled) - lib-type-of x 4,170,273 ops/sec ±0.55% (94 runs sampled) - lib-typeof x 9,686,935 ops/sec ±0.59% (98 runs sampled) - -#2: boolean - current x 27,197,115 ops/sec ±0.85% (94 runs sampled) - lib-type-of x 3,145,791 ops/sec ±0.73% (97 runs sampled) - lib-typeof x 9,199,562 ops/sec ±0.44% (99 runs sampled) - -#3: date - current x 20,190,117 ops/sec ±0.86% (92 runs sampled) - lib-type-of x 5,166,970 ops/sec ±0.74% (94 runs sampled) - lib-typeof x 9,610,821 ops/sec ±0.50% (96 runs sampled) - -#4: function - current x 23,855,460 ops/sec ±0.60% (97 runs sampled) - lib-type-of x 5,667,740 ops/sec ±0.54% (100 runs sampled) - lib-typeof x 10,010,644 ops/sec ±0.44% (100 runs sampled) - -#5: null - current x 27,061,047 ops/sec ±0.97% (96 runs sampled) - lib-type-of x 13,965,573 ops/sec ±0.62% (97 runs sampled) - lib-typeof x 8,460,194 ops/sec ±0.61% (97 runs sampled) - -#6: number - current x 25,075,682 ops/sec ±0.53% (99 runs sampled) - lib-type-of x 2,266,405 ops/sec ±0.41% (98 runs sampled) - lib-typeof x 9,821,481 ops/sec ±0.45% (99 runs sampled) - -#7: object - current x 3,348,980 ops/sec ±0.49% (99 runs sampled) - lib-type-of x 3,245,138 ops/sec ±0.60% (94 runs sampled) - lib-typeof x 9,262,952 ops/sec ±0.59% (99 runs sampled) - -#8: regex - current x 21,284,827 ops/sec ±0.72% (96 runs sampled) - lib-type-of x 4,689,241 ops/sec ±0.43% (100 runs sampled) - lib-typeof x 8,957,593 ops/sec ±0.62% (98 runs sampled) - -#9: string - current x 25,379,234 ops/sec ±0.58% (96 runs sampled) - lib-type-of x 3,635,148 ops/sec ±0.76% (93 runs sampled) - lib-typeof x 9,494,134 ops/sec ±0.49% (98 runs sampled) - -#10: undef - current x 27,459,221 ops/sec ±1.01% (93 runs sampled) - lib-type-of x 14,360,433 ops/sec ±0.52% (99 runs sampled) - lib-typeof x 23,202,868 ops/sec ±0.59% (94 runs sampled) - -``` - -## Optimizations - -In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library: - -1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot. -2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it. -3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'` -4. There is no reason to make the code in a microlib as terse as possible, just to win points for making it shorter. It's always better to favor performant code over terse code. You will always only be using a single `require()` statement to use the library anyway, regardless of how the code is written. - -## Better type checking - -kind-of is more correct than other type checking libs I've looked at. For example, here are some differing results from other popular libs: - -### [typeof](https://github.com/CodingFu/typeof) lib - -Incorrectly tests instances of custom constructors (pretty common): - -```js -var typeOf = require('typeof'); -function Test() {} -console.log(typeOf(new Test())); -//=> 'test' -``` - -Returns `object` instead of `arguments`: - -```js -function foo() { - console.log(typeOf(arguments)) //=> 'object' -} -foo(); -``` - -### [type-of](https://github.com/ForbesLindesay/type-of) lib - -Incorrectly returns `object` for generator functions, buffers, `Map`, `Set`, `WeakMap` and `WeakSet`: - -```js -function * foo() {} -console.log(typeOf(foo)); -//=> 'object' -console.log(typeOf(new Buffer(''))); -//=> 'object' -console.log(typeOf(new Map())); -//=> 'object' -console.log(typeOf(new Set())); -//=> 'object' -console.log(typeOf(new WeakMap())); -//=> 'object' -console.log(typeOf(new WeakSet())); -//=> 'object' -``` - -## About - -
-Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
- -
-Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
- -
-Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
- -### Related projects - -You might also be interested in these projects: - -* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 82 | [jonschlinkert](https://github.com/jonschlinkert) | -| 3 | [aretecode](https://github.com/aretecode) | -| 2 | [miguelmota](https://github.com/miguelmota) | -| 1 | [dtothefp](https://github.com/dtothefp) | -| 1 | [ksheedlo](https://github.com/ksheedlo) | -| 1 | [pdehaan](https://github.com/pdehaan) | -| 1 | [laggingreflex](https://github.com/laggingreflex) | -| 1 | [charlike](https://github.com/charlike) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on October 13, 2017._ \ No newline at end of file diff --git a/node_modules/falsey/node_modules/kind-of/index.js b/node_modules/falsey/node_modules/kind-of/index.js deleted file mode 100644 index fc5cde96e..000000000 --- a/node_modules/falsey/node_modules/kind-of/index.js +++ /dev/null @@ -1,147 +0,0 @@ -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - var type = typeof val; - - // primitivies - if (type === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (type === 'string' || val instanceof String) { - return 'string'; - } - if (type === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (type === 'function' || val instanceof Function) { - if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') { - return 'generatorfunction'; - } - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - if (type === '[object Promise]') { - return 'promise'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - if (type === '[object Map Iterator]') { - return 'mapiterator'; - } - if (type === '[object Set Iterator]') { - return 'setiterator'; - } - if (type === '[object String Iterator]') { - return 'stringiterator'; - } - if (type === '[object Array Iterator]') { - return 'arrayiterator'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - -/** - * If you need to support Safari 5-7 (8-10 yr-old browser), - * take a look at https://github.com/feross/is-buffer - */ - -function isBuffer(val) { - return val.constructor - && typeof val.constructor.isBuffer === 'function' - && val.constructor.isBuffer(val); -} diff --git a/node_modules/falsey/node_modules/kind-of/package.json b/node_modules/falsey/node_modules/kind-of/package.json deleted file mode 100644 index 326c16d7f..000000000 --- a/node_modules/falsey/node_modules/kind-of/package.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "_from": "kind-of@^5.0.2", - "_id": "kind-of@5.1.0", - "_inBundle": false, - "_integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "_location": "/falsey/kind-of", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "kind-of@^5.0.2", - "name": "kind-of", - "escapedName": "kind-of", - "rawSpec": "^5.0.2", - "saveSpec": null, - "fetchSpec": "^5.0.2" - }, - "_requiredBy": [ - "/falsey" - ], - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "_shasum": "729c91e2d857b7a419a1f9aa65685c4c33f5845d", - "_spec": "kind-of@^5.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\falsey", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/kind-of/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "David Fox-Powell", - "url": "https://dtothefp.github.io/me" - }, - { - "name": "James", - "url": "https://twitter.com/aretecode" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Ken Sheedlo", - "url": "kensheedlo.com" - }, - { - "name": "laggingreflex", - "url": "https://github.com/laggingreflex" - }, - { - "name": "Miguel Mota", - "url": "https://miguelmota.com" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - }, - { - "name": "tunnckoCore", - "url": "https://i.am.charlike.online" - } - ], - "deprecated": false, - "description": "Get the native type of a value.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "benchmarked": "^1.1.1", - "browserify": "^14.4.0", - "gulp-format-md": "^0.1.12", - "matched": "^0.4.4", - "mocha": "^3.4.2", - "type-of": "^2.0.1", - "typeof": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/kind-of", - "keywords": [ - "arguments", - "array", - "boolean", - "check", - "date", - "function", - "is", - "is-type", - "is-type-of", - "kind", - "kind-of", - "number", - "object", - "of", - "regexp", - "string", - "test", - "type", - "type-of", - "typeof", - "types" - ], - "license": "MIT", - "main": "index.js", - "name": "kind-of", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/kind-of.git" - }, - "scripts": { - "prepublish": "browserify -o browser.js -e index.js -s index --bare", - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-glob", - "is-number", - "is-primitive" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "type-of", - "typeof", - "verb" - ] - }, - "version": "5.1.0" -} diff --git a/node_modules/falsey/package.json b/node_modules/falsey/package.json deleted file mode 100644 index ccb8cbbcb..000000000 --- a/node_modules/falsey/package.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "_from": "falsey@^0.3.2", - "_id": "falsey@0.3.2", - "_inBundle": false, - "_integrity": "sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg==", - "_location": "/falsey", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "falsey@^0.3.2", - "name": "falsey", - "escapedName": "falsey", - "rawSpec": "^0.3.2", - "saveSpec": null, - "fetchSpec": "^0.3.2" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/falsey/-/falsey-0.3.2.tgz", - "_shasum": "b21c90c5c34660fc192bf909575db95b6880d597", - "_spec": "falsey@^0.3.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/falsey/issues" - }, - "bundleDependencies": false, - "dependencies": { - "kind-of": "^5.0.2" - }, - "deprecated": false, - "description": "Returns true if `value` is falsey. Works for strings, arrays and `arguments` objects with a length of `0`, and objects with no own enumerable properties are considered falsey.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/falsey", - "keywords": [ - "args", - "arguments", - "array", - "boolean", - "check", - "false", - "falsey", - "null", - "object", - "type", - "undefined", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "falsey", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/falsey.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-number", - "is-primitive", - "isobject", - "kind-of" - ] - }, - "plugins": [ - "gulp-format-md" - ], - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.3.2" -} diff --git a/node_modules/fill-range/LICENSE b/node_modules/fill-range/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/fill-range/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/fill-range/README.md b/node_modules/fill-range/README.md deleted file mode 100644 index bc1f8a044..000000000 --- a/node_modules/fill-range/README.md +++ /dev/null @@ -1,250 +0,0 @@ -# fill-range [![NPM version](https://img.shields.io/npm/v/fill-range.svg?style=flat)](https://www.npmjs.com/package/fill-range) [![NPM monthly downloads](https://img.shields.io/npm/dm/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![NPM total downloads](https://img.shields.io/npm/dt/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/fill-range.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/fill-range) - -> Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex` - -## Table of Contents - -- [Install](#install) -- [Usage](#usage) -- [Examples](#examples) -- [Options](#options) - * [options.step](#optionsstep) - * [options.strictRanges](#optionsstrictranges) - * [options.stringify](#optionsstringify) - * [options.toRegex](#optionstoregex) - * [options.transform](#optionstransform) -- [About](#about) - -_(TOC generated by [verb](https://github.com/verbose/verb) using [markdown-toc](https://github.com/jonschlinkert/markdown-toc))_ - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save fill-range -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add fill-range -``` - -## Usage - -Expands numbers and letters, optionally using a `step` as the last argument. _(Numbers may be defined as JavaScript numbers or strings)_. - -```js -var fill = require('fill-range'); -fill(from, to[, step, options]); - -// examples -console.log(fill('1', '10')); //=> '[ '1', '2', '3', '4', '5', '6', '7', '8', '9', '10' ]' -console.log(fill('1', '10', {toRegex: true})); //=> [1-9]|10 -``` - -**Params** - -* `from`: **{String|Number}** the number or letter to start with -* `to`: **{String|Number}** the number or letter to end with -* `step`: **{String|Number|Object|Function}** Optionally pass a [step](#optionsstep) to use. -* `options`: **{Object|Function}**: See all available [options](#options) - -## Examples - -By default, an array of values is returned. - -**Alphabetical ranges** - -```js -console.log(fill('a', 'e')); //=> ['a', 'b', 'c', 'd', 'e'] -console.log(fill('A', 'E')); //=> [ 'A', 'B', 'C', 'D', 'E' ] -``` - -**Numerical ranges** - -Numbers can be defined as actual numbers or strings. - -```js -console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ] -console.log(fill('1', '5')); //=> [ 1, 2, 3, 4, 5 ] -``` - -**Negative ranges** - -Numbers can be defined as actual numbers or strings. - -```js -console.log(fill('-5', '-1')); //=> [ '-5', '-4', '-3', '-2', '-1' ] -console.log(fill('-5', '5')); //=> [ '-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5' ] -``` - -**Steps (increments)** - -```js -// numerical ranges with increments -console.log(fill('0', '25', 4)); //=> [ '0', '4', '8', '12', '16', '20', '24' ] -console.log(fill('0', '25', 5)); //=> [ '0', '5', '10', '15', '20', '25' ] -console.log(fill('0', '25', 6)); //=> [ '0', '6', '12', '18', '24' ] - -// alphabetical ranges with increments -console.log(fill('a', 'z', 4)); //=> [ 'a', 'e', 'i', 'm', 'q', 'u', 'y' ] -console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ] -console.log(fill('a', 'z', 6)); //=> [ 'a', 'g', 'm', 's', 'y' ] -``` - -## Options - -### options.step - -**Type**: `number` (formatted as a string or number) - -**Default**: `undefined` - -**Description**: The increment to use for the range. Can be used with letters or numbers. - -**Example(s)** - -```js -// numbers -console.log(fill('1', '10', 2)); //=> [ '1', '3', '5', '7', '9' ] -console.log(fill('1', '10', 3)); //=> [ '1', '4', '7', '10' ] -console.log(fill('1', '10', 4)); //=> [ '1', '5', '9' ] - -// letters -console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ] -console.log(fill('a', 'z', 7)); //=> [ 'a', 'h', 'o', 'v' ] -console.log(fill('a', 'z', 9)); //=> [ 'a', 'j', 's' ] -``` - -### options.strictRanges - -**Type**: `boolean` - -**Default**: `false` - -**Description**: By default, `null` is returned when an invalid range is passed. Enable this option to throw a `RangeError` on invalid ranges. - -**Example(s)** - -The following are all invalid: - -```js -fill('1.1', '2'); // decimals not supported in ranges -fill('a', '2'); // incompatible range values -fill(1, 10, 'foo'); // invalid "step" argument -``` - -### options.stringify - -**Type**: `boolean` - -**Default**: `undefined` - -**Description**: Cast all returned values to strings. By default, integers are returned as numbers. - -**Example(s)** - -```js -console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ] -console.log(fill(1, 5, {stringify: true})); //=> [ '1', '2', '3', '4', '5' ] -``` - -### options.toRegex - -**Type**: `boolean` - -**Default**: `undefined` - -**Description**: Create a regex-compatible source string, instead of expanding values to an array. - -**Example(s)** - -```js -// alphabetical range -console.log(fill('a', 'e', {toRegex: true})); //=> '[a-e]' -// alphabetical with step -console.log(fill('a', 'z', 3, {toRegex: true})); //=> 'a|d|g|j|m|p|s|v|y' -// numerical range -console.log(fill('1', '100', {toRegex: true})); //=> '[1-9]|[1-9][0-9]|100' -// numerical range with zero padding -console.log(fill('000001', '100000', {toRegex: true})); -//=> '0{5}[1-9]|0{4}[1-9][0-9]|0{3}[1-9][0-9]{2}|0{2}[1-9][0-9]{3}|0[1-9][0-9]{4}|100000' -``` - -### options.transform - -**Type**: `function` - -**Default**: `undefined` - -**Description**: Customize each value in the returned array (or [string](#optionstoRegex)). _(you can also pass this function as the last argument to `fill()`)_. - -**Example(s)** - -```js -// increase padding by two -var arr = fill('01', '05', function(val, a, b, step, idx, arr, options) { - return repeat('0', (options.maxLength + 2) - val.length) + val; -}); - -console.log(arr); -//=> ['0001', '0002', '0003', '0004', '0005'] -``` - -## About - -### Related projects - -* [braces](https://www.npmjs.com/package/braces): Fast, comprehensive, bash-like brace expansion implemented in JavaScript. Complete support for the Bash 4.3 braces… [more](https://github.com/jonschlinkert/braces) | [homepage](https://github.com/jonschlinkert/braces "Fast, comprehensive, bash-like brace expansion implemented in JavaScript. Complete support for the Bash 4.3 braces specification, without sacrificing speed.") -* [expand-range](https://www.npmjs.com/package/expand-range): Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See… [more](https://github.com/jonschlinkert/expand-range) | [homepage](https://github.com/jonschlinkert/expand-range "Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See the benchmarks. Used by micromatch.") -* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") -* [to-regex-range](https://www.npmjs.com/package/to-regex-range): Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than… [more](https://github.com/jonschlinkert/to-regex-range) | [homepage](https://github.com/jonschlinkert/to-regex-range "Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.87 million test assertions.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 103 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [paulmillr](https://github.com/paulmillr) | -| 1 | [edorivai](https://github.com/edorivai) | -| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 23, 2017._ \ No newline at end of file diff --git a/node_modules/fill-range/index.js b/node_modules/fill-range/index.js deleted file mode 100644 index 294a2edde..000000000 --- a/node_modules/fill-range/index.js +++ /dev/null @@ -1,208 +0,0 @@ -/*! - * fill-range - * - * Copyright (c) 2014-2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var util = require('util'); -var isNumber = require('is-number'); -var extend = require('extend-shallow'); -var repeat = require('repeat-string'); -var toRegex = require('to-regex-range'); - -/** - * Return a range of numbers or letters. - * - * @param {String} `start` Start of the range - * @param {String} `stop` End of the range - * @param {String} `step` Increment or decrement to use. - * @param {Function} `fn` Custom function to modify each element in the range. - * @return {Array} - */ - -function fillRange(start, stop, step, options) { - if (typeof start === 'undefined') { - return []; - } - - if (typeof stop === 'undefined' || start === stop) { - // special case, for handling negative zero - var isString = typeof start === 'string'; - if (isNumber(start) && !toNumber(start)) { - return [isString ? '0' : 0]; - } - return [start]; - } - - if (typeof step !== 'number' && typeof step !== 'string') { - options = step; - step = undefined; - } - - if (typeof options === 'function') { - options = { transform: options }; - } - - var opts = extend({step: step}, options); - if (opts.step && !isValidNumber(opts.step)) { - if (opts.strictRanges === true) { - throw new TypeError('expected options.step to be a number'); - } - return []; - } - - opts.isNumber = isValidNumber(start) && isValidNumber(stop); - if (!opts.isNumber && !isValid(start, stop)) { - if (opts.strictRanges === true) { - throw new RangeError('invalid range arguments: ' + util.inspect([start, stop])); - } - return []; - } - - opts.isPadded = isPadded(start) || isPadded(stop); - opts.toString = opts.stringify - || typeof opts.step === 'string' - || typeof start === 'string' - || typeof stop === 'string' - || !opts.isNumber; - - if (opts.isPadded) { - opts.maxLength = Math.max(String(start).length, String(stop).length); - } - - // support legacy minimatch/fill-range options - if (typeof opts.optimize === 'boolean') opts.toRegex = opts.optimize; - if (typeof opts.makeRe === 'boolean') opts.toRegex = opts.makeRe; - return expand(start, stop, opts); -} - -function expand(start, stop, options) { - var a = options.isNumber ? toNumber(start) : start.charCodeAt(0); - var b = options.isNumber ? toNumber(stop) : stop.charCodeAt(0); - - var step = Math.abs(toNumber(options.step)) || 1; - if (options.toRegex && step === 1) { - return toRange(a, b, start, stop, options); - } - - var zero = {greater: [], lesser: []}; - var asc = a < b; - var arr = new Array(Math.round((asc ? b - a : a - b) / step)); - var idx = 0; - - while (asc ? a <= b : a >= b) { - var val = options.isNumber ? a : String.fromCharCode(a); - if (options.toRegex && (val >= 0 || !options.isNumber)) { - zero.greater.push(val); - } else { - zero.lesser.push(Math.abs(val)); - } - - if (options.isPadded) { - val = zeros(val, options); - } - - if (options.toString) { - val = String(val); - } - - if (typeof options.transform === 'function') { - arr[idx++] = options.transform(val, a, b, step, idx, arr, options); - } else { - arr[idx++] = val; - } - - if (asc) { - a += step; - } else { - a -= step; - } - } - - if (options.toRegex === true) { - return toSequence(arr, zero, options); - } - return arr; -} - -function toRange(a, b, start, stop, options) { - if (options.isPadded) { - return toRegex(start, stop, options); - } - - if (options.isNumber) { - return toRegex(Math.min(a, b), Math.max(a, b), options); - } - - var start = String.fromCharCode(Math.min(a, b)); - var stop = String.fromCharCode(Math.max(a, b)); - return '[' + start + '-' + stop + ']'; -} - -function toSequence(arr, zeros, options) { - var greater = '', lesser = ''; - if (zeros.greater.length) { - greater = zeros.greater.join('|'); - } - if (zeros.lesser.length) { - lesser = '-(' + zeros.lesser.join('|') + ')'; - } - var res = greater && lesser - ? greater + '|' + lesser - : greater || lesser; - - if (options.capture) { - return '(' + res + ')'; - } - return res; -} - -function zeros(val, options) { - if (options.isPadded) { - var str = String(val); - var len = str.length; - var dash = ''; - if (str.charAt(0) === '-') { - dash = '-'; - str = str.slice(1); - } - var diff = options.maxLength - len; - var pad = repeat('0', diff); - val = (dash + pad + str); - } - if (options.stringify) { - return String(val); - } - return val; -} - -function toNumber(val) { - return Number(val) || 0; -} - -function isPadded(str) { - return /^-?0\d/.test(str); -} - -function isValid(min, max) { - return (isValidNumber(min) || isValidLetter(min)) - && (isValidNumber(max) || isValidLetter(max)); -} - -function isValidLetter(ch) { - return typeof ch === 'string' && ch.length === 1 && /^\w+$/.test(ch); -} - -function isValidNumber(n) { - return isNumber(n) && !/\./.test(n); -} - -/** - * Expose `fillRange` - * @type {Function} - */ - -module.exports = fillRange; diff --git a/node_modules/fill-range/node_modules/extend-shallow/LICENSE b/node_modules/fill-range/node_modules/extend-shallow/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/fill-range/node_modules/extend-shallow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/fill-range/node_modules/extend-shallow/README.md b/node_modules/fill-range/node_modules/extend-shallow/README.md deleted file mode 100644 index cdc45d4ff..000000000 --- a/node_modules/fill-range/node_modules/extend-shallow/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# extend-shallow [![NPM version](https://badge.fury.io/js/extend-shallow.svg)](http://badge.fury.io/js/extend-shallow) [![Build Status](https://travis-ci.org/jonschlinkert/extend-shallow.svg)](https://travis-ci.org/jonschlinkert/extend-shallow) - -> Extend an object with the properties of additional objects. node.js/javascript util. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i extend-shallow --save -``` - -## Usage - -```js -var extend = require('extend-shallow'); - -extend({a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -Pass an empty object to shallow clone: - -```js -var obj = {}; -extend(obj, {a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -## Related - -* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. -* [for-own](https://github.com/jonschlinkert/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) -* [for-in](https://github.com/jonschlinkert/for-in): Iterate over the own and inherited enumerable properties of an objecte, and return an object… [more](https://github.com/jonschlinkert/for-in) -* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. -* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. -* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 29, 2015._ \ No newline at end of file diff --git a/node_modules/fill-range/node_modules/extend-shallow/index.js b/node_modules/fill-range/node_modules/extend-shallow/index.js deleted file mode 100644 index 92a067fcc..000000000 --- a/node_modules/fill-range/node_modules/extend-shallow/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var isObject = require('is-extendable'); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} diff --git a/node_modules/fill-range/node_modules/extend-shallow/package.json b/node_modules/fill-range/node_modules/extend-shallow/package.json deleted file mode 100644 index 66f2e0ac9..000000000 --- a/node_modules/fill-range/node_modules/extend-shallow/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "extend-shallow@2.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "extend-shallow@2.0.1", - "_id": "extend-shallow@2.0.1", - "_inBundle": false, - "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "_location": "/fill-range/extend-shallow", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "extend-shallow@2.0.1", - "name": "extend-shallow", - "escapedName": "extend-shallow", - "rawSpec": "2.0.1", - "saveSpec": null, - "fetchSpec": "2.0.1" - }, - "_requiredBy": [ - "/fill-range" - ], - "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "_spec": "2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/extend-shallow/issues" - }, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "description": "Extend an object with the properties of additional objects. node.js/javascript util.", - "devDependencies": { - "array-slice": "^0.2.3", - "benchmarked": "^0.1.4", - "chalk": "^1.0.0", - "for-own": "^0.1.3", - "glob": "^5.0.12", - "is-plain-object": "^2.0.1", - "kind-of": "^2.0.0", - "minimist": "^1.1.1", - "mocha": "^2.2.5", - "should": "^7.0.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/extend-shallow", - "keywords": [ - "assign", - "extend", - "javascript", - "js", - "keys", - "merge", - "obj", - "object", - "prop", - "properties", - "property", - "props", - "shallow", - "util", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "extend-shallow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/extend-shallow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.1" -} diff --git a/node_modules/fill-range/package.json b/node_modules/fill-range/package.json deleted file mode 100644 index 2ba65c850..000000000 --- a/node_modules/fill-range/package.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "_args": [ - [ - "fill-range@4.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "fill-range@4.0.0", - "_id": "fill-range@4.0.0", - "_inBundle": false, - "_integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "_location": "/fill-range", - "_phantomChildren": { - "is-extendable": "0.1.1" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "fill-range@4.0.0", - "name": "fill-range", - "escapedName": "fill-range", - "rawSpec": "4.0.0", - "saveSpec": null, - "fetchSpec": "4.0.0" - }, - "_requiredBy": [ - "/braces" - ], - "_resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "_spec": "4.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/fill-range/issues" - }, - "contributors": [ - { - "email": "wtgtybhertgeghgtwtg@gmail.com", - "url": "https://github.com/wtgtybhertgeghgtwtg" - }, - { - "name": "Edo Rivai", - "email": "edo.rivai@gmail.com", - "url": "edo.rivai.nl" - }, - { - "name": "Jon Schlinkert", - "email": "jon.schlinkert@sellside.com", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Paul Miller", - "email": "paul+gh@paulmillr.com", - "url": "paulmillr.com" - } - ], - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "description": "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`", - "devDependencies": { - "ansi-cyan": "^0.1.1", - "benchmarked": "^1.0.0", - "gulp-format-md": "^0.1.12", - "minimist": "^1.2.0", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/fill-range", - "keywords": [ - "alpha", - "alphabetical", - "array", - "bash", - "brace", - "expand", - "expansion", - "fill", - "glob", - "match", - "matches", - "matching", - "number", - "numerical", - "range", - "ranges", - "regex", - "sh" - ], - "license": "MIT", - "main": "index.js", - "name": "fill-range", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/fill-range.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "braces", - "expand-range", - "micromatch", - "to-regex-range" - ] - }, - "toc": true, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "4.0.0" -} diff --git a/node_modules/for-in/LICENSE b/node_modules/for-in/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/for-in/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/for-in/README.md b/node_modules/for-in/README.md deleted file mode 100644 index 874e1895a..000000000 --- a/node_modules/for-in/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# for-in [![NPM version](https://img.shields.io/npm/v/for-in.svg?style=flat)](https://www.npmjs.com/package/for-in) [![NPM monthly downloads](https://img.shields.io/npm/dm/for-in.svg?style=flat)](https://npmjs.org/package/for-in) [![NPM total downloads](https://img.shields.io/npm/dt/for-in.svg?style=flat)](https://npmjs.org/package/for-in) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/for-in.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/for-in) - -> Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save for-in -``` - -## Usage - -```js -var forIn = require('for-in'); - -var obj = {a: 'foo', b: 'bar', c: 'baz'}; -var values = []; -var keys = []; - -forIn(obj, function (value, key, o) { - keys.push(key); - values.push(value); -}); - -console.log(keys); -//=> ['a', 'b', 'c']; - -console.log(values); -//=> ['foo', 'bar', 'baz']; -``` - -## About - -### Related projects - -* [arr-flatten](https://www.npmjs.com/package/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten. | [homepage](https://github.com/jonschlinkert/arr-flatten "Recursively flatten an array or arrays. This is the fastest implementation of array flatten.") -* [collection-map](https://www.npmjs.com/package/collection-map): Returns an array of mapped values from an array or object. | [homepage](https://github.com/jonschlinkert/collection-map "Returns an array of mapped values from an array or object.") -* [for-own](https://www.npmjs.com/package/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) | [homepage](https://github.com/jonschlinkert/for-own "Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 16 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [paulirish](https://github.com/paulirish) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.4.2, on February 28, 2017._ \ No newline at end of file diff --git a/node_modules/for-in/index.js b/node_modules/for-in/index.js deleted file mode 100644 index 0b5f95f02..000000000 --- a/node_modules/for-in/index.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * for-in - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -module.exports = function forIn(obj, fn, thisArg) { - for (var key in obj) { - if (fn.call(thisArg, obj[key], key, obj) === false) { - break; - } - } -}; diff --git a/node_modules/for-in/package.json b/node_modules/for-in/package.json deleted file mode 100644 index f55641e9e..000000000 --- a/node_modules/for-in/package.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "_args": [ - [ - "for-in@1.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "for-in@1.0.2", - "_id": "for-in@1.0.2", - "_inBundle": false, - "_integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "_location": "/for-in", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "for-in@1.0.2", - "name": "for-in", - "escapedName": "for-in", - "rawSpec": "1.0.2", - "saveSpec": null, - "fetchSpec": "1.0.2" - }, - "_requiredBy": [ - "/mixin-deep" - ], - "_resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "_spec": "1.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/for-in/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "email": "jon.schlinkert@sellside.com", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Paul Irish", - "url": "http://paulirish.com" - } - ], - "description": "Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js", - "devDependencies": { - "gulp-format-md": "^0.1.11", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/for-in", - "keywords": [ - "for", - "for-in", - "for-own", - "has", - "has-own", - "hasOwn", - "in", - "key", - "keys", - "object", - "own", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "for-in", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/for-in.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "arr-flatten", - "collection-map", - "for-own" - ] - }, - "reflinks": [ - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.2" -} diff --git a/node_modules/for-own/LICENSE b/node_modules/for-own/LICENSE deleted file mode 100644 index d290fe00b..000000000 --- a/node_modules/for-own/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, 2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/for-own/README.md b/node_modules/for-own/README.md deleted file mode 100644 index fd56877ae..000000000 --- a/node_modules/for-own/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# for-own [![NPM version](https://img.shields.io/npm/v/for-own.svg?style=flat)](https://www.npmjs.com/package/for-own) [![NPM monthly downloads](https://img.shields.io/npm/dm/for-own.svg?style=flat)](https://npmjs.org/package/for-own) [![NPM total downloads](https://img.shields.io/npm/dt/for-own.svg?style=flat)](https://npmjs.org/package/for-own) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/for-own.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/for-own) - -> Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save for-own -``` - -## Usage - -```js -var forOwn = require('for-own'); - -var obj = {a: 'foo', b: 'bar', c: 'baz'}; -var values = []; -var keys = []; - -forOwn(obj, function (value, key, o) { - keys.push(key); - values.push(value); -}); - -console.log(keys); -//=> ['a', 'b', 'c']; - -console.log(values); -//=> ['foo', 'bar', 'baz']; -``` - -## About - -### Related projects - -* [arr-flatten](https://www.npmjs.com/package/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten. | [homepage](https://github.com/jonschlinkert/arr-flatten "Recursively flatten an array or arrays. This is the fastest implementation of array flatten.") -* [collection-map](https://www.npmjs.com/package/collection-map): Returns an array of mapped values from an array or object. | [homepage](https://github.com/jonschlinkert/collection-map "Returns an array of mapped values from an array or object.") -* [for-in](https://www.npmjs.com/package/for-in): Iterate over the own and inherited enumerable properties of an object, and return an object… [more](https://github.com/jonschlinkert/for-in) | [homepage](https://github.com/jonschlinkert/for-in "Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 10 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [javiercejudo](https://github.com/javiercejudo) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.4.2, on February 26, 2017._ \ No newline at end of file diff --git a/node_modules/for-own/index.js b/node_modules/for-own/index.js deleted file mode 100644 index 74e2d7551..000000000 --- a/node_modules/for-own/index.js +++ /dev/null @@ -1,19 +0,0 @@ -/*! - * for-own - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var forIn = require('for-in'); -var hasOwn = Object.prototype.hasOwnProperty; - -module.exports = function forOwn(obj, fn, thisArg) { - forIn(obj, function(val, key) { - if (hasOwn.call(obj, key)) { - return fn.call(thisArg, obj[key], key, obj); - } - }); -}; diff --git a/node_modules/for-own/package.json b/node_modules/for-own/package.json deleted file mode 100644 index eec81abbb..000000000 --- a/node_modules/for-own/package.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_from": "for-own@^1.0.0", - "_id": "for-own@1.0.0", - "_inBundle": false, - "_integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "_location": "/for-own", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "for-own@^1.0.0", - "name": "for-own", - "escapedName": "for-own", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "_shasum": "c63332f415cedc4b04dbfe70cf836494c53cb44b", - "_spec": "for-own@^1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/for-own/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Javier Cejudo", - "email": "javier@javiercejudo.com", - "url": "https://www.javiercejudo.com" - }, - { - "name": "Jon Schlinkert", - "email": "jon.schlinkert@sellside.com", - "url": "http://twitter.com/jonschlinkert" - } - ], - "dependencies": { - "for-in": "^1.0.1" - }, - "deprecated": false, - "description": "Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js.", - "devDependencies": { - "gulp-format-md": "^0.1.11", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/for-own", - "keywords": [ - "for", - "for-in", - "for-own", - "has", - "has-own", - "hasOwn", - "key", - "keys", - "object", - "own", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "for-own", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/for-own.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "arr-flatten", - "collection-map", - "for-in" - ] - }, - "reflinks": [ - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/fragment-cache/LICENSE b/node_modules/fragment-cache/LICENSE deleted file mode 100644 index b11cb7968..000000000 --- a/node_modules/fragment-cache/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/fragment-cache/README.md b/node_modules/fragment-cache/README.md deleted file mode 100644 index 541ef0fb4..000000000 --- a/node_modules/fragment-cache/README.md +++ /dev/null @@ -1,156 +0,0 @@ -# fragment-cache [![NPM version](https://img.shields.io/npm/v/fragment-cache.svg?style=flat)](https://www.npmjs.com/package/fragment-cache) [![NPM downloads](https://img.shields.io/npm/dm/fragment-cache.svg?style=flat)](https://npmjs.org/package/fragment-cache) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/fragment-cache.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/fragment-cache) - -> A cache for managing namespaced sub-caches - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save fragment-cache -``` - -## Usage - -```js -var Fragment = require('fragment-cache'); -var fragment = new Fragment(); -``` - -## API - -### [FragmentCache](index.js#L24) - -Create a new `FragmentCache` with an optional object to use for `caches`. - -**Example** - -```js -var fragment = new FragmentCache(); -``` - -**Params** - -* `cacheName` **{String}** -* `returns` **{Object}**: Returns the [map-cache](https://github.com/jonschlinkert/map-cache) instance. - -### [.cache](index.js#L49) - -Get cache `name` from the `fragment.caches` object. Creates a new `MapCache` if it doesn't already exist. - -**Example** - -```js -var cache = fragment.cache('files'); -console.log(fragment.caches.hasOwnProperty('files')); -//=> true -``` - -**Params** - -* `cacheName` **{String}** -* `returns` **{Object}**: Returns the [map-cache](https://github.com/jonschlinkert/map-cache) instance. - -### [.set](index.js#L67) - -Set a value for property `key` on cache `name` - -**Example** - -```js -fragment.set('files', 'somefile.js', new File({path: 'somefile.js'})); -``` - -**Params** - -* `name` **{String}** -* `key` **{String}**: Property name to set -* `val` **{any}**: The value of `key` -* `returns` **{Object}**: The cache instance for chaining - -### [.has](index.js#L93) - -Returns true if a non-undefined value is set for `key` on fragment cache `name`. - -**Example** - -```js -var cache = fragment.cache('files'); -cache.set('somefile.js'); - -console.log(cache.has('somefile.js')); -//=> true - -console.log(cache.has('some-other-file.js')); -//=> false -``` - -**Params** - -* `name` **{String}**: Cache name -* `key` **{String}**: Optionally specify a property to check for on cache `name` -* `returns` **{Boolean}** - -### [.get](index.js#L115) - -Get `name`, or if specified, the value of `key`. Invokes the [cache](#cache) method, so that cache `name` will be created it doesn't already exist. If `key` is not passed, the entire cache (`name`) is returned. - -**Example** - -```js -var Vinyl = require('vinyl'); -var cache = fragment.cache('files'); -cache.set('somefile.js', new Vinyl({path: 'somefile.js'})); -console.log(cache.get('somefile.js')); -//=> -``` - -**Params** - -* `name` **{String}** -* `returns` **{Object}**: Returns cache `name`, or the value of `key` if specified - -## About - -### Related projects - -* [base](https://www.npmjs.com/package/base): base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… [more](https://github.com/node-base/base) | [homepage](https://github.com/node-base/base "base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`.") -* [map-cache](https://www.npmjs.com/package/map-cache): Basic cache object for storing key-value pairs. | [homepage](https://github.com/jonschlinkert/map-cache "Basic cache object for storing key-value pairs.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ - -To generate the readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install -g verb verb-generate-readme && verb -``` - -### Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -### License - -Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/fragment-cache/blob/master/LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.2.0, on October 17, 2016._ \ No newline at end of file diff --git a/node_modules/fragment-cache/index.js b/node_modules/fragment-cache/index.js deleted file mode 100644 index 8ce621680..000000000 --- a/node_modules/fragment-cache/index.js +++ /dev/null @@ -1,128 +0,0 @@ -/*! - * fragment-cache - * - * Copyright (c) 2016-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var MapCache = require('map-cache'); - -/** - * Create a new `FragmentCache` with an optional object to use for `caches`. - * - * ```js - * var fragment = new FragmentCache(); - * ``` - * @name FragmentCache - * @param {String} `cacheName` - * @return {Object} Returns the [map-cache][] instance. - * @api public - */ - -function FragmentCache(caches) { - this.caches = caches || {}; -} - -/** - * Prototype - */ - -FragmentCache.prototype = { - - /** - * Get cache `name` from the `fragment.caches` object. Creates a new - * `MapCache` if it doesn't already exist. - * - * ```js - * var cache = fragment.cache('files'); - * console.log(fragment.caches.hasOwnProperty('files')); - * //=> true - * ``` - * @name .cache - * @param {String} `cacheName` - * @return {Object} Returns the [map-cache][] instance. - * @api public - */ - - cache: function(cacheName) { - return this.caches[cacheName] || (this.caches[cacheName] = new MapCache()); - }, - - /** - * Set a value for property `key` on cache `name` - * - * ```js - * fragment.set('files', 'somefile.js', new File({path: 'somefile.js'})); - * ``` - * @name .set - * @param {String} `name` - * @param {String} `key` Property name to set - * @param {any} `val` The value of `key` - * @return {Object} The cache instance for chaining - * @api public - */ - - set: function(cacheName, key, val) { - var cache = this.cache(cacheName); - cache.set(key, val); - return cache; - }, - - /** - * Returns true if a non-undefined value is set for `key` on fragment cache `name`. - * - * ```js - * var cache = fragment.cache('files'); - * cache.set('somefile.js'); - * - * console.log(cache.has('somefile.js')); - * //=> true - * - * console.log(cache.has('some-other-file.js')); - * //=> false - * ``` - * @name .has - * @param {String} `name` Cache name - * @param {String} `key` Optionally specify a property to check for on cache `name` - * @return {Boolean} - * @api public - */ - - has: function(cacheName, key) { - return typeof this.get(cacheName, key) !== 'undefined'; - }, - - /** - * Get `name`, or if specified, the value of `key`. Invokes the [cache]() method, - * so that cache `name` will be created it doesn't already exist. If `key` is not passed, - * the entire cache (`name`) is returned. - * - * ```js - * var Vinyl = require('vinyl'); - * var cache = fragment.cache('files'); - * cache.set('somefile.js', new Vinyl({path: 'somefile.js'})); - * console.log(cache.get('somefile.js')); - * //=> - * ``` - * @name .get - * @param {String} `name` - * @return {Object} Returns cache `name`, or the value of `key` if specified - * @api public - */ - - get: function(name, key) { - var cache = this.cache(name); - if (typeof key === 'string') { - return cache.get(key); - } - return cache; - } -}; - -/** - * Expose `FragmentCache` - */ - -exports = module.exports = FragmentCache; diff --git a/node_modules/fragment-cache/package.json b/node_modules/fragment-cache/package.json deleted file mode 100644 index 15afa9e97..000000000 --- a/node_modules/fragment-cache/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "fragment-cache@0.2.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "fragment-cache@0.2.1", - "_id": "fragment-cache@0.2.1", - "_inBundle": false, - "_integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "_location": "/fragment-cache", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "fragment-cache@0.2.1", - "name": "fragment-cache", - "escapedName": "fragment-cache", - "rawSpec": "0.2.1", - "saveSpec": null, - "fetchSpec": "0.2.1" - }, - "_requiredBy": [ - "/extglob", - "/micromatch", - "/nanomatch" - ], - "_resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "_spec": "0.2.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/fragment-cache/issues" - }, - "dependencies": { - "map-cache": "^0.2.2" - }, - "description": "A cache for managing namespaced sub-caches", - "devDependencies": { - "gulp": "^3.9.1", - "gulp-eslint": "^3.0.1", - "gulp-format-md": "^0.1.11", - "gulp-istanbul": "^1.1.1", - "gulp-mocha": "^3.0.1", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/fragment-cache", - "keywords": [ - "cache", - "fragment" - ], - "license": "MIT", - "main": "index.js", - "name": "fragment-cache", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/fragment-cache.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "plugins": [ - "gulp-format-md" - ], - "reflinks": [ - "map-cache", - "verb" - ], - "related": { - "list": [ - "base", - "map-cache" - ] - }, - "layout": "default", - "toc": false, - "tasks": [ - "readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.2.1" -} diff --git a/node_modules/fs-exists-sync/LICENSE b/node_modules/fs-exists-sync/LICENSE deleted file mode 100644 index e28e60323..000000000 --- a/node_modules/fs-exists-sync/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/fs-exists-sync/README.md b/node_modules/fs-exists-sync/README.md deleted file mode 100644 index 60c429c4d..000000000 --- a/node_modules/fs-exists-sync/README.md +++ /dev/null @@ -1,92 +0,0 @@ -# fs-exists-sync [![NPM version](https://img.shields.io/npm/v/fs-exists-sync.svg?style=flat)](https://www.npmjs.com/package/fs-exists-sync) [![NPM downloads](https://img.shields.io/npm/dm/fs-exists-sync.svg?style=flat)](https://npmjs.org/package/fs-exists-sync) [![Build Status](https://img.shields.io/travis/jonschlinkert/fs-exists-sync.svg?style=flat)](https://travis-ci.org/jonschlinkert/fs-exists-sync) - -> Drop-in replacement for `fs.existsSync` with zero dependencies. Other libs I found either have crucial differences from fs.existsSync, or unnecessary dependencies. See README.md for more info. - -## Install -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install fs-exists-sync --save -``` - -## Usage - -```js -var exists = require('fs-exists-sync'); - -console.log(exists('.')); -//=> true -console.log(exists(process.cwd())); -//=> true -console.log(exists('README.md')); -//=> true -console.log(exists('foo.txt')); -//=> false -console.log(exists('')); -//=> false -console.log(exists()); -//=> false -``` - -## Why another "exists" lib? - -I just want a _simple replacement for `fs.existsSync`_. Here is what I found: - -- [path-exists][]: Has dependencies to support a promises API -- [fs-exists][]: async only -- [file-exists][]: returns `false` if the path exists but is a directory. -- [exists][]: nothing to do with `fs`. - -## API - -## Related projects - -You might also be interested in these projects: - -* [is-absolute](https://www.npmjs.com/package/is-absolute): Polyfill for node.js `path.isAbolute`. Returns true if a file path is absolute. | [homepage](https://github.com/jonschlinkert/is-absolute) -* [parse-filepath](https://www.npmjs.com/package/parse-filepath): Pollyfill for node.js `path.parse`, parses a filepath into an object. | [homepage](https://github.com/jonschlinkert/parse-filepath) -* [try-open](https://www.npmjs.com/package/try-open): Tries to open a file using fs.openSync (only necessary with sync), fails gracefully if the… [more](https://www.npmjs.com/package/try-open) | [homepage](https://github.com/jonschlinkert/try-open) - -## Contributing -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/fs-exists-sync/issues/new). - -## Building docs -Generate readme and API documentation with [verb][]: - -```sh -$ npm install verb && npm run docs -``` - -Or, if [verb][] is installed globally: - -```sh -$ verb -``` - -## Running tests -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -## Author -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License -Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/fs-exists-sync/blob/master/LICENSE). - -*** - -_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on April 09, 2016._ - -[verb]: https://github.com/verbose/verb -[path-exists]: https://github.com/sindresorhus/path-exists -[fs-exists]: https://github.com/meryn/fs-exists -[file-exists]: https://github.com/scottcorgan/file-exists -[exists]: https://github.com/tjmehta/exists - diff --git a/node_modules/fs-exists-sync/index.js b/node_modules/fs-exists-sync/index.js deleted file mode 100644 index b7f00c7de..000000000 --- a/node_modules/fs-exists-sync/index.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * fs-exists-sync (https://github.com/jonschlinkert/fs-exists-sync) - * - * Copyright (c) 2016, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var fs = require('fs'); - -module.exports = function(filepath) { - try { - (fs.accessSync || fs.statSync)(filepath); - return true; - } catch (err) {} - return false; -}; diff --git a/node_modules/fs-exists-sync/package.json b/node_modules/fs-exists-sync/package.json deleted file mode 100644 index 885008716..000000000 --- a/node_modules/fs-exists-sync/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_from": "fs-exists-sync@^0.1.0", - "_id": "fs-exists-sync@0.1.0", - "_inBundle": false, - "_integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", - "_location": "/fs-exists-sync", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "fs-exists-sync@^0.1.0", - "name": "fs-exists-sync", - "escapedName": "fs-exists-sync", - "rawSpec": "^0.1.0", - "saveSpec": null, - "fetchSpec": "^0.1.0" - }, - "_requiredBy": [ - "/helper-md" - ], - "_resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "_shasum": "982d6893af918e72d08dec9e8673ff2b5a8d6add", - "_spec": "fs-exists-sync@^0.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\helper-md", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/fs-exists-sync/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Drop-in replacement for `fs.existsSync` with zero dependencies. Other libs I found either have crucial differences from fs.existsSync, or unnecessary dependencies. See README.md for more info.", - "devDependencies": { - "gulp-format-md": "^0.1.7", - "mocha": "^2.4.5" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/fs-exists-sync", - "keywords": [ - "access", - "check", - "exist", - "exists", - "file", - "file-system", - "filepath", - "filesystem", - "fs", - "is-file", - "isfile", - "path", - "stat", - "sync" - ], - "license": "MIT", - "main": "index.js", - "name": "fs-exists-sync", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/fs-exists-sync.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "layout": "default", - "plugins": [ - "gulp-format-md" - ], - "reflinks": [ - "verb", - "path-exists", - "fs-exists", - "file-exists", - "exists" - ], - "related": { - "list": [ - "try-open", - "parse-filepath", - "is-absolute" - ] - }, - "run": true, - "toc": false, - "tasks": [ - "readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.1.0" -} diff --git a/node_modules/get-object/LICENSE b/node_modules/get-object/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/get-object/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/get-object/README.md b/node_modules/get-object/README.md deleted file mode 100644 index eaf7f3b07..000000000 --- a/node_modules/get-object/README.md +++ /dev/null @@ -1,105 +0,0 @@ -# get-object [![NPM version](https://badge.fury.io/js/get-object.svg)](http://badge.fury.io/js/get-object) - -> Get a property from an object using dot (object path) notation. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i get-object --save -``` - -## Usage - -```js -var get = require('get-object'); - -get({a: {b: {c: 'd'}}}, 'a.b.c'); -//=> {c: 'd'} -``` - -If you want only the value, not key/value, use [get-value](https://github.com/jonschlinkert/get-value). - -## get a value from an object - -```js -get({a: 'aaa', b: {c: 'd'}}, 'a'); -//=> {a: 'aaa'} - -get({a: 'a', b: {c: 'd'}}, 'b.c'); -//=> {c: 'd'} -``` - -## get a value from an array - -```js -get(['a', 'b', 'c'], '0'); -//=> ['a'] - -get(['a', 'b', 'c'], 2); -//=> ['c'] -``` - -## get nested value from an array - -```js -get({a: ['a', 'b', 'c']}, 'a.0'); -//=> ['a'] - -get({a: ['a', 'b', 'c']}, 'a.2'); -//=> ['c'] - -get({a: {b: ['a', 'b', 'c']}}, 'a.b.2'); -//=> ['c'] -``` - -## support array notation - -```js -get({a: ['a', 'b', 'c']}, 'a[0]'); -//=> ['a'] - -get({a: ['a', 'b', 'c']}, 'a[2]'); -//=> ['c'] - -get({a: {b: ['a', 'b', {c: 'd'}]}}, 'a.b[2].c'); -//=> {c: 'd'} -``` - -## Related projects - -* [del-value](https://www.npmjs.com/package/del-value): Delete deeply nested value from an object using dot notation like ` a.b.c.x` and return the… [more](https://www.npmjs.com/package/del-value) | [homepage](https://github.com/tunnckocore/del-value) -* [get-value](https://www.npmjs.com/package/get-value): Use property paths (` a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value) -* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value) -* [union-value](https://www.npmjs.com/package/union-value): Set an array of unique values as the property of an object. Supports setting deeply… [more](https://www.npmjs.com/package/union-value) | [homepage](https://github.com/jonschlinkert/union-value) -* [unset-value](https://www.npmjs.com/package/unset-value): Delete nested properties from an object using dot notation. | [homepage](https://github.com/jonschlinkert/unset-value) -* [upsert-value](https://www.npmjs.com/package/upsert-value): Update or set nested values and any intermediaries with dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/doowb/upsert-value) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/get-object/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 27, 2015._ diff --git a/node_modules/get-object/index.js b/node_modules/get-object/index.js deleted file mode 100644 index feb84f7bf..000000000 --- a/node_modules/get-object/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/*! - * get-object - * - * Copyright (c) 2014 Jon Schlinkert, contributors. - * Licensed under the MIT License - */ - -'use strict'; - -var isNumber = require('is-number'); - -module.exports = function getObject(obj, prop) { - if (!prop) return obj; - if (!obj) return {}; - var segs = String(prop).split(/[[.\]]/).filter(Boolean); - var last = segs[segs.length - 1], res = {}; - while (prop = segs.shift()) { - obj = obj[prop]; - if (!obj) return {}; - } - if (isNumber(last)) return [obj]; - res[last] = obj; - return res; -}; diff --git a/node_modules/get-object/node_modules/is-number/LICENSE b/node_modules/get-object/node_modules/is-number/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/get-object/node_modules/is-number/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/get-object/node_modules/is-number/README.md b/node_modules/get-object/node_modules/is-number/README.md deleted file mode 100644 index 8395f9131..000000000 --- a/node_modules/get-object/node_modules/is-number/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# is-number [![NPM version](https://badge.fury.io/js/is-number.svg)](http://badge.fury.io/js/is-number) [![Build Status](https://travis-ci.org/jonschlinkert/is-number.svg)](https://travis-ci.org/jonschlinkert/is-number) - -> Returns true if the value is a number. comprehensive tests. - -To understand some of the rationale behind the decisions made in this library (and to learn about some oddities of number evaluation in JavaScript), [see this gist](https://gist.github.com/jonschlinkert/e30c70c713da325d0e81). - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i is-number --save -``` - -## Usage - -```js -var isNumber = require('is-number'); -``` - -### true - -See the [tests](./test.js) for more examples. - -```js -isNumber(5e3) //=> 'true' -isNumber(0xff) //=> 'true' -isNumber(-1.1) //=> 'true' -isNumber(0) //=> 'true' -isNumber(1) //=> 'true' -isNumber(1.1) //=> 'true' -isNumber(10) //=> 'true' -isNumber(10.10) //=> 'true' -isNumber(100) //=> 'true' -isNumber('-1.1') //=> 'true' -isNumber('0') //=> 'true' -isNumber('012') //=> 'true' -isNumber('0xff') //=> 'true' -isNumber('1') //=> 'true' -isNumber('1.1') //=> 'true' -isNumber('10') //=> 'true' -isNumber('10.10') //=> 'true' -isNumber('100') //=> 'true' -isNumber('5e3') //=> 'true' -isNumber(parseInt('012')) //=> 'true' -isNumber(parseFloat('012')) //=> 'true' -``` - -### False - -See the [tests](./test.js) for more examples. - -```js -isNumber('foo') //=> 'false' -isNumber([1]) //=> 'false' -isNumber([]) //=> 'false' -isNumber(function () {}) //=> 'false' -isNumber(Infinity) //=> 'false' -isNumber(NaN) //=> 'false' -isNumber(new Array('abc')) //=> 'false' -isNumber(new Array(2)) //=> 'false' -isNumber(new Buffer('abc')) //=> 'false' -isNumber(null) //=> 'false' -isNumber(undefined) //=> 'false' -isNumber({abc: 'abc'}) //=> 'false' -``` - -## Other projects - -* [even](https://www.npmjs.com/package/even): Get the even numbered items from an array. | [homepage](https://github.com/jonschlinkert/even) -* [is-even](https://www.npmjs.com/package/is-even): Return true if the given number is even. | [homepage](https://github.com/jonschlinkert/is-even) -* [is-odd](https://www.npmjs.com/package/is-odd): Returns true if the given number is odd. | [homepage](https://github.com/jonschlinkert/is-odd) -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive) -* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of) -* [odd](https://www.npmjs.com/package/odd): Get the odd numbered items from an array. | [homepage](https://github.com/jonschlinkert/odd) - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/is-number/issues/new). - -## Run tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on November 22, 2015._ \ No newline at end of file diff --git a/node_modules/get-object/node_modules/is-number/index.js b/node_modules/get-object/node_modules/is-number/index.js deleted file mode 100644 index 96ec66d5e..000000000 --- a/node_modules/get-object/node_modules/is-number/index.js +++ /dev/null @@ -1,19 +0,0 @@ -/*! - * is-number - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -module.exports = function isNumber(num) { - var type = typeOf(num); - if (type !== 'number' && type !== 'string') { - return false; - } - var n = +num; - return (n - n + 1) >= 0 && num !== ''; -}; diff --git a/node_modules/get-object/node_modules/is-number/package.json b/node_modules/get-object/node_modules/is-number/package.json deleted file mode 100644 index 008d95285..000000000 --- a/node_modules/get-object/node_modules/is-number/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_from": "is-number@^2.0.2", - "_id": "is-number@2.1.0", - "_inBundle": false, - "_integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "_location": "/get-object/is-number", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "is-number@^2.0.2", - "name": "is-number", - "escapedName": "is-number", - "rawSpec": "^2.0.2", - "saveSpec": null, - "fetchSpec": "^2.0.2" - }, - "_requiredBy": [ - "/get-object" - ], - "_resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "_shasum": "01fcbbb393463a548f2f466cce16dece49db908f", - "_spec": "is-number@^2.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\get-object", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-number/issues" - }, - "bundleDependencies": false, - "dependencies": { - "kind-of": "^3.0.2" - }, - "deprecated": false, - "description": "Returns true if the value is a number. comprehensive tests.", - "devDependencies": { - "benchmarked": "^0.1.3", - "chalk": "^0.5.1", - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-number", - "keywords": [ - "check", - "coerce", - "coercion", - "integer", - "is", - "is number", - "is-number", - "istype", - "kind of", - "math", - "number", - "test", - "type", - "typeof", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-number", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-number.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "kind-of", - "is-primitive", - "even", - "odd", - "is-even", - "is-odd" - ] - } - }, - "version": "2.1.0" -} diff --git a/node_modules/get-object/node_modules/isobject/.gitattributes b/node_modules/get-object/node_modules/isobject/.gitattributes deleted file mode 100644 index 759c2c5af..000000000 --- a/node_modules/get-object/node_modules/isobject/.gitattributes +++ /dev/null @@ -1,14 +0,0 @@ -# Enforce Unix newlines -*.* text eol=lf -*.css text eol=lf -*.html text eol=lf -*.js text eol=lf -*.json text eol=lf -*.less text eol=lf -*.md text eol=lf -*.yml text eol=lf - -*.jpg binary -*.gif binary -*.png binary -*.jpeg binary \ No newline at end of file diff --git a/node_modules/get-object/node_modules/isobject/.jshintrc b/node_modules/get-object/node_modules/isobject/.jshintrc deleted file mode 100644 index e4104fea8..000000000 --- a/node_modules/get-object/node_modules/isobject/.jshintrc +++ /dev/null @@ -1,22 +0,0 @@ -{ - "esnext": true, - "boss": true, - "curly": true, - "eqeqeq": true, - "eqnull": true, - "immed": true, - "latedef": true, - "newcap": true, - "noarg": true, - "node": true, - "sub": true, - "undef": true, - "unused": true, - "globals": { - "define": true, - "before": true, - "after": true, - "describe": true, - "it": true - } -} \ No newline at end of file diff --git a/node_modules/get-object/node_modules/isobject/.npmignore b/node_modules/get-object/node_modules/isobject/.npmignore deleted file mode 100644 index 096c55d97..000000000 --- a/node_modules/get-object/node_modules/isobject/.npmignore +++ /dev/null @@ -1,52 +0,0 @@ -# Numerous always-ignore extensions -*.csv -*.dat -*.diff -*.err -*.gz -*.log -*.orig -*.out -*.pid -*.rar -*.rej -*.seed -*.swo -*.swp -*.vi -*.yo-rc.json -*.zip -*~ -.ruby-version -lib-cov -npm-debug.log - -# Always-ignore dirs -/bower_components/ -/node_modules/ -/temp/ -/tmp/ -/vendor/ -_gh_pages - -# OS or Editor folders -*.esproj -*.komodoproject -.komodotools -*.sublime-* -._* -.cache -.DS_Store -.idea -.project -.settings -.tmproj -nbproject -Thumbs.db - -# grunt-html-validation -validation-status.json -validation-report.json - -# misc -TODO.md \ No newline at end of file diff --git a/node_modules/get-object/node_modules/isobject/.verbrc.md b/node_modules/get-object/node_modules/isobject/.verbrc.md deleted file mode 100644 index 5de4b82f1..000000000 --- a/node_modules/get-object/node_modules/isobject/.verbrc.md +++ /dev/null @@ -1,29 +0,0 @@ -# {%= name %} {%= badge("fury") %} - -> {%= description %} - -## Install -{%= include("install", {save: 'save'}) %} - -## Usage - -```js -var isObject = require('isobject'); -console.log(isObject(null)); -//=> 'false' -console.log(isObject([])); -//=> 'false' -console.log(isObject({})); -//=> 'true' -``` - -## Author -{%= include("author") %} - -## License -{%= copyright() %} -{%= license() %} - -*** - -{%= include("footer") %} \ No newline at end of file diff --git a/node_modules/get-object/node_modules/isobject/LICENSE-MIT b/node_modules/get-object/node_modules/isobject/LICENSE-MIT deleted file mode 100644 index 9bd36fe36..000000000 --- a/node_modules/get-object/node_modules/isobject/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2014 Jon Schlinkert, contributors. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/get-object/node_modules/isobject/README.md b/node_modules/get-object/node_modules/isobject/README.md deleted file mode 100644 index 03e5af39b..000000000 --- a/node_modules/get-object/node_modules/isobject/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# isobject [![NPM version](https://badge.fury.io/js/isobject.png)](http://badge.fury.io/js/isobject) - -> Returns true if the value is an object and not an array or null. - -## Install -Install with [npm](npmjs.org): - -```bash -npm i isobject --save -``` - -## Usage - -```js -var isObject = require('isobject'); -console.log(isObject(null)); -//=> 'false' -console.log(isObject([])); -//=> 'false' -console.log(isObject({})); -//=> 'true' -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License -Copyright (c) 2014 Jon Schlinkert, contributors. -Released under the MIT license - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on September 22, 2014._ \ No newline at end of file diff --git a/node_modules/get-object/node_modules/isobject/index.js b/node_modules/get-object/node_modules/isobject/index.js deleted file mode 100644 index fa18543cb..000000000 --- a/node_modules/get-object/node_modules/isobject/index.js +++ /dev/null @@ -1,20 +0,0 @@ -/*! - * isobject - * - * Copyright (c) 2014 Jon Schlinkert, contributors. - * Licensed under the MIT License - */ - -'use strict'; - -/** - * is the value an object, and not an array? - * - * @param {*} `value` - * @return {Boolean} - */ - -module.exports = function isObject(o) { - return o != null && typeof o === 'object' - && !Array.isArray(o); -}; \ No newline at end of file diff --git a/node_modules/get-object/node_modules/isobject/package.json b/node_modules/get-object/node_modules/isobject/package.json deleted file mode 100644 index b0b370ef1..000000000 --- a/node_modules/get-object/node_modules/isobject/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "_from": "isobject@^0.2.0", - "_id": "isobject@0.2.0", - "_inBundle": false, - "_integrity": "sha1-o0MhkvObkQtfAsyYlIeDbscKqF4=", - "_location": "/get-object/isobject", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "isobject@^0.2.0", - "name": "isobject", - "escapedName": "isobject", - "rawSpec": "^0.2.0", - "saveSpec": null, - "fetchSpec": "^0.2.0" - }, - "_requiredBy": [ - "/get-object" - ], - "_resolved": "https://registry.npmjs.org/isobject/-/isobject-0.2.0.tgz", - "_shasum": "a3432192f39b910b5f02cc989487836ec70aa85e", - "_spec": "isobject@^0.2.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\get-object", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/isobject/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Returns true if the value is an object and not an array or null.", - "devDependencies": { - "chai": "~1.9.1", - "mocha": "*", - "verb": "~0.2.6" - }, - "engines": { - "node": ">=0.10.0" - }, - "homepage": "https://github.com/jonschlinkert/isobject", - "keywords": [ - "is", - "isobject", - "is-object", - "object", - "type", - "typeof", - "kind", - "kindof", - "value", - "javascript", - "check" - ], - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/jonschlinkert/isobject/blob/master/LICENSE-MIT" - } - ], - "main": "index.js", - "name": "isobject", - "repository": { - "type": "git", - "url": "git://github.com/jonschlinkert/isobject.git" - }, - "scripts": { - "test": "mocha -R spec" - }, - "version": "0.2.0" -} diff --git a/node_modules/get-object/node_modules/isobject/test/mocha.opts b/node_modules/get-object/node_modules/isobject/test/mocha.opts deleted file mode 100644 index fb5f82427..000000000 --- a/node_modules/get-object/node_modules/isobject/test/mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---reporter spec \ No newline at end of file diff --git a/node_modules/get-object/node_modules/isobject/test/test.js b/node_modules/get-object/node_modules/isobject/test/test.js deleted file mode 100644 index 01fdcb9a0..000000000 --- a/node_modules/get-object/node_modules/isobject/test/test.js +++ /dev/null @@ -1,21 +0,0 @@ -/*! - * isobject - * - * Copyright (c) 2014 Jon Schlinkert, contributors. - * Licensed under the MIT License - */ - -var expect = require('chai').expect; -var isObject = require('../'); - -it('when null is passed it should return false.', function () { - expect(isObject(null)).to.eql(false); -}); - -it('when [] is passed it should return false.', function () { - expect(isObject([])).to.eql(false); -}); - -it('when {} is passed it should return true.', function () { - expect(isObject({})).to.eql(true); -}); \ No newline at end of file diff --git a/node_modules/get-object/node_modules/kind-of/LICENSE b/node_modules/get-object/node_modules/kind-of/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/get-object/node_modules/kind-of/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/get-object/node_modules/kind-of/README.md b/node_modules/get-object/node_modules/kind-of/README.md deleted file mode 100644 index 6a9df36d3..000000000 --- a/node_modules/get-object/node_modules/kind-of/README.md +++ /dev/null @@ -1,261 +0,0 @@ -# kind-of [![NPM version](https://img.shields.io/npm/v/kind-of.svg?style=flat)](https://www.npmjs.com/package/kind-of) [![NPM monthly downloads](https://img.shields.io/npm/dm/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![NPM total downloads](https://img.shields.io/npm/dt/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/kind-of.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/kind-of) - -> Get the native type of a value. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save kind-of -``` - -## Install - -Install with [bower](https://bower.io/) - -```sh -$ bower install kind-of --save -``` - -## Usage - -> es5, browser and es6 ready - -```js -var kindOf = require('kind-of'); - -kindOf(undefined); -//=> 'undefined' - -kindOf(null); -//=> 'null' - -kindOf(true); -//=> 'boolean' - -kindOf(false); -//=> 'boolean' - -kindOf(new Boolean(true)); -//=> 'boolean' - -kindOf(new Buffer('')); -//=> 'buffer' - -kindOf(42); -//=> 'number' - -kindOf(new Number(42)); -//=> 'number' - -kindOf('str'); -//=> 'string' - -kindOf(new String('str')); -//=> 'string' - -kindOf(arguments); -//=> 'arguments' - -kindOf({}); -//=> 'object' - -kindOf(Object.create(null)); -//=> 'object' - -kindOf(new Test()); -//=> 'object' - -kindOf(new Date()); -//=> 'date' - -kindOf([]); -//=> 'array' - -kindOf([1, 2, 3]); -//=> 'array' - -kindOf(new Array()); -//=> 'array' - -kindOf(/foo/); -//=> 'regexp' - -kindOf(new RegExp('foo')); -//=> 'regexp' - -kindOf(function () {}); -//=> 'function' - -kindOf(function * () {}); -//=> 'function' - -kindOf(new Function()); -//=> 'function' - -kindOf(new Map()); -//=> 'map' - -kindOf(new WeakMap()); -//=> 'weakmap' - -kindOf(new Set()); -//=> 'set' - -kindOf(new WeakSet()); -//=> 'weakset' - -kindOf(Symbol('str')); -//=> 'symbol' - -kindOf(new Int8Array()); -//=> 'int8array' - -kindOf(new Uint8Array()); -//=> 'uint8array' - -kindOf(new Uint8ClampedArray()); -//=> 'uint8clampedarray' - -kindOf(new Int16Array()); -//=> 'int16array' - -kindOf(new Uint16Array()); -//=> 'uint16array' - -kindOf(new Int32Array()); -//=> 'int32array' - -kindOf(new Uint32Array()); -//=> 'uint32array' - -kindOf(new Float32Array()); -//=> 'float32array' - -kindOf(new Float64Array()); -//=> 'float64array' -``` - -## Benchmarks - -Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of). -Note that performaces is slower for es6 features `Map`, `WeakMap`, `Set` and `WeakSet`. - -```bash -#1: array - current x 23,329,397 ops/sec ±0.82% (94 runs sampled) - lib-type-of x 4,170,273 ops/sec ±0.55% (94 runs sampled) - lib-typeof x 9,686,935 ops/sec ±0.59% (98 runs sampled) - -#2: boolean - current x 27,197,115 ops/sec ±0.85% (94 runs sampled) - lib-type-of x 3,145,791 ops/sec ±0.73% (97 runs sampled) - lib-typeof x 9,199,562 ops/sec ±0.44% (99 runs sampled) - -#3: date - current x 20,190,117 ops/sec ±0.86% (92 runs sampled) - lib-type-of x 5,166,970 ops/sec ±0.74% (94 runs sampled) - lib-typeof x 9,610,821 ops/sec ±0.50% (96 runs sampled) - -#4: function - current x 23,855,460 ops/sec ±0.60% (97 runs sampled) - lib-type-of x 5,667,740 ops/sec ±0.54% (100 runs sampled) - lib-typeof x 10,010,644 ops/sec ±0.44% (100 runs sampled) - -#5: null - current x 27,061,047 ops/sec ±0.97% (96 runs sampled) - lib-type-of x 13,965,573 ops/sec ±0.62% (97 runs sampled) - lib-typeof x 8,460,194 ops/sec ±0.61% (97 runs sampled) - -#6: number - current x 25,075,682 ops/sec ±0.53% (99 runs sampled) - lib-type-of x 2,266,405 ops/sec ±0.41% (98 runs sampled) - lib-typeof x 9,821,481 ops/sec ±0.45% (99 runs sampled) - -#7: object - current x 3,348,980 ops/sec ±0.49% (99 runs sampled) - lib-type-of x 3,245,138 ops/sec ±0.60% (94 runs sampled) - lib-typeof x 9,262,952 ops/sec ±0.59% (99 runs sampled) - -#8: regex - current x 21,284,827 ops/sec ±0.72% (96 runs sampled) - lib-type-of x 4,689,241 ops/sec ±0.43% (100 runs sampled) - lib-typeof x 8,957,593 ops/sec ±0.62% (98 runs sampled) - -#9: string - current x 25,379,234 ops/sec ±0.58% (96 runs sampled) - lib-type-of x 3,635,148 ops/sec ±0.76% (93 runs sampled) - lib-typeof x 9,494,134 ops/sec ±0.49% (98 runs sampled) - -#10: undef - current x 27,459,221 ops/sec ±1.01% (93 runs sampled) - lib-type-of x 14,360,433 ops/sec ±0.52% (99 runs sampled) - lib-typeof x 23,202,868 ops/sec ±0.59% (94 runs sampled) - -``` - -## Optimizations - -In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library: - -1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot. -2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it. -3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'` - -## About - -### Related projects - -* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 59 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [miguelmota](https://github.com/miguelmota) | -| 1 | [dtothefp](https://github.com/dtothefp) | -| 1 | [ksheedlo](https://github.com/ksheedlo) | -| 1 | [pdehaan](https://github.com/pdehaan) | -| 1 | [laggingreflex](https://github.com/laggingreflex) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 16, 2017._ \ No newline at end of file diff --git a/node_modules/get-object/node_modules/kind-of/index.js b/node_modules/get-object/node_modules/kind-of/index.js deleted file mode 100644 index b52c2917f..000000000 --- a/node_modules/get-object/node_modules/kind-of/index.js +++ /dev/null @@ -1,116 +0,0 @@ -var isBuffer = require('is-buffer'); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; diff --git a/node_modules/get-object/node_modules/kind-of/package.json b/node_modules/get-object/node_modules/kind-of/package.json deleted file mode 100644 index 3278772da..000000000 --- a/node_modules/get-object/node_modules/kind-of/package.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "_from": "kind-of@^3.0.2", - "_id": "kind-of@3.2.2", - "_inBundle": false, - "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "_location": "/get-object/kind-of", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "kind-of@^3.0.2", - "name": "kind-of", - "escapedName": "kind-of", - "rawSpec": "^3.0.2", - "saveSpec": null, - "fetchSpec": "^3.0.2" - }, - "_requiredBy": [ - "/get-object/is-number" - ], - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "_shasum": "31ea21a734bab9bbb0f32466d893aea51e4a3c64", - "_spec": "kind-of@^3.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\get-object\\node_modules\\is-number", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/kind-of/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "David Fox-Powell", - "url": "https://dtothefp.github.io/me" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Ken Sheedlo", - "url": "kensheedlo.com" - }, - { - "name": "laggingreflex", - "url": "https://github.com/laggingreflex" - }, - { - "name": "Miguel Mota", - "url": "https://miguelmota.com" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - } - ], - "dependencies": { - "is-buffer": "^1.1.5" - }, - "deprecated": false, - "description": "Get the native type of a value.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "benchmarked": "^1.0.0", - "browserify": "^14.3.0", - "glob": "^7.1.1", - "gulp-format-md": "^0.1.12", - "mocha": "^3.3.0", - "type-of": "^2.0.1", - "typeof": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/kind-of", - "keywords": [ - "arguments", - "array", - "boolean", - "check", - "date", - "function", - "is", - "is-type", - "is-type-of", - "kind", - "kind-of", - "number", - "object", - "of", - "regexp", - "string", - "test", - "type", - "type-of", - "typeof", - "types" - ], - "license": "MIT", - "main": "index.js", - "name": "kind-of", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/kind-of.git" - }, - "scripts": { - "prepublish": "browserify -o browser.js -e index.js -s index --bare", - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-glob", - "is-number", - "is-primitive" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "verb" - ] - }, - "version": "3.2.2" -} diff --git a/node_modules/get-object/package.json b/node_modules/get-object/package.json deleted file mode 100644 index 0c05ab1aa..000000000 --- a/node_modules/get-object/package.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "_from": "get-object@^0.2.0", - "_id": "get-object@0.2.0", - "_inBundle": false, - "_integrity": "sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw=", - "_location": "/get-object", - "_phantomChildren": { - "is-buffer": "1.1.6" - }, - "_requested": { - "type": "range", - "registry": true, - "raw": "get-object@^0.2.0", - "name": "get-object", - "escapedName": "get-object", - "rawSpec": "^0.2.0", - "saveSpec": null, - "fetchSpec": "^0.2.0" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/get-object/-/get-object-0.2.0.tgz", - "_shasum": "d92ff7d5190c64530cda0543dac63a3d47fe8c0c", - "_spec": "get-object@^0.2.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/get-object/issues" - }, - "bundleDependencies": false, - "dependencies": { - "is-number": "^2.0.2", - "isobject": "^0.2.0" - }, - "deprecated": false, - "description": "Get a property from an object using dot (object path) notation.", - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/get-object", - "keywords": [ - "check", - "dot", - "find", - "has", - "hasOwn", - "is", - "is-object", - "isobject", - "javascript", - "js", - "key", - "keys", - "node.js", - "notation", - "object", - "pick", - "prop", - "properties", - "property", - "props", - "string", - "type", - "type-of", - "typeof", - "util", - "utilities", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "get-object", - "repository": { - "type": "git", - "url": "git://github.com/jonschlinkert/get-object.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "get-value", - "set-value", - "union-value", - "unset-value", - "upsert-value", - "del-value" - ] - } - }, - "version": "0.2.0" -} diff --git a/node_modules/get-value/LICENSE b/node_modules/get-value/LICENSE deleted file mode 100644 index 39245ac1c..000000000 --- a/node_modules/get-value/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/get-value/index.js b/node_modules/get-value/index.js deleted file mode 100644 index 5879a8848..000000000 --- a/node_modules/get-value/index.js +++ /dev/null @@ -1,50 +0,0 @@ -/*! - * get-value - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -module.exports = function(obj, prop, a, b, c) { - if (!isObject(obj) || !prop) { - return obj; - } - - prop = toString(prop); - - // allowing for multiple properties to be passed as - // a string or array, but much faster (3-4x) than doing - // `[].slice.call(arguments)` - if (a) prop += '.' + toString(a); - if (b) prop += '.' + toString(b); - if (c) prop += '.' + toString(c); - - if (prop in obj) { - return obj[prop]; - } - - var segs = prop.split('.'); - var len = segs.length; - var i = -1; - - while (obj && (++i < len)) { - var key = segs[i]; - while (key[key.length - 1] === '\\') { - key = key.slice(0, -1) + '.' + segs[++i]; - } - obj = obj[key]; - } - return obj; -}; - -function isObject(val) { - return val !== null && (typeof val === 'object' || typeof val === 'function'); -} - -function toString(val) { - if (!val) return ''; - if (Array.isArray(val)) { - return val.join('.'); - } - return val; -} diff --git a/node_modules/get-value/package.json b/node_modules/get-value/package.json deleted file mode 100644 index 5336dd895..000000000 --- a/node_modules/get-value/package.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "_args": [ - [ - "get-value@2.0.6", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "get-value@2.0.6", - "_id": "get-value@2.0.6", - "_inBundle": false, - "_integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "_location": "/get-value", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "get-value@2.0.6", - "name": "get-value", - "escapedName": "get-value", - "rawSpec": "2.0.6", - "saveSpec": null, - "fetchSpec": "2.0.6" - }, - "_requiredBy": [ - "/cache-base", - "/has-value", - "/union-value", - "/unset-value/has-value" - ], - "_resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "_spec": "2.0.6", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/get-value/issues" - }, - "description": "Use property paths (`a.b.c`) to get a nested value from an object.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "arr-reduce": "^1.0.1", - "benchmarked": "^0.1.4", - "dot-prop": "^2.2.0", - "getobject": "^0.1.0", - "gulp": "^3.9.0", - "gulp-eslint": "^1.1.1", - "gulp-format-md": "^0.1.5", - "gulp-istanbul": "^0.10.2", - "gulp-mocha": "^2.1.3", - "isobject": "^2.0.0", - "matched": "^0.3.2", - "minimist": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/get-value", - "keywords": [ - "get", - "key", - "nested", - "object", - "path", - "paths", - "prop", - "properties", - "property", - "props", - "segment", - "value", - "values" - ], - "license": "MIT", - "main": "index.js", - "name": "get-value", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/get-value.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "has-any", - "has-any-deep", - "has-value", - "set-value", - "unset-value" - ] - }, - "reflinks": [ - "verb", - "verb-readme-generator" - ], - "lint": { - "reflinks": true - } - }, - "version": "2.0.6" -} diff --git a/node_modules/gulp-header/.editorconfig b/node_modules/gulp-header/.editorconfig deleted file mode 100644 index 5d1263484..000000000 --- a/node_modules/gulp-header/.editorconfig +++ /dev/null @@ -1,13 +0,0 @@ -# editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false diff --git a/node_modules/gulp-header/LICENSE b/node_modules/gulp-header/LICENSE deleted file mode 100644 index 5ef23b402..000000000 --- a/node_modules/gulp-header/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2015 Michael J. Ryan and GoDaddy.com - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp-header/README.md b/node_modules/gulp-header/README.md deleted file mode 100644 index 0d83a25c2..000000000 --- a/node_modules/gulp-header/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# gulp-header [![NPM version](https://badge.fury.io/js/gulp-header.png)](http://badge.fury.io/js/gulp-header) [![Build Status](https://travis-ci.org/tracker1/gulp-header.svg?branch=master)](https://travis-ci.org/tracker1/gulp-header) - -gulp-header is a [Gulp](https://github.com/gulpjs/gulp) extension to add a header to file(s) in the pipeline. [Gulp is a streaming build system](https://github.com/gulpjs/gulp) utilizing [node.js](http://nodejs.org/). - -## Install - -```javascript -npm install --save-dev gulp-header -``` - -## Usage - -```javascript -// assign the module to a local variable -var header = require('gulp-header'); - - -// literal string -// NOTE: a line separator will not be added automatically -gulp.src('./foo/*.js') - .pipe(header('Hello')) - .pipe(gulp.dest('./dist/')) - - -// ejs style templating -gulp.src('./foo/*.js') - .pipe(header('Hello <%= name %>\n', { name : 'World'} )) - .pipe(gulp.dest('./dist/')) - - -// ES6-style template string -gulp.src('./foo/*.js') - .pipe(header('Hello ${name}\n', { name : 'World'} )) - .pipe(gulp.dest('./dist/')) - - -// using data from package.json -var pkg = require('./package.json'); -var banner = ['/**', - ' * <%= pkg.name %> - <%= pkg.description %>', - ' * @version v<%= pkg.version %>', - ' * @link <%= pkg.homepage %>', - ' * @license <%= pkg.license %>', - ' */', - ''].join('\n'); - -gulp.src('./foo/*.js') - .pipe(header(banner, { pkg : pkg } )) - .pipe(gulp.dest('./dist/')) - - -// reading the header file from disk -var fs = require('fs'); -gulp.src('./foo/*.js') - .pipe(header(fs.readFileSync('header.txt', 'utf8'), { pkg : pkg } )) - .pipe(gulp.dest('./dist/')) - - -// for use with coffee-script -return gulp.src([ - 'src/*.coffee', - ]) - .pipe(header(banner, { pkg : pkg } )) - .pipe(sourcemaps.init()) // init sourcemaps *after* header - .pipe(coffee({ - bare: true - })) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('dist/js')) -``` - -## Issues and Alerts - -My handle on twitter is [@tracker1](https://twitter.com/tracker1) - If there is an urgent issue, I get twitter notifications sent to my phone. - -## API - -### header(text, data) - -#### text - -Type: `String` -Default: `''` - -The template text. - - -#### data - -Type: `Object` -Default: `{}` - -The data object used to populate the text. - -In addition to the passed in data, `file` will be the stream object for the file being templated against and `filename` will be the path relative from the stream's basepath. - -*NOTE: using `false` will disable template processing of the header* diff --git a/node_modules/gulp-header/changelog.md b/node_modules/gulp-header/changelog.md deleted file mode 100644 index 36e5ec3cd..000000000 --- a/node_modules/gulp-header/changelog.md +++ /dev/null @@ -1,10 +0,0 @@ -# Changelog - -Will welcome if anyone wants to backfill prior changelogs. - -## 1.8.8 - 2016-08-10 - -* #47 Support for gulp-data -* #46 Fix undefined template local "filename" -* #46 Document `file` and `filename` locals. -* #45 Started CHANGELOG.md diff --git a/node_modules/gulp-header/index.js b/node_modules/gulp-header/index.js deleted file mode 100644 index 8f0057d25..000000000 --- a/node_modules/gulp-header/index.js +++ /dev/null @@ -1,96 +0,0 @@ -/* jshint node: true */ -'use strict'; - -/** -* Module dependencies. -*/ - -var Concat = require('concat-with-sourcemaps'); -var through = require('through2'); -var lodashTemplate = require('lodash.template'); -var stream = require('stream'); -var path = require('path'); -var fs = require('fs'); - -/** -* gulp-header plugin -*/ - -module.exports = function (headerText, data) { - headerText = headerText || ''; - - function TransformStream(file, enc, cb) { - // format template - var filename = path.basename(file.path); - var template = data === false ? headerText : lodashTemplate(headerText)(Object.assign({}, file.data || {}, { file: file, filename: filename }, data)); - - if (file && typeof file === 'string') { - this.push(template + file); - return cb(); - } - - // if not an existing file, passthrough - if (!isExistingFile(file)) { - this.push(file); - return cb(); - } - - // handle file stream; - if (file.isStream()) { - var stream = through(); - stream.write(new Buffer(template)); - stream.on('error', this.emit.bind(this, 'error')); - file.contents = file.contents.pipe(stream); - this.push(file); - return cb(); - } - - // variables to handle direct file content manipulation - var concat = new Concat(true, filename); - - // add template - concat.add(null, new Buffer(template)); - - // add sourcemap - concat.add(file.relative, file.contents, file.sourceMap); - - // make sure streaming content is preserved - if (file.contents && !isStream(file.contents)) { - file.contents = concat.content; - } - - // apply source map - if (concat.sourceMapping) { - file.sourceMap = JSON.parse(concat.sourceMap); - } - - // make sure the file goes through the next gulp plugin - this.push(file); - - // tell the stream engine that we are done with this file - cb(); - } - - return through.obj(TransformStream); -}; - -/** -* is stream? -*/ -function isStream(obj) { - return obj instanceof stream.Stream; -} - -/** - * Is File, and Exists - */ -function isExistingFile(file) { - try { - if (!(file && typeof file === 'object')) return false; - if (file.isDirectory()) return false; - if (file.isStream()) return true; - if (file.isBuffer()) return true; - if (typeof file.contents === 'string') return true; - } catch(err) {} - return false; -} diff --git a/node_modules/gulp-header/package.json b/node_modules/gulp-header/package.json deleted file mode 100644 index 7023b685a..000000000 --- a/node_modules/gulp-header/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_from": "gulp-header@^1.7.1", - "_id": "gulp-header@1.8.12", - "_inBundle": false, - "_integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", - "_location": "/gulp-header", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "gulp-header@^1.7.1", - "name": "gulp-header", - "escapedName": "gulp-header", - "rawSpec": "^1.7.1", - "saveSpec": null, - "fetchSpec": "^1.7.1" - }, - "_requiredBy": [ - "/autolinker" - ], - "_resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", - "_shasum": "ad306be0066599127281c4f8786660e705080a84", - "_spec": "gulp-header@^1.7.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\autolinker", - "author": { - "name": "Michael J. Ryan", - "email": "tracker1@gmail.com", - "url": "http://github.com/tracker1" - }, - "bugs": { - "url": "https://github.com/tracker1/gulp-header/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "GoDaddy.com", - "url": "http://github.com/godaddy" - }, - { - "name": "Douglas Duteil", - "email": "douglasduteil@gmail.com", - "url": "http://github.com/douglasduteil" - } - ], - "dependencies": { - "concat-with-sourcemaps": "*", - "lodash.template": "^4.4.0", - "through2": "^2.0.0" - }, - "deprecated": "Removed event-stream from gulp-header", - "description": "Gulp extension to add header to file(s) in the pipeline.", - "devDependencies": { - "event-stream": "^3.1.7", - "gulp": "^3.9.0", - "mocha": "*", - "should": "*", - "vinyl": "*" - }, - "directories": { - "test": "test" - }, - "homepage": "https://github.com/tracker1/gulp-header#readme", - "https-proxy": null, - "keywords": [ - "header", - "gulpplugin", - "eventstream" - ], - "license": "MIT", - "main": "./index.js", - "name": "gulp-header", - "proxy": null, - "repository": { - "type": "git", - "url": "git://github.com/tracker1/gulp-header.git" - }, - "scripts": { - "publish-major": "npm version major && git push origin master && git push --tags", - "publish-minor": "npm version minor && git push origin master && git push --tags", - "publish-patch": "npm version patch && git push origin master && git push --tags", - "test": "mocha --reporter spec" - }, - "version": "1.8.12" -} diff --git a/node_modules/handlebars-helper-create-frame/LICENSE b/node_modules/handlebars-helper-create-frame/LICENSE deleted file mode 100644 index 4a6455ccd..000000000 --- a/node_modules/handlebars-helper-create-frame/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017 Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/handlebars-helper-create-frame/README.md b/node_modules/handlebars-helper-create-frame/README.md deleted file mode 100644 index 9dd890b67..000000000 --- a/node_modules/handlebars-helper-create-frame/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# handlebars-helper-create-frame [![NPM version](https://img.shields.io/npm/v/handlebars-helper-create-frame.svg?style=flat)](https://www.npmjs.com/package/handlebars-helper-create-frame) [![NPM monthly downloads](https://img.shields.io/npm/dm/handlebars-helper-create-frame.svg?style=flat)](https://npmjs.org/package/handlebars-helper-create-frame) [![NPM total downloads](https://img.shields.io/npm/dt/handlebars-helper-create-frame.svg?style=flat)](https://npmjs.org/package/handlebars-helper-create-frame) [![Linux Build Status](https://img.shields.io/travis/helpers/handlebars-helper-create-frame.svg?style=flat&label=Travis)](https://travis-ci.org/helpers/handlebars-helper-create-frame) - -> Handlebars block helper for creating private variables that are accessible inside the block. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save handlebars-helper-create-frame -``` - -## Usage - -Example for handlebars, but this should work for any template engine that takes helpers or filters. - -```js -var handlebars = require('handlebars'); - -handlebars.registerHelper('frame', require('handlebars-helper-create-frame')); -var fn = handlebars.compile('{{#frame site=site}}Name: {{@site.name}}{{/frame}}'); -console.log(fn({site: {name: 'Test'}})); -//=> 'Name: Test' -``` - -## About - -### Related projects - -* [handlebars-helpers](https://www.npmjs.com/package/handlebars-helpers): More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate… [more](https://github.com/assemble/handlebars-helpers) | [homepage](https://github.com/assemble/handlebars-helpers "More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project.") -* [helper-geopattern](https://www.npmjs.com/package/helper-geopattern): Template helper for generating a geometric SVG pattern for CSS backgrounds using btmills/geopattern | [homepage](https://github.com/helpers/helper-geopattern "Template helper for generating a geometric SVG pattern for CSS backgrounds using btmills/geopattern") -* [helper-html-table](https://www.npmjs.com/package/helper-html-table): Create an HTML table from JSON configuration. | [homepage](https://github.com/helpers/helper-html-table "Create an HTML table from JSON configuration.") -* [helper-octicon](https://www.npmjs.com/package/helper-octicon): Template helper for displaying octicon SVGs. Should work with any Handlebars, Lo-Dash, underscore or any… [more](https://github.com/helpers/helper-octicon) | [homepage](https://github.com/helpers/helper-octicon "Template helper for displaying octicon SVGs. Should work with any Handlebars, Lo-Dash, underscore or any template engine that allows helper functions to be registered. Also compatible with verb, assemble, and templates.") -* [helper-uigradient](https://www.npmjs.com/package/helper-uigradient): Template helper that generates the CSS for any of the gradients from Ghosh/uiGradients | [homepage](https://github.com/helpers/helper-uigradient "Template helper that generates the CSS for any of the gradients from Ghosh/uiGradients") -* [template-helpers](https://www.npmjs.com/package/template-helpers): Generic JavaScript helpers that can be used with any template engine. Handlebars, Lo-Dash, Underscore, or… [more](https://github.com/jonschlinkert/template-helpers) | [homepage](https://github.com/jonschlinkert/template-helpers "Generic JavaScript helpers that can be used with any template engine. Handlebars, Lo-Dash, Underscore, or any engine that supports helper functions.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -Please read the [contributing guide](.github/contributing.md) for avice on opening issues, pull requests, and coding standards. - -### Building docs - -_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ - -To generate the readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install -g verb verb-generate-readme && verb -``` - -### Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.2.3, on January 05, 2017._ \ No newline at end of file diff --git a/node_modules/handlebars-helper-create-frame/index.js b/node_modules/handlebars-helper-create-frame/index.js deleted file mode 100644 index 775a1573b..000000000 --- a/node_modules/handlebars-helper-create-frame/index.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -var createFrame = require('create-frame'); -var isObject = require('isobject'); - -/** - * Block helper for exposing private `@` variables on the context - */ - -module.exports = function(context, options) { - if (isObject(context) && context.hash) { - options = context; - context = options.data; - } - - var frame = createFrame(context); - if (!isObject(options)) { - options = {}; - } - - // extend the frame with hash arguments - frame.extend(options.hash); - return options.fn(this, {data: frame}); -}; diff --git a/node_modules/handlebars-helper-create-frame/package.json b/node_modules/handlebars-helper-create-frame/package.json deleted file mode 100644 index d5d43b57c..000000000 --- a/node_modules/handlebars-helper-create-frame/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_from": "handlebars-helper-create-frame@^0.1.0", - "_id": "handlebars-helper-create-frame@0.1.0", - "_inBundle": false, - "_integrity": "sha1-iqUdEK62QI/MZgXUDXc1YohIegM=", - "_location": "/handlebars-helper-create-frame", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "handlebars-helper-create-frame@^0.1.0", - "name": "handlebars-helper-create-frame", - "escapedName": "handlebars-helper-create-frame", - "rawSpec": "^0.1.0", - "saveSpec": null, - "fetchSpec": "^0.1.0" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/handlebars-helper-create-frame/-/handlebars-helper-create-frame-0.1.0.tgz", - "_shasum": "8aa51d10aeb6408fcc6605d40d77356288487a03", - "_spec": "handlebars-helper-create-frame@^0.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/helpers/handlebars-helper-create-frame/issues" - }, - "bundleDependencies": false, - "dependencies": { - "create-frame": "^1.0.0", - "isobject": "^3.0.0" - }, - "deprecated": false, - "description": "Handlebars block helper for creating private variables that are accessible inside the block.", - "devDependencies": { - "gulp-format-md": "^0.1.11", - "handlebars": "^4.0.6", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=4" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/helpers/handlebars-helper-create-frame", - "keywords": [ - "create", - "frame", - "generategenerator", - "handlebars", - "helper", - "helpers", - "render", - "template", - "templates" - ], - "license": "MIT", - "main": "index.js", - "name": "handlebars-helper-create-frame", - "repository": { - "type": "git", - "url": "git+https://github.com/helpers/handlebars-helper-create-frame.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "helper-octicon", - "helper-html-table", - "helper-geopattern", - "helper-uigradient", - "template-helpers", - "handlebars-helpers" - ] - }, - "reflinks": [ - "verb", - "verb-generate-readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.1.0" -} diff --git a/node_modules/handlebars-helpers/CHANGELOG b/node_modules/handlebars-helpers/CHANGELOG deleted file mode 100644 index 15e5a1b7e..000000000 --- a/node_modules/handlebars-helpers/CHANGELOG +++ /dev/null @@ -1,152 +0,0 @@ -v0.10.0: - date: "2017-11-17" - changes: - - adds `unique` to array helpers - - updates `css` helper to ensure that path.join() is not called on an absolute URL. -v0.9.0: - date: "2017-07-03" - changes: - - all unit tests now use assert instead of should - - remove `fileSize` helper in favor of new `bytes` helper, which does the same thing, but returns `B` instead of `byte` or `bytes`. - - JSONParse helper is no longer a block helper. It now returns an object, which can be used as a subexpression to achieve the same behavior as before. - - adds better error handling for path helpers, since node.js errors are terrible. We have a better way to handle errors that will be implemented in a near future release. - - adds inline helper support to `isEmpty`, so it can now be used as an inline or block helper - - adds `raw` helper - - adds regex helpers - - adds inline helper support to most of the comparison helpers, so they can now be used as inline or block helpers - - adds `pluck` helper to array helpers - - adds `prepend` and `append` helpers to string helpers - - adds `isTruthy` and `isFalsey` comparison helpers - - adds `escape` and `url_encode` and `url_decode` URL helpers - - adds `attr` helper to html helpers - - adds `year` helper to date helpers - - adds `typeOf` and `frame` helpers to misc helpers - - adds `abs`, `minus`, `modulo`, `plus`, `times` to math helpers - - moves `ellipsis` helper from `html` helpers to string helpers - - moves `truncate` helper from `html` helpers to string helpers - - moves `reverse` helper from `string` helpers to array helpers - - differentiate `eq` and `is` helpers so that `eq` is strict equality and `is` is not - - removes `mm` helper, use `match` instead -v0.8.4: - date: "2017-07-03" - changes: - - removes strlen helper in favor of fixing the length helper -v0.8.3: - date: "2017-07-03" - changes: - - adds strlen helper - - adds itemAt helper - - clean up code comments for array helpers -v0.8.2: - date: "2017-03-30" - changes: - - documentation updates - - fixes md helper to use sync by default -v0.8.1: - date: "2017-03-30" - changes: - - fixes sorting in withSort helper. see https://github.com/helpers/handlebars-helpers/pull/245 - - adds toPath helper - - handle null inputs in number helpers - - adds stripProtocol helper -v0.8.0: - date: "2017-01-25" - changes: - - handle string arguments in list helpers - - adds JSONParse helper as an alias for parseJSON -v0.7.6: - date: "2017-01-08" - changes: - - fixes markdown helpers. see https://github.com/helpers/handlebars-helpers/pull/226 - - documentation improvements and other minor fixes -v0.7.0: - date: "2016-07-16" - changes: - - The [or](#or) helper can now take a variable number of arguments -v0.6.0: - date: "2016-05-13" - changes: - - the main export is now a function that takes a name or array of names of helper types to load. Example `helpers(['string', 'array'])` will load only the `string` and `array` helpers - - helper types can alternatively be accessed as methods. example - `helpers.path()` will return all of the path helpers. - - handlebars may be provided by the user. if not provided it will fall back to the `handlebars-helpers` handlebars - - helpers are now as generic as possible, with little to no code related to assemble, grunt, etc. - - helpers are lazy-loaded using getters for improved performance - - Once tests are added for the `md` and `markdown` helpers, we'll have 100% unit test coverage on helpers -v0.3.3: - date: "2013-09-03" - changes: - - Adds fileSize helper. - - Adds startsWith helper. -v0.3.2: - date: "2013-08-20" - changes: - - Adds glob helper. -v0.3.0: - date: "2013-07-30" - changes: - - The project has been refactored, cleaned up, and full documentation has bee put up at http://assemble.io -v0.2.4: - date: "2013-05-11" - changes: - - Adding object globbing utility functions to be used in helpers later. -v0.2.3: - date: "2013-05-11" - changes: - - File globbing added to some helpers. Including md and some file helpers. -v0.2.0: - date: "2013-05-07" - changes: - - A bunch of new tests for markdown and special helpers. - - Refactored most of the rest of the helpers to separate functions from Handlebars registration. -v0.1.32: - date: "2013-05-02" - changes: - - Updates utils and a number of helpers, including value, property, and stringify. -v0.1.31: - date: "2013-04-21" - changes: - - Fixes relative helper -v0.1.30: - date: "2013-04-20" - changes: - - Refactoring helpers-collection module to separate the functions from the Handlebars helper registration process. -v0.1.25: - date: "2013-04-16" - changes: - - Adding defineSection and renderSection helpers to try to get sections populated in a layout from the page. -v0.1.21: - date: "2013-04-07" - changes: - - Add markdown helpers back, add more tests. -v0.1.20: - date: "2013-04-06" - changes: - - Generalized helpers structure, externalized utilities. -v0.1.11: - date: "2013-04-05" - changes: - - New authors and gist helpers, general cleanup and new tests. -v0.1.10: - date: "2013-04-04" - changes: - - Externalized utility javascript from helpers.js -v0.1.8: - date: "2013-03-28" - changes: - - "Gruntfile updated with mocha tests for 71 helpers, bug fixes." -v0.1.7: - date: "2013-03-18" - changes: - - "New path helper 'relative', for resolving relative path from one absolute path to another." -v0.1.3: - date: "2013-03-16" - changes: - - "New helpers, 'formatPhoneNumber' and 'eachProperty'" -v0.1.2: - date: "2013-03-15" - changes: - - "Update README.md with documentation, examples." -v0.1.0: - date: "2013-03-06" - changes: - - "First commit." diff --git a/node_modules/handlebars-helpers/LICENSE b/node_modules/handlebars-helpers/LICENSE deleted file mode 100644 index 5bbe00099..000000000 --- a/node_modules/handlebars-helpers/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2015, 2017, Jon Schlinkert, Brian Woodward. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/handlebars-helpers/README.md b/node_modules/handlebars-helpers/README.md deleted file mode 100644 index 7c708747a..000000000 --- a/node_modules/handlebars-helpers/README.md +++ /dev/null @@ -1,3348 +0,0 @@ -# handlebars-helpers [![NPM version](https://img.shields.io/npm/v/handlebars-helpers.svg?style=flat)](https://www.npmjs.com/package/handlebars-helpers) [![NPM monthly downloads](https://img.shields.io/npm/dm/handlebars-helpers.svg?style=flat)](https://npmjs.org/package/handlebars-helpers) [![NPM total downloads](https://img.shields.io/npm/dt/handlebars-helpers.svg?style=flat)](https://npmjs.org/package/handlebars-helpers) [![Linux Build Status](https://img.shields.io/travis/helpers/handlebars-helpers.svg?style=flat&label=Travis)](https://travis-ci.org/helpers/handlebars-helpers) [![Windows Build Status](https://img.shields.io/appveyor/ci/helpers/handlebars-helpers.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/helpers/handlebars-helpers) - -> More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project. - -You might also be interested in [template-helpers](https://github.com/jonschlinkert/template-helpers). - -- [Install](#install) -- [Browser usage](#browser-usage) -- [Usage](#usage) -- [Helpers](#helpers) -- [Utils](#utils) -- [History](#history) -- [About](#about) - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save handlebars-helpers -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add handlebars-helpers -``` - -## Browser usage - -See how to [use handlebars-helpers in the browser](https://github.com/doowb/handlebars-helpers-browserify-example). - -## Usage - -The main export returns a function that needs to be called to expose the object of helpers. - -**Get all helpers** - -```js -var helpers = require('handlebars-helpers')(); -//=> returns object with all (130+) helpers -``` - -**Get a specific helper collection** - -Helper collections are exposed as getters, so only the helpers you want will be required and loaded. - -```js -var helpers = require('handlebars-helpers'); -var math = helpers.math(); -//=> only the `math` helpers - -var helpers = require('handlebars-helpers'); -var array = helpers.array(); -//=> only the `collections` helpers -``` - -**Get multiple helpers collections** - -Helper collections are exposed as getters, so only the helpers you want will be required and loaded. - -```js -var helpers = require('handlebars-helpers')(['math', 'string']); -//=> only the `math` and `string` helpers -``` - -**Optionally pass your own handlebars** - -```js -var handlebars = require('handlebars'); -var helpers = require('handlebars-helpers')({ - handlebars: handlebars -}); - -// or for a specific collection -var math = helpers.math({ - handlebars: handlebars -}); -``` - -## Helpers - -## Categories - -Currently **189 helpers** in **20 categories**: - -* **[array](#array)** ([code](lib/array.js) | [unit tests](test/array.js)) -* **[code](#code)** ([code](lib/code.js) | [unit tests](test/code.js)) -* **[collection](#collection)** ([code](lib/collection.js) | [unit tests](test/collection.js)) -* **[comparison](#comparison)** ([code](lib/comparison.js) | [unit tests](test/comparison.js)) -* **[date](#date)** ([code](lib/date.js) | [unit tests](test/date.js)) -* **[fs](#fs)** ([code](lib/fs.js) | [unit tests](test/fs.js)) -* **[html](#html)** ([code](lib/html.js) | [unit tests](test/html.js)) -* **[i18n](#i18n)** ([code](lib/i18n.js) | [unit tests](test/i18n.js)) -* **[inflection](#inflection)** ([code](lib/inflection.js) | [unit tests](test/inflection.js)) -* **[logging](#logging)** ([code](lib/logging.js) | [unit tests](test/logging.js)) -* **[markdown](#markdown)** ([code](lib/markdown.js) | [unit tests](test/markdown.js)) -* **[match](#match)** ([code](lib/match.js) | [unit tests](test/match.js)) -* **[math](#math)** ([code](lib/math.js) | [unit tests](test/math.js)) -* **[misc](#misc)** ([code](lib/misc.js) | [unit tests](test/misc.js)) -* **[number](#number)** ([code](lib/number.js) | [unit tests](test/number.js)) -* **[object](#object)** ([code](lib/object.js) | [unit tests](test/object.js)) -* **[path](#path)** ([code](lib/path.js) | [unit tests](test/path.js)) -* **[regex](#regex)** ([code](lib/regex.js) | [unit tests](test/regex.js)) -* **[string](#string)** ([code](lib/string.js) | [unit tests](test/string.js)) -* **[url](#url)** ([code](lib/url.js) | [unit tests](test/url.js)) - -## All helpers - -### [array helpers](#array) - -Visit the: [code](lib/array.js) | [unit tests](test/array.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+array+helpers)) - -* **[after](#after)** ([code](lib/array.js#L22) | [tests](test/array.js#L13)) -* **[arrayify](#arrayify)** ([code](lib/array.js#L39) | [tests](test/array.js#L29)) -* **[before](#before)** ([code](lib/array.js#L58) | [tests](test/array.js#L36)) -* **[eachIndex](#eachIndex)** ([code](lib/array.js#L77) | [tests](test/array.js#L58)) -* **[filter](#filter)** ([code](lib/array.js#L102) | [tests](test/array.js#L91)) -* **[first](#first)** ([code](lib/array.js#L142) | [tests](test/array.js#L65)) -* **[forEach](#forEach)** ([code](lib/array.js#L184) | [tests](test/array.js#L123)) -* **[inArray](#inArray)** ([code](lib/array.js#L224) | [tests](test/array.js#L160)) -* **[isArray](#isArray)** ([code](lib/array.js#L244) | [tests](test/array.js#L172)) -* **[itemAt](#itemAt)** ([code](lib/array.js#L263) | [tests](test/array.js#L182)) -* **[join](#join)** ([code](lib/array.js#L294) | [tests](test/array.js#L225)) -* **[equalsLength](#equalsLength)** ([code](lib/array.js#L313) | [no tests]) -* **[last](#last)** ([code](lib/array.js#L349) | [tests](test/array.js#L240)) -* **[length](#length)** ([code](lib/array.js#L379) | [tests](test/array.js#L254)) -* **[lengthEqual](#lengthEqual)** ([code](lib/array.js#L395) | [tests](test/array.js#L254)) -* **[map](#map)** ([code](lib/array.js#L414) | [tests](test/array.js#L266)) -* **[pluck](#pluck)** ([code](lib/array.js#L445) | [tests](test/array.js#L300)) -* **[reverse](#reverse)** ([code](lib/array.js#L473) | [no tests]) -* **[some](#some)** ([code](lib/array.js#L504) | [tests](test/array.js#L308)) -* **[sort](#sort)** ([code](lib/array.js#L532) | [tests](test/array.js#L333)) -* **[sortBy](#sortBy)** ([code](lib/array.js#L557) | [tests](test/array.js#L358)) -* **[withAfter](#withAfter)** ([code](lib/array.js#L588) | [tests](test/array.js#L390)) -* **[withBefore](#withBefore)** ([code](lib/array.js#L618) | [tests](test/array.js#L397)) -* **[withFirst](#withFirst)** ([code](lib/array.js#L648) | [tests](test/array.js#L404)) -* **[withGroup](#withGroup)** ([code](lib/array.js#L692) | [tests](test/array.js#L418)) -* **[withLast](#withLast)** ([code](lib/array.js#L727) | [tests](test/array.js#L428)) -* **[withSort](#withSort)** ([code](lib/array.js#L766) | [tests](test/array.js#L442)) -* **[unique](#unique)** ([code](lib/array.js#L816) | [tests](test/array.js#L483)) - -### [code helpers](#code) - -Visit the: [code](lib/code.js) | [unit tests](test/code.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+code+helpers)) - -* **[embed](#embed)** ([code](lib/code.js#L23) | [tests](test/code.js#L10)) -* **[gist](#gist)** ([code](lib/code.js#L45) | [tests](test/code.js#L62)) -* **[jsfiddle](#jsfiddle)** ([code](lib/code.js#L60) | [tests](test/code.js#L69)) - -### [collection helpers](#collection) - -Visit the: [code](lib/collection.js) | [unit tests](test/collection.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+collection+helpers)) - -* **[isEmpty](#isEmpty)** ([code](lib/collection.js#L31) | [tests](test/collection.js#L14)) -* **[iterate](#iterate)** ([code](lib/collection.js#L59) | [tests](test/collection.js#L68)) - -### [comparison helpers](#comparison) - -Visit the: [code](lib/comparison.js) | [unit tests](test/comparison.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+comparison+helpers)) - -* **[and](#and)** ([code](lib/comparison.js#L27) | [tests](test/comparison.js#L10)) -* **[compare](#compare)** ([code](lib/comparison.js#L57) | [tests](test/comparison.js#L41)) -* **[contains](#contains)** ([code](lib/comparison.js#L124) | [tests](test/comparison.js#L167)) -* **[default](#default)** ([code](lib/comparison.js#L143) | [tests](test/comparison.js#L204)) -* **[eq](#eq)** ([code](lib/comparison.js#L165) | [tests](test/comparison.js#L351)) -* **[gt](#gt)** ([code](lib/comparison.js#L188) | [tests](test/comparison.js#L214)) -* **[gte](#gte)** ([code](lib/comparison.js#L212) | [tests](test/comparison.js#L245)) -* **[has](#has)** ([code](lib/comparison.js#L232) | [tests](test/comparison.js#L260)) -* **[isFalsey](#isFalsey)** ([code](lib/comparison.js#L274) | [tests](test/comparison.js#L327)) -* **[isTruthy](#isTruthy)** ([code](lib/comparison.js#L289) | [tests](test/comparison.js#L339)) -* **[ifEven](#ifEven)** ([code](lib/comparison.js#L310) | [tests](test/comparison.js#L368)) -* **[ifNth](#ifNth)** ([code](lib/comparison.js#L327) | [tests](test/comparison.js#L380)) -* **[ifOdd](#ifOdd)** ([code](lib/comparison.js#L350) | [tests](test/comparison.js#L403)) -* **[is](#is)** ([code](lib/comparison.js#L274) | [tests](test/comparison.js#L327)) -* **[isnt](#isnt)** ([code](lib/comparison.js#L389) | [tests](test/comparison.js#L432)) -* **[lt](#lt)** ([code](lib/comparison.js#L411) | [tests](test/comparison.js#L449)) -* **[lte](#lte)** ([code](lib/comparison.js#L435) | [tests](test/comparison.js#L476)) -* **[neither](#neither)** ([code](lib/comparison.js#L456) | [tests](test/comparison.js#L511)) -* **[not](#not)** ([code](lib/comparison.js#L470) | [no tests]) -* **[or](#or)** ([code](lib/comparison.js#L492) | [tests](test/comparison.js#L523)) -* **[unlessEq](#unlessEq)** ([code](lib/comparison.js#L518) | [tests](test/comparison.js#L556)) -* **[unlessGt](#unlessGt)** ([code](lib/comparison.js#L538) | [tests](test/comparison.js#L567)) -* **[unlessLt](#unlessLt)** ([code](lib/comparison.js#L558) | [tests](test/comparison.js#L578)) -* **[unlessGteq](#unlessGteq)** ([code](lib/comparison.js#L578) | [tests](test/comparison.js#L589)) -* **[unlessLteq](#unlessLteq)** ([code](lib/comparison.js#L598) | [tests](test/comparison.js#L604)) - -### [date helpers](#date) - -Visit the: [code](lib/date.js) | [unit tests](test/date.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+date+helpers)) - -* **[year](#year)** ([code](lib/date.js#L15) | [no tests]) -* **[date](#date)** ([code](lib/date.js#Lundefined) | [no tests]) -* **[moment](#moment)** ([code](lib/date.js#L24) | [no tests]) - -### [fs helpers](#fs) - -Visit the: [code](lib/fs.js) | [unit tests](test/fs.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+fs+helpers)) - -* **[fileSize](#fileSize)** ([code](lib/fs.js#L14) | [no tests]) -* **[read](#read)** ([code](lib/fs.js#L29) | [tests](test/fs.js#L16)) -* **[readdir](#readdir)** ([code](lib/fs.js#L42) | [tests](test/fs.js#L23)) - -### [html helpers](#html) - -Visit the: [code](lib/html.js) | [unit tests](test/html.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+html+helpers)) - -* **[attr](#attr)** ([code](lib/html.js#L23) | [tests](test/html.js#L13)) -* **[css](#css)** ([code](lib/html.js#L45) | [tests](test/html.js#L21)) -* **[js](#js)** ([code](lib/html.js#L89) | [tests](test/html.js#L69)) -* **[sanitize](#sanitize)** ([code](lib/html.js#L121) | [tests](test/html.js#L98)) -* **[ul](#ul)** ([code](lib/html.js#L135) | [tests](test/html.js#L108)) -* **[ol](#ol)** ([code](lib/html.js#L154) | [tests](test/html.js#L115)) -* **[thumbnailImage](#thumbnailImage)** ([code](lib/html.js#L176) | [tests](test/html.js#L122)) - -### [i18n helpers](#i18n) - -Visit the: [code](lib/i18n.js) | [unit tests](test/i18n.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+i18n+helpers)) - -* **[i18n](#i18n)** ([code](lib/i18n.js#L18) | [tests](test/i18n.js#L11)) - -### [inflection helpers](#inflection) - -Visit the: [code](lib/inflection.js) | [unit tests](test/inflection.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+inflection+helpers)) - -* **[inflect](#inflect)** ([code](lib/inflection.js#L30) | [tests](test/inflection.js#L9)) -* **[ordinalize](#ordinalize)** ([code](lib/inflection.js#L58) | [tests](test/inflection.js#L22)) - -### [logging helpers](#logging) - -Visit the: [code](lib/logging.js) | [unit tests](test/logging.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+logging+helpers)) - -* **[log](#log)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[ok](#ok)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[success](#success)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[info](#info)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[warning](#warning)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[warn](#warn)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[error](#error)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[danger](#danger)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[bold](#bold)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[_debug](#_debug)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[_inspect](#_inspect)** ([code](lib/logging.js#Lundefined) | [no tests]) - -### [markdown helpers](#markdown) - -Visit the: [code](lib/markdown.js) | [unit tests](test/markdown.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+markdown+helpers)) - -* **[markdown](#markdown)** ([code](lib/markdown.js#Lundefined) | [tests](test/markdown.js#L10)) -* **[md](#md)** ([code](lib/markdown.js#L55) | [tests](test/markdown.js#L18)) - -### [match helpers](#match) - -Visit the: [code](lib/match.js) | [unit tests](test/match.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+match+helpers)) - -* **[match](#match)** ([code](lib/match.js#L23) | [tests](test/match.js#L13)) -* **[isMatch](#isMatch)** ([code](lib/match.js#L47) | [tests](test/match.js#L61)) -* **[mm](#mm)** ([code](lib/match.js#L56) | [no tests]) - -### [math helpers](#math) - -Visit the: [code](lib/math.js) | [unit tests](test/math.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+math+helpers)) - -* **[abs](#abs)** ([code](lib/math.js#L15) | [no tests]) -* **[add](#add)** ([code](lib/math.js#L31) | [tests](test/math.js#L10)) -* **[avg](#avg)** ([code](lib/math.js#L54) | [no tests]) -* **[ceil](#ceil)** ([code](lib/math.js#L69) | [tests](test/math.js#L29)) -* **[divide](#divide)** ([code](lib/math.js#L84) | [tests](test/math.js#L36)) -* **[floor](#floor)** ([code](lib/math.js#L102) | [tests](test/math.js#L43)) -* **[minus](#minus)** ([code](lib/math.js#L118) | [no tests]) -* **[modulo](#modulo)** ([code](lib/math.js#L137) | [no tests]) -* **[multiply](#multiply)** ([code](lib/math.js#L157) | [tests](test/math.js#L50)) -* **[plus](#plus)** ([code](lib/math.js#L175) | [no tests]) -* **[random](#random)** ([code](lib/math.js#L194) | [tests](test/math.js#L102)) -* **[remainder](#remainder)** ([code](lib/math.js#L212) | [tests](test/math.js#L57)) -* **[round](#round)** ([code](lib/math.js#L224) | [tests](test/math.js#L69)) -* **[subtract](#subtract)** ([code](lib/math.js#L241) | [tests](test/math.js#L76)) -* **[sum](#sum)** ([code](lib/math.js#L263) | [tests](test/math.js#L83)) -* **[times](#times)** ([code](lib/math.js#L286) | [no tests]) - -### [misc helpers](#misc) - -Visit the: [code](lib/misc.js) | [unit tests](test/misc.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+misc+helpers)) - -* **[frame](#frame)** ([code](lib/misc.js#L11) | [no tests]) -* **[option](#option)** ([code](lib/misc.js#L26) | [tests](test/misc.js#L20)) -* **[noop](#noop)** ([code](lib/misc.js#L39) | [tests](test/misc.js#L13)) -* **[typeOf](#typeOf)** ([code](lib/misc.js#L59) | [no tests]) -* **[withHash](#withHash)** ([code](lib/misc.js#L71) | [tests](test/misc.js#L38)) - -### [number helpers](#number) - -Visit the: [code](lib/number.js) | [unit tests](test/number.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+number+helpers)) - -* **[bytes](#bytes)** ([code](lib/number.js#L24) | [tests](test/number.js#L10)) -* **[addCommas](#addCommas)** ([code](lib/number.js#L61) | [tests](test/number.js#L84)) -* **[phoneNumber](#phoneNumber)** ([code](lib/number.js#L74) | [tests](test/number.js#L30)) -* **[toAbbr](#toAbbr)** ([code](lib/number.js#L92) | [tests](test/number.js#L91)) -* **[toExponential](#toExponential)** ([code](lib/number.js#L130) | [tests](test/number.js#L59)) -* **[toFixed](#toFixed)** ([code](lib/number.js#L153) | [tests](test/number.js#L37)) -* **[toFloat](#toFloat)** ([code](lib/number.js#L169) | [tests](test/number.js#L77)) -* **[toInt](#toInt)** ([code](lib/number.js#L179) | [tests](test/number.js#L70)) -* **[toPrecision](#toPrecision)** ([code](lib/number.js#L196) | [tests](test/number.js#L48)) - -### [object helpers](#object) - -Visit the: [code](lib/object.js) | [unit tests](test/object.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+object+helpers)) - -* **[extend](#extend)** ([code](lib/object.js#L18) | [tests](test/object.js#L15)) -* **[forIn](#forIn)** ([code](lib/object.js#L55) | [tests](test/object.js#L33)) -* **[forOwn](#forOwn)** ([code](lib/object.js#L81) | [tests](test/object.js#L50)) -* **[toPath](#toPath)** ([code](lib/object.js#L106) | [tests](test/object.js#L87)) -* **[get](#get)** ([code](lib/object.js#L128) | [tests](test/object.js#L77)) -* **[getObject](#getObject)** ([code](lib/object.js#L149) | [tests](test/object.js#L77)) -* **[hasOwn](#hasOwn)** ([code](lib/object.js#L167) | [tests](test/object.js#L126)) -* **[isObject](#isObject)** ([code](lib/object.js#L183) | [tests](test/object.js#L144)) -* **[JSONparse](#JSONparse)** ([code](lib/object.js#L201) | [tests](test/object.js#L164)) -* **[JSONstringify](#JSONstringify)** ([code](lib/object.js#L218) | [no tests]) -* **[merge](#merge)** ([code](lib/object.js#L235) | [tests](test/object.js#L156)) -* **[parseJSON](#parseJSON)** ([code](lib/object.js#L254) | [no tests]) -* **[pick](#pick)** ([code](lib/object.js#L267) | [tests](test/object.js#L171)) -* **[stringify](#stringify)** ([code](lib/object.js#L290) | [tests](test/object.js#L199)) - -### [path helpers](#path) - -Visit the: [code](lib/path.js) | [unit tests](test/path.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+path+helpers)) - -* **[absolute](#absolute)** ([code](lib/path.js#L20) | [tests](test/path.js#L13)) -* **[dirname](#dirname)** ([code](lib/path.js#L40) | [tests](test/path.js#L25)) -* **[relative](#relative)** ([code](lib/path.js#L59) | [tests](test/path.js#L32)) -* **[basename](#basename)** ([code](lib/path.js#L81) | [tests](test/path.js#L47)) -* **[stem](#stem)** ([code](lib/path.js#L100) | [tests](test/path.js#L58)) -* **[extname](#extname)** ([code](lib/path.js#L119) | [tests](test/path.js#L69)) -* **[resolve](#resolve)** ([code](lib/path.js#L138) | [no tests]) -* **[segments](#segments)** ([code](lib/path.js#L166) | [tests](test/path.js#L80)) - -### [regex helpers](#regex) - -Visit the: [code](lib/regex.js) | [unit tests](test/regex.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+regex+helpers)) - -* **[toRegex](#toRegex)** ([code](lib/regex.js#L19) | [no tests]) -* **[test](#test)** ([code](lib/regex.js#L42) | [no tests]) - -### [string helpers](#string) - -Visit the: [code](lib/string.js) | [unit tests](test/string.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+string+helpers)) - -* **[append](#append)** ([code](lib/string.js#L22) | [no tests]) -* **[camelcase](#camelcase)** ([code](lib/string.js#L41) | [tests](test/string.js#L10)) -* **[capitalize](#capitalize)** ([code](lib/string.js#L60) | [tests](test/string.js#L25)) -* **[capitalizeAll](#capitalizeAll)** ([code](lib/string.js#L77) | [tests](test/string.js#L36)) -* **[center](#center)** ([code](lib/string.js#L95) | [tests](test/string.js#L47)) -* **[chop](#chop)** ([code](lib/string.js#L125) | [tests](test/string.js#L58)) -* **[dashcase](#dashcase)** ([code](lib/string.js#L143) | [tests](test/string.js#L73)) -* **[dotcase](#dotcase)** ([code](lib/string.js#L162) | [tests](test/string.js#L88)) -* **[downcase](#downcase)** ([code](lib/string.js#L182) | [no tests]) -* **[ellipsis](#ellipsis)** ([code](lib/string.js#L202) | [tests](test/string.js#L103)) -* **[hyphenate](#hyphenate)** ([code](lib/string.js#L223) | [tests](test/string.js#L118)) -* **[isString](#isString)** ([code](lib/string.js#L240) | [tests](test/string.js#L129)) -* **[lowercase](#lowercase)** ([code](lib/string.js#L256) | [tests](test/string.js#L151)) -* **[occurrences](#occurrences)** ([code](lib/string.js#L278) | [tests](test/string.js#L162)) -* **[pascalcase](#pascalcase)** ([code](lib/string.js#L303) | [tests](test/string.js#L173)) -* **[pathcase](#pathcase)** ([code](lib/string.js#L323) | [tests](test/string.js#L188)) -* **[plusify](#plusify)** ([code](lib/string.js#L343) | [tests](test/string.js#L203)) -* **[prepend](#prepend)** ([code](lib/string.js#L363) | [no tests]) -* **[raw](#raw)** ([code](lib/string.js#L385) | [no tests]) -* **[remove](#remove)** ([code](lib/string.js#L413) | [no tests]) -* **[removeFirst](#removeFirst)** ([code](lib/string.js#L432) | [no tests]) -* **[replace](#replace)** ([code](lib/string.js#L452) | [tests](test/string.js#L222)) -* **[replaceFirst](#replaceFirst)** ([code](lib/string.js#L473) | [no tests]) -* **[reverse](#reverse)** ([code](lib/string.js#L492) | [tests](test/string.js#L241)) -* **[sentence](#sentence)** ([code](lib/string.js#L509) | [tests](test/string.js#L252)) -* **[snakecase](#snakecase)** ([code](lib/string.js#L528) | [tests](test/string.js#L263)) -* **[split](#split)** ([code](lib/string.js#L547) | [tests](test/string.js#L278)) -* **[startsWith](#startsWith)** ([code](lib/string.js#L572) | [tests](test/string.js#L293)) -* **[titleize](#titleize)** ([code](lib/string.js#L596) | [tests](test/string.js#L312)) -* **[trim](#trim)** ([code](lib/string.js#L623) | [tests](test/string.js#L323)) -* **[trimLeft](#trimLeft)** ([code](lib/string.js#L639) | [no tests]) -* **[trimRight](#trimRight)** ([code](lib/string.js#L657) | [no tests]) -* **[truncate](#truncate)** ([code](lib/string.js#L680) | [tests](test/string.js#L338)) -* **[truncateWords](#truncateWords)** ([code](lib/string.js#L712) | [no tests]) -* **[upcase](#upcase)** ([code](lib/string.js#L742) | [no tests]) -* **[uppercase](#uppercase)** ([code](lib/string.js#L763) | [tests](test/string.js#L362)) - -### [url helpers](#url) - -Visit the: [code](lib/url.js) | [unit tests](test/url.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+url+helpers)) - -* **[encodeURI](#encodeURI)** ([code](lib/url.js#L19) | [tests](test/url.js#L31)) -* **[escape](#escape)** ([code](lib/url.js#L34) | [no tests]) -* **[decodeURI](#decodeURI)** ([code](lib/url.js#L48) | [tests](test/url.js#L38)) -* **[url_encode](#url_encode)** ([code](lib/url.js#L59) | [no tests]) -* **[url_decode](#url_decode)** ([code](lib/url.js#L68) | [no tests]) -* **[urlResolve](#urlResolve)** ([code](lib/url.js#L82) | [tests](test/url.js#L11)) -* **[urlParse](#urlParse)** ([code](lib/url.js#L94) | [tests](test/url.js#L45)) -* **[stripQuerystring](#stripQuerystring)** ([code](lib/url.js#L106) | [tests](test/url.js#L24)) -* **[stripProtocol](#stripProtocol)** ([code](lib/url.js#L126) | [no tests]) - -*** - -## array - -### [{{after}}](lib/array.js#L22) - -Returns all of the items in an array after the specified index. Opposite of [before](#before). - -**Params** - -* `array` **{Array}**: Collection -* `n` **{Number}**: Starting index (number of items to exclude) -* `returns` **{Array}**: Array exluding `n` items. - -**Example** - -```handlebars - -{{after array 1}} - -``` - -### [{{arrayify}}](lib/array.js#L39) - -Cast the given `value` to an array. - -**Params** - -* `value` **{any}** -* `returns` **{Array}** - -**Example** - -```handlebars -{{arrayify "foo"}} - -``` - -### [{{before}}](lib/array.js#L58) - -Return all of the items in the collection before the specified count. Opposite of [after](#after). - -**Params** - -* `array` **{Array}** -* `n` **{Number}** -* `returns` **{Array}**: Array excluding items after the given number. - -**Example** - -```handlebars - -{{before array 2}} - -``` - -### [{{eachIndex}}](lib/array.js#L77) - -**Params** - -* `array` **{Array}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars - -{{#eachIndex array}} - {{item}} is {{index}} -{{/eachIndex}} -``` - -### [{{filter}}](lib/array.js#L102) - -Block helper that filters the given array and renders the block for values that evaluate to `true`, otherwise the inverse block is returned. - -**Params** - -* `array` **{Array}** -* `value` **{any}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars - -{{#filter array "foo"}}AAA{{else}}BBB{{/filter}} - -``` - -### [{{first}}](lib/array.js#L142) - -Returns the first item, or first `n` items of an array. - -**Params** - -* `array` **{Array}** -* `n` **{Number}**: Number of items to return, starting at `0`. -* `returns` **{Array}** - -**Example** - -```handlebars -{{first "['a', 'b', 'c', 'd', 'e']" 2}} - -``` - -### [{{forEach}}](lib/array.js#L184) - -Iterates over each item in an array and exposes the current item in the array as context to the inner block. In addition to the current array item, the helper exposes the following variables to the inner block: - -* `index` -* `total` -* `isFirst` -* `isLast` -Also, `@index` is exposed as a private variable, and additional -private variables may be defined as hash arguments. - -**Params** - -* `array` **{Array}** -* `returns` **{String}** - -**Example** - -```handlebars - - -{{#forEach accounts}} - - {{ name }} - {{#unless isLast}}, {{/unless}} -{{/forEach}} -``` - -### [{{inArray}}](lib/array.js#L224) - -Block helper that renders the block if an array has the given `value`. Optionally specify an inverse block to render when the array does not have the given value. - -**Params** - -* `array` **{Array}** -* `value` **{any}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars - -{{#inArray array "d"}} - foo -{{else}} - bar -{{/inArray}} - -``` - -### [{{isArray}}](lib/array.js#L244) - -Returns true if `value` is an es5 array. - -**Params** - -* `value` **{any}**: The value to test. -* `returns` **{Boolean}** - -**Example** - -```handlebars -{{isArray "abc"}} - - - -{{isArray array}} - -``` - -### [{{itemAt}}](lib/array.js#L263) - -Returns the item from `array` at index `idx`. - -**Params** - -* `array` **{Array}** -* `idx` **{Number}** -* `returns` **{any}** `value` - -**Example** - -```handlebars - -{{itemAt array 1}} - -``` - -### [{{join}}](lib/array.js#L294) - -Join all elements of array into a string, optionally using a given separator. - -**Params** - -* `array` **{Array}** -* `separator` **{String}**: The separator to use. Defaults to `,`. -* `returns` **{String}** - -**Example** - -```handlebars - -{{join array}} - - -{{join array '-'}} - -``` - -### [{{equalsLength}}](lib/array.js#L313) - -Returns true if the the length of the given `value` is equal -to the given `length`. Can be used as a block or inline helper. - -**Params** - -* `value` **{Array|String}** -* `length` **{Number}** -* `options` **{Object}** -* `returns` **{String}** - -### [{{last}}](lib/array.js#L349) - -Returns the last item, or last `n` items of an array or string. Opposite of [first](#first). - -**Params** - -* `value` **{Array|String}**: Array or string. -* `n` **{Number}**: Number of items to return from the end of the array. -* `returns` **{Array}** - -**Example** - -```handlebars - - -{{last value}} - - -{{last value 2}} - - -{{last value 3}} - -``` - -### [{{length}}](lib/array.js#L379) - -Returns the length of the given string or array. - -**Params** - -* `value` **{Array|Object|String}** -* `returns` **{Number}**: The length of the value. - -**Example** - -```handlebars -{{length '["a", "b", "c"]'}} - - - -{{length myArray}} - - - -{{length myObject}} - -``` - -### [{{lengthEqual}}](lib/array.js#L395) - -Alias for [equalsLength](#equalsLength) - -### [{{map}}](lib/array.js#L414) - -Returns a new array, created by calling `function` on each element of the given `array`. For example, - -**Params** - -* `array` **{Array}** -* `fn` **{Function}** -* `returns` **{String}** - -**Example** - -```handlebars - -{{map array double}} - -``` - -### [{{pluck}}](lib/array.js#L445) - -Map over the given object or array or objects and create an array of values from the given `prop`. Dot-notation may be used (as a string) to get nested properties. - -**Params** - -* `collection` **{Array|Object}** -* `prop` **{Function}** -* `returns` **{String}** - -**Example** - -```handlebars -// {{pluck items "data.title"}} - -``` - -### [{{reverse}}](lib/array.js#L473) - -Reverse the elements in an array, or the characters in a string. - -**Params** - -* `value` **{Array|String}** -* `returns` **{Array|String}**: Returns the reversed string or array. - -**Example** - -```handlebars - -{{reverse value}} - - -{{reverse value}} - -``` - -### [{{some}}](lib/array.js#L504) - -Block helper that returns the block if the callback returns true for some value in the given array. - -**Params** - -* `array` **{Array}** -* `iter` **{Function}**: Iteratee -* **{Options}**: Handlebars provided options object -* `returns` **{String}** - -**Example** - -```handlebars - -{{#some array isString}} - Render me if the array has a string. -{{else}} - Render me if it doesn't. -{{/some}} - -``` - -### [{{sort}}](lib/array.js#L532) - -Sort the given `array`. If an array of objects is passed, you may optionally pass a `key` to sort on as the second argument. You may alternatively pass a sorting function as the second argument. - -**Params** - -* `array` **{Array}**: the array to sort. -* `key` **{String|Function}**: The object key to sort by, or sorting function. - -**Example** - -```handlebars - -{{sort array}} - -``` - -### [{{sortBy}}](lib/array.js#L557) - -Sort an `array`. If an array of objects is passed, you may optionally pass a `key` to sort on as the second argument. You may alternatively pass a sorting function as the second argument. - -**Params** - -* `array` **{Array}**: the array to sort. -* `props` **{String|Function}**: One or more properties to sort by, or sorting functions to use. - -**Example** - -```handlebars - -{{sortBy array "a"}} - -``` - -### [{{withAfter}}](lib/array.js#L588) - -Use the items in the array _after_ the specified index as context inside a block. Opposite of [withBefore](#withBefore). - -**Params** - -* `array` **{Array}** -* `idx` **{Number}** -* `options` **{Object}** -* `returns` **{Array}** - -**Example** - -```handlebars - -{{#withAfter array 3}} - {{this}} -{{/withAfter}} - -``` - -### [{{withBefore}}](lib/array.js#L618) - -Use the items in the array _before_ the specified index as context inside a block. Opposite of [withAfter](#withAfter). - -**Params** - -* `array` **{Array}** -* `idx` **{Number}** -* `options` **{Object}** -* `returns` **{Array}** - -**Example** - -```handlebars - -{{#withBefore array 3}} - {{this}} -{{/withBefore}} - -``` - -### [{{withFirst}}](lib/array.js#L648) - -Use the first item in a collection inside a handlebars block expression. Opposite of [withLast](#withLast). - -**Params** - -* `array` **{Array}** -* `idx` **{Number}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars - -{{#withFirst array}} - {{this}} -{{/withFirst}} - -``` - -### [{{withGroup}}](lib/array.js#L692) - -Block helper that groups array elements by given group `size`. - -**Params** - -* `array` **{Array}**: The array to iterate over -* `size` **{Number}**: The desired length of each array "group" -* `options` **{Object}**: Handlebars options -* `returns` **{String}** - -**Example** - -```handlebars - -{{#withGroup array 4}} - {{#each this}} - {{.}} - {{each}} -
-{{/withGroup}} - - - -``` - -### [{{withLast}}](lib/array.js#L727) - -Use the last item or `n` items in an array as context inside a block. Opposite of [withFirst](#withFirst). - -**Params** - -* `array` **{Array}** -* `idx` **{Number}**: The starting index. -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars - -{{#withLast array}} - {{this}} -{{/withLast}} - -``` - -### [{{withSort}}](lib/array.js#L766) - -Block helper that sorts a collection and exposes the sorted collection as context inside the block. - -**Params** - -* `array` **{Array}** -* `prop` **{String}** -* `options` **{Object}**: Specify `reverse="true"` to reverse the array. -* `returns` **{String}** - -**Example** - -```handlebars - -{{#withSort array}}{{this}}{{/withSort}} - -``` - -### [{{unique}}](lib/array.js#L816) - -Block helper that return an array with all duplicate values removed. Best used along with a [each](#each) helper. - -**Params** - -* `array` **{Array}** -* `options` **{Object}** -* `returns` **{Array}** - -**Example** - -```handlebars - -{{#each (unique array)}}{{.}}{{/each}} - -``` - -## code - -### [{{embed}}](lib/code.js#L23) - -Embed code from an external file as preformatted text. - -**Params** - -* `filepath` **{String}**: filepath to the file to embed. -* `language` **{String}**: Optionally specify the language to use for syntax highlighting. -* `returns` **{String}** - -**Example** - -```handlebars -{{embed 'path/to/file.js'}} - -{{embed 'path/to/file.hbs' 'html')}} -``` - -### [{{gist}}](lib/code.js#L45) - -Embed a GitHub Gist using only the id of the Gist - -**Params** - -* `id` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{gist "12345"}} -``` - -### [{{jsfiddle}}](lib/code.js#L60) - -Generate the HTML for a jsFiddle link with the given `params` - -**Params** - -* `params` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars -{{jsfiddle id="0dfk10ks" tabs="true"}} -``` - -## collection - -### [{{isEmpty}}](lib/collection.js#L31) - -Inline, subexpression, or block helper that returns true (or the block) if the given collection is empty, or false (or the inverse block, if supplied) if the colleciton is not empty. - -**Params** - -* `collection` **{Object}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars - -{{#isEmpty array}}AAA{{else}}BBB{{/isEmpty}} - - - -{{isEmpty array}} - -``` - -### [{{iterate}}](lib/collection.js#L59) - -Block helper that iterates over an array or object. If -an array is given, `.forEach` is called, or if an object -is given, `.forOwn` is called, otherwise the inverse block -is returned. - -**Params** - -* `collection` **{Object|Array}**: The collection to iterate over -* `options` **{Object}** -* `returns` **{String}** - -## comparison - -### [{{and}}](lib/comparison.js#L27) - -Helper that renders the block if **both** of the given values are truthy. If an inverse block is specified it will be rendered when falsy. Works as a block helper, inline helper or subexpression. - -**Params** - -* `a` **{any}** -* `b` **{any}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}** - -**Example** - -```handlebars - -{{#and great magnificent}}A{{else}}B{{/and}} - -``` - -### [{{compare}}](lib/comparison.js#L57) - -Render a block when a comparison of the first and third -arguments returns true. The second argument is -the [arithemetic operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators) to use. You may also -optionally specify an inverse block to render when falsy. - -**Params** - -* `a` **{}** -* `operator` **{}**: The operator to use. Operators must be enclosed in quotes: `">"`, `"="`, `"<="`, and so on. -* `b` **{}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or if specified the inverse block is rendered if falsey. - -### [{{contains}}](lib/comparison.js#L124) - -Block helper that renders the block if `collection` has the given `value`, using strict equality (`===`) for comparison, otherwise the inverse block is rendered (if specified). If a `startIndex` is specified and is negative, it is used as the offset from the end of the collection. - -**Params** - -* `collection` **{Array|Object|String}**: The collection to iterate over. -* `value` **{any}**: The value to check for. -* `[startIndex=0]` **{Number}**: Optionally define the starting index. -* `options` **{Object}**: Handlebars provided options object. - -**Example** - -```handlebars - -{{#contains array "d"}} - This will not be rendered. -{{else}} - This will be rendered. -{{/contains}} -``` - -### [{{default}}](lib/comparison.js#L143) - -Returns the first value that is not undefined, otherwise the "default" value is returned. - -**Params** - -* `value` **{any}** -* `defaultValue` **{any}** -* `returns` **{String}** - -### [{{eq}}](lib/comparison.js#L165) - -Block helper that renders a block if `a` is **equal to** `b`. -If an inverse block is specified it will be rendered when falsy. -You may optionally use the `compare=""` hash argument for the -second value. - -**Params** - -* `a` **{String}** -* `b` **{String}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -### [{{gt}}](lib/comparison.js#L188) - -Block helper that renders a block if `a` is **greater than** `b`. - -If an inverse block is specified it will be rendered when falsy. -You may optionally use the `compare=""` hash argument for the -second value. - -**Params** - -* `a` **{String}** -* `b` **{String}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -### [{{gte}}](lib/comparison.js#L212) - -Block helper that renders a block if `a` is **greater than or equal to** `b`. - -If an inverse block is specified it will be rendered when falsy. -You may optionally use the `compare=""` hash argument for the -second value. - -**Params** - -* `a` **{String}** -* `b` **{String}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -### [{{has}}](lib/comparison.js#L232) - -Block helper that renders a block if `value` has `pattern`. -If an inverse block is specified it will be rendered when falsy. - -**Params** - -* `val` **{any}**: The value to check. -* `pattern` **{any}**: The pattern to check for. -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}** - -### [{{isFalsey}}](lib/comparison.js#L274) - -Returns true if the given `value` is falsey. Uses the [falsey](https://github.com/jonschlinkert/falsey) -library for comparisons. Please see that library for more information -or to report bugs with this helper. - -**Params** - -* `val` **{any}** -* `options` **{Options}** -* `returns` **{Boolean}** - -### [{{isTruthy}}](lib/comparison.js#L289) - -Returns true if the given `value` is truthy. Uses the [falsey](https://github.com/jonschlinkert/falsey) -library for comparisons. Please see that library for more information -or to report bugs with this helper. - -**Params** - -* `val` **{any}** -* `options` **{Options}** -* `returns` **{Boolean}** - -### [{{ifEven}}](lib/comparison.js#L310) - -Return true if the given value is an even number. - -**Params** - -* `number` **{Number}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -**Example** - -```handlebars -{{#ifEven value}} - render A -{{else}} - render B -{{/ifEven}} -``` - -### [{{ifNth}}](lib/comparison.js#L327) - -Conditionally renders a block if the remainder is zero when -`a` operand is divided by `b`. If an inverse block is specified -it will be rendered when the remainder is **not zero**. - -**Params** - -* **{}**: {Number} -* **{}**: {Number} -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -### [{{ifOdd}}](lib/comparison.js#L350) - -Block helper that renders a block if `value` is **an odd number**. If an inverse block is specified it will be rendered when falsy. - -**Params** - -* `value` **{Object}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -**Example** - -```handlebars -{{#ifOdd value}} - render A -{{else}} - render B -{{/ifOdd}} -``` - -### [{{is}}](lib/comparison.js#L367) - -Block helper that renders a block if `a` is **equal to** `b`. -If an inverse block is specified it will be rendered when falsy. -Similar to [eq](#eq) but does not do strict equality. - -**Params** - -* `a` **{any}** -* `b` **{any}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}** - -### [{{isnt}}](lib/comparison.js#L389) - -Block helper that renders a block if `a` is **not equal to** `b`. -If an inverse block is specified it will be rendered when falsy. -Similar to [unlessEq](#unlesseq) but does not use strict equality for -comparisons. - -**Params** - -* `a` **{String}** -* `b` **{String}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}** - -### [{{lt}}](lib/comparison.js#L411) - -Block helper that renders a block if `a` is **less than** `b`. - -If an inverse block is specified it will be rendered when falsy. -You may optionally use the `compare=""` hash argument for the -second value. - -**Params** - -* `context` **{Object}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -### [{{lte}}](lib/comparison.js#L435) - -Block helper that renders a block if `a` is **less than or equal to** `b`. - -If an inverse block is specified it will be rendered when falsy. -You may optionally use the `compare=""` hash argument for the -second value. - -**Params** - -* `a` **{Sring}** -* `b` **{Sring}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -### [{{neither}}](lib/comparison.js#L456) - -Block helper that renders a block if **neither of** the given values -are truthy. If an inverse block is specified it will be rendered -when falsy. - -**Params** - -* `a` **{any}** -* `b` **{any}** -* `options` **{}**: Handlebars options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -### [{{not}}](lib/comparison.js#L470) - -Returns true if `val` is falsey. Works as a block or inline helper. - -**Params** - -* `val` **{String}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}** - -### [{{or}}](lib/comparison.js#L492) - -Block helper that renders a block if **any of** the given values is truthy. If an inverse block is specified it will be rendered when falsy. - -**Params** - -* `arguments` **{...any}**: Variable number of arguments -* `options` **{Object}**: Handlebars options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -**Example** - -```handlebars -{{#or a b c}} - If any value is true this will be rendered. -{{/or}} -``` - -### [{{unlessEq}}](lib/comparison.js#L518) - -Block helper that always renders the inverse block **unless `a` is -is equal to `b`**. - -**Params** - -* `a` **{String}** -* `b` **{String}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Inverse block by default, or block if falsey. - -### [{{unlessGt}}](lib/comparison.js#L538) - -Block helper that always renders the inverse block **unless `a` is -is greater than `b`**. - -**Params** - -* `a` **{Object}**: The default value -* `b` **{Object}**: The value to compare -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Inverse block by default, or block if falsey. - -### [{{unlessLt}}](lib/comparison.js#L558) - -Block helper that always renders the inverse block **unless `a` is -is less than `b`**. - -**Params** - -* `a` **{Object}**: The default value -* `b` **{Object}**: The value to compare -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -### [{{unlessGteq}}](lib/comparison.js#L578) - -Block helper that always renders the inverse block **unless `a` is -is greater than or equal to `b`**. - -**Params** - -* `a` **{any}** -* `b` **{any}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -### [{{unlessLteq}}](lib/comparison.js#L598) - -Block helper that always renders the inverse block **unless `a` is -is less than or equal to `b`**. - -**Params** - -* `a` **{any}** -* `b` **{any}** -* `options` **{Object}**: Handlebars provided options object -* `returns` **{String}**: Block, or inverse block if specified and falsey. - -## date - -### [{{year}}](lib/date.js#L15) - -Get the current year. - -**Example** - -```handlebars -{{year}} - -``` - -### [{{moment}}](lib/date.js#L24) - -Use [moment](http://momentjs.com) as a helper. See [helper-date](https://github.com/helpers/helper-date) for more details. - -## fs - -### [{{read}}](lib/fs.js#L29) - -Read a file from the file system. This is useful in composing "include"-style helpers using sub-expressions. - -**Params** - -* `filepath` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{read "a/b/c.js"}} -{{someHelper (read "a/b/c.md")}} -``` - -### [{{readdir}}](lib/fs.js#L42) - -Return an array of files from the given -directory. - -**Params** - -* `directory` **{String}** -* `returns` **{Array}** - -## html - -### [{{attr}}](lib/html.js#L23) - -Stringify attributes on the options `hash`. - -**Params** - -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars - - - -{{css stylesheets}} - - - - -``` - -### [{{js}}](lib/html.js#L89) - -Generate one or more `` tags with paths/urls to javascript or coffeescript files. - -**Params** - -* `context` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars -{{js scripts}} -``` - -### [{{sanitize}}](lib/html.js#L121) - -Strip HTML tags from a string, so that only the text nodes are preserved. - -**Params** - -* `str` **{String}**: The string of HTML to sanitize. -* `returns` **{String}** - -**Example** - -```handlebars -{{sanitize "foo"}} - -``` - -### [{{ul}}](lib/html.js#L135) - -Block helper for creating unordered lists (`
    `) - -**Params** - -* `context` **{Object}** -* `options` **{Object}** -* `returns` **{String}** - -### [{{ol}}](lib/html.js#L154) - -Block helper for creating ordered lists (`
      `) - -**Params** - -* `context` **{Object}** -* `options` **{Object}** -* `returns` **{String}** - -### [{{thumbnailImage}}](lib/html.js#L176) - -Returns a `
      ` with a thumbnail linked to a full picture - -**Params** - -* `context` **{Object}**: Object with values/attributes to add to the generated elements: -* `context.alt` **{String}** -* `context.src` **{String}** -* `context.width` **{Number}** -* `context.height` **{Number}** -* `returns` **{String}**: HTML `
      ` element with image and optional caption/link. - -## i18n - -### [{{i18n}}](lib/i18n.js#L18) - -i18n helper. See [button-i18n](https://github.com/assemble/buttons) -for a working example. - -**Params** - -* `key` **{String}** -* `options` **{Object}** -* `returns` **{String}** - -## inflection - -### [{{inflect}}](lib/inflection.js#L30) - -Returns either the `singular` or `plural` inflection of a word based on the given `count`. - -**Params** - -* `count` **{Number}** -* `singular` **{String}**: The singular form -* `plural` **{String}**: The plural form -* `includeCount` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{inflect 0 "string" "strings"}} - -{{inflect 1 "string" "strings"}} - -{{inflect 1 "string" "strings" true}} - -{{inflect 2 "string" "strings"}} - -{{inflect 2 "string" "strings" true}} - -``` - -### [{{ordinalize}}](lib/inflection.js#L58) - -Returns an ordinalized number as a string. - -**Params** - -* `val` **{String}**: The value to ordinalize. -* `returns` **{String}**: The ordinalized number - -**Example** - -```handlebars -{{ordinalize 1}} - -{{ordinalize 21}} - -{{ordinalize 29}} - -{{ordinalize 22}} - -``` - -## logging - -[logging-helpers](https://github.com/helpers/logging-helpers). - -## markdown - -### [{{markdown}}](lib/markdown.js#L28) - -Block helper that converts a string of inline markdown to HTML. - -**Params** - -* `context` **{Object}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars -{{#markdown}} -# Foo -{{/markdown}} - -``` - -### [{{md}}](lib/markdown.js#L55) - -Read a markdown file from the file system and inject its contents after converting it to HTML. - -**Params** - -* `context` **{Object}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars -{{md "foo/bar.md"}} -``` - -## match - -### [{{match}}](lib/match.js#L23) - -Returns an array of strings that match the given glob pattern(s). Options may be passed on the options hash or locals. - -**Params** - -* `files` **{Array|String}** -* `patterns` **{Array|String}**: One or more glob patterns. -* `locals` **{Object}** -* `options` **{Object}** -* `returns` **{Array}**: Array of matches - -**Example** - -```handlebars -{{match (readdir "foo") "*.js"}} -{{match (readdir "foo") (toRegex "\\.js$")}} -``` - -### [{{isMatch}}](lib/match.js#L47) - -Returns true if a filepath contains the given pattern. Options may be passed on the options hash or locals. - -**Params** - -* `filepath` **{String}** -* `pattern` **{String}** -* `options` **{Object}** -* `returns` **{Boolean}** - -**Example** - -```handlebars -{{isMatch "foo.md" "*.md"}} - -``` - -## math - -### [{{abs}}](lib/math.js#L15) - -Return the magnitude of `a`. - -**Params** - -* `a` **{Number}** -* `returns` **{Number}** - -### [{{add}}](lib/math.js#L31) - -Return the sum of `a` plus `b`. - -**Params** - -* `a` **{Number}** -* `b` **{Number}** -* `returns` **{Number}** - -### [{{avg}}](lib/math.js#L54) - -Returns the average of all numbers in the given array. - -**Params** - -* `array` **{Array}**: Array of numbers to add up. -* `returns` **{Number}** - -**Example** - -```handlebars -{{avg "[1, 2, 3, 4, 5]"}} - -``` - -### [{{ceil}}](lib/math.js#L69) - -Get the `Math.ceil()` of the given value. - -**Params** - -* `value` **{Number}** -* `returns` **{Number}** - -### [{{divide}}](lib/math.js#L84) - -Divide `a` by `b` - -**Params** - -* `a` **{Number}**: numerator -* `b` **{Number}**: denominator - -### [{{floor}}](lib/math.js#L102) - -Get the `Math.floor()` of the given value. - -**Params** - -* `value` **{Number}** -* `returns` **{Number}** - -### [{{minus}}](lib/math.js#L118) - -Return the difference of `a` minus `b`. - -**Params** - -* `a` **{Number}** -* `b` **{Number}** - -### [{{modulo}}](lib/math.js#L137) - -Get the remainder of a division operation. - -**Params** - -* `a` **{Number}** -* `b` **{Number}** -* `returns` **{Number}** - -### [{{multiply}}](lib/math.js#L157) - -Return the product of `a` times `b`. - -**Params** - -* `a` **{Number}**: factor -* `b` **{Number}**: multiplier -* `returns` **{Number}** - -### [{{plus}}](lib/math.js#L175) - -Add `a` by `b`. - -**Params** - -* `a` **{Number}**: factor -* `b` **{Number}**: multiplier - -### [{{random}}](lib/math.js#L194) - -Generate a random number between two values - -**Params** - -* `min` **{Number}** -* `max` **{Number}** -* `returns` **{String}** - -### [{{remainder}}](lib/math.js#L212) - -Get the remainder when `a` is divided by `b`. - -**Params** - -* `a` **{Number}**: a -* `b` **{Number}**: b - -### [{{round}}](lib/math.js#L224) - -Round the given number. - -**Params** - -* `number` **{Number}** -* `returns` **{Number}** - -### [{{subtract}}](lib/math.js#L241) - -Return the product of `a` minus `b`. - -**Params** - -* `a` **{Number}** -* `b` **{Number}** -* `returns` **{Number}** - -### [{{sum}}](lib/math.js#L263) - -Returns the sum of all numbers in the given array. - -**Params** - -* `array` **{Array}**: Array of numbers to add up. -* `returns` **{Number}** - -**Example** - -```handlebars -{{sum "[1, 2, 3, 4, 5]"}} - -``` - -### [{{times}}](lib/math.js#L286) - -Multiply number `a` by number `b`. - -**Params** - -* `a` **{Number}**: factor -* `b` **{Number}**: multiplier -* `returns` **{Number}** - -## misc - -### [{{option}}](lib/misc.js#L26) - -Return the given value of `prop` from `this.options`. - -**Params** - -* `prop` **{String}** -* `returns` **{any}** - -**Example** - -```handlebars - -{{option "a.b.c"}} - -``` - -### [{{noop}}](lib/misc.js#L39) - -Block helper that renders the block without taking any arguments. - -**Params** - -* `options` **{Object}** -* `returns` **{String}** - -### [{{typeOf}}](lib/misc.js#L59) - -Get the native type of the given `value` - -**Params** - -* `value` **{any}** -* `returns` **{String}**: Returns the type of value. - -**Example** - -```handlebars -{{typeOf 1}} -//=> 'number' -{{typeOf "1"}} -//=> 'string' -{{typeOf "foo"}} -//=> 'string' -``` - -### [{{withHash}}](lib/misc.js#L71) - -Block helper that builds the context for the block -from the options hash. - -**Params** - -* `options` **{Object}**: Handlebars provided options object. - -## number - -### [{{bytes}}](lib/number.js#L24) - -Format a number to it's equivalent in bytes. If a string is passed, it's length will be formatted and returned. - -**Examples:** - -* `'foo' => 3 B` -* `13661855 => 13.66 MB` -* `825399 => 825.39 kB` -* `1396 => 1.4 kB` - -**Params** - -* `number` **{Number|String}** -* `returns` **{String}** - -### [{{addCommas}}](lib/number.js#L61) - -Add commas to numbers - -**Params** - -* `num` **{Number}** -* `returns` **{Number}** - -### [{{phoneNumber}}](lib/number.js#L74) - -Convert a string or number to a formatted phone number. - -**Params** - -* `num` **{Number|String}**: The phone number to format, e.g. `8005551212` -* `returns` **{Number}**: Formatted phone number: `(800) 555-1212` - -### [{{toAbbr}}](lib/number.js#L92) - -Abbreviate numbers to the given number of `precision`. This is for -general numbers, not size in bytes. - -**Params** - -* `number` **{Number}** -* `precision` **{Number}** -* `returns` **{String}** - -### [{{toExponential}}](lib/number.js#L130) - -Returns a string representing the given number in exponential notation. - -**Params** - -* `number` **{Number}** -* `fractionDigits` **{Number}**: Optional. An integer specifying the number of digits to use after the decimal point. Defaults to as many digits as necessary to specify the number. -* `returns` **{Number}** - -**Example** - -```handlebars -{{toExponential number digits}}; -``` - -### [{{toFixed}}](lib/number.js#L153) - -Formats the given number using fixed-point notation. - -**Params** - -* `number` **{Number}** -* `digits` **{Number}**: (Optional) The number of digits to appear after the decimal point; this may be a value between 0 and 20. If this argument is omitted, it is treated as 0. -* `returns` **{String}**: A string representing the given number using fixed-point notation. - -**Example** - -```handlebars -{{toFixed "1.1234" 2}} -//=> '1.12' -``` - -### [{{toFloat}}](lib/number.js#L169) - -**Params** - -* `number` **{Number}** -* `returns` **{Number}** - -### [{{toInt}}](lib/number.js#L179) - -**Params** - -* `number` **{Number}** -* `returns` **{Number}** - -### [{{toPrecision}}](lib/number.js#L196) - -Returns a string representing the `Number` object to the specified precision. - -**Params** - -* `number` **{Number}** -* `precision` **{Number}**: (Optional) An integer specifying the number of significant digits. If precison is not between 1 and 100 (inclusive), it will be coerced to `0`. -* `returns` **{String}**: A string representing a Number object in fixed-point or exponential notation rounded to precision significant digits. - -**Example** - -```handlebars -{{toPrecision "1.1234" 2}} -//=> '1.1' -``` - -## object - -### [{{extend}}](lib/object.js#L18) - -Extend the context with the properties of other objects. -A shallow merge is performed to avoid mutating the context. - -**Params** - -* `objects` **{Object}**: One or more objects to extend. -* `returns` **{Object}** - -### [{{forIn}}](lib/object.js#L55) - -Block helper that iterates over the properties of -an object, exposing each key and value on the context. - -**Params** - -* `context` **{Object}** -* `options` **{Object}** -* `returns` **{String}** - -### [{{forOwn}}](lib/object.js#L81) - -Block helper that iterates over the **own** properties of -an object, exposing each key and value on the context. - -**Params** - -* `obj` **{Object}**: The object to iterate over. -* `options` **{Object}** -* `returns` **{String}** - -### [{{toPath}}](lib/object.js#L106) - -Take arguments and, if they are string or number, convert them to a dot-delineated object property path. - -**Params** - -* `prop` **{String|Number}**: The property segments to assemble (can be multiple). -* `returns` **{String}** - -### [{{get}}](lib/object.js#L128) - -Use property paths (`a.b.c`) to get a value or nested value from -the context. Works as a regular helper or block helper. - -**Params** - -* `prop` **{String}**: The property to get, optionally using dot notation for nested properties. -* `context` **{Object}**: The context object -* `options` **{Object}**: The handlebars options object, if used as a block helper. -* `returns` **{String}** - -### [{{getObject}}](lib/object.js#L149) - -Use property paths (`a.b.c`) to get an object from -the context. Differs from the `get` helper in that this -helper will return the actual object, including the -given property key. Also, this helper does not work as a -block helper. - -**Params** - -* `prop` **{String}**: The property to get, optionally using dot notation for nested properties. -* `context` **{Object}**: The context object -* `returns` **{String}** - -### [{{hasOwn}}](lib/object.js#L167) - -Return true if `key` is an own, enumerable property of the given `context` object. - -**Params** - -* `key` **{String}** -* `context` **{Object}**: The context object. -* `returns` **{Boolean}** - -**Example** - -```handlebars -{{hasOwn context key}} -``` - -### [{{isObject}}](lib/object.js#L183) - -Return true if `value` is an object. - -**Params** - -* `value` **{String}** -* `returns` **{Boolean}** - -**Example** - -```handlebars -{{isObject "foo"}} -//=> false -``` - -### [{{JSONparse}}](lib/object.js#L201) - -Parses the given string using `JSON.parse`. - -**Params** - -* `string` **{String}**: The string to parse - -**Example** - -```handlebars - -{{JSONparse string}} - -``` - -### [{{JSONstringify}}](lib/object.js#L218) - -Stringify an object using `JSON.stringify`. - -**Params** - -* `obj` **{Object}**: Object to stringify -* `returns` **{String}** - -**Example** - -```handlebars - -{{JSONstringify object}} - -``` - -### [{{merge}}](lib/object.js#L235) - -Deeply merge the properties of the given `objects` with the -context object. - -**Params** - -* `object` **{Object}**: The target object. Pass an empty object to shallow clone. -* `objects` **{Object}** -* `returns` **{Object}** - -### [{{pick}}](lib/object.js#L267) - -Pick properties from the context object. - -**Params** - -* `properties` **{Array|String}**: One or more properties to pick. -* `context` **{Object}** -* `options` **{Object}**: Handlebars options object. -* `returns` **{Object}**: Returns an object with the picked values. If used as a block helper, the values are passed as context to the inner block. If no values are found, the context is passed to the inverse block. - -## path - -### [{{absolute}}](lib/path.js#L20) - -Get the directory path segment from the given `filepath`. - -**Params** - -* `ext` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{absolute "docs/toc.md"}} - -``` - -### [{{dirname}}](lib/path.js#L40) - -Get the directory path segment from the given `filepath`. - -**Params** - -* `ext` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{dirname "docs/toc.md"}} - -``` - -### [{{relative}}](lib/path.js#L59) - -Get the relative filepath from `a` to `b`. - -**Params** - -* `a` **{String}** -* `b` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{relative a b}} -``` - -### [{{basename}}](lib/path.js#L81) - -Get the file extension from the given `filepath`. - -**Params** - -* `ext` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{basename "docs/toc.md"}} - -``` - -### [{{stem}}](lib/path.js#L100) - -Get the "stem" from the given `filepath`. - -**Params** - -* `filepath` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{stem "docs/toc.md"}} - -``` - -### [{{extname}}](lib/path.js#L119) - -Get the file extension from the given `filepath`. - -**Params** - -* `filepath` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{extname "docs/toc.md"}} - -``` - -### [{{resolve}}](lib/path.js#L138) - -Resolve an absolute path from the given `filepath`. - -**Params** - -* `filepath` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{resolve "docs/toc.md"}} - -``` - -### [{{segments}}](lib/path.js#L166) - -Get specific (joined) segments of a file path by passing a range of array indices. - -**Params** - -* `filepath` **{String}**: The file path to split into segments. -* `returns` **{String}**: Returns a single, joined file path. - -**Example** - -```handlebars -{{segments "a/b/c/d" "2" "3"}} - - -{{segments "a/b/c/d" "1" "3"}} - - -{{segments "a/b/c/d" "1" "2"}} - -``` - -## regex - -### [{{toRegex}}](lib/regex.js#L19) - -Convert the given string to a regular expression. - -**Params** - -* `str` **{String}** -* `returns` **{RegExp}** - -**Example** - -```handlebars -{{toRegex "foo"}} - -``` - -### [{{test}}](lib/regex.js#L42) - -Returns true if the given `str` matches the given regex. A regex can be passed on the context, or using the [toRegex](#toregex) helper as a subexpression. - -**Params** - -* `str` **{String}** -* `returns` **{RegExp}** - -**Example** - -```handlebars -{{test "bar" (toRegex "foo")}} - -{{test "foobar" (toRegex "foo")}} - -{{test "foobar" (toRegex "^foo$")}} - -``` - -## string - -### [{{append}}](lib/string.js#L22) - -Append the specified `suffix` to the given string. - -**Params** - -* `str` **{String}** -* `suffix` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars - -{{append item.stem ".html"}} - -``` - -### [{{camelcase}}](lib/string.js#L41) - -camelCase the characters in the given `string`. - -**Params** - -* `string` **{String}**: The string to camelcase. -* `returns` **{String}** - -**Example** - -```handlebars -{{camelcase "foo bar baz"}}; - -``` - -### [{{capitalize}}](lib/string.js#L60) - -Capitalize the first word in a sentence. - -**Params** - -* `str` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{capitalize "foo bar baz"}} - -``` - -### [{{capitalizeAll}}](lib/string.js#L77) - -Capitalize all words in a string. - -**Params** - -* `str` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{capitalizeAll "foo bar baz"}} - -``` - -### [{{center}}](lib/string.js#L95) - -Center a string using non-breaking spaces - -**Params** - -* `str` **{String}** -* `spaces` **{String}** -* `returns` **{String}** - -### [{{chop}}](lib/string.js#L125) - -Like trim, but removes both extraneous whitespace **and non-word characters** from the beginning and end of a string. - -**Params** - -* `string` **{String}**: The string to chop. -* `returns` **{String}** - -**Example** - -```handlebars -{{chop "_ABC_"}} - - -{{chop "-ABC-"}} - - -{{chop " ABC "}} - -``` - -### [{{dashcase}}](lib/string.js#L143) - -dash-case the characters in `string`. Replaces non-word characters and periods with hyphens. - -**Params** - -* `string` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{dashcase "a-b-c d_e"}} - -``` - -### [{{dotcase}}](lib/string.js#L162) - -dot.case the characters in `string`. - -**Params** - -* `string` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{dotcase "a-b-c d_e"}} - -``` - -### [{{downcase}}](lib/string.js#L182) - -Lowercase all of the characters in the given string. Alias for [lowercase](#lowercase). - -**Params** - -* `string` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{downcase "aBcDeF"}} - -``` - -### [{{ellipsis}}](lib/string.js#L202) - -Truncates a string to the specified `length`, and appends it with an elipsis, `…`. - -**Params** - -* `str` **{String}** -* `length` **{Number}**: The desired length of the returned string. -* `returns` **{String}**: The truncated string. - -**Example** - -```handlebars -{{ellipsis (sanitize "foo bar baz"), 7}} - -{{ellipsis "foo bar baz", 7}} - -``` - -### [{{hyphenate}}](lib/string.js#L223) - -Replace spaces in a string with hyphens. - -**Params** - -* `str` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{hyphenate "foo bar baz qux"}} - -``` - -### [{{isString}}](lib/string.js#L240) - -Return true if `value` is a string. - -**Params** - -* `value` **{String}** -* `returns` **{Boolean}** - -**Example** - -```handlebars -{{isString "foo"}} - -``` - -### [{{lowercase}}](lib/string.js#L256) - -Lowercase all characters in the given string. - -**Params** - -* `str` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{lowercase "Foo BAR baZ"}} - -``` - -### [{{occurrences}}](lib/string.js#L278) - -Return the number of occurrences of `substring` within the given `string`. - -**Params** - -* `str` **{String}** -* `substring` **{String}** -* `returns` **{Number}**: Number of occurrences - -**Example** - -```handlebars -{{occurrences "foo bar foo bar baz" "foo"}} - -``` - -### [{{pascalcase}}](lib/string.js#L303) - -PascalCase the characters in `string`. - -**Params** - -* `string` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{pascalcase "foo bar baz"}} - -``` - -### [{{pathcase}}](lib/string.js#L323) - -path/case the characters in `string`. - -**Params** - -* `string` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{pathcase "a-b-c d_e"}} - -``` - -### [{{plusify}}](lib/string.js#L343) - -Replace spaces in the given string with pluses. - -**Params** - -* `str` **{String}**: The input string -* `returns` **{String}**: Input string with spaces replaced by plus signs - -**Example** - -```handlebars -{{plusify "foo bar baz"}} - -``` - -### [{{prepend}}](lib/string.js#L363) - -Prepends the given `string` with the specified `prefix`. - -**Params** - -* `str` **{String}** -* `prefix` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars - -{{prepend val "foo-"}} - -``` - -### [{{raw}}](lib/string.js#L385) - -Render a block without processing mustache templates inside the block. - -**Params** - -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars -{{{{#raw}}}} -{{foo}} -{{{{/raw}}}} - -``` - -### [{{remove}}](lib/string.js#L413) - -Remove all occurrences of `substring` from the given `str`. - -**Params** - -* `str` **{String}** -* `substring` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{remove "a b a b a b" "a "}} - -``` - -### [{{removeFirst}}](lib/string.js#L432) - -Remove the first occurrence of `substring` from the given `str`. - -**Params** - -* `str` **{String}** -* `substring` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{remove "a b a b a b" "a"}} - -``` - -### [{{replace}}](lib/string.js#L452) - -Replace all occurrences of substring `a` with substring `b`. - -**Params** - -* `str` **{String}** -* `a` **{String}** -* `b` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{replace "a b a b a b" "a" "z"}} - -``` - -### [{{replaceFirst}}](lib/string.js#L473) - -Replace the first occurrence of substring `a` with substring `b`. - -**Params** - -* `str` **{String}** -* `a` **{String}** -* `b` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{replace "a b a b a b" "a" "z"}} - -``` - -### [{{reverse}}](lib/string.js#L492) - -Reverse a string. - -**Params** - -* `str` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{reverse "abcde"}} - -``` - -### [{{sentence}}](lib/string.js#L509) - -Sentence case the given string - -**Params** - -* `str` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{sentence "hello world. goodbye world."}} - -``` - -### [{{snakecase}}](lib/string.js#L528) - -snake_case the characters in the given `string`. - -**Params** - -* `string` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{snakecase "a-b-c d_e"}} - -``` - -### [{{split}}](lib/string.js#L547) - -Split `string` by the given `character`. - -**Params** - -* `string` **{String}**: The string to split. -* `returns` **{String}** `character`: Default is an empty string. - -**Example** - -```handlebars -{{split "a,b,c" ","}} - -``` - -### [{{startsWith}}](lib/string.js#L572) - -Tests whether a string begins with the given prefix. - -**Params** - -* `prefix` **{String}** -* `testString` **{String}** -* `options` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{#startsWith "Goodbye" "Hello, world!"}} - Whoops -{{else}} - Bro, do you even hello world? -{{/startsWith}} -``` - -### [{{titleize}}](lib/string.js#L596) - -Title case the given string. - -**Params** - -* `str` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{titleize "this is title case"}} - -``` - -### [{{trim}}](lib/string.js#L623) - -Removes extraneous whitespace from the beginning and end of a string. - -**Params** - -* `string` **{String}**: The string to trim. -* `returns` **{String}** - -**Example** - -```handlebars -{{trim " ABC "}} - -``` - -### [{{trimLeft}}](lib/string.js#L639) - -Removes extraneous whitespace from the beginning of a string. - -**Params** - -* `string` **{String}**: The string to trim. -* `returns` **{String}** - -**Example** - -```handlebars -{{trim " ABC "}} - -``` - -### [{{trimRight}}](lib/string.js#L657) - -Removes extraneous whitespace from the end of a string. - -**Params** - -* `string` **{String}**: The string to trim. -* `returns` **{String}** - -**Example** - -```handlebars -{{trimRight " ABC "}} - -``` - -### [{{truncate}}](lib/string.js#L680) - -Truncate a string to the specified `length`. Also see [ellipsis](#ellipsis). - -**Params** - -* `str` **{String}** -* `limit` **{Number}**: The desired length of the returned string. -* `suffix` **{String}**: Optionally supply a string to use as a suffix to denote when the string has been truncated. Otherwise an ellipsis (`…`) will be used. -* `returns` **{String}**: The truncated string. - -**Example** - -```handlebars -truncate("foo bar baz", 7); - -truncate(sanitize("foo bar baz", 7)); - -``` - -### [{{truncateWords}}](lib/string.js#L712) - -Truncate a string to have the specified number of words. Also see [truncate](#truncate). - -**Params** - -* `str` **{String}** -* `limit` **{Number}**: The desired length of the returned string. -* `suffix` **{String}**: Optionally supply a string to use as a suffix to denote when the string has been truncated. -* `returns` **{String}**: The truncated string. - -**Example** - -```handlebars -truncateWords("foo bar baz", 1); - -truncateWords("foo bar baz", 2); - -truncateWords("foo bar baz", 3); - -``` - -### [{{upcase}}](lib/string.js#L742) - -Uppercase all of the characters in the given string. Alias for [uppercase](#uppercase). - -**Params** - -* `string` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{upcase "aBcDeF"}} - -``` - -### [{{uppercase}}](lib/string.js#L763) - -Uppercase all of the characters in the given string. If used as a block helper it will uppercase the entire block. This helper does not support inverse blocks. - -**Params** - -* `str` **{String}**: The string to uppercase -* `options` **{Object}**: Handlebars options object -* `returns` **{String}** - -**Example** - -```handlebars -{{uppercase "aBcDeF"}} - -``` - -## url - -### [{{encodeURI}}](lib/url.js#L19) - -Encodes a Uniform Resource Identifier (URI) component -by replacing each instance of certain characters by -one, two, three, or four escape sequences representing -the UTF-8 encoding of the character. - -**Params** - -* `str` **{String}**: The un-encoded string -* `returns` **{String}**: The endcoded string - -### [{{escape}}](lib/url.js#L34) - -Escape the given string by replacing characters with escape sequences. -Useful for allowing the string to be used in a URL, etc. - -**Params** - -* `str` **{String}** -* `returns` **{String}**: Escaped string. - -### [{{decodeURI}}](lib/url.js#L48) - -Decode a Uniform Resource Identifier (URI) component. - -**Params** - -* `str` **{String}** -* `returns` **{String}** - -### [{{url_encode}}](lib/url.js#L59) - -Alias for [encodeURI](#encodeuri). - -### [{{url_decode}}](lib/url.js#L68) - -Alias for [decodeURI](#decodeuri). - -### [{{urlResolve}}](lib/url.js#L82) - -Take a base URL, and a href URL, and resolve them as a -browser would for an anchor tag. - -**Params** - -* `base` **{String}** -* `href` **{String}** -* `returns` **{String}** - -### [{{urlParse}}](lib/url.js#L94) - -Parses a `url` string into an object. - -**Params** - -* `str` **{String}**: URL string -* `returns` **{String}**: Returns stringified JSON - -### [{{stripQuerystring}}](lib/url.js#L106) - -Strip the query string from the given `url`. - -**Params** - -* `url` **{String}** -* `returns` **{String}**: the url without the queryString - -### [{{stripProtocol}}](lib/url.js#L126) - -Strip protocol from a `url`. Useful for displaying media that may have an 'http' protocol on secure connections. - -**Params** - -* `str` **{String}** -* `returns` **{String}**: the url with http protocol stripped - -**Example** - -```handlebars - -{{stripProtocol url}} - -``` - -*** - -## Utils - -The following utils are exposed on `.utils`. - -### [{{changecase}}](lib/utils/index.js#L54) - -Change casing on the given `string`, optionally passing a delimiter to use between words in the returned string. - -**Params** - -* `string` **{String}**: The string to change. -* `returns` **{String}** - -**Example** - -```handlebars -utils.changecase('fooBarBaz'); -//=> 'foo bar baz' - -utils.changecase('fooBarBaz' '-'); -//=> 'foo-bar-baz' -``` - -### [{{random}}](lib/utils/index.js#L80) - -Generate a random number - -**Params** - -* `min` **{Number}** -* `max` **{Number}** -* `returns` **{Number}** - -*** - -## History - -## [v0.10.0](https://github.com/helpers/handlebars-helpers/compare/v0.9.0...v0.10.0) - 2017-11-17 - -**changes** - -* adds `unique` to array helpers -* updates `css` helper to ensure that path.join() is not called on an absolute URL. - -## [v0.9.0](https://github.com/helpers/handlebars-helpers/compare/v0.8.4...v0.9.0) - 2017-07-03 - -**changes** - -* all unit tests now use assert instead of should -* remove `fileSize` helper in favor of new `bytes` helper, which does the same thing, but returns `B` instead of `byte` or `bytes`. -* JSONParse helper is no longer a block helper. It now returns an object, which can be used as a subexpression to achieve the same behavior as before. -* adds better error handling for path helpers, since node.js errors are terrible. We have a better way to handle errors that will be implemented in a near future release. -* adds inline helper support to `isEmpty`, so it can now be used as an inline or block helper -* adds `raw` helper -* adds regex helpers -* adds inline helper support to most of the comparison helpers, so they can now be used as inline or block helpers -* adds `pluck` helper to array helpers -* adds `prepend` and `append` helpers to string helpers -* adds `isTruthy` and `isFalsey` comparison helpers -* adds `escape` and `url_encode` and `url_decode` URL helpers -* adds `attr` helper to html helpers -* adds `year` helper to date helpers -* adds `typeOf` and `frame` helpers to misc helpers -* adds `abs`, `minus`, `modulo`, `plus`, `times` to math helpers -* moves `ellipsis` helper from `html` helpers to string helpers -* moves `truncate` helper from `html` helpers to string helpers -* moves `reverse` helper from `string` helpers to array helpers -* differentiate `eq` and `is` helpers so that `eq` is strict equality and `is` is not -* removes `mm` helper, use `match` instead - -## [v0.8.4](https://github.com/helpers/handlebars-helpers/compare/v0.8.3...v0.8.4) - 2017-07-03 - -**changes** - -* removes strlen helper in favor of fixing the length helper - -## [v0.8.3](https://github.com/helpers/handlebars-helpers/compare/v0.8.2...v0.8.3) - 2017-07-03 - -**changes** - -* adds strlen helper -* adds itemAt helper -* clean up code comments for array helpers - -## [v0.8.2](https://github.com/helpers/handlebars-helpers/compare/v0.8.1...v0.8.2) - 2017-03-30 - -**changes** - -* documentation updates -* fixes md helper to use sync by default - -## [v0.8.1](https://github.com/helpers/handlebars-helpers/compare/v0.8.0...v0.8.1) - 2017-03-30 - -**changes** - -* fixes sorting in withSort helper. see https://github.com/helpers/handlebars-helpers/pull/245 -* adds toPath helper -* handle null inputs in number helpers -* adds stripProtocol helper - -## [v0.8.0](https://github.com/helpers/handlebars-helpers/compare/v0.7.6...v0.8.0) - 2017-01-25 - -**changes** - -* handle string arguments in list helpers -* adds JSONParse helper as an alias for parseJSON - -## [v0.7.6](https://github.com/helpers/handlebars-helpers/compare/v0.7.0...v0.7.6) - 2017-01-08 - -**changes** - -* fixes markdown helpers. see https://github.com/helpers/handlebars-helpers/pull/226 -* documentation improvements and other minor fixes - -## [v0.7.0](https://github.com/helpers/handlebars-helpers/compare/v0.6.0...v0.7.0) - 2016-07-16 - -**changes** - -* The [or](#or) helper can now take a variable number of arguments - -## [v0.6.0](https://github.com/helpers/handlebars-helpers/compare/v0.3.3...v0.6.0) - 2016-05-13 - -**changes** - -* the main export is now a function that takes a name or array of names of helper types to load. Example `helpers(['string', 'array'])` will load only the `string` and `array` helpers -* helper types can alternatively be accessed as methods. example - `helpers.path()` will return all of the path helpers. -* handlebars may be provided by the user. if not provided it will fall back to the `handlebars-helpers` handlebars -* helpers are now as generic as possible, with little to no code related to assemble, grunt, etc. -* helpers are lazy-loaded using getters for improved performance -* Once tests are added for the `md` and `markdown` helpers, we'll have 100% unit test coverage on helpers - -## [v0.3.3](https://github.com/helpers/handlebars-helpers/compare/v0.3.2...v0.3.3) - 2013-09-03 - -**changes** - -* Adds fileSize helper. -* Adds startsWith helper. - -## [v0.3.2](https://github.com/helpers/handlebars-helpers/compare/v0.3.0...v0.3.2) - 2013-08-20 - -**changes** - -* Adds glob helper. - -## [v0.3.0](https://github.com/helpers/handlebars-helpers/compare/v0.2.4...v0.3.0) - 2013-07-30 - -**changes** - -* The project has been refactored, cleaned up, and full documentation has bee put up at http://assemble.io - -## [v0.2.4](https://github.com/helpers/handlebars-helpers/compare/v0.2.3...v0.2.4) - 2013-05-11 - -**changes** - -* Adding object globbing utility functions to be used in helpers later. - -## [v0.2.3](https://github.com/helpers/handlebars-helpers/compare/v0.2.0...v0.2.3) - 2013-05-11 - -**changes** - -* File globbing added to some helpers. Including md and some file helpers. - -## [v0.2.0](https://github.com/helpers/handlebars-helpers/compare/v0.1.32...v0.2.0) - 2013-05-07 - -**changes** - -* A bunch of new tests for markdown and special helpers. -* Refactored most of the rest of the helpers to separate functions from Handlebars registration. - -## [v0.1.32](https://github.com/helpers/handlebars-helpers/compare/v0.1.31...v0.1.32) - 2013-05-02 - -**changes** - -* Updates utils and a number of helpers, including value, property, and stringify. - -## [v0.1.31](https://github.com/helpers/handlebars-helpers/compare/v0.1.30...v0.1.31) - 2013-04-21 - -**changes** - -* Fixes relative helper - -## [v0.1.30](https://github.com/helpers/handlebars-helpers/compare/v0.1.25...v0.1.30) - 2013-04-20 - -**changes** - -* Refactoring helpers-collection module to separate the functions from the Handlebars helper registration process. - -## [v0.1.25](https://github.com/helpers/handlebars-helpers/compare/v0.1.21...v0.1.25) - 2013-04-16 - -**changes** - -* Adding defineSection and renderSection helpers to try to get sections populated in a layout from the page. - -## [v0.1.21](https://github.com/helpers/handlebars-helpers/compare/v0.1.20...v0.1.21) - 2013-04-07 - -**changes** - -* Add markdown helpers back, add more tests. - -## [v0.1.20](https://github.com/helpers/handlebars-helpers/compare/v0.1.11...v0.1.20) - 2013-04-06 - -**changes** - -* Generalized helpers structure, externalized utilities. - -## [v0.1.11](https://github.com/helpers/handlebars-helpers/compare/v0.1.10...v0.1.11) - 2013-04-05 - -**changes** - -* New authors and gist helpers, general cleanup and new tests. - -## [v0.1.10](https://github.com/helpers/handlebars-helpers/compare/v0.1.8...v0.1.10) - 2013-04-04 - -**changes** - -* Externalized utility javascript from helpers.js - -## [v0.1.8](https://github.com/helpers/handlebars-helpers/compare/v0.1.7...v0.1.8) - 2013-03-28 - -**changes** - -* Gruntfile updated with mocha tests for 71 helpers, bug fixes. - -## [v0.1.7](https://github.com/helpers/handlebars-helpers/compare/v0.1.3...v0.1.7) - 2013-03-18 - -**changes** - -* New path helper 'relative', for resolving relative path from one absolute path to another. - -## [v0.1.3](https://github.com/helpers/handlebars-helpers/compare/v0.1.2...v0.1.3) - 2013-03-16 - -**changes** - -* New helpers, 'formatPhoneNumber' and 'eachProperty' - -## [v0.1.2](https://github.com/helpers/handlebars-helpers/compare/v0.1.0...v0.1.2) - 2013-03-15 - -**changes** - -* Update README.md with documentation, examples. - -## [v0.1.0] - 2013-03-06 - -**changes** - -* First commit. - -## About - -### Related projects - -* [assemble](https://www.npmjs.com/package/assemble): Get the rocks out of your socks! Assemble makes you fast at creating web projects… [more](https://github.com/assemble/assemble) | [homepage](https://github.com/assemble/assemble "Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit") -* [template-helpers](https://www.npmjs.com/package/template-helpers): Generic JavaScript helpers that can be used with any template engine. Handlebars, Lo-Dash, Underscore, or… [more](https://github.com/jonschlinkert/template-helpers) | [homepage](https://github.com/jonschlinkert/template-helpers "Generic JavaScript helpers that can be used with any template engine. Handlebars, Lo-Dash, Underscore, or any engine that supports helper functions.") -* [utils](https://www.npmjs.com/package/utils): Fast, generic JavaScript/node.js utility functions. | [homepage](https://github.com/jonschlinkert/utils "Fast, generic JavaScript/node.js utility functions.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -### Release history - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Brian Woodward** - -* [github/doowb](https://github.com/doowb) -* [twitter/doowb](https://twitter.com/doowb) - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -When this project was created some helpers were sourced from [Swag, by Elving Rodriguez](http://elving.github.com/swag/). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 17, 2017._ \ No newline at end of file diff --git a/node_modules/handlebars-helpers/index.js b/node_modules/handlebars-helpers/index.js deleted file mode 100644 index 4ede89931..000000000 --- a/node_modules/handlebars-helpers/index.js +++ /dev/null @@ -1,61 +0,0 @@ -/*! - * handlebars-helpers - * - * Copyright (c) 2013-2017, Jon Schlinkert, Brian Woodward. - * Released under the MIT License. - */ - -'use strict'; - -var forIn = require('for-in'); -var define = require('define-property'); -var lib = require('./lib/'); - -/** - * Expose helpers - */ - -module.exports = function helpers(groups, options) { - if (typeof groups === 'string') { - groups = [groups]; - } else if (!Array.isArray(groups)) { - options = groups; - groups = null; - } - - options = options || {}; - var hbs = options.handlebars || options.hbs || require('handlebars'); - define(module.exports, 'handlebars', hbs); - - if (groups) { - groups.forEach(function(key) { - hbs.registerHelper(lib[key]); - }); - } else { - forIn(lib, function(group, key) { - hbs.registerHelper(group); - }); - } - - return hbs.helpers; -}; - -/** - * Expose helper groups - */ - -forIn(lib, function(group, key) { - define(module.exports, key, function(options) { - options = options || {}; - var hbs = options.handlebars || options.hbs || require('handlebars'); - define(module.exports, 'handlebars', hbs); - hbs.registerHelper(group); - return hbs.helpers; - }); -}); - -/** - * Expose `utils` - */ - -module.exports.utils = require('./lib/utils'); diff --git a/node_modules/handlebars-helpers/lib/array.js b/node_modules/handlebars-helpers/lib/array.js deleted file mode 100644 index 1e0fc5279..000000000 --- a/node_modules/handlebars-helpers/lib/array.js +++ /dev/null @@ -1,822 +0,0 @@ -'use strict'; - -var util = require('handlebars-utils'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Returns all of the items in an array after the specified index. - * Opposite of [before](#before). - * - * ```handlebars - * - * {{after array 1}} - * - * ``` - * @param {Array} `array` Collection - * @param {Number} `n` Starting index (number of items to exclude) - * @return {Array} Array exluding `n` items. - * @api public - */ - -helpers.after = function(array, n) { - if (util.isUndefined(array)) return ''; - return array.slice(n); -}; - -/** - * Cast the given `value` to an array. - * - * ```handlebars - * {{arrayify "foo"}} - * - * ``` - * @param {any} `value` - * @return {Array} - * @api public - */ - -helpers.arrayify = function(value) { - return value ? (Array.isArray(value) ? value : [value]) : []; -}; - -/** - * Return all of the items in the collection before the specified - * count. Opposite of [after](#after). - * - * ```handlebars - * - * {{before array 2}} - * - * ``` - * @param {Array} `array` - * @param {Number} `n` - * @return {Array} Array excluding items after the given number. - * @api public - */ - -helpers.before = function(array, n) { - if (util.isUndefined(array)) return ''; - return array.slice(0, -n); -}; - -/** - * ```handlebars - * - * {{#eachIndex array}} - * {{item}} is {{index}} - * {{/eachIndex}} - * ``` - * @param {Array} `array` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.eachIndex = function(array, options) { - var result = ''; - for (var i = 0; i < array.length; i++) { - result += options.fn({item: array[i], index: i}); - } - return result; -}; - -/** - * Block helper that filters the given array and renders the block for values that - * evaluate to `true`, otherwise the inverse block is returned. - * - * ```handlebars - * - * {{#filter array "foo"}}AAA{{else}}BBB{{/filter}} - * - * ``` - * @param {Array} `array` - * @param {any} `value` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.filter = function(array, value, options) { - var content = ''; - var results = []; - - // filter on a specific property - var prop = options.hash && (options.hash.property || options.hash.prop); - if (prop) { - results = array.filter(function(val) { - return value === utils.get(val, prop); - }); - } else { - - // filter on a string value - results = array.filter(function(v) { - return value === v; - }); - } - - if (results && results.length > 0) { - for (var i = 0; i < results.length; i++) { - content += options.fn(results[i]); - } - return content; - } - return options.inverse(this); -}; - -/** - * Returns the first item, or first `n` items of an array. - * - * ```handlebars - * {{first "['a', 'b', 'c', 'd', 'e']" 2}} - * - * ``` - * @param {Array} `array` - * @param {Number} `n` Number of items to return, starting at `0`. - * @return {Array} - * @api public - */ - -helpers.first = function(array, n) { - if (util.isUndefined(array)) return ''; - if (!utils.isNumber(n)) { - return array[0]; - } - return array.slice(0, n); -}; - -/** - * Iterates over each item in an array and exposes the current item - * in the array as context to the inner block. In addition to - * the current array item, the helper exposes the following variables - * to the inner block: - * - * - `index` - * - `total` - * - `isFirst` - * - `isLast` - * - * Also, `@index` is exposed as a private variable, and additional - * private variables may be defined as hash arguments. - * - * ```handlebars - * - * - * {{#forEach accounts}} - * - * {{ name }} - * {{#unless isLast}}, {{/unless}} - * {{/forEach}} - * ``` - * @source - * @param {Array} `array` - * @return {String} - * @block - * @api public - */ - -helpers.forEach = function(array, options) { - var data = utils.createFrame(options, options.hash); - var len = array.length; - var buffer = ''; - var i = -1; - - while (++i < len) { - var item = array[i]; - data.index = i; - item.index = i + 1; - item.total = len; - item.isFirst = i === 0; - item.isLast = i === (len - 1); - buffer += options.fn(item, {data: data}); - } - return buffer; -}; - -/** - * Block helper that renders the block if an array has the - * given `value`. Optionally specify an inverse block to render - * when the array does not have the given value. - * - * ```handlebars - * - * {{#inArray array "d"}} - * foo - * {{else}} - * bar - * {{/inArray}} - * - * ``` - * @param {Array} `array` - * @param {any} `value` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.inArray = function(array, value, options) { - return util.value(util.indexOf(array, value) > -1, this, options); -}; - -/** - * Returns true if `value` is an es5 array. - * - * ```handlebars - * {{isArray "abc"}} - * - * - * - * {{isArray array}} - * - * ``` - * @param {any} `value` The value to test. - * @return {Boolean} - * @api public - */ - -helpers.isArray = function(value) { - return Array.isArray(value); -}; - -/** - * Returns the item from `array` at index `idx`. - * - * ```handlebars - * - * {{itemAt array 1}} - * - * ``` - * @param {Array} `array` - * @param {Number} `idx` - * @return {any} `value` - * @block - * @api public - */ - -helpers.itemAt = function(array, idx) { - array = util.result(array); - if (Array.isArray(array)) { - idx = utils.isNumber(idx) ? +idx : 0; - if (idx < 0) { - return array[array.length + idx]; - } - if (idx < array.length) { - return array[idx]; - } - } -}; - -/** - * Join all elements of array into a string, optionally using a - * given separator. - * - * ```handlebars - * - * {{join array}} - * - * - * {{join array '-'}} - * - * ``` - * @param {Array} `array` - * @param {String} `separator` The separator to use. Defaults to `, `. - * @return {String} - * @api public - */ - -helpers.join = function(array, separator) { - if (typeof array === 'string') return array; - if (!Array.isArray(array)) return ''; - separator = util.isString(separator) ? separator : ', '; - return array.join(separator); -}; - -/** - * Returns true if the the length of the given `value` is equal - * to the given `length`. Can be used as a block or inline helper. - * - * @param {Array|String} `value` - * @param {Number} `length` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.equalsLength = function(value, length, options) { - if (util.isOptions(length)) { - options = length; - length = 0; - } - - var len = 0; - if (typeof value === 'string' || Array.isArray(value)) { - len = value.length; - } - - return util.value(len === length, this, options); -}; - -/** - * Returns the last item, or last `n` items of an array or string. - * Opposite of [first](#first). - * - * ```handlebars - * - * - * {{last value}} - * - * - * {{last value 2}} - * - * - * {{last value 3}} - * - * ``` - * @param {Array|String} `value` Array or string. - * @param {Number} `n` Number of items to return from the end of the array. - * @return {Array} - * @api public - */ - -helpers.last = function(value, n) { - if (!Array.isArray(value) && typeof value !== 'string') { - return ''; - } - if (!utils.isNumber(n)) { - return value[value.length - 1]; - } - return value.slice(-Math.abs(n)); -}; - -/** - * Returns the length of the given string or array. - * - * ```handlebars - * {{length '["a", "b", "c"]'}} - * - * - * - * {{length myArray}} - * - * - * - * {{length myObject}} - * - * ``` - * @param {Array|Object|String} `value` - * @return {Number} The length of the value. - * @api public - */ - -helpers.length = function(value) { - if (util.isObject(value) && !util.isOptions(value)) { - value = Object.keys(value); - } - if (typeof value === 'string' || Array.isArray(value)) { - return value.length; - } - return 0; -}; - -/** - * Alias for [equalsLength](#equalsLength) - * - * @api public - */ - -helpers.lengthEqual = helpers.equalsLength; - -/** - * Returns a new array, created by calling `function` on each - * element of the given `array`. For example, - * - * ```handlebars - * - * {{map array double}} - * - * ``` - * - * @param {Array} `array` - * @param {Function} `fn` - * @return {String} - * @api public - */ - -helpers.map = function(array, iter) { - if (!Array.isArray(array)) return ''; - var len = array.length; - var res = new Array(len); - var i = -1; - - if (typeof iter !== 'function') { - return array; - } - - while (++i < len) { - res[i] = iter(array[i], i, array); - } - return res; -}; - -/** - * Map over the given object or array or objects and create an array of values - * from the given `prop`. Dot-notation may be used (as a string) to get - * nested properties. - * - * ```handlebars - * // {{pluck items "data.title"}} - * - * ``` - * @param {Array|Object} `collection` - * @param {Function} `prop` - * @return {String} - * @api public - */ - -helpers.pluck = function(arr, prop) { - if (util.isUndefined(arr)) return ''; - var res = []; - for (var i = 0; i < arr.length; i++) { - var val = utils.get(arr[i], prop); - if (typeof val !== 'undefined') { - res.push(val); - } - } - return res; -}; - -/** - * Reverse the elements in an array, or the characters in a string. - * - * ```handlebars - * - * {{reverse value}} - * - * - * {{reverse value}} - * - * ``` - * @param {Array|String} `value` - * @return {Array|String} Returns the reversed string or array. - * @api public - */ - -helpers.reverse = function(val) { - if (Array.isArray(val)) { - val.reverse(); - return val; - } - if (val && typeof val === 'string') { - return val.split('').reverse().join(''); - } -}; - -/** - * Block helper that returns the block if the callback returns true - * for some value in the given array. - * - * ```handlebars - * - * {{#some array isString}} - * Render me if the array has a string. - * {{else}} - * Render me if it doesn't. - * {{/some}} - * - * ``` - * @param {Array} `array` - * @param {Function} `iter` Iteratee - * @param {Options} Handlebars provided options object - * @return {String} - * @block - * @api public - */ - -helpers.some = function(array, iter, options) { - if (Array.isArray(array)) { - for (var i = 0; i < array.length; i++) { - if (iter(array[i], i, array)) { - return options.fn(this); - } - } - } - return options.inverse(this); -}; - -/** - * Sort the given `array`. If an array of objects is passed, - * you may optionally pass a `key` to sort on as the second - * argument. You may alternatively pass a sorting function as - * the second argument. - * - * ```handlebars - * - * {{sort array}} - * - * ``` - * - * @param {Array} `array` the array to sort. - * @param {String|Function} `key` The object key to sort by, or sorting function. - * @api public - */ - -helpers.sort = function(array, options) { - if (!Array.isArray(array)) return ''; - if (utils.get(options, 'hash.reverse')) { - return array.sort().reverse(); - } - return array.sort(); -}; - -/** - * Sort an `array`. If an array of objects is passed, - * you may optionally pass a `key` to sort on as the second - * argument. You may alternatively pass a sorting function as - * the second argument. - * - * ```handlebars - * - * {{sortBy array "a"}} - * - * ``` - * - * @param {Array} `array` the array to sort. - * @param {String|Function} `props` One or more properties to sort by, or sorting functions to use. - * @api public - */ - -helpers.sortBy = function(array, prop, options) { - if (!Array.isArray(array)) return ''; - var args = [].slice.call(arguments); - // remove handlebars options - args.pop(); - - if (!util.isString(prop) && typeof prop !== 'function') { - return array.sort(); - } - return utils.sortBy.apply(null, args); -}; - -/** - * Use the items in the array _after_ the specified index - * as context inside a block. Opposite of [withBefore](#withBefore). - * - * ```handlebars - * - * {{#withAfter array 3}} - * {{this}} - * {{/withAfter}} - * - * ``` - * @param {Array} `array` - * @param {Number} `idx` - * @param {Object} `options` - * @return {Array} - * @block - * @api public - */ - -helpers.withAfter = function(array, idx, options) { - if (!Array.isArray(array)) return ''; - array = array.slice(idx); - var result = ''; - - for (var i = 0; i < array.length; i++) { - result += options.fn(array[i]); - } - return result; -}; - -/** - * Use the items in the array _before_ the specified index - * as context inside a block. Opposite of [withAfter](#withAfter). - * - * ```handlebars - * - * {{#withBefore array 3}} - * {{this}} - * {{/withBefore}} - * - * ``` - * @param {Array} `array` - * @param {Number} `idx` - * @param {Object} `options` - * @return {Array} - * @block - * @api public - */ - -helpers.withBefore = function(array, idx, options) { - if (!Array.isArray(array)) return ''; - array = array.slice(0, -idx); - var result = ''; - - for (var i = 0; i < array.length; i++) { - result += options.fn(array[i]); - } - return result; -}; - -/** - * Use the first item in a collection inside a handlebars - * block expression. Opposite of [withLast](#withLast). - * - * ```handlebars - * - * {{#withFirst array}} - * {{this}} - * {{/withFirst}} - * - * ``` - * @param {Array} `array` - * @param {Number} `idx` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.withFirst = function(array, idx, options) { - if (util.isUndefined(array)) return ''; - array = util.result(array); - - if (!util.isUndefined(idx)) { - idx = parseFloat(util.result(idx)); - } - - if (util.isUndefined(idx)) { - options = idx; - return options.fn(array[0]); - } - - array = array.slice(0, idx); - var result = ''; - for (var i = 0; i < array.length; i++) { - result += options.fn(array[i]); - } - return result; -}; - -/** - * Block helper that groups array elements by given group `size`. - * - * ```handlebars - * - * {{#withGroup array 4}} - * {{#each this}} - * {{.}} - * {{each}} - *
      - * {{/withGroup}} - * - * - * - * ``` - * @param {Array} `array` The array to iterate over - * @param {Number} `size` The desired length of each array "group" - * @param {Object} `options` Handlebars options - * @return {String} - * @block - * @api public - */ - -helpers.withGroup = function(array, size, options) { - var result = ''; - if (Array.isArray(array) && array.length > 0) { - var subcontext = []; - for (var i = 0; i < array.length; i++) { - if (i > 0 && (i % size) === 0) { - result += options.fn(subcontext); - subcontext = []; - } - subcontext.push(array[i]); - } - result += options.fn(subcontext); - } - return result; -}; - -/** - * Use the last item or `n` items in an array as context inside a block. - * Opposite of [withFirst](#withFirst). - * - * ```handlebars - * - * {{#withLast array}} - * {{this}} - * {{/withLast}} - * - * ``` - * @param {Array} `array` - * @param {Number} `idx` The starting index. - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.withLast = function(array, idx, options) { - if (util.isUndefined(array)) return ''; - array = util.result(array); - - if (!util.isUndefined(idx)) { - idx = parseFloat(util.result(idx)); - } - - if (util.isUndefined(idx)) { - options = idx; - return options.fn(array[array.length - 1]); - } - - array = array.slice(-idx); - var len = array.length, i = -1; - var result = ''; - while (++i < len) { - result += options.fn(array[i]); - } - return result; -}; - -/** - * Block helper that sorts a collection and exposes the sorted - * collection as context inside the block. - * - * ```handlebars - * - * {{#withSort array}}{{this}}{{/withSort}} - * - * ``` - * @param {Array} `array` - * @param {String} `prop` - * @param {Object} `options` Specify `reverse="true"` to reverse the array. - * @return {String} - * @block - * @api public - */ - -helpers.withSort = function(array, prop, options) { - if (util.isUndefined(array)) return ''; - var result = ''; - - if (util.isUndefined(prop)) { - options = prop; - - array = array.sort(); - if (utils.get(options, 'hash.reverse')) { - array = array.reverse(); - } - - for (var i = 0, len = array.length; i < len; i++) { - result += options.fn(array[i]); - } - return result; - } - - array.sort(function(a, b) { - a = utils.get(a, prop); - b = utils.get(b, prop); - return a > b ? 1 : (a < b ? -1 : 0); - }); - - if (utils.get(options, 'hash.reverse')) { - array = array.reverse(); - } - - var alen = array.length, j = -1; - while (++j < alen) { - result += options.fn(array[j]); - } - return result; -}; - -/** - * Block helper that return an array with all duplicate - * values removed. Best used along with a [each](#each) helper. - * - * ```handlebars - * - * {{#each (unique array)}}{{.}}{{/each}} - * - * ``` - * @param {Array} `array` - * @param {Object} `options` - * @return {Array} - * @api public - */ - -helpers.unique = function(array, options) { - if (util.isUndefined(array)) return ''; - - return array.filter(function(item, index, arr) { - return arr.indexOf(item) === index; - }); -}; diff --git a/node_modules/handlebars-helpers/lib/code.js b/node_modules/handlebars-helpers/lib/code.js deleted file mode 100644 index b61111a15..000000000 --- a/node_modules/handlebars-helpers/lib/code.js +++ /dev/null @@ -1,80 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var path = require('path'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Embed code from an external file as preformatted text. - * - * ```handlebars - * {{embed 'path/to/file.js'}} - * - * {{embed 'path/to/file.hbs' 'html')}} - * ``` - * - * @param {String} `filepath` filepath to the file to embed. - * @param {String} `language` Optionally specify the language to use for syntax highlighting. - * @return {String} - * @api public - */ - -helpers.embed = function embed(filepath, ext) { - ext = typeof ext !== 'string' ? path.extname(filepath).slice(1) : ext; - var code = fs.readFileSync(filepath, 'utf8'); - if (ext === 'markdown' || ext === 'md') { - ext = 'markdown'; - // if the string is markdown, escape backticks - code = code.split('`').join('`'); - } - return utils.block(code, ext).trim() + '\n'; -}; - -/** - * Embed a GitHub Gist using only the id of the Gist - * - * ```handlebars - * {{gist "12345"}} - * ``` - * @param {String} `id` - * @return {String} - * @api public - */ - -helpers.gist = function(id) { - return utils.tag('script', {src: 'https://gist.github.com/' + id + '.js'}); -}; - -/** - * Generate the HTML for a jsFiddle link with the given `params` - * - * ```handlebars - * {{jsfiddle id="0dfk10ks" tabs="true"}} - * ``` - * @param {Object} `params` - * @return {String} - * @api public - */ - -helpers.jsfiddle = function jsFiddle(options) { - var attr = Object.assign({}, options && options.hash); - - if (typeof attr.id === 'undefined') { - throw new Error('jsfiddle helper expects an `id`'); - } - - attr.id = 'http://jsfiddle.net/' + attr.id; - attr.width = attr.width || '100%'; - attr.height = attr.height || '300'; - attr.skin = attr.skin || '/presentation/'; - attr.tabs = (attr.tabs || 'result,js,html,css') + attr.skin; - attr.src = attr.id + '/embedded/' + attr.tabs; - attr.allowfullscreen = attr.allowfullscreen || 'allowfullscreen'; - attr.frameborder = attr.frameborder || '0'; - - delete attr.tabs; - delete attr.skin; - delete attr.id; - return utils.tag('iframe', attr); -}; diff --git a/node_modules/handlebars-helpers/lib/collection.js b/node_modules/handlebars-helpers/lib/collection.js deleted file mode 100644 index b5648eeb3..000000000 --- a/node_modules/handlebars-helpers/lib/collection.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -var util = require('handlebars-utils'); -var object = require('./object'); -var array = require('./array'); -var forEach = array.forEach; -var forOwn = object.forOwn; -var helpers = module.exports; - -/** - * Inline, subexpression, or block helper that returns true (or the block) - * if the given collection is empty, or false (or the inverse block, if - * supplied) if the colleciton is not empty. - * - * ```handlebars - * - * {{#isEmpty array}}AAA{{else}}BBB{{/isEmpty}} - * - * - * - * {{isEmpty array}} - * - * ``` - * @param {Object} `collection` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.isEmpty = function(collection, options) { - if (!util.isOptions(options)) { - options = collection; - return util.fn(true, this, options); - } - - if (Array.isArray(collection) && !collection.length) { - return util.fn(true, this, options); - } - - var keys = Object.keys(collection); - var isEmpty = typeof collection === 'object' && !keys.length; - return util.value(isEmpty, this, options); -}; - -/** - * Block helper that iterates over an array or object. If - * an array is given, `.forEach` is called, or if an object - * is given, `.forOwn` is called, otherwise the inverse block - * is returned. - * - * @param {Object|Array} `collection` The collection to iterate over - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.iterate = function(collection, options) { - if (Array.isArray(collection)) { - return forEach.apply(null, arguments); - } - if (util.isObject(collection)) { - return forOwn.apply(null, arguments); - } - return options.inverse(this); -}; diff --git a/node_modules/handlebars-helpers/lib/comparison.js b/node_modules/handlebars-helpers/lib/comparison.js deleted file mode 100644 index 0b404e9a6..000000000 --- a/node_modules/handlebars-helpers/lib/comparison.js +++ /dev/null @@ -1,604 +0,0 @@ -'use strict'; - -var has = require('has-value'); -var util = require('handlebars-utils'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Helper that renders the block if **both** of the given values - * are truthy. If an inverse block is specified it will be rendered - * when falsy. Works as a block helper, inline helper or - * subexpression. - * - * ```handlebars - * - * {{#and great magnificent}}A{{else}}B{{/and}} - * - * ``` - * @param {any} `a` - * @param {any} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} - * @block - * @api public - */ - -helpers.and = function() { - var len = arguments.length - 1; - var options = arguments[len]; - var val = true; - - for (var i = 0; i < len; i++) { - if (!arguments[i]) { - val = false; - break; - } - } - - return util.value(val, this, options); -}; - -/** - * Render a block when a comparison of the first and third - * arguments returns true. The second argument is - * the [arithemetic operator][operators] to use. You may also - * optionally specify an inverse block to render when falsy. - * - * @param `a` - * @param `operator` The operator to use. Operators must be enclosed in quotes: `">"`, `"="`, `"<="`, and so on. - * @param `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or if specified the inverse block is rendered if falsey. - * @block - * @api public - */ - -helpers.compare = function(a, operator, b, options) { - /*eslint eqeqeq: 0*/ - - if (arguments.length < 4) { - throw new Error('handlebars Helper {{compare}} expects 4 arguments'); - } - - var result; - switch (operator) { - case '==': - result = a == b; - break; - case '===': - result = a === b; - break; - case '!=': - result = a != b; - break; - case '!==': - result = a !== b; - break; - case '<': - result = a < b; - break; - case '>': - result = a > b; - break; - case '<=': - result = a <= b; - break; - case '>=': - result = a >= b; - break; - case 'typeof': - result = typeof a === b; - break; - default: { - throw new Error('helper {{compare}}: invalid operator: `' + operator + '`'); - } - } - - return util.value(result, this, options); -}; - -/** - * Block helper that renders the block if `collection` has the - * given `value`, using strict equality (`===`) for comparison, - * otherwise the inverse block is rendered (if specified). If a - * `startIndex` is specified and is negative, it is used as the - * offset from the end of the collection. - * - * ```handlebars - * - * {{#contains array "d"}} - * This will not be rendered. - * {{else}} - * This will be rendered. - * {{/contains}} - * ``` - * @param {Array|Object|String} `collection` The collection to iterate over. - * @param {any} `value` The value to check for. - * @param {Number} `[startIndex=0]` Optionally define the starting index. - * @param {Object} `options` Handlebars provided options object. - * @block - * @api public - */ - -helpers.contains = function(collection, value, startIndex, options) { - if (typeof startIndex === 'object') { - options = startIndex; - startIndex = undefined; - } - var val = utils.contains(collection, value, startIndex); - return util.value(val, this, options); -}; - -/** - * Returns the first value that is not undefined, otherwise the "default" value is returned. - * - * @param {any} `value` - * @param {any} `defaultValue` - * @return {String} - * @alias .or - * @api public - */ - -helpers.default = function() { - for (var i = 0; i < arguments.length - 1; i++) { - if (arguments[i] != null) return arguments[i]; - } - return ''; -}; - -/** - * Block helper that renders a block if `a` is **equal to** `b`. - * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the - * second value. - * - * @param {String} `a` - * @param {String} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @alias is - * @block - * @api public - */ - -helpers.eq = function(a, b, options) { - if (arguments.length === 2) { - options = b; - b = options.hash.compare; - } - return util.value(a === b, this, options); -}; - -/** - * Block helper that renders a block if `a` is **greater than** `b`. - * - * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the - * second value. - * - * @param {String} `a` - * @param {String} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.gt = function(a, b, options) { - if (arguments.length === 2) { - options = b; - b = options.hash.compare; - } - return util.value(a > b, this, options); -}; - -/** - * Block helper that renders a block if `a` is **greater than or - * equal to** `b`. - * - * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the - * second value. - * - * @param {String} `a` - * @param {String} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.gte = function(a, b, options) { - if (arguments.length === 2) { - options = b; - b = options.hash.compare; - } - return util.value(a >= b, this, options); -}; - -/** - * Block helper that renders a block if `value` has `pattern`. - * If an inverse block is specified it will be rendered when falsy. - * - * @param {any} `val` The value to check. - * @param {any} `pattern` The pattern to check for. - * @param {Object} `options` Handlebars provided options object - * @return {String} - * @block - * @api public - */ - -helpers.has = function(value, pattern, options) { - if (util.isOptions(value)) { - options = value; - pattern = null; - value = null; - } - - if (util.isOptions(pattern)) { - options = pattern; - pattern = null; - } - - if (value === null) { - return util.value(false, this, options); - } - - if (arguments.length === 2) { - return util.value(has(this, value), this, options); - } - - if ((Array.isArray(value) || util.isString(value)) && util.isString(pattern)) { - if (value.indexOf(pattern) > -1) { - return util.fn(true, this, options); - } - } - if (util.isObject(value) && util.isString(pattern) && pattern in value) { - return util.fn(true, this, options); - } - return util.inverse(false, this, options); -}; - -/** - * Returns true if the given `value` is falsey. Uses the [falsey][] - * library for comparisons. Please see that library for more information - * or to report bugs with this helper. - * - * @param {any} `val` - * @param {Options} `options` - * @return {Boolean} - * @api public - */ - -helpers.isFalsey = function(val, options) { - return util.value(utils.falsey(val), this, options); -}; - -/** - * Returns true if the given `value` is truthy. Uses the [falsey][] - * library for comparisons. Please see that library for more information - * or to report bugs with this helper. - * - * @param {any} `val` - * @param {Options} `options` - * @return {Boolean} - * @api public - */ - -helpers.isTruthy = function(val, options) { - return util.value(!utils.falsey(val), this, options); -}; - -/** - * Return true if the given value is an even number. - * - * ```handlebars - * {{#ifEven value}} - * render A - * {{else}} - * render B - * {{/ifEven}} - * ``` - * @param {Number} `number` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.ifEven = function(num, options) { - return util.value(utils.isEven(num), this, options); -}; - -/** - * Conditionally renders a block if the remainder is zero when - * `a` operand is divided by `b`. If an inverse block is specified - * it will be rendered when the remainder is **not zero**. - * - * @param {Number} - * @param {Number} - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.ifNth = function(a, b, options) { - var isNth = utils.isNumber(a) && utils.isNumber(b) && b % a === 0; - return util.value(isNth, this, options); -}; - -/** - * Block helper that renders a block if `value` is **an odd number**. - * If an inverse block is specified it will be rendered when falsy. - * - * ```handlebars - * {{#ifOdd value}} - * render A - * {{else}} - * render B - * {{/ifOdd}} - * ``` - * @param {Object} `value` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.ifOdd = function(val, options) { - return util.value(!utils.isEven(val), this, options); -}; - -/** - * Block helper that renders a block if `a` is **equal to** `b`. - * If an inverse block is specified it will be rendered when falsy. - * Similar to [eq](#eq) but does not do strict equality. - * - * @param {any} `a` - * @param {any} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} - * @block - * @api public - */ - -helpers.is = function(a, b, options) { - if (arguments.length === 2) { - options = b; - b = options.hash.compare; - } - return util.value(a == b, this, options); -}; - -/** - * Block helper that renders a block if `a` is **not equal to** `b`. - * If an inverse block is specified it will be rendered when falsy. - * Similar to [unlessEq](#unlesseq) but does not use strict equality for - * comparisons. - * - * @param {String} `a` - * @param {String} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} - * @block - * @api public - */ - -helpers.isnt = function(a, b, options) { - if (arguments.length === 2) { - options = b; - b = options.hash.compare; - } - return util.value(a != b, this, options); -}; - -/** - * Block helper that renders a block if `a` is **less than** `b`. - * - * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the - * second value. - * - * @param {Object} `context` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.lt = function(a, b, options) { - if (arguments.length === 2) { - options = b; - b = options.hash.compare; - } - return util.value(a < b, this, options); -}; - -/** - * Block helper that renders a block if `a` is **less than or - * equal to** `b`. - * - * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the - * second value. - * - * @param {Sring} `a` - * @param {Sring} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.lte = function(a, b, options) { - if (arguments.length === 2) { - options = b; - b = options.hash.compare; - } - return util.value(a <= b, this, options); -}; - -/** - * Block helper that renders a block if **neither of** the given values - * are truthy. If an inverse block is specified it will be rendered - * when falsy. - * - * @param {any} `a` - * @param {any} `b` - * @param `options` Handlebars options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.neither = function(a, b, options) { - return util.value(!a && !b, this, options); -}; - -/** - * Returns true if `val` is falsey. Works as a block or inline helper. - * - * @param {String} `val` - * @param {Object} `options` Handlebars provided options object - * @return {String} - * @block - * @api public - */ - -helpers.not = function(val, options) { - return util.value(!val, this, options); -}; - -/** - * Block helper that renders a block if **any of** the given values - * is truthy. If an inverse block is specified it will be rendered - * when falsy. - * - * ```handlebars - * {{#or a b c}} - * If any value is true this will be rendered. - * {{/or}} - * ``` - * - * @param {...any} `arguments` Variable number of arguments - * @param {Object} `options` Handlebars options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.or = function(/* any, any, ..., options */) { - var len = arguments.length - 1; - var options = arguments[len]; - var val = false; - - for (var i = 0; i < len; i++) { - if (arguments[i]) { - val = true; - break; - } - } - return util.value(val, this, options); -}; - -/** - * Block helper that always renders the inverse block **unless `a` is - * is equal to `b`**. - * - * @param {String} `a` - * @param {String} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} Inverse block by default, or block if falsey. - * @block - * @api public - */ - -helpers.unlessEq = function(a, b, options) { - if (util.isOptions(b)) { - options = b; - b = options.hash.compare; - } - return util.value(a !== b, this, options); -}; - -/** - * Block helper that always renders the inverse block **unless `a` is - * is greater than `b`**. - * - * @param {Object} `a` The default value - * @param {Object} `b` The value to compare - * @param {Object} `options` Handlebars provided options object - * @return {String} Inverse block by default, or block if falsey. - * @block - * @api public - */ - -helpers.unlessGt = function(a, b, options) { - if (util.isOptions(b)) { - options = b; - b = options.hash.compare; - } - return util.value(a <= b, this, options); -}; - -/** - * Block helper that always renders the inverse block **unless `a` is - * is less than `b`**. - * - * @param {Object} `a` The default value - * @param {Object} `b` The value to compare - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.unlessLt = function(a, b, options) { - if (util.isOptions(b)) { - options = b; - b = options.hash.compare; - } - return util.value(a >= b, this, options); -}; - -/** - * Block helper that always renders the inverse block **unless `a` is - * is greater than or equal to `b`**. - * - * @param {any} `a` - * @param {any} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.unlessGteq = function(a, b, options) { - if (util.isOptions(b)) { - options = b; - b = options.hash.compare; - } - return util.value(a < b, this, options); -}; - -/** - * Block helper that always renders the inverse block **unless `a` is - * is less than or equal to `b`**. - * - * @param {any} `a` - * @param {any} `b` - * @param {Object} `options` Handlebars provided options object - * @return {String} Block, or inverse block if specified and falsey. - * @block - * @api public - */ - -helpers.unlessLteq = function(a, b, options) { - if (util.isOptions(b)) { - options = b; - b = options.hash.compare; - } - return util.value(a > b, this, options); -}; diff --git a/node_modules/handlebars-helpers/lib/date.js b/node_modules/handlebars-helpers/lib/date.js deleted file mode 100644 index dc7d02d0a..000000000 --- a/node_modules/handlebars-helpers/lib/date.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -var helpers = module.exports; - -/** - * Get the current year. - * - * ```handlebars - * {{year}} - * - * ``` - * @exposes year as year - * @api public - */ - -helpers.year = require('year'); - -/** - * Use [moment][] as a helper. See [helper-date][] for more details. - * - * @exposes helper-date as moment - * @api public - */ - -helpers.moment = helpers.date = require('helper-date'); diff --git a/node_modules/handlebars-helpers/lib/fs.js b/node_modules/handlebars-helpers/lib/fs.js deleted file mode 100644 index 6c2d4fe79..000000000 --- a/node_modules/handlebars-helpers/lib/fs.js +++ /dev/null @@ -1,68 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var path = require('path'); -var util = require('handlebars-utils'); -var utils = require('./utils'); -var number = require('./number'); -var helpers = module.exports; - -/** - * Helper `fileSize` is deprecated. Use `helper.prettyBytes` instead. - */ - -helpers.fileSize = number.bytes; - -/** - * Read a file from the file system. This is useful in composing - * "include"-style helpers using sub-expressions. - * - * ```handlebars - * {{read "a/b/c.js"}} - * {{someHelper (read "a/b/c.md")}} - * ``` - * @param {String} `filepath` - * @return {String} - * @api public - */ - -helpers.read = function(filepath, options) { - return fs.readFileSync(filepath, 'utf8'); -}; - -/** - * Return an array of files from the given - * directory. - * - * @param {String} `directory` - * @return {Array} - * @api public - */ - -helpers.readdir = function(dir, filter) { - var files = fs.readdirSync(dir); - files = files.map(function(fp) { - return path.join(dir, fp); - }); - if (util.isOptions(filter)) { - return files; - } - if (typeof filter === 'function') { - return filter(files); - } - if (utils.typeOf(filter) === 'regexp') { - return files.filter(function(fp) { - return filter.test(fp); - }); - } - if (utils.isGlob(filter)) { - return files.filter(utils.mm.matcher(filter)); - } - if (['isFile', 'isDirectory'].indexOf(filter) !== -1) { - return files.filter(function(fp) { - var stat = fs.statSync(fp); - return stat[filter](); - }); - } - return files; -}; diff --git a/node_modules/handlebars-helpers/lib/html.js b/node_modules/handlebars-helpers/lib/html.js deleted file mode 100644 index 3dcf25f10..000000000 --- a/node_modules/handlebars-helpers/lib/html.js +++ /dev/null @@ -1,218 +0,0 @@ -'use strict'; - -var path = require('path'); -var util = require('handlebars-utils'); -var html = require('./utils/html'); -var utils = require('./utils'); -var parseAttr = html.parseAttributes; -var helpers = module.exports; - -/** - * Stringify attributes on the options `hash`. - * - * ```handlebars - * - * - * - * {{css stylesheets}} - * - * - * - * - * ``` - * @param {String|Array} `list` One or more stylesheet urls. - * @return {String} - * @api public - */ - -helpers.css = function(list, options) { - if (arguments.length < 2) { - options = list; - list = []; - } - - var styles = util.arrayify(list); - var assets = ''; - - if (this && this.options) { - assets = this.options.assets || ''; - } - - if (options.hash.href) { - styles = util.arrayify(options.hash.href); - } - - return styles.map(function(item) { - var ext = path.extname(item); - var fp = item; - - if (!/(^\/\/)|(:\/\/)/.test(item)) { - fp = path.posix.join(assets, item); - } - - if (ext === '.less') { - return ''; - } - return ''; - }).join('\n'); -}; - -/** - * Generate one or more `` tags with paths/urls to - * javascript or coffeescript files. - * - * ```handlebars - * {{js scripts}} - * ``` - * @param {Object} `context` - * @return {String} - * @api public - */ - -helpers.js = function(context) { - if (utils.typeOf(context) === 'object') { - var attr = parseAttr(context.hash); - return ''; - } - - if (utils.typeOf(context) === 'string') { - return ''; - } - - context = util.arrayify(context); - return context.map(function(fp) { - return (path.extname(fp) === '.coffee') - ? utils.tag('script', {type: 'text/coffeescript', src: fp}) - : utils.tag('script', {src: fp}); - }).join('\n'); -}; - -/** - * Strip HTML tags from a string, so that only the text nodes - * are preserved. - * - * ```handlebars - * {{sanitize "foo"}} - * - * ``` - * - * @param {String} `str` The string of HTML to sanitize. - * @return {String} - * @api public - */ - -helpers.sanitize = function(str) { - return html.sanitize(str); -}; - -/** - * Block helper for creating unordered lists (`
        `) - * - * @param {Object} `context` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.ul = function(context, options) { - return ('
          ') + context.map(function(item) { - if (typeof item !== 'string') { - item = options.fn(item); - } - return '
        • ' + item + '
        • '; - }).join('\n') + '
        '; -}; - -/** - * Block helper for creating ordered lists (`
          `) - * - * @param {Object} `context` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.ol = function(context, options) { - return ('
            ') + context.map(function(item) { - if (typeof item !== 'string') { - item = options.fn(item); - } - return '
          1. ' + item + '
          2. '; - }).join('\n') + '
          '; -}; - -/** - * Returns a `
          ` with a thumbnail linked to a full picture - * - * @param {Object} `context` Object with values/attributes to add to the generated elements: - * @param {String} `context.alt` - * @param {String} `context.src` - * @param {Number} `context.width` - * @param {Number} `context.height` - * @return {String} HTML `
          ` element with image and optional caption/link. - * @contributor: Marie Hogebrandt - * @api public - */ - -helpers.thumbnailImage = function(context) { - var figure = ''; - var image = ''; - - var link = context.full || false; - var imageAttributes = { - alt: context.alt, - src: context.thumbnail, - width: context.size.width, - height: context.size.height - }; - - var figureAttributes = { id: 'image-' + context.id }; - var linkAttributes = { href: link, rel: 'thumbnail' }; - - if (context.classes) { - if (context.classes.image) { - imageAttributes.class = context.classes.image.join(' '); - } - if (context.classes.figure) { - figureAttributes.class = context.classes.figure.join(' '); - } - if (context.classes.link) { - linkAttributes.class = context.classes.link.join(' '); - } - } - - figure += '
          \n'; - image += '\n'; - - if (link) { - figure += '\n' + image + '\n'; - } else { - figure += image; - } - - if (context.caption) { - figure += '
          ' + context.caption + '
          \n'; - } - - figure += '
          '; - return figure; -}; diff --git a/node_modules/handlebars-helpers/lib/i18n.js b/node_modules/handlebars-helpers/lib/i18n.js deleted file mode 100644 index 0bdce9f3c..000000000 --- a/node_modules/handlebars-helpers/lib/i18n.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -var util = require('handlebars-utils'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * i18n helper. See [button-i18n](https://github.com/assemble/buttons) - * for a working example. - * - * @contributor Laurent Goderre - * @param {String} `key` - * @param {Object} `options` - * @return {String} - * @api public - */ - -helpers.i18n = function(prop, locals, options) { - if (util.isOptions(locals)) { - options = locals; - locals = {}; - } - - if (!util.isString(prop)) { - throw new Error('{{i18n}} helper expected "key" to be a string'); - } - - var opts = util.options(this, locals, options); - var context = Object.assign({}, this, opts); - - var lang = context.language || context.lang; - - if (!util.isString(lang)) { - throw new TypeError('{{i18n}} helper expected "language" to be a string'); - } - - var cache = context[lang]; - if (typeof cache === 'undefined') { - throw new Error('{{i18n}} helper cannot find language "' + lang + '"'); - } - - var result = utils.get(cache, prop); - if (typeof result === 'undefined') { - throw new Error('{{i18n}} helper cannot find property "' + prop + '" for language "' + lang + '"'); - } - - return result; -}; diff --git a/node_modules/handlebars-helpers/lib/index.js b/node_modules/handlebars-helpers/lib/index.js deleted file mode 100644 index 939ab03e2..000000000 --- a/node_modules/handlebars-helpers/lib/index.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -module.exports = { - array: require('./array'), - code: require('./code'), - collection: require('./collection'), - comparison: require('./comparison'), - date: require('./date'), - fs: require('./fs'), - html: require('./html'), - i18n: require('./i18n'), - inflection: require('./inflection'), - logging: require('./logging'), - markdown: require('./markdown'), - match: require('./match'), - math: require('./math'), - misc: require('./misc'), - number: require('./number'), - object: require('./object'), - path: require('./path'), - regex: require('./regex'), - string: require('./string'), - url: require('./url') -}; diff --git a/node_modules/handlebars-helpers/lib/inflection.js b/node_modules/handlebars-helpers/lib/inflection.js deleted file mode 100644 index 097ce99be..000000000 --- a/node_modules/handlebars-helpers/lib/inflection.js +++ /dev/null @@ -1,78 +0,0 @@ -'use strict'; - -var util = require('handlebars-utils'); -var helpers = module.exports; - -/** - * Returns either the `singular` or `plural` inflection of a word based on - * the given `count`. - * - * ```handlebars - * {{inflect 0 "string" "strings"}} - * - * {{inflect 1 "string" "strings"}} - * - * {{inflect 1 "string" "strings" true}} - * - * {{inflect 2 "string" "strings"}} - * - * {{inflect 2 "string" "strings" true}} - * - * ``` - * @param {Number} `count` - * @param {String} `singular` The singular form - * @param {String} `plural` The plural form - * @param {String} `includeCount` - * @return {String} - * @api public - */ - -helpers.inflect = function(count, singular, plural, includeCount) { - var word = (count > 1 || count === 0) ? plural : singular; - if (includeCount === true) { - return String(count) + ' ' + word; - } else { - return word; - } -}; - -/** - * Returns an ordinalized number as a string. - * - * ```handlebars - * {{ordinalize 1}} - * - * {{ordinalize 21}} - * - * {{ordinalize 29}} - * - * {{ordinalize 22}} - * - * ``` - * - * @param {String} `val` The value to ordinalize. - * @return {String} The ordinalized number - * @api public - */ - -helpers.ordinalize = function(val) { - var num = Math.abs(Math.round(val)); - var str = String(val); - var res = num % 100; - - if (util.indexOf([11, 12, 13], res) >= 0) { - return str + 'th'; - } - - switch (num % 10) { - case 1: - return str + 'st'; - case 2: - return str + 'nd'; - case 3: - return str + 'rd'; - default: { - return str + 'th'; - } - } -}; diff --git a/node_modules/handlebars-helpers/lib/logging.js b/node_modules/handlebars-helpers/lib/logging.js deleted file mode 100644 index 98ca8bdd6..000000000 --- a/node_modules/handlebars-helpers/lib/logging.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -/** - * [logging-helpers](https://github.com/helpers/logging-helpers). - * @api public - */ - -module.exports = require('logging-helpers'); diff --git a/node_modules/handlebars-helpers/lib/markdown.js b/node_modules/handlebars-helpers/lib/markdown.js deleted file mode 100644 index 27888d4f2..000000000 --- a/node_modules/handlebars-helpers/lib/markdown.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -/** - * Expose markdown `helpers` (for performance we're using getters so - * that the helpers are only loaded if called) - */ - -var helpers = module.exports; -var markdown; - -/** - * Block helper that converts a string of inline markdown to HTML. - * - * ```handlebars - * {{#markdown}} - * # Foo - * {{/markdown}} - * - * ``` - * @name .markdown - * @param {Object} `context` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -Object.defineProperty(helpers, 'markdown', { - configurable: true, - enumerable: true, - set: function(val) { - markdown = val; - }, - get: function() { - // this is defined as a getter to avoid calling this function - // unless the helper is actually used - return markdown || (markdown = require('helper-markdown')()); - } -}); - -/** - * Read a markdown file from the file system and inject its contents after - * converting it to HTML. - * - * ```handlebars - * {{md "foo/bar.md"}} - * ``` - * @param {Object} `context` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.md = require('helper-md'); diff --git a/node_modules/handlebars-helpers/lib/match.js b/node_modules/handlebars-helpers/lib/match.js deleted file mode 100644 index ee4a2267a..000000000 --- a/node_modules/handlebars-helpers/lib/match.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -var util = require('handlebars-utils'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Returns an array of strings that match the given glob pattern(s). - * Options may be passed on the options hash or locals. - * - * ```handlebars - * {{match (readdir "foo") "*.js"}} - * {{match (readdir "foo") (toRegex "\\.js$")}} - * ``` - * @param {Array|String} `files` - * @param {Array|String} `patterns` One or more glob patterns. - * @param {Object} `locals` - * @param {Object} `options` - * @return {Array} Array of matches - * @api public - */ - -helpers.match = function(files, patterns, locals, options) { - var opts = util.options(this, locals, options); - if (typeof patterns === 'string') { - patterns = patterns.split(/, */); - } - return utils.mm(files, patterns, opts); -}; - -/** - * Returns true if a filepath contains the given pattern. - * Options may be passed on the options hash or locals. - * - * ```handlebars - * {{isMatch "foo.md" "*.md"}} - * - * ``` - * - * @param {String} `filepath` - * @param {String} `pattern` - * @param {Object} `options` - * @return {Boolean} - * @api public - */ - -helpers.isMatch = function(files, patterns, locals, options) { - var opts = util.options(this, locals, options); - return utils.mm.isMatch(files, patterns, opts); -}; - -/** - * Alias for micromatch helper. Deprecated in v0.9.0. - */ - -helpers.mm = function() { - console.log('the {{mm}} helper is depcrecated and will be removed'); - console.log('in handlebars-helpers v1.0.0, please use the {{match}}'); - console.log('helper instead.'); - return helpers.match.apply(this, arguments); -}; diff --git a/node_modules/handlebars-helpers/lib/math.js b/node_modules/handlebars-helpers/lib/math.js deleted file mode 100644 index f4c138b93..000000000 --- a/node_modules/handlebars-helpers/lib/math.js +++ /dev/null @@ -1,288 +0,0 @@ -'use strict'; - -var isNumber = require('is-number'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Return the magnitude of `a`. - * - * @param {Number} `a` - * @return {Number} - * @api public - */ - -helpers.abs = function(num) { - if (!isNumber(num)) { - throw new TypeError('expected a number'); - } - return Math.abs(num); -}; - -/** - * Return the sum of `a` plus `b`. - * - * @param {Number} `a` - * @param {Number} `b` - * @return {Number} - * @api public - */ - -helpers.add = function(a, b) { - if (isNumber(a) && isNumber(b)) { - return Number(a) + Number(b); - } - if (typeof a === 'string' && typeof b === 'string') { - return a + b; - } - return ''; -}; - -/** - * Returns the average of all numbers in the given array. - * - * ```handlebars - * {{avg "[1, 2, 3, 4, 5]"}} - * - * ``` - * - * @param {Array} `array` Array of numbers to add up. - * @return {Number} - * @api public - */ - -helpers.avg = function() { - var args = [].concat.apply([], arguments); - // remove handlebars options object - args.pop(); - return helpers.sum(args) / args.length; -}; - -/** - * Get the `Math.ceil()` of the given value. - * - * @param {Number} `value` - * @return {Number} - * @api public - */ - -helpers.ceil = function(num) { - if (!isNumber(num)) { - throw new TypeError('expected a number'); - } - return Math.ceil(num); -}; - -/** - * Divide `a` by `b` - * - * @param {Number} `a` numerator - * @param {Number} `b` denominator - * @api public - */ - -helpers.divide = function(a, b) { - if (!isNumber(a)) { - throw new TypeError('expected the first argument to be a number'); - } - if (!isNumber(b)) { - throw new TypeError('expected the second argument to be a number'); - } - return Number(a) / Number(b); -}; - -/** - * Get the `Math.floor()` of the given value. - * - * @param {Number} `value` - * @return {Number} - * @api public - */ - -helpers.floor = function(num) { - if (!isNumber(num)) { - throw new TypeError('expected a number'); - } - return Math.floor(num); -}; - -/** - * Return the difference of `a` minus `b`. - * - * @param {Number} `a` - * @param {Number} `b` - * @alias subtract - * @api public - */ - -helpers.minus = function(a, b) { - if (!isNumber(a)) { - throw new TypeError('expected the first argument to be a number'); - } - if (!isNumber(b)) { - throw new TypeError('expected the second argument to be a number'); - } - return Number(a) - Number(b); -}; - -/** - * Get the remainder of a division operation. - * - * @param {Number} `a` - * @param {Number} `b` - * @return {Number} - * @api public - */ - -helpers.modulo = function(a, b) { - if (!isNumber(a)) { - throw new TypeError('expected the first argument to be a number'); - } - if (!isNumber(b)) { - throw new TypeError('expected the second argument to be a number'); - } - return Number(a) % Number(b); -}; - -/** - * Return the product of `a` times `b`. - * - * @param {Number} `a` factor - * @param {Number} `b` multiplier - * @return {Number} - * @alias times - * @api public - */ - -helpers.multiply = function(a, b) { - if (!isNumber(a)) { - throw new TypeError('expected the first argument to be a number'); - } - if (!isNumber(b)) { - throw new TypeError('expected the second argument to be a number'); - } - return Number(a) * Number(b); -}; - -/** - * Add `a` by `b`. - * - * @param {Number} `a` factor - * @param {Number} `b` multiplier - * @api public - */ - -helpers.plus = function(a, b) { - if (!isNumber(a)) { - throw new TypeError('expected the first argument to be a number'); - } - if (!isNumber(b)) { - throw new TypeError('expected the second argument to be a number'); - } - return Number(a) + Number(b); -}; - -/** - * Generate a random number between two values - * - * @param {Number} `min` - * @param {Number} `max` - * @return {String} - * @api public - */ - -helpers.random = function(min, max) { - if (!isNumber(min)) { - throw new TypeError('expected minimum to be a number'); - } - if (!isNumber(max)) { - throw new TypeError('expected maximum to be a number'); - } - return utils.random(min, max); -}; - -/** - * Get the remainder when `a` is divided by `b`. - * - * @param {Number} `a` a - * @param {Number} `b` b - * @api public - */ - -helpers.remainder = function(a, b) { - return a % b; -}; - -/** - * Round the given number. - * - * @param {Number} `number` - * @return {Number} - * @api public - */ - -helpers.round = function(num) { - if (!isNumber(num)) { - throw new TypeError('expected a number'); - } - return Math.round(num); -}; - -/** - * Return the product of `a` minus `b`. - * - * @param {Number} `a` - * @param {Number} `b` - * @return {Number} - * @alias minus - * @api public - */ - -helpers.subtract = function(a, b) { - if (!isNumber(a)) { - throw new TypeError('expected the first argument to be a number'); - } - if (!isNumber(b)) { - throw new TypeError('expected the second argument to be a number'); - } - return Number(a) - Number(b); -}; - -/** - * Returns the sum of all numbers in the given array. - * - * ```handlebars - * {{sum "[1, 2, 3, 4, 5]"}} - * - * ``` - * @param {Array} `array` Array of numbers to add up. - * @return {Number} - * @api public - */ - -helpers.sum = function() { - var args = [].concat.apply([], arguments); - var len = args.length; - var sum = 0; - - while (len--) { - if (utils.isNumber(args[len])) { - sum += Number(args[len]); - } - } - return sum; -}; - -/** - * Multiply number `a` by number `b`. - * - * @param {Number} `a` factor - * @param {Number} `b` multiplier - * @return {Number} - * @alias multiply - * @api public - */ - -helpers.times = function() { - return helpers.multiply.apply(this, arguments); -}; diff --git a/node_modules/handlebars-helpers/lib/misc.js b/node_modules/handlebars-helpers/lib/misc.js deleted file mode 100644 index 5cea67640..000000000 --- a/node_modules/handlebars-helpers/lib/misc.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; - -var util = require('handlebars-utils'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Block helper for exposing private `@` variables on the context - */ - -helpers.frame = require('handlebars-helper-create-frame'); - -/** - * Return the given value of `prop` from `this.options`. - * - * ```handlebars - * - * {{option "a.b.c"}} - * - * ``` - * @param {String} `prop` - * @return {any} - * @api public - */ - -helpers.option = function(prop, locals, options) { - return utils.get(util.options(this, locals, options), prop); -}; - -/** - * Block helper that renders the block without taking any arguments. - * - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.noop = function(options) { - return options.fn(this); -}; - -/** - * Get the native type of the given `value` - * - * ```handlebars - * {{typeOf 1}} - * //=> 'number' - * {{typeOf "1"}} - * //=> 'string' - * {{typeOf "foo"}} - * //=> 'string' - * ``` - * @param {any} `value` - * @return {String} Returns the type of value. - * @api public - */ - -helpers.typeOf = require('kind-of'); - -/** - * Block helper that builds the context for the block - * from the options hash. - * - * @param {Object} `options` Handlebars provided options object. - * @contributor Vladimir Kuznetsov - * @block - * @api public - */ - -helpers.withHash = function(options) { - if (options.hash && Object.keys(options.hash).length) { - return options.fn(options.hash); - } else { - return options.inverse(this); - } -}; diff --git a/node_modules/handlebars-helpers/lib/number.js b/node_modules/handlebars-helpers/lib/number.js deleted file mode 100644 index 15fd16b7f..000000000 --- a/node_modules/handlebars-helpers/lib/number.js +++ /dev/null @@ -1,204 +0,0 @@ -'use strict'; - -var isNumber = require('is-number'); -var util = require('handlebars-utils'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Format a number to it's equivalent in bytes. If a string is passed, - * it's length will be formatted and returned. - * - * **Examples:** - * - * - `'foo' => 3 B` - * - `13661855 => 13.66 MB` - * - `825399 => 825.39 kB` - * - `1396 => 1.4 kB` - * - * @param {Number|String} `number` - * @return {String} - * @api public - */ - -helpers.bytes = function(number, precision, options) { - if (number == null) return '0 B'; - - if (!utils.isNumber(number)) { - number = number.length; - if (!number) return '0 B'; - } - - if (!utils.isNumber(precision)) { - precision = 2; - } - - var abbr = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; - precision = Math.pow(10, precision); - number = Number(number); - - var len = abbr.length - 1; - while (len-- >= 0) { - var size = Math.pow(10, len * 3); - if (size <= (number + 1)) { - number = Math.round(number * precision / size) / precision; - number += ' ' + abbr[len]; - break; - } - } - - return number; -}; - -/** - * Add commas to numbers - * - * @param {Number} `num` - * @return {Number} - * @api public - */ - -helpers.addCommas = function(num) { - return num.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,'); -}; - -/** - * Convert a string or number to a formatted phone number. - * - * @param {Number|String} `num` The phone number to format, e.g. `8005551212` - * @return {Number} Formatted phone number: `(800) 555-1212` - * @source http://bit.ly/QlPmPr - * @api public - */ - -helpers.phoneNumber = function(num) { - num = num.toString(); - - return '(' + num.substr(0, 3) + ') ' - + num.substr(3, 3) + '-' - + num.substr(6, 4); -}; - -/** - * Abbreviate numbers to the given number of `precision`. This is for - * general numbers, not size in bytes. - * - * @param {Number} `number` - * @param {Number} `precision` - * @return {String} - * @api public - */ - -helpers.toAbbr = function(number, precision) { - if (!utils.isNumber(number)) { - number = 0; - } - if (util.isUndefined(precision)) { - precision = 2; - } - - number = Number(number); - // 2 decimal places => 100, 3 => 1000, etc. - precision = Math.pow(10, precision); - var abbr = ['k', 'm', 'b', 't', 'q']; - var len = abbr.length - 1; - - while (len >= 0) { - var size = Math.pow(10, (len + 1) * 3); - if (size <= (number + 1)) { - number = Math.round(number * precision / size) / precision; - number += abbr[len]; - break; - } - len--; - } - return number; -}; - -/** - * Returns a string representing the given number in exponential notation. - * - * ```handlebars - * {{toExponential number digits}}; - * ``` - * @param {Number} `number` - * @param {Number} `fractionDigits` Optional. An integer specifying the number of digits to use after the decimal point. Defaults to as many digits as necessary to specify the number. - * @return {Number} - * @api public - */ - -helpers.toExponential = function(number, digits) { - if (!utils.isNumber(number)) { - number = 0; - } - if (util.isUndefined(digits)) { - digits = 0; - } - return Number(number).toExponential(digits); -}; - -/** - * Formats the given number using fixed-point notation. - * - * ```handlebars - * {{toFixed "1.1234" 2}} - * //=> '1.12' - * ``` - * @param {Number} `number` - * @param {Number} `digits` (Optional) The number of digits to appear after the decimal point; this may be a value between 0 and 20. If this argument is omitted, it is treated as 0. - * @return {String} A string representing the given number using fixed-point notation. - * @api public - */ - -helpers.toFixed = function(number, digits) { - if (!utils.isNumber(number)) { - number = 0; - } - if (!isNumber(digits)) { - digits = 0; - } - return Number(number).toFixed(digits); -}; - -/** - * @param {Number} `number` - * @return {Number} - * @api public - */ - -helpers.toFloat = function(number) { - return parseFloat(number); -}; - -/** - * @param {Number} `number` - * @return {Number} - * @api public - */ - -helpers.toInt = function(number) { - return parseInt(number, 10); -}; - -/** - * Returns a string representing the `Number` object to the specified precision. - * - * ```handlebars - * {{toPrecision "1.1234" 2}} - * //=> '1.1' - * ``` - * @param {Number} `number` - * @param {Number} `precision` (Optional) An integer specifying the number of significant digits. If precison is not between 1 and 100 (inclusive), it will be coerced to `0`. - * @return {String} A string representing a Number object in fixed-point or exponential notation rounded to precision significant digits. - * @api public - */ - -helpers.toPrecision = function(number, precision) { - if (!utils.isNumber(number)) { - number = 0; - } - if (!isNumber(precision)) { - precision = 1; - } - return Number(number).toPrecision(precision); -}; diff --git a/node_modules/handlebars-helpers/lib/object.js b/node_modules/handlebars-helpers/lib/object.js deleted file mode 100644 index 1c48590a9..000000000 --- a/node_modules/handlebars-helpers/lib/object.js +++ /dev/null @@ -1,290 +0,0 @@ -'use strict'; - -var hasOwn = Object.hasOwnProperty; -var util = require('handlebars-utils'); -var array = require('./array'); -var utils = require('./utils/'); -var helpers = module.exports; - -/** - * Extend the context with the properties of other objects. - * A shallow merge is performed to avoid mutating the context. - * - * @param {Object} `objects` One or more objects to extend. - * @return {Object} - * @api public - */ - -helpers.extend = function(/*objects*/) { - var args = [].slice.call(arguments); - var opts = {}; - - if (util.isOptions(args[args.length - 1])) { - // remove handlebars options object - opts = args.pop().hash; - // re-add handlebars options.hash object - args.push(opts); - } - - var context = {}; - for (var i = 0; i < args.length; i++) { - var obj = args[i]; - if (util.isObject(obj)) { - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; j++) { - var key = keys[j]; - context[key] = obj[key]; - } - } - } - - return context; -}; - -/** - * Block helper that iterates over the properties of - * an object, exposing each key and value on the context. - * - * @param {Object} `context` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.forIn = function(obj, options) { - if (!util.isOptions(options)) { - return obj.inverse(this); - } - - var data = utils.createFrame(options, options.hash); - var result = ''; - - for (var key in obj) { - data.key = key; - result += options.fn(obj[key], {data: data}); - } - return result; -}; - -/** - * Block helper that iterates over the **own** properties of - * an object, exposing each key and value on the context. - * - * @param {Object} `obj` The object to iterate over. - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.forOwn = function(obj, options) { - if (!util.isOptions(options)) { - return obj.inverse(this); - } - - var data = utils.createFrame(options, options.hash); - var result = ''; - - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - data.key = key; - result += options.fn(obj[key], {data: data}); - } - } - return result; -}; - -/** - * Take arguments and, if they are string or number, convert them to a dot-delineated object property path. - * - * @param {String|Number} `prop` The property segments to assemble (can be multiple). - * @return {String} - * @api public - */ - -helpers.toPath = function(/*prop*/) { - var prop = []; - for (var i = 0; i < arguments.length; i++) { - if (typeof arguments[i] === 'string' || typeof arguments[i] === 'number') { - prop.push(arguments[i]); - } - } - return prop.join('.'); -}; - -/** - * Use property paths (`a.b.c`) to get a value or nested value from - * the context. Works as a regular helper or block helper. - * - * @param {String} `prop` The property to get, optionally using dot notation for nested properties. - * @param {Object} `context` The context object - * @param {Object} `options` The handlebars options object, if used as a block helper. - * @return {String} - * @block - * @api public - */ - -helpers.get = function(prop, context, options) { - var val = utils.get(context, prop); - if (options && options.fn) { - return val ? options.fn(val) : options.inverse(context); - } - return val; -}; - -/** - * Use property paths (`a.b.c`) to get an object from - * the context. Differs from the `get` helper in that this - * helper will return the actual object, including the - * given property key. Also, this helper does not work as a - * block helper. - * - * @param {String} `prop` The property to get, optionally using dot notation for nested properties. - * @param {Object} `context` The context object - * @return {String} - * @api public - */ - -helpers.getObject = function(prop, context) { - return utils.getObject(context, prop); -}; - -/** - * Return true if `key` is an own, enumerable property - * of the given `context` object. - * - * ```handlebars - * {{hasOwn context key}} - * ``` - * - * @param {String} `key` - * @param {Object} `context` The context object. - * @return {Boolean} - * @api public - */ - -helpers.hasOwn = function(context, key) { - return hasOwn.call(context, key); -}; - -/** - * Return true if `value` is an object. - * - * ```handlebars - * {{isObject "foo"}} - * //=> false - * ``` - * @param {String} `value` - * @return {Boolean} - * @api public - */ - -helpers.isObject = function(value) { - return utils.typeOf(value) === 'object'; -}; - -/** - * Parses the given string using `JSON.parse`. - * - * ```handlebars - * - * {{JSONparse string}} - * - * ``` - * @param {String} `string` The string to parse - * @contributor github.com/keeganstreet - * @block - * @api public - */ - -helpers.JSONparse = function(str, options) { - return JSON.parse(str); -}; - -/** - * Stringify an object using `JSON.stringify`. - * - * ```handlebars - * - * {{JSONstringify object}} - * - * ``` - * @param {Object} `obj` Object to stringify - * @return {String} - * @api public - */ - -helpers.JSONstringify = function(obj, indent) { - if (!utils.isNumber(indent)) { - indent = 0; - } - return JSON.stringify(obj, null, indent); -}; - -/** - * Deeply merge the properties of the given `objects` with the - * context object. - * - * @param {Object} `object` The target object. Pass an empty object to shallow clone. - * @param {Object} `objects` - * @return {Object} - * @api public - */ - -helpers.merge = function(context/*, objects, options*/) { - var args = [].slice.call(arguments); - var opts = {}; - - if (util.isOptions(args[args.length - 1])) { - // remove handlebars options object - opts = args.pop().hash; - // re-add options.hash - args.push(opts); - } - - return Object.assign.apply(null, args); -}; - -/** - * Alias for parseJSON. this will be - * deprecated in a future release - */ - -helpers.parseJSON = helpers.JSONparse; - -/** - * Pick properties from the context object. - * - * @param {Array|String} `properties` One or more properties to pick. - * @param {Object} `context` - * @param {Object} `options` Handlebars options object. - * @return {Object} Returns an object with the picked values. If used as a block helper, the values are passed as context to the inner block. If no values are found, the context is passed to the inverse block. - * @block - * @api public - */ - -helpers.pick = function(props, context, options) { - var keys = array.arrayify(props); - var len = keys.length, i = -1; - var result = {}; - - while (++i < len) { - result = helpers.extend({}, result, utils.getObject(context, keys[i])); - } - - if (options.fn) { - if (Object.keys(result).length) { - return options.fn(result); - } - return options.inverse(context); - } - return result; -}; - -/** - * Alias for JSONstringify. this will be - * deprecated in a future release - */ - -helpers.stringify = helpers.JSONstringify; diff --git a/node_modules/handlebars-helpers/lib/path.js b/node_modules/handlebars-helpers/lib/path.js deleted file mode 100644 index 16e43f40c..000000000 --- a/node_modules/handlebars-helpers/lib/path.js +++ /dev/null @@ -1,172 +0,0 @@ -'use strict'; - -var util = require('handlebars-utils'); -var path = require('path'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Get the directory path segment from the given `filepath`. - * - * ```handlebars - * {{absolute "docs/toc.md"}} - * - * ``` - * @param {String} `ext` - * @return {String} - * @api public - */ - -helpers.absolute = function(filepath, options) { - options = options || {data: {}}; - var context = util.options(this, options); - var ctx = Object.assign({}, options.data.root, context); - var cwd = ctx.cwd || process.cwd(); - return path.resolve(cwd, filepath); -}; - -/** - * Get the directory path segment from the given `filepath`. - * - * ```handlebars - * {{dirname "docs/toc.md"}} - * - * ``` - * @param {String} `ext` - * @return {String} - * @api public - */ - -helpers.dirname = function(filepath, options) { - if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); - } - return path.dirname(filepath); -}; - -/** - * Get the relative filepath from `a` to `b`. - * - * ```handlebars - * {{relative a b}} - * ``` - * @param {String} `a` - * @param {String} `b` - * @return {String} - * @api public - */ - -helpers.relative = function(a, b) { - if (typeof a !== 'string') { - throw new TypeError(utils.expectedType('first path', 'string', a)); - } - if (typeof b !== 'string') { - throw new TypeError(utils.expectedType('second path', 'string', b)); - } - return utils.relative(a, b); -}; - -/** - * Get the file extension from the given `filepath`. - * - * ```handlebars - * {{basename "docs/toc.md"}} - * - * ``` - * @param {String} `ext` - * @return {String} - * @api public - */ - -helpers.basename = function(filepath) { - if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); - } - return path.basename(filepath); -}; - -/** - * Get the "stem" from the given `filepath`. - * - * ```handlebars - * {{stem "docs/toc.md"}} - * - * ``` - * @param {String} `filepath` - * @return {String} - * @api public - */ - -helpers.stem = function(filepath) { - if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); - } - return path.basename(filepath, path.extname(filepath)); -}; - -/** - * Get the file extension from the given `filepath`. - * - * ```handlebars - * {{extname "docs/toc.md"}} - * - * ``` - * @param {String} `filepath` - * @return {String} - * @api public - */ - -helpers.extname = function(filepath) { - if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); - } - return path.extname(filepath); -}; - -/** - * Resolve an absolute path from the given `filepath`. - * - * ```handlebars - * {{resolve "docs/toc.md"}} - * - * ``` - * @param {String} `filepath` - * @return {String} - * @api public - */ - -helpers.resolve = function(filepath) { - var args = [].slice.call(arguments); - var opts = util.options(this, args.pop()); - var cwd = path.resolve(opts.cwd || process.cwd()); - args.unshift(cwd); - return path.resolve.apply(path, args); -}; - -/** - * Get specific (joined) segments of a file path by passing a - * range of array indices. - * - * ```handlebars - * {{segments "a/b/c/d" "2" "3"}} - * - * - * {{segments "a/b/c/d" "1" "3"}} - * - * - * {{segments "a/b/c/d" "1" "2"}} - * - * ``` - * - * @param {String} `filepath` The file path to split into segments. - * @return {String} Returns a single, joined file path. - * @api public - */ - -helpers.segments = function(filepath, a, b) { - if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); - } - var segments = filepath.split(/[\\\/]+/); - return segments.slice(a, b).join('/'); -}; diff --git a/node_modules/handlebars-helpers/lib/regex.js b/node_modules/handlebars-helpers/lib/regex.js deleted file mode 100644 index 16662b686..000000000 --- a/node_modules/handlebars-helpers/lib/regex.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; - -var util = require('handlebars-utils'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Convert the given string to a regular expression. - * - * ```handlebars - * {{toRegex "foo"}} - * - * ``` - * @param {String} `str` - * @return {RegExp} - * @api public - */ - -helpers.toRegex = function(str, locals, options) { - var opts = util.options({}, locals, options); - return new RegExp(str, opts.flags); -}; - -/** - * Returns true if the given `str` matches the given regex. A regex can - * be passed on the context, or using the [toRegex](#toregex) helper as a - * subexpression. - * - * ```handlebars - * {{test "bar" (toRegex "foo")}} - * - * {{test "foobar" (toRegex "foo")}} - * - * {{test "foobar" (toRegex "^foo$")}} - * - * ``` - * @param {String} `str` - * @return {RegExp} - * @api public - */ - -helpers.test = function(str, regex) { - if (!util.isString(str)) { - return false; - } - if (!utils.typeOf(regex) === 'regexp') { - throw new TypeError('expected a regular expression'); - } - return regex.test(str); -}; diff --git a/node_modules/handlebars-helpers/lib/string.js b/node_modules/handlebars-helpers/lib/string.js deleted file mode 100644 index 5f079766f..000000000 --- a/node_modules/handlebars-helpers/lib/string.js +++ /dev/null @@ -1,769 +0,0 @@ -'use strict'; - -var isNumber = require('is-number'); -var util = require('handlebars-utils'); -var utils = require('./utils'); -var helpers = module.exports; - -/** - * Append the specified `suffix` to the given string. - * - * ```handlebars - * - * {{append item.stem ".html"}} - * - * ``` - * @param {String} `str` - * @param {String} `suffix` - * @return {String} - * @api public - */ - -helpers.append = function(str, suffix) { - if (typeof str === 'string' && typeof suffix === 'string') { - return str + suffix; - } - return str; -}; - -/** - * camelCase the characters in the given `string`. - * - * ```handlebars - * {{camelcase "foo bar baz"}}; - * - * ``` - * @param {String} `string` The string to camelcase. - * @return {String} - * @api public - */ - -helpers.camelcase = function(str) { - if (!util.isString(str)) return ''; - return utils.changecase(str, function(ch) { - return ch.toUpperCase(); - }); -}; - -/** - * Capitalize the first word in a sentence. - * - * ```handlebars - * {{capitalize "foo bar baz"}} - * - * ``` - * @param {String} `str` - * @return {String} - * @api public - */ - -helpers.capitalize = function(str) { - if (!util.isString(str)) return ''; - return str.charAt(0).toUpperCase() + str.slice(1); -}; - -/** - * Capitalize all words in a string. - * - * ```handlebars - * {{capitalizeAll "foo bar baz"}} - * - * ``` - * @param {String} `str` - * @return {String} - * @api public - */ - -helpers.capitalizeAll = function(str) { - if (!util.isString(str)) return ''; - if (util.isString(str)) { - return str.replace(/\w\S*/g, function(word) { - return helpers.capitalize(word); - }); - } -}; - -/** - * Center a string using non-breaking spaces - * - * @param {String} `str` - * @param {String} `spaces` - * @return {String} - * @api public - */ - -helpers.center = function(str, spaces) { - if (!util.isString(str)) return ''; - var space = ''; - var i = 0; - while (i < spaces) { - space += ' '; - i++; - } - return space + str + space; -}; - -/** - * Like trim, but removes both extraneous whitespace **and - * non-word characters** from the beginning and end of a string. - * - * ```handlebars - * {{chop "_ABC_"}} - * - * - * {{chop "-ABC-"}} - * - * - * {{chop " ABC "}} - * - * ``` - * @param {String} `string` The string to chop. - * @return {String} - * @api public - */ - -helpers.chop = function(str) { - if (!util.isString(str)) return ''; - return utils.chop(str); -}; - -/** - * dash-case the characters in `string`. Replaces non-word - * characters and periods with hyphens. - * - * ```handlebars - * {{dashcase "a-b-c d_e"}} - * - * ``` - * @param {String} `string` - * @return {String} - * @api public - */ - -helpers.dashcase = function(str) { - if (!util.isString(str)) return ''; - return utils.changecase(str, function(ch) { - return '-' + ch; - }); -}; - -/** - * dot.case the characters in `string`. - * - * ```handlebars - * {{dotcase "a-b-c d_e"}} - * - * ``` - * @param {String} `string` - * @return {String} - * @api public - */ - -helpers.dotcase = function(str) { - if (!util.isString(str)) return ''; - return utils.changecase(str, function(ch) { - return '.' + ch; - }); -}; - -/** - * Lowercase all of the characters in the given string. Alias for [lowercase](#lowercase). - * - * ```handlebars - * {{downcase "aBcDeF"}} - * - * ``` - * @param {String} `string` - * @return {String} - * @alias lowercase - * @api public - */ - -helpers.downcase = function() { - return helpers.lowercase.apply(this, arguments); -}; - -/** - * Truncates a string to the specified `length`, and appends - * it with an elipsis, `…`. - * - * ```handlebars - * {{ellipsis (sanitize "foo bar baz"), 7}} - * - * {{ellipsis "foo bar baz", 7}} - * - * ``` - * @param {String} `str` - * @param {Number} `length` The desired length of the returned string. - * @return {String} The truncated string. - * @api public - */ - -helpers.ellipsis = function(str, limit) { - if (util.isString(str)) { - if (str.length <= limit) { - return str; - } - return helpers.truncate(str, limit) + '…'; - } -}; - -/** - * Replace spaces in a string with hyphens. - * - * ```handlebars - * {{hyphenate "foo bar baz qux"}} - * - * ``` - * @param {String} `str` - * @return {String} - * @api public - */ - -helpers.hyphenate = function(str) { - if (!util.isString(str)) return ''; - return str.split(' ').join('-'); -}; - -/** - * Return true if `value` is a string. - * - * ```handlebars - * {{isString "foo"}} - * - * ``` - * @param {String} `value` - * @return {Boolean} - * @api public - */ - -helpers.isString = function(value) { - return typeof value === 'string'; -}; - -/** - * Lowercase all characters in the given string. - * - * ```handlebars - * {{lowercase "Foo BAR baZ"}} - * - * ``` - * @param {String} `str` - * @return {String} - * @api public - */ - -helpers.lowercase = function(str) { - if (util.isObject(str) && str.fn) { - return str.fn(this).toLowerCase(); - } - if (!util.isString(str)) return ''; - return str.toLowerCase(); -}; - -/** - * Return the number of occurrences of `substring` within the - * given `string`. - * - * ```handlebars - * {{occurrences "foo bar foo bar baz" "foo"}} - * - * ``` - * @param {String} `str` - * @param {String} `substring` - * @return {Number} Number of occurrences - * @api public - */ - -helpers.occurrences = function(str, substring) { - if (!util.isString(str)) return ''; - var len = substring.length; - var pos = 0; - var n = 0; - - while ((pos = str.indexOf(substring, pos)) > -1) { - n++; - pos += len; - } - return n; -}; - -/** - * PascalCase the characters in `string`. - * - * ```handlebars - * {{pascalcase "foo bar baz"}} - * - * ``` - * @param {String} `string` - * @return {String} - * @api public - */ - -helpers.pascalcase = function(str) { - if (!util.isString(str)) return ''; - str = utils.changecase(str, function(ch) { - return ch.toUpperCase(); - }); - return str.charAt(0).toUpperCase() + str.slice(1); -}; - -/** - * path/case the characters in `string`. - * - * ```handlebars - * {{pathcase "a-b-c d_e"}} - * - * ``` - * @param {String} `string` - * @return {String} - * @api public - */ - -helpers.pathcase = function(str) { - if (!util.isString(str)) return ''; - return utils.changecase(str, function(ch) { - return '/' + ch; - }); -}; - -/** - * Replace spaces in the given string with pluses. - * - * ```handlebars - * {{plusify "foo bar baz"}} - * - * ``` - * @param {String} `str` The input string - * @return {String} Input string with spaces replaced by plus signs - * @source Stephen Way - * @api public - */ - -helpers.plusify = function(str, ch) { - if (!util.isString(str)) return ''; - if (!util.isString(ch)) ch = ' '; - return str.split(ch).join('+'); -}; - -/** - * Prepends the given `string` with the specified `prefix`. - * - * ```handlebars - * - * {{prepend val "foo-"}} - * - * ``` - * @param {String} `str` - * @param {String} `prefix` - * @return {String} - * @api public - */ - -helpers.prepend = function(str, prefix) { - return typeof str === 'string' && typeof prefix === 'string' - ? (prefix + str) - : str; -}; - -/** - * Render a block without processing mustache templates inside the block. - * - * ```handlebars - * {{{{#raw}}}} - * {{foo}} - * {{{{/raw}}}} - * - * ``` - * - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.raw = function(options) { - var str = options.fn(); - var opts = util.options(this, options); - if (opts.escape !== false) { - var idx = 0; - while (((idx = str.indexOf('{{', idx)) !== -1)) { - if (str[idx - 1] !== '\\') { - str = str.slice(0, idx) + '\\' + str.slice(idx); - } - idx += 3; - } - } - return str; -}; - -/** - * Remove all occurrences of `substring` from the given `str`. - * - * ```handlebars - * {{remove "a b a b a b" "a "}} - * - * ``` - * @param {String} `str` - * @param {String} `substring` - * @return {String} - * @api public - */ - -helpers.remove = function(str, ch) { - if (!util.isString(str)) return ''; - if (!util.isString(ch)) return str; - return str.split(ch).join(''); -}; - -/** - * Remove the first occurrence of `substring` from the given `str`. - * - * ```handlebars - * {{remove "a b a b a b" "a"}} - * - * ``` - * @param {String} `str` - * @param {String} `substring` - * @return {String} - * @api public - */ - -helpers.removeFirst = function(str, ch) { - if (!util.isString(str)) return ''; - if (!util.isString(ch)) return str; - return str.replace(ch, ''); -}; - -/** - * Replace all occurrences of substring `a` with substring `b`. - * - * ```handlebars - * {{replace "a b a b a b" "a" "z"}} - * - * ``` - * @param {String} `str` - * @param {String} `a` - * @param {String} `b` - * @return {String} - * @api public - */ - -helpers.replace = function(str, a, b) { - if (!util.isString(str)) return ''; - if (!util.isString(a)) return str; - if (!util.isString(b)) b = ''; - return str.split(a).join(b); -}; - -/** - * Replace the first occurrence of substring `a` with substring `b`. - * - * ```handlebars - * {{replace "a b a b a b" "a" "z"}} - * - * ``` - * @param {String} `str` - * @param {String} `a` - * @param {String} `b` - * @return {String} - * @api public - */ - -helpers.replaceFirst = function(str, a, b) { - if (!util.isString(str)) return ''; - if (!util.isString(a)) return str; - if (!util.isString(b)) b = ''; - return str.replace(a, b); -}; - -/** - * Reverse a string. - * - * ```handlebars - * {{reverse "abcde"}} - * - * ``` - * @param {String} `str` - * @return {String} - * @api public - */ - -helpers.reverse = function(str) { - if (!util.isString(str)) return ''; - return str.split('').reverse().join(''); -}; - -/** - * Sentence case the given string - * - * ```handlebars - * {{sentence "hello world. goodbye world."}} - * - * ``` - * @param {String} `str` - * @return {String} - * @api public - */ - -helpers.sentence = function(str) { - if (!util.isString(str)) return ''; - return str.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g, function(txt) { - return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); - }); -}; - -/** - * snake_case the characters in the given `string`. - * - * ```handlebars - * {{snakecase "a-b-c d_e"}} - * - * ``` - * @param {String} `string` - * @return {String} - * @api public - */ - -helpers.snakecase = function(str) { - if (!util.isString(str)) return ''; - return utils.changecase(str, function(ch) { - return '_' + ch; - }); -}; - -/** - * Split `string` by the given `character`. - * - * ```handlebars - * {{split "a,b,c" ","}} - * - * ``` - * @param {String} `string` The string to split. - * @return {String} `character` Default is an empty string. - * @api public - */ - -helpers.split = function(str, ch) { - if (!util.isString(str)) return ''; - if (!util.isString(ch)) ch = ','; - return str.split(ch); -}; - -/** - * Tests whether a string begins with the given prefix. - * - * ```handlebars - * {{#startsWith "Goodbye" "Hello, world!"}} - * Whoops - * {{else}} - * Bro, do you even hello world? - * {{/startsWith}} - * ``` - * @contributor Dan Fox - * @param {String} `prefix` - * @param {String} `testString` - * @param {String} `options` - * @return {String} - * @block - * @api public - */ - -helpers.startsWith = function(prefix, str, options) { - var args = [].slice.call(arguments); - options = args.pop(); - if (util.isString(str) && str.indexOf(prefix) === 0) { - return options.fn(this); - } - if (typeof options.inverse === 'function') { - return options.inverse(this); - } - return ''; -}; - -/** - * Title case the given string. - * - * ```handlebars - * {{titleize "this is title case"}} - * - * ``` - * @param {String} `str` - * @return {String} - * @api public - */ - -helpers.titleize = function(str) { - if (!util.isString(str)) return ''; - var title = str.replace(/[- _]+/g, ' '); - var words = title.split(' '); - var len = words.length; - var res = []; - var i = 0; - while (len--) { - var word = words[i++]; - res.push(exports.capitalize(word)); - } - return res.join(' '); -}; - -/** - * Removes extraneous whitespace from the beginning and end - * of a string. - * - * ```handlebars - * {{trim " ABC "}} - * - * ``` - * @param {String} `string` The string to trim. - * @return {String} - * @api public - */ - -helpers.trim = function(str) { - return typeof str === 'string' ? str.trim() : ''; -}; - -/** - * Removes extraneous whitespace from the beginning of a string. - * - * ```handlebars - * {{trim " ABC "}} - * - * ``` - * @param {String} `string` The string to trim. - * @return {String} - * @api public - */ - -helpers.trimLeft = function(str) { - if (util.isString(str)) { - return str.replace(/^\s+/, ''); - } -}; - -/** - * Removes extraneous whitespace from the end of a string. - * - * ```handlebars - * {{trimRight " ABC "}} - * - * ``` - * @param {String} `string` The string to trim. - * @return {String} - * @api public - */ - -helpers.trimRight = function(str) { - if (util.isString(str)) { - return str.replace(/\s+$/, ''); - } -}; - -/** - * Truncate a string to the specified `length`. Also see [ellipsis](#ellipsis). - * - * ```handlebars - * truncate("foo bar baz", 7); - * - * truncate(sanitize("foo bar baz", 7)); - * - * ``` - * @param {String} `str` - * @param {Number} `limit` The desired length of the returned string. - * @param {String} `suffix` Optionally supply a string to use as a suffix to - * denote when the string has been truncated. Otherwise an ellipsis (`…`) will be used. - * @return {String} The truncated string. - * @api public - */ - -helpers.truncate = function(str, limit, suffix) { - if (util.isString(str)) { - if (typeof suffix !== 'string') { - suffix = ''; - } - if (str.length > limit) { - return str.slice(0, limit - suffix.length) + suffix; - } - return str; - } -}; - -/** - * Truncate a string to have the specified number of words. - * Also see [truncate](#truncate). - * - * ```handlebars - * truncateWords("foo bar baz", 1); - * - * truncateWords("foo bar baz", 2); - * - * truncateWords("foo bar baz", 3); - * - * ``` - * @param {String} `str` - * @param {Number} `limit` The desired length of the returned string. - * @param {String} `suffix` Optionally supply a string to use as a suffix to - * denote when the string has been truncated. - * @return {String} The truncated string. - * @api public - */ - -helpers.truncateWords = function(str, count, suffix) { - if (util.isString(str) && isNumber(count)) { - if (typeof suffix !== 'string') { - suffix = '…'; - } - - var num = Number(count); - var arr = str.split(/[ \t]/); - if (num > arr.length) { - arr = arr.slice(0, num); - } - - var val = arr.join(' ').trim(); - return val + suffix; - } -}; - -/** - * Uppercase all of the characters in the given string. Alias for [uppercase](#uppercase). - * - * ```handlebars - * {{upcase "aBcDeF"}} - * - * ``` - * @param {String} `string` - * @return {String} - * @alias uppercase - * @api public - */ - -helpers.upcase = function() { - return helpers.uppercase.apply(this, arguments); -}; - -/** - * Uppercase all of the characters in the given string. If used as a - * block helper it will uppercase the entire block. This helper - * does not support inverse blocks. - * - * ```handlebars - * {{uppercase "aBcDeF"}} - * - * ``` - * @related capitalize capitalizeAll - * @param {String} `str` The string to uppercase - * @param {Object} `options` Handlebars options object - * @return {String} - * @block - * @api public - */ - -helpers.uppercase = function(str) { - if (util.isObject(str) && str.fn) { - return str.fn(this).toUpperCase(); - } - if (!util.isString(str)) return ''; - return str.toUpperCase(); -}; diff --git a/node_modules/handlebars-helpers/lib/url.js b/node_modules/handlebars-helpers/lib/url.js deleted file mode 100644 index 110a8165a..000000000 --- a/node_modules/handlebars-helpers/lib/url.js +++ /dev/null @@ -1,132 +0,0 @@ -'use strict'; - -var url = require('url'); -var util = require('handlebars-utils'); -var querystring = require('querystring'); -var helpers = module.exports; - -/** - * Encodes a Uniform Resource Identifier (URI) component - * by replacing each instance of certain characters by - * one, two, three, or four escape sequences representing - * the UTF-8 encoding of the character. - * - * @param {String} `str` The un-encoded string - * @return {String} The endcoded string - * @api public - */ - -helpers.encodeURI = function(str) { - if (util.isString(str)) { - return encodeURIComponent(str); - } -}; - -/** - * Escape the given string by replacing characters with escape sequences. - * Useful for allowing the string to be used in a URL, etc. - * - * @param {String} `str` - * @return {String} Escaped string. - * @api public - */ - -helpers.escape = function(str) { - if (util.isString(str)) { - return querystring.escape(str); - } -}; - -/** - * Decode a Uniform Resource Identifier (URI) component. - * - * @param {String} `str` - * @return {String} - * @api public - */ - -helpers.decodeURI = function(str) { - if (util.isString(str)) { - return decodeURIComponent(str); - } -}; - -/** - * Alias for [encodeURI](#encodeuri). - * @api public - */ - -helpers.url_encode = function() { - return helpers.encodeURI.apply(this, arguments); -}; - -/** - * Alias for [decodeURI](#decodeuri). - * @api public - */ - -helpers.url_decode = function(val) { - return helpers.decodeURI.apply(this, arguments); -}; - -/** - * Take a base URL, and a href URL, and resolve them as a - * browser would for an anchor tag. - * - * @param {String} `base` - * @param {String} `href` - * @return {String} - * @api public - */ - -helpers.urlResolve = function(base, href) { - return url.resolve(base, href); -}; - -/** - * Parses a `url` string into an object. - * - * @param {String} `str` URL string - * @return {String} Returns stringified JSON - * @api public - */ - -helpers.urlParse = function(str) { - return url.parse(str); -}; - -/** - * Strip the query string from the given `url`. - * - * @param {String} `url` - * @return {String} the url without the queryString - * @api public - */ - -helpers.stripQuerystring = function(str) { - if (util.isString(str)) { - return str.split('?')[0]; - } -}; - -/** - * Strip protocol from a `url`. Useful for displaying media that - * may have an 'http' protocol on secure connections. - * - * ```handlebars - * - * {{stripProtocol url}} - * - * ``` - * @param {String} `str` - * @return {String} the url with http protocol stripped - * @api public - */ - -helpers.stripProtocol = function(str) { - if (util.isString(str)) { - var parsed = url.parse(str); - parsed.protocol = ''; - return parsed.format(); - } -}; diff --git a/node_modules/handlebars-helpers/lib/utils/html.js b/node_modules/handlebars-helpers/lib/utils/html.js deleted file mode 100644 index 2d2ff6dbf..000000000 --- a/node_modules/handlebars-helpers/lib/utils/html.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; - -var util = require('handlebars-utils'); -var striptags = require('striptags'); - -/** - * Expose `utils` - */ - -var html = module.exports; - -/** - * Remove extra newlines from HTML, respect indentation. - * - * @param {String} html - * @return {String} - * @api public - */ - -html.condense = function(str) { - return str.replace(/(\r\n|\r|\n|\u2028|\u2029) {2,}/g, '\n'); -}; - -/** - * Add a single newline above code comments in HTML - * - * @param {String} `html` - * @return {String} - * @api public - */ - -html.padcomments = function(str) { - return str.replace(/(\s* - - - -## Table of Contents - -- [Examples](#examples) - - [Consuming a source map](#consuming-a-source-map) - - [Generating a source map](#generating-a-source-map) - - [With SourceNode (high level API)](#with-sourcenode-high-level-api) - - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api) -- [API](#api) - - [SourceMapConsumer](#sourcemapconsumer) - - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap) - - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans) - - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition) - - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition) - - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition) - - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources) - - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing) - - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order) - - [SourceMapGenerator](#sourcemapgenerator) - - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap) - - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer) - - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping) - - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent) - - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath) - - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring) - - [SourceNode](#sourcenode) - - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name) - - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath) - - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk) - - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk) - - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent) - - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn) - - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn) - - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep) - - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement) - - [SourceNode.prototype.toString()](#sourcenodeprototypetostring) - - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap) - - - -## Examples - -### Consuming a source map - -```js -var rawSourceMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: 'http://example.com/www/js/', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' -}; - -var smc = new SourceMapConsumer(rawSourceMap); - -console.log(smc.sources); -// [ 'http://example.com/www/js/one.js', -// 'http://example.com/www/js/two.js' ] - -console.log(smc.originalPositionFor({ - line: 2, - column: 28 -})); -// { source: 'http://example.com/www/js/two.js', -// line: 2, -// column: 10, -// name: 'n' } - -console.log(smc.generatedPositionFor({ - source: 'http://example.com/www/js/two.js', - line: 2, - column: 10 -})); -// { line: 2, column: 28 } - -smc.eachMapping(function (m) { - // ... -}); -``` - -### Generating a source map - -In depth guide: -[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) - -#### With SourceNode (high level API) - -```js -function compile(ast) { - switch (ast.type) { - case 'BinaryExpression': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - [compile(ast.left), " + ", compile(ast.right)] - ); - case 'Literal': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - String(ast.value) - ); - // ... - default: - throw new Error("Bad AST"); - } -} - -var ast = parse("40 + 2", "add.js"); -console.log(compile(ast).toStringWithSourceMap({ - file: 'add.js' -})); -// { code: '40 + 2', -// map: [object SourceMapGenerator] } -``` - -#### With SourceMapGenerator (low level API) - -```js -var map = new SourceMapGenerator({ - file: "source-mapped.js" -}); - -map.addMapping({ - generated: { - line: 10, - column: 35 - }, - source: "foo.js", - original: { - line: 33, - column: 2 - }, - name: "christopher" -}); - -console.log(map.toString()); -// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' -``` - -## API - -Get a reference to the module: - -```js -// Node.js -var sourceMap = require('source-map'); - -// Browser builds -var sourceMap = window.sourceMap; - -// Inside Firefox -const sourceMap = require("devtools/toolkit/sourcemap/source-map.js"); -``` - -### SourceMapConsumer - -A SourceMapConsumer instance represents a parsed source map which we can query -for information about the original file positions by giving it a file position -in the generated source. - -#### new SourceMapConsumer(rawSourceMap) - -The only parameter is the raw source map (either as a string which can be -`JSON.parse`'d, or an object). According to the spec, source maps have the -following attributes: - -* `version`: Which version of the source map spec this map is following. - -* `sources`: An array of URLs to the original source files. - -* `names`: An array of identifiers which can be referenced by individual - mappings. - -* `sourceRoot`: Optional. The URL root from which all sources are relative. - -* `sourcesContent`: Optional. An array of contents of the original source files. - -* `mappings`: A string of base64 VLQs which contain the actual mappings. - -* `file`: Optional. The generated filename this source map is associated with. - -```js -var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData); -``` - -#### SourceMapConsumer.prototype.computeColumnSpans() - -Compute the last column for each generated mapping. The last column is -inclusive. - -```js -// Before: -consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1 }, -// { line: 2, -// column: 10 }, -// { line: 2, -// column: 20 } ] - -consumer.computeColumnSpans(); - -// After: -consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1, -// lastColumn: 9 }, -// { line: 2, -// column: 10, -// lastColumn: 19 }, -// { line: 2, -// column: 20, -// lastColumn: Infinity } ] - -``` - -#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) - -Returns the original source, line, and column information for the generated -source's line and column positions provided. The only argument is an object with -the following properties: - -* `line`: The line number in the generated source. Line numbers in - this library are 1-based (note that the underlying source map - specification uses 0-based line numbers -- this library handles the - translation). - -* `column`: The column number in the generated source. Column numbers - in this library are 0-based. - -* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or - `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest - element that is smaller than or greater than the one we are searching for, - respectively, if the exact element cannot be found. Defaults to - `SourceMapConsumer.GREATEST_LOWER_BOUND`. - -and an object is returned with the following properties: - -* `source`: The original source file, or null if this information is not - available. - -* `line`: The line number in the original source, or null if this information is - not available. The line number is 1-based. - -* `column`: The column number in the original source, or null if this - information is not available. The column number is 0-based. - -* `name`: The original identifier, or null if this information is not available. - -```js -consumer.originalPositionFor({ line: 2, column: 10 }) -// { source: 'foo.coffee', -// line: 2, -// column: 2, -// name: null } - -consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 }) -// { source: null, -// line: null, -// column: null, -// name: null } -``` - -#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) - -Returns the generated line and column information for the original source, -line, and column positions provided. The only argument is an object with -the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. The line number is - 1-based. - -* `column`: The column number in the original source. The column - number is 0-based. - -and an object is returned with the following properties: - -* `line`: The line number in the generated source, or null. The line - number is 1-based. - -* `column`: The column number in the generated source, or null. The - column number is 0-based. - -```js -consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 }) -// { line: 1, -// column: 56 } -``` - -#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition) - -Returns all generated line and column information for the original source, line, -and column provided. If no column is provided, returns all mappings -corresponding to a either the line we are searching for or the next closest line -that has any mappings. Otherwise, returns all mappings corresponding to the -given line and either the column we are searching for or the next closest column -that has any offsets. - -The only argument is an object with the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. The line number is - 1-based. - -* `column`: Optional. The column number in the original source. The - column number is 0-based. - -and an array of objects is returned, each with the following properties: - -* `line`: The line number in the generated source, or null. The line - number is 1-based. - -* `column`: The column number in the generated source, or null. The - column number is 0-based. - -```js -consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1 }, -// { line: 2, -// column: 10 }, -// { line: 2, -// column: 20 } ] -``` - -#### SourceMapConsumer.prototype.hasContentsOfAllSources() - -Return true if we have the embedded source content for every source listed in -the source map, false otherwise. - -In other words, if this method returns `true`, then -`consumer.sourceContentFor(s)` will succeed for every source `s` in -`consumer.sources`. - -```js -// ... -if (consumer.hasContentsOfAllSources()) { - consumerReadyCallback(consumer); -} else { - fetchSources(consumer, consumerReadyCallback); -} -// ... -``` - -#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing]) - -Returns the original source content for the source provided. The only -argument is the URL of the original source file. - -If the source content for the given source is not found, then an error is -thrown. Optionally, pass `true` as the second param to have `null` returned -instead. - -```js -consumer.sources -// [ "my-cool-lib.clj" ] - -consumer.sourceContentFor("my-cool-lib.clj") -// "..." - -consumer.sourceContentFor("this is not in the source map"); -// Error: "this is not in the source map" is not in the source map - -consumer.sourceContentFor("this is not in the source map", true); -// null -``` - -#### SourceMapConsumer.prototype.eachMapping(callback, context, order) - -Iterate over each mapping between an original source/line/column and a -generated line/column in this source map. - -* `callback`: The function that is called with each mapping. Mappings have the - form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, - name }` - -* `context`: Optional. If specified, this object will be the value of `this` - every time that `callback` is called. - -* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or - `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over - the mappings sorted by the generated file's line/column order or the - original's source/line/column order, respectively. Defaults to - `SourceMapConsumer.GENERATED_ORDER`. - -```js -consumer.eachMapping(function (m) { console.log(m); }) -// ... -// { source: 'illmatic.js', -// generatedLine: 1, -// generatedColumn: 0, -// originalLine: 1, -// originalColumn: 0, -// name: null } -// { source: 'illmatic.js', -// generatedLine: 2, -// generatedColumn: 0, -// originalLine: 2, -// originalColumn: 0, -// name: null } -// ... -``` -### SourceMapGenerator - -An instance of the SourceMapGenerator represents a source map which is being -built incrementally. - -#### new SourceMapGenerator([startOfSourceMap]) - -You may pass an object with the following properties: - -* `file`: The filename of the generated source that this source map is - associated with. - -* `sourceRoot`: A root for all relative URLs in this source map. - -* `skipValidation`: Optional. When `true`, disables validation of mappings as - they are added. This can improve performance but should be used with - discretion, as a last resort. Even then, one should avoid using this flag when - running tests, if possible. - -```js -var generator = new sourceMap.SourceMapGenerator({ - file: "my-generated-javascript-file.js", - sourceRoot: "http://example.com/app/js/" -}); -``` - -#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) - -Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance. - -* `sourceMapConsumer` The SourceMap. - -```js -var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer); -``` - -#### SourceMapGenerator.prototype.addMapping(mapping) - -Add a single mapping from original source line and column to the generated -source's line and column for this source map being created. The mapping object -should have the following properties: - -* `generated`: An object with the generated line and column positions. - -* `original`: An object with the original line and column positions. - -* `source`: The original source file (relative to the sourceRoot). - -* `name`: An optional original token name for this mapping. - -```js -generator.addMapping({ - source: "module-one.scm", - original: { line: 128, column: 0 }, - generated: { line: 3, column: 456 } -}) -``` - -#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for an original source file. - -* `sourceFile` the URL of the original source file. - -* `sourceContent` the content of the source file. - -```js -generator.setSourceContent("module-one.scm", - fs.readFileSync("path/to/module-one.scm")) -``` - -#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]]) - -Applies a SourceMap for a source file to the SourceMap. -Each mapping to the supplied source file is rewritten using the -supplied SourceMap. Note: The resolution for the resulting mappings -is the minimum of this map and the supplied map. - -* `sourceMapConsumer`: The SourceMap to be applied. - -* `sourceFile`: Optional. The filename of the source file. - If omitted, sourceMapConsumer.file will be used, if it exists. - Otherwise an error will be thrown. - -* `sourceMapPath`: Optional. The dirname of the path to the SourceMap - to be applied. If relative, it is relative to the SourceMap. - - This parameter is needed when the two SourceMaps aren't in the same - directory, and the SourceMap to be applied contains relative source - paths. If so, those relative source paths need to be rewritten - relative to the SourceMap. - - If omitted, it is assumed that both SourceMaps are in the same directory, - thus not needing any rewriting. (Supplying `'.'` has the same effect.) - -#### SourceMapGenerator.prototype.toString() - -Renders the source map being generated to a string. - -```js -generator.toString() -// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}' -``` - -### SourceNode - -SourceNodes provide a way to abstract over interpolating and/or concatenating -snippets of generated JavaScript source code, while maintaining the line and -column information associated between those snippets and the original source -code. This is useful as the final intermediate representation a compiler might -use before outputting the generated JS and source map. - -#### new SourceNode([line, column, source[, chunk[, name]]]) - -* `line`: The original line number associated with this source node, or null if - it isn't associated with an original line. The line number is 1-based. - -* `column`: The original column number associated with this source node, or null - if it isn't associated with an original column. The column number - is 0-based. - -* `source`: The original source's filename; null if no filename is provided. - -* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see - below. - -* `name`: Optional. The original identifier. - -```js -var node = new SourceNode(1, 2, "a.cpp", [ - new SourceNode(3, 4, "b.cpp", "extern int status;\n"), - new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"), - new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"), -]); -``` - -#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath]) - -Creates a SourceNode from generated code and a SourceMapConsumer. - -* `code`: The generated code - -* `sourceMapConsumer` The SourceMap for the generated code - -* `relativePath` The optional path that relative sources in `sourceMapConsumer` - should be relative to. - -```js -var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8")); -var node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"), - consumer); -``` - -#### SourceNode.prototype.add(chunk) - -Add a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -```js -node.add(" + "); -node.add(otherNode); -node.add([leftHandOperandNode, " + ", rightHandOperandNode]); -``` - -#### SourceNode.prototype.prepend(chunk) - -Prepend a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -```js -node.prepend("/** Build Id: f783haef86324gf **/\n\n"); -``` - -#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for a source file. This will be added to the -`SourceMap` in the `sourcesContent` field. - -* `sourceFile`: The filename of the source file - -* `sourceContent`: The content of the source file - -```js -node.setSourceContent("module-one.scm", - fs.readFileSync("path/to/module-one.scm")) -``` - -#### SourceNode.prototype.walk(fn) - -Walk over the tree of JS snippets in this node and its children. The walking -function is called once for each snippet of JS and is passed that snippet and -the its original associated source's line/column location. - -* `fn`: The traversal function. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.walk(function (code, loc) { console.log("WALK:", code, loc); }) -// WALK: uno { source: 'b.js', line: 3, column: 4, name: null } -// WALK: dos { source: 'a.js', line: 1, column: 2, name: null } -// WALK: tres { source: 'a.js', line: 1, column: 2, name: null } -// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null } -``` - -#### SourceNode.prototype.walkSourceContents(fn) - -Walk over the tree of SourceNodes. The walking function is called for each -source file content and is passed the filename and source content. - -* `fn`: The traversal function. - -```js -var a = new SourceNode(1, 2, "a.js", "generated from a"); -a.setSourceContent("a.js", "original a"); -var b = new SourceNode(1, 2, "b.js", "generated from b"); -b.setSourceContent("b.js", "original b"); -var c = new SourceNode(1, 2, "c.js", "generated from c"); -c.setSourceContent("c.js", "original c"); - -var node = new SourceNode(null, null, null, [a, b, c]); -node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); }) -// WALK: a.js : original a -// WALK: b.js : original b -// WALK: c.js : original c -``` - -#### SourceNode.prototype.join(sep) - -Like `Array.prototype.join` except for SourceNodes. Inserts the separator -between each of this source node's children. - -* `sep`: The separator. - -```js -var lhs = new SourceNode(1, 2, "a.rs", "my_copy"); -var operand = new SourceNode(3, 4, "a.rs", "="); -var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()"); - -var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]); -var joinedNode = node.join(" "); -``` - -#### SourceNode.prototype.replaceRight(pattern, replacement) - -Call `String.prototype.replace` on the very right-most source snippet. Useful -for trimming white space from the end of a source node, etc. - -* `pattern`: The pattern to replace. - -* `replacement`: The thing to replace the pattern with. - -```js -// Trim trailing white space. -node.replaceRight(/\s*$/, ""); -``` - -#### SourceNode.prototype.toString() - -Return the string representation of this source node. Walks over the tree and -concatenates all the various snippets together to one string. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.toString() -// 'unodostresquatro' -``` - -#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) - -Returns the string representation of this tree of source nodes, plus a -SourceMapGenerator which contains all the mappings between the generated and -original sources. - -The arguments are the same as those to `new SourceMapGenerator`. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.toStringWithSourceMap({ file: "my-output-file.js" }) -// { code: 'unodostresquatro', -// map: [object SourceMapGenerator] } -``` diff --git a/node_modules/handlebars/node_modules/source-map/dist/source-map.debug.js b/node_modules/handlebars/node_modules/source-map/dist/source-map.debug.js deleted file mode 100644 index aad0620d7..000000000 --- a/node_modules/handlebars/node_modules/source-map/dist/source-map.debug.js +++ /dev/null @@ -1,3234 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["sourceMap"] = factory(); - else - root["sourceMap"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - /* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ - exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; - exports.SourceNode = __webpack_require__(10).SourceNode; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var base64VLQ = __webpack_require__(2); - var util = __webpack_require__(4); - var ArraySet = __webpack_require__(5).ArraySet; - var MappingList = __webpack_require__(6).MappingList; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - var base64 = __webpack_require__(3); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - - /** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ - exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; - }; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || urlRegexp.test(aPath); - }; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - - var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); - }()); - - function identity (s) { - return s; - } - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - - function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 === null) { - return 1; // aStr2 !== null - } - - if (aStr2 === null) { - return -1; // aStr1 !== null - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; - } - - /** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - - /** - * Strip any JSON XSSI avoidance prefix from the string (as documented - * in the source maps specification), and then parse the string as - * JSON. - */ - function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); - } - exports.parseSourceMapInput = parseSourceMapInput; - - /** - * Compute the URL of a source given the the source root, the source's - * URL, and the source map's URL. - */ - function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ''; - - if (sourceRoot) { - // This follows what Chrome does. - if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { - sourceRoot += '/'; - } - // The spec says: - // Line 4: An optional source root, useful for relocating source - // files on a server or removing repeated values in the - // “sources” entry. This value is prepended to the individual - // entries in the “source” field. - sourceURL = sourceRoot + sourceURL; - } - - // Historically, SourceMapConsumer did not take the sourceMapURL as - // a parameter. This mode is still somewhat supported, which is why - // this code block is conditional. However, it's preferable to pass - // the source map URL to SourceMapConsumer, so that this function - // can implement the source URL resolution algorithm as outlined in - // the spec. This block is basically the equivalent of: - // new URL(sourceURL, sourceMapURL).toString() - // ... except it avoids using URL, which wasn't available in the - // older releases of node still supported by this library. - // - // The spec says: - // If the sources are not absolute URLs after prepending of the - // “sourceRoot”, the sources are resolved relative to the - // SourceMap (like resolving script src in a html document). - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - // Strip the last path component, but keep the "/". - var index = parsed.path.lastIndexOf('/'); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - - return normalize(sourceURL); - } - exports.computeSourceURL = computeSourceURL; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - - /** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ - function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - - /** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ - function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; - } - - /** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ - MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - - /** - * Add the given source mapping. - * - * @param Object aMapping - */ - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - - /** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - - exports.MappingList = MappingList; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var binarySearch = __webpack_require__(8); - var ArraySet = __webpack_require__(5).ArraySet; - var base64VLQ = __webpack_require__(2); - var quickSort = __webpack_require__(9).quickSort; - - function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) - : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); - } - - SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - - /** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number is 1-based. - * - column: Optional. the column number in the original source. - * The column number is 0-based. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - - exports.SourceMapConsumer = SourceMapConsumer; - - /** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The first parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this._absoluteSources = this._sources.toArray().map(function (s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; - } - - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - - /** - * Utility function to find the index of a source. Returns -1 if not - * found. - */ - BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - - // Maybe aSource is an absolute URL as returned by |sources|. In - // this case we can't simply undo the transform. - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - - return -1; - }; - - /** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @param String aSourceMapURL - * The URL at which the source map can be found (optional) - * @returns BasicSourceMapConsumer - */ - BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function (s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - BasicSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._absoluteSources.slice(); - } - }); - - /** - * Provide the JIT with a nice shape / hidden class. - */ - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - - /** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ - BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ - BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } - - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - - /** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The first parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ - function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) - } - }); - } - - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - - /** - * The version of the source mapping spec that we are consuming. - */ - IndexedSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ - IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - - /** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; - }; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - // It turns out that some (most?) JavaScript engines don't self-host - // `Array.prototype.sort`. This makes sense because C++ will likely remain - // faster than JS when doing raw CPU-intensive sorting. However, when using a - // custom comparator function, calling back and forth between the VM's C++ and - // JIT'd JS is rather slow *and* loses JIT type information, resulting in - // worse generated code for the comparator function than would be optimal. In - // fact, when sorting with a comparator, these costs outweigh the benefits of - // sorting in C++. By using our own JS-implemented Quick Sort (below), we get - // a ~3500ms mean speed-up in `bench/bench.html`. - - /** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - - /** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ - function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); - } - - /** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ - function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - - /** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ - exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - var util = __webpack_require__(4); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Newline character code for charCodeAt() comparisons - var NEWLINE_CODE = 10; - - // Private symbol for identifying `SourceNode`s when multiple versions of - // the source-map library are loaded. This MUST NOT CHANGE across - // versions! - var isSourceNode = "$$$isSourceNode$$$"; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex] || ''; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ''; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - - -/***/ }) -/******/ ]) -}); -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAxNjI0YzcyOTliODg3ZjdiZGY2NCIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEwQyxTQUFTO0FBQ25EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3hhQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBMkQ7QUFDM0QscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7O0FBRUg7QUFDQTtBQUNBOzs7Ozs7O0FDM0lBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFnQjtBQUNoQixpQkFBZ0I7O0FBRWhCLG9CQUFtQjtBQUNuQixxQkFBb0I7O0FBRXBCLGlCQUFnQjtBQUNoQixpQkFBZ0I7O0FBRWhCLGlCQUFnQjtBQUNoQixrQkFBaUI7O0FBRWpCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDbEVBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBMkIsUUFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWE7QUFDYjs7QUFFQTtBQUNBLGVBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUFzQztBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDdmVBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUFzQyxTQUFTO0FBQy9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7QUN4SEEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7QUM5RUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7O0FBRVg7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLE1BQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWEsa0NBQWtDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVEQUFzRCxZQUFZO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHdDQUF3QztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUErQyxtQkFBbUIsRUFBRTtBQUNwRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBNkIsTUFBTTtBQUNuQztBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsMkJBQTJCO0FBQzlDLHNCQUFxQiwrQ0FBK0M7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0Esc0JBQXFCLDRCQUE0QjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3huQ0EsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7QUM5R0EsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxNQUFNO0FBQ2pCO0FBQ0EsWUFBVyxTQUFTO0FBQ3BCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxNQUFNO0FBQ2pCO0FBQ0EsWUFBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNqSEEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLFNBQVM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQSx1Q0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQStDLFNBQVM7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsNkNBQTRDLGNBQWM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxjQUFhO0FBQ2I7QUFDQSxZQUFXO0FBQ1g7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQSxJQUFHOztBQUVILFdBQVU7QUFDVjs7QUFFQSIsImZpbGUiOiJzb3VyY2UtbWFwLmRlYnVnLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInNvdXJjZU1hcFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCAxNjI0YzcyOTliODg3ZjdiZGY2NCIsIi8qXG4gKiBDb3B5cmlnaHQgMjAwOS0yMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRS50eHQgb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbmV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyO1xuZXhwb3J0cy5Tb3VyY2VOb2RlID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW5vZGUnKS5Tb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zb3VyY2UtbWFwLmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIGJhc2U2NFZMUSA9IHJlcXVpcmUoJy4vYmFzZTY0LXZscScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcbnZhciBBcnJheVNldCA9IHJlcXVpcmUoJy4vYXJyYXktc2V0JykuQXJyYXlTZXQ7XG52YXIgTWFwcGluZ0xpc3QgPSByZXF1aXJlKCcuL21hcHBpbmctbGlzdCcpLk1hcHBpbmdMaXN0O1xuXG4vKipcbiAqIEFuIGluc3RhbmNlIG9mIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IgcmVwcmVzZW50cyBhIHNvdXJjZSBtYXAgd2hpY2ggaXNcbiAqIGJlaW5nIGJ1aWx0IGluY3JlbWVudGFsbHkuIFlvdSBtYXkgcGFzcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nXG4gKiBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBmaWxlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gc291cmNlUm9vdDogQSByb290IGZvciBhbGwgcmVsYXRpdmUgVVJMcyBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcihhQXJncykge1xuICBpZiAoIWFBcmdzKSB7XG4gICAgYUFyZ3MgPSB7fTtcbiAgfVxuICB0aGlzLl9maWxlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdmaWxlJywgbnVsbCk7XG4gIHRoaXMuX3NvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZVJvb3QnLCBudWxsKTtcbiAgdGhpcy5fc2tpcFZhbGlkYXRpb24gPSB1dGlsLmdldEFyZyhhQXJncywgJ3NraXBWYWxpZGF0aW9uJywgZmFsc2UpO1xuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX21hcHBpbmdzID0gbmV3IE1hcHBpbmdMaXN0KCk7XG4gIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG59XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgU291cmNlTWFwR2VuZXJhdG9yIGJhc2VkIG9uIGEgU291cmNlTWFwQ29uc3VtZXJcbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2Zyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyKSB7XG4gICAgdmFyIHNvdXJjZVJvb3QgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlUm9vdDtcbiAgICB2YXIgZ2VuZXJhdG9yID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcih7XG4gICAgICBmaWxlOiBhU291cmNlTWFwQ29uc3VtZXIuZmlsZSxcbiAgICAgIHNvdXJjZVJvb3Q6IHNvdXJjZVJvb3RcbiAgICB9KTtcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuZWFjaE1hcHBpbmcoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIHZhciBuZXdNYXBwaW5nID0ge1xuICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG5ld01hcHBpbmcuc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld01hcHBpbmcub3JpZ2luYWwgPSB7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5uYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGdlbmVyYXRvci5hZGRNYXBwaW5nKG5ld01hcHBpbmcpO1xuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBzb3VyY2VSZWxhdGl2ZSA9IHNvdXJjZUZpbGU7XG4gICAgICBpZiAoc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VSZWxhdGl2ZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZ2VuZXJhdG9yLl9zb3VyY2VzLmhhcyhzb3VyY2VSZWxhdGl2ZSkpIHtcbiAgICAgICAgZ2VuZXJhdG9yLl9zb3VyY2VzLmFkZChzb3VyY2VSZWxhdGl2ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGdlbmVyYXRvci5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH07XG5cbi8qKlxuICogQWRkIGEgc2luZ2xlIG1hcHBpbmcgZnJvbSBvcmlnaW5hbCBzb3VyY2UgbGluZSBhbmQgY29sdW1uIHRvIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBmb3IgdGhpcyBzb3VyY2UgbWFwIGJlaW5nIGNyZWF0ZWQuIFRoZSBtYXBwaW5nXG4gKiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBnZW5lcmF0ZWQ6IEFuIG9iamVjdCB3aXRoIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBvcmlnaW5hbDogQW4gb2JqZWN0IHdpdGggdGhlIG9yaWdpbmFsIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMuXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUgKHJlbGF0aXZlIHRvIHRoZSBzb3VyY2VSb290KS5cbiAqICAgLSBuYW1lOiBBbiBvcHRpb25hbCBvcmlnaW5hbCB0b2tlbiBuYW1lIGZvciB0aGlzIG1hcHBpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYWRkTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hZGRNYXBwaW5nKGFBcmdzKSB7XG4gICAgdmFyIGdlbmVyYXRlZCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnZ2VuZXJhdGVkJyk7XG4gICAgdmFyIG9yaWdpbmFsID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdvcmlnaW5hbCcsIG51bGwpO1xuICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScsIG51bGwpO1xuICAgIHZhciBuYW1lID0gdXRpbC5nZXRBcmcoYUFyZ3MsICduYW1lJywgbnVsbCk7XG5cbiAgICBpZiAoIXRoaXMuX3NraXBWYWxpZGF0aW9uKSB7XG4gICAgICB0aGlzLl92YWxpZGF0ZU1hcHBpbmcoZ2VuZXJhdGVkLCBvcmlnaW5hbCwgc291cmNlLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IFN0cmluZyhzb3VyY2UpO1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgIT0gbnVsbCkge1xuICAgICAgbmFtZSA9IFN0cmluZyhuYW1lKTtcbiAgICAgIGlmICghdGhpcy5fbmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9tYXBwaW5ncy5hZGQoe1xuICAgICAgZ2VuZXJhdGVkTGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IGdlbmVyYXRlZC5jb2x1bW4sXG4gICAgICBvcmlnaW5hbExpbmU6IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwubGluZSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiBvcmlnaW5hbCAhPSBudWxsICYmIG9yaWdpbmFsLmNvbHVtbixcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgbmFtZTogbmFtZVxuICAgIH0pO1xuICB9O1xuXG4vKipcbiAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuc2V0U291cmNlQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHZhciBzb3VyY2UgPSBhU291cmNlRmlsZTtcbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuX3NvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKGFTb3VyY2VDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIC8vIEFkZCB0aGUgc291cmNlIGNvbnRlbnQgdG8gdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwLlxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IF9zb3VyY2VzQ29udGVudHMgbWFwIGlmIHRoZSBwcm9wZXJ0eSBpcyBudWxsLlxuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIC8vIFJlbW92ZSB0aGUgc291cmNlIGZpbGUgZnJvbSB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBJZiB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAgaXMgZW1wdHksIHNldCB0aGUgcHJvcGVydHkgdG8gbnVsbC5cbiAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VzQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhzb3VyY2UpXTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9zb3VyY2VzQ29udGVudHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBtYXBwaW5ncyBvZiBhIHN1Yi1zb3VyY2UtbWFwIGZvciBhIHNwZWNpZmljIHNvdXJjZSBmaWxlIHRvIHRoZVxuICogc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQuIEVhY2ggbWFwcGluZyB0byB0aGUgc3VwcGxpZWQgc291cmNlIGZpbGUgaXNcbiAqIHJld3JpdHRlbiB1c2luZyB0aGUgc3VwcGxpZWQgc291cmNlIG1hcC4gTm90ZTogVGhlIHJlc29sdXRpb24gZm9yIHRoZVxuICogcmVzdWx0aW5nIG1hcHBpbmdzIGlzIHRoZSBtaW5pbWl1bSBvZiB0aGlzIG1hcCBhbmQgdGhlIHN1cHBsaWVkIG1hcC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBzb3VyY2UgbWFwIHRvIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgT3B0aW9uYWwuIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNlIGZpbGUuXG4gKiAgICAgICAgSWYgb21pdHRlZCwgU291cmNlTWFwQ29uc3VtZXIncyBmaWxlIHByb3BlcnR5IHdpbGwgYmUgdXNlZC5cbiAqIEBwYXJhbSBhU291cmNlTWFwUGF0aCBPcHRpb25hbC4gVGhlIGRpcm5hbWUgb2YgdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBtYXBcbiAqICAgICAgICB0byBiZSBhcHBsaWVkLiBJZiByZWxhdGl2ZSwgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcENvbnN1bWVyLlxuICogICAgICAgIFRoaXMgcGFyYW1ldGVyIGlzIG5lZWRlZCB3aGVuIHRoZSB0d28gc291cmNlIG1hcHMgYXJlbid0IGluIHRoZSBzYW1lXG4gKiAgICAgICAgZGlyZWN0b3J5LCBhbmQgdGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZCBjb250YWlucyByZWxhdGl2ZSBzb3VyY2VcbiAqICAgICAgICBwYXRocy4gSWYgc28sIHRob3NlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBuZWVkIHRvIGJlIHJld3JpdHRlblxuICogICAgICAgIHJlbGF0aXZlIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfYXBwbHlTb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyLCBhU291cmNlRmlsZSwgYVNvdXJjZU1hcFBhdGgpIHtcbiAgICB2YXIgc291cmNlRmlsZSA9IGFTb3VyY2VGaWxlO1xuICAgIC8vIElmIGFTb3VyY2VGaWxlIGlzIG9taXR0ZWQsIHdlIHdpbGwgdXNlIHRoZSBmaWxlIHByb3BlcnR5IG9mIHRoZSBTb3VyY2VNYXBcbiAgICBpZiAoYVNvdXJjZUZpbGUgPT0gbnVsbCkge1xuICAgICAgaWYgKGFTb3VyY2VNYXBDb25zdW1lci5maWxlID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLmFwcGx5U291cmNlTWFwIHJlcXVpcmVzIGVpdGhlciBhbiBleHBsaWNpdCBzb3VyY2UgZmlsZSwgJyArXG4gICAgICAgICAgJ29yIHRoZSBzb3VyY2UgbWFwXFwncyBcImZpbGVcIiBwcm9wZXJ0eS4gQm90aCB3ZXJlIG9taXR0ZWQuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgc291cmNlRmlsZSA9IGFTb3VyY2VNYXBDb25zdW1lci5maWxlO1xuICAgIH1cbiAgICB2YXIgc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgLy8gTWFrZSBcInNvdXJjZUZpbGVcIiByZWxhdGl2ZSBpZiBhbiBhYnNvbHV0ZSBVcmwgaXMgcGFzc2VkLlxuICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgIH1cbiAgICAvLyBBcHBseWluZyB0aGUgU291cmNlTWFwIGNhbiBhZGQgYW5kIHJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzb3VyY2VzIGFuZFxuICAgIC8vIHRoZSBuYW1lcyBhcnJheS5cbiAgICB2YXIgbmV3U291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICAgIHZhciBuZXdOYW1lcyA9IG5ldyBBcnJheVNldCgpO1xuXG4gICAgLy8gRmluZCBtYXBwaW5ncyBmb3IgdGhlIFwic291cmNlRmlsZVwiXG4gICAgdGhpcy5fbWFwcGluZ3MudW5zb3J0ZWRGb3JFYWNoKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IHNvdXJjZUZpbGUgJiYgbWFwcGluZy5vcmlnaW5hbExpbmUgIT0gbnVsbCkge1xuICAgICAgICAvLyBDaGVjayBpZiBpdCBjYW4gYmUgbWFwcGVkIGJ5IHRoZSBzb3VyY2UgbWFwLCB0aGVuIHVwZGF0ZSB0aGUgbWFwcGluZy5cbiAgICAgICAgdmFyIG9yaWdpbmFsID0gYVNvdXJjZU1hcENvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgIGNvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gQ29weSBtYXBwaW5nXG4gICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICAgICAgaWYgKGFTb3VyY2VNYXBQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gdXRpbC5qb2luKGFTb3VyY2VNYXBQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPSBvcmlnaW5hbC5saW5lO1xuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPSBvcmlnaW5hbC5jb2x1bW47XG4gICAgICAgICAgaWYgKG9yaWdpbmFsLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmICFuZXdTb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIG5ld1NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBuYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiAhbmV3TmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIG5ld05hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cblxuICAgIH0sIHRoaXMpO1xuICAgIHRoaXMuX3NvdXJjZXMgPSBuZXdTb3VyY2VzO1xuICAgIHRoaXMuX25hbWVzID0gbmV3TmFtZXM7XG5cbiAgICAvLyBDb3B5IHNvdXJjZXNDb250ZW50cyBvZiBhcHBsaWVkIG1hcC5cbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG4gIH07XG5cbi8qKlxuICogQSBtYXBwaW5nIGNhbiBoYXZlIG9uZSBvZiB0aGUgdGhyZWUgbGV2ZWxzIG9mIGRhdGE6XG4gKlxuICogICAxLiBKdXN0IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uXG4gKiAgIDIuIFRoZSBHZW5lcmF0ZWQgcG9zaXRpb24sIG9yaWdpbmFsIHBvc2l0aW9uLCBhbmQgb3JpZ2luYWwgc291cmNlLlxuICogICAzLiBHZW5lcmF0ZWQgYW5kIG9yaWdpbmFsIHBvc2l0aW9uLCBvcmlnaW5hbCBzb3VyY2UsIGFzIHdlbGwgYXMgYSBuYW1lXG4gKiAgICAgIHRva2VuLlxuICpcbiAqIFRvIG1haW50YWluIGNvbnNpc3RlbmN5LCB3ZSB2YWxpZGF0ZSB0aGF0IGFueSBuZXcgbWFwcGluZyBiZWluZyBhZGRlZCBmYWxsc1xuICogaW4gdG8gb25lIG9mIHRoZXNlIGNhdGVnb3JpZXMuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZhbGlkYXRlTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl92YWxpZGF0ZU1hcHBpbmcoYUdlbmVyYXRlZCwgYU9yaWdpbmFsLCBhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFOYW1lKSB7XG4gICAgLy8gV2hlbiBhT3JpZ2luYWwgaXMgdHJ1dGh5IGJ1dCBoYXMgZW1wdHkgdmFsdWVzIGZvciAubGluZSBhbmQgLmNvbHVtbixcbiAgICAvLyBpdCBpcyBtb3N0IGxpa2VseSBhIHByb2dyYW1tZXIgZXJyb3IuIEluIHRoaXMgY2FzZSB3ZSB0aHJvdyBhIHZlcnlcbiAgICAvLyBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIHRvIHRyeSB0byBndWlkZSB0aGVtIHRoZSByaWdodCB3YXkuXG4gICAgLy8gRm9yIGV4YW1wbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5bWVyL3BvbHltZXItYnVuZGxlci9wdWxsLzUxOVxuICAgIGlmIChhT3JpZ2luYWwgJiYgdHlwZW9mIGFPcmlnaW5hbC5saW5lICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgYU9yaWdpbmFsLmNvbHVtbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ29yaWdpbmFsLmxpbmUgYW5kIG9yaWdpbmFsLmNvbHVtbiBhcmUgbm90IG51bWJlcnMgLS0geW91IHByb2JhYmx5IG1lYW50IHRvIG9taXQgJyArXG4gICAgICAgICAgICAndGhlIG9yaWdpbmFsIG1hcHBpbmcgZW50aXJlbHkgYW5kIG9ubHkgbWFwIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uIElmIHNvLCBwYXNzICcgK1xuICAgICAgICAgICAgJ251bGwgZm9yIHRoZSBvcmlnaW5hbCBtYXBwaW5nIGluc3RlYWQgb2YgYW4gb2JqZWN0IHdpdGggZW1wdHkgb3IgbnVsbCB2YWx1ZXMuJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChhR2VuZXJhdGVkICYmICdsaW5lJyBpbiBhR2VuZXJhdGVkICYmICdjb2x1bW4nIGluIGFHZW5lcmF0ZWRcbiAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICYmICFhT3JpZ2luYWwgJiYgIWFTb3VyY2UgJiYgIWFOYW1lKSB7XG4gICAgICAvLyBDYXNlIDEuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2UgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbCAmJiAnbGluZScgaW4gYU9yaWdpbmFsICYmICdjb2x1bW4nIGluIGFPcmlnaW5hbFxuICAgICAgICAgICAgICYmIGFHZW5lcmF0ZWQubGluZSA+IDAgJiYgYUdlbmVyYXRlZC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbC5saW5lID4gMCAmJiBhT3JpZ2luYWwuY29sdW1uID49IDBcbiAgICAgICAgICAgICAmJiBhU291cmNlKSB7XG4gICAgICAvLyBDYXNlcyAyIGFuZCAzLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXBwaW5nOiAnICsgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBnZW5lcmF0ZWQ6IGFHZW5lcmF0ZWQsXG4gICAgICAgIHNvdXJjZTogYVNvdXJjZSxcbiAgICAgICAgb3JpZ2luYWw6IGFPcmlnaW5hbCxcbiAgICAgICAgbmFtZTogYU5hbWVcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogU2VyaWFsaXplIHRoZSBhY2N1bXVsYXRlZCBtYXBwaW5ncyBpbiB0byB0aGUgc3RyZWFtIG9mIGJhc2UgNjQgVkxRc1xuICogc3BlY2lmaWVkIGJ5IHRoZSBzb3VyY2UgbWFwIGZvcm1hdC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fc2VyaWFsaXplTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3Jfc2VyaWFsaXplTWFwcGluZ3MoKSB7XG4gICAgdmFyIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRMaW5lID0gMTtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgcHJldmlvdXNTb3VyY2UgPSAwO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgbmV4dDtcbiAgICB2YXIgbWFwcGluZztcbiAgICB2YXIgbmFtZUlkeDtcbiAgICB2YXIgc291cmNlSWR4O1xuXG4gICAgdmFyIG1hcHBpbmdzID0gdGhpcy5fbWFwcGluZ3MudG9BcnJheSgpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBtYXBwaW5ncy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgbWFwcGluZyA9IG1hcHBpbmdzW2ldO1xuICAgICAgbmV4dCA9ICcnXG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgIHdoaWxlIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIG5leHQgKz0gJzsnO1xuICAgICAgICAgIHByZXZpb3VzR2VuZXJhdGVkTGluZSsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgaWYgKCF1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmcsIG1hcHBpbmdzW2kgLSAxXSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0ICs9ICcsJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKG1hcHBpbmcuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlSWR4ID0gdGhpcy5fc291cmNlcy5pbmRleE9mKG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKHNvdXJjZUlkeCAtIHByZXZpb3VzU291cmNlKTtcbiAgICAgICAgcHJldmlvdXNTb3VyY2UgPSBzb3VyY2VJZHg7XG5cbiAgICAgICAgLy8gbGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkIGluIFNvdXJjZU1hcCBzcGVjIHZlcnNpb24gM1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbExpbmUgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbExpbmUpO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lIC0gMTtcblxuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4pO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuYW1lSWR4ID0gdGhpcy5fbmFtZXMuaW5kZXhPZihtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShuYW1lSWR4IC0gcHJldmlvdXNOYW1lKTtcbiAgICAgICAgICBwcmV2aW91c05hbWUgPSBuYW1lSWR4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZ2VuZXJhdGVTb3VyY2VzQ29udGVudChhU291cmNlcywgYVNvdXJjZVJvb3QpIHtcbiAgICByZXR1cm4gYVNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIGlmICghdGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGFTb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlID0gdXRpbC5yZWxhdGl2ZShhU291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHZhciBrZXkgPSB1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSk7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuX3NvdXJjZXNDb250ZW50cywga2V5KVxuICAgICAgICA/IHRoaXMuX3NvdXJjZXNDb250ZW50c1trZXldXG4gICAgICAgIDogbnVsbDtcbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBFeHRlcm5hbGl6ZSB0aGUgc291cmNlIG1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS50b0pTT04gPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9KU09OKCkge1xuICAgIHZhciBtYXAgPSB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLl92ZXJzaW9uLFxuICAgICAgc291cmNlczogdGhpcy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICBuYW1lczogdGhpcy5fbmFtZXMudG9BcnJheSgpLFxuICAgICAgbWFwcGluZ3M6IHRoaXMuX3NlcmlhbGl6ZU1hcHBpbmdzKClcbiAgICB9O1xuICAgIGlmICh0aGlzLl9maWxlICE9IG51bGwpIHtcbiAgICAgIG1hcC5maWxlID0gdGhpcy5fZmlsZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgbWFwLnNvdXJjZVJvb3QgPSB0aGlzLl9zb3VyY2VSb290O1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICBtYXAuc291cmNlc0NvbnRlbnQgPSB0aGlzLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KG1hcC5zb3VyY2VzLCBtYXAuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfTtcblxuLyoqXG4gKiBSZW5kZXIgdGhlIHNvdXJjZSBtYXAgYmVpbmcgZ2VuZXJhdGVkIHRvIGEgc3RyaW5nLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTigpKTtcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSBTb3VyY2VNYXBHZW5lcmF0b3I7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqIEJhc2VkIG9uIHRoZSBCYXNlIDY0IFZMUSBpbXBsZW1lbnRhdGlvbiBpbiBDbG9zdXJlIENvbXBpbGVyOlxuICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jbG9zdXJlLWNvbXBpbGVyL3NvdXJjZS9icm93c2UvdHJ1bmsvc3JjL2NvbS9nb29nbGUvZGVidWdnaW5nL3NvdXJjZW1hcC9CYXNlNjRWTFEuamF2YVxuICpcbiAqIENvcHlyaWdodCAyMDExIFRoZSBDbG9zdXJlIENvbXBpbGVyIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZVxuICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZFxuICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICogICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkXG4gKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSxcbiAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWVxuICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCcuL2Jhc2U2NCcpO1xuXG4vLyBBIHNpbmdsZSBiYXNlIDY0IGRpZ2l0IGNhbiBjb250YWluIDYgYml0cyBvZiBkYXRhLiBGb3IgdGhlIGJhc2UgNjQgdmFyaWFibGVcbi8vIGxlbmd0aCBxdWFudGl0aWVzIHdlIHVzZSBpbiB0aGUgc291cmNlIG1hcCBzcGVjLCB0aGUgZmlyc3QgYml0IGlzIHRoZSBzaWduLFxuLy8gdGhlIG5leHQgZm91ciBiaXRzIGFyZSB0aGUgYWN0dWFsIHZhbHVlLCBhbmQgdGhlIDZ0aCBiaXQgaXMgdGhlXG4vLyBjb250aW51YXRpb24gYml0LiBUaGUgY29udGludWF0aW9uIGJpdCB0ZWxscyB1cyB3aGV0aGVyIHRoZXJlIGFyZSBtb3JlXG4vLyBkaWdpdHMgaW4gdGhpcyB2YWx1ZSBmb2xsb3dpbmcgdGhpcyBkaWdpdC5cbi8vXG4vLyAgIENvbnRpbnVhdGlvblxuLy8gICB8ICAgIFNpZ25cbi8vICAgfCAgICB8XG4vLyAgIFYgICAgVlxuLy8gICAxMDEwMTFcblxudmFyIFZMUV9CQVNFX1NISUZUID0gNTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQkFTRSA9IDEgPDwgVkxRX0JBU0VfU0hJRlQ7XG5cbi8vIGJpbmFyeTogMDExMTExXG52YXIgVkxRX0JBU0VfTUFTSyA9IFZMUV9CQVNFIC0gMTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQ09OVElOVUFUSU9OX0JJVCA9IFZMUV9CQVNFO1xuXG4vKipcbiAqIENvbnZlcnRzIGZyb20gYSB0d28tY29tcGxlbWVudCB2YWx1ZSB0byBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDEgYmVjb21lcyAyICgxMCBiaW5hcnkpLCAtMSBiZWNvbWVzIDMgKDExIGJpbmFyeSlcbiAqICAgMiBiZWNvbWVzIDQgKDEwMCBiaW5hcnkpLCAtMiBiZWNvbWVzIDUgKDEwMSBiaW5hcnkpXG4gKi9cbmZ1bmN0aW9uIHRvVkxRU2lnbmVkKGFWYWx1ZSkge1xuICByZXR1cm4gYVZhbHVlIDwgMFxuICAgID8gKCgtYVZhbHVlKSA8PCAxKSArIDFcbiAgICA6IChhVmFsdWUgPDwgMSkgKyAwO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRvIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgZnJvbSBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAzICgxMSBiaW5hcnkpIGJlY29tZXMgLTFcbiAqICAgNCAoMTAwIGJpbmFyeSkgYmVjb21lcyAyLCA1ICgxMDEgYmluYXJ5KSBiZWNvbWVzIC0yXG4gKi9cbmZ1bmN0aW9uIGZyb21WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHZhciBpc05lZ2F0aXZlID0gKGFWYWx1ZSAmIDEpID09PSAxO1xuICB2YXIgc2hpZnRlZCA9IGFWYWx1ZSA+PiAxO1xuICByZXR1cm4gaXNOZWdhdGl2ZVxuICAgID8gLXNoaWZ0ZWRcbiAgICA6IHNoaWZ0ZWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSA2NCBWTFEgZW5jb2RlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0cy5lbmNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZW5jb2RlKGFWYWx1ZSkge1xuICB2YXIgZW5jb2RlZCA9IFwiXCI7XG4gIHZhciBkaWdpdDtcblxuICB2YXIgdmxxID0gdG9WTFFTaWduZWQoYVZhbHVlKTtcblxuICBkbyB7XG4gICAgZGlnaXQgPSB2bHEgJiBWTFFfQkFTRV9NQVNLO1xuICAgIHZscSA+Pj49IFZMUV9CQVNFX1NISUZUO1xuICAgIGlmICh2bHEgPiAwKSB7XG4gICAgICAvLyBUaGVyZSBhcmUgc3RpbGwgbW9yZSBkaWdpdHMgaW4gdGhpcyB2YWx1ZSwgc28gd2UgbXVzdCBtYWtlIHN1cmUgdGhlXG4gICAgICAvLyBjb250aW51YXRpb24gYml0IGlzIG1hcmtlZC5cbiAgICAgIGRpZ2l0IHw9IFZMUV9DT05USU5VQVRJT05fQklUO1xuICAgIH1cbiAgICBlbmNvZGVkICs9IGJhc2U2NC5lbmNvZGUoZGlnaXQpO1xuICB9IHdoaWxlICh2bHEgPiAwKTtcblxuICByZXR1cm4gZW5jb2RlZDtcbn07XG5cbi8qKlxuICogRGVjb2RlcyB0aGUgbmV4dCBiYXNlIDY0IFZMUSB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgYW5kIHJldHVybnMgdGhlXG4gKiB2YWx1ZSBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyB2aWEgdGhlIG91dCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gYmFzZTY0VkxRX2RlY29kZShhU3RyLCBhSW5kZXgsIGFPdXRQYXJhbSkge1xuICB2YXIgc3RyTGVuID0gYVN0ci5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSAwO1xuICB2YXIgc2hpZnQgPSAwO1xuICB2YXIgY29udGludWF0aW9uLCBkaWdpdDtcblxuICBkbyB7XG4gICAgaWYgKGFJbmRleCA+PSBzdHJMZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIG1vcmUgZGlnaXRzIGluIGJhc2UgNjQgVkxRIHZhbHVlLlwiKTtcbiAgICB9XG5cbiAgICBkaWdpdCA9IGJhc2U2NC5kZWNvZGUoYVN0ci5jaGFyQ29kZUF0KGFJbmRleCsrKSk7XG4gICAgaWYgKGRpZ2l0ID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjQgZGlnaXQ6IFwiICsgYVN0ci5jaGFyQXQoYUluZGV4IC0gMSkpO1xuICAgIH1cblxuICAgIGNvbnRpbnVhdGlvbiA9ICEhKGRpZ2l0ICYgVkxRX0NPTlRJTlVBVElPTl9CSVQpO1xuICAgIGRpZ2l0ICY9IFZMUV9CQVNFX01BU0s7XG4gICAgcmVzdWx0ID0gcmVzdWx0ICsgKGRpZ2l0IDw8IHNoaWZ0KTtcbiAgICBzaGlmdCArPSBWTFFfQkFTRV9TSElGVDtcbiAgfSB3aGlsZSAoY29udGludWF0aW9uKTtcblxuICBhT3V0UGFyYW0udmFsdWUgPSBmcm9tVkxRU2lnbmVkKHJlc3VsdCk7XG4gIGFPdXRQYXJhbS5yZXN0ID0gYUluZGV4O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2Jhc2U2NC12bHEuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgaW50VG9DaGFyTWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nLnNwbGl0KCcnKTtcblxuLyoqXG4gKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmdsZSBiYXNlIDY0IGRpZ2l0LlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgaWYgKDAgPD0gbnVtYmVyICYmIG51bWJlciA8IGludFRvQ2hhck1hcC5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50VG9DaGFyTWFwW251bWJlcl07XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgKyBudW1iZXIpO1xufTtcblxuLyoqXG4gKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBjaGFyYWN0ZXIgY29kZSBkaWdpdCB0byBhbiBpbnRlZ2VyLiBSZXR1cm5zIC0xIG9uXG4gKiBmYWlsdXJlLlxuICovXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChjaGFyQ29kZSkge1xuICB2YXIgYmlnQSA9IDY1OyAgICAgLy8gJ0EnXG4gIHZhciBiaWdaID0gOTA7ICAgICAvLyAnWidcblxuICB2YXIgbGl0dGxlQSA9IDk3OyAgLy8gJ2EnXG4gIHZhciBsaXR0bGVaID0gMTIyOyAvLyAneidcblxuICB2YXIgemVybyA9IDQ4OyAgICAgLy8gJzAnXG4gIHZhciBuaW5lID0gNTc7ICAgICAvLyAnOSdcblxuICB2YXIgcGx1cyA9IDQzOyAgICAgLy8gJysnXG4gIHZhciBzbGFzaCA9IDQ3OyAgICAvLyAnLydcblxuICB2YXIgbGl0dGxlT2Zmc2V0ID0gMjY7XG4gIHZhciBudW1iZXJPZmZzZXQgPSA1MjtcblxuICAvLyAwIC0gMjU6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXG4gIGlmIChiaWdBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGJpZ1opIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gYmlnQSk7XG4gIH1cblxuICAvLyAyNiAtIDUxOiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elxuICBpZiAobGl0dGxlQSA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBsaXR0bGVaKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIGxpdHRsZUEgKyBsaXR0bGVPZmZzZXQpO1xuICB9XG5cbiAgLy8gNTIgLSA2MTogMDEyMzQ1Njc4OVxuICBpZiAoemVybyA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBuaW5lKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIHplcm8gKyBudW1iZXJPZmZzZXQpO1xuICB9XG5cbiAgLy8gNjI6ICtcbiAgaWYgKGNoYXJDb2RlID09IHBsdXMpIHtcbiAgICByZXR1cm4gNjI7XG4gIH1cblxuICAvLyA2MzogL1xuICBpZiAoY2hhckNvZGUgPT0gc2xhc2gpIHtcbiAgICByZXR1cm4gNjM7XG4gIH1cblxuICAvLyBJbnZhbGlkIGJhc2U2NCBkaWdpdC5cbiAgcmV0dXJuIC0xO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2Jhc2U2NC5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8qKlxuICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB2YWx1ZXMgZnJvbSBwYXJhbWV0ZXIvb3B0aW9uc1xuICogb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gYXJncyBUaGUgb2JqZWN0IHdlIGFyZSBleHRyYWN0aW5nIHZhbHVlcyBmcm9tXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2UgYXJlIGdldHRpbmcuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIEFuIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgaXMgbWlzc2luZ1xuICogZnJvbSB0aGUgb2JqZWN0LiBJZiB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBhblxuICogZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gKi9cbmZ1bmN0aW9uIGdldEFyZyhhQXJncywgYU5hbWUsIGFEZWZhdWx0VmFsdWUpIHtcbiAgaWYgKGFOYW1lIGluIGFBcmdzKSB7XG4gICAgcmV0dXJuIGFBcmdzW2FOYW1lXTtcbiAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIGFEZWZhdWx0VmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhTmFtZSArICdcIiBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LicpO1xuICB9XG59XG5leHBvcnRzLmdldEFyZyA9IGdldEFyZztcblxudmFyIHVybFJlZ2V4cCA9IC9eKD86KFtcXHcrXFwtLl0rKTopP1xcL1xcLyg/OihcXHcrOlxcdyspQCk/KFtcXHcuLV0qKSg/OjooXFxkKykpPyguKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgdXJsUmVnZXhwLnRlc3QoYVBhdGgpO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlT3JpZ2luYWwpIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zID0gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnM7XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGRlZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBpbmRpY2VzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uLCBidXQgZGlmZmVyZW50XG4gKiBzb3VyY2UvbmFtZS9vcmlnaW5hbCBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYVxuICogbWFwcGluZyB3aXRoIGEgc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlR2VuZXJhdGVkKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZDtcblxuZnVuY3Rpb24gc3RyY21wKGFTdHIxLCBhU3RyMikge1xuICBpZiAoYVN0cjEgPT09IGFTdHIyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoYVN0cjEgPT09IG51bGwpIHtcbiAgICByZXR1cm4gMTsgLy8gYVN0cjIgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMiA9PT0gbnVsbCkge1xuICAgIHJldHVybiAtMTsgLy8gYVN0cjEgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuLyoqXG4gKiBTdHJpcCBhbnkgSlNPTiBYU1NJIGF2b2lkYW5jZSBwcmVmaXggZnJvbSB0aGUgc3RyaW5nIChhcyBkb2N1bWVudGVkXG4gKiBpbiB0aGUgc291cmNlIG1hcHMgc3BlY2lmaWNhdGlvbiksIGFuZCB0aGVuIHBhcnNlIHRoZSBzdHJpbmcgYXNcbiAqIEpTT04uXG4gKi9cbmZ1bmN0aW9uIHBhcnNlU291cmNlTWFwSW5wdXQoc3RyKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKHN0ci5yZXBsYWNlKC9eXFwpXX0nW15cXG5dKlxcbi8sICcnKSk7XG59XG5leHBvcnRzLnBhcnNlU291cmNlTWFwSW5wdXQgPSBwYXJzZVNvdXJjZU1hcElucHV0O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIFVSTCBvZiBhIHNvdXJjZSBnaXZlbiB0aGUgdGhlIHNvdXJjZSByb290LCB0aGUgc291cmNlJ3NcbiAqIFVSTCwgYW5kIHRoZSBzb3VyY2UgbWFwJ3MgVVJMLlxuICovXG5mdW5jdGlvbiBjb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKSB7XG4gIHNvdXJjZVVSTCA9IHNvdXJjZVVSTCB8fCAnJztcblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIC8vIFRoaXMgZm9sbG93cyB3aGF0IENocm9tZSBkb2VzLlxuICAgIGlmIChzb3VyY2VSb290W3NvdXJjZVJvb3QubGVuZ3RoIC0gMV0gIT09ICcvJyAmJiBzb3VyY2VVUkxbMF0gIT09ICcvJykge1xuICAgICAgc291cmNlUm9vdCArPSAnLyc7XG4gICAgfVxuICAgIC8vIFRoZSBzcGVjIHNheXM6XG4gICAgLy8gICBMaW5lIDQ6IEFuIG9wdGlvbmFsIHNvdXJjZSByb290LCB1c2VmdWwgZm9yIHJlbG9jYXRpbmcgc291cmNlXG4gICAgLy8gICBmaWxlcyBvbiBhIHNlcnZlciBvciByZW1vdmluZyByZXBlYXRlZCB2YWx1ZXMgaW4gdGhlXG4gICAgLy8gICDigJxzb3VyY2Vz4oCdIGVudHJ5LiAgVGhpcyB2YWx1ZSBpcyBwcmVwZW5kZWQgdG8gdGhlIGluZGl2aWR1YWxcbiAgICAvLyAgIGVudHJpZXMgaW4gdGhlIOKAnHNvdXJjZeKAnSBmaWVsZC5cbiAgICBzb3VyY2VVUkwgPSBzb3VyY2VSb290ICsgc291cmNlVVJMO1xuICB9XG5cbiAgLy8gSGlzdG9yaWNhbGx5LCBTb3VyY2VNYXBDb25zdW1lciBkaWQgbm90IHRha2UgdGhlIHNvdXJjZU1hcFVSTCBhc1xuICAvLyBhIHBhcmFtZXRlci4gIFRoaXMgbW9kZSBpcyBzdGlsbCBzb21ld2hhdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeVxuICAvLyB0aGlzIGNvZGUgYmxvY2sgaXMgY29uZGl0aW9uYWwuICBIb3dldmVyLCBpdCdzIHByZWZlcmFibGUgdG8gcGFzc1xuICAvLyB0aGUgc291cmNlIG1hcCBVUkwgdG8gU291cmNlTWFwQ29uc3VtZXIsIHNvIHRoYXQgdGhpcyBmdW5jdGlvblxuICAvLyBjYW4gaW1wbGVtZW50IHRoZSBzb3VyY2UgVVJMIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIG91dGxpbmVkIGluXG4gIC8vIHRoZSBzcGVjLiAgVGhpcyBibG9jayBpcyBiYXNpY2FsbHkgdGhlIGVxdWl2YWxlbnQgb2Y6XG4gIC8vICAgIG5ldyBVUkwoc291cmNlVVJMLCBzb3VyY2VNYXBVUkwpLnRvU3RyaW5nKClcbiAgLy8gLi4uIGV4Y2VwdCBpdCBhdm9pZHMgdXNpbmcgVVJMLCB3aGljaCB3YXNuJ3QgYXZhaWxhYmxlIGluIHRoZVxuICAvLyBvbGRlciByZWxlYXNlcyBvZiBub2RlIHN0aWxsIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnkuXG4gIC8vXG4gIC8vIFRoZSBzcGVjIHNheXM6XG4gIC8vICAgSWYgdGhlIHNvdXJjZXMgYXJlIG5vdCBhYnNvbHV0ZSBVUkxzIGFmdGVyIHByZXBlbmRpbmcgb2YgdGhlXG4gIC8vICAg4oCcc291cmNlUm9vdOKAnSwgdGhlIHNvdXJjZXMgYXJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZVxuICAvLyAgIFNvdXJjZU1hcCAobGlrZSByZXNvbHZpbmcgc2NyaXB0IHNyYyBpbiBhIGh0bWwgZG9jdW1lbnQpLlxuICBpZiAoc291cmNlTWFwVVJMKSB7XG4gICAgdmFyIHBhcnNlZCA9IHVybFBhcnNlKHNvdXJjZU1hcFVSTCk7XG4gICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInNvdXJjZU1hcFVSTCBjb3VsZCBub3QgYmUgcGFyc2VkXCIpO1xuICAgIH1cbiAgICBpZiAocGFyc2VkLnBhdGgpIHtcbiAgICAgIC8vIFN0cmlwIHRoZSBsYXN0IHBhdGggY29tcG9uZW50LCBidXQga2VlcCB0aGUgXCIvXCIuXG4gICAgICB2YXIgaW5kZXggPSBwYXJzZWQucGF0aC5sYXN0SW5kZXhPZignLycpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgcGFyc2VkLnBhdGggPSBwYXJzZWQucGF0aC5zdWJzdHJpbmcoMCwgaW5kZXggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc291cmNlVVJMID0gam9pbih1cmxHZW5lcmF0ZShwYXJzZWQpLCBzb3VyY2VVUkwpO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShzb3VyY2VVUkwpO1xufVxuZXhwb3J0cy5jb21wdXRlU291cmNlVVJMID0gY29tcHV0ZVNvdXJjZVVSTDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2FycmF5LXNldC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9tYXBwaW5nLWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICByZXR1cm4gc291cmNlTWFwLnNlY3Rpb25zICE9IG51bGxcbiAgICA/IG5ldyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKVxuICAgIDogbmV3IEJhc2ljU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9IGZ1bmN0aW9uKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgcmV0dXJuIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcChhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8vIGBfX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmQgYF9fb3JpZ2luYWxNYXBwaW5nc2AgYXJlIGFycmF5cyB0aGF0IGhvbGQgdGhlXG4vLyBwYXJzZWQgbWFwcGluZyBjb29yZGluYXRlcyBmcm9tIHRoZSBzb3VyY2UgbWFwJ3MgXCJtYXBwaW5nc1wiIGF0dHJpYnV0ZS4gVGhleVxuLy8gYXJlIGxhemlseSBpbnN0YW50aWF0ZWQsIGFjY2Vzc2VkIHZpYSB0aGUgYF9nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGdldHRlcnMgcmVzcGVjdGl2ZWx5LCBhbmQgd2Ugb25seSBwYXJzZSB0aGUgbWFwcGluZ3Ncbi8vIGFuZCBjcmVhdGUgdGhlc2UgYXJyYXlzIG9uY2UgcXVlcmllZCBmb3IgYSBzb3VyY2UgbG9jYXRpb24uIFdlIGp1bXAgdGhyb3VnaFxuLy8gdGhlc2UgaG9vcHMgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbWFueSB0aG91c2FuZHMgb2YgbWFwcGluZ3MsIGFuZCBwYXJzaW5nXG4vLyB0aGVtIGlzIGV4cGVuc2l2ZSwgc28gd2Ugb25seSB3YW50IHRvIGRvIGl0IGlmIHdlIG11c3QuXG4vL1xuLy8gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5cyBpcyBvZiB0aGUgZm9ybTpcbi8vXG4vLyAgICAge1xuLy8gICAgICAgZ2VuZXJhdGVkTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIGdlbmVyYXRlZENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgc291cmNlOiBUaGUgcGF0aCB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhhdCBnZW5lcmF0ZWQgdGhpc1xuLy8gICAgICAgICAgICAgICBjaHVuayBvZiBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBvcmlnaW5hbENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBzeW1ib2wgd2hpY2ggZ2VuZXJhdGVkIHRoaXMgY2h1bmsgb2Zcbi8vICAgICAgICAgICAgIGNvZGUuXG4vLyAgICAgfVxuLy9cbi8vIEFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCBmb3IgYGdlbmVyYXRlZExpbmVgIGFuZCBgZ2VuZXJhdGVkQ29sdW1uYCBjYW4gYmVcbi8vIGBudWxsYC5cbi8vXG4vLyBgX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zLlxuLy9cbi8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zLlxuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IG51bGw7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX2dlbmVyYXRlZE1hcHBpbmdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gIH1cbn0pO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19vcmlnaW5hbE1hcHBpbmdzID0gbnVsbDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfb3JpZ2luYWxNYXBwaW5ncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IE9wdGlvbmFsLiB0aGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKGFBcmdzKSB7XG4gICAgdmFyIGxpbmUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKTtcblxuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gZXhhY3QgbWF0Y2gsIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZ1xuICAgIC8vIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IG1hcHBpbmcgbGVzcyB0aGFuIHRoZSBuZWVkbGUuIEJ5XG4gICAgLy8gc2V0dGluZyBuZWVkbGUub3JpZ2luYWxDb2x1bW4gdG8gMCwgd2UgdGh1cyBmaW5kIHRoZSBsYXN0IG1hcHBpbmcgZm9yXG4gICAgLy8gdGhlIGdpdmVuIGxpbmUsIHByb3ZpZGVkIHN1Y2ggYSBtYXBwaW5nIGV4aXN0cy5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLFxuICAgICAgb3JpZ2luYWxMaW5lOiBsaW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJywgMClcbiAgICB9O1xuXG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChuZWVkbGUuc291cmNlKTtcbiAgICBpZiAobmVlZGxlLnNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGluZ3MgPSBbXTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKGFBcmdzLmNvbHVtbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBvcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIGZvdW5kLiBTaW5jZVxuICAgICAgICAvLyBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGZvdW5kLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gb3JpZ2luYWxMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIHdlcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgLy8gU2luY2UgbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAvLyB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBsaW5lICYmXG4gICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID09IG9yaWdpbmFsQ29sdW1uKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5ncztcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2ggd2UgY2FuXG4gKiBxdWVyeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb25zIGJ5IGdpdmluZyBpdCBhIGZpbGVcbiAqIHBvc2l0aW9uIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3JcbiAqIGFscmVhZHkgcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYywgc291cmNlIG1hcHMgaGF2ZSB0aGVcbiAqIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICpcbiAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogICAtIHNvdXJjZXM6IEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqICAgLSBuYW1lczogQW4gYXJyYXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVycmVuY2VkIGJ5IGluZGl2aWR1YWwgbWFwcGluZ3MuXG4gKiAgIC0gc291cmNlUm9vdDogT3B0aW9uYWwuIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAqICAgLSBzb3VyY2VzQ29udGVudDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbWFwcGluZ3M6IEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNoIGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy5cbiAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKlxuICogSGVyZSBpcyBhbiBleGFtcGxlIHNvdXJjZSBtYXAsIHRha2VuIGZyb20gdGhlIHNvdXJjZSBtYXAgc3BlY1swXTpcbiAqXG4gKiAgICAge1xuICogICAgICAgdmVyc2lvbiA6IDMsXG4gKiAgICAgICBmaWxlOiBcIm91dC5qc1wiLFxuICogICAgICAgc291cmNlUm9vdCA6IFwiXCIsXG4gKiAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAqICAgICAgIG1hcHBpbmdzOiBcIkFBLEFCOztBQkNERTtcIlxuICogICAgIH1cbiAqXG4gKiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlzIHRoZSBVUkxcbiAqIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIHdhcyBmb3VuZC4gIFRoaXMgVVJMIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGVcbiAqIHNvdXJjZXMgYXJyYXkuXG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICB2YXIgc291cmNlcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXMnKTtcbiAgLy8gU2FzcyAzLjMgbGVhdmVzIG91dCB0aGUgJ25hbWVzJyBhcnJheSwgc28gd2UgZGV2aWF0ZSBmcm9tIHRoZSBzcGVjICh3aGljaFxuICAvLyByZXF1aXJlcyB0aGUgYXJyYXkpIHRvIHBsYXkgbmljZSBoZXJlLlxuICB2YXIgbmFtZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICduYW1lcycsIFtdKTtcbiAgdmFyIHNvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7XG4gIHZhciBzb3VyY2VzQ29udGVudCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXNDb250ZW50JywgbnVsbCk7XG4gIHZhciBtYXBwaW5ncyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ21hcHBpbmdzJyk7XG4gIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScsIG51bGwpO1xuXG4gIC8vIE9uY2UgYWdhaW4sIFNhc3MgZGV2aWF0ZXMgZnJvbSB0aGUgc3BlYyBhbmQgc3VwcGxpZXMgdGhlIHZlcnNpb24gYXMgYVxuICAvLyBzdHJpbmcgcmF0aGVyIHRoYW4gYSBudW1iZXIsIHNvIHdlIHVzZSBsb29zZSBlcXVhbGl0eSBjaGVja2luZyBoZXJlLlxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIHNvdXJjZVJvb3QgPSB1dGlsLm5vcm1hbGl6ZShzb3VyY2VSb290KTtcbiAgfVxuXG4gIHNvdXJjZXMgPSBzb3VyY2VzXG4gICAgLm1hcChTdHJpbmcpXG4gICAgLy8gU29tZSBzb3VyY2UgbWFwcyBwcm9kdWNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBsaWtlIFwiLi9mb28uanNcIiBpbnN0ZWFkIG9mXG4gICAgLy8gXCJmb28uanNcIi4gIE5vcm1hbGl6ZSB0aGVzZSBmaXJzdCBzbyB0aGF0IGZ1dHVyZSBjb21wYXJpc29ucyB3aWxsIHN1Y2NlZWQuXG4gICAgLy8gU2VlIGJ1Z3ppbC5sYS8xMDkwNzY4LlxuICAgIC5tYXAodXRpbC5ub3JtYWxpemUpXG4gICAgLy8gQWx3YXlzIGVuc3VyZSB0aGF0IGFic29sdXRlIHNvdXJjZXMgYXJlIGludGVybmFsbHkgc3RvcmVkIHJlbGF0aXZlIHRvXG4gICAgLy8gdGhlIHNvdXJjZSByb290LCBpZiB0aGUgc291cmNlIHJvb3QgaXMgYWJzb2x1dGUuIE5vdCBkb2luZyB0aGlzIHdvdWxkXG4gICAgLy8gYmUgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIHdoZW4gdGhlIHNvdXJjZSByb290IGlzIGEgcHJlZml4IG9mIHRoZVxuICAgIC8vIHNvdXJjZSAodmFsaWQsIGJ1dCB3aHk/PykuIFNlZSBnaXRodWIgaXNzdWUgIzE5OSBhbmQgYnVnemlsLmxhLzExODg5ODIuXG4gICAgLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlUm9vdCAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlUm9vdCkgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZSlcbiAgICAgICAgPyB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZSlcbiAgICAgICAgOiBzb3VyY2U7XG4gICAgfSk7XG5cbiAgLy8gUGFzcyBgdHJ1ZWAgYmVsb3cgdG8gYWxsb3cgZHVwbGljYXRlIG5hbWVzIGFuZCBzb3VyY2VzLiBXaGlsZSBzb3VyY2UgbWFwc1xuICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkLCB0aGUgVHlwZVNjcmlwdCBjb21waWxlclxuICAvLyBzb21ldGltZXMgZ2VuZXJhdGVzIHNvdXJjZSBtYXBzIHdpdGggZHVwbGljYXRlcyBpbiB0aGVtLiBTZWUgR2l0aHViIGlzc3VlXG4gIC8vICM3MiBhbmQgYnVnemlsLmxhLzg4OTQ5Mi5cbiAgdGhpcy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkobmFtZXMubWFwKFN0cmluZyksIHRydWUpO1xuICB0aGlzLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMsIHRydWUpO1xuXG4gIHRoaXMuX2Fic29sdXRlU291cmNlcyA9IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgcywgYVNvdXJjZU1hcFVSTCk7XG4gIH0pO1xuXG4gIHRoaXMuc291cmNlUm9vdCA9IHNvdXJjZVJvb3Q7XG4gIHRoaXMuc291cmNlc0NvbnRlbnQgPSBzb3VyY2VzQ29udGVudDtcbiAgdGhpcy5fbWFwcGluZ3MgPSBtYXBwaW5ncztcbiAgdGhpcy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgdGhpcy5maWxlID0gZmlsZTtcbn1cblxuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZmluZCB0aGUgaW5kZXggb2YgYSBzb3VyY2UuICBSZXR1cm5zIC0xIGlmIG5vdFxuICogZm91bmQuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kU291cmNlSW5kZXggPSBmdW5jdGlvbihhU291cmNlKSB7XG4gIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgIHJlbGF0aXZlU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhyZWxhdGl2ZVNvdXJjZSkpIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlcy5pbmRleE9mKHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIC8vIE1heWJlIGFTb3VyY2UgaXMgYW4gYWJzb2x1dGUgVVJMIGFzIHJldHVybmVkIGJ5IHxzb3VyY2VzfC4gIEluXG4gIC8vIHRoaXMgY2FzZSB3ZSBjYW4ndCBzaW1wbHkgdW5kbyB0aGUgdHJhbnNmb3JtLlxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IHRoaXMuX2Fic29sdXRlU291cmNlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVNvdXJjZXNbaV0gPT0gYVNvdXJjZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGZyb20gYSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIFNvdXJjZU1hcEdlbmVyYXRvciBhU291cmNlTWFwXG4gKiAgICAgICAgVGhlIHNvdXJjZSBtYXAgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuICogQHBhcmFtIFN0cmluZyBhU291cmNlTWFwVVJMXG4gKiAgICAgICAgVGhlIFVSTCBhdCB3aGljaCB0aGUgc291cmNlIG1hcCBjYW4gYmUgZm91bmQgKG9wdGlvbmFsKVxuICogQHJldHVybnMgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgICB2YXIgc21jID0gT2JqZWN0LmNyZWF0ZShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5cbiAgICB2YXIgbmFtZXMgPSBzbWMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX25hbWVzLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gICAgdmFyIHNvdXJjZXMgPSBzbWMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fc291cmNlcy50b0FycmF5KCksIHRydWUpO1xuICAgIHNtYy5zb3VyY2VSb290ID0gYVNvdXJjZU1hcC5fc291cmNlUm9vdDtcbiAgICBzbWMuc291cmNlc0NvbnRlbnQgPSBhU291cmNlTWFwLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KHNtYy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWMuc291cmNlUm9vdCk7XG4gICAgc21jLmZpbGUgPSBhU291cmNlTWFwLl9maWxlO1xuICAgIHNtYy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgICBzbWMuX2Fic29sdXRlU291cmNlcyA9IHNtYy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gdXRpbC5jb21wdXRlU291cmNlVVJMKHNtYy5zb3VyY2VSb290LCBzLCBhU291cmNlTWFwVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlU291cmNlcy5zbGljZSgpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gbmFtZTogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIsIG9yIG51bGwuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsXG4gICAgICBcImdlbmVyYXRlZExpbmVcIixcbiAgICAgIFwiZ2VuZXJhdGVkQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuYXQoc291cmNlKTtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwodGhpcy5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbmFtZScsIG51bGwpO1xuICAgICAgICBpZiAobmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5hdChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbExpbmUnLCBudWxsKSxcbiAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIG5hbWU6IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgdGhlIHNvdXJjZSBjb250ZW50IGZvciBldmVyeSBzb3VyY2UgaW4gdGhlIHNvdXJjZVxuICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnQubGVuZ3RoID49IHRoaXMuX3NvdXJjZXMuc2l6ZSgpICYmXG4gICAgICAhdGhpcy5zb3VyY2VzQ29udGVudC5zb21lKGZ1bmN0aW9uIChzYykgeyByZXR1cm4gc2MgPT0gbnVsbDsgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChhU291cmNlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbaW5kZXhdO1xuICAgIH1cblxuICAgIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICByZWxhdGl2ZVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCByZWxhdGl2ZVNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIHVybDtcbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGxcbiAgICAgICAgJiYgKHVybCA9IHV0aWwudXJsUGFyc2UodGhpcy5zb3VyY2VSb290KSkpIHtcbiAgICAgIC8vIFhYWDogZmlsZTovLyBVUklzIGFuZCBhYnNvbHV0ZSBwYXRocyBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZm9yXG4gICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0b1xuICAgICAgLy8gYmVoYXZlIGxpa2UgaXQgd291bGQgaWYgdGhleSB3ZXJlIHJ1bm5pbmcgYSBsb2NhbCBIVFRQIHNlcnZlci4gU2VlXG4gICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODU1OTcuXG4gICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSByZWxhdGl2ZVNvdXJjZS5yZXBsYWNlKC9eZmlsZTpcXC9cXC8vLCBcIlwiKTtcbiAgICAgIGlmICh1cmwuc2NoZW1lID09IFwiZmlsZVwiXG4gICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihmaWxlVXJpQWJzUGF0aCldXG4gICAgICB9XG5cbiAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5wYXRoID09IFwiL1wiKVxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKFwiL1wiICsgcmVsYXRpdmVTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIHJlbGF0aXZlU291cmNlKV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IGZyb21cbiAgICAvLyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IuIEluIHRoYXQgY2FzZSwgd2VcbiAgICAvLyBkb24ndCB3YW50IHRvIHRocm93IGlmIHdlIGNhbid0IGZpbmQgdGhlIHNvdXJjZSAtIHdlIGp1c3Qgd2FudCB0b1xuICAgIC8vIHJldHVybiBudWxsLCBzbyB3ZSBwcm92aWRlIGEgZmxhZyB0byBleGl0IGdyYWNlZnVsbHkuXG4gICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgcmVsYXRpdmVTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgc291cmNlID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICBuZWVkbGUsXG4gICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gbmVlZGxlLnNvdXJjZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH07XG5cbmV4cG9ydHMuQmFzaWNTb3VyY2VNYXBDb25zdW1lciA9IEJhc2ljU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQW4gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaFxuICogd2UgY2FuIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbi4gSXQgZGlmZmVycyBmcm9tIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5cbiAqIHRoYXQgaXQgdGFrZXMgXCJpbmRleGVkXCIgc291cmNlIG1hcHMgKGkuZS4gb25lcyB3aXRoIGEgXCJzZWN0aW9uc1wiIGZpZWxkKSBhc1xuICogaW5wdXQuXG4gKlxuICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIsIGlmIGdpdmVuLCBpcyBhIHN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0aGUgVVJMXG4gKiBhdCB3aGljaCB0aGUgc291cmNlIG1hcCB3YXMgZm91bmQuICBUaGlzIFVSTCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlXG4gKiBzb3VyY2VzIGFycmF5LlxuICpcbiAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0I2hlYWRpbmc9aC41MzVlczN4ZXByZ3RcbiAqL1xuZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSwgYVNvdXJjZU1hcFVSTClcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb3IgbnVsbC5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbiB3ZSdyZSB0cnlpbmcgdG8gbWFwXG4gICAgLy8gdG8gYW4gb3JpZ2luYWwgcG9zaXRpb24uXG4gICAgdmFyIHNlY3Rpb25JbmRleCA9IGJpbmFyeVNlYXJjaC5zZWFyY2gobmVlZGxlLCB0aGlzLl9zZWN0aW9ucyxcbiAgICAgIGZ1bmN0aW9uKG5lZWRsZSwgc2VjdGlvbikge1xuICAgICAgICB2YXIgY21wID0gbmVlZGxlLmdlbmVyYXRlZExpbmUgLSBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lO1xuICAgICAgICBpZiAoY21wKSB7XG4gICAgICAgICAgcmV0dXJuIGNtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAobmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgIH0pO1xuICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcblxuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIG5hbWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlY3Rpb24uY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICBsaW5lOiBuZWVkbGUuZ2VuZXJhdGVkTGluZSAtXG4gICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICBjb2x1bW46IG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmVcbiAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgOiAwKSxcbiAgICAgIGJpYXM6IGFBcmdzLmJpYXNcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5ldmVyeShmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHMuY29uc3VtZXIuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKTtcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIHZhciBjb250ZW50ID0gc2VjdGlvbi5jb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIHRydWUpO1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuIFxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIC8vIE9ubHkgY29uc2lkZXIgdGhpcyBzZWN0aW9uIGlmIHRoZSByZXF1ZXN0ZWQgc291cmNlIGlzIGluIHRoZSBsaXN0IG9mXG4gICAgICAvLyBzb3VyY2VzIG9mIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLl9maW5kU291cmNlSW5kZXgodXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGdlbmVyYXRlZFBvc2l0aW9uID0gc2VjdGlvbi5jb25zdW1lci5nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncyk7XG4gICAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb24pIHtcbiAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWRQb3NpdGlvbi5jb2x1bW4gK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmVcbiAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICA6IDApXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuICAgICAgdmFyIHNlY3Rpb25NYXBwaW5ncyA9IHNlY3Rpb24uY29uc3VtZXIuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWN0aW9uTWFwcGluZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBzZWN0aW9uTWFwcGluZ3Nbal07XG5cbiAgICAgICAgdmFyIHNvdXJjZSA9IHNlY3Rpb24uY29uc3VtZXIuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc2VjdGlvbi5jb25zdW1lci5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSkge1xuICAgICAgICAgIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvcXVpY2stc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gfHwgJyc7XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdIHx8ICcnO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW5vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/node_modules/handlebars/node_modules/source-map/dist/source-map.js b/node_modules/handlebars/node_modules/source-map/dist/source-map.js deleted file mode 100644 index b4eb08742..000000000 --- a/node_modules/handlebars/node_modules/source-map/dist/source-map.js +++ /dev/null @@ -1,3233 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["sourceMap"] = factory(); - else - root["sourceMap"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - /* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ - exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; - exports.SourceNode = __webpack_require__(10).SourceNode; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var base64VLQ = __webpack_require__(2); - var util = __webpack_require__(4); - var ArraySet = __webpack_require__(5).ArraySet; - var MappingList = __webpack_require__(6).MappingList; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - var base64 = __webpack_require__(3); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - - /** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ - exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; - }; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || urlRegexp.test(aPath); - }; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - - var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); - }()); - - function identity (s) { - return s; - } - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - - function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 === null) { - return 1; // aStr2 !== null - } - - if (aStr2 === null) { - return -1; // aStr1 !== null - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; - } - - /** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - - /** - * Strip any JSON XSSI avoidance prefix from the string (as documented - * in the source maps specification), and then parse the string as - * JSON. - */ - function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); - } - exports.parseSourceMapInput = parseSourceMapInput; - - /** - * Compute the URL of a source given the the source root, the source's - * URL, and the source map's URL. - */ - function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ''; - - if (sourceRoot) { - // This follows what Chrome does. - if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { - sourceRoot += '/'; - } - // The spec says: - // Line 4: An optional source root, useful for relocating source - // files on a server or removing repeated values in the - // “sources” entry. This value is prepended to the individual - // entries in the “source” field. - sourceURL = sourceRoot + sourceURL; - } - - // Historically, SourceMapConsumer did not take the sourceMapURL as - // a parameter. This mode is still somewhat supported, which is why - // this code block is conditional. However, it's preferable to pass - // the source map URL to SourceMapConsumer, so that this function - // can implement the source URL resolution algorithm as outlined in - // the spec. This block is basically the equivalent of: - // new URL(sourceURL, sourceMapURL).toString() - // ... except it avoids using URL, which wasn't available in the - // older releases of node still supported by this library. - // - // The spec says: - // If the sources are not absolute URLs after prepending of the - // “sourceRoot”, the sources are resolved relative to the - // SourceMap (like resolving script src in a html document). - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - // Strip the last path component, but keep the "/". - var index = parsed.path.lastIndexOf('/'); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - - return normalize(sourceURL); - } - exports.computeSourceURL = computeSourceURL; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - - /** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ - function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - - /** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ - function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; - } - - /** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ - MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - - /** - * Add the given source mapping. - * - * @param Object aMapping - */ - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - - /** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - - exports.MappingList = MappingList; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var binarySearch = __webpack_require__(8); - var ArraySet = __webpack_require__(5).ArraySet; - var base64VLQ = __webpack_require__(2); - var quickSort = __webpack_require__(9).quickSort; - - function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) - : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); - } - - SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - - /** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number is 1-based. - * - column: Optional. the column number in the original source. - * The column number is 0-based. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - - exports.SourceMapConsumer = SourceMapConsumer; - - /** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The first parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this._absoluteSources = this._sources.toArray().map(function (s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; - } - - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - - /** - * Utility function to find the index of a source. Returns -1 if not - * found. - */ - BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - - // Maybe aSource is an absolute URL as returned by |sources|. In - // this case we can't simply undo the transform. - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - - return -1; - }; - - /** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @param String aSourceMapURL - * The URL at which the source map can be found (optional) - * @returns BasicSourceMapConsumer - */ - BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function (s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - BasicSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._absoluteSources.slice(); - } - }); - - /** - * Provide the JIT with a nice shape / hidden class. - */ - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - - /** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ - BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ - BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } - - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - - /** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The first parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ - function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) - } - }); - } - - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - - /** - * The version of the source mapping spec that we are consuming. - */ - IndexedSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ - IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ - IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - - /** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; - }; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - // It turns out that some (most?) JavaScript engines don't self-host - // `Array.prototype.sort`. This makes sense because C++ will likely remain - // faster than JS when doing raw CPU-intensive sorting. However, when using a - // custom comparator function, calling back and forth between the VM's C++ and - // JIT'd JS is rather slow *and* loses JIT type information, resulting in - // worse generated code for the comparator function than would be optimal. In - // fact, when sorting with a comparator, these costs outweigh the benefits of - // sorting in C++. By using our own JS-implemented Quick Sort (below), we get - // a ~3500ms mean speed-up in `bench/bench.html`. - - /** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - - /** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ - function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); - } - - /** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ - function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - - /** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ - exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - var util = __webpack_require__(4); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Newline character code for charCodeAt() comparisons - var NEWLINE_CODE = 10; - - // Private symbol for identifying `SourceNode`s when multiple versions of - // the source-map library are loaded. This MUST NOT CHANGE across - // versions! - var isSourceNode = "$$$isSourceNode$$$"; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex] || ''; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ''; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - - -/***/ }) -/******/ ]) -}); -; \ No newline at end of file diff --git a/node_modules/handlebars/node_modules/source-map/dist/source-map.min.js b/node_modules/handlebars/node_modules/source-map/dist/source-map.min.js deleted file mode 100644 index c7c72dad8..000000000 --- a/node_modules/handlebars/node_modules/source-map/dist/source-map.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sourceMap=n():e.sourceMap=n()}(this,function(){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){n.SourceMapGenerator=r(1).SourceMapGenerator,n.SourceMapConsumer=r(7).SourceMapConsumer,n.SourceNode=r(10).SourceNode},function(e,n,r){function t(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new s,this._names=new s,this._mappings=new a,this._sourcesContents=null}var o=r(2),i=r(4),s=r(5).ArraySet,a=r(6).MappingList;t.prototype._version=3,t.fromSourceMap=function(e){var n=e.sourceRoot,r=new t({file:e.file,sourceRoot:n});return e.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=n&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),r.addMapping(t)}),e.sources.forEach(function(t){var o=t;null!==n&&(o=i.relative(n,t)),r._sources.has(o)||r._sources.add(o);var s=e.sourceContentFor(t);null!=s&&r.setSourceContent(t,s)}),r},t.prototype.addMapping=function(e){var n=i.getArg(e,"generated"),r=i.getArg(e,"original",null),t=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,r,t,o),null!=t&&(t=String(t),this._sources.has(t)||this._sources.add(t)),null!=o&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:o})},t.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},t.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var o=this._sourceRoot;null!=o&&(t=i.relative(o,t));var a=new s,u=new s;this._mappings.unsortedForEach(function(n){if(n.source===t&&null!=n.originalLine){var s=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=s.source&&(n.source=s.source,null!=r&&(n.source=i.join(r,n.source)),null!=o&&(n.source=i.relative(o,n.source)),n.originalLine=s.line,n.originalColumn=s.column,null!=s.name&&(n.name=s.name))}var l=n.source;null==l||a.has(l)||a.add(l);var c=n.name;null==c||u.has(c)||u.add(c)},this),this._sources=a,this._names=u,e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=i.join(r,n)),null!=o&&(n=i.relative(o,n)),this.setSourceContent(n,t))},this)},t.prototype._validateMapping=function(e,n,r,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}))},t.prototype._serializeMappings=function(){for(var e,n,r,t,s=0,a=1,u=0,l=0,c=0,g=0,p="",h=this._mappings.toArray(),f=0,d=h.length;f0){if(!i.compareByGeneratedPositionsInflated(n,h[f-1]))continue;e+=","}e+=o.encode(n.generatedColumn-s),s=n.generatedColumn,null!=n.source&&(t=this._sources.indexOf(n.source),e+=o.encode(t-g),g=t,e+=o.encode(n.originalLine-1-l),l=n.originalLine-1,e+=o.encode(n.originalColumn-u),u=n.originalColumn,null!=n.name&&(r=this._names.indexOf(n.name),e+=o.encode(r-c),c=r)),p+=e}return p},t.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=i.relative(n,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},t.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},t.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=t},function(e,n,r){function t(e){return e<0?(-e<<1)+1:(e<<1)+0}function o(e){var n=1===(1&e),r=e>>1;return n?-r:r}var i=r(3),s=5,a=1<>>=s,o>0&&(n|=l),r+=i.encode(n);while(o>0);return r},n.decode=function(e,n,r){var t,a,c=e.length,g=0,p=0;do{if(n>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(a=i.decode(e.charCodeAt(n++)),a===-1)throw new Error("Invalid base64 digit: "+e.charAt(n-1));t=!!(a&l),a&=u,g+=a<=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return r=u.join("/"),""===r&&(r=a?"/":"."),i?(i.path=r,o(i)):r}function s(e,n){""===e&&(e="."),""===n&&(n=".");var r=t(n),s=t(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),o(r);if(r||n.match(y))return n;if(s&&!s.host&&!s.path)return s.host=n,o(s);var a="/"===n.charAt(0)?n:i(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,o(s)):a}function a(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return n;if(e=e.slice(0,t),e.match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)}function u(e){return e}function l(e){return g(e)?"$"+e:e}function c(e){return g(e)?e.slice(1):e}function g(e){if(!e)return!1;var n=e.length;if(n<9)return!1;if(95!==e.charCodeAt(n-1)||95!==e.charCodeAt(n-2)||111!==e.charCodeAt(n-3)||116!==e.charCodeAt(n-4)||111!==e.charCodeAt(n-5)||114!==e.charCodeAt(n-6)||112!==e.charCodeAt(n-7)||95!==e.charCodeAt(n-8)||95!==e.charCodeAt(n-9))return!1;for(var r=n-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function p(e,n,r){var t=f(e.source,n.source);return 0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t||r?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=e.generatedLine-n.generatedLine,0!==t?t:f(e.name,n.name)))))}function h(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t||r?t:(t=f(e.source,n.source),0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:f(e.name,n.name)))))}function f(e,n){return e===n?0:null===e?1:null===n?-1:e>n?1:-1}function d(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=f(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:f(e.name,n.name)))))}function m(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}function _(e,n,r){if(n=n||"",e&&("/"!==e[e.length-1]&&"/"!==n[0]&&(e+="/"),n=e+n),r){var a=t(r);if(!a)throw new Error("sourceMapURL could not be parsed");if(a.path){var u=a.path.lastIndexOf("/");u>=0&&(a.path=a.path.substring(0,u+1))}n=s(o(a),n)}return i(n)}n.getArg=r;var v=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,y=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||v.test(e)},n.relative=a;var C=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=C?u:l,n.fromSetString=C?u:c,n.compareByOriginalPositions=p,n.compareByGeneratedPositionsDeflated=h,n.compareByGeneratedPositionsInflated=d,n.parseSourceMapInput=m,n.computeSourceURL=_},function(e,n,r){function t(){this._array=[],this._set=s?new Map:Object.create(null)}var o=r(4),i=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;t.fromArray=function(e,n){for(var r=new t,o=0,i=e.length;o=0)return n}else{var r=o.toSetString(e);if(i.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},t.prototype.at=function(e){if(e>=0&&er||t==r&&s>=o||i.compareByGeneratedPositionsInflated(e,n)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=r(4);o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){t(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=o},function(e,n,r){function t(e,n){var r=e;return"string"==typeof e&&(r=a.parseSourceMapInput(e)),null!=r.sections?new s(r,n):new o(r,n)}function o(e,n){var r=e;"string"==typeof e&&(r=a.parseSourceMapInput(e));var t=a.getArg(r,"version"),o=a.getArg(r,"sources"),i=a.getArg(r,"names",[]),s=a.getArg(r,"sourceRoot",null),u=a.getArg(r,"sourcesContent",null),c=a.getArg(r,"mappings"),g=a.getArg(r,"file",null);if(t!=this._version)throw new Error("Unsupported version: "+t);s&&(s=a.normalize(s)),o=o.map(String).map(a.normalize).map(function(e){return s&&a.isAbsolute(s)&&a.isAbsolute(e)?a.relative(s,e):e}),this._names=l.fromArray(i.map(String),!0),this._sources=l.fromArray(o,!0),this._absoluteSources=this._sources.toArray().map(function(e){return a.computeSourceURL(s,e,n)}),this.sourceRoot=s,this.sourcesContent=u,this._mappings=c,this._sourceMapURL=n,this.file=g}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e,n){var r=e;"string"==typeof e&&(r=a.parseSourceMapInput(e));var o=a.getArg(r,"version"),i=a.getArg(r,"sections");if(o!=this._version)throw new Error("Unsupported version: "+o);this._sources=new l,this._names=new l;var s={line:-1,column:0};this._sections=i.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var r=a.getArg(e,"offset"),o=a.getArg(r,"line"),i=a.getArg(r,"column");if(o=0){var i=this._originalMappings[o];if(void 0===e.column)for(var s=i.originalLine;i&&i.originalLine===s;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o];else for(var l=i.originalColumn;i&&i.originalLine===n&&i.originalColumn==l;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o]}return t},n.SourceMapConsumer=t,o.prototype=Object.create(t.prototype),o.prototype.consumer=t,o.prototype._findSourceIndex=function(e){var n=e;if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),this._sources.has(n))return this._sources.indexOf(n);var r;for(r=0;r1&&(r.source=d+o[1],d+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=f+o[3],f=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),A.push(r),"number"==typeof r.originalLine&&S.push(r)}g(A,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=A,g(S,a.compareByOriginalPositions),this.__originalMappings=S},o.prototype._findMapping=function(e,n,r,t,o,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return u.search(e,n,o,i)},o.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=a.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),i=a.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var s=a.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:a.getArg(o,"originalLine",null),column:a.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},o.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},o.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var t=e;null!=this.sourceRoot&&(t=a.relative(this.sourceRoot,t));var o;if(null!=this.sourceRoot&&(o=a.urlParse(this.sourceRoot))){var i=t.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!o.path||"/"==o.path)&&this._sources.has("/"+t))return this.sourcesContent[this._sources.indexOf("/"+t)]}if(n)return null;throw new Error('"'+t+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(n=this._findSourceIndex(n),n<0)return{line:null,column:null,lastColumn:null};var r={source:n,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=o,s.prototype=Object.create(t.prototype),s.prototype.constructor=t,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],n=0;n0?t-u>1?r(u,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,o,i,s,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},function(e,n){function r(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}function t(e,n){return Math.round(e+Math.random()*(n-e))}function o(e,n,i,s){if(i=0;n--)this.prepend(e[n]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},t.prototype.walk=function(e){for(var n,r=0,t=this.children.length;r0){for(n=[],r=0;r 0 && aGenerated.column >= 0\n\t && !aOriginal && !aSource && !aName) {\n\t // Case 1.\n\t return;\n\t }\n\t else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && aOriginal.line > 0 && aOriginal.column >= 0\n\t && aSource) {\n\t // Cases 2 and 3.\n\t return;\n\t }\n\t else {\n\t throw new Error('Invalid mapping: ' + JSON.stringify({\n\t generated: aGenerated,\n\t source: aSource,\n\t original: aOriginal,\n\t name: aName\n\t }));\n\t }\n\t };\n\t\n\t/**\n\t * Serialize the accumulated mappings in to the stream of base 64 VLQs\n\t * specified by the source map format.\n\t */\n\tSourceMapGenerator.prototype._serializeMappings =\n\t function SourceMapGenerator_serializeMappings() {\n\t var previousGeneratedColumn = 0;\n\t var previousGeneratedLine = 1;\n\t var previousOriginalColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousName = 0;\n\t var previousSource = 0;\n\t var result = '';\n\t var next;\n\t var mapping;\n\t var nameIdx;\n\t var sourceIdx;\n\t\n\t var mappings = this._mappings.toArray();\n\t for (var i = 0, len = mappings.length; i < len; i++) {\n\t mapping = mappings[i];\n\t next = ''\n\t\n\t if (mapping.generatedLine !== previousGeneratedLine) {\n\t previousGeneratedColumn = 0;\n\t while (mapping.generatedLine !== previousGeneratedLine) {\n\t next += ';';\n\t previousGeneratedLine++;\n\t }\n\t }\n\t else {\n\t if (i > 0) {\n\t if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n\t continue;\n\t }\n\t next += ',';\n\t }\n\t }\n\t\n\t next += base64VLQ.encode(mapping.generatedColumn\n\t - previousGeneratedColumn);\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (mapping.source != null) {\n\t sourceIdx = this._sources.indexOf(mapping.source);\n\t next += base64VLQ.encode(sourceIdx - previousSource);\n\t previousSource = sourceIdx;\n\t\n\t // lines are stored 0-based in SourceMap spec version 3\n\t next += base64VLQ.encode(mapping.originalLine - 1\n\t - previousOriginalLine);\n\t previousOriginalLine = mapping.originalLine - 1;\n\t\n\t next += base64VLQ.encode(mapping.originalColumn\n\t - previousOriginalColumn);\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (mapping.name != null) {\n\t nameIdx = this._names.indexOf(mapping.name);\n\t next += base64VLQ.encode(nameIdx - previousName);\n\t previousName = nameIdx;\n\t }\n\t }\n\t\n\t result += next;\n\t }\n\t\n\t return result;\n\t };\n\t\n\tSourceMapGenerator.prototype._generateSourcesContent =\n\t function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n\t return aSources.map(function (source) {\n\t if (!this._sourcesContents) {\n\t return null;\n\t }\n\t if (aSourceRoot != null) {\n\t source = util.relative(aSourceRoot, source);\n\t }\n\t var key = util.toSetString(source);\n\t return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n\t ? this._sourcesContents[key]\n\t : null;\n\t }, this);\n\t };\n\t\n\t/**\n\t * Externalize the source map.\n\t */\n\tSourceMapGenerator.prototype.toJSON =\n\t function SourceMapGenerator_toJSON() {\n\t var map = {\n\t version: this._version,\n\t sources: this._sources.toArray(),\n\t names: this._names.toArray(),\n\t mappings: this._serializeMappings()\n\t };\n\t if (this._file != null) {\n\t map.file = this._file;\n\t }\n\t if (this._sourceRoot != null) {\n\t map.sourceRoot = this._sourceRoot;\n\t }\n\t if (this._sourcesContents) {\n\t map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n\t }\n\t\n\t return map;\n\t };\n\t\n\t/**\n\t * Render the source map being generated to a string.\n\t */\n\tSourceMapGenerator.prototype.toString =\n\t function SourceMapGenerator_toString() {\n\t return JSON.stringify(this.toJSON());\n\t };\n\t\n\texports.SourceMapGenerator = SourceMapGenerator;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\t\n\tvar base64 = __webpack_require__(3);\n\t\n\t// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t// length quantities we use in the source map spec, the first bit is the sign,\n\t// the next four bits are the actual value, and the 6th bit is the\n\t// continuation bit. The continuation bit tells us whether there are more\n\t// digits in this value following this digit.\n\t//\n\t// Continuation\n\t// | Sign\n\t// | |\n\t// V V\n\t// 101011\n\t\n\tvar VLQ_BASE_SHIFT = 5;\n\t\n\t// binary: 100000\n\tvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\t\n\t// binary: 011111\n\tvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\t\n\t// binary: 100000\n\tvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\t\n\t/**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\tfunction toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t}\n\t\n\t/**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\tfunction fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t}\n\t\n\t/**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\texports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\t\n\t var vlq = toVLQSigned(aValue);\n\t\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\t\n\t return encoded;\n\t};\n\t\n\t/**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\texports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\t\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\t\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\t\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\t\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\t\n\t/**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\texports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t};\n\t\n\t/**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\texports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\t\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\t\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\t\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\t\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\t\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\t\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\t\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\t\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\t\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\t\n\t // Invalid base64 digit.\n\t return -1;\n\t};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t/**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\tfunction getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t}\n\texports.getArg = getArg;\n\t\n\tvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\n\tvar dataUrlRegexp = /^data:.+\\,.+$/;\n\t\n\tfunction urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t}\n\texports.urlParse = urlParse;\n\t\n\tfunction urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t}\n\texports.urlGenerate = urlGenerate;\n\t\n\t/**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consecutive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\tfunction normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\t\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\t\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\t\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t}\n\texports.normalize = normalize;\n\t\n\t/**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\tfunction join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\t\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\t\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\t\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\t\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\t\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t}\n\texports.join = join;\n\t\n\texports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n\t};\n\t\n\t/**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\tfunction relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t\n\t aRoot = aRoot.replace(/\\/$/, '');\n\t\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\t\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\t\n\t ++level;\n\t }\n\t\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t}\n\texports.relative = relative;\n\t\n\tvar supportsNullProto = (function () {\n\t var obj = Object.create(null);\n\t return !('__proto__' in obj);\n\t}());\n\t\n\tfunction identity (s) {\n\t return s;\n\t}\n\t\n\t/**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\tfunction toSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return '$' + aStr;\n\t }\n\t\n\t return aStr;\n\t}\n\texports.toSetString = supportsNullProto ? identity : toSetString;\n\t\n\tfunction fromSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return aStr.slice(1);\n\t }\n\t\n\t return aStr;\n\t}\n\texports.fromSetString = supportsNullProto ? identity : fromSetString;\n\t\n\tfunction isProtoString(s) {\n\t if (!s) {\n\t return false;\n\t }\n\t\n\t var length = s.length;\n\t\n\t if (length < 9 /* \"__proto__\".length */) {\n\t return false;\n\t }\n\t\n\t if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n\t s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n\t s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n\t s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 9) !== 95 /* '_' */) {\n\t return false;\n\t }\n\t\n\t for (var i = length - 10; i >= 0; i--) {\n\t if (s.charCodeAt(i) !== 36 /* '$' */) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\tfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByOriginalPositions = compareByOriginalPositions;\n\t\n\t/**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\tfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\t\n\tfunction strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\t\n\t if (aStr1 === null) {\n\t return 1; // aStr2 !== null\n\t }\n\t\n\t if (aStr2 === null) {\n\t return -1; // aStr1 !== null\n\t }\n\t\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\t\n\t return -1;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\tfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\t\n\t/**\n\t * Strip any JSON XSSI avoidance prefix from the string (as documented\n\t * in the source maps specification), and then parse the string as\n\t * JSON.\n\t */\n\tfunction parseSourceMapInput(str) {\n\t return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n\t}\n\texports.parseSourceMapInput = parseSourceMapInput;\n\t\n\t/**\n\t * Compute the URL of a source given the the source root, the source's\n\t * URL, and the source map's URL.\n\t */\n\tfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n\t sourceURL = sourceURL || '';\n\t\n\t if (sourceRoot) {\n\t // This follows what Chrome does.\n\t if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n\t sourceRoot += '/';\n\t }\n\t // The spec says:\n\t // Line 4: An optional source root, useful for relocating source\n\t // files on a server or removing repeated values in the\n\t // “sources” entry. This value is prepended to the individual\n\t // entries in the “source” field.\n\t sourceURL = sourceRoot + sourceURL;\n\t }\n\t\n\t // Historically, SourceMapConsumer did not take the sourceMapURL as\n\t // a parameter. This mode is still somewhat supported, which is why\n\t // this code block is conditional. However, it's preferable to pass\n\t // the source map URL to SourceMapConsumer, so that this function\n\t // can implement the source URL resolution algorithm as outlined in\n\t // the spec. This block is basically the equivalent of:\n\t // new URL(sourceURL, sourceMapURL).toString()\n\t // ... except it avoids using URL, which wasn't available in the\n\t // older releases of node still supported by this library.\n\t //\n\t // The spec says:\n\t // If the sources are not absolute URLs after prepending of the\n\t // “sourceRoot”, the sources are resolved relative to the\n\t // SourceMap (like resolving script src in a html document).\n\t if (sourceMapURL) {\n\t var parsed = urlParse(sourceMapURL);\n\t if (!parsed) {\n\t throw new Error(\"sourceMapURL could not be parsed\");\n\t }\n\t if (parsed.path) {\n\t // Strip the last path component, but keep the \"/\".\n\t var index = parsed.path.lastIndexOf('/');\n\t if (index >= 0) {\n\t parsed.path = parsed.path.substring(0, index + 1);\n\t }\n\t }\n\t sourceURL = join(urlGenerate(parsed), sourceURL);\n\t }\n\t\n\t return normalize(sourceURL);\n\t}\n\texports.computeSourceURL = computeSourceURL;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar hasNativeMap = typeof Map !== \"undefined\";\n\t\n\t/**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\tfunction ArraySet() {\n\t this._array = [];\n\t this._set = hasNativeMap ? new Map() : Object.create(null);\n\t}\n\t\n\t/**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\tArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t};\n\t\n\t/**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\tArraySet.prototype.size = function ArraySet_size() {\n\t return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n\t};\n\t\n\t/**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n\t var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t if (hasNativeMap) {\n\t this._set.set(aStr, idx);\n\t } else {\n\t this._set[sStr] = idx;\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.has = function ArraySet_has(aStr) {\n\t if (hasNativeMap) {\n\t return this._set.has(aStr);\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t return has.call(this._set, sStr);\n\t }\n\t};\n\t\n\t/**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t if (hasNativeMap) {\n\t var idx = this._set.get(aStr);\n\t if (idx >= 0) {\n\t return idx;\n\t }\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t if (has.call(this._set, sStr)) {\n\t return this._set[sStr];\n\t }\n\t }\n\t\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t};\n\t\n\t/**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\tArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t};\n\t\n\t/**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\tArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t};\n\t\n\texports.ArraySet = ArraySet;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2014 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\t\n\t/**\n\t * Determine whether mappingB is after mappingA with respect to generated\n\t * position.\n\t */\n\tfunction generatedPositionAfter(mappingA, mappingB) {\n\t // Optimized for most common case\n\t var lineA = mappingA.generatedLine;\n\t var lineB = mappingB.generatedLine;\n\t var columnA = mappingA.generatedColumn;\n\t var columnB = mappingB.generatedColumn;\n\t return lineB > lineA || lineB == lineA && columnB >= columnA ||\n\t util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n\t}\n\t\n\t/**\n\t * A data structure to provide a sorted view of accumulated mappings in a\n\t * performance conscious manner. It trades a neglibable overhead in general\n\t * case for a large speedup in case of mappings being added in order.\n\t */\n\tfunction MappingList() {\n\t this._array = [];\n\t this._sorted = true;\n\t // Serves as infimum\n\t this._last = {generatedLine: -1, generatedColumn: 0};\n\t}\n\t\n\t/**\n\t * Iterate through internal items. This method takes the same arguments that\n\t * `Array.prototype.forEach` takes.\n\t *\n\t * NOTE: The order of the mappings is NOT guaranteed.\n\t */\n\tMappingList.prototype.unsortedForEach =\n\t function MappingList_forEach(aCallback, aThisArg) {\n\t this._array.forEach(aCallback, aThisArg);\n\t };\n\t\n\t/**\n\t * Add the given source mapping.\n\t *\n\t * @param Object aMapping\n\t */\n\tMappingList.prototype.add = function MappingList_add(aMapping) {\n\t if (generatedPositionAfter(this._last, aMapping)) {\n\t this._last = aMapping;\n\t this._array.push(aMapping);\n\t } else {\n\t this._sorted = false;\n\t this._array.push(aMapping);\n\t }\n\t};\n\t\n\t/**\n\t * Returns the flat, sorted array of mappings. The mappings are sorted by\n\t * generated position.\n\t *\n\t * WARNING: This method returns internal data without copying, for\n\t * performance. The return value must NOT be mutated, and should be treated as\n\t * an immutable borrow. If you want to take ownership, you must make your own\n\t * copy.\n\t */\n\tMappingList.prototype.toArray = function MappingList_toArray() {\n\t if (!this._sorted) {\n\t this._array.sort(util.compareByGeneratedPositionsInflated);\n\t this._sorted = true;\n\t }\n\t return this._array;\n\t};\n\t\n\texports.MappingList = MappingList;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar binarySearch = __webpack_require__(8);\n\tvar ArraySet = __webpack_require__(5).ArraySet;\n\tvar base64VLQ = __webpack_require__(2);\n\tvar quickSort = __webpack_require__(9).quickSort;\n\t\n\tfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t return sourceMap.sections != null\n\t ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n\t : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n\t}\n\t\n\tSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n\t return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n\t}\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tSourceMapConsumer.prototype._version = 3;\n\t\n\t// `__generatedMappings` and `__originalMappings` are arrays that hold the\n\t// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n\t// are lazily instantiated, accessed via the `_generatedMappings` and\n\t// `_originalMappings` getters respectively, and we only parse the mappings\n\t// and create these arrays once queried for a source location. We jump through\n\t// these hoops because there can be many thousands of mappings, and parsing\n\t// them is expensive, so we only want to do it if we must.\n\t//\n\t// Each object in the arrays is of the form:\n\t//\n\t// {\n\t// generatedLine: The line number in the generated code,\n\t// generatedColumn: The column number in the generated code,\n\t// source: The path to the original source file that generated this\n\t// chunk of code,\n\t// originalLine: The line number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// originalColumn: The column number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// name: The name of the original symbol which generated this chunk of\n\t// code.\n\t// }\n\t//\n\t// All properties except for `generatedLine` and `generatedColumn` can be\n\t// `null`.\n\t//\n\t// `_generatedMappings` is ordered by the generated positions.\n\t//\n\t// `_originalMappings` is ordered by the original positions.\n\t\n\tSourceMapConsumer.prototype.__generatedMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n\t configurable: true,\n\t enumerable: true,\n\t get: function () {\n\t if (!this.__generatedMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__generatedMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype.__originalMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n\t configurable: true,\n\t enumerable: true,\n\t get: function () {\n\t if (!this.__originalMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__originalMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype._charIsMappingSeparator =\n\t function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n\t var c = aStr.charAt(index);\n\t return c === \";\" || c === \",\";\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t throw new Error(\"Subclasses must implement _parseMappings\");\n\t };\n\t\n\tSourceMapConsumer.GENERATED_ORDER = 1;\n\tSourceMapConsumer.ORIGINAL_ORDER = 2;\n\t\n\tSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n\tSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Iterate over each mapping between an original source/line/column and a\n\t * generated line/column in this source map.\n\t *\n\t * @param Function aCallback\n\t * The function that is called with each mapping.\n\t * @param Object aContext\n\t * Optional. If specified, this object will be the value of `this` every\n\t * time that `aCallback` is called.\n\t * @param aOrder\n\t * Either `SourceMapConsumer.GENERATED_ORDER` or\n\t * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n\t * iterate over the mappings sorted by the generated file's line/column\n\t * order or the original's source/line/column order, respectively. Defaults to\n\t * `SourceMapConsumer.GENERATED_ORDER`.\n\t */\n\tSourceMapConsumer.prototype.eachMapping =\n\t function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n\t var context = aContext || null;\n\t var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\t\n\t var mappings;\n\t switch (order) {\n\t case SourceMapConsumer.GENERATED_ORDER:\n\t mappings = this._generatedMappings;\n\t break;\n\t case SourceMapConsumer.ORIGINAL_ORDER:\n\t mappings = this._originalMappings;\n\t break;\n\t default:\n\t throw new Error(\"Unknown order of iteration.\");\n\t }\n\t\n\t var sourceRoot = this.sourceRoot;\n\t mappings.map(function (mapping) {\n\t var source = mapping.source === null ? null : this._sources.at(mapping.source);\n\t source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n\t return {\n\t source: source,\n\t generatedLine: mapping.generatedLine,\n\t generatedColumn: mapping.generatedColumn,\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: mapping.name === null ? null : this._names.at(mapping.name)\n\t };\n\t }, this).forEach(aCallback, context);\n\t };\n\t\n\t/**\n\t * Returns all generated line and column information for the original source,\n\t * line, and column provided. If no column is provided, returns all mappings\n\t * corresponding to a either the line we are searching for or the next\n\t * closest line that has any mappings. Otherwise, returns all mappings\n\t * corresponding to the given line and either the column we are searching for\n\t * or the next closest column that has any offsets.\n\t *\n\t * The only argument is an object with the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number is 1-based.\n\t * - column: Optional. the column number in the original source.\n\t * The column number is 0-based.\n\t *\n\t * and an array of objects is returned, each with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tSourceMapConsumer.prototype.allGeneratedPositionsFor =\n\t function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n\t var line = util.getArg(aArgs, 'line');\n\t\n\t // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n\t // returns the index of the closest mapping less than the needle. By\n\t // setting needle.originalColumn to 0, we thus find the last mapping for\n\t // the given line, provided such a mapping exists.\n\t var needle = {\n\t source: util.getArg(aArgs, 'source'),\n\t originalLine: line,\n\t originalColumn: util.getArg(aArgs, 'column', 0)\n\t };\n\t\n\t needle.source = this._findSourceIndex(needle.source);\n\t if (needle.source < 0) {\n\t return [];\n\t }\n\t\n\t var mappings = [];\n\t\n\t var index = this._findMapping(needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t binarySearch.LEAST_UPPER_BOUND);\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\t\n\t return mappings;\n\t };\n\t\n\texports.SourceMapConsumer = SourceMapConsumer;\n\t\n\t/**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The first parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * The second parameter, if given, is a string whose value is the URL\n\t * at which the source map was found. This URL is used to compute the\n\t * sources array.\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\tfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\t\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t if (sourceRoot) {\n\t sourceRoot = util.normalize(sourceRoot);\n\t }\n\t\n\t sources = sources\n\t .map(String)\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\t\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names.map(String), true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\t\n\t this._absoluteSources = this._sources.toArray().map(function (s) {\n\t return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n\t });\n\t\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this._sourceMapURL = aSourceMapURL;\n\t this.file = file;\n\t}\n\t\n\tBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\t\n\t/**\n\t * Utility function to find the index of a source. Returns -1 if not\n\t * found.\n\t */\n\tBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n\t var relativeSource = aSource;\n\t if (this.sourceRoot != null) {\n\t relativeSource = util.relative(this.sourceRoot, relativeSource);\n\t }\n\t\n\t if (this._sources.has(relativeSource)) {\n\t return this._sources.indexOf(relativeSource);\n\t }\n\t\n\t // Maybe aSource is an absolute URL as returned by |sources|. In\n\t // this case we can't simply undo the transform.\n\t var i;\n\t for (i = 0; i < this._absoluteSources.length; ++i) {\n\t if (this._absoluteSources[i] == aSource) {\n\t return i;\n\t }\n\t }\n\t\n\t return -1;\n\t};\n\t\n\t/**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @param String aSourceMapURL\n\t * The URL at which the source map can be found (optional)\n\t * @returns BasicSourceMapConsumer\n\t */\n\tBasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\t\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\t smc._sourceMapURL = aSourceMapURL;\n\t smc._absoluteSources = smc._sources.toArray().map(function (s) {\n\t return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n\t });\n\t\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\t\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\t\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\t\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\t\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\t\n\t destOriginalMappings.push(destMapping);\n\t }\n\t\n\t destGeneratedMappings.push(destMapping);\n\t }\n\t\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\t\n\t return smc;\n\t };\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tBasicSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._absoluteSources.slice();\n\t }\n\t});\n\t\n\t/**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\tfunction Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t}\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tBasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\t\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\t\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\t\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\t\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\t\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\t\n\t cachedSegments[str] = segment;\n\t }\n\t\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\t\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\t\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\t\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\t\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\t\n\t/**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\tBasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\t\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\t\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\t\n\t/**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\tBasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\t\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\t\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source. The line number\n\t * is 1-based.\n\t * - column: The column number in the generated source. The column\n\t * number is 0-based.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the original source, or null. The\n\t * column number is 0-based.\n\t * - name: The original identifier, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\t\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tBasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\t\n\t var index = this._findSourceIndex(aSource);\n\t if (index >= 0) {\n\t return this.sourcesContent[index];\n\t }\n\t\n\t var relativeSource = aSource;\n\t if (this.sourceRoot != null) {\n\t relativeSource = util.relative(this.sourceRoot, relativeSource);\n\t }\n\t\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\t\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + relativeSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n\t }\n\t }\n\t\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number\n\t * is 1-based.\n\t * - column: The column number in the original source. The column\n\t * number is 0-based.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tBasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t source = this._findSourceIndex(source);\n\t if (source < 0) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\t\n\texports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\t\n\t/**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The first parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * The second parameter, if given, is a string whose value is the URL\n\t * at which the source map was found. This URL is used to compute the\n\t * sources array.\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\tfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\t\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\t\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\t\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n\t }\n\t });\n\t}\n\t\n\tIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tIndexedSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t});\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source. The line number\n\t * is 1-based.\n\t * - column: The column number in the generated source. The column\n\t * number is 0-based.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the original source, or null. The\n\t * column number is 0-based.\n\t * - name: The original identifier, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\t\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\t\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\t\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tIndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number\n\t * is 1-based.\n\t * - column: The column number in the original source. The column\n\t * number is 0-based.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based. \n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tIndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tIndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\t\n\t var source = section.consumer._sources.at(mapping.source);\n\t source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\t\n\t var name = null;\n\t if (mapping.name) {\n\t name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\t }\n\t\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\t\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\t\n\texports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\texports.GREATEST_LOWER_BOUND = 1;\n\texports.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\tfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\texports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\t\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\t\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\t\n\t return index;\n\t};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t// It turns out that some (most?) JavaScript engines don't self-host\n\t// `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t// faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t// custom comparator function, calling back and forth between the VM's C++ and\n\t// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t// worse generated code for the comparator function than would be optimal. In\n\t// fact, when sorting with a comparator, these costs outweigh the benefits of\n\t// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t// a ~3500ms mean speed-up in `bench/bench.html`.\n\t\n\t/**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\tfunction swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t}\n\t\n\t/**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\tfunction randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t}\n\t\n\t/**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\tfunction doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\t\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\t\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\t\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\t\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\t\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\t\n\t // (2) Recurse on each half.\n\t\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t}\n\t\n\t/**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\texports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\tvar util = __webpack_require__(4);\n\t\n\t// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n\t// operating systems these days (capturing the result).\n\tvar REGEX_NEWLINE = /(\\r?\\n)/;\n\t\n\t// Newline character code for charCodeAt() comparisons\n\tvar NEWLINE_CODE = 10;\n\t\n\t// Private symbol for identifying `SourceNode`s when multiple versions of\n\t// the source-map library are loaded. This MUST NOT CHANGE across\n\t// versions!\n\tvar isSourceNode = \"$$$isSourceNode$$$\";\n\t\n\t/**\n\t * SourceNodes provide a way to abstract over interpolating/concatenating\n\t * snippets of generated JavaScript source code while maintaining the line and\n\t * column information associated with the original source code.\n\t *\n\t * @param aLine The original line number.\n\t * @param aColumn The original column number.\n\t * @param aSource The original source's filename.\n\t * @param aChunks Optional. An array of strings which are snippets of\n\t * generated JS, or other SourceNodes.\n\t * @param aName The original identifier.\n\t */\n\tfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n\t this.children = [];\n\t this.sourceContents = {};\n\t this.line = aLine == null ? null : aLine;\n\t this.column = aColumn == null ? null : aColumn;\n\t this.source = aSource == null ? null : aSource;\n\t this.name = aName == null ? null : aName;\n\t this[isSourceNode] = true;\n\t if (aChunks != null) this.add(aChunks);\n\t}\n\t\n\t/**\n\t * Creates a SourceNode from generated code and a SourceMapConsumer.\n\t *\n\t * @param aGeneratedCode The generated code\n\t * @param aSourceMapConsumer The SourceMap for the generated code\n\t * @param aRelativePath Optional. The path that relative sources in the\n\t * SourceMapConsumer should be relative to.\n\t */\n\tSourceNode.fromStringWithSourceMap =\n\t function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n\t // The SourceNode we want to fill with the generated code\n\t // and the SourceMap\n\t var node = new SourceNode();\n\t\n\t // All even indices of this array are one line of the generated code,\n\t // while all odd indices are the newlines between two adjacent lines\n\t // (since `REGEX_NEWLINE` captures its match).\n\t // Processed fragments are accessed by calling `shiftNextLine`.\n\t var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n\t var remainingLinesIndex = 0;\n\t var shiftNextLine = function() {\n\t var lineContents = getNextLine();\n\t // The last line of a file might not have a newline.\n\t var newLine = getNextLine() || \"\";\n\t return lineContents + newLine;\n\t\n\t function getNextLine() {\n\t return remainingLinesIndex < remainingLines.length ?\n\t remainingLines[remainingLinesIndex++] : undefined;\n\t }\n\t };\n\t\n\t // We need to remember the position of \"remainingLines\"\n\t var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\t\n\t // The generate SourceNodes we need a code range.\n\t // To extract it current and last mapping is used.\n\t // Here we store the last mapping.\n\t var lastMapping = null;\n\t\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t if (lastMapping !== null) {\n\t // We add the code from \"lastMapping\" to \"mapping\":\n\t // First check if there is a new line in between.\n\t if (lastGeneratedLine < mapping.generatedLine) {\n\t // Associate first line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t lastGeneratedLine++;\n\t lastGeneratedColumn = 0;\n\t // The remaining code is added without mapping\n\t } else {\n\t // There is no new line in between.\n\t // Associate the code between \"lastGeneratedColumn\" and\n\t // \"mapping.generatedColumn\" with \"lastMapping\"\n\t var nextLine = remainingLines[remainingLinesIndex] || '';\n\t var code = nextLine.substr(0, mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t addMappingWithCode(lastMapping, code);\n\t // No more remaining code, continue\n\t lastMapping = mapping;\n\t return;\n\t }\n\t }\n\t // We add the generated code until the first mapping\n\t // to the SourceNode without any mapping.\n\t // Each line is added as separate string.\n\t while (lastGeneratedLine < mapping.generatedLine) {\n\t node.add(shiftNextLine());\n\t lastGeneratedLine++;\n\t }\n\t if (lastGeneratedColumn < mapping.generatedColumn) {\n\t var nextLine = remainingLines[remainingLinesIndex] || '';\n\t node.add(nextLine.substr(0, mapping.generatedColumn));\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t }\n\t lastMapping = mapping;\n\t }, this);\n\t // We have processed all mappings.\n\t if (remainingLinesIndex < remainingLines.length) {\n\t if (lastMapping) {\n\t // Associate the remaining code in the current line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t }\n\t // and add the remaining lines without any mapping\n\t node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n\t }\n\t\n\t // Copy sourcesContent into SourceNode\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aRelativePath != null) {\n\t sourceFile = util.join(aRelativePath, sourceFile);\n\t }\n\t node.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t\n\t return node;\n\t\n\t function addMappingWithCode(mapping, code) {\n\t if (mapping === null || mapping.source === undefined) {\n\t node.add(code);\n\t } else {\n\t var source = aRelativePath\n\t ? util.join(aRelativePath, mapping.source)\n\t : mapping.source;\n\t node.add(new SourceNode(mapping.originalLine,\n\t mapping.originalColumn,\n\t source,\n\t code,\n\t mapping.name));\n\t }\n\t }\n\t };\n\t\n\t/**\n\t * Add a chunk of generated JS to this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.add = function SourceNode_add(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t aChunk.forEach(function (chunk) {\n\t this.add(chunk);\n\t }, this);\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t if (aChunk) {\n\t this.children.push(aChunk);\n\t }\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Add a chunk of generated JS to the beginning of this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t for (var i = aChunk.length-1; i >= 0; i--) {\n\t this.prepend(aChunk[i]);\n\t }\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t this.children.unshift(aChunk);\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Walk over the tree of JS snippets in this node and its children. The\n\t * walking function is called once for each snippet of JS and is passed that\n\t * snippet and the its original associated source's line/column location.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n\t var chunk;\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t chunk = this.children[i];\n\t if (chunk[isSourceNode]) {\n\t chunk.walk(aFn);\n\t }\n\t else {\n\t if (chunk !== '') {\n\t aFn(chunk, { source: this.source,\n\t line: this.line,\n\t column: this.column,\n\t name: this.name });\n\t }\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n\t * each of `this.children`.\n\t *\n\t * @param aSep The separator.\n\t */\n\tSourceNode.prototype.join = function SourceNode_join(aSep) {\n\t var newChildren;\n\t var i;\n\t var len = this.children.length;\n\t if (len > 0) {\n\t newChildren = [];\n\t for (i = 0; i < len-1; i++) {\n\t newChildren.push(this.children[i]);\n\t newChildren.push(aSep);\n\t }\n\t newChildren.push(this.children[i]);\n\t this.children = newChildren;\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Call String.prototype.replace on the very right-most source snippet. Useful\n\t * for trimming whitespace from the end of a source node, etc.\n\t *\n\t * @param aPattern The pattern to replace.\n\t * @param aReplacement The thing to replace the pattern with.\n\t */\n\tSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n\t var lastChild = this.children[this.children.length - 1];\n\t if (lastChild[isSourceNode]) {\n\t lastChild.replaceRight(aPattern, aReplacement);\n\t }\n\t else if (typeof lastChild === 'string') {\n\t this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n\t }\n\t else {\n\t this.children.push(''.replace(aPattern, aReplacement));\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Set the source content for a source file. This will be added to the SourceMapGenerator\n\t * in the sourcesContent field.\n\t *\n\t * @param aSourceFile The filename of the source file\n\t * @param aSourceContent The content of the source file\n\t */\n\tSourceNode.prototype.setSourceContent =\n\t function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n\t this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n\t };\n\t\n\t/**\n\t * Walk over the tree of SourceNodes. The walking function is called for each\n\t * source file content and is passed the filename and source content.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walkSourceContents =\n\t function SourceNode_walkSourceContents(aFn) {\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t if (this.children[i][isSourceNode]) {\n\t this.children[i].walkSourceContents(aFn);\n\t }\n\t }\n\t\n\t var sources = Object.keys(this.sourceContents);\n\t for (var i = 0, len = sources.length; i < len; i++) {\n\t aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n\t }\n\t };\n\t\n\t/**\n\t * Return the string representation of this source node. Walks over the tree\n\t * and concatenates all the various snippets together to one string.\n\t */\n\tSourceNode.prototype.toString = function SourceNode_toString() {\n\t var str = \"\";\n\t this.walk(function (chunk) {\n\t str += chunk;\n\t });\n\t return str;\n\t};\n\t\n\t/**\n\t * Returns the string representation of this source node along with a source\n\t * map.\n\t */\n\tSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n\t var generated = {\n\t code: \"\",\n\t line: 1,\n\t column: 0\n\t };\n\t var map = new SourceMapGenerator(aArgs);\n\t var sourceMappingActive = false;\n\t var lastOriginalSource = null;\n\t var lastOriginalLine = null;\n\t var lastOriginalColumn = null;\n\t var lastOriginalName = null;\n\t this.walk(function (chunk, original) {\n\t generated.code += chunk;\n\t if (original.source !== null\n\t && original.line !== null\n\t && original.column !== null) {\n\t if(lastOriginalSource !== original.source\n\t || lastOriginalLine !== original.line\n\t || lastOriginalColumn !== original.column\n\t || lastOriginalName !== original.name) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t lastOriginalSource = original.source;\n\t lastOriginalLine = original.line;\n\t lastOriginalColumn = original.column;\n\t lastOriginalName = original.name;\n\t sourceMappingActive = true;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t }\n\t });\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t }\n\t for (var idx = 0, length = chunk.length; idx < length; idx++) {\n\t if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n\t generated.line++;\n\t generated.column = 0;\n\t // Mappings end at eol\n\t if (idx + 1 === length) {\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t } else {\n\t generated.column++;\n\t }\n\t }\n\t });\n\t this.walkSourceContents(function (sourceFile, sourceContent) {\n\t map.setSourceContent(sourceFile, sourceContent);\n\t });\n\t\n\t return { code: generated.code, map: map };\n\t};\n\t\n\texports.SourceNode = SourceNode;\n\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// source-map.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 0fd5815da764db5fb9fe","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./source-map.js\n// module id = 0\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-generator.js\n// module id = 1\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64-vlq.js\n// module id = 2\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64.js\n// module id = 3\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/util.js\n// module id = 4\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/array-set.js\n// module id = 5\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/mapping-list.js\n// module id = 6\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-consumer.js\n// module id = 7\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/binary-search.js\n// module id = 8\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/quick-sort.js\n// module id = 9\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-node.js\n// module id = 10\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/node_modules/handlebars/node_modules/source-map/lib/array-set.js b/node_modules/handlebars/node_modules/source-map/lib/array-set.js deleted file mode 100644 index fbd5c81ca..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/array-set.js +++ /dev/null @@ -1,121 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); -var has = Object.prototype.hasOwnProperty; -var hasNativeMap = typeof Map !== "undefined"; - -/** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ -function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); -} - -/** - * Static method for creating ArraySet instances from an existing array. - */ -ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; -}; - -/** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ -ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; -}; - -/** - * Add the given string to this set. - * - * @param String aStr - */ -ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } -}; - -/** - * Is the given string a member of this set? - * - * @param String aStr - */ -ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } -}; - -/** - * What is the index of the given string in the array? - * - * @param String aStr - */ -ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); -}; - -/** - * What is the element at the given index? - * - * @param Number aIdx - */ -ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); -}; - -/** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ -ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); -}; - -exports.ArraySet = ArraySet; diff --git a/node_modules/handlebars/node_modules/source-map/lib/base64-vlq.js b/node_modules/handlebars/node_modules/source-map/lib/base64-vlq.js deleted file mode 100644 index 612b40401..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/base64-vlq.js +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -var base64 = require('./base64'); - -// A single base 64 digit can contain 6 bits of data. For the base 64 variable -// length quantities we use in the source map spec, the first bit is the sign, -// the next four bits are the actual value, and the 6th bit is the -// continuation bit. The continuation bit tells us whether there are more -// digits in this value following this digit. -// -// Continuation -// | Sign -// | | -// V V -// 101011 - -var VLQ_BASE_SHIFT = 5; - -// binary: 100000 -var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - -// binary: 011111 -var VLQ_BASE_MASK = VLQ_BASE - 1; - -// binary: 100000 -var VLQ_CONTINUATION_BIT = VLQ_BASE; - -/** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ -function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; -} - -/** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ -function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; -} - -/** - * Returns the base 64 VLQ encoded value. - */ -exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; -}; - -/** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ -exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; -}; diff --git a/node_modules/handlebars/node_modules/source-map/lib/base64.js b/node_modules/handlebars/node_modules/source-map/lib/base64.js deleted file mode 100644 index 8aa86b302..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/base64.js +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - -/** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ -exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); -}; - -/** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ -exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; -}; diff --git a/node_modules/handlebars/node_modules/source-map/lib/binary-search.js b/node_modules/handlebars/node_modules/source-map/lib/binary-search.js deleted file mode 100644 index 010ac941e..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/binary-search.js +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -exports.GREATEST_LOWER_BOUND = 1; -exports.LEAST_UPPER_BOUND = 2; - -/** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ -function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } -} - -/** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ -exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; -}; diff --git a/node_modules/handlebars/node_modules/source-map/lib/mapping-list.js b/node_modules/handlebars/node_modules/source-map/lib/mapping-list.js deleted file mode 100644 index 06d1274a0..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/mapping-list.js +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); - -/** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ -function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; -} - -/** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ -function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; -} - -/** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ -MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - -/** - * Add the given source mapping. - * - * @param Object aMapping - */ -MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } -}; - -/** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ -MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; -}; - -exports.MappingList = MappingList; diff --git a/node_modules/handlebars/node_modules/source-map/lib/quick-sort.js b/node_modules/handlebars/node_modules/source-map/lib/quick-sort.js deleted file mode 100644 index 6a7caadbb..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/quick-sort.js +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -// It turns out that some (most?) JavaScript engines don't self-host -// `Array.prototype.sort`. This makes sense because C++ will likely remain -// faster than JS when doing raw CPU-intensive sorting. However, when using a -// custom comparator function, calling back and forth between the VM's C++ and -// JIT'd JS is rather slow *and* loses JIT type information, resulting in -// worse generated code for the comparator function than would be optimal. In -// fact, when sorting with a comparator, these costs outweigh the benefits of -// sorting in C++. By using our own JS-implemented Quick Sort (below), we get -// a ~3500ms mean speed-up in `bench/bench.html`. - -/** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ -function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; -} - -/** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ -function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); -} - -/** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ -function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } -} - -/** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ -exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); -}; diff --git a/node_modules/handlebars/node_modules/source-map/lib/source-map-consumer.js b/node_modules/handlebars/node_modules/source-map/lib/source-map-consumer.js deleted file mode 100644 index 7b99d1da7..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/source-map-consumer.js +++ /dev/null @@ -1,1145 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); -var binarySearch = require('./binary-search'); -var ArraySet = require('./array-set').ArraySet; -var base64VLQ = require('./base64-vlq'); -var quickSort = require('./quick-sort').quickSort; - -function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) - : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); -} - -SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); -} - -/** - * The version of the source mapping spec that we are consuming. - */ -SourceMapConsumer.prototype._version = 3; - -// `__generatedMappings` and `__originalMappings` are arrays that hold the -// parsed mapping coordinates from the source map's "mappings" attribute. They -// are lazily instantiated, accessed via the `_generatedMappings` and -// `_originalMappings` getters respectively, and we only parse the mappings -// and create these arrays once queried for a source location. We jump through -// these hoops because there can be many thousands of mappings, and parsing -// them is expensive, so we only want to do it if we must. -// -// Each object in the arrays is of the form: -// -// { -// generatedLine: The line number in the generated code, -// generatedColumn: The column number in the generated code, -// source: The path to the original source file that generated this -// chunk of code, -// originalLine: The line number in the original source that -// corresponds to this chunk of generated code, -// originalColumn: The column number in the original source that -// corresponds to this chunk of generated code, -// name: The name of the original symbol which generated this chunk of -// code. -// } -// -// All properties except for `generatedLine` and `generatedColumn` can be -// `null`. -// -// `_generatedMappings` is ordered by the generated positions. -// -// `_originalMappings` is ordered by the original positions. - -SourceMapConsumer.prototype.__generatedMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } -}); - -SourceMapConsumer.prototype.__originalMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } -}); - -SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - -SourceMapConsumer.GENERATED_ORDER = 1; -SourceMapConsumer.ORIGINAL_ORDER = 2; - -SourceMapConsumer.GREATEST_LOWER_BOUND = 1; -SourceMapConsumer.LEAST_UPPER_BOUND = 2; - -/** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ -SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - -/** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number is 1-based. - * - column: Optional. the column number in the original source. - * The column number is 0-based. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - -exports.SourceMapConsumer = SourceMapConsumer; - -/** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The first parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ -function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this._absoluteSources = this._sources.toArray().map(function (s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; -} - -BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - -/** - * Utility function to find the index of a source. Returns -1 if not - * found. - */ -BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - - // Maybe aSource is an absolute URL as returned by |sources|. In - // this case we can't simply undo the transform. - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - - return -1; -}; - -/** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @param String aSourceMapURL - * The URL at which the source map can be found (optional) - * @returns BasicSourceMapConsumer - */ -BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function (s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - -/** - * The version of the source mapping spec that we are consuming. - */ -BasicSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._absoluteSources.slice(); - } -}); - -/** - * Provide the JIT with a nice shape / hidden class. - */ -function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; -} - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - -/** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ -BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - -/** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ -BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ -BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } - - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - -exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - -/** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The first parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ -function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) - } - }); -} - -IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - -/** - * The version of the source mapping spec that we are consuming. - */ -IndexedSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } -}); - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ -IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - -exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; diff --git a/node_modules/handlebars/node_modules/source-map/lib/source-map-generator.js b/node_modules/handlebars/node_modules/source-map/lib/source-map-generator.js deleted file mode 100644 index 508bcfbbc..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/source-map-generator.js +++ /dev/null @@ -1,425 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var base64VLQ = require('./base64-vlq'); -var util = require('./util'); -var ArraySet = require('./array-set').ArraySet; -var MappingList = require('./mapping-list').MappingList; - -/** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ -function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; -} - -SourceMapGenerator.prototype._version = 3; - -/** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ -SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - -/** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ -SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - -/** - * Set the source content for a source file. - */ -SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - -/** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ -SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - -/** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ -SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - -/** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ -SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - -SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - -/** - * Externalize the source map. - */ -SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - -/** - * Render the source map being generated to a string. - */ -SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - -exports.SourceMapGenerator = SourceMapGenerator; diff --git a/node_modules/handlebars/node_modules/source-map/lib/source-node.js b/node_modules/handlebars/node_modules/source-map/lib/source-node.js deleted file mode 100644 index 8bcdbe385..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/source-node.js +++ /dev/null @@ -1,413 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; -var util = require('./util'); - -// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other -// operating systems these days (capturing the result). -var REGEX_NEWLINE = /(\r?\n)/; - -// Newline character code for charCodeAt() comparisons -var NEWLINE_CODE = 10; - -// Private symbol for identifying `SourceNode`s when multiple versions of -// the source-map library are loaded. This MUST NOT CHANGE across -// versions! -var isSourceNode = "$$$isSourceNode$$$"; - -/** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ -function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); -} - -/** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ -SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex] || ''; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ''; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - -/** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } -}; - -/** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ -SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; -}; - -/** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ -SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; -}; - -/** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ -SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - -/** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - -/** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ -SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; -}; - -/** - * Returns the string representation of this source node along with a source - * map. - */ -SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; -}; - -exports.SourceNode = SourceNode; diff --git a/node_modules/handlebars/node_modules/source-map/lib/util.js b/node_modules/handlebars/node_modules/source-map/lib/util.js deleted file mode 100644 index 3ca92e56f..000000000 --- a/node_modules/handlebars/node_modules/source-map/lib/util.js +++ /dev/null @@ -1,488 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ -function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } -} -exports.getArg = getArg; - -var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; -var dataUrlRegexp = /^data:.+\,.+$/; - -function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; -} -exports.urlParse = urlParse; - -function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; -} -exports.urlGenerate = urlGenerate; - -/** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ -function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; -} -exports.normalize = normalize; - -/** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ -function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; -} -exports.join = join; - -exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || urlRegexp.test(aPath); -}; - -/** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ -function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); -} -exports.relative = relative; - -var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); -}()); - -function identity (s) { - return s; -} - -/** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ -function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; -} -exports.toSetString = supportsNullProto ? identity : toSetString; - -function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; -} -exports.fromSetString = supportsNullProto ? identity : fromSetString; - -function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; -} - -/** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ -function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByOriginalPositions = compareByOriginalPositions; - -/** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ -function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - -function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 === null) { - return 1; // aStr2 !== null - } - - if (aStr2 === null) { - return -1; // aStr1 !== null - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; -} - -/** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ -function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - -/** - * Strip any JSON XSSI avoidance prefix from the string (as documented - * in the source maps specification), and then parse the string as - * JSON. - */ -function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); -} -exports.parseSourceMapInput = parseSourceMapInput; - -/** - * Compute the URL of a source given the the source root, the source's - * URL, and the source map's URL. - */ -function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ''; - - if (sourceRoot) { - // This follows what Chrome does. - if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { - sourceRoot += '/'; - } - // The spec says: - // Line 4: An optional source root, useful for relocating source - // files on a server or removing repeated values in the - // “sources” entry. This value is prepended to the individual - // entries in the “source” field. - sourceURL = sourceRoot + sourceURL; - } - - // Historically, SourceMapConsumer did not take the sourceMapURL as - // a parameter. This mode is still somewhat supported, which is why - // this code block is conditional. However, it's preferable to pass - // the source map URL to SourceMapConsumer, so that this function - // can implement the source URL resolution algorithm as outlined in - // the spec. This block is basically the equivalent of: - // new URL(sourceURL, sourceMapURL).toString() - // ... except it avoids using URL, which wasn't available in the - // older releases of node still supported by this library. - // - // The spec says: - // If the sources are not absolute URLs after prepending of the - // “sourceRoot”, the sources are resolved relative to the - // SourceMap (like resolving script src in a html document). - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - // Strip the last path component, but keep the "/". - var index = parsed.path.lastIndexOf('/'); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - - return normalize(sourceURL); -} -exports.computeSourceURL = computeSourceURL; diff --git a/node_modules/handlebars/node_modules/source-map/package.json b/node_modules/handlebars/node_modules/source-map/package.json deleted file mode 100644 index 8d1be995e..000000000 --- a/node_modules/handlebars/node_modules/source-map/package.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "_from": "source-map@^0.6.1", - "_id": "source-map@0.6.1", - "_inBundle": false, - "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "_location": "/handlebars/source-map", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "source-map@^0.6.1", - "name": "source-map", - "escapedName": "source-map", - "rawSpec": "^0.6.1", - "saveSpec": null, - "fetchSpec": "^0.6.1" - }, - "_requiredBy": [ - "/handlebars" - ], - "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "_shasum": "74722af32e9614e9c287a8d0bbde48b5e2f1a263", - "_spec": "source-map@^0.6.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars", - "author": { - "name": "Nick Fitzgerald", - "email": "nfitzgerald@mozilla.com" - }, - "bugs": { - "url": "https://github.com/mozilla/source-map/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Tobias Koppers", - "email": "tobias.koppers@googlemail.com" - }, - { - "name": "Duncan Beevers", - "email": "duncan@dweebd.com" - }, - { - "name": "Stephen Crane", - "email": "scrane@mozilla.com" - }, - { - "name": "Ryan Seddon", - "email": "seddon.ryan@gmail.com" - }, - { - "name": "Miles Elam", - "email": "miles.elam@deem.com" - }, - { - "name": "Mihai Bazon", - "email": "mihai.bazon@gmail.com" - }, - { - "name": "Michael Ficarra", - "email": "github.public.email@michael.ficarra.me" - }, - { - "name": "Todd Wolfson", - "email": "todd@twolfson.com" - }, - { - "name": "Alexander Solovyov", - "email": "alexander@solovyov.net" - }, - { - "name": "Felix Gnass", - "email": "fgnass@gmail.com" - }, - { - "name": "Conrad Irwin", - "email": "conrad.irwin@gmail.com" - }, - { - "name": "usrbincc", - "email": "usrbincc@yahoo.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Chase Douglas", - "email": "chase@newrelic.com" - }, - { - "name": "Evan Wallace", - "email": "evan.exe@gmail.com" - }, - { - "name": "Heather Arthur", - "email": "fayearthur@gmail.com" - }, - { - "name": "Hugh Kennedy", - "email": "hughskennedy@gmail.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Simon Lydell", - "email": "simon.lydell@gmail.com" - }, - { - "name": "Jmeas Smith", - "email": "jellyes2@gmail.com" - }, - { - "name": "Michael Z Goddard", - "email": "mzgoddard@gmail.com" - }, - { - "name": "azu", - "email": "azu@users.noreply.github.com" - }, - { - "name": "John Gozde", - "email": "john@gozde.ca" - }, - { - "name": "Adam Kirkton", - "email": "akirkton@truefitinnovation.com" - }, - { - "name": "Chris Montgomery", - "email": "christopher.montgomery@dowjones.com" - }, - { - "name": "J. Ryan Stinnett", - "email": "jryans@gmail.com" - }, - { - "name": "Jack Herrington", - "email": "jherrington@walmartlabs.com" - }, - { - "name": "Chris Truter", - "email": "jeffpalentine@gmail.com" - }, - { - "name": "Daniel Espeset", - "email": "daniel@danielespeset.com" - }, - { - "name": "Jamie Wong", - "email": "jamie.lf.wong@gmail.com" - }, - { - "name": "Eddy Bruël", - "email": "ejpbruel@mozilla.com" - }, - { - "name": "Hawken Rives", - "email": "hawkrives@gmail.com" - }, - { - "name": "Gilad Peleg", - "email": "giladp007@gmail.com" - }, - { - "name": "djchie", - "email": "djchie.dev@gmail.com" - }, - { - "name": "Gary Ye", - "email": "garysye@gmail.com" - }, - { - "name": "Nicolas Lalevée", - "email": "nicolas.lalevee@hibnet.org" - } - ], - "deprecated": false, - "description": "Generates and consumes source maps", - "devDependencies": { - "doctoc": "^0.15.0", - "webpack": "^1.12.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "source-map.js", - "source-map.d.ts", - "lib/", - "dist/source-map.debug.js", - "dist/source-map.js", - "dist/source-map.min.js", - "dist/source-map.min.js.map" - ], - "homepage": "https://github.com/mozilla/source-map", - "license": "BSD-3-Clause", - "main": "./source-map.js", - "name": "source-map", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/mozilla/source-map.git" - }, - "scripts": { - "build": "webpack --color", - "test": "npm run build && node test/run-tests.js", - "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" - }, - "typings": "source-map", - "version": "0.6.1" -} diff --git a/node_modules/handlebars/node_modules/source-map/source-map.d.ts b/node_modules/handlebars/node_modules/source-map/source-map.d.ts deleted file mode 100644 index 8f972b0cf..000000000 --- a/node_modules/handlebars/node_modules/source-map/source-map.d.ts +++ /dev/null @@ -1,98 +0,0 @@ -export interface StartOfSourceMap { - file?: string; - sourceRoot?: string; -} - -export interface RawSourceMap extends StartOfSourceMap { - version: string; - sources: string[]; - names: string[]; - sourcesContent?: string[]; - mappings: string; -} - -export interface Position { - line: number; - column: number; -} - -export interface LineRange extends Position { - lastColumn: number; -} - -export interface FindPosition extends Position { - // SourceMapConsumer.GREATEST_LOWER_BOUND or SourceMapConsumer.LEAST_UPPER_BOUND - bias?: number; -} - -export interface SourceFindPosition extends FindPosition { - source: string; -} - -export interface MappedPosition extends Position { - source: string; - name?: string; -} - -export interface MappingItem { - source: string; - generatedLine: number; - generatedColumn: number; - originalLine: number; - originalColumn: number; - name: string; -} - -export class SourceMapConsumer { - static GENERATED_ORDER: number; - static ORIGINAL_ORDER: number; - - static GREATEST_LOWER_BOUND: number; - static LEAST_UPPER_BOUND: number; - - constructor(rawSourceMap: RawSourceMap); - computeColumnSpans(): void; - originalPositionFor(generatedPosition: FindPosition): MappedPosition; - generatedPositionFor(originalPosition: SourceFindPosition): LineRange; - allGeneratedPositionsFor(originalPosition: MappedPosition): Position[]; - hasContentsOfAllSources(): boolean; - sourceContentFor(source: string, returnNullOnMissing?: boolean): string; - eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void; -} - -export interface Mapping { - generated: Position; - original: Position; - source: string; - name?: string; -} - -export class SourceMapGenerator { - constructor(startOfSourceMap?: StartOfSourceMap); - static fromSourceMap(sourceMapConsumer: SourceMapConsumer): SourceMapGenerator; - addMapping(mapping: Mapping): void; - setSourceContent(sourceFile: string, sourceContent: string): void; - applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void; - toString(): string; -} - -export interface CodeWithSourceMap { - code: string; - map: SourceMapGenerator; -} - -export class SourceNode { - constructor(); - constructor(line: number, column: number, source: string); - constructor(line: number, column: number, source: string, chunk?: string, name?: string); - static fromStringWithSourceMap(code: string, sourceMapConsumer: SourceMapConsumer, relativePath?: string): SourceNode; - add(chunk: string): void; - prepend(chunk: string): void; - setSourceContent(sourceFile: string, sourceContent: string): void; - walk(fn: (chunk: string, mapping: MappedPosition) => void): void; - walkSourceContents(fn: (file: string, content: string) => void): void; - join(sep: string): SourceNode; - replaceRight(pattern: string, replacement: string): SourceNode; - toString(): string; - toStringWithSourceMap(startOfSourceMap?: StartOfSourceMap): CodeWithSourceMap; -} diff --git a/node_modules/handlebars/node_modules/source-map/source-map.js b/node_modules/handlebars/node_modules/source-map/source-map.js deleted file mode 100644 index bc88fe820..000000000 --- a/node_modules/handlebars/node_modules/source-map/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./lib/source-node').SourceNode; diff --git a/node_modules/handlebars/package.json b/node_modules/handlebars/package.json deleted file mode 100644 index 15fcfb2d5..000000000 --- a/node_modules/handlebars/package.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "_args": [ - [ - "handlebars@4.7.7", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_from": "handlebars@4.7.7", - "_id": "handlebars@4.7.7", - "_inBundle": false, - "_integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "_location": "/handlebars", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "handlebars@4.7.7", - "name": "handlebars", - "escapedName": "handlebars", - "rawSpec": "4.7.7", - "saveSpec": null, - "fetchSpec": "4.7.7" - }, - "_requiredBy": [ - "/", - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "_spec": "4.7.7", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Yehuda Katz" - }, - "barename": "handlebars", - "bin": { - "handlebars": "bin/handlebars" - }, - "browser": { - ".": "./dist/cjs/handlebars.js", - "./runtime": "./dist/cjs/handlebars.runtime.js" - }, - "bugs": { - "url": "https://github.com/wycats/handlebars.js/issues" - }, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - }, - "description": "Handlebars provides the power necessary to let you build semantic templates effectively with no frustration", - "devDependencies": { - "@knappi/grunt-saucelabs": "^9.0.2", - "aws-sdk": "^2.1.49", - "babel-loader": "^5.0.0", - "babel-runtime": "^5.1.10", - "benchmark": "~1.0", - "chai": "^4.2.0", - "chai-diff": "^1.0.1", - "concurrently": "^5.0.0", - "dirty-chai": "^2.0.1", - "dtslint": "^0.5.5", - "dustjs-linkedin": "^2.0.2", - "eco": "~1.1.0-rc-3", - "eslint": "^6.7.2", - "eslint-config-prettier": "^6.7.0", - "eslint-plugin-compat": "^3.3.0", - "eslint-plugin-es5": "^1.4.1", - "fs-extra": "^8.1.0", - "grunt": "^1.0.4", - "grunt-babel": "^5.0.0", - "grunt-bg-shell": "^2.3.3", - "grunt-cli": "^1", - "grunt-contrib-clean": "^1", - "grunt-contrib-concat": "^1", - "grunt-contrib-connect": "^1", - "grunt-contrib-copy": "^1", - "grunt-contrib-requirejs": "^1", - "grunt-contrib-uglify": "^1", - "grunt-contrib-watch": "^1.1.0", - "grunt-webpack": "^1.0.8", - "husky": "^3.1.0", - "jison": "~0.3.0", - "lint-staged": "^9.5.0", - "mocha": "^5", - "mock-stdin": "^0.3.0", - "mustache": "^2.1.3", - "nyc": "^14.1.1", - "prettier": "^1.19.1", - "semver": "^5.0.1", - "sinon": "^7.5.0", - "typescript": "^3.4.3", - "underscore": "^1.5.1", - "webpack": "^1.12.6", - "webpack-dev-server": "^1.12.1" - }, - "engines": { - "node": ">=0.4.7" - }, - "files": [ - "bin", - "dist/*.js", - "dist/amd/**/*.js", - "dist/cjs/**/*.js", - "lib", - "print-script", - "release-notes.md", - "runtime.js", - "types/*.d.ts", - "runtime.d.ts" - ], - "homepage": "http://www.handlebarsjs.com/", - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, - "jspm": { - "main": "handlebars", - "directories": { - "lib": "dist/amd" - }, - "buildConfig": { - "minify": true - } - }, - "keywords": [ - "handlebars", - "mustache", - "template", - "html" - ], - "license": "MIT", - "lint-staged": { - "*.{js,css,json,md}": [ - "prettier --write", - "git add" - ], - "*.js": [ - "eslint --fix", - "git add" - ] - }, - "main": "lib/index.js", - "name": "handlebars", - "optionalDependencies": { - "uglify-js": "^3.1.4" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/wycats/handlebars.js.git" - }, - "scripts": { - "--- combined tasks ---": "", - "check-before-pull-request": "concurrently --kill-others-on-fail npm:lint npm:dtslint npm:check-format npm:test", - "check-format": "prettier --check '**/*.js'", - "dtslint": "dtslint types", - "extensive-tests-and-publish-to-aws": "npx mocha tasks/task-tests/ && grunt --stack extensive-tests-and-publish-to-aws", - "format": "prettier --write '**/*.js' && eslint --fix .", - "integration-test": "grunt integration-tests", - "lint": "eslint --max-warnings 0 .", - "test": "grunt" - }, - "types": "types/index.d.ts", - "version": "4.7.7" -} diff --git a/node_modules/handlebars/print-script b/node_modules/handlebars/print-script deleted file mode 100644 index 046b99c17..000000000 --- a/node_modules/handlebars/print-script +++ /dev/null @@ -1,95 +0,0 @@ -#! /usr/bin/env node -/* eslint-disable no-console, no-var */ -// Util script for debugging source code generation issues - -var script = process.argv[2].replace(/\\n/g, '\n'), - verbose = process.argv[3] === '-v'; - -var Handlebars = require('./lib'), - SourceMap = require('source-map'), - SourceMapConsumer = SourceMap.SourceMapConsumer; - -var template = Handlebars.precompile(script, { - srcName: 'input.hbs', - destName: 'output.js', - - assumeObjects: true, - compat: false, - strict: true, - trackIds: true, - knownHelpersOnly: false - }); - -if (!verbose) { - console.log(template); -} else { - var consumer = new SourceMapConsumer(template.map), - lines = template.code.split('\n'), - srcLines = script.split('\n'); - - console.log(); - console.log('Source:'); - srcLines.forEach(function(source, index) { - console.log(index + 1, source); - }); - console.log(); - console.log('Generated:'); - console.log(template.code); - lines.forEach(function(source, index) { - console.log(index + 1, source); - }); - console.log(); - console.log('Map:'); - console.log(template.map); - console.log(); - - function collectSource(lines, lineName, colName, order) { - var ret = {}, - ordered = [], - last; - - function collect(current) { - if (last) { - var mapLines = lines.slice(last[lineName] - 1, current && current[lineName]); - if (mapLines.length) { - if (current) { - mapLines[mapLines.length - 1] = mapLines[mapLines.length - 1].slice(0, current[colName]); - } - mapLines[0] = mapLines[0].slice(last[colName]); - } - ret[last[lineName] + ':' + last[colName]] = mapLines.join('\n'); - ordered.push({ - startLine: last[lineName], - startCol: last[colName], - endLine: current && current[lineName] - }); - } - last = current; - } - - consumer.eachMapping(collect, undefined, order); - collect(); - - return ret; - } - - srcLines = collectSource(srcLines, 'originalLine', 'originalColumn', SourceMapConsumer.ORIGINAL_ORDER); - lines = collectSource(lines, 'generatedLine', 'generatedColumn'); - - consumer.eachMapping(function(mapping) { - var originalSrc = srcLines[mapping.originalLine + ':' + mapping.originalColumn], - generatedSrc = lines[mapping.generatedLine + ':' + mapping.generatedColumn]; - - if (!mapping.originalLine) { - console.log('generated', mapping.generatedLine + ':' + mapping.generatedColumn, generatedSrc); - } else { - console.log('map', - mapping.source, - mapping.originalLine + ':' + mapping.originalColumn, - originalSrc, - '->', - mapping.generatedLine + ':' + mapping.generatedColumn, - generatedSrc); - } - }); -} diff --git a/node_modules/handlebars/release-notes.md b/node_modules/handlebars/release-notes.md deleted file mode 100644 index cabef32b1..000000000 --- a/node_modules/handlebars/release-notes.md +++ /dev/null @@ -1,1091 +0,0 @@ -# Release Notes - -## Development - -[Commits](https://github.com/handlebars-lang/handlebars.js/compare/v4.7.7...master) - -## v4.7.7 - February 15th, 2021 - -- fix weird error in integration tests - eb860c0 -- fix: check prototype property access in strict-mode (#1736) - b6d3de7 -- fix: escape property names in compat mode (#1736) - f058970 -- refactor: In spec tests, use expectTemplate over equals and shouldThrow (#1683) - 77825f8 -- chore: start testing on Node.js 12 and 13 - 3789a30 - -(POSSIBLY) BREAKING CHANGES: - -- the changes from version [4.6.0](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md#v460---january-8th-2020) now also apply - in when using the compile-option "strict: true". Access to prototype properties is forbidden completely by default, specific properties or methods - can be allowed via runtime-options. See #1633 for details. If you are using Handlebars as documented, you should not be accessing prototype properties - from your template anyway, so the changes should not be a problem for you. Only the use of undocumented features can break your build. - -That is why we only bump the patch version despite mentioning breaking changes. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.7.6...v4.7.7) - -## v4.7.6 - April 3rd, 2020 - -Chore/Housekeeping: - -- [#1672](https://github.com/wycats/handlebars.js/issues/1672) - Switch cmd parser to latest minimist ([@dougwilson](https://api.github.com/users/dougwilson) - -Compatibility notes: - -- Restored Node.js compatibility - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.7.5...v4.7.6) - -## v4.7.5 - April 2nd, 2020 - -Chore/Housekeeping: - -- ~Node.js version support has been changed to v6+~ Reverted in 4.7.6 - -Compatibility notes: - -- ~Node.js < v6 is no longer supported~ Reverted in 4.7.6 - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.7.4...v4.7.5) - -## v4.7.4 - April 1st, 2020 - -Chore/Housekeeping: - -- [#1666](https://github.com/wycats/handlebars.js/issues/1666) - Replaced minimist with yargs for handlebars CLI ([@aorinevo](https://api.github.com/users/aorinevo), [@AviVahl](https://api.github.com/users/AviVahl) & [@fabb](https://api.github.com/users/fabb)) - -Compatibility notes: - -- No incompatibilities are to be expected - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.7.3...v4.7.4) - -## v4.7.3 - February 5th, 2020 - -Chore/Housekeeping: - -- [#1644](https://github.com/wycats/handlebars.js/issues/1644) - Download links to aws broken on handlebarsjs.com - access denied ([@Tea56](https://api.github.com/users/Tea56)) -- Fix spelling and punctuation in changelog - d78cc73 - -Bugfixes: - -- Add Type Definition for Handlebars.VERSION, Fixes #1647 - 4de51fe -- Include Type Definition for runtime.js in Package - a32d05f - -Compatibility notes: - -- No incompatibilities are to be expected - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.7.2...v4.7.3) - -## v4.7.2 - January 13th, 2020 - -Bugfixes: - -- fix: don't wrap helpers that are not functions - 9d5aa36, #1639 - -Chore/Build: - -- chore: execute saucelabs-task only if access-key exists - a4fd391 - -Compatibility notes: - -- No breaking changes are to be expected - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.7.1...v4.7.2) - -## v4.7.1 - January 12th, 2020 - -Bugfixes: - -- fix: fix log output in case of illegal property access - f152dfc -- fix: log error for illegal property access only once per property - 3c1e252 - -Compatibility notes: - -- no incompatibilities are to be expected. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.7.0...v4.7.1) - -## v4.7.0 - January 10th, 2020 - -Features: - -- feat: default options for controlling proto access - 7af1c12, #1635 - - This makes it possible to disable the prototype access restrictions added in 4.6.0 - - an error is logged in the console, if access to prototype properties is attempted and denied - and no explicit configuration has taken place. - -Compatibility notes: - -- no compatibilities are expected - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.6.0...v4.7.0) - -## v4.6.0 - January 8th, 2020 - -Features: - -- feat: access control to prototype properties via whitelist (#1633)- d03b6ec - -Bugfixes: - -- fix(runtime.js): partials compile not caching (#1600) - 23d58e7 - -Chores, docs: - -- various refactorings and improvements to tests - d7f0dcf, 187d611, d337f40 -- modernize the build-setup - - use prettier to format and eslint to verify - c40d9f3, 8901c28, e97685e, 1f61f21 - - use nyc instead of istanbul to collect coverage - 164b7ff, 1ebce2b - - update build code to use modern javascript and make it cleaner - 14b621c, 1ec1737, 3a5b65e, dde108e, 04b1984, 587e7a3 - - restructur build commands - e913dc5, -- eslint rule changes - ac4655e, dc54952 -- Update (C) year in the LICENSE file - d1fb07b -- chore: try to fix saucelabs credentials (#1627) - -- Update readme.md with updated links (#1620) - edcc84f - -BREAKING CHANGES: - -- access to prototype properties is forbidden completely by default, - specific properties or methods can be allowed via runtime-options. - See #1633 for details. - If you are using Handlebars as documented, you should not be accessing prototype - properties from your template anyway, so the changes should not be a problem - for you. Only the use of undocumented features can break your build. - - That is why we only bump the minor version despite mentioning breaking changes. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.5.3...v4.6.0) - -## v4.5.3 - November 18th, 2019 - -Bugfixes: - -- fix: add "no-prototype-builtins" eslint-rule and fix all occurences - f7f05d7 -- fix: add more properties required to be enumerable - 1988878 - -Chores / Build: - -- fix: use !== 0 instead of != 0 - c02b05f -- add chai and dirty-chai and sinon, for cleaner test-assertions and spies, - deprecate old assertion-methods - 93e284e, 886ba86, 0817dad, 93516a0 - -Security: - -- The properties `__proto__`, `__defineGetter__`, `__defineSetter__` and `__lookupGetter__` - have been added to the list of "properties that must be enumerable". - If a property by that name is found and not enumerable on its parent, - it will silently evaluate to `undefined`. This is done in both the compiled template and the "lookup"-helper. - This will prevent new Remote-Code-Execution exploits that have been - published recently. - -Compatibility notes: - -- Due to the security-fixes. The semantics of the templates using - `__proto__`, `__defineGetter__`, `__defineSetter__` and `__lookupGetter__` in the respect that those expression now return - `undefined` rather than their actual value from the proto. -- The semantics have not changed in cases where the properties are enumerable, as in: - -```js -{ - __proto__: 'some string'; -} -``` - -- The change may be breaking in that respect, but we still only - increase the patch-version, because the incompatible use-cases - are not intended, undocumented and far less important than fixing - Remote-Code-Execution exploits on existing systems. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.5.2...v4.5.3) - -## v4.5.2 - November 13th, 2019 - -# Bugfixes - -- fix: use String(field) in lookup when checking for "constructor" - d541378 -- test: add fluent API for testing Handlebars - c2ac79c - -Compatibility notes: - -- no incompatibility are to be expected - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.5.1...v4.5.2) - -## v4.5.1 - October 29th, 2019 - -Bugfixs - -- fix: move "eslint-plugin-compat" to devDependencies - 5e9d17f (#1589) - -Compatibility notes: - -- No compatibility issues are to be expected - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.5.0...v4.5.1) - -## v4.5.0 - October 28th, 2019 - -Features / Improvements - -- Add method Handlebars.parseWithoutProcessing (#1584) - 62ed3c2 -- add guard to if & unless helpers (#1549) -- show source location for the strict lookup exceptions - feb60f8 - -Bugfixes: - -- Use objects for hash value tracking - 7fcf9d2 - -Chore: - -- Resolve deprecation warning message from eslint while running eslint (#1586) - 7052e88 -- chore: add eslint-plugin-compat and eslint-plugin-es5 - 088e618 - -Compatibility notes: - -- No compatibility issues are to be expected - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.4.5...v4.5.0) - -## v4.4.5 - October 20th, 2019 - -Bugfixes: - -- Contents of raw-blocks must be matched with non-eager regex-matching - 8d5530e, #1579 - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.4.4...v4.4.5) - -## v4.4.4 - October 20th, 2019 - -Bugfixes: - -- fix: prevent zero length tokens in raw-blocks (#1577, #1578) - f1752fe - -Chore: - -- chore: link to s3 bucket with https, add "npm ci" to build instructions - 0b593bf - -Compatibility notes: - -- no compatibility issues are expected - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.4.3...v4.4.4) - -## v4.4.3 - October 8th, 2019 - -Bugfixes - -Typings: - -- add missing type fields to AST typings and add tests for them - 0440af2 - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.4.2...v4.4.3) - -## v4.4.2 - October 2nd, 2019 - -- chore: fix grunt-saucelabs dependency - b7eada0 - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.4.1...v4.4.2) - -## v4.4.1 - October 2nd, 2019 - -- [#1562](https://github.com/wycats/handlebars.js/issues/1562) - Error message for syntax error missing location in 4.2.1+ - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.4.0...v4.4.1) - -## v4.4.0 - September 29th, 2019 - -- Added support for iterable objects in {{#each}} helper (#1557) - cf7545e - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.3.4...v4.4.0) - -## v4.3.4 - September 28th, 2019 - -- fix: harden "propertyIsEnumerable"-check - ff4d827 - -Compatibility notes: - -- No incompatibilities are known. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.3.3...v4.3.4) - -## v4.3.3 - September 27th, 2019 - -- fix test case for browsers that do not support **defineGetter** - 8742bde - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.3.2...v4.3.3) - -## v4.3.2 - September 26th, 2019 - -- Use Object.prototype.propertyIsEnumerable to check for constructors - 213c0bb, #1563 - -Compatibility notes: - -- There are no breaking changes - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.3.1...v4.3.2) - -## v4.3.1 - September 25th, 2019 - -Fixes: - -- do not break on precompiled templates from Handlebars >=4.0.0 <4.3.0 - 1266838, #1561 -- Ensure allowCallsToHelperMissing runtime option is optional in typings - 93444c5, 64ecb9e, #1560 - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.3.0...v4.3.1) - -## v4.3.0 - September 24th, 2019 - -Fixes: - -- Security: Disallow calling "helperMissing" and "blockHelperMissing" directly - 2078c72 -- Disallow calling "helperMissing" and "blockHelperMissing" directly - 2078c72 - -Features: - -- Add new runtime option `allowCallsToHelperMissing` to allow calling `blockHelperMissing` and `helperMissing`. - -Breaking changes: - -Compatibility notes: - -- Compiler revision increased - 06b7224 - - - This means that template compiled with versions prior to 4.3.0 will not work with runtimes >= 4.3.0 - The increase was done because the "helperMissing" and "blockHelperMissing" are now moved from the helpers - to the internal "container.hooks" object, so old templates will not be able to call them anymore. We suggest - that you always recompile your templates with the latest compiler in your build pipelines. - -- Disallow calling "helperMissing" and "blockHelperMissing" directly - 2078c72 - - Calling "helperMissing" and "blockHelperMissing" directly from a template (like in `{{blockHelperMissing}}` was - never intended and was part of the exploits that have been revealed early in 2019 - (see https://github.com/wycats/handlebars.js/issues/1495). _It is also part of a new exploit that - is not captured by the earlier fix._ In order to harden Handlebars against such exploits, calling thos helpers - is now not possible anymore. _Overriding_ those helpers is still possible. - - If you really need this behavior, you can set the runtime option `allowCallsToHelperMissing` to `true` and the - calls will again be possible - -Both bullet points imly that Handlebars is not 100% percent compatible to 4.2.0, despite the minor version bump. - -We consider it more important to resolve a major security issue than to maintain 100% compatibility. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.2.1...v4.3.0) - -## v4.2.1 - September 20th, 2019 - -Bugfixes: - -- The "browser" property in the package.json has been updated to use the common-js builds instead of the minified UMD - c55a7be, #1553 - -Compatibility notes: - -- No compatibility issues should arise - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.2.0...v4.2.1) - -## v4.2.0 - September 3rd, 2019 - -Chore/Test: - -- Use custom `grunt-saucelab` with current sauce-connect proxy - f119497 -- Add framework for various integration tests - f9cce4d -- Add integration test for webpack - a57b682 - -Bugfixes: - -- [#1544](https://github.com/wycats/handlebars.js/issues/1544) - Typescript types: `knownHelpers` doesnt allow for custom helpers ([@NickCis](https://api.github.com/users/NickCis)) -- [#1534](https://github.com/wycats/handlebars.js/pull/1534) - Add typings for "Handlebars.VM.resolvePartial ([@AndrewLeedham](https://api.github.com/users/AndrewLeedham)) - -Features: - -- [#1540](https://github.com/wycats/handlebars.js/pull/1540) - added "browser"-property to package.json, resolves #1102 ([@ouijan](https://api.github.com/users/ouijan)) - -Compatibility notes: - -- The new "browser"-property should not break anything, but you can never be sure. The integration test for webpack - shows that it works, but if it doesn't please open an issue. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.1.2-0...v4.2.0) - -## v4.1.2-0 - August 25th, 2019 - -[#1540](https://github.com/wycats/handlebars.js/pull/1540) - added browser to package.json, resolves #1102 ([@ouijan](https://api.github.com/users/ouijan)) - -Compatibility notes: - -- We are not sure if imports via webpack are still working, which is why this release is a pre-release - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.1.2...v4.1.2-0) - -## v4.1.2 - April 13th, 2019 - -Chore/Test: - -- [#1515](https://github.com/wycats/handlebars.js/pull/1515) - Port over linting and test for typings ([@zimmi88](https://api.github.com/users/zimmi88)) -- chore: add missing typescript dependency, add package-lock.json - 594f1e3 -- test: remove safari from saucelabs - 871accc - -Bugfixes: - -- fix: prevent RCE through the "lookup"-helper - cd38583 - -Compatibility notes: - -Access to the constructor of a class thought `{{lookup obj "constructor" }}` is now prohibited. This closes -a leak that only half closed in versions 4.0.13 and 4.1.0, but it is a slight incompatibility. - -This kind of access is not the intended use of Handlebars and leads to the vulnerability described -in #1495. We will **not** increase the major version, because such use is not intended or documented, -and because of the potential impact of the issue (we fear that most people won't use a new major version -and the issue may not be resolved on many systems). - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.1.1...v4.1.2) - -## v4.1.1 - March 16th, 2019 - -Bugfixes: - -- fix: add "runtime.d.ts" to allow "require('handlebars/runtime')" in TypeScript - 5cedd62 - -Refactorings: - -- replace "async" with "neo-async" - 048f2ce -- use "substring"-function instead of "substr" - 445ae12 - -Compatibility notes: - -- This is a bugfix release. There are no breaking change and no new features. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.1.0...v4.1.1) - -## v4.1.0 - February 7th, 2019 - -New Features - -- import TypeScript typings - 27ac1ee - -Security fixes: - -- disallow access to the constructor in templates to prevent RCE - 42841c4, #1495 - -Housekeeping - -- chore: fix components/handlebars package.json and auto-update on release - bacd473 -- chore: Use node 10 to build handlebars - 78dd89c -- chore/doc: Add more release docs - 6b87c21 - -Compatibility notes: - -Access to class constructors (i.e. `({}).constructor`) is now prohibited to prevent -Remote Code Execution. This means that following construct will no work anymore: - -``` -class SomeClass { -} - -SomeClass.staticProperty = 'static' - -var template = Handlebars.compile('{{constructor.staticProperty}}'); -document.getElementById('output').innerHTML = template(new SomeClass()); -// expected: 'static', but now this is empty. -``` - -This kind of access is not the intended use of Handlebars and leads to the vulnerability described in #1495. We will **not** increase the major version, because such use is not intended or documented, and because of the potential impact of the issue (we fear that most people won't use a new major version and the issue may not be resolved on many systems). - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.12...v4.1.0) - -## v4.0.12 - September 4th, 2018 - -New features: - -- none - -Various dependency updates - -- [#1464](https://github.com/wycats/handlebars.js/pull/1464) - Bump versions of grunt-plugins to 1.x -- [#1398](https://github.com/wycats/handlebars.js/pull/1398) - Chore: updated various dev dependencies -- upgrade uglify-js - d3d3942 -- Update grunt-eslint to 20.1.0 - 7729aa9 -- Update dependencies "async" to 2.5.0 and "source-map" to 0.6.1 (73d5637) - -Bugfixes: - -- [components/handlebars.js#24](https://github.com/components/handlebars.js#24) Add package.json to components shim -- Updated `source-map`-package should work better with `rollup`[#1463](https://github.com/wycats/handlebars.js/issues/1463) - -Removed obsolete code: - -- unnecessary check - 0ddff8b -- Use `files` field - 69c6ca5 -- Update jsfiddle to 4.0.11 - 8947dd0 - -Compatibility notes: - -- No compatibility issues are to be expected - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.11...v4.0.12) - -## v4.0.11 - October 17th, 2017 - -- [#1391](https://github.com/wycats/handlebars.js/issues/1391) - `uglify-js` is unconditionally imported, but only listed as optional dependency ([@Turbo87](https://github.com/Turbo87)) -- [#1233](https://github.com/wycats/handlebars.js/issues/1233) - Unable to build under windows - error at test:bin task ([@blikblum](https://github.com/blikblum)) -- Update (C) year in the LICENSE file - 21386b6 - -Compatibility notes: - -- This is a bugfix release. There are no breaking change and no new features. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.10...v4.0.11) - -## v4.0.10 - May 21st, 2017 - -- Fix regression in 4.0.9: Replace "Object.assign" (not support in IE) by "util/extend" - 0e953d1 - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.9...v4.0.10) - -## v4.0.9 - May 21st, 2017 - -- [#1327](https://github.com/wycats/handlebars.js/issues/1327) Handlebars.compile() does not modify "options" anymore -- pending [#1331](https://github.com/wycats/handlebars.js/issues/1331) Attempts to build Handlebars in a Windows environment - - Fix build in windows - cc554a5 - - Ensure LF line-edings in handlebars-template fixtures (\*.hbs) - ed879a6 - - Run integration test with `node handlebars -a ...` on Windows - 2e21e2b - - Ensure LF line-edings in lexer-files (\*.l) - bdfdbea - - Force LF line-endings for spec/artifacts - b50ef03 - - Use istanbul/lib/cli.js instead of node_modules/.bin/istanbul - 6e6269f -- TravisCI: Publish valid semver tags independently of the branch - 7378f85 - -Compatibility notes: - -- No compatibility issues are expected. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.8...v4.0.9) - -## v4.0.8 - May 2nd, 2017 - -- [#1341](https://github.com/wycats/handlebars.js/issues/1341) [#1342](https://github.com/wycats/handlebars.js/issues/1342) Allow partial-blocks to be executed without "options" ([@nknapp](https://github.com/nknapp)) - a00c598 - -Compatibility notes: - -- No breaking changes - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.7...v4.0.8) - -## v4.0.7 - April 29th, 2017 - -- [#1319](https://github.com/wycats/handlebars.js/issues/1319): Fix context-stack when calling block-helpers on null values ([@nknapp](https://github.com/nknapp)) - c8f4b57 -- [#1315](https://github.com/wycats/handlebars.js/pull/1315) Parser: Change suffix to use ES6 default module export ([@Turbo87](https://github.com/Turbo87))- b617375 -- [#1290](https://github.com/wycats/handlebars.js/pull/1290) [#1252](https://github.com/wycats/handlebars.js/issue/1290) Add more tests for partial-blocks and inline partials ([@nknapp](https://github.com/nknapp)) - 63a8e0c -- [#1252](https://github.com/wycats/handlebars.js/issue/1290) Using @partial-block twice in a template not possible ([@nknapp](https://github.com/nknapp)) - 5a164d0 -- [#1310](https://github.com/wycats/handlebars.js/pull/1310) Avoid duplicate "sourceMappingURL=" lines. ([@joonas-lahtinen](https://github.com/joonas-lahtinen)) - 01b0f65 -- [#1275](https://github.com/wycats/handlebars.js/pull/1275) require('sys') is deprecated, using 'util' instead ([@travnels](https://github.com/travnels)) - 406f2ee -- [#1285](https://github.com/wycats/handlebars.js/pull/1285) [#1284](https://github.com/wycats/handlebars.js/issues/1284) Make "column"-property of Errors enumerable ([@nknapp](https://github.com/nknapp)) - a023cb4 -- [#1285](https://github.com/wycats/handlebars.js/pull/1285) Testcase to verify that compile-errors have a column-property ([@nknapp](https://github.com/nknapp)) - c7dc353 - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.6...v4.0.7) - -## v4.0.6 - November 12th, 2016 - -- [#1243](https://github.com/wycats/handlebars.js/pull/1243) - Walk up data frames for nested @partial-block ([@lawnsea](https://github.com/lawnsea)) -- [#1210](https://github.com/wycats/handlebars.js/pull/1210) - Add a new lightweight package based on handlebars in the README ([@kabirbaidhya](https://github.com/kabirbaidhya)) -- [#1187](https://github.com/wycats/handlebars.js/pull/1187) - Ensure that existing blockParams and depths are respected on dupe programs ([@charleso](https://github.com/charleso)) -- [#1191](https://github.com/wycats/handlebars.js/pull/1191) - Added cory ([@leo](https://github.com/leo)) -- [#1177](https://github.com/wycats/handlebars.js/pull/1177) - Preserve License info in Closure Compiler ([@gennadiylitvinyuk](https://github.com/gennadiylitvinyuk)) -- [#1171](https://github.com/wycats/handlebars.js/pull/1171) - Contributing doc fix: failing thats -> failing tests ([@paulfalgout](https://github.com/paulfalgout)) -- [#1166](https://github.com/wycats/handlebars.js/pull/1166) - Update license date ([@timwangdev](https://github.com/timwangdev)) -- Update jsfiddle to point to latest - 959ee55 (originally dfc7554 by [@kpdecker](https://github.com/kpdecker)) -- [#1163](https://github.com/wycats/handlebars.js/pull/1163) - Fix typos on decorators-api.md. ([@adjohnson916](https://github.com/adjohnson916)) -- Drop extra Error params - 8c19874 (originally 63fdb92 by [@kpdecker](https://github.com/kpdecker)) -- [#1153](https://github.com/wycats/handlebars.js/pull/1153) - Add documentation for running tests to contributing.md ([@ryanmurakami](https://github.com/ryanmurakami)) -- Avoid error in older browsers in test - 400916c (originally a6121ca by [@kpdecker](https://github.com/kpdecker)) -- Update target browser test versions - fee2334 (originally 871c32a by [@kpdecker](https://github.com/kpdecker)) -- Exclude coverage check in exception conditional - 32d6363 (originally 326734b by [@kpdecker](https://github.com/kpdecker)) -- Fix throw when creating exception object in Safari - 20c965c (originally 2ea6119 by [@kpdecker](https://github.com/kpdecker)) -- Update build for modern node versions - 6c9f98c (originally 8289c0b by [@kpdecker](https://github.com/kpdecker)) -- [#1135](https://github.com/wycats/handlebars.js/issues/1135) - Relax depth check for context push - c393c81 (originally 25458fd by [@kpdecker](https://github.com/kpdecker)) - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.5...v4.0.6) - -## v4.0.5 - November 19th, 2015 - -- [#1132](https://github.com/wycats/handlebars.js/pull/1132) - Update uglify-js to avoid vulnerability ([@plynchnlm](https://github.com/plynchnlm)) -- [#1129](https://github.com/wycats/handlebars.js/issues/1129) - Minified lib returns an empty string ([@bricss](https://github.com/bricss)) -- Return current handlebars instance from noConflict - 685cf92 -- Add webpack to dev dependency to support npm 3 - 7a6c228 -- Further relax uglify dependency - 0a3b3c2 -- Include tests for minimized artifacts - c21118d -- Fix lint errors under latest eslint - 9f59de9 -- Add print-script helper script - 98a6717 - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.4...v4.0.5) - -## v4.0.4 - October 29th, 2015 - -- [#1121](https://github.com/wycats/handlebars.js/pull/1121) - Include partial name in 'undefined partial' exception message ([@shinypb](https://github.com/shinypb)) -- [#1125](https://github.com/wycats/handlebars.js/pull/1125) - Add promised-handlebars to "in-the-wild"-list ([@nknapp](https://github.com/nknapp)) - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.3...v4.0.4) - -## v4.0.3 - September 23rd, 2015 - -- [#1099](https://github.com/wycats/handlebars.js/issues/1099) - @partial-block is overridden ([@btmorex](https://github.com/btmorex)) -- [#1093](https://github.com/wycats/handlebars.js/issues/1093) - #each skips iteration on undefined values ([@florianpilz](https://github.com/florianpilz)) -- [#1092](https://github.com/wycats/handlebars.js/issues/1092) - Square braces in key name ([@distantnative](https://github.com/distantnative)) -- [#1091](https://github.com/wycats/handlebars.js/pull/1091) - fix typo in release notes ([@nikolas](https://github.com/nikolas)) -- [#1090](https://github.com/wycats/handlebars.js/pull/1090) - grammar fixes in 4.0.0 release notes ([@nikolas](https://github.com/nikolas)) - -Compatibility notes: - -- `each` iteration with `undefined` values has been restored to the 3.0 behaviors. Helper calls with undefined context values will now execute against an arbitrary empty object to avoid executing against global object in non-strict mode. -- `]` can now be included in `[]` wrapped identifiers by escaping with `\`. Any `[]` identifiers that include `\` will now have to properly escape these values. - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.2...v4.0.3) - -## v4.0.2 - September 4th, 2015 - -- [#1089](https://github.com/wycats/handlebars.js/issues/1089) - "Failover content" not working in multiple levels of inline partials ([@michaellopez](https://github.com/michaellopez)) - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.1...v4.0.2) - -## v4.0.1 - September 2nd, 2015 - -- Fix failure when using decorators in partials - 05b82a2 - -[Commits](https://github.com/wycats/handlebars.js/compare/v4.0.0...v4.0.1) - -## v4.0.0 - September 1st, 2015 - -- [#1082](https://github.com/wycats/handlebars.js/pull/1082) - Decorators and Inline Partials ([@kpdecker](https://github.com/kpdecker)) -- [#1076](https://github.com/wycats/handlebars.js/pull/1076) - Implement partial blocks ([@kpdecker](https://github.com/kpdecker)) -- [#1087](https://github.com/wycats/handlebars.js/pull/1087) - Fix #each when last object entry has empty key ([@denniskuczynski](https://github.com/denniskuczynski)) -- [#1084](https://github.com/wycats/handlebars.js/pull/1084) - Bump uglify version to fix vulnerability ([@John-Steidley](https://github.com/John-Steidley)) -- [#1068](https://github.com/wycats/handlebars.js/pull/1068) - Fix typo ([@0xack13](https://github.com/0xack13)) -- [#1060](https://github.com/wycats/handlebars.js/pull/1060) - #1056 Fixed grammar for nested raw blocks ([@ericbn](https://github.com/ericbn)) -- [#1052](https://github.com/wycats/handlebars.js/pull/1052) - Updated year in License ([@maqnouch](https://github.com/maqnouch)) -- [#1037](https://github.com/wycats/handlebars.js/pull/1037) - Fix minor typos in README ([@tomxtobin](https://github.com/tomxtobin)) -- [#1032](https://github.com/wycats/handlebars.js/issues/1032) - Is it possible to render a partial without the parent scope? ([@aputinski](https://github.com/aputinski)) -- [#1019](https://github.com/wycats/handlebars.js/pull/1019) - Fixes typo in tests ([@aymerick](https://github.com/aymerick)) -- [#1016](https://github.com/wycats/handlebars.js/issues/1016) - Version mis-match ([@mayankdedhia](https://github.com/mayankdedhia)) -- [#1023](https://github.com/wycats/handlebars.js/issues/1023) - is it possible for nested custom helpers to communicate between each other? -- [#893](https://github.com/wycats/handlebars.js/issues/893) - [Proposal] Section blocks. -- [#792](https://github.com/wycats/handlebars.js/issues/792) - feature request: inline partial definitions -- [#583](https://github.com/wycats/handlebars.js/issues/583) - Parent path continues to drill down depth with multiple conditionals -- [#404](https://github.com/wycats/handlebars.js/issues/404) - Add named child helpers that can be referenced by block helpers -- Escape = in HTML content - [83b8e84](https://github.com/wycats/handlebars.js/commit/83b8e84) -- Drop AST constructors in favor of JSON - [95d84ba](https://github.com/wycats/handlebars.js/commit/95d84ba) -- Pass container rather than exec as context - [9a2d1d6](https://github.com/wycats/handlebars.js/commit/9a2d1d6) -- Add ignoreStandalone compiler option - [ea3a5a1](https://github.com/wycats/handlebars.js/commit/ea3a5a1) -- Ignore empty when iterating on sparse arrays - [06d515a](https://github.com/wycats/handlebars.js/commit/06d515a) -- Add support for string and stdin precompilation - [0de8dac](https://github.com/wycats/handlebars.js/commit/0de8dac) -- Simplify object assignment generation logic - [77e6bfc](https://github.com/wycats/handlebars.js/commit/77e6bfc) -- Bulletproof AST.helpers.helperExpression - [93b0760](https://github.com/wycats/handlebars.js/commit/93b0760) -- Always return string responses - [8e868ab](https://github.com/wycats/handlebars.js/commit/8e868ab) -- Pass undefined fields to helpers in strict mode - [5d4b8da](https://github.com/wycats/handlebars.js/commit/5d4b8da) -- Avoid depth creation when context remains the same - [279e038](https://github.com/wycats/handlebars.js/commit/279e038) -- Improve logging API - [9a49d35](https://github.com/wycats/handlebars.js/commit/9a49d35) -- Fix with operator in no @data mode - [231a8d7](https://github.com/wycats/handlebars.js/commit/231a8d7) -- Allow empty key name in each iteration - [1bb640b](https://github.com/wycats/handlebars.js/commit/1bb640b) -- Add with block parameter support - [2a85106](https://github.com/wycats/handlebars.js/commit/2a85106) -- Fix escaping of non-javascript identifiers - [410141c](https://github.com/wycats/handlebars.js/commit/410141c) -- Fix location information for programs - [93faffa](https://github.com/wycats/handlebars.js/commit/93faffa) - -Compatibility notes: - -- Depthed paths are now conditionally pushed on to the stack. If the helper uses the same context, then a new stack is not created. This leads to behavior that better matches expectations for helpers like `if` that do not seem to alter the context. Any instances of `../` in templates will need to be checked for the correct behavior under 4.0.0. In general templates will either reduce the number of `../` instances or leave them as is. See [#1028](https://github.com/wycats/handlebars.js/issues/1028). -- The `=` character is now HTML escaped. This closes a potential exploit case when using unquoted attributes, i.e. `
          `. In general it's recommended that attributes always be quoted when their values are generated from a mustache to avoid any potential exploit surfaces. -- AST constructors have been dropped in favor of plain old javascript objects -- The runtime version has been increased. Precompiled templates will need to use runtime of at least 4.0.0. - -[Commits](https://github.com/wycats/handlebars.js/compare/v3.0.3...v4.0.0) - -## v3.0.3 - April 28th, 2015 - -- [#1004](https://github.com/wycats/handlebars.js/issues/1004) - Latest version breaks with RequireJS (global is undefined) ([@boskee](https://github.com/boskee)) - -[Commits](https://github.com/wycats/handlebars.js/compare/v3.0.2...v3.0.3) - -## v3.0.2 - April 20th, 2015 - -- [#998](https://github.com/wycats/handlebars.js/pull/998) - Add full support for es6 ([@kpdecker](https://github.com/kpdecker)) -- [#994](https://github.com/wycats/handlebars.js/issues/994) - Access Handlebars.Visitor in browser ([@tamlyn](https://github.com/tamlyn)) -- [#990](https://github.com/wycats/handlebars.js/issues/990) - Allow passing null/undefined literals subexpressions ([@blimmer](https://github.com/blimmer)) -- [#989](https://github.com/wycats/handlebars.js/issues/989) - Source-map error with requirejs ([@SteppeEagle](https://github.com/SteppeEagle)) -- [#967](https://github.com/wycats/handlebars.js/issues/967) - can't access "this" property ([@75lb](https://github.com/75lb)) -- Use captureStackTrace for error handler - a009a97 -- Ignore branches tested without coverage monitoring - 37a664b - -[Commits](https://github.com/wycats/handlebars.js/compare/v3.0.1...v3.0.2) - -## v3.0.1 - March 24th, 2015 - -- [#984](https://github.com/wycats/handlebars.js/pull/984) - Adding documentation for passing arguments into partials ([@johneke](https://github.com/johneke)) -- [#973](https://github.com/wycats/handlebars.js/issues/973) - version 3 is slower than version 2 ([@elover](https://github.com/elover)) -- [#966](https://github.com/wycats/handlebars.js/issues/966) - "handlebars --version" does not work with v3.0.0 ([@abloomston](https://github.com/abloomston)) -- [#964](https://github.com/wycats/handlebars.js/pull/964) - default is a reserved word ([@grassick](https://github.com/grassick)) -- [#962](https://github.com/wycats/handlebars.js/pull/962) - Add dashbars' link on README. ([@pismute](https://github.com/pismute)) - -[Commits](https://github.com/wycats/handlebars.js/compare/v3.0.0...v3.0.1) - -## v3.0.0 - February 10th, 2015 - -- [#941](https://github.com/wycats/handlebars.js/pull/941) - Add support for dynamic partial names ([@kpdecker](https://github.com/kpdecker)) -- [#940](https://github.com/wycats/handlebars.js/pull/940) - Add missing reserved words so compiler knows to use array syntax: ([@mattflaschen](https://github.com/mattflaschen)) -- [#938](https://github.com/wycats/handlebars.js/pull/938) - Fix example using #with helper ([@diwo](https://github.com/diwo)) -- [#930](https://github.com/wycats/handlebars.js/pull/930) - Add parent tracking and mutation to AST visitors ([@kpdecker](https://github.com/kpdecker)) -- [#926](https://github.com/wycats/handlebars.js/issues/926) - Depthed lookups fail when program duplicator runs ([@kpdecker](https://github.com/kpdecker)) -- [#918](https://github.com/wycats/handlebars.js/pull/918) - Add instructions for 'spec/mustache' to CONTRIBUTING.md, fix a few typos ([@oneeman](https://github.com/oneeman)) -- [#915](https://github.com/wycats/handlebars.js/pull/915) - Ast update ([@kpdecker](https://github.com/kpdecker)) -- [#910](https://github.com/wycats/handlebars.js/issues/910) - Different behavior of {{@last}} when {{#each}} in {{#each}} ([@zordius](https://github.com/zordius)) -- [#907](https://github.com/wycats/handlebars.js/issues/907) - Implement named helper variable references ([@kpdecker](https://github.com/kpdecker)) -- [#906](https://github.com/wycats/handlebars.js/pull/906) - Add parser support for block params ([@mmun](https://github.com/mmun)) -- [#903](https://github.com/wycats/handlebars.js/issues/903) - Only provide aliases for multiple use calls ([@kpdecker](https://github.com/kpdecker)) -- [#902](https://github.com/wycats/handlebars.js/pull/902) - Generate Source Maps ([@kpdecker](https://github.com/kpdecker)) -- [#901](https://github.com/wycats/handlebars.js/issues/901) - Still escapes with noEscape enabled on isolated Handlebars environment ([@zedknight](https://github.com/zedknight)) -- [#896](https://github.com/wycats/handlebars.js/pull/896) - Simplify BlockNode by removing intermediate MustacheNode ([@mmun](https://github.com/mmun)) -- [#892](https://github.com/wycats/handlebars.js/pull/892) - Implement parser for else chaining of helpers ([@kpdecker](https://github.com/kpdecker)) -- [#889](https://github.com/wycats/handlebars.js/issues/889) - Consider extensible parser API ([@kpdecker](https://github.com/kpdecker)) -- [#887](https://github.com/wycats/handlebars.js/issues/887) - Handlebars.noConflict() option? ([@bradvogel](https://github.com/bradvogel)) -- [#886](https://github.com/wycats/handlebars.js/issues/886) - Add SafeString to context (or use duck-typing) ([@dominicbarnes](https://github.com/dominicbarnes)) -- [#870](https://github.com/wycats/handlebars.js/pull/870) - Registering undefined partial throws exception. ([@max-b](https://github.com/max-b)) -- [#866](https://github.com/wycats/handlebars.js/issues/866) - comments don't respect whitespace control ([@75lb](https://github.com/75lb)) -- [#863](https://github.com/wycats/handlebars.js/pull/863) - + jsDelivr CDN info ([@tomByrer](https://github.com/tomByrer)) -- [#858](https://github.com/wycats/handlebars.js/issues/858) - Disable new default auto-indent at included partials ([@majodev](https://github.com/majodev)) -- [#856](https://github.com/wycats/handlebars.js/pull/856) - jspm compatibility ([@MajorBreakfast](https://github.com/MajorBreakfast)) -- [#805](https://github.com/wycats/handlebars.js/issues/805) - Request: "strict" lookups ([@nzakas](https://github.com/nzakas)) - -- Export the default object for handlebars/runtime - 5594416 -- Lookup partials when undefined - 617dd57 - -Compatibility notes: - -- Runtime breaking changes. Must match 3.x runtime and precompiler. -- The AST has been upgraded to a public API. - - There are a number of changes to this, but the format is now documented in docs/compiler-api.md - - The Visitor API has been expanded to support mutation and provide a base implementation -- The `JavaScriptCompiler` APIs have been formalized and documented. As part of the sourcemap handling these should be updated to return arrays for concatenation. -- `JavaScriptCompiler.namespace` has been removed as it was unused. -- `SafeString` is now duck typed on `toHTML` - -New Features: - -- noConflict -- Source Maps -- Block Params -- Strict Mode -- @last and other each changes -- Chained else blocks -- @data methods can now have helper parameters passed to them -- Dynamic partials - -[Commits](https://github.com/wycats/handlebars.js/compare/v2.0.0...v3.0.0) - -## v2.0.0 - September 1st, 2014 - -- Update jsfiddle to 2.0.0-beta.1 - 0670f65 -- Add contrib note regarding handlebarsjs.com docs - 4d17e3c -- Play nice with gemspec version numbers - 64d5481 - -[Commits](https://github.com/wycats/handlebars.js/compare/v2.0.0-beta.1...v2.0.0) - -## v2.0.0-beta.1 - August 26th, 2014 - -- [#787](https://github.com/wycats/handlebars.js/pull/787) - Remove whitespace surrounding standalone statements ([@kpdecker](https://github.com/kpdecker)) -- [#827](https://github.com/wycats/handlebars.js/issues/827) - Render false literal as “false” ([@scoot557](https://github.com/scoot557)) -- [#767](https://github.com/wycats/handlebars.js/issues/767) - Subexpressions bug with hash and context ([@evensoul](https://github.com/evensoul)) -- Changes to 0/undefined handling - - [#731](https://github.com/wycats/handlebars.js/pull/731) - Strange behavior for {{#foo}} {{bar}} {{/foo}} when foo is 0 ([@kpdecker](https://github.com/kpdecker)) - - [#820](https://github.com/wycats/handlebars.js/issues/820) - strange behavior for {{foo.bar}} when foo is 0 or null or false ([@zordius](https://github.com/zordius)) - - [#837](https://github.com/wycats/handlebars.js/issues/837) - Strange input for custom helper ( foo.bar == false when foo is undefined ) ([@zordius](https://github.com/zordius)) -- [#819](https://github.com/wycats/handlebars.js/pull/819) - Implement recursive field lookup ([@kpdecker](https://github.com/kpdecker)) -- [#764](https://github.com/wycats/handlebars.js/issues/764) - This reference not working for helpers ([@kpdecker](https://github.com/kpdecker)) -- [#773](https://github.com/wycats/handlebars.js/issues/773) - Implicit parameters in {{#each}} introduces a peculiarity in helpers calling convention ([@Bertrand](https://github.com/Bertrand)) -- [#783](https://github.com/wycats/handlebars.js/issues/783) - helperMissing and consistency for different expression types ([@ErisDS](https://github.com/ErisDS)) -- [#795](https://github.com/wycats/handlebars.js/pull/795) - Turn the precompile script into a wrapper around a module. ([@jwietelmann](https://github.com/jwietelmann)) -- [#823](https://github.com/wycats/handlebars.js/pull/823) - Support inverse sections on the with helper ([@dan-manges](https://github.com/dan-manges)) -- [#834](https://github.com/wycats/handlebars.js/pull/834) - Refactor blocks, programs and inverses ([@mmun](https://github.com/mmun)) -- [#852](https://github.com/wycats/handlebars.js/issues/852) - {{foo~}} space control behavior is different from older version ([@zordius](https://github.com/zordius)) -- [#835](https://github.com/wycats/handlebars.js/issues/835) - Templates overwritten if file is loaded twice - -- Expose escapeExpression on the root object - 980c38c -- Remove nested function eval in blockHelperMissing - 6f22ec1 -- Fix compiler program de-duping - 9e3f824 - -Compatibility notes: - -- The default build now outputs a generic UMD wrapper. This should be transparent change but may cause issues in some environments. -- Runtime compatibility breaks in both directions. Ensure that both compiler and client are upgraded to 2.0.0-beta.1 or higher at the same time. - - `programWithDepth` has been removed an instead an array of context values is passed to fields needing depth lookups. -- `false` values are now printed to output rather than silently dropped -- Lines containing only block statements and whitespace are now removed. This matches the Mustache spec but may cause issues with code that expects whitespace to exist but would not otherwise. -- Partials that are standalone will now indent their rendered content -- `AST.ProgramNode`'s signature has changed. -- Numerious methods/features removed from pseudo-API classes - - `JavaScriptCompiler.register` - - `JavaScriptCompiler.replaceStack` no longer supports non-inline replace - - `Compiler.disassemble` - - `DECLARE` opcode - - `strip` opcode - - `lookup` opcode - - Content nodes may have their `string` values mutated over time. `original` field provides the unmodified value. -- Removed unused `Handlebars.registerHelper` `inverse` parameter -- `each` helper requires iterator parameter - -[Commits](https://github.com/wycats/handlebars.js/compare/v2.0.0-alpha.4...v2.0.0-beta.1) - -## v2.0.0-alpha.4 - May 19th, 2014 - -- Expose setup wrappers for compiled templates - 3638874 - -[Commits](https://github.com/wycats/handlebars.js/compare/v2.0.0-alpha.3...v2.0.0-alpha.4) - -## v2.0.0-alpha.3 - May 19th, 2014 - -- [#797](https://github.com/wycats/handlebars.js/pull/797) - Pass full helper ID to helperMissing when options are provided ([@tomdale](https://github.com/tomdale)) -- [#793](https://github.com/wycats/handlebars.js/pull/793) - Ensure isHelper is coerced to a boolean ([@mmun](https://github.com/mmun)) -- Refactor template init logic - 085e5e1 - -[Commits](https://github.com/wycats/handlebars.js/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) - -## v2.0.0-alpha.2 - March 6th, 2014 - -- [#756](https://github.com/wycats/handlebars.js/pull/756) - fix bug in IE<=8 (no Array::map), closes #751 ([@jenseng](https://github.com/jenseng)) -- [#749](https://github.com/wycats/handlebars.js/pull/749) - properly handle multiple subexpressions in the same hash, fixes #748 ([@jenseng](https://github.com/jenseng)) -- [#743](https://github.com/wycats/handlebars.js/issues/743) - subexpression confusion/problem? ([@waynedpj](https://github.com/waynedpj)) -- [#746](https://github.com/wycats/handlebars.js/issues/746) - [CLI] support `handlebars --version` ([@apfelbox](https://github.com/apfelbox)) -- [#747](https://github.com/wycats/handlebars.js/pull/747) - updated grunt-saucelabs, failing tests revealed ([@Jonahss](https://github.com/Jonahss)) -- Make JSON a requirement for the compiler. - 058c0fb -- Temporarily kill the AWS publish CI step - 8347ee2 - -Compatibility notes: - -- A JSON polyfill is required to run the compiler under IE8 and below. It's recommended that the precompiler be used in lieu of running the compiler on these legacy environments. - -[Commits](https://github.com/wycats/handlebars.js/compare/v2.0.0-alpha.1...v2.0.0-alpha.2) - -## v2.0.0-alpha.1 - February 10th, 2014 - -- [#182](https://github.com/wycats/handlebars.js/pull/182) - Allow passing hash parameters to partials ([@kpdecker](https://github.com/kpdecker)) -- [#392](https://github.com/wycats/handlebars.js/pull/392) - Access to root context in partials and helpers ([@kpdecker](https://github.com/kpdecker)) -- [#472](https://github.com/wycats/handlebars.js/issues/472) - Helpers cannot have decimal parameters ([@kayleg](https://github.com/kayleg)) -- [#569](https://github.com/wycats/handlebars.js/pull/569) - Unable to lookup array values using @index ([@kpdecker](https://github.com/kpdecker)) -- [#491](https://github.com/wycats/handlebars.js/pull/491) - For nested helpers: get the @ variables of the outer helper from the inner one ([@kpdecker](https://github.com/kpdecker)) -- [#669](https://github.com/wycats/handlebars.js/issues/669) - Ability to unregister a helper ([@dbachrach](https://github.com/dbachrach)) -- [#730](https://github.com/wycats/handlebars.js/pull/730) - Raw block helpers ([@kpdecker](https://github.com/kpdecker)) -- [#634](https://github.com/wycats/handlebars.js/pull/634) - It would be great to have the helper name passed to `blockHelperMissing` ([@kpdecker](https://github.com/kpdecker)) -- [#729](https://github.com/wycats/handlebars.js/pull/729) - Convert template spec to object literal ([@kpdecker](https://github.com/kpdecker)) - -- [#658](https://github.com/wycats/handlebars.js/issues/658) - Depthed helpers do not work after an upgrade from 1.0.0 ([@xibxor](https://github.com/xibxor)) -- [#671](https://github.com/wycats/handlebars.js/issues/671) - Crashes on no-parameter {{#each}} ([@stepancheg](https://github.com/stepancheg)) -- [#689](https://github.com/wycats/handlebars.js/issues/689) - broken template precompilation ([@AAS](https://github.com/AAS)) -- [#698](https://github.com/wycats/handlebars.js/pull/698) - Fix parser generation under windows ([@osiris43](https://github.com/osiris43)) -- [#699](https://github.com/wycats/handlebars.js/issues/699) - @DATA not compiles to invalid JS in stringParams mode ([@kpdecker](https://github.com/kpdecker)) -- [#705](https://github.com/wycats/handlebars.js/issues/705) - 1.3.0 can not be wrapped in an IIFE ([@craigteegarden](https://github.com/craigteegarden)) -- [#706](https://github.com/wycats/handlebars.js/pull/706) - README: Use with helper instead of relying on blockHelperMissing ([@scottgonzalez](https://github.com/scottgonzalez)) - -- [#700](https://github.com/wycats/handlebars.js/pull/700) - Remove redundant conditions ([@blakeembrey](https://github.com/blakeembrey)) -- [#704](https://github.com/wycats/handlebars.js/pull/704) - JavaScript Compiler Cleanup ([@blakeembrey](https://github.com/blakeembrey)) - -Compatibility notes: - -- `helperMissing` helper no longer has the indexed name argument. Helper name is now available via `options.name`. -- Precompiler output has changed, which breaks compatibility with prior versions of the runtime and precompiled output. -- `JavaScriptCompiler.compilerInfo` now returns generic objects rather than javascript source. -- AST changes - - INTEGER -> NUMBER - - Additional PartialNode hash parameter - - New RawBlockNode type -- Data frames now have a `_parent` field. This is internal but is enumerable for performance/compatibility reasons. - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.3.0...v2.0.0-alpha.1) - -## v1.3.0 - January 1st, 2014 - -- [#690](https://github.com/wycats/handlebars.js/pull/690) - Added support for subexpressions ([@machty](https://github.com/machty)) -- [#696](https://github.com/wycats/handlebars.js/pull/696) - Fix for reserved keyword "default" ([@nateirwin](https://github.com/nateirwin)) -- [#692](https://github.com/wycats/handlebars.js/pull/692) - add line numbers to nodes when parsing ([@fivetanley](https://github.com/fivetanley)) -- [#695](https://github.com/wycats/handlebars.js/pull/695) - Pull options out from param setup to allow easier extension ([@blakeembrey](https://github.com/blakeembrey)) -- [#694](https://github.com/wycats/handlebars.js/pull/694) - Make the environment reusable ([@blakeembrey](https://github.com/blakeembrey)) -- [#636](https://github.com/wycats/handlebars.js/issues/636) - Print line and column of errors ([@sgronblo](https://github.com/sgronblo)) -- Use literal for data lookup - c1a93d3 -- Add stack handling sanity checks - cd885bf -- Fix stack id "leak" on replaceStack - ddfe457 -- Fix incorrect stack pop when replacing literals - f4d337d - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.2.1...v1.3.0) - -## v1.2.1 - December 26th, 2013 - -- [#684](https://github.com/wycats/handlebars.js/pull/684) - Allow any number of trailing characters for valid JavaScript variable ([@blakeembrey](https://github.com/blakeembrey)) -- [#686](https://github.com/wycats/handlebars.js/pull/686) - Falsy AMD module names in version 1.2.0 ([@kpdecker](https://github.com/kpdecker)) - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.2.0...v1.2.1) - -## v1.2.0 - December 23rd, 2013 - -- [#675](https://github.com/wycats/handlebars.js/issues/675) - Cannot compile empty template for partial ([@erwinw](https://github.com/erwinw)) -- [#677](https://github.com/wycats/handlebars.js/issues/677) - Triple brace statements fail under IE ([@hamzaCM](https://github.com/hamzaCM)) -- [#655](https://github.com/wycats/handlebars.js/issues/655) - Loading Handlebars using bower ([@niki4810](https://github.com/niki4810)) -- [#657](https://github.com/wycats/handlebars.js/pull/657) - Fixes issue where cli compiles non handlebars templates ([@chrishoage](https://github.com/chrishoage)) -- [#681](https://github.com/wycats/handlebars.js/pull/681) - Adds in-browser testing and Saucelabs CI ([@kpdecker](https://github.com/kpdecker)) -- [#661](https://github.com/wycats/handlebars.js/pull/661) - Add @first and @index to #each object iteration ([@cgp](https://github.com/cgp)) -- [#650](https://github.com/wycats/handlebars.js/pull/650) - Handlebars is MIT-licensed ([@thomasboyt](https://github.com/thomasboyt)) -- [#641](https://github.com/wycats/handlebars.js/pull/641) - Document ember testing process ([@kpdecker](https://github.com/kpdecker)) -- [#662](https://github.com/wycats/handlebars.js/issues/662) - handlebars-source 1.1.2 is missing from RubyGems. -- [#656](https://github.com/wycats/handlebars.js/issues/656) - Expose COMPILER_REVISION checks as a hook ([@machty](https://github.com/machty)) -- [#668](https://github.com/wycats/handlebars.js/issues/668) - Consider publishing handlebars-runtime as a separate module on npm ([@dlmanning](https://github.com/dlmanning)) -- [#679](https://github.com/wycats/handlebars.js/issues/679) - Unable to override invokePartial ([@mattbrailsford](https://github.com/mattbrailsford)) -- [#646](https://github.com/wycats/handlebars.js/pull/646) - Fix "\\{{" immediately following "\{{" ([@dmarcotte](https://github.com/dmarcotte)) -- Allow extend to work with non-prototyped objects - eb53f2e -- Add JavascriptCompiler public API tests - 1a751b2 -- Add AST test coverage for more complex paths - ddea5be -- Fix handling of boolean escape in MustacheNode - b4968bb - -Compatibility notes: - -- `@index` and `@first` are now supported for `each` iteration on objects -- `Handlebars.VM.checkRevision` and `Handlebars.JavaScriptCompiler.prototype.compilerInfo` now available to modify the version checking behavior. -- Browserify users may link to the runtime library via `require('handlebars/runtime')` - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.1.2...v1.2.0) - -## v1.1.2 - November 5th, 2013 - -- [#645](https://github.com/wycats/handlebars.js/issues/645) - 1.1.1 fails under IE8 ([@kpdecker](https://github.com/kpdecker)) -- [#644](https://github.com/wycats/handlebars.js/issues/644) - Using precompiled templates (AMD mode) with handlebars.runtime 1.1.1 ([@fddima](https://github.com/fddima)) - -- Add simple binary utility tests - 96a45a4 -- Fix empty string compilation - eea708a - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.1.1...v1.1.2) - -## v1.1.1 - November 4th, 2013 - -- [#642](https://github.com/wycats/handlebars.js/issues/642) - handlebars 1.1.0 are broken with nodejs - -- Fix release notes link - 17ba258 - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.1.0...v1.1.1) - -## v1.1.0 - November 3rd, 2013 - -- [#628](https://github.com/wycats/handlebars.js/pull/628) - Convert code to ES6 modules ([@kpdecker](https://github.com/kpdecker)) -- [#336](https://github.com/wycats/handlebars.js/pull/336) - Add whitespace control syntax ([@kpdecker](https://github.com/kpdecker)) -- [#535](https://github.com/wycats/handlebars.js/pull/535) - Fix for probable JIT error under Safari ([@sorentwo](https://github.com/sorentwo)) -- [#483](https://github.com/wycats/handlebars.js/issues/483) - Add first and last @ vars to each helper ([@denniskuczynski](https://github.com/denniskuczynski)) -- [#557](https://github.com/wycats/handlebars.js/pull/557) - `\\{{foo}}` escaping only works in some situations ([@dmarcotte](https://github.com/dmarcotte)) -- [#552](https://github.com/wycats/handlebars.js/pull/552) - Added BOM removal flag. ([@blessenm](https://github.com/blessenm)) -- [#543](https://github.com/wycats/handlebars.js/pull/543) - publish passing master builds to s3 ([@fivetanley](https://github.com/fivetanley)) - -- [#608](https://github.com/wycats/handlebars.js/issues/608) - Add `includeZero` flag to `if` conditional -- [#498](https://github.com/wycats/handlebars.js/issues/498) - `Handlebars.compile` fails on empty string although a single blank works fine -- [#599](https://github.com/wycats/handlebars.js/issues/599) - lambda helpers only receive options if used with arguments -- [#592](https://github.com/wycats/handlebars.js/issues/592) - Optimize array and subprogram performance -- [#571](https://github.com/wycats/handlebars.js/issues/571) - uglify upgrade breaks compatibility with older versions of node -- [#587](https://github.com/wycats/handlebars.js/issues/587) - Partial inside partial breaks? - -Compatibility notes: - -- The project now includes separate artifacts for AMD, CommonJS, and global objects. - - AMD: Users may load the bundled `handlebars.amd.js` or `handlebars.runtime.amd.js` files or load individual modules directly. AMD users should also note that the handlebars object is exposed via the `default` field on the imported object. This [gist](https://gist.github.com/wycats/7417be0dc361a69d5916) provides some discussion of possible compatibility shims. - - CommonJS/Node: Node loading occurs as normal via `require` - - Globals: The `handlebars.js` and `handlebars.runtime.js` files should behave in the same manner as the v1.0.12 / 1.0.0 release. -- Build artifacts have been removed from the repository. [npm][npm], [components/handlebars.js][components], [cdnjs][cdnjs], or the [builds page][builds-page] should now be used as the source of built artifacts. -- Context-stored helpers are now always passed the `options` hash. Previously no-argument helpers did not have this argument. - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.0.12...v1.1.0) - -## v1.0.12 / 1.0.0 - May 31 2013 - -- [#515](https://github.com/wycats/handlebars.js/issues/515) - Add node require extensions support ([@jjclark1982](https://github.com/jjclark1982)) -- [#517](https://github.com/wycats/handlebars.js/issues/517) - Fix amd precompiler output with directories ([@blessenm](https://github.com/blessenm)) -- [#433](https://github.com/wycats/handlebars.js/issues/433) - Add support for unicode ids -- [#469](https://github.com/wycats/handlebars.js/issues/469) - Add support for `?` in ids -- [#534](https://github.com/wycats/handlebars.js/issues/534) - Protect from object prototype modifications -- [#519](https://github.com/wycats/handlebars.js/issues/519) - Fix partials with . name ([@jamesgorrie](https://github.com/jamesgorrie)) -- [#519](https://github.com/wycats/handlebars.js/issues/519) - Allow ID or strings in partial names -- [#437](https://github.com/wycats/handlebars.js/issues/437) - Require matching brace counts in escaped expressions -- Merge passed partials and helpers with global namespace values -- Add support for complex ids in @data references -- Docs updates - -Compatibility notes: - -- The parser is now stricter on `{{{`, requiring that the end token be `}}}`. Templates that do not - follow this convention should add the additional brace value. -- Code that relies on global the namespace being muted when custom helpers or partials are passed will need to explicitly pass an `undefined` value for any helpers that should not be available. -- The compiler version has changed. Precompiled templates with 1.0.12 or higher must use the 1.0.0 or higher runtime. - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.0.11...v1.0.12) - -## v1.0.11 / 1.0.0-rc4 - May 13 2013 - -- [#458](https://github.com/wycats/handlebars.js/issues/458) - Fix `./foo` syntax ([@jpfiset](https://github.com/jpfiset)) -- [#460](https://github.com/wycats/handlebars.js/issues/460) - Allow `:` in unescaped identifiers ([@jpfiset](https://github.com/jpfiset)) -- [#471](https://github.com/wycats/handlebars.js/issues/471) - Create release notes (These!) -- [#456](https://github.com/wycats/handlebars.js/issues/456) - Allow escaping of `\\` -- [#211](https://github.com/wycats/handlebars.js/issues/211) - Fix exception in `escapeExpression` -- [#375](https://github.com/wycats/handlebars.js/issues/375) - Escape unicode newlines -- [#461](https://github.com/wycats/handlebars.js/issues/461) - Do not fail when compiling `""` -- [#302](https://github.com/wycats/handlebars.js/issues/302) - Fix sanity check in knownHelpersOnly mode -- [#369](https://github.com/wycats/handlebars.js/issues/369) - Allow registration of multiple helpers and partial by passing definition object -- Add bower package declaration ([@DevinClark](https://github.com/DevinClark)) -- Add NuSpec package declaration ([@MikeMayer](https://github.com/MikeMayer)) -- Handle empty context in `with` ([@thejohnfreeman](https://github.com/thejohnfreeman)) -- Support custom template extensions in CLI ([@matteoagosti](https://github.com/matteoagosti)) -- Fix Rhino support ([@broady](https://github.com/broady)) -- Include contexts in string mode ([@leshill](https://github.com/leshill)) -- Return precompiled scripts when compiling to AMD ([@JamesMaroney](https://github.com/JamesMaroney)) -- Docs updates ([@iangreenleaf](https://github.com/iangreenleaf), [@gilesbowkett](https://github.com/gilesbowkett), [@utkarsh2012](https://github.com/utkarsh2012)) -- Fix `toString` handling under IE and browserify ([@tommydudebreaux](https://github.com/tommydudebreaux)) -- Add program metadata - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.0.10...v1.0.11) - -## v1.0.10 - Node - Feb 27 2013 - -- [#428](https://github.com/wycats/handlebars.js/issues/428) - Fix incorrect rendering of nested programs -- Fix exception message ([@tricknotes](https://github.com/tricknotes)) -- Added negative number literal support -- Concert library to single IIFE -- Add handlebars-source gemspec ([@machty](https://github.com/machty)) - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.0.9...v1.0.10) - -## v1.0.9 - Node - Feb 15 2013 - -- Added `Handlebars.create` API in node module for sandboxed instances ([@tommydudebreaux](https://github.com/tommydudebreaux)) - -[Commits](https://github.com/wycats/handlebars.js/compare/1.0.0-rc.3...v1.0.9) - -## 1.0.0-rc3 - Browser - Feb 14 2013 - -- Prevent use of `this` or `..` in illogical place ([@leshill](https://github.com/leshill)) -- Allow AST passing for `parse`/`compile`/`precompile` ([@machty](https://github.com/machty)) -- Optimize generated output by inlining statements where possible -- Check compiler version when evaluating templates -- Package browser dist in npm package - -[Commits](https://github.com/wycats/handlebars.js/compare/v1.0.8...1.0.0-rc.3) - -## Prior Versions - -When upgrading from the Handlebars 0.9 series, be aware that the -signature for passing custom helpers or partials to templates has -changed. - -Instead of: - -```js -template(context, helpers, partials, [data]); -``` - -Use: - -```js -template(context, { helpers: helpers, partials: partials, data: data }); -``` - -[builds-page]: http://builds.handlebarsjs.com.s3.amazonaws.com/index.html -[cdnjs]: http://cdnjs.com/libraries/handlebars.js/ -[components]: https://github.com/components/handlebars.js -[npm]: https://npmjs.org/package/handlebars diff --git a/node_modules/handlebars/runtime.d.ts b/node_modules/handlebars/runtime.d.ts deleted file mode 100644 index 0d5105eb7..000000000 --- a/node_modules/handlebars/runtime.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import Handlebars = require('handlebars') - -declare module "handlebars/runtime" { - -} \ No newline at end of file diff --git a/node_modules/handlebars/runtime.js b/node_modules/handlebars/runtime.js deleted file mode 100644 index 306207cd2..000000000 --- a/node_modules/handlebars/runtime.js +++ /dev/null @@ -1,3 +0,0 @@ -// Create a simple path alias to allow browserify to resolve -// the runtime on a supported path. -module.exports = require('./dist/cjs/handlebars.runtime')['default']; diff --git a/node_modules/handlebars/types/index.d.ts b/node_modules/handlebars/types/index.d.ts deleted file mode 100644 index 3f2f8b792..000000000 --- a/node_modules/handlebars/types/index.d.ts +++ /dev/null @@ -1,422 +0,0 @@ -/* These definitions were imported from https://github.com/DefinitelyTyped/DefinitelyTyped - * and includes previous contributions from the DefinitelyTyped community by: - * - Albert Willemsen - * - Boris Yankov - * - Jessica Franco - * - Masahiro Wakame - * - Raanan Weber - * - Sergei Dorogin - * - webbiesdk - * - Andrew Leedham - * - Nils Knappmeier - * For full history prior to their migration to handlebars.js, please see: - * https://github.com/DefinitelyTyped/DefinitelyTyped/commits/1ce60bdc07f10e0b076778c6c953271c072bc894/types/handlebars/index.d.ts - */ -// TypeScript Version: 2.3 - -declare namespace Handlebars { - export interface TemplateDelegate { - (context: T, options?: RuntimeOptions): string; - } - - export type Template = TemplateDelegate|string; - - export interface RuntimeOptions { - partial?: boolean; - depths?: any[]; - helpers?: { [name: string]: Function }; - partials?: { [name: string]: HandlebarsTemplateDelegate }; - decorators?: { [name: string]: Function }; - data?: any; - blockParams?: any[]; - allowCallsToHelperMissing?: boolean; - allowedProtoProperties?: { [name: string]: boolean }; - allowedProtoMethods?: { [name: string]: boolean }; - allowProtoPropertiesByDefault?: boolean; - allowProtoMethodsByDefault?: boolean; - } - - export interface HelperOptions { - fn: TemplateDelegate; - inverse: TemplateDelegate; - hash: any; - data?: any; - } - - export interface HelperDelegate { - (context?: any, arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any, options?: HelperOptions): any; - } - export interface HelperDeclareSpec { - [key: string]: HelperDelegate; - } - - export interface ParseOptions { - srcName?: string; - ignoreStandalone?: boolean; - } - - export function registerHelper(name: string, fn: HelperDelegate): void; - export function registerHelper(name: HelperDeclareSpec): void; - export function unregisterHelper(name: string): void; - - export function registerPartial(name: string, fn: Template): void; - export function registerPartial(spec: { [name: string]: HandlebarsTemplateDelegate }): void; - export function unregisterPartial(name: string): void; - - // TODO: replace Function with actual signature - export function registerDecorator(name: string, fn: Function): void; - export function unregisterDecorator(name: string): void; - - export function K(): void; - export function createFrame(object: any): any; - export function blockParams(obj: any[], ids: any[]): any[]; - export function log(level: number, obj: any): void; - export function parse(input: string, options?: ParseOptions): hbs.AST.Program; - export function parseWithoutProcessing(input: string, options?: ParseOptions): hbs.AST.Program; - export function compile(input: any, options?: CompileOptions): HandlebarsTemplateDelegate; - export function precompile(input: any, options?: PrecompileOptions): TemplateSpecification; - export function template(precompilation: TemplateSpecification): HandlebarsTemplateDelegate; - - export function create(): typeof Handlebars; - - export const escapeExpression: typeof Utils.escapeExpression; - //export const Utils: typeof hbs.Utils; - export const logger: Logger; - export const templates: HandlebarsTemplates; - export const helpers: { [name: string]: HelperDelegate }; - export const partials: { [name: string]: any }; - // TODO: replace Function with actual signature - export const decorators: { [name: string]: Function }; - - export const VERSION: string; - - export function noConflict(): typeof Handlebars; - - export class Exception { - constructor(message: string, node?: hbs.AST.Node); - description: string; - fileName: string; - lineNumber?: any; - endLineNumber?: any; - message: string; - name: string; - number: number; - stack?: string; - column?: any; - endColumn?: any; - } - - export class SafeString { - constructor(str: string); - toString(): string; - toHTML(): string; - } - - export namespace Utils { - export function escapeExpression(str: string): string; - export function createFrame(object: any): any; - export function blockParams(obj: any[], ids: any[]): any[]; - export function isEmpty(obj: any) : boolean; - export function extend(obj: any, ...source: any[]): any; - export function toString(obj: any): string; - export function isArray(obj: any): boolean; - export function isFunction(obj: any): boolean; - } - - export namespace AST { - export const helpers: hbs.AST.helpers; - } - - interface ICompiler { - accept(node: hbs.AST.Node): void; - Program(program: hbs.AST.Program): void; - BlockStatement(block: hbs.AST.BlockStatement): void; - PartialStatement(partial: hbs.AST.PartialStatement): void; - PartialBlockStatement(partial: hbs.AST.PartialBlockStatement): void; - DecoratorBlock(decorator: hbs.AST.DecoratorBlock): void; - Decorator(decorator: hbs.AST.Decorator): void; - MustacheStatement(mustache: hbs.AST.MustacheStatement): void; - ContentStatement(content: hbs.AST.ContentStatement): void; - CommentStatement(comment?: hbs.AST.CommentStatement): void; - SubExpression(sexpr: hbs.AST.SubExpression): void; - PathExpression(path: hbs.AST.PathExpression): void; - StringLiteral(str: hbs.AST.StringLiteral): void; - NumberLiteral(num: hbs.AST.NumberLiteral): void; - BooleanLiteral(bool: hbs.AST.BooleanLiteral): void; - UndefinedLiteral(): void; - NullLiteral(): void; - Hash(hash: hbs.AST.Hash): void; - } - - export class Visitor implements ICompiler { - accept(node: hbs.AST.Node): void; - acceptKey(node: hbs.AST.Node, name: string): void; - acceptArray(arr: hbs.AST.Expression[]): void; - Program(program: hbs.AST.Program): void; - BlockStatement(block: hbs.AST.BlockStatement): void; - PartialStatement(partial: hbs.AST.PartialStatement): void; - PartialBlockStatement(partial: hbs.AST.PartialBlockStatement): void; - DecoratorBlock(decorator: hbs.AST.DecoratorBlock): void; - Decorator(decorator: hbs.AST.Decorator): void; - MustacheStatement(mustache: hbs.AST.MustacheStatement): void; - ContentStatement(content: hbs.AST.ContentStatement): void; - CommentStatement(comment?: hbs.AST.CommentStatement): void; - SubExpression(sexpr: hbs.AST.SubExpression): void; - PathExpression(path: hbs.AST.PathExpression): void; - StringLiteral(str: hbs.AST.StringLiteral): void; - NumberLiteral(num: hbs.AST.NumberLiteral): void; - BooleanLiteral(bool: hbs.AST.BooleanLiteral): void; - UndefinedLiteral(): void; - NullLiteral(): void; - Hash(hash: hbs.AST.Hash): void; - } - - - export interface ResolvePartialOptions { - name: string; - helpers?: { [name: string]: Function }; - partials?: { [name: string]: HandlebarsTemplateDelegate }; - decorators?: { [name: string]: Function }; - data?: any; - } - - export namespace VM { - /** - * @deprecated - */ - export function resolvePartial(partial: HandlebarsTemplateDelegate | undefined, context: any, options: ResolvePartialOptions): HandlebarsTemplateDelegate; - } -} - -/** -* Implement this interface on your MVW/MVVM/MVC views such as Backbone.View -**/ -interface HandlebarsTemplatable { - template: HandlebarsTemplateDelegate; -} - -// NOTE: for backward compatibility of this typing -type HandlebarsTemplateDelegate = Handlebars.TemplateDelegate; - -interface HandlebarsTemplates { - [index: string]: HandlebarsTemplateDelegate; -} - -interface TemplateSpecification { - -} - -// for backward compatibility of this typing -type RuntimeOptions = Handlebars.RuntimeOptions; - -interface CompileOptions { - data?: boolean; - compat?: boolean; - knownHelpers?: KnownHelpers; - knownHelpersOnly?: boolean; - noEscape?: boolean; - strict?: boolean; - assumeObjects?: boolean; - preventIndent?: boolean; - ignoreStandalone?: boolean; - explicitPartialContext?: boolean; -} - -type KnownHelpers = { - [name in BuiltinHelperName | CustomHelperName]: boolean; -}; - -type BuiltinHelperName = - "helperMissing"| - "blockHelperMissing"| - "each"| - "if"| - "unless"| - "with"| - "log"| - "lookup"; - -type CustomHelperName = string; - -interface PrecompileOptions extends CompileOptions { - srcName?: string; - destName?: string; -} - -declare namespace hbs { - // for backward compatibility of this typing - type SafeString = Handlebars.SafeString; - - type Utils = typeof Handlebars.Utils; -} - -interface Logger { - DEBUG: number; - INFO: number; - WARN: number; - ERROR: number; - level: number; - - methodMap: { [level: number]: string }; - - log(level: number, obj: string): void; -} - -type CompilerInfo = [number/* revision */, string /* versions */]; - -declare namespace hbs { - namespace AST { - interface Node { - type: string; - loc: SourceLocation; - } - - interface SourceLocation { - source: string; - start: Position; - end: Position; - } - - interface Position { - line: number; - column: number; - } - - interface Program extends Node { - body: Statement[]; - blockParams: string[]; - } - - interface Statement extends Node {} - - interface MustacheStatement extends Statement { - type: 'MustacheStatement'; - path: PathExpression | Literal; - params: Expression[]; - hash: Hash; - escaped: boolean; - strip: StripFlags; - } - - interface Decorator extends MustacheStatement { } - - interface BlockStatement extends Statement { - type: 'BlockStatement'; - path: PathExpression; - params: Expression[]; - hash: Hash; - program: Program; - inverse: Program; - openStrip: StripFlags; - inverseStrip: StripFlags; - closeStrip: StripFlags; - } - - interface DecoratorBlock extends BlockStatement { } - - interface PartialStatement extends Statement { - type: 'PartialStatement'; - name: PathExpression | SubExpression; - params: Expression[]; - hash: Hash; - indent: string; - strip: StripFlags; - } - - interface PartialBlockStatement extends Statement { - type: 'PartialBlockStatement'; - name: PathExpression | SubExpression; - params: Expression[]; - hash: Hash; - program: Program; - openStrip: StripFlags; - closeStrip: StripFlags; - } - - interface ContentStatement extends Statement { - type: 'ContentStatement'; - value: string; - original: StripFlags; - } - - interface CommentStatement extends Statement { - type: 'CommentStatement'; - value: string; - strip: StripFlags; - } - - interface Expression extends Node {} - - interface SubExpression extends Expression { - type: 'SubExpression'; - path: PathExpression; - params: Expression[]; - hash: Hash; - } - - interface PathExpression extends Expression { - type: 'PathExpression'; - data: boolean; - depth: number; - parts: string[]; - original: string; - } - - interface Literal extends Expression {} - interface StringLiteral extends Literal { - type: 'StringLiteral'; - value: string; - original: string; - } - - interface BooleanLiteral extends Literal { - type: 'BooleanLiteral'; - value: boolean; - original: boolean; - } - - interface NumberLiteral extends Literal { - type: 'NumberLiteral'; - value: number; - original: number; - } - - interface UndefinedLiteral extends Literal { - type: 'UndefinedLiteral'; - } - - interface NullLiteral extends Literal { - type: 'NullLiteral'; - } - - interface Hash extends Node { - type: 'Hash'; - pairs: HashPair[]; - } - - interface HashPair extends Node { - type: 'HashPair'; - key: string; - value: Expression; - } - - interface StripFlags { - open: boolean; - close: boolean; - } - - interface helpers { - helperExpression(node: Node): boolean; - scopeId(path: PathExpression): boolean; - simpleId(path: PathExpression): boolean; - } - } -} - -declare module "handlebars" { - export = Handlebars; -} - -declare module "handlebars/runtime" { - export = Handlebars; -} diff --git a/node_modules/has-value/LICENSE b/node_modules/has-value/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/has-value/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/has-value/README.md b/node_modules/has-value/README.md deleted file mode 100644 index f9b428c9a..000000000 --- a/node_modules/has-value/README.md +++ /dev/null @@ -1,149 +0,0 @@ -# has-value [![NPM version](https://img.shields.io/npm/v/has-value.svg?style=flat)](https://www.npmjs.com/package/has-value) [![NPM monthly downloads](https://img.shields.io/npm/dm/has-value.svg?style=flat)](https://npmjs.org/package/has-value) [![NPM total downloads](https://img.shields.io/npm/dt/has-value.svg?style=flat)](https://npmjs.org/package/has-value) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/has-value.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/has-value) - -> Returns true if a value exists, false if empty. Works with deeply nested values using object paths. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save has-value -``` - -**Works for:** - -* booleans -* functions -* numbers -* strings -* nulls -* object -* arrays - -## Usage - -Works with property values (supports object-path notation, like `foo.bar`) or a single value: - -```js -var hasValue = require('has-value'); - -hasValue('foo'); -hasValue({foo: 'bar'}, 'foo'); -hasValue({a: {b: {c: 'foo'}}}, 'a.b.c'); -//=> true - -hasValue(''); -hasValue({foo: ''}, 'foo'); -//=> false - -hasValue(0); -hasValue(1); -hasValue({foo: 0}, 'foo'); -hasValue({foo: 1}, 'foo'); -hasValue({foo: null}, 'foo'); -hasValue({foo: {bar: 'a'}}}, 'foo'); -hasValue({foo: {bar: 'a'}}}, 'foo.bar'); -//=> true - -hasValue({foo: {}}}, 'foo'); -hasValue({foo: {bar: {}}}}, 'foo.bar'); -hasValue({foo: undefined}, 'foo'); -//=> false - -hasValue([]); -hasValue([[]]); -hasValue([[], []]); -hasValue([undefined]); -hasValue({foo: []}, 'foo'); -//=> false - -hasValue([0]); -hasValue([null]); -hasValue(['foo']); -hasValue({foo: ['a']}, 'foo'); -//=> true - -hasValue(function() {}) -hasValue(function(foo) {}) -hasValue({foo: function(foo) {}}, 'foo'); -hasValue({foo: function() {}}, 'foo'); -//=> true - -hasValue(true); -hasValue(false); -hasValue({foo: true}, 'foo'); -hasValue({foo: false}, 'foo'); -//=> true -``` - -## isEmpty - -To do the opposite and test for empty values, do: - -```js -function isEmpty(o) { - return !hasValue.apply(hasValue, arguments); -} -``` - -## Release history - -### v1.0.0 - -* `zero` always returns true -* `array` now recurses, so that an array of empty arrays will return `false` -* `null` now returns true - -## About - -### Related projects - -* [define-property](https://www.npmjs.com/package/define-property): Define a non-enumerable property on an object. | [homepage](https://github.com/jonschlinkert/define-property "Define a non-enumerable property on an object.") -* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value "Use property paths (`a.b.c`) to get a nested value from an object.") -* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value "Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths.") -* [unset-value](https://www.npmjs.com/package/unset-value): Delete nested properties from an object using dot notation. | [homepage](https://github.com/jonschlinkert/unset-value "Delete nested properties from an object using dot notation.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 17 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [rmharrison](https://github.com/rmharrison) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 19, 2017._ \ No newline at end of file diff --git a/node_modules/has-value/index.js b/node_modules/has-value/index.js deleted file mode 100644 index c23749488..000000000 --- a/node_modules/has-value/index.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * has-value - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var isObject = require('isobject'); -var hasValues = require('has-values'); -var get = require('get-value'); - -module.exports = function(val, prop) { - return hasValues(isObject(val) && prop ? get(val, prop) : val); -}; diff --git a/node_modules/has-value/package.json b/node_modules/has-value/package.json deleted file mode 100644 index b29d09990..000000000 --- a/node_modules/has-value/package.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "_args": [ - [ - "has-value@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "has-value@1.0.0", - "_id": "has-value@1.0.0", - "_inBundle": false, - "_integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "_location": "/has-value", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "has-value@1.0.0", - "name": "has-value", - "escapedName": "has-value", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/cache-base" - ], - "_resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/has-value/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Ryan M Harrison", - "url": "https://linkedin.com/in/harrisonrm" - } - ], - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "description": "Returns true if a value exists, false if empty. Works with deeply nested values using object paths.", - "devDependencies": { - "gulp-format-md": "^0.1.12", - "mocha": "^3.4.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/has-value", - "keywords": [ - "array", - "boolean", - "empty", - "find", - "function", - "has", - "hasOwn", - "javascript", - "js", - "key", - "keys", - "node.js", - "null", - "number", - "object", - "properties", - "property", - "string", - "type", - "util", - "utilities", - "utility", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "has-value", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/has-value.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "define-property", - "get-value", - "set-value", - "unset-value" - ] - }, - "reflinks": [], - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/has-values/LICENSE b/node_modules/has-values/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/has-values/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/has-values/README.md b/node_modules/has-values/README.md deleted file mode 100644 index 98d4367af..000000000 --- a/node_modules/has-values/README.md +++ /dev/null @@ -1,129 +0,0 @@ -# has-values [![NPM version](https://img.shields.io/npm/v/has-values.svg?style=flat)](https://www.npmjs.com/package/has-values) [![NPM monthly downloads](https://img.shields.io/npm/dm/has-values.svg?style=flat)](https://npmjs.org/package/has-values) [![NPM total downloads](https://img.shields.io/npm/dt/has-values.svg?style=flat)](https://npmjs.org/package/has-values) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/has-values.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/has-values) - -> Returns true if any values exist, false if empty. Works for booleans, functions, numbers, strings, nulls, objects and arrays. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save has-values -``` - -## Usage - -```js -var hasValue = require('has-values'); - -hasValue('a'); -//=> true - -hasValue(''); -//=> false - -hasValue(1); -//=> true - -hasValue(0); -//=> false - -hasValue({a: 'a'}}); -//=> true - -hasValue({}); -hasValue({foo: undefined}); -//=> false - -hasValue({foo: null}); -//=> true - -hasValue(['a']); -//=> true - -hasValue([]); -hasValue([[], []]); -hasValue([[[]]]); -//=> false - -hasValue(['foo']); -hasValue([0]); -//=> true - -hasValue(function(foo) {}); -//=> true - -hasValue(function() {}); -//=> true - -hasValue(true); -//=> true - -hasValue(false); -//=> true -``` - -## isEmpty - -To test for empty values, do: - -```js -function isEmpty(o, isZero) { - return !hasValue(o, isZero); -} -``` - -## Release history - -### v1.0.0 - -* `zero` always returns true -* `array` now recurses, so that an array of empty arrays will return `false` -* `null` now returns true - -## About - -### Related projects - -* [has-value](https://www.npmjs.com/package/has-value): Returns true if a value exists, false if empty. Works with deeply nested values using… [more](https://github.com/jonschlinkert/has-value) | [homepage](https://github.com/jonschlinkert/has-value "Returns true if a value exists, false if empty. Works with deeply nested values using object paths.") -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") -* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 19, 2017._ \ No newline at end of file diff --git a/node_modules/has-values/index.js b/node_modules/has-values/index.js deleted file mode 100644 index 9bebb9fcb..000000000 --- a/node_modules/has-values/index.js +++ /dev/null @@ -1,60 +0,0 @@ -/*! - * has-values - * - * Copyright (c) 2014-2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); -var isNumber = require('is-number'); - -module.exports = function hasValue(val) { - // is-number checks for NaN and other edge cases - if (isNumber(val)) { - return true; - } - - switch (typeOf(val)) { - case 'null': - case 'boolean': - case 'function': - return true; - case 'string': - case 'arguments': - return val.length !== 0; - case 'error': - return val.message !== ''; - case 'array': - var len = val.length; - if (len === 0) { - return false; - } - for (var i = 0; i < len; i++) { - if (hasValue(val[i])) { - return true; - } - } - return false; - case 'file': - case 'map': - case 'set': - return val.size !== 0; - case 'object': - var keys = Object.keys(val); - if (keys.length === 0) { - return false; - } - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (hasValue(val[key])) { - return true; - } - } - return false; - default: { - return false; - } - } -}; diff --git a/node_modules/has-values/node_modules/kind-of/LICENSE b/node_modules/has-values/node_modules/kind-of/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/has-values/node_modules/kind-of/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/has-values/node_modules/kind-of/README.md b/node_modules/has-values/node_modules/kind-of/README.md deleted file mode 100644 index 83469b0b6..000000000 --- a/node_modules/has-values/node_modules/kind-of/README.md +++ /dev/null @@ -1,267 +0,0 @@ -# kind-of [![NPM version](https://img.shields.io/npm/v/kind-of.svg?style=flat)](https://www.npmjs.com/package/kind-of) [![NPM monthly downloads](https://img.shields.io/npm/dm/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![NPM total downloads](https://img.shields.io/npm/dt/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/kind-of.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/kind-of) - -> Get the native type of a value. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save kind-of -``` - -Install with [bower](https://bower.io/) - -```sh -$ bower install kind-of --save -``` - -## Usage - -> es5, browser and es6 ready - -```js -var kindOf = require('kind-of'); - -kindOf(undefined); -//=> 'undefined' - -kindOf(null); -//=> 'null' - -kindOf(true); -//=> 'boolean' - -kindOf(false); -//=> 'boolean' - -kindOf(new Boolean(true)); -//=> 'boolean' - -kindOf(new Buffer('')); -//=> 'buffer' - -kindOf(42); -//=> 'number' - -kindOf(new Number(42)); -//=> 'number' - -kindOf('str'); -//=> 'string' - -kindOf(new String('str')); -//=> 'string' - -kindOf(arguments); -//=> 'arguments' - -kindOf({}); -//=> 'object' - -kindOf(Object.create(null)); -//=> 'object' - -kindOf(new Test()); -//=> 'object' - -kindOf(new Date()); -//=> 'date' - -kindOf([]); -//=> 'array' - -kindOf([1, 2, 3]); -//=> 'array' - -kindOf(new Array()); -//=> 'array' - -kindOf(/foo/); -//=> 'regexp' - -kindOf(new RegExp('foo')); -//=> 'regexp' - -kindOf(function () {}); -//=> 'function' - -kindOf(function * () {}); -//=> 'function' - -kindOf(new Function()); -//=> 'function' - -kindOf(new Map()); -//=> 'map' - -kindOf(new WeakMap()); -//=> 'weakmap' - -kindOf(new Set()); -//=> 'set' - -kindOf(new WeakSet()); -//=> 'weakset' - -kindOf(Symbol('str')); -//=> 'symbol' - -kindOf(new Int8Array()); -//=> 'int8array' - -kindOf(new Uint8Array()); -//=> 'uint8array' - -kindOf(new Uint8ClampedArray()); -//=> 'uint8clampedarray' - -kindOf(new Int16Array()); -//=> 'int16array' - -kindOf(new Uint16Array()); -//=> 'uint16array' - -kindOf(new Int32Array()); -//=> 'int32array' - -kindOf(new Uint32Array()); -//=> 'uint32array' - -kindOf(new Float32Array()); -//=> 'float32array' - -kindOf(new Float64Array()); -//=> 'float64array' -``` - -## Benchmarks - -Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of). -Note that performaces is slower for es6 features `Map`, `WeakMap`, `Set` and `WeakSet`. - -```bash -#1: array - current x 23,329,397 ops/sec ±0.82% (94 runs sampled) - lib-type-of x 4,170,273 ops/sec ±0.55% (94 runs sampled) - lib-typeof x 9,686,935 ops/sec ±0.59% (98 runs sampled) - -#2: boolean - current x 27,197,115 ops/sec ±0.85% (94 runs sampled) - lib-type-of x 3,145,791 ops/sec ±0.73% (97 runs sampled) - lib-typeof x 9,199,562 ops/sec ±0.44% (99 runs sampled) - -#3: date - current x 20,190,117 ops/sec ±0.86% (92 runs sampled) - lib-type-of x 5,166,970 ops/sec ±0.74% (94 runs sampled) - lib-typeof x 9,610,821 ops/sec ±0.50% (96 runs sampled) - -#4: function - current x 23,855,460 ops/sec ±0.60% (97 runs sampled) - lib-type-of x 5,667,740 ops/sec ±0.54% (100 runs sampled) - lib-typeof x 10,010,644 ops/sec ±0.44% (100 runs sampled) - -#5: null - current x 27,061,047 ops/sec ±0.97% (96 runs sampled) - lib-type-of x 13,965,573 ops/sec ±0.62% (97 runs sampled) - lib-typeof x 8,460,194 ops/sec ±0.61% (97 runs sampled) - -#6: number - current x 25,075,682 ops/sec ±0.53% (99 runs sampled) - lib-type-of x 2,266,405 ops/sec ±0.41% (98 runs sampled) - lib-typeof x 9,821,481 ops/sec ±0.45% (99 runs sampled) - -#7: object - current x 3,348,980 ops/sec ±0.49% (99 runs sampled) - lib-type-of x 3,245,138 ops/sec ±0.60% (94 runs sampled) - lib-typeof x 9,262,952 ops/sec ±0.59% (99 runs sampled) - -#8: regex - current x 21,284,827 ops/sec ±0.72% (96 runs sampled) - lib-type-of x 4,689,241 ops/sec ±0.43% (100 runs sampled) - lib-typeof x 8,957,593 ops/sec ±0.62% (98 runs sampled) - -#9: string - current x 25,379,234 ops/sec ±0.58% (96 runs sampled) - lib-type-of x 3,635,148 ops/sec ±0.76% (93 runs sampled) - lib-typeof x 9,494,134 ops/sec ±0.49% (98 runs sampled) - -#10: undef - current x 27,459,221 ops/sec ±1.01% (93 runs sampled) - lib-type-of x 14,360,433 ops/sec ±0.52% (99 runs sampled) - lib-typeof x 23,202,868 ops/sec ±0.59% (94 runs sampled) - -``` - -## Release history - -### v4.0.0 - -**Added** - -* `promise` support - -## Optimizations - -In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library: - -1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot. -2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it. -3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'` - -## About - -### Related projects - -* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 64 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [miguelmota](https://github.com/miguelmota) | -| 1 | [dtothefp](https://github.com/dtothefp) | -| 1 | [ksheedlo](https://github.com/ksheedlo) | -| 1 | [pdehaan](https://github.com/pdehaan) | -| 1 | [laggingreflex](https://github.com/laggingreflex) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 19, 2017._ \ No newline at end of file diff --git a/node_modules/has-values/node_modules/kind-of/index.js b/node_modules/has-values/node_modules/kind-of/index.js deleted file mode 100644 index 4c0233bc7..000000000 --- a/node_modules/has-values/node_modules/kind-of/index.js +++ /dev/null @@ -1,119 +0,0 @@ -var isBuffer = require('is-buffer'); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - if (type === '[object Promise]') { - return 'promise'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; diff --git a/node_modules/has-values/node_modules/kind-of/package.json b/node_modules/has-values/node_modules/kind-of/package.json deleted file mode 100644 index c46983fea..000000000 --- a/node_modules/has-values/node_modules/kind-of/package.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "_args": [ - [ - "kind-of@4.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "kind-of@4.0.0", - "_id": "kind-of@4.0.0", - "_inBundle": false, - "_integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "_location": "/has-values/kind-of", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "kind-of@4.0.0", - "name": "kind-of", - "escapedName": "kind-of", - "rawSpec": "4.0.0", - "saveSpec": null, - "fetchSpec": "4.0.0" - }, - "_requiredBy": [ - "/has-values" - ], - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "_spec": "4.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/kind-of/issues" - }, - "contributors": [ - { - "name": "David Fox-Powell", - "url": "https://dtothefp.github.io/me" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Ken Sheedlo", - "url": "kensheedlo.com" - }, - { - "name": "laggingreflex", - "url": "https://github.com/laggingreflex" - }, - { - "name": "Miguel Mota", - "url": "https://miguelmota.com" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - } - ], - "dependencies": { - "is-buffer": "^1.1.5" - }, - "description": "Get the native type of a value.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "benchmarked": "^1.1.1", - "browserify": "^14.3.0", - "glob": "^7.1.1", - "gulp-format-md": "^0.1.12", - "mocha": "^3.4.1", - "type-of": "^2.0.1", - "typeof": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/kind-of", - "keywords": [ - "arguments", - "array", - "boolean", - "check", - "date", - "function", - "is", - "is-type", - "is-type-of", - "kind", - "kind-of", - "number", - "object", - "of", - "regexp", - "string", - "test", - "type", - "type-of", - "typeof", - "types" - ], - "license": "MIT", - "main": "index.js", - "name": "kind-of", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/kind-of.git" - }, - "scripts": { - "prepublish": "browserify -o browser.js -e index.js -s index --bare", - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-glob", - "is-number", - "is-primitive" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "verb" - ] - }, - "version": "4.0.0" -} diff --git a/node_modules/has-values/package.json b/node_modules/has-values/package.json deleted file mode 100644 index 731a63750..000000000 --- a/node_modules/has-values/package.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "_args": [ - [ - "has-values@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "has-values@1.0.0", - "_id": "has-values@1.0.0", - "_inBundle": false, - "_integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "_location": "/has-values", - "_phantomChildren": { - "is-buffer": "1.1.6" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "has-values@1.0.0", - "name": "has-values", - "escapedName": "has-values", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/has-value" - ], - "_resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/has-values/issues" - }, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "description": "Returns true if any values exist, false if empty. Works for booleans, functions, numbers, strings, nulls, objects and arrays. ", - "devDependencies": { - "gulp-format-md": "^0.1.12", - "mocha": "^3.4.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/has-values", - "keywords": [ - "array", - "boolean", - "empty", - "find", - "function", - "has", - "hasOwn", - "javascript", - "js", - "key", - "keys", - "node.js", - "null", - "number", - "object", - "properties", - "property", - "string", - "type", - "util", - "utilities", - "utility", - "value", - "values" - ], - "license": "MIT", - "main": "index.js", - "name": "has-values", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/has-values.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "has-value", - "kind-of", - "is-number", - "is-plain-object", - "isobject" - ] - }, - "reflinks": [ - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/helper-date/LICENSE b/node_modules/helper-date/LICENSE deleted file mode 100644 index 3f2eca18f..000000000 --- a/node_modules/helper-date/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/helper-date/README.md b/node_modules/helper-date/README.md deleted file mode 100644 index 4608a9255..000000000 --- a/node_modules/helper-date/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# helper-date [![NPM version](https://img.shields.io/npm/v/helper-date.svg?style=flat)](https://www.npmjs.com/package/helper-date) [![NPM monthly downloads](https://img.shields.io/npm/dm/helper-date.svg?style=flat)](https://npmjs.org/package/helper-date) [![NPM total downloads](https://img.shields.io/npm/dt/helper-date.svg?style=flat)](https://npmjs.org/package/helper-date) [![Linux Build Status](https://img.shields.io/travis/helpers/helper-date.svg?style=flat&label=Travis)](https://travis-ci.org/helpers/helper-date) - -> Format dates with date.js and moment.js. Uses date.js to parse human readable date phrases, and moment to format the rendered output. Should work with any Handlebars, Lo-Dash, underscore, or any template engine that allows helper functions to be registered. Also compatible with verb, assemble and Template. - -Follow this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), for updates on this project and others. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save helper-date -``` - -## Usage - -With Handlebars: - -```handlebars -{{date "5 years ago" "YYYY"}} -//=> 2010 -``` - -With Lo-Dash or Underscore: - -```js -<%= date("5 years ago", "YYYY") %> -//=> 2010 -``` - -With Verb (lo-dash, with special delimiters to avoid delimiter collision in markdown docs): - -```js -2012 -//=> 2010 -``` - -### [template](https://github.com/jonschlinkert/template) - -Register the helper for use with any template engine - -```js -template.helper('date', require('helper-date')); -``` - -### [assemble](https://github.com/assemble/assemble) - -To register the helper for use with [assemble](https://github.com/assemble/assemble) v0.6.0 and greater: - -```js -assemble.helper('date', require('helper-date')); -``` - -### [verb](https://github.com/verbose/verb) - -Register the helper for use with [verb](https://github.com/verbose/verb): - -```js -var verb = require('verb'); -verb.helper('date', require('helper-date')); - -verb.task('default', function() { - verb.src('.verb*.md') - .pipe(verb.dest('./')); -}); -``` - -### [handlebars](http://www.handlebarsjs.com/) - -```js -var handlebars = require('handlebars'); -handlebars.registerHelper('date', require('helper-date')); -``` -Usage - -```handlebars -{{date "5 years ago" "YYYY"}} -``` - -### [lodash](https://lodash.com/) or [underscore](http://underscorejs.org) - -```js -// as a mixin -_.mixin({date: dateHelper}); -_.template('<%= _.date("5 years ago", "YYYY") %>', {}); -//=> 2010 - -// passed on the context -_.template('<%= date("5 years ago", "YYYY") %>', {date: dateHelper}); -//=> 2010 - -// as an import -var settings = {imports: {date: dateHelper}}; -_.template('<%= date("5 years ago", "YYYY") %>', {}, settings); -//=> 2010 -``` - -## About - -### Related projects - -You might also be interested in these projects: - -* [handlebars-helper-moment](https://www.npmjs.com/package/handlebars-helper-moment): A helper to master time! Combining the powers of Assemble, Handlebars.js and Moment.js. This helper… [more](https://github.com/assemble/handlebars-helper-moment) | [homepage](https://github.com/assemble/handlebars-helper-moment "A helper to master time! Combining the powers of Assemble, Handlebars.js and Moment.js. This helper leverages Moment.js to provide ultimate control over manipulating time and dates in your templates.") -* [handlebars-helpers](https://www.npmjs.com/package/handlebars-helpers): More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate… [more](https://github.com/helpers/handlebars-helpers) | [homepage](https://github.com/helpers/handlebars-helpers "More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project.") -* [helper-dateformat](https://www.npmjs.com/package/helper-dateformat): Template helper for adding formatted dates using node-dateformat. Works with Handlebars, Lo-Dash, underscore, or any… [more](https://github.com/helpers/helper-dateformat) | [homepage](https://github.com/helpers/helper-dateformat "Template helper for adding formatted dates using node-dateformat. Works with Handlebars, Lo-Dash, underscore, or any template engine that supports helper functions. Also compatible with verb, assemble and Template.") -* [template-helpers](https://www.npmjs.com/package/template-helpers): Generic JavaScript helpers that can be used with any template engine. Handlebars, Lo-Dash, Underscore, or… [more](https://github.com/jonschlinkert/template-helpers) | [homepage](https://github.com/jonschlinkert/template-helpers "Generic JavaScript helpers that can be used with any template engine. Handlebars, Lo-Dash, Underscore, or any engine that supports helper functions.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 20 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [bradtaylorsf](https://github.com/bradtaylorsf) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on September 04, 2017._ \ No newline at end of file diff --git a/node_modules/helper-date/index.js b/node_modules/helper-date/index.js deleted file mode 100644 index bfa893cf1..000000000 --- a/node_modules/helper-date/index.js +++ /dev/null @@ -1,68 +0,0 @@ -'use strict'; - -var utils = require('handlebars-utils'); -var moment = require('moment'); -var date = require('date.js'); - -module.exports = function dateHelper(str, pattern, options) { - if (utils.isOptions(pattern)) { - options = pattern; - pattern = null; - } - - if (utils.isOptions(str)) { - options = str; - pattern = null; - str = null; - } - - // if no args are passed, return a formatted date - if (str == null && pattern == null) { - moment.locale('en'); - return moment().format('MMMM DD, YYYY'); - } - - var defaults = {lang: 'en', date: new Date(str)}; - var opts = utils.context(this, defaults, options); - - // set the language to use - moment.locale(opts.lang || opts.language); - - if (opts.datejs === false) { - return moment(new Date(str)).format(pattern); - } - - // if both args are strings, this could apply to either lib. - // so instead of doing magic we'll just ask the user to tell - // us if the args should be passed to date.js or moment. - if (typeof str === 'string' && typeof pattern === 'string') { - return moment(date(str)).format(pattern); - } - - // If handlebars, expose moment methods as hash properties - if (options && options.hash) { - if (options.context) { - options.hash = Object.assign({}, options.hash, options.context); - } - - var res = moment(str); - for (var key in options.hash) { - if (typeof res[key] === 'function') { - return res[key](options.hash[key]); - } else { - console.error('moment.js does not support "' + key + '"'); - } - } - } - - if (utils.isObject(str)) { - return moment(str).format(pattern); - } - - // if only a string is passed, assume it's a date pattern ('YYYY') - if (typeof str === 'string' && !pattern) { - return moment().format(str); - } - - return moment(str).format(pattern); -}; diff --git a/node_modules/helper-date/package.json b/node_modules/helper-date/package.json deleted file mode 100644 index 5c592091c..000000000 --- a/node_modules/helper-date/package.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "_from": "helper-date@^1.0.1", - "_id": "helper-date@1.0.1", - "_inBundle": false, - "_integrity": "sha512-wU3VOwwTJvGr/w5rZr3cprPHO+hIhlblTJHD6aFBrKLuNbf4lAmkawd2iK3c6NbJEvY7HAmDpqjOFSI5/+Ey2w==", - "_location": "/helper-date", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "helper-date@^1.0.1", - "name": "helper-date", - "escapedName": "helper-date", - "rawSpec": "^1.0.1", - "saveSpec": null, - "fetchSpec": "^1.0.1" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/helper-date/-/helper-date-1.0.1.tgz", - "_shasum": "12fedea3ad8e44a7ca4c4efb0ff4104a5120cffb", - "_spec": "helper-date@^1.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/helpers/helper-date/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Brad Taylor", - "url": "https://www.linkedin.com/in/bradtaylorsf" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - } - ], - "dependencies": { - "date.js": "^0.3.1", - "handlebars-utils": "^1.0.4", - "moment": "^2.18.1" - }, - "deprecated": false, - "description": "Format dates with date.js and moment.js. Uses date.js to parse human readable date phrases, and moment to format the rendered output. Should work with any Handlebars, Lo-Dash, underscore, or any template engine that allows helper functions to be registered. Also compatible with verb, assemble and Template.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "handlebars": "^4.0.10", - "lodash": "^4.17.4", - "mocha": "^3.5.0" - }, - "engines": { - "node": ">=4.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/helpers/helper-date", - "keywords": [ - "calendar", - "compile", - "dash", - "date", - "dateformat", - "dates", - "day", - "engine", - "format", - "handlebars", - "helper", - "helpers", - "lo-dash", - "lodash", - "moment", - "moment.js", - "month", - "months", - "parse", - "parser", - "render", - "template", - "templates", - "underscore", - "week", - "weekday", - "year", - "years" - ], - "license": "MIT", - "main": "index.js", - "name": "helper-date", - "repository": { - "type": "git", - "url": "git+https://github.com/helpers/helper-date.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "handlebars-helper-moment", - "handlebars-helpers", - "helper-dateformat", - "template-helpers" - ] - }, - "lint": { - "reflinks": true - }, - "reflinks": [ - "assemble", - "handlebars", - "lodash", - "template", - "underscore", - "verb" - ] - }, - "version": "1.0.1" -} diff --git a/node_modules/helper-markdown/LICENSE b/node_modules/helper-markdown/LICENSE deleted file mode 100644 index 943e71d05..000000000 --- a/node_modules/helper-markdown/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/helper-markdown/README.md b/node_modules/helper-markdown/README.md deleted file mode 100644 index 570cfedfd..000000000 --- a/node_modules/helper-markdown/README.md +++ /dev/null @@ -1,211 +0,0 @@ -# helper-markdown [![NPM version](https://img.shields.io/npm/v/helper-markdown.svg?style=flat)](https://www.npmjs.com/package/helper-markdown) [![NPM monthly downloads](https://img.shields.io/npm/dm/helper-markdown.svg?style=flat)](https://npmjs.org/package/helper-markdown) [![NPM total downloads](https://img.shields.io/npm/dt/helper-markdown.svg?style=flat)](https://npmjs.org/package/helper-markdown) [![Linux Build Status](https://img.shields.io/travis/helpers/helper-markdown.svg?style=flat&label=Travis)](https://travis-ci.org/helpers/helper-markdown) - -> Markdown template helper. Uses remarkable to render markdown in templates. Should work with Handlebars, Lo-Dash or any template engine that supports helper functions. - -- [Install](#install) -- [API](#api) -- [Usage examples](#usage-examples) -- [Register the helper](#register-the-helper) - * [templates](#templates) - * [assemble](#assemble) - * [verb](#verb) - * [handlebars](#handlebars) - * [lodash](#lodash) -- [About](#about) - -_(TOC generated by [verb](https://github.com/verbose/verb) using [markdown-toc](https://github.com/jonschlinkert/markdown-toc))_ - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save helper-markdown -``` - -## API - -```js -var markdown = require('helper'); -``` - -Returns a function that returns the helper, allowing an options object to be passed: - -```js -var hbs = require('handlebars'); -hbs.registerHelper('markdown', markdown([options])); -``` - -**Example** - -Pass a custom `highlight` function for syntax highlighting to [Remarkable][], the markdown renderer: - -```js -var hljs = require('highlight.js'); -var markdown = require('helper-markdown'); - -function highlight(code, lang) { - try { - try { - return hljs.highlight(lang, code).value; - } catch (err) { - if (!/Unknown language/i.test(err.message)) { - throw err; - } - return hljs.highlightAuto(code).value; - } - } catch (err) { - return code; - } -} - -hbs.registerHelper('markdown', markdown({ - highlight: highlight -})); -``` - -## Usage examples - -With Handlebars: - -```handlebars -
          -{{#markdown}} -# Heading - -> this is markdown - -foo bar baz -{{/markdown}} -
          -``` - -Results in: - -```html -

          Heading

          -
          -

          this is markdown

          -
          -

          foo bar baz

          -``` - -## Register the helper - -> This should work with any engine, here are a few examples - -### templates - -The `templates` library supports any templates engine supported by consolidate. To register the helper with [templates](https://github.com/jonschlinkert/templates): - -```js -var templates = require('templates'); -var app = templates(); - -app.helper('markdown', require('helper-markdown')); -``` - -### assemble - -To register the helper for use with [assemble](https://github.com/assemble/assemble) v0.6.0 and higher: - -```js -assemble.helper('markdown', require('helper-markdown')); -``` - -### verb - -Register the helper for use with [verb](https://github.com/verbose/verb): - -```js -var verb = require('verb'); -verb.helper('markdown', require('helper-markdown')); -``` - -### handlebars - -To register the helper with [handlebars](http://www.handlebarsjs.com/): - -```js -var handlebars = require('handlebars'); -handlebars.registerHelper('markdown', require('helper-markdown')); -``` - -### lodash - -To register the helper with [Lo-Dash][] or [underscore](http://underscorejs.org): - -```js -var markdown = require('helper-markdown'); - -// as a mixin -_.mixin({markdown: markdown}); -_.template('<%= _.markdown("# heading") %>', {}); -//=> '

          heading

          \n' - -// passed on the context -_.template('<%= markdown("# heading") %>', {markdown: markdown}); -//=> '

          heading

          \n' - -// as an import -var settings = {imports: {markdown: markdown}}; -_.template('<%= markdown("# heading") %>', {}, settings); -//=> '

          heading

          \n' -``` - -## About - -### Related projects - -* [assemble](https://www.npmjs.com/package/assemble): Get the rocks out of your socks! Assemble makes you fast at creating web projects… [more](https://github.com/assemble/assemble) | [homepage](https://github.com/assemble/assemble "Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit") -* [handlebars](https://www.npmjs.com/package/handlebars): Handlebars provides the power necessary to let you build semantic templates effectively with no frustration | [homepage](http://www.handlebarsjs.com/ "Handlebars provides the power necessary to let you build semantic templates effectively with no frustration") -* [lodash](https://www.npmjs.com/package/lodash): Lodash modular utilities. | [homepage](https://lodash.com/ "Lodash modular utilities.") -* [template](https://www.npmjs.com/package/template): Render templates using any engine. Supports, layouts, pages, partials and custom template types. Use template… [more](https://github.com/jonschlinkert/template) | [homepage](https://github.com/jonschlinkert/template "Render templates using any engine. Supports, layouts, pages, partials and custom template types. Use template helpers, middleware, routes, loaders, and lots more. Powers assemble, verb and other node.js apps.") -* [underscore](https://www.npmjs.com/package/underscore): JavaScript's functional programming helper library. | [homepage](http://underscorejs.org "JavaScript's functional programming helper library.") -* [verb](https://www.npmjs.com/package/verb): Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… [more](https://github.com/verbose/verb) | [homepage](https://github.com/verbose/verb "Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used on hundreds of projects of all sizes to generate everything from API docs to readmes.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 14 | [jonschlinkert](https://github.com/jonschlinkert) | -| 5 | [doowb](https://github.com/doowb) | -| 2 | [almeidap](https://github.com/almeidap) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 08, 2017._ \ No newline at end of file diff --git a/node_modules/helper-markdown/index.js b/node_modules/helper-markdown/index.js deleted file mode 100644 index 0b6cc2c18..000000000 --- a/node_modules/helper-markdown/index.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -var hljs = require('highlight.js'); -var utils = require('handlebars-utils'); -var Remarkable = require('remarkable'); -var defaults = { html: true, breaks: true, highlight: highlight }; - -module.exports = function(config) { - if (typeof config === 'string' || utils.isOptions(config)) { - return markdown.apply(defaults, arguments); - } - - function markdown(str, locals, options) { - if (typeof str !== 'string') { - options = locals; - locals = str; - str = true; - } - - if (utils.isOptions(locals)) { - options = locals; - locals = {}; - } - - var ctx = utils.context(this, locals, options); - var opts = utils.options(this, locals, options); - opts = Object.assign({}, defaults, config, opts); - - if (opts.hasOwnProperty('lang')) { - opts.langPrefix = opts.lang; - } - - var md = new Remarkable(opts); - var val = utils.value(str, ctx, options); - return md.render(val); - } - return markdown; -}; - -function highlight(code, lang) { - try { - try { - return hljs.highlight(lang, code).value; - } catch (err) { - if (!/Unknown language/i.test(err.message)) { - throw err; - } - return hljs.highlightAuto(code).value; - } - } catch (err) { - return code; - } -} diff --git a/node_modules/helper-markdown/package.json b/node_modules/helper-markdown/package.json deleted file mode 100644 index 67e324c0c..000000000 --- a/node_modules/helper-markdown/package.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "_from": "helper-markdown@^1.0.0", - "_id": "helper-markdown@1.0.0", - "_inBundle": false, - "_integrity": "sha512-AnDqMS4ejkQK0MXze7pA9TM3pu01ZY+XXsES6gEE0RmCGk5/NIfvTn0NmItfyDOjRAzyo9z6X7YHbHX4PzIvOA==", - "_location": "/helper-markdown", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "helper-markdown@^1.0.0", - "name": "helper-markdown", - "escapedName": "helper-markdown", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/helper-markdown/-/helper-markdown-1.0.0.tgz", - "_shasum": "ee7e9fc554675007d37eb90f7853b13ce74f3e10", - "_spec": "helper-markdown@^1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/helpers/helper-markdown/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Pedro De almeida", - "url": "www.almeida.ch" - } - ], - "dependencies": { - "handlebars-utils": "^1.0.2", - "highlight.js": "^9.12.0", - "remarkable": "^1.7.1" - }, - "deprecated": false, - "description": "Markdown template helper. Uses remarkable to render markdown in templates. Should work with Handlebars, Lo-Dash or any template engine that supports helper functions.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "handlebars": "^4.0.10", - "lodash": "^4.17.4", - "mocha": "^3.4.2" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/helpers/helper-markdown", - "keywords": [ - "block", - "compile", - "engine", - "expression", - "function", - "handlebars", - "helper", - "helpers", - "lodash", - "markdown", - "md", - "remarkable", - "render", - "template", - "templates" - ], - "license": "MIT", - "main": "index.js", - "name": "helper-markdown", - "repository": { - "type": "git", - "url": "git+https://github.com/helpers/helper-markdown.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": true, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "assemble", - "handlebars", - "lodash", - "template", - "underscore", - "verb" - ] - }, - "reflinks": [ - "assemble", - "handlebars", - "templates", - "underscore", - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/helper-md/LICENSE b/node_modules/helper-md/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/helper-md/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/helper-md/README.md b/node_modules/helper-md/README.md deleted file mode 100644 index a1c92293c..000000000 --- a/node_modules/helper-md/README.md +++ /dev/null @@ -1,106 +0,0 @@ -# helper-md [![NPM version](https://img.shields.io/npm/v/helper-md.svg?style=flat)](https://www.npmjs.com/package/helper-md) [![NPM monthly downloads](https://img.shields.io/npm/dm/helper-md.svg?style=flat)](https://npmjs.org/package/helper-md) [![NPM total downloads](https://img.shields.io/npm/dt/helper-md.svg?style=flat)](https://npmjs.org/package/helper-md) [![Linux Build Status](https://img.shields.io/travis/helpers/helper-md.svg?style=flat&label=Travis)](https://travis-ci.org/helpers/helper-md) - -> Markdown template helper. Uses remarkable to render markdown in templates. Should work with Handlebars, Lo-Dash or any template engine that supports helper functions. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save helper-md -``` - -## Usage examples - -**Views** - -With [assemble](https://github.com/assemble/assemble): - -```js -var assemble = require('assemble'); -var app = assemble(); - -// create a collection (this is already done in assemble) -app.create('partials', {viewType: 'partial'}); - -// load a template onto the collection -app.partial('foo', {content: '# {{title}}', title: 'Heading'}); -``` - -Use the helper, specify the name of the view you want to convert to HTML - -```handlebars -{{md "foo"}} -``` - -**Files** - -Or, you can specify a filepath to include content from external files. - -```handlebars -{{md "posts/foo.md"}} -``` - -Both result in something like: - -```html -

          Heading

          -``` - -## About - -### Related projects - -* [assemble](https://www.npmjs.com/package/assemble): Get the rocks out of your socks! Assemble makes you fast at creating web projects… [more](https://github.com/assemble/assemble) | [homepage](https://github.com/assemble/assemble "Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit") -* [handlebars-helpers](https://www.npmjs.com/package/handlebars-helpers): More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate… [more](https://github.com/assemble/handlebars-helpers) | [homepage](https://github.com/assemble/handlebars-helpers "More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project.") -* [helper-markdown](https://www.npmjs.com/package/helper-markdown): Markdown template helper. Uses remarkable to render markdown in templates. Should work with Handlebars, Lo-Dash… [more](https://github.com/helpers/helper-markdown) | [homepage](https://github.com/helpers/helper-markdown "Markdown template helper. Uses remarkable to render markdown in templates. Should work with Handlebars, Lo-Dash or any template engine that supports helper functions.") -* [templates](https://www.npmjs.com/package/templates): System for creating and managing template collections, and rendering templates with any node.js template engine… [more](https://github.com/jonschlinkert/templates) | [homepage](https://github.com/jonschlinkert/templates "System for creating and managing template collections, and rendering templates with any node.js template engine. Can be used as the basis for creating a static site generator or blog framework.") -* [verb](https://www.npmjs.com/package/verb): Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… [more](https://github.com/verbose/verb) | [homepage](https://github.com/verbose/verb "Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used on hundreds of projects of all sizes to generate everything from API docs to readmes.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 14 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [jonjhiggins](https://github.com/jonjhiggins) | -| 1 | [ScottPolhemus](https://github.com/ScottPolhemus) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.4.3, on March 31, 2017._ \ No newline at end of file diff --git a/node_modules/helper-md/index.js b/node_modules/helper-md/index.js deleted file mode 100644 index 304c212a9..000000000 --- a/node_modules/helper-md/index.js +++ /dev/null @@ -1,117 +0,0 @@ -/*! - * helper-markdown - * - * Copyright (c) 2014 Jon Schlinkert, contributors. - * Licensed under the MIT license. - */ - -'use strict'; - -var fs = require('fs'); -var path = require('path'); -var Remarkable = require('remarkable'); -var extend = require('extend-shallow'); -var exists = require('fs-exists-sync'); -var ent = require('ent'); - -/** - * Expose `md` helper - */ - -var helper = module.exports = function(name, options, cb) { - if (typeof options === 'function') { - cb = options; - options = {}; - } - - if (typeof cb !== 'function') { - return helper.sync.apply(this, arguments); - } - if (typeof this === 'undefined' || typeof this.app === 'undefined') { - throw new Error('md async helper expects `app` to be exposed on the context'); - } - - var opts = extend({cwd: process.cwd()}, this.options, options); - opts = extend({}, opts, opts.hash); - var md = markdown(opts); - - var filepath = path.resolve(opts.cwd, name); - var view; - var str = ''; - - if (exists(filepath)) { - // create a collection to ensure middleware is consistent - this.app.create('mdfiles'); - str = fs.readFileSync(filepath, 'utf8'); - view = this.app.mdfile(filepath, {path: filepath, content: str}); - } else { - view = this.app.find(name); - } - - if (typeof view === 'undefined') { - cb(null, ''); - return; - } - - view.content = ent.decode(md.render(view.content)); - this.app.render(view, this.context, function(err, res) { - if (err) return cb(err); - cb(null, res.content); - }); -}; - -helper.sync = function(name, options) { - var ctx = this || {}; - var app = ctx.app || {}; - - var opts = extend({cwd: process.cwd()}, ctx.options, options); - opts = extend({}, opts, opts.hash); - var md = markdown(opts); - - var filepath = path.resolve(opts.cwd, name); - var view; - var html = ''; - var str = ''; - - if (exists(filepath)) { - str = fs.readFileSync(filepath, 'utf8'); - html = ent.decode(md.render(str)); - } else if (app.views) { - view = app.find(name); - if (view) { - html = view.content = ent.decode(md.render(view.content)); - } - } - - if (view && typeof view.compile === 'function') { - view.compile(opts); - var data = ctx.cache ? ctx.cache.data : {}; - ctx = extend({}, data, view.data); - return view.fn(ctx); - } - - if (typeof this.compile === 'function') { - var fn = this.compile(html); - return fn(this); - } - return html; -}; - -/** - * Shared settings for remarkable - * - * @param {Object} `options` - * @return {Object} - * @api private - */ - -function markdown(options) { - return new Remarkable(extend({ - breaks: false, - html: true, - langPrefix: 'lang-', - linkify: true, - typographer: false, - xhtmlOut: false - }, options)); -} diff --git a/node_modules/helper-md/node_modules/extend-shallow/LICENSE b/node_modules/helper-md/node_modules/extend-shallow/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/helper-md/node_modules/extend-shallow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/helper-md/node_modules/extend-shallow/README.md b/node_modules/helper-md/node_modules/extend-shallow/README.md deleted file mode 100644 index cdc45d4ff..000000000 --- a/node_modules/helper-md/node_modules/extend-shallow/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# extend-shallow [![NPM version](https://badge.fury.io/js/extend-shallow.svg)](http://badge.fury.io/js/extend-shallow) [![Build Status](https://travis-ci.org/jonschlinkert/extend-shallow.svg)](https://travis-ci.org/jonschlinkert/extend-shallow) - -> Extend an object with the properties of additional objects. node.js/javascript util. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i extend-shallow --save -``` - -## Usage - -```js -var extend = require('extend-shallow'); - -extend({a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -Pass an empty object to shallow clone: - -```js -var obj = {}; -extend(obj, {a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -## Related - -* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. -* [for-own](https://github.com/jonschlinkert/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) -* [for-in](https://github.com/jonschlinkert/for-in): Iterate over the own and inherited enumerable properties of an objecte, and return an object… [more](https://github.com/jonschlinkert/for-in) -* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. -* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. -* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 29, 2015._ \ No newline at end of file diff --git a/node_modules/helper-md/node_modules/extend-shallow/index.js b/node_modules/helper-md/node_modules/extend-shallow/index.js deleted file mode 100644 index 92a067fcc..000000000 --- a/node_modules/helper-md/node_modules/extend-shallow/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var isObject = require('is-extendable'); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} diff --git a/node_modules/helper-md/node_modules/extend-shallow/package.json b/node_modules/helper-md/node_modules/extend-shallow/package.json deleted file mode 100644 index bb206c90b..000000000 --- a/node_modules/helper-md/node_modules/extend-shallow/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_from": "extend-shallow@^2.0.1", - "_id": "extend-shallow@2.0.1", - "_inBundle": false, - "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "_location": "/helper-md/extend-shallow", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "extend-shallow@^2.0.1", - "name": "extend-shallow", - "escapedName": "extend-shallow", - "rawSpec": "^2.0.1", - "saveSpec": null, - "fetchSpec": "^2.0.1" - }, - "_requiredBy": [ - "/helper-md" - ], - "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "_shasum": "51af7d614ad9a9f610ea1bafbb989d6b1c56890f", - "_spec": "extend-shallow@^2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\helper-md", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/extend-shallow/issues" - }, - "bundleDependencies": false, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "deprecated": false, - "description": "Extend an object with the properties of additional objects. node.js/javascript util.", - "devDependencies": { - "array-slice": "^0.2.3", - "benchmarked": "^0.1.4", - "chalk": "^1.0.0", - "for-own": "^0.1.3", - "glob": "^5.0.12", - "is-plain-object": "^2.0.1", - "kind-of": "^2.0.0", - "minimist": "^1.1.1", - "mocha": "^2.2.5", - "should": "^7.0.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/extend-shallow", - "keywords": [ - "assign", - "extend", - "javascript", - "js", - "keys", - "merge", - "obj", - "object", - "prop", - "properties", - "property", - "props", - "shallow", - "util", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "extend-shallow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/extend-shallow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.1" -} diff --git a/node_modules/helper-md/package.json b/node_modules/helper-md/package.json deleted file mode 100644 index 9b7b009ad..000000000 --- a/node_modules/helper-md/package.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "_from": "helper-md@^0.2.2", - "_id": "helper-md@0.2.2", - "_inBundle": false, - "_integrity": "sha1-wfWdflW7riM2L9ig6XFgeuxp1B8=", - "_location": "/helper-md", - "_phantomChildren": { - "is-extendable": "0.1.1" - }, - "_requested": { - "type": "range", - "registry": true, - "raw": "helper-md@^0.2.2", - "name": "helper-md", - "escapedName": "helper-md", - "rawSpec": "^0.2.2", - "saveSpec": null, - "fetchSpec": "^0.2.2" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/helper-md/-/helper-md-0.2.2.tgz", - "_shasum": "c1f59d7e55bbae23362fd8a0e971607aec69d41f", - "_spec": "helper-md@^0.2.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/helpers/helper-md/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Jon Higgins", - "url": "http://www.jonhiggins.co.uk" - }, - { - "name": "Jon Schlinkert", - "email": "jon.schlinkert@sellside.com", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Scott Polhemus", - "email": "scott@polhem.us", - "url": "http://polhem.us" - } - ], - "dependencies": { - "ent": "^2.2.0", - "extend-shallow": "^2.0.1", - "fs-exists-sync": "^0.1.0", - "remarkable": "^1.6.2" - }, - "deprecated": false, - "description": "Markdown template helper. Uses remarkable to render markdown in templates. Should work with Handlebars, Lo-Dash or any template engine that supports helper functions.", - "devDependencies": { - "engine-base": "^0.1.2", - "gulp-format-md": "^0.1.9", - "handlebars": "^4.0.5", - "highlight.js": "^9.3.0", - "lodash": "^4.12.0", - "mocha": "^2.4.5", - "templates": "^0.17.2" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/helpers/helper-md", - "keywords": [ - "block", - "engine", - "expression", - "function", - "handlebars", - "helper", - "helpers", - "lodash", - "markdown", - "md", - "remarkable", - "template" - ], - "license": "MIT", - "main": "index.js", - "name": "helper-md", - "repository": { - "type": "git", - "url": "git+https://github.com/helpers/helper-md.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "data": { - "nickname": "md" - }, - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "assemble", - "handlebars-helpers", - "helper-markdown", - "templates", - "verb" - ] - }, - "reflinks": [ - "assemble", - "generator-verb", - "handlebars", - "handlebars-helpers", - "lodash", - "templates", - "underscore", - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.2.2" -} diff --git a/node_modules/highlight.js/LICENSE b/node_modules/highlight.js/LICENSE deleted file mode 100644 index 2250cc7ec..000000000 --- a/node_modules/highlight.js/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2006, Ivan Sagalaev. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/highlight.js/README.md b/node_modules/highlight.js/README.md deleted file mode 100644 index daa854acd..000000000 --- a/node_modules/highlight.js/README.md +++ /dev/null @@ -1,426 +0,0 @@ -# Highlight.js - -[![this version](https://badgen.net/badge/this%20version/v9.18.4/red)](https://github.com/highlightjs/highlight.js/blob/master/VERSION_10_UPGRADE.md) -[![supported](https://badgen.net/badge/supported/no/red)](https://github.com/highlightjs/highlight.js/blob/master/VERSION_10_UPGRADE.md) -[![vulnerabilities](https://badgen.net/badge/vulnerabilities/possible/red)](https://github.com/highlightjs/highlight.js/blob/master/SECURITY.md) -[![latest version](https://badgen.net/npm/v/highlight.js?label=latest)](https://www.npmjs.com/package/highlight.js) -[![beta](https://badgen.net/npm/v/highlight.js/beta)](https://www.npmjs.com/package/highlight.js) -[![slack](https://badgen.net/badge/icon/slack?icon=slack&label&color=pink)](https://join.slack.com/t/highlightjs/shared_invite/zt-jatdlkw4-h3LdjU5rC23t7aQ6zqoxzw) - ---- - -### :warning: :warning: Important: Version 9 is no longer supported. :warning: :warning: - -Version 9 has reached end-of-support and will receive no future updates. -It may include unpatched security vulnerabiites. Please upgrade to version 10. - -*The last release was 9.18.4 on November 18, 2020.* - -Please see [VERSION_10_UPGRADE.md](https://github.com/highlightjs/highlight.js/blob/master/VERSION_10_UPGRADE.md) and perhaps [SECURITY.md](https://github.com/highlightjs/highlight.js/blob/master/SECURITY.md). - ---- - -Highlight.js is a syntax highlighter written in JavaScript. It works in -the browser as well as on the server. It works with pretty much any -markup, doesn’t depend on any framework, and has automatic language -detection. - - -## Getting Started - -The bare minimum for using highlight.js on a web page is linking to the -library along with one of the styles and calling -[`initHighlightingOnLoad`][1]: - -```html - - - -``` - -This will find and highlight code inside of `
          ` tags; it tries
          -to detect the language automatically. If automatic detection doesn’t
          -work for you, you can specify the language in the `class` attribute:
          -
          -```html
          -
          ...
          -``` - -Classes may also be prefixed with either `language-` or `lang-`. - -```html -
          ...
          -``` - -### Plaintext and Disabling Highlighting - -To style arbitrary text like code, but without any highlighting, use the -`plaintext` class: - -```html -
          ...
          -``` - -To disable highlighting of a tag completely, use the `nohighlight` class: - -```html -
          ...
          -``` - -### Supported Languages - -The table below shows the full list of supported languages (and corresponding classes) that are bundled with the library. Note: Which languages are available may depend on how you've built or included the library in your app. See [Getting the Library](#getting-the-library) below. - -
          -Reveal the full list of languages... - -| Language | Classes | Package | -| :-----------------------| :--------------------- | :------ | -| 1C | 1c | | -| ABNF | abnf | | -| Access logs | accesslog | | -| Ada | ada | | -| ARM assembler | armasm, arm | | -| AVR assembler | avrasm | | -| ActionScript | actionscript, as | | -| Alan | alan, i | [highlightjs-alan](https://github.com/highlightjs/highlightjs-alan) | -| AngelScript | angelscript, asc | | -| Apache | apache, apacheconf | | -| AppleScript | applescript, osascript | | -| Arcade | arcade | | -| AsciiDoc | asciidoc, adoc | | -| AspectJ | aspectj | | -| AutoHotkey | autohotkey | | -| AutoIt | autoit | | -| Awk | awk, mawk, nawk, gawk | | -| Axapta | axapta | | -| Bash | bash, sh, zsh | | -| Basic | basic | | -| BNF | bnf | | -| Brainfuck | brainfuck, bf | | -| C# | cs, csharp | | -| C++ | cpp, c, cc, h, c++, h++, hpp | | -| C/AL | cal | | -| Cache Object Script | cos, cls | | -| CMake | cmake, cmake.in | | -| Coq | coq | | -| CSP | csp | | -| CSS | css | | -| Cap’n Proto | capnproto, capnp | | -| Clojure | clojure, clj | | -| CoffeeScript | coffeescript, coffee, cson, iced | | -| Crmsh | crmsh, crm, pcmk | | -| Crystal | crystal, cr | | -| Cypher (Neo4j) | cypher | [highlightjs-cypher](https://github.com/highlightjs/highlightjs-cypher) | -| D | d | | -| DNS Zone file | dns, zone, bind | | -| DOS | dos, bat, cmd | | -| Dart | dart | | -| Delphi | delphi, dpr, dfm, pas, pascal, freepascal, lazarus, lpr, lfm | | -| Diff | diff, patch | | -| Django | django, jinja | | -| Dockerfile | dockerfile, docker | | -| dsconfig | dsconfig | | -| DTS (Device Tree) | dts | | -| Dust | dust, dst | | -| Dylan | dylan | [highlight-dylan](https://github.com/highlightjs/highlight-dylan) | -| EBNF | ebnf | | -| Elixir | elixir | | -| Elm | elm | | -| Erlang | erlang, erl | | -| Excel | excel, xls, xlsx | | -| Extempore | extempore, xtlang, xtm | [highlightjs-xtlang](https://github.com/highlightjs/highlightjs-xtlang) | -| F# | fsharp, fs | | -| FIX | fix | | -| Fortran | fortran, f90, f95 | | -| G-Code | gcode, nc | | -| Gams | gams, gms | | -| GAUSS | gauss, gss | | -| GDScript | godot, gdscript | [highlightjs-gdscript](https://github.com/highlightjs/highlightjs-gdscript) | -| Gherkin | gherkin | | -| GN for Ninja | gn, gni | [highlightjs-GN](https://github.com/highlightjs/highlightjs-GN/blob/master/gn.js) | -| Go | go, golang | | -| Grammatical Framework | gf | [highlightjs-gf](https://github.com/johnjcamilleri/highlightjs-gf) | -| Golo | golo, gololang | | -| Gradle | gradle | | -| Groovy | groovy | | -| HTML, XML | xml, html, xhtml, rss, atom, xjb, xsd, xsl, plist, svg | | -| HTTP | http, https | | -| Haml | haml | | -| Handlebars | handlebars, hbs, html.hbs, html.handlebars | | -| Haskell | haskell, hs | | -| Haxe | haxe, hx | | -| Hy | hy, hylang | | -| Ini, TOML | ini, toml | | -| Inform7 | inform7, i7 | | -| IRPF90 | irpf90 | | -| JSON | json | | -| Java | java, jsp | | -| JavaScript | javascript, js, jsx | | -| Kotlin | kotlin, kt | | -| Leaf | leaf | | -| Lasso | lasso, ls, lassoscript | | -| Less | less | | -| LDIF | ldif | | -| Lisp | lisp | | -| LiveCode Server | livecodeserver | | -| LiveScript | livescript, ls | | -| Lua | lua | | -| Makefile | makefile, mk, mak | | -| Markdown | markdown, md, mkdown, mkd | | -| Mathematica | mathematica, mma, wl | | -| Matlab | matlab | | -| Maxima | maxima | | -| Maya Embedded Language | mel | | -| Mercury | mercury | | -| mIRC Scripting Language | mirc, mrc | [highlightjs-mirc](https://github.com/highlightjs/highlightjs-mirc) | -| Mizar | mizar | | -| Mojolicious | mojolicious | | -| Monkey | monkey | | -| Moonscript | moonscript, moon | | -| N1QL | n1ql | | -| NSIS | nsis | | -| Nginx | nginx, nginxconf | | -| Nimrod | nimrod, nim | | -| Nix | nix | | -| OCaml | ocaml, ml | | -| Objective C | objectivec, mm, objc, obj-c | | -| OpenGL Shading Language | glsl | | -| OpenSCAD | openscad, scad | | -| Oracle Rules Language | ruleslanguage | | -| Oxygene | oxygene | | -| PF | pf, pf.conf | | -| PHP | php, php3, php4, php5, php6, php7 | | -| Parser3 | parser3 | | -| Perl | perl, pl, pm | | -| Plaintext: no highlight | plaintext | | -| Pony | pony | | -| PostgreSQL & PL/pgSQL | pgsql, postgres, postgresql | | -| PowerShell | powershell, ps, ps1 | | -| Processing | processing | | -| Prolog | prolog | | -| Properties | properties | | -| Protocol Buffers | protobuf | | -| Puppet | puppet, pp | | -| Python | python, py, gyp | | -| Python profiler results | profile | | -| Q | k, kdb | | -| QML | qml | | -| R | r | | -| Razor CSHTML | cshtml, razor, razor-cshtml | [highlightjs-cshtml-razor](https://github.com/highlightjs/highlightjs-cshtml-razor) | -| ReasonML | reasonml, re | | -| RenderMan RIB | rib | | -| RenderMan RSL | rsl | | -| Roboconf | graph, instances | | -| Robot Framework | robot, rf | [highlightjs-robot](https://github.com/highlightjs/highlightjs-robot) | -| RPM spec files | rpm-specfile, rpm, spec, rpm-spec, specfile | [highlightjs-rpm-specfile](https://github.com/highlightjs/highlightjs-rpm-specfile) | -| Ruby | ruby, rb, gemspec, podspec, thor, irb | | -| Rust | rust, rs | | -| SAS | SAS, sas | | -| SCSS | scss | | -| SQL | sql | | -| STEP Part 21 | p21, step, stp | | -| Scala | scala | | -| Scheme | scheme | | -| Scilab | scilab, sci | | -| Shape Expressions | shexc | [highlightjs-shexc](https://github.com/highlightjs/highlightjs-shexc) | -| Shell | shell, console | | -| Smali | smali | | -| Smalltalk | smalltalk, st | | -| Solidity | solidity, sol | [highlightjs-solidity](https://github.com/highlightjs/highlightjs-solidity) | -| Stan | stan, stanfuncs | | -| Stata | stata | | -| Structured Text | iecst, scl, stl, structured-text | [highlightjs-structured-text](https://github.com/highlightjs/highlightjs-structured-text) | -| Stylus | stylus, styl | | -| SubUnit | subunit | | -| Supercollider | supercollider, sc | [highlightjs-supercollider](https://github.com/highlightjs/highlightjs-supercollider) | -| Swift | swift | | -| Tcl | tcl, tk | | -| Terraform (HCL) | terraform, tf, hcl | [highlightjs-terraform](https://github.com/highlightjs/highlightjs-terraform) | -| Test Anything Protocol | tap | | -| TeX | tex | | -| Thrift | thrift | | -| TP | tp | | -| Twig | twig, craftcms | | -| TypeScript | typescript, ts | | -| VB.Net | vbnet, vb | | -| VBScript | vbscript, vbs | | -| VHDL | vhdl | | -| Vala | vala | | -| Verilog | verilog, v | | -| Vim Script | vim | | -| x86 Assembly | x86asm | | -| XL | xl, tao | | -| XQuery | xquery, xpath, xq | | -| YAML | yml, yaml | | -| Zephir | zephir, zep | | - -Languages with the specified package name are defined in separate repositories -and not included in `highlight.pack.js`. -
          - - -## Custom Initialization - -When you need a bit more control over the initialization of -highlight.js, you can use the [`highlightBlock`][3] and [`configure`][4] -functions. This allows you to control *what* to highlight and *when*. - -Here’s an equivalent way to calling [`initHighlightingOnLoad`][1] using -vanilla JS: - -```js -document.addEventListener('DOMContentLoaded', (event) => { - document.querySelectorAll('pre code').forEach((block) => { - hljs.highlightBlock(block); - }); -}); -``` - -You can use any tags instead of `
          ` to mark up your code. If
          -you don't use a container that preserves line breaks you will need to
          -configure highlight.js to use the `
          ` tag: - -```js -hljs.configure({useBR: true}); - -document.querySelectorAll('div.code').forEach((block) => { - hljs.highlightBlock(block); -}); -``` - -For other options refer to the documentation for [`configure`][4]. - - -## Web Workers - -You can run highlighting inside a web worker to avoid freezing the browser -window while dealing with very big chunks of code. - -In your main script: - -```js -addEventListener('load', () => { - const code = document.querySelector('#code'); - const worker = new Worker('worker.js'); - worker.onmessage = (event) => { code.innerHTML = event.data; } - worker.postMessage(code.textContent); -}); -``` - -In worker.js: - -```js -onmessage = (event) => { - importScripts('/highlight.pack.js'); - const result = self.hljs.highlightAuto(event.data); - postMessage(result.value); -}; -``` - -## Node.js - -You can use highlight.js with node to highlight content before sending it to the browser. -Make sure to use the `.value` property to get the formatted html. -For more info about the returned object refer to the api docs https://highlightjs.readthedocs.io/en/latest/api.html - - -```js -// require the highlight.js library including all languages -const hljs = require('./highlight.js'); -const highlightedCode = hljs.highlightAuto('Hello World!').value -``` - -```js -// require the highlight.js library without languages -const hljs = require("highlight.js/lib/highlight.js"); -// separately require languages -hljs.registerLanguage('html', require('highlight.js/lib/languages/html')); -hljs.registerLanguage('sql', require('highlight.js/lib/languages/sql')); -// highlight with providing the language -const highlightedCode = hljs.highlight('html', 'Hello World!').value -``` - -## Getting the Library - -You can get highlight.js as a hosted, or custom-build, browser script or -as a server module. Right out of the box the browser script supports -both AMD and CommonJS, so if you wish you can use RequireJS or -Browserify without having to build from source. The server module also -works perfectly fine with Browserify, but there is the option to use a -build specific to browsers rather than something meant for a server. -Head over to the [download page][5] for all the options. - -**Don't link to GitHub directly.** The library is not supposed to work straight -from the source, it requires building. If none of the pre-packaged options -work for you refer to the [building documentation][6]. - -**The CDN-hosted package doesn't have all the languages.** Otherwise it'd be -too big. If you don't see the language you need in the ["Common" section][5], -it can be added manually: - -```html - -``` - -**On Almond.** You need to use the optimizer to give the module a name. For -example: - -```bash -r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js -``` - - -### CommonJS - -You can import Highlight.js as a CommonJS-module: - -```bash -npm install highlight.js --save -``` - -In your application: - -```js -import hljs from 'highlight.js'; -``` - -The default import imports all languages! Therefore it is likely to be more efficient to import only the library and the languages you need: - -```js -import hljs from 'highlight.js/lib/highlight'; -import javascript from 'highlight.js/lib/languages/javascript'; -hljs.registerLanguage('javascript', javascript); -``` - -To set the syntax highlighting style, if your build tool processes CSS from your JavaScript entry point, you can import the stylesheet directly into your CommonJS-module: - -```js -import hljs from 'highlight.js/lib/highlight'; -import 'highlight.js/styles/github.css'; -``` - -## License - -Highlight.js is released under the BSD License. See [LICENSE][7] file -for details. - -## Links - -The official site for the library is at . - -Further in-depth documentation for the API and other topics is at -. - -Authors and contributors are listed in the [AUTHORS.txt][8] file. - -[1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload -[2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html -[3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block -[4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options -[5]: https://highlightjs.org/download/ -[6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html -[7]: https://github.com/highlightjs/highlight.js/blob/master/LICENSE -[8]: https://github.com/highlightjs/highlight.js/blob/master/AUTHORS.txt diff --git a/node_modules/highlight.js/deprecated.js b/node_modules/highlight.js/deprecated.js deleted file mode 100644 index 7746087b1..000000000 --- a/node_modules/highlight.js/deprecated.js +++ /dev/null @@ -1,26 +0,0 @@ -Reset = "\x1b[0m" -FgRed = "\x1b[31m" -FgWhite = "\x1b[37m" -FgWhite = "\x1b[37m" -Bright = "\x1b[1m" -FgBlue = "\x1b[34m" -BgRed = "\x1b[41m" - -DEPRECATION = `${BgRed + FgWhite}-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*${Reset} -${Bright}${FgWhite} - Verion 9 of Highlight.js has reached EOL. It will no longer - be supported or receive security updates in the future. - Please upgrade to version 10 or encourage your indirect - dependencies to do so. - - For more info: - ${FgBlue} - https://github.com/highlightjs/highlight.js/issues/2877 - https://github.com/highlightjs/highlight.js/blob/master/VERSION_10_UPGRADE.md - ${BgRed + FgWhite} --*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*${Reset} -`.trim() - -if (!process.env["HLJS_HIDE_UPGRADE_WARNING"]) { - console.log(DEPRECATION) -} diff --git a/node_modules/highlight.js/docs/api.rst b/node_modules/highlight.js/docs/api.rst deleted file mode 100644 index aaa0588b9..000000000 --- a/node_modules/highlight.js/docs/api.rst +++ /dev/null @@ -1,151 +0,0 @@ -Library API -=========== - -Highlight.js exports a few functions as methods of the ``hljs`` object. - - -``highlight(languageName, code, ignore_illegals, continuation)`` ---------------------------------------------------------- - -Core highlighting function. -Accepts a language name, or an alias, and a string with the code to highlight. -The ``ignore_illegals`` parameter, when present and evaluates to a true value, -forces highlighting to finish even in case of detecting illegal syntax for the -language instead of throwing an exception. -The ``continuation`` is an optional mode stack representing unfinished parsing. -When present, the function will restart parsing from this state instead of -initializing a new one. This is used internally for `sublanguage` support. - -Note: `continuation` is NOT intended to support line-by-line highlighting -because there is no requirement that a grammar handle linebreaks in any special -way. It's quite possible for a grammar to have a single mode/regex that matches -MANY lines at once. This is not discouraged and entirely up to the grammar. - -Returns an object with the following properties: - -* ``language``: language name, same as the name passed in ``languageName``, returned for consistency with ``highlightAuto`` -* ``relevance``: integer value representing the relevance score -* ``value``: HTML string with highlighting markup -* ``top``: top of the current mode stack -* ``illegal``: boolean representing whether any illegal matches were found - - -``highlightAuto(code, languageSubset)`` ----------------------------------------- - -Highlighting with language detection. -Accepts a string with the code to highlight and an optional array of language names and aliases restricting detection to only those languages. The subset can also be set with ``configure``, but the local parameter overrides the option if set. - -Returns an object with the following properties: - -* ``language``: detected language -* ``relevance``: integer value representing the relevance score -* ``value``: HTML string with highlighting markup -* ``second_best``: object with the same structure for second-best heuristically detected language (may be absent) - - -``fixMarkup(value)`` --------------------- - -Post-processing of the highlighted markup. Currently consists of replacing indentation TAB characters and using ``
          `` tags instead of new-line characters. Options are set globally with ``configure``. - -Accepts a string with the highlighted markup. - - -``highlightBlock(block)`` -------------------------- - -Applies highlighting to a DOM node containing code. - -This function is the one to use to apply highlighting dynamically after page load -or within initialization code of third-party Javascript frameworks. - -The function uses language detection by default but you can specify the language -in the ``class`` attribute of the DOM node. See the :doc:`class reference -` for all available language names and aliases. - - -``configure(options)`` ----------------------- - -Configures global options: - -* ``tabReplace``: a string used to replace TAB characters in indentation. -* ``useBR``: a flag to generate ``
          `` tags instead of new-line characters in the output, useful when code is marked up using a non-``
          `` container.
          -* ``classPrefix``: a string prefix added before class names in the generated markup, used for backwards compatibility with stylesheets.
          -* ``languages``: an array of language names and aliases restricting auto detection to only these languages.
          -
          -Accepts an object representing options with the values to updated. Other options don't change
          -::
          -
          -  hljs.configure({
          -    tabReplace: '    ', // 4 spaces
          -    classPrefix: ''     // don't append class prefix
          -                        // … other options aren't changed
          -  })
          -  hljs.initHighlighting();
          -
          -
          -``initHighlighting()``
          -----------------------
          -
          -Applies highlighting to all ``
          ..
          `` blocks on a page. - - - -``initHighlightingOnLoad()`` ----------------------------- - -Attaches highlighting to the page load event. - - -``registerLanguage(name, language)`` ------------------------------------- - -Adds new language to the library under the specified name. Used mostly internally. - -* ``name``: a string with the name of the language being registered -* ``language``: a function that returns an object which represents the - language definition. The function is passed the ``hljs`` object to be able - to use common regular expressions defined within it. - - -``listLanguages()`` ----------------------------- - -Returns the languages names list. - - - -.. _getLanguage: - - -``getLanguage(name)`` ---------------------- - -Looks up a language by name or alias. - -Returns the language object if found, ``undefined`` otherwise. - - -``requireLanguage(name)`` ---------------------- - -Looks up a language by name or alias. - -This should be used when one language definition depends on another. -Using this function (vs ``getLanguage``) will provide better error messaging -when a required language is missing. - -Returns the language object if found, raises a hard error otherwise. - - -``debugMode()`` ---------------- - -Enables *debug/development* mode. **This mode purposely makes Highlight.js more fragile! It should only be used for testing and local development (of languages or the library itself).** By default "Safe Mode" is used, providing the most reliable experience for production usage. - -For example, if a new version suddenly had a serious bug (or breaking change) that affected only a single language: - -* **In Safe Mode**: All other languages would continue to highlight just fine. The broken language would appear as a code block, but without any highlighting (as if it were plaintext). -* **In Debug Mode**: All highlighting would stop when an error was encountered and a JavaScript error would be thrown. diff --git a/node_modules/highlight.js/docs/building-testing.rst b/node_modules/highlight.js/docs/building-testing.rst deleted file mode 100644 index 16292cb84..000000000 --- a/node_modules/highlight.js/docs/building-testing.rst +++ /dev/null @@ -1,88 +0,0 @@ -Building and testing -==================== - -To actually run highlight.js it is necessary to build it for the environment -where you're going to run it: a browser, the node.js server, etc. - - -Building --------- - -The build tool is written in JavaScript using node.js. Before running the -script, make sure to have node installed and run ``npm install`` to get the -dependencies. - -The tool is located in ``tools/build.js``. A few useful examples: - -* Build for a browser using only common languages:: - - node tools/build.js :common - -* Build for node.js including all available languages:: - - node tools/build.js -t node - -* Build two specific languages for debugging, skipping compression in this case:: - - node tools/build.js -n python ruby - -On some systems the node binary is named ``nodejs``; simply replace ``node`` -with ``nodejs`` in the examples above if that is the case. - -The full option reference is available with the usual ``--help`` option. - -The build result will be in the ``build/`` directory. - -.. _basic-testing: - -Basic testing -------------- - -The usual approach to debugging and testing a language is first doing it -visually. You need to build highlight.js with only the language you're working -on (without compression, to have readable code in browser error messages) and -then use the Developer tool in ``tools/developer.html`` to see how it highlights -a test snippet in that language. - -A test snippet should be short and give the idea of the overall look of the -language. It shouldn't include every possible syntactic element and shouldn't -even make practical sense. - -After you satisfied with the result you need to make sure that language -detection still works with your language definition included in the whole suite. - -Testing is done using `Mocha `_ and the -files are found in the ``test/`` directory. You can use the node build to -run the tests in the command line with ``npm test`` after installing the -dependencies with ``npm install``. - -**Note**: for Debian-based machine, like Ubuntu, you might need to create an -alias or symbolic link for nodejs to node. The reason for this is the -dependencies that are requires to test highlight.js has a reference to -"node". - -Place the snippet you used inside the browser in -``test/detect//default.txt``, build the package with all the languages -for node and run the test suite. If your language breaks auto-detection, it -should be fixed by :ref:`improving relevance `, which is a black art -in and of itself. When in doubt, please refer to the discussion group! - - -Testing markup --------------- - -You can also provide additional markup tests for the language to test isolated -cases of various syntactic construct. If your language has 19 different string -literals or complicated heuristics for telling division (``/``) apart from -regexes (``/ .. /``) -- this is the place. - -A test case consists of two files: - -* ``test/markup//.txt``: test code -* ``test/markup//.expect.txt``: reference rendering - -To generate reference rendering use the Developer tool located at -``tools/developer.html``. Make sure to explicitly select your language in the -drop-down menu, as automatic detection is unlikely to work in this case. - - diff --git a/node_modules/highlight.js/docs/css-classes-reference.rst b/node_modules/highlight.js/docs/css-classes-reference.rst deleted file mode 100644 index a75e411a5..000000000 --- a/node_modules/highlight.js/docs/css-classes-reference.rst +++ /dev/null @@ -1,140 +0,0 @@ -CSS classes reference -===================== - - -Stylable classes ----------------- - -+------------------------------------------------------------------------------+ -| **General-purpose** | -+--------------------------+---------------------------------------------------+ -| keyword | keyword in a regular Algol-style language | -+--------------------------+---------------------------------------------------+ -| built_in | built-in or library object (constant, class, | -| | function) | -+--------------------------+---------------------------------------------------+ -| type | user-defined type in a language with first-class | -| | syntactically significant types, like Haskell | -+--------------------------+---------------------------------------------------+ -| literal | special identifier for a built-in value ("true", | -| | "false", "null") | -+--------------------------+---------------------------------------------------+ -| number | number, including units and modifiers, if any. | -+--------------------------+---------------------------------------------------+ -| regexp | literal regular expression | -+--------------------------+---------------------------------------------------+ -| string | literal string, character | -+--------------------------+---------------------------------------------------+ -| subst | parsed section inside a literal string | -+--------------------------+---------------------------------------------------+ -| symbol | symbolic constant, interned string, goto label | -+--------------------------+---------------------------------------------------+ -| class | class or class-level declaration (interfaces, | -| | traits, modules, etc) | -+--------------------------+---------------------------------------------------+ -| function | function or method declaration | -+--------------------------+---------------------------------------------------+ -| title | name of a class or a function at the place of | -| | declaration | -+--------------------------+---------------------------------------------------+ -| params | block of function arguments (parameters) at the | -| | place of declaration | -+--------------------------+---------------------------------------------------+ -| **Meta** | -+--------------------------+---------------------------------------------------+ -| comment | comment | -+--------------------------+---------------------------------------------------+ -| doctag | documentation markup within comments | -+--------------------------+---------------------------------------------------+ -| meta | flags, modifiers, annotations, processing | -| | instructions, preprocessor directive, etc | -+--------------------------+---------------------------------------------------+ -| meta-keyword | keyword or built-in within meta construct | -+--------------------------+---------------------------------------------------+ -| meta-string | string within meta construct | -+--------------------------+---------------------------------------------------+ -| **Tags, attributes, configs** | -+--------------------------+---------------------------------------------------+ -| section | heading of a section in a config file, heading in | -| | text markup | -+--------------------------+---------------------------------------------------+ -| tag | XML/HTML tag | -+--------------------------+---------------------------------------------------+ -| name | name of an XML tag, the first word in an | -| | s-expression | -+--------------------------+---------------------------------------------------+ -| builtin-name | s-expression name from the language standard | -| | library | -+--------------------------+---------------------------------------------------+ -| attr | name of an attribute with no language defined | -| | semantics (keys in JSON, setting names in .ini), | -| | also sub-attribute within another highlighted | -| | object, like XML tag | -+--------------------------+---------------------------------------------------+ -| attribute | name of an attribute followed by a structured | -| | value part, like CSS properties | -+--------------------------+---------------------------------------------------+ -| variable | variable in a config or a template file, | -| | environment var expansion in a script | -+--------------------------+---------------------------------------------------+ -| **Markup** | -+--------------------------+---------------------------------------------------+ -| bullet | list item bullet in text markup | -+--------------------------+---------------------------------------------------+ -| code | code block in text markup | -+--------------------------+---------------------------------------------------+ -| emphasis | emphasis in text markup | -+--------------------------+---------------------------------------------------+ -| strong | strong emphasis in text markup | -+--------------------------+---------------------------------------------------+ -| formula | mathematical formula in text markup | -+--------------------------+---------------------------------------------------+ -| link | hyperlink in text markup | -+--------------------------+---------------------------------------------------+ -| quote | quotation in text markup | -+--------------------------+---------------------------------------------------+ -| **CSS** | -+--------------------------+---------------------------------------------------+ -| selector-tag | tag selector in CSS | -+--------------------------+---------------------------------------------------+ -| selector-id | #id selector in CSS | -+--------------------------+---------------------------------------------------+ -| selector-class | .class selector in CSS | -+--------------------------+---------------------------------------------------+ -| selector-attr | [attr] selector in CSS | -+--------------------------+---------------------------------------------------+ -| selector-pseudo | :pseudo selector in CSS | -+--------------------------+---------------------------------------------------+ -| **Templates** | -+--------------------------+---------------------------------------------------+ -| template-tag | tag of a template language | -+--------------------------+---------------------------------------------------+ -| template-variable | variable in a template language | -+--------------------------+---------------------------------------------------+ -| **diff** | -+--------------------------+---------------------------------------------------+ -| addition | added or changed line in a diff | -+--------------------------+---------------------------------------------------+ -| deletion | deleted line in a diff | -+--------------------------+---------------------------------------------------+ -| **ReasonML** | -+--------------------------+---------------------------------------------------+ -| operator | reasonml operator such as pipe | -+--------------------------+---------------------------------------------------+ -| pattern-match | reasonml pattern matching matchers | -+--------------------------+---------------------------------------------------+ -| typing | type signatures on function parameters | -+--------------------------+---------------------------------------------------+ -| constructor | type constructors | -+--------------------------+---------------------------------------------------+ -| module-access | scope access into a ReasonML module | -+--------------------------+---------------------------------------------------+ -| module | ReasonML module reference within scope access | -+--------------------------+---------------------------------------------------+ - - -Language names and aliases --------------------------- - -The language names and aliases table has moved to `the project -README `_. diff --git a/node_modules/highlight.js/docs/index.rst b/node_modules/highlight.js/docs/index.rst deleted file mode 100644 index 3288758bb..000000000 --- a/node_modules/highlight.js/docs/index.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. highlight.js documentation master file, created by - sphinx-quickstart on Wed Sep 12 23:48:27 2012. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -``highlight.js`` developer documentation -========================================== - -Contents: - -.. toctree:: - :maxdepth: 1 - - api - language-guide - reference - css-classes-reference - style-guide - language-contribution - building-testing - maintainers-guide - -Miscellaneous: - -.. toctree:: - :maxdepth: 1 - - line-numbers - language-requests - -Links: - -- Code: https://github.com/highlightjs/highlight.js -- Discussion: http://groups.google.com/group/highlightjs -- Bug tracking: https://github.com/highlightjs/highlight.js/issues - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/node_modules/highlight.js/docs/language-contribution.rst b/node_modules/highlight.js/docs/language-contribution.rst deleted file mode 100644 index 614e81633..000000000 --- a/node_modules/highlight.js/docs/language-contribution.rst +++ /dev/null @@ -1,77 +0,0 @@ -Language contributor checklist -============================== - -1. Put language definition into a .js file ------------------------------------------- - -The file defines a function accepting a reference to the library and returning a language object. -The library parameter is useful to access common modes and regexps. You should not immediately call this function, -this is done during the build process and details differ for different build targets. - -:: - - function(hljs) { - return { - keywords: 'foo bar', - contains: [ ..., hljs.NUMBER_MODE, ... ] - } - } - -The name of the file is used as a short language identifier and should be usable as a class name in HTML and CSS. - - -2. Provide meta data --------------------- - -At the top of the file there is a specially formatted comment with meta data processed by a build system. -Meta data format is simply key-value pairs each occupying its own line: - -:: - - /* - Language: Superlanguage - Requires: java.js, sql.js - Author: John Smith - Contributors: Mike Johnson <...@...>, Matt Wilson <...@...> - Description: Some cool language definition - */ - -``Language`` — the only required header giving a human-readable language name. - -``Requires`` — a list of other language files required for this language to work. -This make it possible to describe languages that extend definitions of other ones. -Required files aren't processed in any special way. -The build system just makes sure that they will be in the final package in -``LANGUAGES`` object. - -The meaning of the other headers is pretty obvious. - - -3. Create a code example ------------------------- - -The code example is used both to test language detection and for the demo page -on https://highlightjs.org/. Put it in ``test/detect//default.txt``. - -Take inspiration from other languages in ``test/detect/`` and read -:ref:`testing instructions ` for more details. - - -4. Write class reference ------------------------- - -Class reference lives in the :doc:`CSS classes reference `.. -Describe shortly names of all meaningful modes used in your language definition. - - -5. Add yourself to AUTHORS.*.txt and CHANGES.md ------------------------------------------------ - -If you're a new contributor add yourself to the authors list. -Also it will be good to update CHANGES.md. - - -6. Create a pull request ------------------------- - -Send your contribution as a pull request on GitHub. diff --git a/node_modules/highlight.js/docs/language-guide.rst b/node_modules/highlight.js/docs/language-guide.rst deleted file mode 100644 index 0971524e5..000000000 --- a/node_modules/highlight.js/docs/language-guide.rst +++ /dev/null @@ -1,284 +0,0 @@ -Language definition guide -========================= - -Highlighting overview ---------------------- - -Programming language code consists of parts with different rules of parsing: keywords like ``for`` or ``if`` -don't make sense inside strings, strings may contain backslash-escaped symbols like ``\"`` -and comments usually don't contain anything interesting except the end of the comment. - -In highlight.js such parts are called "modes". - -Each mode consists of: - -* starting condition -* ending condition -* list of contained sub-modes -* lexing rules and keywords -* …exotic stuff like another language inside a language - -The parser's work is to look for modes and their keywords. -Upon finding, it wraps them into the markup ``...`` -and puts the name of the mode ("string", "comment", "number") -or a keyword group name ("keyword", "literal", "built-in") as the span's class name. - - -General syntax --------------- - -A language definition is a JavaScript object describing the default parsing mode for the language. -This default mode contains sub-modes which in turn contain other sub-modes, effectively making the language definition a tree of modes. - -Here's an example: - -:: - - { - case_insensitive: true, // language is case-insensitive - keywords: 'for if while', - contains: [ - { - className: 'string', - begin: '"', end: '"' - }, - hljs.COMMENT( - '/\\*', // begin - '\\*/', // end - { - contains: [ - { - className: 'doc', begin: '@\\w+' - } - ] - } - ) - ] - } - -Usually the default mode accounts for the majority of the code and describes all language keywords. -A notable exception here is XML in which a default mode is just a user text that doesn't contain any keywords, -and most interesting parsing happens inside tags. - - -Keywords --------- - -In the simple case language keywords are defined in a string, separated by space: - -:: - - { - keywords: 'else for if while' - } - -Some languages have different kinds of "keywords" that might not be called as such by the language spec -but are very close to them from the point of view of a syntax highlighter. These are all sorts of "literals", "built-ins", "symbols" and such. -To define such keyword groups the attribute ``keywords`` becomes an object each property of which defines its own group of keywords: - -:: - - { - keywords: { - keyword: 'else for if while', - literal: 'false true null' - } - } - -The group name becomes then a class name in a generated markup enabling different styling for different kinds of keywords. - -To detect keywords highlight.js breaks the processed chunk of code into separate words — a process called lexing. -The "word" here is defined by the regexp ``[a-zA-Z][a-zA-Z0-9_]*`` that works for keywords in most languages. -Different lexing rules can be defined by the ``lexemes`` attribute: - -:: - - { - lexemes: '-[a-z]+', - keywords: '-import -export' - } - - -Sub-modes ---------- - -Sub-modes are listed in the ``contains`` attribute: - -:: - - { - keywords: '...', - contains: [ - hljs.QUOTE_STRING_MODE, - hljs.C_LINE_COMMENT, - { ... custom mode definition ... } - ] - } - -A mode can reference itself in the ``contains`` array by using a special keyword ``'self``'. -This is commonly used to define nested modes: - -:: - - { - className: 'object', - begin: '{', end: '}', - contains: [hljs.QUOTE_STRING_MODE, 'self'] - } - -Note: ``self`` may not be used in the root level ``contains`` of a language. The root level mode is special and may not be self-referential. - - -Comments --------- - -To define custom comments it is recommended to use a built-in helper function ``hljs.COMMENT`` instead of describing the mode directly, as it also defines a few default sub-modes that improve language detection and do other nice things. - -Parameters for the function are: - -:: - - hljs.COMMENT( - begin, // begin regex - end, // end regex - extra // optional object with extra attributes to override defaults - // (for example {relevance: 0}) - ) - - -Markup generation ------------------ - -Modes usually generate actual highlighting markup — ```` elements with specific class names that are defined by the ``className`` attribute: - -:: - - { - contains: [ - { - className: 'string', - // ... other attributes - }, - { - className: 'number', - // ... - } - ] - } - -Names are not required to be unique, it's quite common to have several definitions with the same name. -For example, many languages have various syntaxes for strings, comments, etc… - -Sometimes modes are defined only to support specific parsing rules and aren't needed in the final markup. -A classic example is an escaping sequence inside strings allowing them to contain an ending quote. - -:: - - { - className: 'string', - begin: '"', end: '"', - contains: [{begin: '\\\\.'}], - } - -For such modes ``className`` attribute should be omitted so they won't generate excessive markup. - - -Mode attributes ---------------- - -Other useful attributes are defined in the :doc:`mode reference `. - - -.. _relevance: - -Relevance ---------- - -Highlight.js tries to automatically detect the language of a code fragment. -The heuristics is essentially simple: it tries to highlight a fragment with all the language definitions -and the one that yields most specific modes and keywords wins. The job of a language definition -is to help this heuristics by hinting relative relevance (or irrelevance) of modes. - -This is best illustrated by example. Python has special kinds of strings defined by prefix letters before the quotes: -``r"..."``, ``u"..."``. If a code fragment contains such strings there is a good chance that it's in Python. -So these string modes are given high relevance: - -:: - - { - className: 'string', - begin: 'r"', end: '"', - relevance: 10 - } - -On the other hand, conventional strings in plain single or double quotes aren't specific to any language -and it makes sense to bring their relevance to zero to lessen statistical noise: - -:: - - { - className: 'string', - begin: '"', end: '"', - relevance: 0 - } - -The default value for relevance is 1. When setting an explicit value it's recommended to use either 10 or 0. - -Keywords also influence relevance. Each of them usually has a relevance of 1, but there are some unique names -that aren't likely to be found outside of their languages, even in the form of variable names. -For example just having ``reinterpret_cast`` somewhere in the code is a good indicator that we're looking at C++. -It's worth to set relevance of such keywords a bit higher. This is done with a pipe: - -:: - - { - keywords: 'for if reinterpret_cast|10' - } - - -Illegal symbols ---------------- - -Another way to improve language detection is to define illegal symbols for a mode. -For example in Python first line of class definition (``class MyClass(object):``) cannot contain symbol "{" or a newline. -Presence of these symbols clearly shows that the language is not Python and the parser can drop this attempt early. - -Illegal symbols are defined as a a single regular expression: - -:: - - { - className: 'class', - illegal: '[${]' - } - - -Pre-defined modes and regular expressions ------------------------------------------ - -Many languages share common modes and regular expressions. Such expressions are defined in core highlight.js code -at the end under "Common regexps" and "Common modes" titles. Use them when possible. - - -Regular Expression Features ---------------------------- - -The goal of Highlight.js is to support whatever regex features Javascript itself supports. You're using real regular expressions, use them responsibly. That said, due to the design of the parser, there are some caveats. These are addressed below. - -Things we support now that we did not always: - -* look-ahead regex matching for `begin` (#2135) -* look-ahead regex matching for `end` (#2237) -* look-ahead regex matching for `illegal` (#2135) -* back-references within your regex matches (#1897) -* look-behind matching (when JS supports it) for `begin` (#2135) - -Things we currently know are still issues: - -* look-behind matching (when JS supports it) for `end` matchers - - -Contributing ------------- - -Follow the :doc:`contributor checklist `. diff --git a/node_modules/highlight.js/docs/language-requests.rst b/node_modules/highlight.js/docs/language-requests.rst deleted file mode 100644 index 4e4c2f0b6..000000000 --- a/node_modules/highlight.js/docs/language-requests.rst +++ /dev/null @@ -1,17 +0,0 @@ -On requesting new languages -=========================== - -This is a general answer to requests for adding new languages that appear from -time to time in the highlight.js issue tracker and discussion group. - - Highlight.js doesn't have a fundamental plan for implementing languages, - instead the project works by accepting language definitions from - interested contributors. There are also no rules at the moment forbidding - any languages from being added to the library, no matter how obscure or - weird. - - This means that there's no point in requesting a new language without - providing an implementation for it. If you want to see a particular language - included in highlight.js but cannot implement it, the best way to make it - happen is to get another developer interested in doing so. Here's our - :doc:`language-guide`. diff --git a/node_modules/highlight.js/docs/line-numbers.rst b/node_modules/highlight.js/docs/line-numbers.rst deleted file mode 100644 index 674542d4e..000000000 --- a/node_modules/highlight.js/docs/line-numbers.rst +++ /dev/null @@ -1,39 +0,0 @@ -Line numbers -============ - -Highlight.js' notable lack of line numbers support is not an oversight but a -feature. Following is the explanation of this policy from the current project -maintainer (hey guys!): - - One of the defining design principles for highlight.js from the start was - simplicity. Not the simplicity of code (in fact, it's quite complex) but - the simplicity of usage and of the actual look of highlighted snippets on - HTML pages. Many highlighters, in my opinion, are overdoing it with such - things as separate colors for every single type of lexemes, striped - backgrounds, fancy buttons around code blocks and — yes — line numbers. - The more fancy stuff resides around the code the more it distracts a - reader from understanding it. - - This is why it's not a straightforward decision: this new feature will not - just make highlight.js better, it might actually make it worse simply by - making it look more bloated in blog posts around the Internet. This is why - I'm asking people to show that it's worth it. - - The only real use-case that ever was brought up in support of line numbers - is referencing code from the descriptive text around it. On my own blog I - was always solving this either with comments within the code itself or by - breaking the larger snippets into smaller ones and describing each small - part separately. I'm not saying that my solution is better. But I don't - see how line numbers are better either. And the only way to show that they - are better is to set up some usability research on the subject. I doubt - anyone would bother to do it. - - Then there's maintenance. So far the core code of highlight.js is - maintained by only one person — yours truly. Inclusion of any new code in - highlight.js means that from that moment I will have to fix bugs in it, - improve it further, make it work together with the rest of the code, - defend its design. And I don't want to do all this for the feature that I - consider "evil" and probably will never use myself. - -This position is `subject to discuss `_. -Also it doesn't stop anyone from forking the code and maintaining line-numbers implementation separately. diff --git a/node_modules/highlight.js/docs/maintainers-guide.rst b/node_modules/highlight.js/docs/maintainers-guide.rst deleted file mode 100644 index 0ac3719e8..000000000 --- a/node_modules/highlight.js/docs/maintainers-guide.rst +++ /dev/null @@ -1,43 +0,0 @@ -Maintainer's guide -================== - - -Commit policy -------------- - -* Pull requests from outside contributors require a review from a maintainer. - -* Maintainers should avoid working on a master branch directly and create branches for everything. A code review from another maintainer is recommended but not required, use your best judgment. - - - -Release process ---------------- - -Releases (minor) typically happen on a 6-week schedule. - -For major/minor releases you'll be releasing from ``master``. For patch releases you'll be releasing from a stable branch, such as ``9-16-stable``. This allows ongoing development of new features to continue in isolation (in master) without those changes leaking into patch releases (which should focus only on fixing breaking changes). - -The goal being that minor version series always get more stable over time and that patch releases do not add features. - -* For patch releases: First switch to the associated stable branch (i.e., ``9-16-stable``) - -* Update CHANGES.md with everything interesting since the last update. - -* Update version numbers using the three-part x.y.z notation everywhere: - - * The header in CHANGES.md (this is where the site looks for the latest version number) - * ``"version"`` attribute in package.json - * ``"version"`` attribute in package-lock.json (run `npm install`) - * Two places in docs/conf.py (``version`` and ``release``) - -* Commit the version changes and tag the commit with the version number (``9.16.2``, no "v" prefix or anything like that) - -* For major/minor releases: Create a new ``[major]-[minor]-stable`` branch such as ``9-16-stable`` - -* Push the commit and the tags (``git push && git push --tags``) - - -Pushing the tag triggers the update process which can be monitored at http://highlightjs.org/api/release/ - -When something didn't work *and* it's fixable in code (version numbers mismatch, last minute patches, etc), simply make another release incrementing the third (revision) part of the version number. diff --git a/node_modules/highlight.js/docs/reference.rst b/node_modules/highlight.js/docs/reference.rst deleted file mode 100644 index dafee4abd..000000000 --- a/node_modules/highlight.js/docs/reference.rst +++ /dev/null @@ -1,361 +0,0 @@ -Mode reference -============== - -Types ------ - -Types of attributes values in this reference: - -+------------+-------------------------------------------------------------------------------------+ -| identifier | String suitable to be used as a Javascript variable and CSS class name | -| | (i.e. mostly ``/[A-Za-z0-9_]+/``) | -+------------+-------------------------------------------------------------------------------------+ -| regexp | String representing a Javascript regexp. | -| | Note that since it's not a literal regexp all back-slashes should be repeated twice | -+------------+-------------------------------------------------------------------------------------+ -| boolean | Javascript boolean: ``true`` or ``false`` | -+------------+-------------------------------------------------------------------------------------+ -| number | Javascript number | -+------------+-------------------------------------------------------------------------------------+ -| object | Javascript object: ``{ ... }`` | -+------------+-------------------------------------------------------------------------------------+ -| array | Javascript array: ``[ ... ]`` | -+------------+-------------------------------------------------------------------------------------+ - - -Attributes ----------- - -case_insensitive -^^^^^^^^^^^^^^^^ - -**type**: boolean - -Case insensitivity of language keywords and regexps. Used only on the top-level mode. - - -aliases -^^^^^^^ - -**type**: array - -A list of additional names (besides the canonical one given by the filename) that can be used to identify a language in HTML classes and in a call to :ref:`getLanguage `. - - -className -^^^^^^^^^ - -**type**: identifier - -The name of the mode. It is used as a class name in HTML markup. - -Multiple modes can have the same name. This is useful when a language has multiple variants of syntax -for one thing like string in single or double quotes. - - -begin -^^^^^ - -**type**: regexp - -Regular expression starting a mode. For example a single quote for strings or two forward slashes for C-style comments. -If absent, ``begin`` defaults to a regexp that matches anything, so the mode starts immediately. - - -end -^^^ - -**type**: regexp - -Regular expression ending a mode. For example a single quote for strings or "$" (end of line) for one-line comments. - -It's often the case that a beginning regular expression defines the entire mode and doesn't need any special ending. -For example a number can be defined with ``begin: "\\b\\d+"`` which spans all the digits. - -If absent, ``end`` defaults to a regexp that matches anything, so the mode ends immediately (after possibly -matching any ``contains`` sub-modes). - -Sometimes a mode can end not by itself but implicitly with its containing (parent) mode. -This is achieved with :ref:`endsWithParent ` attribute. - - -beginKeywords -^^^^^^^^^^^^^^^^ - -**type**: string - -Used instead of ``begin`` for modes starting with keywords to avoid needless repetition: - -:: - - { - begin: '\\b(extends|implements) ', - keywords: 'extends implements' - } - -… becomes: - -:: - - { - beginKeywords: 'extends implements' - } - -Unlike the :ref:`keywords ` attribute, this one allows only a simple list of space separated keywords. -If you do need additional features of ``keywords`` or you just need more keywords for this mode you may include ``keywords`` along with ``beginKeywords``. - - -.. _endsWithParent: - -endsWithParent -^^^^^^^^^^^^^^ - -**type**: boolean - -A flag showing that a mode ends when its parent ends. - -This is best demonstrated by example. In CSS syntax a selector has a set of rules contained within symbols "{" and "}". -Individual rules separated by ";" but the last one in a set can omit the terminating semicolon: - -:: - - p { - width: 100%; color: red - } - -This is when ``endsWithParent`` comes into play: - -:: - - { - className: 'rules', begin: '{', end: '}', - contains: [ - {className: 'rule', /* ... */ end: ';', endsWithParent: true} - ] - } - -.. _endsParent: - -endsParent -^^^^^^^^^^^^^^ - -**type**: boolean - -Forces closing of the parent mode right after the current mode is closed. - -This is used for modes that don't have an easily expressible ending lexeme but -instead could be closed after the last interesting sub-mode is found. - -Here's an example with two ways of defining functions in Elixir, one using a -keyword ``do`` and another using a comma: - -:: - - def foo :clear, list do - :ok - end - - def foo, do: IO.puts "hello world" - -Note that in the first case the parameter list after the function title may also -include a comma. And if we're only interested in highlighting a title we can -tell it to end the function definition after itself: - -:: - - { - className: 'function', - beginKeywords: 'def', end: /\B\b/, - contains: [ - { - className: 'title', - begin: hljs.IDENT_RE, endsParent: true - } - ] - } - -(The ``end: /\B\b/`` regex tells function to never end by itself.) - -.. _endSameAsBegin: - -endSameAsBegin -^^^^^^^^^^^^^^ - -**type**: boolean - -Acts as ``end`` matching exactly the same string that was found by the -corresponding ``begin`` regexp. - -For example, in PostgreSQL string constants can uee "dollar quotes", -consisting of a dollar sign, an optional tag of zero or more characters, -and another dollar sign. String constant must be ended with the same -construct using the same tag. It is possible to nest dollar-quoted string -constants by choosing different tags at each nesting level: - -:: - - $foo$ - ... - $bar$ nested $bar$ - ... - $foo$ - -In this case you can't simply specify the same regexp for ``begin`` and -``end`` (say, ``"\\$[a-z]\\$"``), but you can use ``begin: "\\$[a-z]\\$"`` -and ``endSameAsBegin: true``. - -.. _lexemes: - -lexemes -^^^^^^^ - -**type**: regexp - -A regular expression that extracts individual lexemes from language text to find :ref:`keywords ` among them. -Default value is ``hljs.IDENT_RE`` which works for most languages. - - -.. _keywords: - -keywords -^^^^^^^^ - -**type**: object - -Keyword definition comes in two forms: - -* ``'for while if else weird_voodoo|10 ... '`` -- a string of space-separated keywords with an optional relevance over a pipe -* ``{'keyword': ' ... ', 'literal': ' ... '}`` -- an object whose keys are names of different kinds of keywords and values are keyword definition strings in the first form - -For detailed explanation see :doc:`Language definition guide `. - - -illegal -^^^^^^^ - -**type**: regexp - -A regular expression that defines symbols illegal for the mode. -When the parser finds a match for illegal expression it immediately drops parsing the whole language altogether. - - -excludeBegin, excludeEnd -^^^^^^^^^^^^^^^^^^^^^^^^ - -**type**: boolean - -Exclude beginning or ending lexemes out of mode's generated markup. For example in CSS syntax a rule ends with a semicolon. -However visually it's better not to color it as the rule contents. Having ``excludeEnd: true`` forces a ```` element for the rule to close before the semicolon. - - -returnBegin -^^^^^^^^^^^ - -**type**: boolean - -Returns just found beginning lexeme back into parser. This is used when beginning of a sub-mode is a complex expression -that should not only be found within a parent mode but also parsed according to the rules of a sub-mode. - -Since the parser is effectively goes back it's quite possible to create a infinite loop here so use with caution! - - -returnEnd -^^^^^^^^^ - -**type**: boolean - -Returns just found ending lexeme back into parser. This is used for example to parse Javascript embedded into HTML. -A Javascript block ends with the HTML closing tag ```` that cannot be parsed with Javascript rules. -So it is returned back into its parent HTML mode that knows what to do with it. - -Since the parser is effectively goes back it's quite possible to create a infinite loop here so use with caution! - - -contains -^^^^^^^^ - -**type**: array - -The list of sub-modes that can be found inside the mode. For detailed explanation see :doc:`Language definition guide `. - - -starts -^^^^^^ - -**type**: identifier - -The name of the mode that will start right after the current mode ends. The new mode won't be contained within the current one. - -Currently this attribute is used to highlight Javascript and CSS contained within HTML. -Tags `` -``` - -### In an AMD loader -```js -require(['async'], function(async) {}); -``` - -### Promise and async/await - -I recommend to use [`Aigle`](https://github.com/suguru03/aigle). - -It is optimized for Promise handling and has almost the same functionality as `neo-async`. - -### Node.js - -#### standard - -```bash -$ npm install neo-async -``` -```js -var async = require('neo-async'); -``` - -#### replacement -```bash -$ npm install neo-async -$ ln -s ./node_modules/neo-async ./node_modules/async -``` -```js -var async = require('async'); -``` - -### Bower - -```bash -bower install neo-async -``` - -## Feature - -[JSDoc](http://suguru03.github.io/neo-async/doc/async.html) - -\* not in Async - -### Collections - -- [`each`](http://suguru03.github.io/neo-async/doc/async.each.html) -- [`eachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -- [`eachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -- [`forEach`](http://suguru03.github.io/neo-async/doc/async.each.html) -> [`each`](http://suguru03.github.io/neo-async/doc/async.each.html) -- [`forEachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -> [`eachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -- [`forEachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -> [`eachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -- [`eachOf`](http://suguru03.github.io/neo-async/doc/async.each.html) -> [`each`](http://suguru03.github.io/neo-async/doc/async.each.html) -- [`eachOfSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -> [`eachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -- [`eachOfLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -> [`eachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -- [`forEachOf`](http://suguru03.github.io/neo-async/doc/async.each.html) -> [`each`](http://suguru03.github.io/neo-async/doc/async.each.html) -- [`forEachOfSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -> [`eachSeries`](http://suguru03.github.io/neo-async/doc/async.eachSeries.html) -- [`eachOfLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -> [`forEachLimit`](http://suguru03.github.io/neo-async/doc/async.eachLimit.html) -- [`map`](http://suguru03.github.io/neo-async/doc/async.map.html) -- [`mapSeries`](http://suguru03.github.io/neo-async/doc/async.mapSeries.html) -- [`mapLimit`](http://suguru03.github.io/neo-async/doc/async.mapLimit.html) -- [`mapValues`](http://suguru03.github.io/neo-async/doc/async.mapValues.html) -- [`mapValuesSeries`](http://suguru03.github.io/neo-async/doc/async.mapValuesSeries.html) -- [`mapValuesLimit`](http://suguru03.github.io/neo-async/doc/async.mapValuesLimit.html) -- [`filter`](http://suguru03.github.io/neo-async/doc/async.filter.html) -- [`filterSeries`](http://suguru03.github.io/neo-async/doc/async.filterSeries.html) -- [`filterLimit`](http://suguru03.github.io/neo-async/doc/async.filterLimit.html) -- [`select`](http://suguru03.github.io/neo-async/doc/async.filter.html) -> [`filter`](http://suguru03.github.io/neo-async/doc/async.filter.html) -- [`selectSeries`](http://suguru03.github.io/neo-async/doc/async.filterSeries.html) -> [`filterSeries`](http://suguru03.github.io/neo-async/doc/async.filterSeries.html) -- [`selectLimit`](http://suguru03.github.io/neo-async/doc/async.filterLimit.html) -> [`filterLimit`](http://suguru03.github.io/neo-async/doc/async.filterLimit.html) -- [`reject`](http://suguru03.github.io/neo-async/doc/async.reject.html) -- [`rejectSeries`](http://suguru03.github.io/neo-async/doc/async.rejectSeries.html) -- [`rejectLimit`](http://suguru03.github.io/neo-async/doc/async.rejectLimit.html) -- [`detect`](http://suguru03.github.io/neo-async/doc/async.detect.html) -- [`detectSeries`](http://suguru03.github.io/neo-async/doc/async.detectSeries.html) -- [`detectLimit`](http://suguru03.github.io/neo-async/doc/async.detectLimit.html) -- [`find`](http://suguru03.github.io/neo-async/doc/async.detect.html) -> [`detect`](http://suguru03.github.io/neo-async/doc/async.detect.html) -- [`findSeries`](http://suguru03.github.io/neo-async/doc/async.detectSeries.html) -> [`detectSeries`](http://suguru03.github.io/neo-async/doc/async.detectSeries.html) -- [`findLimit`](http://suguru03.github.io/neo-async/doc/async.detectLimit.html) -> [`detectLimit`](http://suguru03.github.io/neo-async/doc/async.detectLimit.html) -- [`pick`](http://suguru03.github.io/neo-async/doc/async.pick.html) * -- [`pickSeries`](http://suguru03.github.io/neo-async/doc/async.pickSeries.html) * -- [`pickLimit`](http://suguru03.github.io/neo-async/doc/async.pickLimit.html) * -- [`omit`](http://suguru03.github.io/neo-async/doc/async.omit.html) * -- [`omitSeries`](http://suguru03.github.io/neo-async/doc/async.omitSeries.html) * -- [`omitLimit`](http://suguru03.github.io/neo-async/doc/async.omitLimit.html) * -- [`reduce`](http://suguru03.github.io/neo-async/doc/async.reduce.html) -- [`inject`](http://suguru03.github.io/neo-async/doc/async.reduce.html) -> [`reduce`](http://suguru03.github.io/neo-async/doc/async.reduce.html) -- [`foldl`](http://suguru03.github.io/neo-async/doc/async.reduce.html) -> [`reduce`](http://suguru03.github.io/neo-async/doc/async.reduce.html) -- [`reduceRight`](http://suguru03.github.io/neo-async/doc/async.reduceRight.html) -- [`foldr`](http://suguru03.github.io/neo-async/doc/async.reduceRight.html) -> [`reduceRight`](http://suguru03.github.io/neo-async/doc/async.reduceRight.html) -- [`transform`](http://suguru03.github.io/neo-async/doc/async.transform.html) -- [`transformSeries`](http://suguru03.github.io/neo-async/doc/async.transformSeries.html) * -- [`transformLimit`](http://suguru03.github.io/neo-async/doc/async.transformLimit.html) * -- [`sortBy`](http://suguru03.github.io/neo-async/doc/async.sortBy.html) -- [`sortBySeries`](http://suguru03.github.io/neo-async/doc/async.sortBySeries.html) * -- [`sortByLimit`](http://suguru03.github.io/neo-async/doc/async.sortByLimit.html) * -- [`some`](http://suguru03.github.io/neo-async/doc/async.some.html) -- [`someSeries`](http://suguru03.github.io/neo-async/doc/async.someSeries.html) -- [`someLimit`](http://suguru03.github.io/neo-async/doc/async.someLimit.html) -- [`any`](http://suguru03.github.io/neo-async/doc/async.some.html) -> [`some`](http://suguru03.github.io/neo-async/doc/async.some.html) -- [`anySeries`](http://suguru03.github.io/neo-async/doc/async.someSeries.html) -> [`someSeries`](http://suguru03.github.io/neo-async/doc/async.someSeries.html) -- [`anyLimit`](http://suguru03.github.io/neo-async/doc/async.someLimit.html) -> [`someLimit`](http://suguru03.github.io/neo-async/doc/async.someLimit.html) -- [`every`](http://suguru03.github.io/neo-async/doc/async.every.html) -- [`everySeries`](http://suguru03.github.io/neo-async/doc/async.everySeries.html) -- [`everyLimit`](http://suguru03.github.io/neo-async/doc/async.everyLimit.html) -- [`all`](http://suguru03.github.io/neo-async/doc/async.every.html) -> [`every`](http://suguru03.github.io/neo-async/doc/async.every.html) -- [`allSeries`](http://suguru03.github.io/neo-async/doc/async.everySeries.html) -> [`every`](http://suguru03.github.io/neo-async/doc/async.everySeries.html) -- [`allLimit`](http://suguru03.github.io/neo-async/doc/async.everyLimit.html) -> [`every`](http://suguru03.github.io/neo-async/doc/async.everyLimit.html) -- [`concat`](http://suguru03.github.io/neo-async/doc/async.concat.html) -- [`concatSeries`](http://suguru03.github.io/neo-async/doc/async.concatSeries.html) -- [`concatLimit`](http://suguru03.github.io/neo-async/doc/async.concatLimit.html) * - -### Control Flow - -- [`parallel`](http://suguru03.github.io/neo-async/doc/async.parallel.html) -- [`series`](http://suguru03.github.io/neo-async/doc/async.series.html) -- [`parallelLimit`](http://suguru03.github.io/neo-async/doc/async.series.html) -- [`tryEach`](http://suguru03.github.io/neo-async/doc/async.tryEach.html) -- [`waterfall`](http://suguru03.github.io/neo-async/doc/async.waterfall.html) -- [`angelFall`](http://suguru03.github.io/neo-async/doc/async.angelFall.html) * -- [`angelfall`](http://suguru03.github.io/neo-async/doc/async.angelFall.html) -> [`angelFall`](http://suguru03.github.io/neo-async/doc/async.angelFall.html) * -- [`whilst`](#whilst) -- [`doWhilst`](#doWhilst) -- [`until`](#until) -- [`doUntil`](#doUntil) -- [`during`](#during) -- [`doDuring`](#doDuring) -- [`forever`](#forever) -- [`compose`](#compose) -- [`seq`](#seq) -- [`applyEach`](#applyEach) -- [`applyEachSeries`](#applyEachSeries) -- [`queue`](#queue) -- [`priorityQueue`](#priorityQueue) -- [`cargo`](#cargo) -- [`auto`](#auto) -- [`autoInject`](#autoInject) -- [`retry`](#retry) -- [`retryable`](#retryable) -- [`iterator`](#iterator) -- [`times`](http://suguru03.github.io/neo-async/doc/async.times.html) -- [`timesSeries`](http://suguru03.github.io/neo-async/doc/async.timesSeries.html) -- [`timesLimit`](http://suguru03.github.io/neo-async/doc/async.timesLimit.html) -- [`race`](#race) - -### Utils -- [`apply`](#apply) -- [`setImmediate`](#setImmediate) -- [`nextTick`](#nextTick) -- [`memoize`](#memoize) -- [`unmemoize`](#unmemoize) -- [`ensureAsync`](#ensureAsync) -- [`constant`](#constant) -- [`asyncify`](#asyncify) -- [`wrapSync`](#asyncify) -> [`asyncify`](#asyncify) -- [`log`](#log) -- [`dir`](#dir) -- [`timeout`](http://suguru03.github.io/neo-async/doc/async.timeout.html) -- [`reflect`](#reflect) -- [`reflectAll`](#reflectAll) -- [`createLogger`](#createLogger) - -## Mode -- [`safe`](#safe) * -- [`fast`](#fast) * - -## Benchmark - -[Benchmark: Async vs Neo-Async](http://suguru03.hatenablog.com/entry/2016/06/10/135559) - -### How to check - -```bash -$ node perf -``` - -### Environment - -* Darwin 17.3.0 x64 -* Node.js v8.9.4 -* async v2.6.0 -* neo-async v2.5.0 -* benchmark v2.1.4 - -### Result - -The value is the ratio (Neo-Async/Async) of the average speed. - -#### Collections -|function|benchmark| -|---|--:| -|each/forEach|2.43| -|eachSeries/forEachSeries|1.75| -|eachLimit/forEachLimit|1.68| -|eachOf|3.29| -|eachOfSeries|1.50| -|eachOfLimit|1.59| -|map|3.95| -|mapSeries|1.81| -|mapLimit|1.27| -|mapValues|2.73| -|mapValuesSeries|1.59| -|mapValuesLimit|1.23| -|filter|3.00| -|filterSeries|1.74| -|filterLimit|1.17| -|reject|4.59| -|rejectSeries|2.31| -|rejectLimit|1.58| -|detect|4.30| -|detectSeries|1.86| -|detectLimit|1.32| -|reduce|1.82| -|transform|2.46| -|sortBy|4.08| -|some|2.19| -|someSeries|1.83| -|someLimit|1.32| -|every|2.09| -|everySeries|1.84| -|everyLimit|1.35| -|concat|3.79| -|concatSeries|4.45| - -#### Control Flow -|funciton|benchmark| -|---|--:| -|parallel|2.93| -|series|1.96| -|waterfall|1.29| -|whilst|1.00| -|doWhilst|1.12| -|until|1.12| -|doUntil|1.12| -|during|1.18| -|doDuring|2.42| -|times|4.25| -|auto|1.97| - - -## License -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fsuguru03%2Fneo-async.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fsuguru03%2Fneo-async?ref=badge_large) diff --git a/node_modules/neo-async/all.js b/node_modules/neo-async/all.js deleted file mode 100644 index dad54e7fe..000000000 --- a/node_modules/neo-async/all.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').all; diff --git a/node_modules/neo-async/allLimit.js b/node_modules/neo-async/allLimit.js deleted file mode 100644 index d9d7aaa16..000000000 --- a/node_modules/neo-async/allLimit.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').allLimit; diff --git a/node_modules/neo-async/allSeries.js b/node_modules/neo-async/allSeries.js deleted file mode 100644 index 2a7a8ba88..000000000 --- a/node_modules/neo-async/allSeries.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').allSeries; diff --git a/node_modules/neo-async/angelFall.js b/node_modules/neo-async/angelFall.js deleted file mode 100644 index 476c23ecc..000000000 --- a/node_modules/neo-async/angelFall.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').angelfall; diff --git a/node_modules/neo-async/any.js b/node_modules/neo-async/any.js deleted file mode 100644 index d6b07bb54..000000000 --- a/node_modules/neo-async/any.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').any; diff --git a/node_modules/neo-async/anyLimit.js b/node_modules/neo-async/anyLimit.js deleted file mode 100644 index 34114f888..000000000 --- a/node_modules/neo-async/anyLimit.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').anyLimit; diff --git a/node_modules/neo-async/anySeries.js b/node_modules/neo-async/anySeries.js deleted file mode 100644 index bb3781fd5..000000000 --- a/node_modules/neo-async/anySeries.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').anySeries; diff --git a/node_modules/neo-async/apply.js b/node_modules/neo-async/apply.js deleted file mode 100644 index 41135e218..000000000 --- a/node_modules/neo-async/apply.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').apply; diff --git a/node_modules/neo-async/applyEach.js b/node_modules/neo-async/applyEach.js deleted file mode 100644 index 292bd1c06..000000000 --- a/node_modules/neo-async/applyEach.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').applyEach; diff --git a/node_modules/neo-async/applyEachSeries.js b/node_modules/neo-async/applyEachSeries.js deleted file mode 100644 index 0aece7cd3..000000000 --- a/node_modules/neo-async/applyEachSeries.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('./async').applyEachSeries; diff --git a/node_modules/neo-async/async.js b/node_modules/neo-async/async.js deleted file mode 100644 index e78eb1681..000000000 --- a/node_modules/neo-async/async.js +++ /dev/null @@ -1,9184 +0,0 @@ -(function(global, factory) { - /*jshint -W030 */ - 'use strict'; - typeof exports === 'object' && typeof module !== 'undefined' - ? factory(exports) - : typeof define === 'function' && define.amd - ? define(['exports'], factory) - : global.async - ? factory((global.neo_async = global.neo_async || {})) - : factory((global.async = global.async || {})); -})(this, function(exports) { - 'use strict'; - - var noop = function noop() {}; - var throwError = function throwError() { - throw new Error('Callback was already called.'); - }; - - var DEFAULT_TIMES = 5; - var DEFAULT_INTERVAL = 0; - - var obj = 'object'; - var func = 'function'; - var isArray = Array.isArray; - var nativeKeys = Object.keys; - var nativePush = Array.prototype.push; - var iteratorSymbol = typeof Symbol === func && Symbol.iterator; - - var nextTick, asyncNextTick, asyncSetImmediate; - createImmediate(); - - /** - * @memberof async - * @namespace each - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(); - * }, num * 10); - * }; - * async.each(array, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(); - * }, num * 10); - * }; - * async.each(array, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [[1, 0], [2, 2], [3, 1]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(); - * }, num * 10); - * }; - * async.each(object, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(); - * }, num * 10); - * }; - * async.each(object, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b']] - * }); - * - * @example - * - * // break - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num !== 2); - * }, num * 10); - * }; - * async.each(array, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [1, 2] - * }); - * - */ - var each = createEach(arrayEach, baseEach, symbolEach); - - /** - * @memberof async - * @namespace map - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.map(array, iterator, function(err, res) { - * console.log(res); // [1, 3, 2]; - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num); - * }, num * 10); - * }; - * async.map(array, iterator, function(err, res) { - * console.log(res); // [1, 3, 2] - * console.log(order); // [[1, 0], [2, 2], [3, 1]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.map(object, iterator, function(err, res) { - * console.log(res); // [1, 3, 2] - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.map(object, iterator, function(err, res) { - * console.log(res); // [1, 3, 2] - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b']] - * }); - * - */ - var map = createMap(arrayEachIndex, baseEachIndex, symbolEachIndex, true); - - /** - * @memberof async - * @namespace mapValues - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapValues(array, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3, '2': 2 } - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num); - * }, num * 10); - * }; - * async.mapValues(array, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3, '2': 2 } - * console.log(order); // [[1, 0], [2, 2], [3, 1]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapValues(object, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3, c: 2 } - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.mapValues(object, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3, c: 2 } - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b']] - * }); - * - */ - var mapValues = createMap(arrayEachIndex, baseEachKey, symbolEachKey, false); - - /** - * @memberof async - * @namespace filter - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filter(array, iterator, function(err, res) { - * console.log(res); // [1, 3]; - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filter(array, iterator, function(err, res) { - * console.log(res); // [1, 3]; - * console.log(order); // [[1, 0], [2, 2], [3, 1]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filter(object, iterator, function(err, res) { - * console.log(res); // [1, 3]; - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filter(object, iterator, function(err, res) { - * console.log(res); // [1, 3]; - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b']] - * }); - * - */ - var filter = createFilter(arrayEachIndexValue, baseEachIndexValue, symbolEachIndexValue, true); - - /** - * @memberof async - * @namespace filterSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filterSeries(array, iterator, function(err, res) { - * console.log(res); // [1, 3]; - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filterSeries(array, iterator, function(err, res) { - * console.log(res); // [1, 3] - * console.log(order); // [[1, 0], [3, 1], [2, 2]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filterSeries(object, iterator, function(err, res) { - * console.log(res); // [1, 3] - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filterSeries(object, iterator, function(err, res) { - * console.log(res); // [1, 3] - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'c']] - * }); - * - */ - var filterSeries = createFilterSeries(true); - - /** - * @memberof async - * @namespace filterLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filterLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [1, 5, 3] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filterLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [1, 5, 3] - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filterLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [1, 5, 3] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.filterLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [1, 5, 3] - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - */ - var filterLimit = createFilterLimit(true); - - /** - * @memberof async - * @namespace reject - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.reject(array, iterator, function(err, res) { - * console.log(res); // [2]; - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.reject(array, iterator, function(err, res) { - * console.log(res); // [2]; - * console.log(order); // [[1, 0], [2, 2], [3, 1]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.reject(object, iterator, function(err, res) { - * console.log(res); // [2]; - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.reject(object, iterator, function(err, res) { - * console.log(res); // [2]; - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b']] - * }); - * - */ - var reject = createFilter(arrayEachIndexValue, baseEachIndexValue, symbolEachIndexValue, false); - - /** - * @memberof async - * @namespace rejectSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.rejectSeries(array, iterator, function(err, res) { - * console.log(res); // [2]; - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.rejectSeries(object, iterator, function(err, res) { - * console.log(res); // [2]; - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.rejectSeries(object, iterator, function(err, res) { - * console.log(res); // [2]; - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'c']] - * }); - * - */ - var rejectSeries = createFilterSeries(false); - - /** - * @memberof async - * @namespace rejectLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.rejectLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [4, 2] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.rejectLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [4, 2] - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.rejectLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [4, 2] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.rejectLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [4, 2] - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - */ - var rejectLimit = createFilterLimit(false); - - /** - * @memberof async - * @namespace detect - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detect(array, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [1] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detect(array, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [[1, 0]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detect(object, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [1] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detect(object, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [[1, 'a']] - * }); - * - */ - var detect = createDetect(arrayEachValue, baseEachValue, symbolEachValue, true); - - /** - * @memberof async - * @namespace detectSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detectSeries(array, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [1] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detectSeries(array, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [[1, 0]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detectSeries(object, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [1] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detectSeries(object, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [[1, 'a']] - * }); - * - */ - var detectSeries = createDetectSeries(true); - - /** - * @memberof async - * @namespace detectLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detectLimit(array, 2, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [1] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detectLimit(array, 2, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [[1, 0]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detectLimit(object, 2, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [1] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.detectLimit(object, 2, iterator, function(err, res) { - * console.log(res); // 1 - * console.log(order); // [[1, 'a']] - * }); - * - */ - var detectLimit = createDetectLimit(true); - - /** - * @memberof async - * @namespace every - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.every(array, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [1, 2] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.every(array, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [[1, 0], [2, 2]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.every(object, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [1, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.every(object, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [[1, 'a'], [2, 'c']] - * }); - * - */ - var every = createEvery(arrayEachValue, baseEachValue, symbolEachValue); - - /** - * @memberof async - * @namespace everySeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.everySeries(array, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.everySeries(array, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [[1, 0], [3, 1], [2, 2]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.everySeries(object, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.everySeries(object, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [[1, 'a'], [3, 'b'] [2, 'c']] - * }); - * - */ - var everySeries = createEverySeries(); - - /** - * @memberof async - * @namespace everyLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.everyLimit(array, 2, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [1, 3, 5, 2] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.everyLimit(array, 2, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.everyLimit(object, 2, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [1, 3, 5, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.everyLimit(object, 2, iterator, function(err, res) { - * console.log(res); // false - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e']] - * }); - * - */ - var everyLimit = createEveryLimit(); - - /** - * @memberof async - * @namespace pick - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2, 4]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pick(array, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3 } - * console.log(order); // [1, 2, 3, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2, 4]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pick(array, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3 } - * console.log(order); // [[0, 1], [2, 2], [3, 1], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pick(object, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3 } - * console.log(order); // [1, 2, 3, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pick(object, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3 } - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b'], [4, 'd']] - * }); - * - */ - var pick = createPick(arrayEachIndexValue, baseEachKeyValue, symbolEachKeyValue, true); - - /** - * @memberof async - * @namespace pickSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2, 4]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pickSeries(array, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3 } - * console.log(order); // [1, 3, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2, 4]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pickSeries(array, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3 } - * console.log(order); // [[0, 1], [3, 1], [2, 2], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pickSeries(object, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3 } - * console.log(order); // [1, 3, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pickSeries(object, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3 } - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'c'], [4, 'd']] - * }); - * - */ - var pickSeries = createPickSeries(true); - - /** - * @memberof async - * @namespace pickLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pickLimit(array, 2, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 5, '2': 3 } - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pickLimit(array, 2, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 5, '2': 3 } - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pickLimit(object, 2, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 5, c: 3 } - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.pickLimit(object, 2, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 5, c: 3 } - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - */ - var pickLimit = createPickLimit(true); - - /** - * @memberof async - * @namespace omit - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2, 4]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omit(array, iterator, function(err, res) { - * console.log(res); // { '2': 2, '3': 4 } - * console.log(order); // [1, 2, 3, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2, 4]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omit(array, iterator, function(err, res) { - * console.log(res); // { '2': 2, '3': 4 } - * console.log(order); // [[0, 1], [2, 2], [3, 1], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omit(object, iterator, function(err, res) { - * console.log(res); // { c: 2, d: 4 } - * console.log(order); // [1, 2, 3, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omit(object, iterator, function(err, res) { - * console.log(res); // { c: 2, d: 4 } - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b'], [4, 'd']] - * }); - * - */ - var omit = createPick(arrayEachIndexValue, baseEachKeyValue, symbolEachKeyValue, false); - - /** - * @memberof async - * @namespace omitSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2, 4]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omitSeries(array, iterator, function(err, res) { - * console.log(res); // { '2': 2, '3': 4 } - * console.log(order); // [1, 3, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2, 4]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omitSeries(array, iterator, function(err, res) { - * console.log(res); // { '2': 2, '3': 4 } - * console.log(order); // [[0, 1], [3, 1], [2, 2], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omitSeries(object, iterator, function(err, res) { - * console.log(res); // { c: 2, d: 4 } - * console.log(order); // [1, 3, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omitSeries(object, iterator, function(err, res) { - * console.log(res); // { c: 2, d: 4 } - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'c'], [4, 'd']] - * }); - * - */ - var omitSeries = createPickSeries(false); - - /** - * @memberof async - * @namespace omitLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omitLimit(array, 2, iterator, function(err, res) { - * console.log(res); // { '3': 4, '4': 2 } - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omitLimit(array, 2, iterator, function(err, res) { - * console.log(res); // { '3': 4, '4': 2 } - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omitLimit(object, 2, iterator, function(err, res) { - * console.log(res); // { d: 4, e: 2 } - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.omitLimit(object, 2, iterator, function(err, res) { - * console.log(res); // { d: 4, e: 2 } - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - */ - var omitLimit = createPickLimit(false); - - /** - * @memberof async - * @namespace transform - * @param {Array|Object} collection - * @param {Array|Object|Function} [accumulator] - * @param {Function} [iterator] - * @param {Function} [callback] - * @example - * - * // array - * var order = []; - * var collection = [1, 3, 2, 4]; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * result.push(num) - * done(); - * }, num * 10); - * }; - * async.transform(collection, iterator, function(err, res) { - * console.log(res); // [1, 2, 3, 4] - * console.log(order); // [1, 2, 3, 4] - * }); - * - * @example - * - * // array with index and accumulator - * var order = []; - * var collection = [1, 3, 2, 4]; - * var iterator = function(result, num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * result[index] = num; - * done(); - * }, num * 10); - * }; - * async.transform(collection, {}, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3, '2': 2, '3': 4 } - * console.log(order); // [[1, 0], [2, 2], [3, 1], [4, 3]] - * }); - * - * @example - * - * // object with accumulator - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * result.push(num); - * done(); - * }, num * 10); - * }; - * async.transform(collection, [], iterator, function(err, res) { - * console.log(res); // [1, 2, 3, 4] - * console.log(order); // [1, 2, 3, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(result, num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * result[key] = num; - * done(); - * }, num * 10); - * }; - * async.transform(collection, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3, c: 2, d: 4 } - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b'], [4, 'd']] - * }); - * - */ - var transform = createTransform(arrayEachResult, baseEachResult, symbolEachResult); - - /** - * @memberof async - * @namespace sortBy - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.sortBy(array, iterator, function(err, res) { - * console.log(res); // [1, 2, 3]; - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num); - * }, num * 10); - * }; - * async.sortBy(array, iterator, function(err, res) { - * console.log(res); // [1, 2, 3] - * console.log(order); // [[1, 0], [2, 2], [3, 1]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.sortBy(object, iterator, function(err, res) { - * console.log(res); // [1, 2, 3] - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.sortBy(object, iterator, function(err, res) { - * console.log(res); // [1, 2, 3] - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b']] - * }); - * - */ - var sortBy = createSortBy(arrayEachIndexValue, baseEachIndexValue, symbolEachIndexValue); - - /** - * @memberof async - * @namespace concat - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, [num]); - * }, num * 10); - * }; - * async.concat(array, iterator, function(err, res) { - * console.log(res); // [1, 2, 3]; - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, [num]); - * }, num * 10); - * }; - * async.concat(array, iterator, function(err, res) { - * console.log(res); // [1, 2, 3] - * console.log(order); // [[1, 0], [2, 2], [3, 1]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, [num]); - * }, num * 10); - * }; - * async.concat(object, iterator, function(err, res) { - * console.log(res); // [1, 2, 3] - * console.log(order); // [1, 2, 3] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, [num]); - * }, num * 10); - * }; - * async.concat(object, iterator, function(err, res) { - * console.log(res); // [1, 2, 3] - * console.log(order); // [[1, 'a'], [2, 'c'], [3, 'b']] - * }); - * - */ - var concat = createConcat(arrayEachIndex, baseEachIndex, symbolEachIndex); - - /** - * @memberof async - * @namespace groupBy - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [4.2, 6.4, 6.1]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupBy(array, iterator, function(err, res) { - * console.log(res); // { '4': [4.2], '6': [6.1, 6.4] } - * console.log(order); // [4.2, 6.1, 6.4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [4.2, 6.4, 6.1]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupBy(array, iterator, function(err, res) { - * console.log(res); // { '4': [4.2], '6': [6.1, 6.4] } - * console.log(order); // [[4.2, 0], [6.1, 2], [6.4, 1]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 4.2, b: 6.4, c: 6.1 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupBy(object, iterator, function(err, res) { - * console.log(res); // { '4': [4.2], '6': [6.1, 6.4] } - * console.log(order); // [4.2, 6.1, 6.4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 4.2, b: 6.4, c: 6.1 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupBy(object, iterator, function(err, res) { - * console.log(res); // { '4': [4.2], '6': [6.1, 6.4] } - * console.log(order); // [[4.2, 'a'], [6.1, 'c'], [6.4, 'b']] - * }); - * - */ - var groupBy = createGroupBy(arrayEachValue, baseEachValue, symbolEachValue); - - /** - * @memberof async - * @namespace parallel - * @param {Array|Object} tasks - functions - * @param {Function} callback - * @example - * - * var order = []; - * var tasks = [ - * function(done) { - * setTimeout(function() { - * order.push(1); - * done(null, 1); - * }, 10); - * }, - * function(done) { - * setTimeout(function() { - * order.push(2); - * done(null, 2); - * }, 30); - * }, - * function(done) { - * setTimeout(function() { - * order.push(3); - * done(null, 3); - * }, 40); - * }, - * function(done) { - * setTimeout(function() { - * order.push(4); - * done(null, 4); - * }, 20); - * } - * ]; - * async.parallel(tasks, function(err, res) { - * console.log(res); // [1, 2, 3, 4]; - * console.log(order); // [1, 4, 2, 3] - * }); - * - * @example - * - * var order = []; - * var tasks = { - * 'a': function(done) { - * setTimeout(function() { - * order.push(1); - * done(null, 1); - * }, 10); - * }, - * 'b': function(done) { - * setTimeout(function() { - * order.push(2); - * done(null, 2); - * }, 30); - * }, - * 'c': function(done) { - * setTimeout(function() { - * order.push(3); - * done(null, 3); - * }, 40); - * }, - * 'd': function(done) { - * setTimeout(function() { - * order.push(4); - * done(null, 4); - * }, 20); - * } - * }; - * async.parallel(tasks, function(err, res) { - * console.log(res); // { a: 1, b: 2, c: 3, d:4 } - * console.log(order); // [1, 4, 2, 3] - * }); - * - */ - var parallel = createParallel(arrayEachFunc, baseEachFunc); - - /** - * @memberof async - * @namespace applyEach - */ - var applyEach = createApplyEach(map); - - /** - * @memberof async - * @namespace applyEachSeries - */ - var applyEachSeries = createApplyEach(mapSeries); - - /** - * @memberof async - * @namespace log - */ - var log = createLogger('log'); - - /** - * @memberof async - * @namespace dir - */ - var dir = createLogger('dir'); - - /** - * @version 2.6.2 - * @namespace async - */ - var index = { - VERSION: '2.6.2', - - // Collections - each: each, - eachSeries: eachSeries, - eachLimit: eachLimit, - forEach: each, - forEachSeries: eachSeries, - forEachLimit: eachLimit, - eachOf: each, - eachOfSeries: eachSeries, - eachOfLimit: eachLimit, - forEachOf: each, - forEachOfSeries: eachSeries, - forEachOfLimit: eachLimit, - map: map, - mapSeries: mapSeries, - mapLimit: mapLimit, - mapValues: mapValues, - mapValuesSeries: mapValuesSeries, - mapValuesLimit: mapValuesLimit, - filter: filter, - filterSeries: filterSeries, - filterLimit: filterLimit, - select: filter, - selectSeries: filterSeries, - selectLimit: filterLimit, - reject: reject, - rejectSeries: rejectSeries, - rejectLimit: rejectLimit, - detect: detect, - detectSeries: detectSeries, - detectLimit: detectLimit, - find: detect, - findSeries: detectSeries, - findLimit: detectLimit, - pick: pick, - pickSeries: pickSeries, - pickLimit: pickLimit, - omit: omit, - omitSeries: omitSeries, - omitLimit: omitLimit, - reduce: reduce, - inject: reduce, - foldl: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - transform: transform, - transformSeries: transformSeries, - transformLimit: transformLimit, - sortBy: sortBy, - sortBySeries: sortBySeries, - sortByLimit: sortByLimit, - some: some, - someSeries: someSeries, - someLimit: someLimit, - any: some, - anySeries: someSeries, - anyLimit: someLimit, - every: every, - everySeries: everySeries, - everyLimit: everyLimit, - all: every, - allSeries: everySeries, - allLimit: everyLimit, - concat: concat, - concatSeries: concatSeries, - concatLimit: concatLimit, - groupBy: groupBy, - groupBySeries: groupBySeries, - groupByLimit: groupByLimit, - - // Control Flow - parallel: parallel, - series: series, - parallelLimit: parallelLimit, - tryEach: tryEach, - waterfall: waterfall, - angelFall: angelFall, - angelfall: angelFall, - whilst: whilst, - doWhilst: doWhilst, - until: until, - doUntil: doUntil, - during: during, - doDuring: doDuring, - forever: forever, - compose: compose, - seq: seq, - applyEach: applyEach, - applyEachSeries: applyEachSeries, - queue: queue, - priorityQueue: priorityQueue, - cargo: cargo, - auto: auto, - autoInject: autoInject, - retry: retry, - retryable: retryable, - iterator: iterator, - times: times, - timesSeries: timesSeries, - timesLimit: timesLimit, - race: race, - - // Utils - apply: apply, - nextTick: asyncNextTick, - setImmediate: asyncSetImmediate, - memoize: memoize, - unmemoize: unmemoize, - ensureAsync: ensureAsync, - constant: constant, - asyncify: asyncify, - wrapSync: asyncify, - log: log, - dir: dir, - reflect: reflect, - reflectAll: reflectAll, - timeout: timeout, - createLogger: createLogger, - - // Mode - safe: safe, - fast: fast - }; - - exports['default'] = index; - baseEachSync( - index, - function(func, key) { - exports[key] = func; - }, - nativeKeys(index) - ); - - /** - * @private - */ - function createImmediate(safeMode) { - var delay = function delay(fn) { - var args = slice(arguments, 1); - setTimeout(function() { - fn.apply(null, args); - }); - }; - asyncSetImmediate = typeof setImmediate === func ? setImmediate : delay; - if (typeof process === obj && typeof process.nextTick === func) { - nextTick = /^v0.10/.test(process.version) ? asyncSetImmediate : process.nextTick; - asyncNextTick = /^v0/.test(process.version) ? asyncSetImmediate : process.nextTick; - } else { - asyncNextTick = nextTick = asyncSetImmediate; - } - if (safeMode === false) { - nextTick = function(cb) { - cb(); - }; - } - } - - /* sync functions based on lodash */ - - /** - * Converts `arguments` to an array. - * - * @private - * @param {Array} array = The array to slice. - */ - function createArray(array) { - var index = -1; - var size = array.length; - var result = Array(size); - - while (++index < size) { - result[index] = array[index]; - } - return result; - } - - /** - * Create an array from `start` - * - * @private - * @param {Array} array - The array to slice. - * @param {number} start - The start position. - */ - function slice(array, start) { - var end = array.length; - var index = -1; - var size = end - start; - if (size <= 0) { - return []; - } - var result = Array(size); - - while (++index < size) { - result[index] = array[index + start]; - } - return result; - } - - /** - * @private - * @param {Object} object - */ - function objectClone(object) { - var keys = nativeKeys(object); - var size = keys.length; - var index = -1; - var result = {}; - - while (++index < size) { - var key = keys[index]; - result[key] = object[key]; - } - return result; - } - - /** - * Create an array with all falsey values removed. - * - * @private - * @param {Array} array - The array to compact. - */ - function compact(array) { - var index = -1; - var size = array.length; - var result = []; - - while (++index < size) { - var value = array[index]; - if (value) { - result[result.length] = value; - } - } - return result; - } - - /** - * Create an array of reverse sequence. - * - * @private - * @param {Array} array - The array to reverse. - */ - function reverse(array) { - var index = -1; - var size = array.length; - var result = Array(size); - var resIndex = size; - - while (++index < size) { - result[--resIndex] = array[index]; - } - return result; - } - - /** - * Checks if key exists in object property. - * - * @private - * @param {Object} object - The object to inspect. - * @param {string} key - The key to check. - */ - function has(object, key) { - return object.hasOwnProperty(key); - } - - /** - * Check if target exists in array. - * @private - * @param {Array} array - * @param {*} target - */ - function notInclude(array, target) { - var index = -1; - var size = array.length; - - while (++index < size) { - if (array[index] === target) { - return false; - } - } - return true; - } - - /** - * @private - * @param {Array} array - The array to iterate over. - * @param {Function} iterator - The function invoked per iteration. - */ - function arrayEachSync(array, iterator) { - var index = -1; - var size = array.length; - - while (++index < size) { - iterator(array[index], index); - } - return array; - } - - /** - * @private - * @param {Object} object - The object to iterate over. - * @param {Function} iterator - The function invoked per iteration. - * @param {Array} keys - */ - function baseEachSync(object, iterator, keys) { - var index = -1; - var size = keys.length; - - while (++index < size) { - var key = keys[index]; - iterator(object[key], key); - } - return object; - } - - /** - * @private - * @param {number} n - * @param {Function} iterator - */ - function timesSync(n, iterator) { - var index = -1; - while (++index < n) { - iterator(index); - } - } - - /** - * @private - * @param {Array} array - * @param {number[]} criteria - */ - function sortByCriteria(array, criteria) { - var l = array.length; - var indices = Array(l); - var i; - for (i = 0; i < l; i++) { - indices[i] = i; - } - quickSort(criteria, 0, l - 1, indices); - var result = Array(l); - for (var n = 0; n < l; n++) { - i = indices[n]; - result[n] = i === undefined ? array[n] : array[i]; - } - return result; - } - - function partition(array, i, j, mid, indices) { - var l = i; - var r = j; - while (l <= r) { - i = l; - while (l < r && array[l] < mid) { - l++; - } - while (r >= i && array[r] >= mid) { - r--; - } - if (l > r) { - break; - } - swap(array, indices, l++, r--); - } - return l; - } - - function swap(array, indices, l, r) { - var n = array[l]; - array[l] = array[r]; - array[r] = n; - var i = indices[l]; - indices[l] = indices[r]; - indices[r] = i; - } - - function quickSort(array, i, j, indices) { - if (i === j) { - return; - } - var k = i; - while (++k <= j && array[i] === array[k]) { - var l = k - 1; - if (indices[l] > indices[k]) { - var index = indices[l]; - indices[l] = indices[k]; - indices[k] = index; - } - } - if (k > j) { - return; - } - var p = array[i] > array[k] ? i : k; - k = partition(array, i, j, array[p], indices); - quickSort(array, i, k - 1, indices); - quickSort(array, k, j, indices); - } - - /** - * @Private - */ - function makeConcatResult(array) { - var result = []; - arrayEachSync(array, function(value) { - if (value === noop) { - return; - } - if (isArray(value)) { - nativePush.apply(result, value); - } else { - result.push(value); - } - }); - return result; - } - - /* async functions */ - - /** - * @private - */ - function arrayEach(array, iterator, callback) { - var index = -1; - var size = array.length; - - if (iterator.length === 3) { - while (++index < size) { - iterator(array[index], index, onlyOnce(callback)); - } - } else { - while (++index < size) { - iterator(array[index], onlyOnce(callback)); - } - } - } - - /** - * @private - */ - function baseEach(object, iterator, callback, keys) { - var key; - var index = -1; - var size = keys.length; - - if (iterator.length === 3) { - while (++index < size) { - key = keys[index]; - iterator(object[key], key, onlyOnce(callback)); - } - } else { - while (++index < size) { - iterator(object[keys[index]], onlyOnce(callback)); - } - } - } - - /** - * @private - */ - function symbolEach(collection, iterator, callback) { - var iter = collection[iteratorSymbol](); - var index = 0; - var item; - if (iterator.length === 3) { - while ((item = iter.next()).done === false) { - iterator(item.value, index++, onlyOnce(callback)); - } - } else { - while ((item = iter.next()).done === false) { - index++; - iterator(item.value, onlyOnce(callback)); - } - } - return index; - } - - /** - * @private - */ - function arrayEachResult(array, result, iterator, callback) { - var index = -1; - var size = array.length; - - if (iterator.length === 4) { - while (++index < size) { - iterator(result, array[index], index, onlyOnce(callback)); - } - } else { - while (++index < size) { - iterator(result, array[index], onlyOnce(callback)); - } - } - } - - /** - * @private - */ - function baseEachResult(object, result, iterator, callback, keys) { - var key; - var index = -1; - var size = keys.length; - - if (iterator.length === 4) { - while (++index < size) { - key = keys[index]; - iterator(result, object[key], key, onlyOnce(callback)); - } - } else { - while (++index < size) { - iterator(result, object[keys[index]], onlyOnce(callback)); - } - } - } - - /** - * @private - */ - function symbolEachResult(collection, result, iterator, callback) { - var item; - var index = 0; - var iter = collection[iteratorSymbol](); - - if (iterator.length === 4) { - while ((item = iter.next()).done === false) { - iterator(result, item.value, index++, onlyOnce(callback)); - } - } else { - while ((item = iter.next()).done === false) { - index++; - iterator(result, item.value, onlyOnce(callback)); - } - } - return index; - } - - /** - * @private - */ - function arrayEachFunc(array, createCallback) { - var index = -1; - var size = array.length; - - while (++index < size) { - array[index](createCallback(index)); - } - } - - /** - * @private - */ - function baseEachFunc(object, createCallback, keys) { - var key; - var index = -1; - var size = keys.length; - - while (++index < size) { - key = keys[index]; - object[key](createCallback(key)); - } - } - - /** - * @private - */ - function arrayEachIndex(array, iterator, createCallback) { - var index = -1; - var size = array.length; - - if (iterator.length === 3) { - while (++index < size) { - iterator(array[index], index, createCallback(index)); - } - } else { - while (++index < size) { - iterator(array[index], createCallback(index)); - } - } - } - - /** - * @private - */ - function baseEachIndex(object, iterator, createCallback, keys) { - var key; - var index = -1; - var size = keys.length; - - if (iterator.length === 3) { - while (++index < size) { - key = keys[index]; - iterator(object[key], key, createCallback(index)); - } - } else { - while (++index < size) { - iterator(object[keys[index]], createCallback(index)); - } - } - } - - /** - * @private - */ - function symbolEachIndex(collection, iterator, createCallback) { - var item; - var index = 0; - var iter = collection[iteratorSymbol](); - - if (iterator.length === 3) { - while ((item = iter.next()).done === false) { - iterator(item.value, index, createCallback(index++)); - } - } else { - while ((item = iter.next()).done === false) { - iterator(item.value, createCallback(index++)); - } - } - return index; - } - - /** - * @private - */ - function baseEachKey(object, iterator, createCallback, keys) { - var key; - var index = -1; - var size = keys.length; - - if (iterator.length === 3) { - while (++index < size) { - key = keys[index]; - iterator(object[key], key, createCallback(key)); - } - } else { - while (++index < size) { - key = keys[index]; - iterator(object[key], createCallback(key)); - } - } - } - - /** - * @private - */ - function symbolEachKey(collection, iterator, createCallback) { - var item; - var index = 0; - var iter = collection[iteratorSymbol](); - - if (iterator.length === 3) { - while ((item = iter.next()).done === false) { - iterator(item.value, index, createCallback(index++)); - } - } else { - while ((item = iter.next()).done === false) { - iterator(item.value, createCallback(index++)); - } - } - return index; - } - - /** - * @private - */ - function arrayEachValue(array, iterator, createCallback) { - var value; - var index = -1; - var size = array.length; - - if (iterator.length === 3) { - while (++index < size) { - value = array[index]; - iterator(value, index, createCallback(value)); - } - } else { - while (++index < size) { - value = array[index]; - iterator(value, createCallback(value)); - } - } - } - - /** - * @private - */ - function baseEachValue(object, iterator, createCallback, keys) { - var key, value; - var index = -1; - var size = keys.length; - - if (iterator.length === 3) { - while (++index < size) { - key = keys[index]; - value = object[key]; - iterator(value, key, createCallback(value)); - } - } else { - while (++index < size) { - value = object[keys[index]]; - iterator(value, createCallback(value)); - } - } - } - - /** - * @private - */ - function symbolEachValue(collection, iterator, createCallback) { - var value, item; - var index = 0; - var iter = collection[iteratorSymbol](); - - if (iterator.length === 3) { - while ((item = iter.next()).done === false) { - value = item.value; - iterator(value, index++, createCallback(value)); - } - } else { - while ((item = iter.next()).done === false) { - index++; - value = item.value; - iterator(value, createCallback(value)); - } - } - return index; - } - - /** - * @private - */ - function arrayEachIndexValue(array, iterator, createCallback) { - var value; - var index = -1; - var size = array.length; - - if (iterator.length === 3) { - while (++index < size) { - value = array[index]; - iterator(value, index, createCallback(index, value)); - } - } else { - while (++index < size) { - value = array[index]; - iterator(value, createCallback(index, value)); - } - } - } - - /** - * @private - */ - function baseEachIndexValue(object, iterator, createCallback, keys) { - var key, value; - var index = -1; - var size = keys.length; - - if (iterator.length === 3) { - while (++index < size) { - key = keys[index]; - value = object[key]; - iterator(value, key, createCallback(index, value)); - } - } else { - while (++index < size) { - value = object[keys[index]]; - iterator(value, createCallback(index, value)); - } - } - } - - /** - * @private - */ - function symbolEachIndexValue(collection, iterator, createCallback) { - var value, item; - var index = 0; - var iter = collection[iteratorSymbol](); - - if (iterator.length === 3) { - while ((item = iter.next()).done === false) { - value = item.value; - iterator(value, index, createCallback(index++, value)); - } - } else { - while ((item = iter.next()).done === false) { - value = item.value; - iterator(value, createCallback(index++, value)); - } - } - return index; - } - - /** - * @private - */ - function baseEachKeyValue(object, iterator, createCallback, keys) { - var key, value; - var index = -1; - var size = keys.length; - - if (iterator.length === 3) { - while (++index < size) { - key = keys[index]; - value = object[key]; - iterator(value, key, createCallback(key, value)); - } - } else { - while (++index < size) { - key = keys[index]; - value = object[key]; - iterator(value, createCallback(key, value)); - } - } - } - - /** - * @private - */ - function symbolEachKeyValue(collection, iterator, createCallback) { - var value, item; - var index = 0; - var iter = collection[iteratorSymbol](); - - if (iterator.length === 3) { - while ((item = iter.next()).done === false) { - value = item.value; - iterator(value, index, createCallback(index++, value)); - } - } else { - while ((item = iter.next()).done === false) { - value = item.value; - iterator(value, createCallback(index++, value)); - } - } - return index; - } - - /** - * @private - * @param {Function} func - */ - function onlyOnce(func) { - return function(err, res) { - var fn = func; - func = throwError; - fn(err, res); - }; - } - - /** - * @private - * @param {Function} func - */ - function once(func) { - return function(err, res) { - var fn = func; - func = noop; - fn(err, res); - }; - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - */ - function createEach(arrayEach, baseEach, symbolEach) { - return function each(collection, iterator, callback) { - callback = once(callback || noop); - var size, keys; - var completed = 0; - if (isArray(collection)) { - size = collection.length; - arrayEach(collection, iterator, done); - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = symbolEach(collection, iterator, done); - size && size === completed && callback(null); - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - baseEach(collection, iterator, done, keys); - } - if (!size) { - callback(null); - } - - function done(err, bool) { - if (err) { - callback = once(callback); - callback(err); - } else if (++completed === size) { - callback(null); - } else if (bool === false) { - callback = once(callback); - callback(null); - } - } - }; - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - * @param {Function} symbolEach - */ - function createMap(arrayEach, baseEach, symbolEach, useArray) { - var init, clone; - if (useArray) { - init = Array; - clone = createArray; - } else { - init = function() { - return {}; - }; - clone = objectClone; - } - - return function(collection, iterator, callback) { - callback = callback || noop; - var size, keys, result; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - result = init(size); - arrayEach(collection, iterator, createCallback); - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - // TODO: size could be changed - result = init(0); - size = symbolEach(collection, iterator, createCallback); - size && size === completed && callback(null, result); - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - result = init(size); - baseEach(collection, iterator, createCallback, keys); - } - if (!size) { - callback(null, init()); - } - - function createCallback(key) { - return function done(err, res) { - if (key === null) { - throwError(); - } - if (err) { - key = null; - callback = once(callback); - callback(err, clone(result)); - return; - } - result[key] = res; - key = null; - if (++completed === size) { - callback(null, result); - } - }; - } - }; - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - * @param {Function} symbolEach - * @param {boolean} bool - */ - function createFilter(arrayEach, baseEach, symbolEach, bool) { - return function(collection, iterator, callback) { - callback = callback || noop; - var size, keys, result; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - result = Array(size); - arrayEach(collection, iterator, createCallback); - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - result = []; - size = symbolEach(collection, iterator, createCallback); - size && size === completed && callback(null, compact(result)); - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - result = Array(size); - baseEach(collection, iterator, createCallback, keys); - } - if (!size) { - return callback(null, []); - } - - function createCallback(index, value) { - return function done(err, res) { - if (index === null) { - throwError(); - } - if (err) { - index = null; - callback = once(callback); - callback(err); - return; - } - if (!!res === bool) { - result[index] = value; - } - index = null; - if (++completed === size) { - callback(null, compact(result)); - } - }; - } - }; - } - - /** - * @private - * @param {boolean} bool - */ - function createFilterSeries(bool) { - return function(collection, iterator, callback) { - callback = onlyOnce(callback || noop); - var size, key, value, keys, iter, item, iterate; - var sync = false; - var completed = 0; - var result = []; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null, []); - } - iterate(); - - function arrayIterator() { - value = collection[completed]; - iterator(value, done); - } - - function arrayIteratorWithIndex() { - value = collection[completed]; - iterator(value, completed, done); - } - - function symbolIterator() { - item = iter.next(); - value = item.value; - item.done ? callback(null, result) : iterator(value, done); - } - - function symbolIteratorWithKey() { - item = iter.next(); - value = item.value; - item.done ? callback(null, result) : iterator(value, completed, done); - } - - function objectIterator() { - key = keys[completed]; - value = collection[key]; - iterator(value, done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - value = collection[key]; - iterator(value, key, done); - } - - function done(err, res) { - if (err) { - callback(err); - return; - } - if (!!res === bool) { - result[result.length] = value; - } - if (++completed === size) { - iterate = throwError; - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - }; - } - - /** - * @private - * @param {boolean} bool - */ - function createFilterLimit(bool) { - return function(collection, limit, iterator, callback) { - callback = callback || noop; - var size, index, key, value, keys, iter, item, iterate, result; - var sync = false; - var started = 0; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - result = []; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null, []); - } - result = result || Array(size); - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - index = started++; - if (index < size) { - value = collection[index]; - iterator(value, createCallback(value, index)); - } - } - - function arrayIteratorWithIndex() { - index = started++; - if (index < size) { - value = collection[index]; - iterator(value, index, createCallback(value, index)); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - value = item.value; - iterator(value, createCallback(value, started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, compact(result)); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - value = item.value; - iterator(value, started, createCallback(value, started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, compact(result)); - } - } - - function objectIterator() { - index = started++; - if (index < size) { - value = collection[keys[index]]; - iterator(value, createCallback(value, index)); - } - } - - function objectIteratorWithKey() { - index = started++; - if (index < size) { - key = keys[index]; - value = collection[key]; - iterator(value, key, createCallback(value, index)); - } - } - - function createCallback(value, index) { - return function(err, res) { - if (index === null) { - throwError(); - } - if (err) { - index = null; - iterate = noop; - callback = once(callback); - callback(err); - return; - } - if (!!res === bool) { - result[index] = value; - } - index = null; - if (++completed === size) { - callback = onlyOnce(callback); - callback(null, compact(result)); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - }; - } - - /** - * @memberof async - * @namespace eachSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(); - * }, num * 10); - * }; - * async.eachSeries(array, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(); - * }, num * 10); - * }; - * async.eachSeries(array, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [[1, 0], [3, 1], [2, 2]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(); - * }, num * 10); - * }; - * async.eachSeries(object, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(); - * }, num * 10); - * }; - * async.eachSeries(object, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'b']] - * }); - * - * @example - * - * // break - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num !== 3); - * }, num * 10); - * }; - * async.eachSeries(array, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [1, 3] - * }); - */ - function eachSeries(collection, iterator, callback) { - callback = onlyOnce(callback || noop); - var size, key, keys, iter, item, iterate; - var sync = false; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null); - } - iterate(); - - function arrayIterator() { - iterator(collection[completed], done); - } - - function arrayIteratorWithIndex() { - iterator(collection[completed], completed, done); - } - - function symbolIterator() { - item = iter.next(); - item.done ? callback(null) : iterator(item.value, done); - } - - function symbolIteratorWithKey() { - item = iter.next(); - item.done ? callback(null) : iterator(item.value, completed, done); - } - - function objectIterator() { - iterator(collection[keys[completed]], done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - iterator(collection[key], key, done); - } - - function done(err, bool) { - if (err) { - callback(err); - } else if (++completed === size || bool === false) { - iterate = throwError; - callback(null); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace eachLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(); - * }, num * 10); - * }; - * async.eachLimit(array, 2, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(); - * }, num * 10); - * }; - * async.eachLimit(array, 2, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(); - * }, num * 10); - * }; - * async.eachLimit(object, 2, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(); - * }, num * 10); - * }; - * async.eachLimit(object, 2, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - * @example - * - * // break - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num !== 5); - * }, num * 10); - * }; - * async.eachLimit(array, 2, iterator, function(err, res) { - * console.log(res); // undefined - * console.log(order); // [1, 3, 5] - * }); - * - */ - function eachLimit(collection, limit, iterator, callback) { - callback = callback || noop; - var size, index, key, keys, iter, item, iterate; - var sync = false; - var started = 0; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } else { - return callback(null); - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null); - } - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - if (started < size) { - iterator(collection[started++], done); - } - } - - function arrayIteratorWithIndex() { - index = started++; - if (index < size) { - iterator(collection[index], index, done); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - started++; - iterator(item.value, done); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - iterator(item.value, started++, done); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null); - } - } - - function objectIterator() { - if (started < size) { - iterator(collection[keys[started++]], done); - } - } - - function objectIteratorWithKey() { - index = started++; - if (index < size) { - key = keys[index]; - iterator(collection[key], key, done); - } - } - - function done(err, bool) { - if (err || bool === false) { - iterate = noop; - callback = once(callback); - callback(err); - } else if (++completed === size) { - iterator = noop; - iterate = throwError; - callback = onlyOnce(callback); - callback(null); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace mapSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapSeries(array, iterator, function(err, res) { - * console.log(res); // [1, 3, 2]; - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num); - * }, num * 10); - * }; - * async.mapSeries(array, iterator, function(err, res) { - * console.log(res); // [1, 3, 2] - * console.log(order); // [[1, 0], [3, 1], [2, 2]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapSeries(object, iterator, function(err, res) { - * console.log(res); // [1, 3, 2] - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.mapSeries(object, iterator, function(err, res) { - * console.log(res); // [1, 3, 2] - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'c']] - * }); - * - */ - function mapSeries(collection, iterator, callback) { - callback = callback || noop; - var size, key, keys, iter, item, result, iterate; - var sync = false; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - result = []; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null, []); - } - result = result || Array(size); - iterate(); - - function arrayIterator() { - iterator(collection[completed], done); - } - - function arrayIteratorWithIndex() { - iterator(collection[completed], completed, done); - } - - function symbolIterator() { - item = iter.next(); - item.done ? callback(null, result) : iterator(item.value, done); - } - - function symbolIteratorWithKey() { - item = iter.next(); - item.done ? callback(null, result) : iterator(item.value, completed, done); - } - - function objectIterator() { - iterator(collection[keys[completed]], done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - iterator(collection[key], key, done); - } - - function done(err, res) { - if (err) { - iterate = throwError; - callback = onlyOnce(callback); - callback(err, createArray(result)); - return; - } - result[completed] = res; - if (++completed === size) { - iterate = throwError; - callback(null, result); - callback = throwError; - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace mapLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [1, 5, 3, 4, 2] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num); - * }, num * 10); - * }; - * async.mapLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [1, 5, 3, 4, 2] - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [1, 5, 3, 4, 2] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.mapLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [1, 5, 3, 4, 2] - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - */ - function mapLimit(collection, limit, iterator, callback) { - callback = callback || noop; - var size, index, key, keys, iter, item, result, iterate; - var sync = false; - var started = 0; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - result = []; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null, []); - } - result = result || Array(size); - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - index = started++; - if (index < size) { - iterator(collection[index], createCallback(index)); - } - } - - function arrayIteratorWithIndex() { - index = started++; - if (index < size) { - iterator(collection[index], index, createCallback(index)); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - iterator(item.value, createCallback(started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - iterator(item.value, started, createCallback(started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function objectIterator() { - index = started++; - if (index < size) { - iterator(collection[keys[index]], createCallback(index)); - } - } - - function objectIteratorWithKey() { - index = started++; - if (index < size) { - key = keys[index]; - iterator(collection[key], key, createCallback(index)); - } - } - - function createCallback(index) { - return function(err, res) { - if (index === null) { - throwError(); - } - if (err) { - index = null; - iterate = noop; - callback = once(callback); - callback(err, createArray(result)); - return; - } - result[index] = res; - index = null; - if (++completed === size) { - iterate = throwError; - callback(null, result); - callback = throwError; - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - } - - /** - * @memberof async - * @namespace mapValuesSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapValuesSeries(array, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3, '2': 2 } - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num); - * }, num * 10); - * }; - * async.mapValuesSeries(array, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3, '2': 2 } - * console.log(order); // [[1, 0], [3, 1], [2, 2]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapValuesSeries(object, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3, c: 2 } - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.mapValuesSeries(object, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3, c: 2 } - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'c']] - * }); - * - */ - function mapValuesSeries(collection, iterator, callback) { - callback = callback || noop; - var size, key, keys, iter, item, iterate; - var sync = false; - var result = {}; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null, result); - } - iterate(); - - function arrayIterator() { - key = completed; - iterator(collection[completed], done); - } - - function arrayIteratorWithIndex() { - key = completed; - iterator(collection[completed], completed, done); - } - - function symbolIterator() { - key = completed; - item = iter.next(); - item.done ? callback(null, result) : iterator(item.value, done); - } - - function symbolIteratorWithKey() { - key = completed; - item = iter.next(); - item.done ? callback(null, result) : iterator(item.value, completed, done); - } - - function objectIterator() { - key = keys[completed]; - iterator(collection[key], done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - iterator(collection[key], key, done); - } - - function done(err, res) { - if (err) { - iterate = throwError; - callback = onlyOnce(callback); - callback(err, objectClone(result)); - return; - } - result[key] = res; - if (++completed === size) { - iterate = throwError; - callback(null, result); - callback = throwError; - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace mapValuesLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapValuesLimit(array, 2, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 5, '2': 3, '3': 4, '4': 2 } - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num); - * }, num * 10); - * }; - * async.mapValuesLimit(array, 2, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 5, '2': 3, '3': 4, '4': 2 } - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.mapValuesLimit(object, 2, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 5, c: 3, d: 4, e: 2 } - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.mapValuesLimit(object, 2, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 5, c: 3, d: 4, e: 2 } - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - */ - function mapValuesLimit(collection, limit, iterator, callback) { - callback = callback || noop; - var size, index, key, keys, iter, item, iterate; - var sync = false; - var result = {}; - var started = 0; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null, result); - } - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - index = started++; - if (index < size) { - iterator(collection[index], createCallback(index)); - } - } - - function arrayIteratorWithIndex() { - index = started++; - if (index < size) { - iterator(collection[index], index, createCallback(index)); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - iterator(item.value, createCallback(started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - iterator(item.value, started, createCallback(started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function objectIterator() { - index = started++; - if (index < size) { - key = keys[index]; - iterator(collection[key], createCallback(key)); - } - } - - function objectIteratorWithKey() { - index = started++; - if (index < size) { - key = keys[index]; - iterator(collection[key], key, createCallback(key)); - } - } - - function createCallback(key) { - return function(err, res) { - if (key === null) { - throwError(); - } - if (err) { - key = null; - iterate = noop; - callback = once(callback); - callback(err, objectClone(result)); - return; - } - result[key] = res; - key = null; - if (++completed === size) { - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - * @param {Function} symbolEach - * @param {boolean} bool - */ - function createDetect(arrayEach, baseEach, symbolEach, bool) { - return function(collection, iterator, callback) { - callback = callback || noop; - var size, keys; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - arrayEach(collection, iterator, createCallback); - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = symbolEach(collection, iterator, createCallback); - size && size === completed && callback(null); - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - baseEach(collection, iterator, createCallback, keys); - } - if (!size) { - callback(null); - } - - function createCallback(value) { - var called = false; - return function done(err, res) { - if (called) { - throwError(); - } - called = true; - if (err) { - callback = once(callback); - callback(err); - } else if (!!res === bool) { - callback = once(callback); - callback(null, value); - } else if (++completed === size) { - callback(null); - } - }; - } - }; - } - - /** - * @private - * @param {boolean} bool - */ - function createDetectSeries(bool) { - return function(collection, iterator, callback) { - callback = onlyOnce(callback || noop); - var size, key, value, keys, iter, item, iterate; - var sync = false; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null); - } - iterate(); - - function arrayIterator() { - value = collection[completed]; - iterator(value, done); - } - - function arrayIteratorWithIndex() { - value = collection[completed]; - iterator(value, completed, done); - } - - function symbolIterator() { - item = iter.next(); - value = item.value; - item.done ? callback(null) : iterator(value, done); - } - - function symbolIteratorWithKey() { - item = iter.next(); - value = item.value; - item.done ? callback(null) : iterator(value, completed, done); - } - - function objectIterator() { - value = collection[keys[completed]]; - iterator(value, done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - value = collection[key]; - iterator(value, key, done); - } - - function done(err, res) { - if (err) { - callback(err); - } else if (!!res === bool) { - iterate = throwError; - callback(null, value); - } else if (++completed === size) { - iterate = throwError; - callback(null); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - }; - } - - /** - * @private - * @param {boolean} bool - */ - function createDetectLimit(bool) { - return function(collection, limit, iterator, callback) { - callback = callback || noop; - var size, index, key, value, keys, iter, item, iterate; - var sync = false; - var started = 0; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null); - } - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - index = started++; - if (index < size) { - value = collection[index]; - iterator(value, createCallback(value)); - } - } - - function arrayIteratorWithIndex() { - index = started++; - if (index < size) { - value = collection[index]; - iterator(value, index, createCallback(value)); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - started++; - value = item.value; - iterator(value, createCallback(value)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - value = item.value; - iterator(value, started++, createCallback(value)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null); - } - } - - function objectIterator() { - index = started++; - if (index < size) { - value = collection[keys[index]]; - iterator(value, createCallback(value)); - } - } - - function objectIteratorWithKey() { - if (started < size) { - key = keys[started++]; - value = collection[key]; - iterator(value, key, createCallback(value)); - } - } - - function createCallback(value) { - var called = false; - return function(err, res) { - if (called) { - throwError(); - } - called = true; - if (err) { - iterate = noop; - callback = once(callback); - callback(err); - } else if (!!res === bool) { - iterate = noop; - callback = once(callback); - callback(null, value); - } else if (++completed === size) { - callback(null); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - }; - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - * @param {Function} symbolEach - * @param {boolean} bool - */ - function createPick(arrayEach, baseEach, symbolEach, bool) { - return function(collection, iterator, callback) { - callback = callback || noop; - var size, keys; - var completed = 0; - var result = {}; - - if (isArray(collection)) { - size = collection.length; - arrayEach(collection, iterator, createCallback); - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = symbolEach(collection, iterator, createCallback); - size && size === completed && callback(null, result); - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - baseEach(collection, iterator, createCallback, keys); - } - if (!size) { - return callback(null, {}); - } - - function createCallback(key, value) { - return function done(err, res) { - if (key === null) { - throwError(); - } - if (err) { - key = null; - callback = once(callback); - callback(err, objectClone(result)); - return; - } - if (!!res === bool) { - result[key] = value; - } - key = null; - if (++completed === size) { - callback(null, result); - } - }; - } - }; - } - - /** - * @private - * @param {boolean} bool - */ - function createPickSeries(bool) { - return function(collection, iterator, callback) { - callback = onlyOnce(callback || noop); - var size, key, value, keys, iter, item, iterate; - var sync = false; - var result = {}; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null, {}); - } - iterate(); - - function arrayIterator() { - key = completed; - value = collection[completed]; - iterator(value, done); - } - - function arrayIteratorWithIndex() { - key = completed; - value = collection[completed]; - iterator(value, completed, done); - } - - function symbolIterator() { - key = completed; - item = iter.next(); - value = item.value; - item.done ? callback(null, result) : iterator(value, done); - } - - function symbolIteratorWithKey() { - key = completed; - item = iter.next(); - value = item.value; - item.done ? callback(null, result) : iterator(value, key, done); - } - - function objectIterator() { - key = keys[completed]; - value = collection[key]; - iterator(value, done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - value = collection[key]; - iterator(value, key, done); - } - - function done(err, res) { - if (err) { - callback(err, result); - return; - } - if (!!res === bool) { - result[key] = value; - } - if (++completed === size) { - iterate = throwError; - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - }; - } - - /** - * @private - * @param {boolean} bool - */ - function createPickLimit(bool) { - return function(collection, limit, iterator, callback) { - callback = callback || noop; - var size, index, key, value, keys, iter, item, iterate; - var sync = false; - var result = {}; - var started = 0; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null, {}); - } - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - index = started++; - if (index < size) { - value = collection[index]; - iterator(value, createCallback(value, index)); - } - } - - function arrayIteratorWithIndex() { - index = started++; - if (index < size) { - value = collection[index]; - iterator(value, index, createCallback(value, index)); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - value = item.value; - iterator(value, createCallback(value, started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - value = item.value; - iterator(value, started, createCallback(value, started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function objectIterator() { - if (started < size) { - key = keys[started++]; - value = collection[key]; - iterator(value, createCallback(value, key)); - } - } - - function objectIteratorWithKey() { - if (started < size) { - key = keys[started++]; - value = collection[key]; - iterator(value, key, createCallback(value, key)); - } - } - - function createCallback(value, key) { - return function(err, res) { - if (key === null) { - throwError(); - } - if (err) { - key = null; - iterate = noop; - callback = once(callback); - callback(err, objectClone(result)); - return; - } - if (!!res === bool) { - result[key] = value; - } - key = null; - if (++completed === size) { - iterate = throwError; - callback = onlyOnce(callback); - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - }; - } - - /** - * @memberof async - * @namespace reduce - * @param {Array|Object} collection - * @param {*} result - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var collection = [1, 3, 2, 4]; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, result + num); - * }, num * 10); - * }; - * async.reduce(collection, 0, iterator, function(err, res) { - * console.log(res); // 10 - * console.log(order); // [1, 3, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var collection = [1, 3, 2, 4]; - * var iterator = function(result, num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, result + num); - * }, num * 10); - * }; - * async.reduce(collection, '', iterator, function(err, res) { - * console.log(res); // '1324' - * console.log(order); // [[1, 0], [3, 1], [2, 2], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, result + num); - * }, num * 10); - * }; - * async.reduce(collection, '', iterator, function(err, res) { - * console.log(res); // '1324' - * console.log(order); // [1, 3, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(result, num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, result + num); - * }, num * 10); - * }; - * async.reduce(collection, 0, iterator, function(err, res) { - * console.log(res); // 10 - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'b'], [4, 'd']] - * }); - * - */ - function reduce(collection, result, iterator, callback) { - callback = onlyOnce(callback || noop); - var size, key, keys, iter, item, iterate; - var sync = false; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 4 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 4 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 4 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null, result); - } - iterate(result); - - function arrayIterator(result) { - iterator(result, collection[completed], done); - } - - function arrayIteratorWithIndex(result) { - iterator(result, collection[completed], completed, done); - } - - function symbolIterator(result) { - item = iter.next(); - item.done ? callback(null, result) : iterator(result, item.value, done); - } - - function symbolIteratorWithKey(result) { - item = iter.next(); - item.done ? callback(null, result) : iterator(result, item.value, completed, done); - } - - function objectIterator(result) { - iterator(result, collection[keys[completed]], done); - } - - function objectIteratorWithKey(result) { - key = keys[completed]; - iterator(result, collection[key], key, done); - } - - function done(err, result) { - if (err) { - callback(err, result); - } else if (++completed === size) { - iterator = throwError; - callback(null, result); - } else if (sync) { - nextTick(function() { - iterate(result); - }); - } else { - sync = true; - iterate(result); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace reduceRight - * @param {Array|Object} collection - * @param {*} result - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var collection = [1, 3, 2, 4]; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, result + num); - * }, num * 10); - * }; - * async.reduceRight(collection, 0, iterator, function(err, res) { - * console.log(res); // 10 - * console.log(order); // [4, 2, 3, 1] - * }); - * - * @example - * - * // array with index - * var order = []; - * var collection = [1, 3, 2, 4]; - * var iterator = function(result, num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, result + num); - * }, num * 10); - * }; - * async.reduceRight(collection, '', iterator, function(err, res) { - * console.log(res); // '4231' - * console.log(order); // [[4, 3], [2, 2], [3, 1], [1, 0]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, result + num); - * }, num * 10); - * }; - * async.reduceRight(collection, '', iterator, function(err, res) { - * console.log(res); // '4231' - * console.log(order); // [4, 2, 3, 1] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(result, num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, result + num); - * }, num * 10); - * }; - * async.reduceRight(collection, 0, iterator, function(err, res) { - * console.log(res); // 10 - * console.log(order); // [[4, 3], [2, 2], [3, 1], [1, 0]] - * }); - * - */ - function reduceRight(collection, result, iterator, callback) { - callback = onlyOnce(callback || noop); - var resIndex, index, key, keys, iter, item, col, iterate; - var sync = false; - - if (isArray(collection)) { - resIndex = collection.length; - iterate = iterator.length === 4 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - col = []; - iter = collection[iteratorSymbol](); - index = -1; - while ((item = iter.next()).done === false) { - col[++index] = item.value; - } - collection = col; - resIndex = col.length; - iterate = iterator.length === 4 ? arrayIteratorWithIndex : arrayIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - resIndex = keys.length; - iterate = iterator.length === 4 ? objectIteratorWithKey : objectIterator; - } - if (!resIndex) { - return callback(null, result); - } - iterate(result); - - function arrayIterator(result) { - iterator(result, collection[--resIndex], done); - } - - function arrayIteratorWithIndex(result) { - iterator(result, collection[--resIndex], resIndex, done); - } - - function objectIterator(result) { - iterator(result, collection[keys[--resIndex]], done); - } - - function objectIteratorWithKey(result) { - key = keys[--resIndex]; - iterator(result, collection[key], key, done); - } - - function done(err, result) { - if (err) { - callback(err, result); - } else if (resIndex === 0) { - iterate = throwError; - callback(null, result); - } else if (sync) { - nextTick(function() { - iterate(result); - }); - } else { - sync = true; - iterate(result); - } - sync = false; - } - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - * @param {Function} symbolEach - */ - function createTransform(arrayEach, baseEach, symbolEach) { - return function transform(collection, accumulator, iterator, callback) { - if (arguments.length === 3) { - callback = iterator; - iterator = accumulator; - accumulator = undefined; - } - callback = callback || noop; - var size, keys, result; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - result = accumulator !== undefined ? accumulator : []; - arrayEach(collection, result, iterator, done); - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - result = accumulator !== undefined ? accumulator : {}; - size = symbolEach(collection, result, iterator, done); - size && size === completed && callback(null, result); - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - result = accumulator !== undefined ? accumulator : {}; - baseEach(collection, result, iterator, done, keys); - } - if (!size) { - callback(null, accumulator !== undefined ? accumulator : result || {}); - } - - function done(err, bool) { - if (err) { - callback = once(callback); - callback(err, isArray(result) ? createArray(result) : objectClone(result)); - } else if (++completed === size) { - callback(null, result); - } else if (bool === false) { - callback = once(callback); - callback(null, isArray(result) ? createArray(result) : objectClone(result)); - } - } - }; - } - - /** - * @memberof async - * @namespace transformSeries - * @param {Array|Object} collection - * @param {Array|Object|Function} [accumulator] - * @param {Function} [iterator] - * @param {Function} [callback] - * @example - * - * // array - * var order = []; - * var collection = [1, 3, 2, 4]; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * result.push(num) - * done(); - * }, num * 10); - * }; - * async.transformSeries(collection, iterator, function(err, res) { - * console.log(res); // [1, 3, 2, 4] - * console.log(order); // [1, 3, 2, 4] - * }); - * - * @example - * - * // array with index and accumulator - * var order = []; - * var collection = [1, 3, 2, 4]; - * var iterator = function(result, num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * result[index] = num; - * done(); - * }, num * 10); - * }; - * async.transformSeries(collection, {}, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 3, '2': 2, '3': 4 } - * console.log(order); // [[1, 0], [3, 1], [2, 2], [4, 3]] - * }); - * - * @example - * - * // object with accumulator - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * result.push(num); - * done(); - * }, num * 10); - * }; - * async.transformSeries(collection, [], iterator, function(err, res) { - * console.log(res); // [1, 3, 2, 4] - * console.log(order); // [1, 3, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2, d: 4 }; - * var iterator = function(result, num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * result[key] = num; - * done(); - * }, num * 10); - * }; - * async.transformSeries(collection, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 3, c: 2, d: 4 } - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'b'], [4, 'd']] - * }); - * - */ - function transformSeries(collection, accumulator, iterator, callback) { - if (arguments.length === 3) { - callback = iterator; - iterator = accumulator; - accumulator = undefined; - } - callback = onlyOnce(callback || noop); - var size, key, keys, iter, item, iterate, result; - var sync = false; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - result = accumulator !== undefined ? accumulator : []; - iterate = iterator.length === 4 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - result = accumulator !== undefined ? accumulator : {}; - iterate = iterator.length === 4 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - result = accumulator !== undefined ? accumulator : {}; - iterate = iterator.length === 4 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null, accumulator !== undefined ? accumulator : result || {}); - } - iterate(); - - function arrayIterator() { - iterator(result, collection[completed], done); - } - - function arrayIteratorWithIndex() { - iterator(result, collection[completed], completed, done); - } - - function symbolIterator() { - item = iter.next(); - item.done ? callback(null, result) : iterator(result, item.value, done); - } - - function symbolIteratorWithKey() { - item = iter.next(); - item.done ? callback(null, result) : iterator(result, item.value, completed, done); - } - - function objectIterator() { - iterator(result, collection[keys[completed]], done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - iterator(result, collection[key], key, done); - } - - function done(err, bool) { - if (err) { - callback(err, result); - } else if (++completed === size || bool === false) { - iterate = throwError; - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace transformLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Array|Object|Function} [accumulator] - * @param {Function} [iterator] - * @param {Function} [callback] - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * result.push(num); - * done(); - * }, num * 10); - * }; - * async.transformLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [1, 3, 5, 2, 4] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index and accumulator - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(result, num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * result[index] = key; - * done(); - * }, num * 10); - * }; - * async.transformLimit(array, 2, {}, iterator, function(err, res) { - * console.log(res); // { '0': 1, '1': 5, '2': 3, '3': 4, '4': 2 } - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object with accumulator - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(result, num, done) { - * setTimeout(function() { - * order.push(num); - * result.push(num); - * done(); - * }, num * 10); - * }; - * async.transformLimit(object, 2, [], iterator, function(err, res) { - * console.log(res); // [1, 3, 5, 2, 4] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(result, num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * result[key] = num; - * done(); - * }, num * 10); - * }; - * async.transformLimit(object, 2, iterator, function(err, res) { - * console.log(res); // { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - */ - function transformLimit(collection, limit, accumulator, iterator, callback) { - if (arguments.length === 4) { - callback = iterator; - iterator = accumulator; - accumulator = undefined; - } - callback = callback || noop; - var size, index, key, keys, iter, item, iterate, result; - var sync = false; - var started = 0; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - result = accumulator !== undefined ? accumulator : []; - iterate = iterator.length === 4 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - result = accumulator !== undefined ? accumulator : {}; - iterate = iterator.length === 4 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - result = accumulator !== undefined ? accumulator : {}; - iterate = iterator.length === 4 ? objectIteratorWithKey : objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null, accumulator !== undefined ? accumulator : result || {}); - } - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - index = started++; - if (index < size) { - iterator(result, collection[index], onlyOnce(done)); - } - } - - function arrayIteratorWithIndex() { - index = started++; - if (index < size) { - iterator(result, collection[index], index, onlyOnce(done)); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - started++; - iterator(result, item.value, onlyOnce(done)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - iterator(result, item.value, started++, onlyOnce(done)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function objectIterator() { - index = started++; - if (index < size) { - iterator(result, collection[keys[index]], onlyOnce(done)); - } - } - - function objectIteratorWithKey() { - index = started++; - if (index < size) { - key = keys[index]; - iterator(result, collection[key], key, onlyOnce(done)); - } - } - - function done(err, bool) { - if (err || bool === false) { - iterate = noop; - callback(err || null, isArray(result) ? createArray(result) : objectClone(result)); - callback = noop; - } else if (++completed === size) { - iterator = noop; - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @private - * @param {function} arrayEach - * @param {function} baseEach - * @param {function} symbolEach - */ - function createSortBy(arrayEach, baseEach, symbolEach) { - return function sortBy(collection, iterator, callback) { - callback = callback || noop; - var size, array, criteria; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - array = Array(size); - criteria = Array(size); - arrayEach(collection, iterator, createCallback); - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - array = []; - criteria = []; - size = symbolEach(collection, iterator, createCallback); - size && size === completed && callback(null, sortByCriteria(array, criteria)); - } else if (typeof collection === obj) { - var keys = nativeKeys(collection); - size = keys.length; - array = Array(size); - criteria = Array(size); - baseEach(collection, iterator, createCallback, keys); - } - if (!size) { - callback(null, []); - } - - function createCallback(index, value) { - var called = false; - array[index] = value; - return function done(err, criterion) { - if (called) { - throwError(); - } - called = true; - criteria[index] = criterion; - if (err) { - callback = once(callback); - callback(err); - } else if (++completed === size) { - callback(null, sortByCriteria(array, criteria)); - } - }; - } - }; - } - - /** - * @memberof async - * @namespace sortBySeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.sortBySeries(array, iterator, function(err, res) { - * console.log(res); // [1, 2, 3]; - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num); - * }, num * 10); - * }; - * async.sortBySeries(array, iterator, function(err, res) { - * console.log(res); // [1, 2, 3] - * console.log(order); // [[1, 0], [3, 1], [2, 2]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.sortBySeries(object, iterator, function(err, res) { - * console.log(res); // [1, 2, 3] - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.sortBySeries(object, iterator, function(err, res) { - * console.log(res); // [1, 2, 3] - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'c']] - * }); - * - */ - function sortBySeries(collection, iterator, callback) { - callback = onlyOnce(callback || noop); - var size, key, value, keys, iter, item, array, criteria, iterate; - var sync = false; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - array = collection; - criteria = Array(size); - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - array = []; - criteria = []; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - array = Array(size); - criteria = Array(size); - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null, []); - } - iterate(); - - function arrayIterator() { - value = collection[completed]; - iterator(value, done); - } - - function arrayIteratorWithIndex() { - value = collection[completed]; - iterator(value, completed, done); - } - - function symbolIterator() { - item = iter.next(); - if (item.done) { - return callback(null, sortByCriteria(array, criteria)); - } - value = item.value; - array[completed] = value; - iterator(value, done); - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done) { - return callback(null, sortByCriteria(array, criteria)); - } - value = item.value; - array[completed] = value; - iterator(value, completed, done); - } - - function objectIterator() { - value = collection[keys[completed]]; - array[completed] = value; - iterator(value, done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - value = collection[key]; - array[completed] = value; - iterator(value, key, done); - } - - function done(err, criterion) { - criteria[completed] = criterion; - if (err) { - callback(err); - } else if (++completed === size) { - iterate = throwError; - callback(null, sortByCriteria(array, criteria)); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace sortByLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.sortByLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [1, 2, 3, 4, 5] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num); - * }, num * 10); - * }; - * async.sortByLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [1, 2, 3, 4, 5] - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num); - * }, num * 10); - * }; - * async.sortByLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [1, 2, 3, 4, 5] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.sortByLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [1, 2, 3, 4, 5] - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - */ - function sortByLimit(collection, limit, iterator, callback) { - callback = callback || noop; - var size, index, key, value, array, keys, iter, item, criteria, iterate; - var sync = false; - var started = 0; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - array = collection; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - array = []; - criteria = []; - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - array = Array(size); - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null, []); - } - criteria = criteria || Array(size); - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - if (started < size) { - value = collection[started]; - iterator(value, createCallback(value, started++)); - } - } - - function arrayIteratorWithIndex() { - index = started++; - if (index < size) { - value = collection[index]; - iterator(value, index, createCallback(value, index)); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - value = item.value; - array[started] = value; - iterator(value, createCallback(value, started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, sortByCriteria(array, criteria)); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - value = item.value; - array[started] = value; - iterator(value, started, createCallback(value, started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, sortByCriteria(array, criteria)); - } - } - - function objectIterator() { - if (started < size) { - value = collection[keys[started]]; - array[started] = value; - iterator(value, createCallback(value, started++)); - } - } - - function objectIteratorWithKey() { - if (started < size) { - key = keys[started]; - value = collection[key]; - array[started] = value; - iterator(value, key, createCallback(value, started++)); - } - } - - function createCallback(value, index) { - var called = false; - return function(err, criterion) { - if (called) { - throwError(); - } - called = true; - criteria[index] = criterion; - if (err) { - iterate = noop; - callback(err); - callback = noop; - } else if (++completed === size) { - callback(null, sortByCriteria(array, criteria)); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - } - - /** - * @memberof async - * @namespace some - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.some(array, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [1] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.some(array, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [[1, 0]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.some(object, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [1] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.some(object, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [[1, 'a']] - * }); - * - */ - function some(collection, iterator, callback) { - callback = callback || noop; - detect(collection, iterator, done); - - function done(err, res) { - if (err) { - return callback(err); - } - callback(null, !!res); - } - } - - /** - * @memberof async - * @namespace someSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.someSeries(array, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [1] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.someSeries(array, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [[1, 0]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.someSeries(object, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [1] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.someSeries(object, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [[1, 'a']] - * }); - * - */ - function someSeries(collection, iterator, callback) { - callback = callback || noop; - detectSeries(collection, iterator, done); - - function done(err, res) { - if (err) { - return callback(err); - } - callback(null, !!res); - } - } - - /** - * @memberof async - * @namespace someLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.someLimit(array, 2, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [1] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.someLimit(array, 2, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [[1, 0]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, num % 2); - * }, num * 10); - * }; - * async.someLimit(object, 2, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [1] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num % 2); - * }, num * 10); - * }; - * async.someLimit(object, 2, iterator, function(err, res) { - * console.log(res); // true - * console.log(order); // [[1, 'a']] - * }); - * - */ - function someLimit(collection, limit, iterator, callback) { - callback = callback || noop; - detectLimit(collection, limit, iterator, done); - - function done(err, res) { - if (err) { - return callback(err); - } - callback(null, !!res); - } - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - * @param {Function} symbolEach - */ - function createEvery(arrayEach, baseEach, symbolEach) { - var deny = createDetect(arrayEach, baseEach, symbolEach, false); - - return function every(collection, iterator, callback) { - callback = callback || noop; - deny(collection, iterator, done); - - function done(err, res) { - if (err) { - return callback(err); - } - callback(null, !res); - } - }; - } - - /** - * @private - */ - function createEverySeries() { - var denySeries = createDetectSeries(false); - - return function everySeries(collection, iterator, callback) { - callback = callback || noop; - denySeries(collection, iterator, done); - - function done(err, res) { - if (err) { - return callback(err); - } - callback(null, !res); - } - }; - } - - /** - * @private - */ - function createEveryLimit() { - var denyLimit = createDetectLimit(false); - - return function everyLimit(collection, limit, iterator, callback) { - callback = callback || noop; - denyLimit(collection, limit, iterator, done); - - function done(err, res) { - if (err) { - return callback(err); - } - callback(null, !res); - } - }; - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - * @param {Function} symbolEach - */ - function createConcat(arrayEach, baseEach, symbolEach) { - return function concat(collection, iterator, callback) { - callback = callback || noop; - var size, result; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - result = Array(size); - arrayEach(collection, iterator, createCallback); - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - result = []; - size = symbolEach(collection, iterator, createCallback); - size && size === completed && callback(null, result); - } else if (typeof collection === obj) { - var keys = nativeKeys(collection); - size = keys.length; - result = Array(size); - baseEach(collection, iterator, createCallback, keys); - } - if (!size) { - callback(null, []); - } - - function createCallback(index) { - return function done(err, res) { - if (index === null) { - throwError(); - } - if (err) { - index = null; - callback = once(callback); - arrayEachSync(result, function(array, index) { - if (array === undefined) { - result[index] = noop; - } - }); - callback(err, makeConcatResult(result)); - return; - } - switch (arguments.length) { - case 0: - case 1: - result[index] = noop; - break; - case 2: - result[index] = res; - break; - default: - result[index] = slice(arguments, 1); - break; - } - index = null; - if (++completed === size) { - callback(null, makeConcatResult(result)); - } - }; - } - }; - } - - /** - * @memberof async - * @namespace concatSeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, [num]); - * }, num * 10); - * }; - * async.concatSeries(array, iterator, function(err, res) { - * console.log(res); // [1, 3, 2]; - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 3, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, [num]); - * }, num * 10); - * }; - * async.concatSeries(array, iterator, function(err, res) { - * console.log(res); // [1, 3, 2] - * console.log(order); // [[1, 0], [3, 1], [2, 2]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, [num]); - * }, num * 10); - * }; - * async.concatSeries(object, iterator, function(err, res) { - * console.log(res); // [1, 3, 2] - * console.log(order); // [1, 3, 2] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 3, c: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, [num]); - * }, num * 10); - * }; - * async.concatSeries(object, iterator, function(err, res) { - * console.log(res); // [1, 3, 2] - * console.log(order); // [[1, 'a'], [3, 'b'], [2, 'c']] - * }); - * - */ - function concatSeries(collection, iterator, callback) { - callback = onlyOnce(callback || noop); - var size, key, keys, iter, item, iterate; - var sync = false; - var result = []; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null, result); - } - iterate(); - - function arrayIterator() { - iterator(collection[completed], done); - } - - function arrayIteratorWithIndex() { - iterator(collection[completed], completed, done); - } - - function symbolIterator() { - item = iter.next(); - item.done ? callback(null, result) : iterator(item.value, done); - } - - function symbolIteratorWithKey() { - item = iter.next(); - item.done ? callback(null, result) : iterator(item.value, completed, done); - } - - function objectIterator() { - iterator(collection[keys[completed]], done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - iterator(collection[key], key, done); - } - - function done(err, array) { - if (isArray(array)) { - nativePush.apply(result, array); - } else if (arguments.length >= 2) { - nativePush.apply(result, slice(arguments, 1)); - } - if (err) { - callback(err, result); - } else if (++completed === size) { - iterate = throwError; - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace concatLimit - * @param {Array|Object} collection - * @param {number} limit - limit >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, [num]); - * }, num * 10); - * }; - * async.concatLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [1, 3, 5, 2, 4] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1, 5, 3, 4, 2]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, [num]); - * }, num * 10); - * }; - * async.cocnatLimit(array, 2, iterator, function(err, res) { - * console.log(res); // [1, 3, 5, 2, 4] - * console.log(order); // [[1, 0], [3, 2], [5, 1], [2, 4], [4, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, [num]); - * }, num * 10); - * }; - * async.concatLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [1, 3, 5, 2, 4] - * console.log(order); // [1, 3, 5, 2, 4] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1, b: 5, c: 3, d: 4, e: 2 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, num); - * }, num * 10); - * }; - * async.cocnatLimit(object, 2, iterator, function(err, res) { - * console.log(res); // [1, 3, 5, 2, 4] - * console.log(order); // [[1, 'a'], [3, 'c'], [5, 'b'], [2, 'e'], [4, 'd']] - * }); - * - */ - function concatLimit(collection, limit, iterator, callback) { - callback = callback || noop; - var size, key, iter, item, iterate, result; - var sync = false; - var started = 0; - var completed = 0; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - result = []; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - var keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null, []); - } - result = result || Array(size); - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - if (started < size) { - iterator(collection[started], createCallback(started++)); - } - } - - function arrayIteratorWithIndex() { - if (started < size) { - iterator(collection[started], started, createCallback(started++)); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - iterator(item.value, createCallback(started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, makeConcatResult(result)); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - iterator(item.value, started, createCallback(started++)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, makeConcatResult(result)); - } - } - - function objectIterator() { - if (started < size) { - iterator(collection[keys[started]], createCallback(started++)); - } - } - - function objectIteratorWithKey() { - if (started < size) { - key = keys[started]; - iterator(collection[key], key, createCallback(started++)); - } - } - - function createCallback(index) { - return function(err, res) { - if (index === null) { - throwError(); - } - if (err) { - index = null; - iterate = noop; - callback = once(callback); - arrayEachSync(result, function(array, index) { - if (array === undefined) { - result[index] = noop; - } - }); - callback(err, makeConcatResult(result)); - return; - } - switch (arguments.length) { - case 0: - case 1: - result[index] = noop; - break; - case 2: - result[index] = res; - break; - default: - result[index] = slice(arguments, 1); - break; - } - index = null; - if (++completed === size) { - iterate = throwError; - callback(null, makeConcatResult(result)); - callback = throwError; - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - * @param {Function} symbolEach - */ - function createGroupBy(arrayEach, baseEach, symbolEach) { - return function groupBy(collection, iterator, callback) { - callback = callback || noop; - var size; - var completed = 0; - var result = {}; - - if (isArray(collection)) { - size = collection.length; - arrayEach(collection, iterator, createCallback); - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = symbolEach(collection, iterator, createCallback); - size && size === completed && callback(null, result); - } else if (typeof collection === obj) { - var keys = nativeKeys(collection); - size = keys.length; - baseEach(collection, iterator, createCallback, keys); - } - if (!size) { - callback(null, {}); - } - - function createCallback(value) { - var called = false; - return function done(err, key) { - if (called) { - throwError(); - } - called = true; - if (err) { - callback = once(callback); - callback(err, objectClone(result)); - return; - } - var array = result[key]; - if (!array) { - result[key] = [value]; - } else { - array.push(value); - } - if (++completed === size) { - callback(null, result); - } - }; - } - }; - } - - /** - * @memberof async - * @namespace groupBySeries - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [4.2, 6.4, 6.1]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupBySeries(array, iterator, function(err, res) { - * console.log(res); // { '4': [4.2], '6': [6.4, 6.1] } - * console.log(order); // [4.2, 6.4, 6.1] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [4.2, 6.4, 6.1]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupBySeries(array, iterator, function(err, res) { - * console.log(res); // { '4': [4.2], '6': [6.4, 6.1] } - * console.log(order); // [[4.2, 0], [6.4, 1], [6.1, 2]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 4.2, b: 6.4, c: 6.1 }; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupBySeries(object, iterator, function(err, res) { - * console.log(res); // { '4': [4.2], '6': [6.4, 6.1] } - * console.log(order); // [4.2, 6.4, 6.1] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 4.2, b: 6.4, c: 6.1 }; - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupBySeries(object, iterator, function(err, res) { - * console.log(res); // { '4': [4.2], '6': [6.4, 6.1] } - * console.log(order); // [[4.2, 'a'], [6.4, 'b'], [6.1, 'c']] - * }); - * - */ - function groupBySeries(collection, iterator, callback) { - callback = onlyOnce(callback || noop); - var size, key, value, keys, iter, item, iterate; - var sync = false; - var completed = 0; - var result = {}; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size) { - return callback(null, result); - } - iterate(); - - function arrayIterator() { - value = collection[completed]; - iterator(value, done); - } - - function arrayIteratorWithIndex() { - value = collection[completed]; - iterator(value, completed, done); - } - - function symbolIterator() { - item = iter.next(); - value = item.value; - item.done ? callback(null, result) : iterator(value, done); - } - - function symbolIteratorWithKey() { - item = iter.next(); - value = item.value; - item.done ? callback(null, result) : iterator(value, completed, done); - } - - function objectIterator() { - value = collection[keys[completed]]; - iterator(value, done); - } - - function objectIteratorWithKey() { - key = keys[completed]; - value = collection[key]; - iterator(value, key, done); - } - - function done(err, key) { - if (err) { - iterate = throwError; - callback = onlyOnce(callback); - callback(err, objectClone(result)); - return; - } - var array = result[key]; - if (!array) { - result[key] = [value]; - } else { - array.push(value); - } - if (++completed === size) { - iterate = throwError; - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace groupByLimit - * @param {Array|Object} collection - * @param {Function} iterator - * @param {Function} callback - * @example - * - * // array - * var order = []; - * var array = [1.1, 5.9, 3.2, 3.9, 2.1]; - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupByLimit(array, 2, iterator, function(err, res) { - * console.log(res); // { '1': [1.1], '3': [3.2, 3.9], '5': [5.9], '2': [2.1] } - * console.log(order); // [1.1, 3.2, 5.9, 2.1, 3.9] - * }); - * - * @example - * - * // array with index - * var order = []; - * var array = [1.1, 5.9, 3.2, 3.9, 2.1]; - * var iterator = function(num, index, done) { - * setTimeout(function() { - * order.push([num, index]); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupByLimit(array, 2, iterator, function(err, res) { - * console.log(res); // { '1': [1.1], '3': [3.2, 3.9], '5': [5.9], '2': [2.1] } - * console.log(order); // [[1.1, 0], [3.2, 2], [5.9, 1], [2.1, 4], [3.9, 3]] - * }); - * - * @example - * - * // object - * var order = []; - * var object = { a: 1.1, b: 5.9, c: 3.2, d: 3.9, e: 2.1 } - * var iterator = function(num, done) { - * setTimeout(function() { - * order.push(num); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupByLimit(object, 2, iterator, function(err, res) { - * console.log(res); // { '1': [1.1], '3': [3.2, 3.9], '5': [5.9], '2': [2.1] } - * console.log(order); // [1.1, 3.2, 5.9, 2.1, 3.9] - * }); - * - * @example - * - * // object with key - * var order = []; - * var object = { a: 1.1, b: 5.9, c: 3.2, d: 3.9, e: 2.1 } - * var iterator = function(num, key, done) { - * setTimeout(function() { - * order.push([num, key]); - * done(null, Math.floor(num)); - * }, num * 10); - * }; - * async.groupByLimit(object, 2, iterator, function(err, res) { - * console.log(res); // { '1': [1.1], '3': [3.2, 3.9], '5': [5.9], '2': [2.1] } - * console.log(order); // [[1.1, 'a'], [3.2, 'c'], [5.9, 'b'], [2.1, 'e'], [3.9, 'd']] - * }); - * - */ - function groupByLimit(collection, limit, iterator, callback) { - callback = callback || noop; - var size, index, key, value, keys, iter, item, iterate; - var sync = false; - var started = 0; - var completed = 0; - var result = {}; - - if (isArray(collection)) { - size = collection.length; - iterate = iterator.length === 3 ? arrayIteratorWithIndex : arrayIterator; - } else if (!collection) { - } else if (iteratorSymbol && collection[iteratorSymbol]) { - size = Infinity; - iter = collection[iteratorSymbol](); - iterate = iterator.length === 3 ? symbolIteratorWithKey : symbolIterator; - } else if (typeof collection === obj) { - keys = nativeKeys(collection); - size = keys.length; - iterate = iterator.length === 3 ? objectIteratorWithKey : objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null, result); - } - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - if (started < size) { - value = collection[started++]; - iterator(value, createCallback(value)); - } - } - - function arrayIteratorWithIndex() { - index = started++; - if (index < size) { - value = collection[index]; - iterator(value, index, createCallback(value)); - } - } - - function symbolIterator() { - item = iter.next(); - if (item.done === false) { - started++; - value = item.value; - iterator(value, createCallback(value)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function symbolIteratorWithKey() { - item = iter.next(); - if (item.done === false) { - value = item.value; - iterator(value, started++, createCallback(value)); - } else if (completed === started && iterator !== noop) { - iterator = noop; - callback(null, result); - } - } - - function objectIterator() { - if (started < size) { - value = collection[keys[started++]]; - iterator(value, createCallback(value)); - } - } - - function objectIteratorWithKey() { - if (started < size) { - key = keys[started++]; - value = collection[key]; - iterator(value, key, createCallback(value)); - } - } - - function createCallback(value) { - var called = false; - return function(err, key) { - if (called) { - throwError(); - } - called = true; - if (err) { - iterate = noop; - callback = once(callback); - callback(err, objectClone(result)); - return; - } - var array = result[key]; - if (!array) { - result[key] = [value]; - } else { - array.push(value); - } - if (++completed === size) { - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - } - - /** - * @private - * @param {Function} arrayEach - * @param {Function} baseEach - */ - function createParallel(arrayEach, baseEach) { - return function parallel(tasks, callback) { - callback = callback || noop; - var size, keys, result; - var completed = 0; - - if (isArray(tasks)) { - size = tasks.length; - result = Array(size); - arrayEach(tasks, createCallback); - } else if (tasks && typeof tasks === obj) { - keys = nativeKeys(tasks); - size = keys.length; - result = {}; - baseEach(tasks, createCallback, keys); - } - if (!size) { - callback(null, result); - } - - function createCallback(key) { - return function(err, res) { - if (key === null) { - throwError(); - } - if (err) { - key = null; - callback = once(callback); - callback(err, result); - return; - } - result[key] = arguments.length <= 2 ? res : slice(arguments, 1); - key = null; - if (++completed === size) { - callback(null, result); - } - }; - } - }; - } - - /** - * @memberof async - * @namespace series - * @param {Array|Object} tasks - functions - * @param {Function} callback - * @example - * - * var order = []; - * var tasks = [ - * function(done) { - * setTimeout(function() { - * order.push(1); - * done(null, 1); - * }, 10); - * }, - * function(done) { - * setTimeout(function() { - * order.push(2); - * done(null, 2); - * }, 30); - * }, - * function(done) { - * setTimeout(function() { - * order.push(3); - * done(null, 3); - * }, 40); - * }, - * function(done) { - * setTimeout(function() { - * order.push(4); - * done(null, 4); - * }, 20); - * } - * ]; - * async.series(tasks, function(err, res) { - * console.log(res); // [1, 2, 3, 4]; - * console.log(order); // [1, 2, 3, 4] - * }); - * - * @example - * - * var order = []; - * var tasks = { - * 'a': function(done) { - * setTimeout(function() { - * order.push(1); - * done(null, 1); - * }, 10); - * }, - * 'b': function(done) { - * setTimeout(function() { - * order.push(2); - * done(null, 2); - * }, 30); - * }, - * 'c': function(done) { - * setTimeout(function() { - * order.push(3); - * done(null, 3); - * }, 40); - * }, - * 'd': function(done) { - * setTimeout(function() { - * order.push(4); - * done(null, 4); - * }, 20); - * } - * }; - * async.series(tasks, function(err, res) { - * console.log(res); // { a: 1, b: 2, c: 3, d:4 } - * console.log(order); // [1, 4, 2, 3] - * }); - * - */ - function series(tasks, callback) { - callback = callback || noop; - var size, key, keys, result, iterate; - var sync = false; - var completed = 0; - - if (isArray(tasks)) { - size = tasks.length; - result = Array(size); - iterate = arrayIterator; - } else if (tasks && typeof tasks === obj) { - keys = nativeKeys(tasks); - size = keys.length; - result = {}; - iterate = objectIterator; - } else { - return callback(null); - } - if (!size) { - return callback(null, result); - } - iterate(); - - function arrayIterator() { - key = completed; - tasks[completed](done); - } - - function objectIterator() { - key = keys[completed]; - tasks[key](done); - } - - function done(err, res) { - if (err) { - iterate = throwError; - callback = onlyOnce(callback); - callback(err, result); - return; - } - result[key] = arguments.length <= 2 ? res : slice(arguments, 1); - if (++completed === size) { - iterate = throwError; - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace parallelLimit - * @param {Array|Object} tasks - functions - * @param {number} limit - limit >= 1 - * @param {Function} callback - * @example - * - * var order = []; - * var tasks = [ - * function(done) { - * setTimeout(function() { - * order.push(1); - * done(null, 1); - * }, 10); - * }, - * function(done) { - * setTimeout(function() { - * order.push(2); - * done(null, 2); - * }, 50); - * }, - * function(done) { - * setTimeout(function() { - * order.push(3); - * done(null, 3); - * }, 30); - * }, - * function(done) { - * setTimeout(function() { - * order.push(4); - * done(null, 4); - * }, 40); - * } - * ]; - * async.parallelLimit(tasks, 2, function(err, res) { - * console.log(res); // [1, 2, 3, 4]; - * console.log(order); // [1, 3, 2, 4] - * }); - * - * @example - * - * var order = []; - * var tasks = { - * 'a': function(done) { - * setTimeout(function() { - * order.push(1); - * done(null, 1); - * }, 10); - * }, - * 'b': function(done) { - * setTimeout(function() { - * order.push(2); - * done(null, 2); - * }, 50); - * }, - * 'c': function(done) { - * setTimeout(function() { - * order.push(3); - * done(null, 3); - * }, 20); - * }, - * 'd': function(done) { - * setTimeout(function() { - * order.push(4); - * done(null, 4); - * }, 40); - * } - * }; - * async.parallelLimit(tasks, 2, function(err, res) { - * console.log(res); // { a: 1, b: 2, c: 3, d:4 } - * console.log(order); // [1, 3, 2, 4] - * }); - * - */ - function parallelLimit(tasks, limit, callback) { - callback = callback || noop; - var size, index, key, keys, result, iterate; - var sync = false; - var started = 0; - var completed = 0; - - if (isArray(tasks)) { - size = tasks.length; - result = Array(size); - iterate = arrayIterator; - } else if (tasks && typeof tasks === obj) { - keys = nativeKeys(tasks); - size = keys.length; - result = {}; - iterate = objectIterator; - } - if (!size || isNaN(limit) || limit < 1) { - return callback(null, result); - } - timesSync(limit > size ? size : limit, iterate); - - function arrayIterator() { - index = started++; - if (index < size) { - tasks[index](createCallback(index)); - } - } - - function objectIterator() { - if (started < size) { - key = keys[started++]; - tasks[key](createCallback(key)); - } - } - - function createCallback(key) { - return function(err, res) { - if (key === null) { - throwError(); - } - if (err) { - key = null; - iterate = noop; - callback = once(callback); - callback(err, result); - return; - } - result[key] = arguments.length <= 2 ? res : slice(arguments, 1); - key = null; - if (++completed === size) { - callback(null, result); - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - } - - /** - * @memberof async - * @namespace tryEach - * @param {Array|Object} tasks - functions - * @param {Function} callback - * @example - * - * var tasks = [ - * function(done) { - * setTimeout(function() { - * done(new Error('error')); - * }, 10); - * }, - * function(done) { - * setTimeout(function() { - * done(null, 2); - * }, 10); - * } - * ]; - * async.tryEach(tasks, function(err, res) { - * console.log(res); // 2 - * }); - * - * @example - * - * var tasks = [ - * function(done) { - * setTimeout(function() { - * done(new Error('error1')); - * }, 10); - * }, - * function(done) { - * setTimeout(function() { - * done(new Error('error2'); - * }, 10); - * } - * ]; - * async.tryEach(tasks, function(err, res) { - * console.log(err); // error2 - * console.log(res); // undefined - * }); - * - */ - function tryEach(tasks, callback) { - callback = callback || noop; - var size, keys, iterate; - var sync = false; - var completed = 0; - - if (isArray(tasks)) { - size = tasks.length; - iterate = arrayIterator; - } else if (tasks && typeof tasks === obj) { - keys = nativeKeys(tasks); - size = keys.length; - iterate = objectIterator; - } - if (!size) { - return callback(null); - } - iterate(); - - function arrayIterator() { - tasks[completed](done); - } - - function objectIterator() { - tasks[keys[completed]](done); - } - - function done(err, res) { - if (!err) { - if (arguments.length <= 2) { - callback(null, res); - } else { - callback(null, slice(arguments, 1)); - } - } else if (++completed === size) { - callback(err); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * check for waterfall tasks - * @private - * @param {Array} tasks - * @param {Function} callback - * @return {boolean} - */ - function checkWaterfallTasks(tasks, callback) { - if (!isArray(tasks)) { - callback(new Error('First argument to waterfall must be an array of functions')); - return false; - } - if (tasks.length === 0) { - callback(null); - return false; - } - return true; - } - - /** - * check for waterfall tasks - * @private - * @param {function} func - * @param {Array|Object} args - arguments - * @return {function} next - */ - function waterfallIterator(func, args, next) { - switch (args.length) { - case 0: - case 1: - return func(next); - case 2: - return func(args[1], next); - case 3: - return func(args[1], args[2], next); - case 4: - return func(args[1], args[2], args[3], next); - case 5: - return func(args[1], args[2], args[3], args[4], next); - case 6: - return func(args[1], args[2], args[3], args[4], args[5], next); - default: - args = slice(args, 1); - args.push(next); - return func.apply(null, args); - } - } - - /** - * @memberof async - * @namespace waterfall - * @param {Array} tasks - functions - * @param {Function} callback - * @example - * - * var order = []; - * var tasks = [ - * function(next) { - * setTimeout(function() { - * order.push(1); - * next(null, 1); - * }, 10); - * }, - * function(arg1, next) { - * setTimeout(function() { - * order.push(2); - * next(null, 1, 2); - * }, 30); - * }, - * function(arg1, arg2, next) { - * setTimeout(function() { - * order.push(3); - * next(null, 3); - * }, 20); - * }, - * function(arg1, next) { - * setTimeout(function() { - * order.push(4); - * next(null, 1, 2, 3, 4); - * }, 40); - * } - * ]; - * async.waterfall(tasks, function(err, arg1, arg2, arg3, arg4) { - * console.log(arg1, arg2, arg3, arg4); // 1 2 3 4 - * }); - * - */ - function waterfall(tasks, callback) { - callback = callback || noop; - if (!checkWaterfallTasks(tasks, callback)) { - return; - } - var func, args, done, sync; - var completed = 0; - var size = tasks.length; - waterfallIterator(tasks[0], [], createCallback(0)); - - function iterate() { - waterfallIterator(func, args, createCallback(func)); - } - - function createCallback(index) { - return function next(err, res) { - if (index === undefined) { - callback = noop; - throwError(); - } - index = undefined; - if (err) { - done = callback; - callback = throwError; - done(err); - return; - } - if (++completed === size) { - done = callback; - callback = throwError; - if (arguments.length <= 2) { - done(err, res); - } else { - done.apply(null, createArray(arguments)); - } - return; - } - if (sync) { - args = arguments; - func = tasks[completed] || throwError; - nextTick(iterate); - } else { - sync = true; - waterfallIterator(tasks[completed] || throwError, arguments, createCallback(completed)); - } - sync = false; - }; - } - } - - /** - * `angelFall` is like `waterfall` and inject callback to last argument of next task. - * - * @memberof async - * @namespace angelFall - * @param {Array} tasks - functions - * @param {Function} callback - * @example - * - * var order = []; - * var tasks = [ - * function(next) { - * setTimeout(function() { - * order.push(1); - * next(null, 1); - * }, 10); - * }, - * function(arg1, empty, next) { - * setTimeout(function() { - * order.push(2); - * next(null, 1, 2); - * }, 30); - * }, - * function(next) { - * setTimeout(function() { - * order.push(3); - * next(null, 3); - * }, 20); - * }, - * function(arg1, empty1, empty2, empty3, next) { - * setTimeout(function() { - * order.push(4); - * next(null, 1, 2, 3, 4); - * }, 40); - * } - * ]; - * async.angelFall(tasks, function(err, arg1, arg2, arg3, arg4) { - * console.log(arg1, arg2, arg3, arg4); // 1 2 3 4 - * }); - * - */ - function angelFall(tasks, callback) { - callback = callback || noop; - if (!checkWaterfallTasks(tasks, callback)) { - return; - } - var completed = 0; - var sync = false; - var size = tasks.length; - var func = tasks[completed]; - var args = []; - var iterate = function() { - switch (func.length) { - case 0: - try { - next(null, func()); - } catch (e) { - next(e); - } - return; - case 1: - return func(next); - case 2: - return func(args[1], next); - case 3: - return func(args[1], args[2], next); - case 4: - return func(args[1], args[2], args[3], next); - case 5: - return func(args[1], args[2], args[3], args[4], next); - default: - args = slice(args, 1); - args[func.length - 1] = next; - return func.apply(null, args); - } - }; - iterate(); - - function next(err, res) { - if (err) { - iterate = throwError; - callback = onlyOnce(callback); - callback(err); - return; - } - if (++completed === size) { - iterate = throwError; - var done = callback; - callback = throwError; - if (arguments.length === 2) { - done(err, res); - } else { - done.apply(null, createArray(arguments)); - } - return; - } - func = tasks[completed]; - args = arguments; - if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace whilst - * @param {Function} test - * @param {Function} iterator - * @param {Function} callback - */ - function whilst(test, iterator, callback) { - callback = callback || noop; - var sync = false; - if (test()) { - iterate(); - } else { - callback(null); - } - - function iterate() { - if (sync) { - nextTick(next); - } else { - sync = true; - iterator(done); - } - sync = false; - } - - function next() { - iterator(done); - } - - function done(err, arg) { - if (err) { - return callback(err); - } - if (arguments.length <= 2) { - if (test(arg)) { - iterate(); - } else { - callback(null, arg); - } - return; - } - arg = slice(arguments, 1); - if (test.apply(null, arg)) { - iterate(); - } else { - callback.apply(null, [null].concat(arg)); - } - } - } - - /** - * @memberof async - * @namespace doWhilst - * @param {Function} iterator - * @param {Function} test - * @param {Function} callback - */ - function doWhilst(iterator, test, callback) { - callback = callback || noop; - var sync = false; - next(); - - function iterate() { - if (sync) { - nextTick(next); - } else { - sync = true; - iterator(done); - } - sync = false; - } - - function next() { - iterator(done); - } - - function done(err, arg) { - if (err) { - return callback(err); - } - if (arguments.length <= 2) { - if (test(arg)) { - iterate(); - } else { - callback(null, arg); - } - return; - } - arg = slice(arguments, 1); - if (test.apply(null, arg)) { - iterate(); - } else { - callback.apply(null, [null].concat(arg)); - } - } - } - - /** - * @memberof async - * @namespace until - * @param {Function} test - * @param {Function} iterator - * @param {Function} callback - */ - function until(test, iterator, callback) { - callback = callback || noop; - var sync = false; - if (!test()) { - iterate(); - } else { - callback(null); - } - - function iterate() { - if (sync) { - nextTick(next); - } else { - sync = true; - iterator(done); - } - sync = false; - } - - function next() { - iterator(done); - } - - function done(err, arg) { - if (err) { - return callback(err); - } - if (arguments.length <= 2) { - if (!test(arg)) { - iterate(); - } else { - callback(null, arg); - } - return; - } - arg = slice(arguments, 1); - if (!test.apply(null, arg)) { - iterate(); - } else { - callback.apply(null, [null].concat(arg)); - } - } - } - - /** - * @memberof async - * @namespace doUntil - * @param {Function} iterator - * @param {Function} test - * @param {Function} callback - */ - function doUntil(iterator, test, callback) { - callback = callback || noop; - var sync = false; - next(); - - function iterate() { - if (sync) { - nextTick(next); - } else { - sync = true; - iterator(done); - } - sync = false; - } - - function next() { - iterator(done); - } - - function done(err, arg) { - if (err) { - return callback(err); - } - if (arguments.length <= 2) { - if (!test(arg)) { - iterate(); - } else { - callback(null, arg); - } - return; - } - arg = slice(arguments, 1); - if (!test.apply(null, arg)) { - iterate(); - } else { - callback.apply(null, [null].concat(arg)); - } - } - } - - /** - * @memberof async - * @namespace during - * @param {Function} test - * @param {Function} iterator - * @param {Function} callback - */ - function during(test, iterator, callback) { - callback = callback || noop; - _test(); - - function _test() { - test(iterate); - } - - function iterate(err, truth) { - if (err) { - return callback(err); - } - if (truth) { - iterator(done); - } else { - callback(null); - } - } - - function done(err) { - if (err) { - return callback(err); - } - _test(); - } - } - - /** - * @memberof async - * @namespace doDuring - * @param {Function} test - * @param {Function} iterator - * @param {Function} callback - */ - function doDuring(iterator, test, callback) { - callback = callback || noop; - iterate(null, true); - - function iterate(err, truth) { - if (err) { - return callback(err); - } - if (truth) { - iterator(done); - } else { - callback(null); - } - } - - function done(err, res) { - if (err) { - return callback(err); - } - switch (arguments.length) { - case 0: - case 1: - test(iterate); - break; - case 2: - test(res, iterate); - break; - default: - var args = slice(arguments, 1); - args.push(iterate); - test.apply(null, args); - break; - } - } - } - - /** - * @memberof async - * @namespace forever - */ - function forever(iterator, callback) { - var sync = false; - iterate(); - - function iterate() { - iterator(next); - } - - function next(err) { - if (err) { - if (callback) { - return callback(err); - } - throw err; - } - if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace compose - */ - function compose() { - return seq.apply(null, reverse(arguments)); - } - - /** - * @memberof async - * @namespace seq - */ - function seq(/* functions... */) { - var fns = createArray(arguments); - - return function() { - var self = this; - var args = createArray(arguments); - var callback = args[args.length - 1]; - if (typeof callback === func) { - args.pop(); - } else { - callback = noop; - } - reduce(fns, args, iterator, done); - - function iterator(newargs, fn, callback) { - var func = function(err) { - var nextargs = slice(arguments, 1); - callback(err, nextargs); - }; - newargs.push(func); - fn.apply(self, newargs); - } - - function done(err, res) { - res = isArray(res) ? res : [res]; - res.unshift(err); - callback.apply(self, res); - } - }; - } - - function createApplyEach(func) { - return function applyEach(fns /* arguments */) { - var go = function() { - var self = this; - var args = createArray(arguments); - var callback = args.pop() || noop; - return func(fns, iterator, callback); - - function iterator(fn, done) { - fn.apply(self, args.concat([done])); - } - }; - if (arguments.length > 1) { - var args = slice(arguments, 1); - return go.apply(this, args); - } else { - return go; - } - }; - } - - /** - * @see https://github.com/caolan/async/blob/master/lib/internal/DoublyLinkedList.js - */ - function DLL() { - this.head = null; - this.tail = null; - this.length = 0; - } - - DLL.prototype._removeLink = function(node) { - var prev = node.prev; - var next = node.next; - if (prev) { - prev.next = next; - } else { - this.head = next; - } - if (next) { - next.prev = prev; - } else { - this.tail = prev; - } - node.prev = null; - node.next = null; - this.length--; - return node; - }; - - DLL.prototype.empty = DLL; - - DLL.prototype._setInitial = function(node) { - this.length = 1; - this.head = this.tail = node; - }; - - DLL.prototype.insertBefore = function(node, newNode) { - newNode.prev = node.prev; - newNode.next = node; - if (node.prev) { - node.prev.next = newNode; - } else { - this.head = newNode; - } - node.prev = newNode; - this.length++; - }; - - DLL.prototype.unshift = function(node) { - if (this.head) { - this.insertBefore(this.head, node); - } else { - this._setInitial(node); - } - }; - - DLL.prototype.push = function(node) { - var tail = this.tail; - if (tail) { - node.prev = tail; - node.next = tail.next; - this.tail = node; - tail.next = node; - this.length++; - } else { - this._setInitial(node); - } - }; - - DLL.prototype.shift = function() { - return this.head && this._removeLink(this.head); - }; - - DLL.prototype.splice = function(end) { - var task; - var tasks = []; - while (end-- && (task = this.shift())) { - tasks.push(task); - } - return tasks; - }; - - DLL.prototype.remove = function(test) { - var node = this.head; - while (node) { - if (test(node)) { - this._removeLink(node); - } - node = node.next; - } - return this; - }; - - /** - * @private - */ - function baseQueue(isQueue, worker, concurrency, payload) { - if (concurrency === undefined) { - concurrency = 1; - } else if (isNaN(concurrency) || concurrency < 1) { - throw new Error('Concurrency must not be zero'); - } - - var workers = 0; - var workersList = []; - var _callback, _unshift; - - var q = { - _tasks: new DLL(), - concurrency: concurrency, - payload: payload, - saturated: noop, - unsaturated: noop, - buffer: concurrency / 4, - empty: noop, - drain: noop, - error: noop, - started: false, - paused: false, - push: push, - kill: kill, - unshift: unshift, - remove: remove, - process: isQueue ? runQueue : runCargo, - length: getLength, - running: running, - workersList: getWorkersList, - idle: idle, - pause: pause, - resume: resume, - _worker: worker - }; - return q; - - function push(tasks, callback) { - _insert(tasks, callback); - } - - function unshift(tasks, callback) { - _insert(tasks, callback, true); - } - - function _exec(task) { - var item = { - data: task, - callback: _callback - }; - if (_unshift) { - q._tasks.unshift(item); - } else { - q._tasks.push(item); - } - nextTick(q.process); - } - - function _insert(tasks, callback, unshift) { - if (callback == null) { - callback = noop; - } else if (typeof callback !== 'function') { - throw new Error('task callback must be a function'); - } - q.started = true; - var _tasks = isArray(tasks) ? tasks : [tasks]; - - if (tasks === undefined || !_tasks.length) { - if (q.idle()) { - nextTick(q.drain); - } - return; - } - - _unshift = unshift; - _callback = callback; - arrayEachSync(_tasks, _exec); - // Avoid leaking the callback - _callback = undefined; - } - - function kill() { - q.drain = noop; - q._tasks.empty(); - } - - function _next(q, tasks) { - var called = false; - return function done(err, res) { - if (called) { - throwError(); - } - called = true; - - workers--; - var task; - var index = -1; - var size = workersList.length; - var taskIndex = -1; - var taskSize = tasks.length; - var useApply = arguments.length > 2; - var args = useApply && createArray(arguments); - while (++taskIndex < taskSize) { - task = tasks[taskIndex]; - while (++index < size) { - if (workersList[index] === task) { - if (index === 0) { - workersList.shift(); - } else { - workersList.splice(index, 1); - } - index = size; - size--; - } - } - index = -1; - if (useApply) { - task.callback.apply(task, args); - } else { - task.callback(err, res); - } - if (err) { - q.error(err, task.data); - } - } - - if (workers <= q.concurrency - q.buffer) { - q.unsaturated(); - } - - if (q._tasks.length + workers === 0) { - q.drain(); - } - q.process(); - }; - } - - function runQueue() { - while (!q.paused && workers < q.concurrency && q._tasks.length) { - var task = q._tasks.shift(); - workers++; - workersList.push(task); - if (q._tasks.length === 0) { - q.empty(); - } - if (workers === q.concurrency) { - q.saturated(); - } - var done = _next(q, [task]); - worker(task.data, done); - } - } - - function runCargo() { - while (!q.paused && workers < q.concurrency && q._tasks.length) { - var tasks = q._tasks.splice(q.payload || q._tasks.length); - var index = -1; - var size = tasks.length; - var data = Array(size); - while (++index < size) { - data[index] = tasks[index].data; - } - workers++; - nativePush.apply(workersList, tasks); - if (q._tasks.length === 0) { - q.empty(); - } - if (workers === q.concurrency) { - q.saturated(); - } - var done = _next(q, tasks); - worker(data, done); - } - } - - function getLength() { - return q._tasks.length; - } - - function running() { - return workers; - } - - function getWorkersList() { - return workersList; - } - - function idle() { - return q.length() + workers === 0; - } - - function pause() { - q.paused = true; - } - - function _resume() { - nextTick(q.process); - } - - function resume() { - if (q.paused === false) { - return; - } - q.paused = false; - var count = q.concurrency < q._tasks.length ? q.concurrency : q._tasks.length; - timesSync(count, _resume); - } - - /** - * @param {Function} test - */ - function remove(test) { - q._tasks.remove(test); - } - } - - /** - * @memberof async - * @namespace queue - */ - function queue(worker, concurrency) { - return baseQueue(true, worker, concurrency); - } - - /** - * @memberof async - * @namespace priorityQueue - */ - function priorityQueue(worker, concurrency) { - var q = baseQueue(true, worker, concurrency); - q.push = push; - delete q.unshift; - return q; - - function push(tasks, priority, callback) { - q.started = true; - priority = priority || 0; - var _tasks = isArray(tasks) ? tasks : [tasks]; - var taskSize = _tasks.length; - - if (tasks === undefined || taskSize === 0) { - if (q.idle()) { - nextTick(q.drain); - } - return; - } - - callback = typeof callback === func ? callback : noop; - var nextNode = q._tasks.head; - while (nextNode && priority >= nextNode.priority) { - nextNode = nextNode.next; - } - while (taskSize--) { - var item = { - data: _tasks[taskSize], - priority: priority, - callback: callback - }; - if (nextNode) { - q._tasks.insertBefore(nextNode, item); - } else { - q._tasks.push(item); - } - nextTick(q.process); - } - } - } - - /** - * @memberof async - * @namespace cargo - */ - function cargo(worker, payload) { - return baseQueue(false, worker, 1, payload); - } - - /** - * @memberof async - * @namespace auto - * @param {Object} tasks - * @param {number} [concurrency] - * @param {Function} [callback] - */ - function auto(tasks, concurrency, callback) { - if (typeof concurrency === func) { - callback = concurrency; - concurrency = null; - } - var keys = nativeKeys(tasks); - var rest = keys.length; - var results = {}; - if (rest === 0) { - return callback(null, results); - } - var runningTasks = 0; - var readyTasks = new DLL(); - var listeners = Object.create(null); - callback = onlyOnce(callback || noop); - concurrency = concurrency || rest; - - baseEachSync(tasks, iterator, keys); - proceedQueue(); - - function iterator(task, key) { - // no dependencies - var _task, _taskSize; - if (!isArray(task)) { - _task = task; - _taskSize = 0; - readyTasks.push([_task, _taskSize, done]); - return; - } - var dependencySize = task.length - 1; - _task = task[dependencySize]; - _taskSize = dependencySize; - if (dependencySize === 0) { - readyTasks.push([_task, _taskSize, done]); - return; - } - // dependencies - var index = -1; - while (++index < dependencySize) { - var dependencyName = task[index]; - if (notInclude(keys, dependencyName)) { - var msg = - 'async.auto task `' + - key + - '` has non-existent dependency `' + - dependencyName + - '` in ' + - task.join(', '); - throw new Error(msg); - } - var taskListeners = listeners[dependencyName]; - if (!taskListeners) { - taskListeners = listeners[dependencyName] = []; - } - taskListeners.push(taskListener); - } - - function done(err, arg) { - if (key === null) { - throwError(); - } - arg = arguments.length <= 2 ? arg : slice(arguments, 1); - if (err) { - rest = 0; - runningTasks = 0; - readyTasks.length = 0; - var safeResults = objectClone(results); - safeResults[key] = arg; - key = null; - var _callback = callback; - callback = noop; - _callback(err, safeResults); - return; - } - runningTasks--; - rest--; - results[key] = arg; - taskComplete(key); - key = null; - } - - function taskListener() { - if (--dependencySize === 0) { - readyTasks.push([_task, _taskSize, done]); - } - } - } - - function proceedQueue() { - if (readyTasks.length === 0 && runningTasks === 0) { - if (rest !== 0) { - throw new Error('async.auto task has cyclic dependencies'); - } - return callback(null, results); - } - while (readyTasks.length && runningTasks < concurrency && callback !== noop) { - runningTasks++; - var array = readyTasks.shift(); - if (array[1] === 0) { - array[0](array[2]); - } else { - array[0](results, array[2]); - } - } - } - - function taskComplete(key) { - var taskListeners = listeners[key] || []; - arrayEachSync(taskListeners, function(task) { - task(); - }); - proceedQueue(); - } - } - - var FN_ARGS = /^(function)?\s*[^\(]*\(\s*([^\)]*)\)/m; - var FN_ARG_SPLIT = /,/; - var FN_ARG = /(=.+)?(\s*)$/; - var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm; - - /** - * parse function arguments for `autoInject` - * - * @private - */ - function parseParams(func) { - func = func.toString().replace(STRIP_COMMENTS, ''); - func = func.match(FN_ARGS)[2].replace(' ', ''); - func = func ? func.split(FN_ARG_SPLIT) : []; - func = func.map(function(arg) { - return arg.replace(FN_ARG, '').trim(); - }); - return func; - } - - /** - * @memberof async - * @namespace autoInject - * @param {Object} tasks - * @param {number} [concurrency] - * @param {Function} [callback] - */ - function autoInject(tasks, concurrency, callback) { - var newTasks = {}; - baseEachSync(tasks, iterator, nativeKeys(tasks)); - auto(newTasks, concurrency, callback); - - function iterator(task, key) { - var params; - var taskLength = task.length; - - if (isArray(task)) { - if (taskLength === 0) { - throw new Error('autoInject task functions require explicit parameters.'); - } - params = createArray(task); - taskLength = params.length - 1; - task = params[taskLength]; - if (taskLength === 0) { - newTasks[key] = task; - return; - } - } else if (taskLength === 1) { - newTasks[key] = task; - return; - } else { - params = parseParams(task); - if (taskLength === 0 && params.length === 0) { - throw new Error('autoInject task functions require explicit parameters.'); - } - taskLength = params.length - 1; - } - params[taskLength] = newTask; - newTasks[key] = params; - - function newTask(results, done) { - switch (taskLength) { - case 1: - task(results[params[0]], done); - break; - case 2: - task(results[params[0]], results[params[1]], done); - break; - case 3: - task(results[params[0]], results[params[1]], results[params[2]], done); - break; - default: - var i = -1; - while (++i < taskLength) { - params[i] = results[params[i]]; - } - params[i] = done; - task.apply(null, params); - break; - } - } - } - } - - /** - * @memberof async - * @namespace retry - * @param {integer|Object|Function} opts - * @param {Function} [task] - * @param {Function} [callback] - */ - function retry(opts, task, callback) { - var times, intervalFunc, errorFilter; - var count = 0; - if (arguments.length < 3 && typeof opts === func) { - callback = task || noop; - task = opts; - opts = null; - times = DEFAULT_TIMES; - } else { - callback = callback || noop; - switch (typeof opts) { - case 'object': - if (typeof opts.errorFilter === func) { - errorFilter = opts.errorFilter; - } - var interval = opts.interval; - switch (typeof interval) { - case func: - intervalFunc = interval; - break; - case 'string': - case 'number': - interval = +interval; - intervalFunc = interval - ? function() { - return interval; - } - : function() { - return DEFAULT_INTERVAL; - }; - break; - } - times = +opts.times || DEFAULT_TIMES; - break; - case 'number': - times = opts || DEFAULT_TIMES; - break; - case 'string': - times = +opts || DEFAULT_TIMES; - break; - default: - throw new Error('Invalid arguments for async.retry'); - } - } - if (typeof task !== 'function') { - throw new Error('Invalid arguments for async.retry'); - } - - if (intervalFunc) { - task(intervalCallback); - } else { - task(simpleCallback); - } - - function simpleIterator() { - task(simpleCallback); - } - - function simpleCallback(err, res) { - if (++count === times || !err || (errorFilter && !errorFilter(err))) { - if (arguments.length <= 2) { - return callback(err, res); - } - var args = createArray(arguments); - return callback.apply(null, args); - } - simpleIterator(); - } - - function intervalIterator() { - task(intervalCallback); - } - - function intervalCallback(err, res) { - if (++count === times || !err || (errorFilter && !errorFilter(err))) { - if (arguments.length <= 2) { - return callback(err, res); - } - var args = createArray(arguments); - return callback.apply(null, args); - } - setTimeout(intervalIterator, intervalFunc(count)); - } - } - - function retryable(opts, task) { - if (!task) { - task = opts; - opts = null; - } - return done; - - function done() { - var taskFn; - var args = createArray(arguments); - var lastIndex = args.length - 1; - var callback = args[lastIndex]; - switch (task.length) { - case 1: - taskFn = task1; - break; - case 2: - taskFn = task2; - break; - case 3: - taskFn = task3; - break; - default: - taskFn = task4; - } - if (opts) { - retry(opts, taskFn, callback); - } else { - retry(taskFn, callback); - } - - function task1(done) { - task(done); - } - - function task2(done) { - task(args[0], done); - } - - function task3(done) { - task(args[0], args[1], done); - } - - function task4(callback) { - args[lastIndex] = callback; - task.apply(null, args); - } - } - } - - /** - * @memberof async - * @namespace iterator - */ - function iterator(tasks) { - var size = 0; - var keys = []; - if (isArray(tasks)) { - size = tasks.length; - } else { - keys = nativeKeys(tasks); - size = keys.length; - } - return makeCallback(0); - - function makeCallback(index) { - var fn = function() { - if (size) { - var key = keys[index] || index; - tasks[key].apply(null, createArray(arguments)); - } - return fn.next(); - }; - fn.next = function() { - return index < size - 1 ? makeCallback(index + 1) : null; - }; - return fn; - } - } - - /** - * @memberof async - * @namespace apply - */ - function apply(func) { - switch (arguments.length) { - case 0: - case 1: - return func; - case 2: - return func.bind(null, arguments[1]); - case 3: - return func.bind(null, arguments[1], arguments[2]); - case 4: - return func.bind(null, arguments[1], arguments[2], arguments[3]); - case 5: - return func.bind(null, arguments[1], arguments[2], arguments[3], arguments[4]); - default: - var size = arguments.length; - var index = 0; - var args = Array(size); - args[index] = null; - while (++index < size) { - args[index] = arguments[index]; - } - return func.bind.apply(func, args); - } - } - - /** - * @memberof async - * @namespace timeout - * @param {Function} func - * @param {number} millisec - * @param {*} info - */ - function timeout(func, millisec, info) { - var callback, timer; - return wrappedFunc; - - function wrappedFunc() { - timer = setTimeout(timeoutCallback, millisec); - var args = createArray(arguments); - var lastIndex = args.length - 1; - callback = args[lastIndex]; - args[lastIndex] = injectedCallback; - simpleApply(func, args); - } - - function timeoutCallback() { - var name = func.name || 'anonymous'; - var err = new Error('Callback function "' + name + '" timed out.'); - err.code = 'ETIMEDOUT'; - if (info) { - err.info = info; - } - timer = null; - callback(err); - } - - function injectedCallback() { - if (timer !== null) { - simpleApply(callback, createArray(arguments)); - clearTimeout(timer); - } - } - - function simpleApply(func, args) { - switch (args.length) { - case 0: - func(); - break; - case 1: - func(args[0]); - break; - case 2: - func(args[0], args[1]); - break; - default: - func.apply(null, args); - break; - } - } - } - - /** - * @memberof async - * @namespace times - * @param {number} n - n >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * var iterator = function(n, done) { - * done(null, n); - * }; - * async.times(4, iterator, function(err, res) { - * console.log(res); // [0, 1, 2, 3]; - * }); - * - */ - function times(n, iterator, callback) { - callback = callback || noop; - n = +n; - if (isNaN(n) || n < 1) { - return callback(null, []); - } - var result = Array(n); - timesSync(n, iterate); - - function iterate(num) { - iterator(num, createCallback(num)); - } - - function createCallback(index) { - return function(err, res) { - if (index === null) { - throwError(); - } - result[index] = res; - index = null; - if (err) { - callback(err); - callback = noop; - } else if (--n === 0) { - callback(null, result); - } - }; - } - } - - /** - * @memberof async - * @namespace timesSeries - * @param {number} n - n >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * var iterator = function(n, done) { - * done(null, n); - * }; - * async.timesSeries(4, iterator, function(err, res) { - * console.log(res); // [0, 1, 2, 3]; - * }); - * - */ - function timesSeries(n, iterator, callback) { - callback = callback || noop; - n = +n; - if (isNaN(n) || n < 1) { - return callback(null, []); - } - var result = Array(n); - var sync = false; - var completed = 0; - iterate(); - - function iterate() { - iterator(completed, done); - } - - function done(err, res) { - result[completed] = res; - if (err) { - callback(err); - callback = throwError; - } else if (++completed >= n) { - callback(null, result); - callback = throwError; - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - } - } - - /** - * @memberof async - * @namespace timesLimit - * @param {number} n - n >= 1 - * @param {number} limit - n >= 1 - * @param {Function} iterator - * @param {Function} callback - * @example - * - * var iterator = function(n, done) { - * done(null, n); - * }; - * async.timesLimit(4, 2, iterator, function(err, res) { - * console.log(res); // [0, 1, 2, 3]; - * }); - * - */ - function timesLimit(n, limit, iterator, callback) { - callback = callback || noop; - n = +n; - if (isNaN(n) || n < 1 || isNaN(limit) || limit < 1) { - return callback(null, []); - } - var result = Array(n); - var sync = false; - var started = 0; - var completed = 0; - timesSync(limit > n ? n : limit, iterate); - - function iterate() { - var index = started++; - if (index < n) { - iterator(index, createCallback(index)); - } - } - - function createCallback(index) { - return function(err, res) { - if (index === null) { - throwError(); - } - result[index] = res; - index = null; - if (err) { - callback(err); - callback = noop; - } else if (++completed >= n) { - callback(null, result); - callback = throwError; - } else if (sync) { - nextTick(iterate); - } else { - sync = true; - iterate(); - } - sync = false; - }; - } - } - - /** - * @memberof async - * @namespace race - * @param {Array|Object} tasks - functions - * @param {Function} callback - * @example - * - * // array - * var called = 0; - * var tasks = [ - * function(done) { - * setTimeout(function() { - * called++; - * done(null, '1'); - * }, 30); - * }, - * function(done) { - * setTimeout(function() { - * called++; - * done(null, '2'); - * }, 20); - * }, - * function(done) { - * setTimeout(function() { - * called++; - * done(null, '3'); - * }, 10); - * } - * ]; - * async.race(tasks, function(err, res) { - * console.log(res); // '3' - * console.log(called); // 1 - * setTimeout(function() { - * console.log(called); // 3 - * }, 50); - * }); - * - * @example - * - * // object - * var called = 0; - * var tasks = { - * 'test1': function(done) { - * setTimeout(function() { - * called++; - * done(null, '1'); - * }, 30); - * }, - * 'test2': function(done) { - * setTimeout(function() { - * called++; - * done(null, '2'); - * }, 20); - * }, - * 'test3': function(done) { - * setTimeout(function() { - * called++; - * done(null, '3'); - * }, 10); - * } - * }; - * async.race(tasks, function(err, res) { - * console.log(res); // '3' - * console.log(called); // 1 - * setTimeout(function() { - * console.log(called); // 3 - * done(); - * }, 50); - * }); - * - */ - function race(tasks, callback) { - callback = once(callback || noop); - var size, keys; - var index = -1; - if (isArray(tasks)) { - size = tasks.length; - while (++index < size) { - tasks[index](callback); - } - } else if (tasks && typeof tasks === obj) { - keys = nativeKeys(tasks); - size = keys.length; - while (++index < size) { - tasks[keys[index]](callback); - } - } else { - return callback(new TypeError('First argument to race must be a collection of functions')); - } - if (!size) { - callback(null); - } - } - - /** - * @memberof async - * @namespace memoize - */ - function memoize(fn, hasher) { - hasher = - hasher || - function(hash) { - return hash; - }; - - var memo = {}; - var queues = {}; - var memoized = function() { - var args = createArray(arguments); - var callback = args.pop(); - var key = hasher.apply(null, args); - if (has(memo, key)) { - nextTick(function() { - callback.apply(null, memo[key]); - }); - return; - } - if (has(queues, key)) { - return queues[key].push(callback); - } - - queues[key] = [callback]; - args.push(done); - fn.apply(null, args); - - function done(err) { - var args = createArray(arguments); - if (!err) { - memo[key] = args; - } - var q = queues[key]; - delete queues[key]; - - var i = -1; - var size = q.length; - while (++i < size) { - q[i].apply(null, args); - } - } - }; - memoized.memo = memo; - memoized.unmemoized = fn; - return memoized; - } - - /** - * @memberof async - * @namespace unmemoize - */ - function unmemoize(fn) { - return function() { - return (fn.unmemoized || fn).apply(null, arguments); - }; - } - - /** - * @memberof async - * @namespace ensureAsync - */ - function ensureAsync(fn) { - return function(/* ...args, callback */) { - var args = createArray(arguments); - var lastIndex = args.length - 1; - var callback = args[lastIndex]; - var sync = true; - args[lastIndex] = done; - fn.apply(this, args); - sync = false; - - function done() { - var innerArgs = createArray(arguments); - if (sync) { - nextTick(function() { - callback.apply(null, innerArgs); - }); - } else { - callback.apply(null, innerArgs); - } - } - }; - } - - /** - * @memberof async - * @namespace constant - */ - function constant(/* values... */) { - var args = [null].concat(createArray(arguments)); - return function(callback) { - callback = arguments[arguments.length - 1]; - callback.apply(this, args); - }; - } - - function asyncify(fn) { - return function(/* args..., callback */) { - var args = createArray(arguments); - var callback = args.pop(); - var result; - try { - result = fn.apply(this, args); - } catch (e) { - return callback(e); - } - if (result && typeof result.then === func) { - result.then( - function(value) { - invokeCallback(callback, null, value); - }, - function(err) { - invokeCallback(callback, err && err.message ? err : new Error(err)); - } - ); - } else { - callback(null, result); - } - }; - } - - function invokeCallback(callback, err, value) { - try { - callback(err, value); - } catch (e) { - nextTick(rethrow, e); - } - } - - function rethrow(error) { - throw error; - } - - /** - * @memberof async - * @namespace reflect - * @param {Function} func - * @return {Function} - */ - function reflect(func) { - return function(/* args..., callback */) { - var callback; - switch (arguments.length) { - case 1: - callback = arguments[0]; - return func(done); - case 2: - callback = arguments[1]; - return func(arguments[0], done); - default: - var args = createArray(arguments); - var lastIndex = args.length - 1; - callback = args[lastIndex]; - args[lastIndex] = done; - func.apply(this, args); - } - - function done(err, res) { - if (err) { - return callback(null, { - error: err - }); - } - if (arguments.length > 2) { - res = slice(arguments, 1); - } - callback(null, { - value: res - }); - } - }; - } - - /** - * @memberof async - * @namespace reflectAll - * @param {Array[]|Object} tasks - * @return {Function} - */ - function reflectAll(tasks) { - var newTasks, keys; - if (isArray(tasks)) { - newTasks = Array(tasks.length); - arrayEachSync(tasks, iterate); - } else if (tasks && typeof tasks === obj) { - keys = nativeKeys(tasks); - newTasks = {}; - baseEachSync(tasks, iterate, keys); - } - return newTasks; - - function iterate(func, key) { - newTasks[key] = reflect(func); - } - } - - /** - * @memberof async - * @namespace createLogger - */ - function createLogger(name) { - return function(fn) { - var args = slice(arguments, 1); - args.push(done); - fn.apply(null, args); - }; - - function done(err) { - if (typeof console === obj) { - if (err) { - if (console.error) { - console.error(err); - } - return; - } - if (console[name]) { - var args = slice(arguments, 1); - arrayEachSync(args, function(arg) { - console[name](arg); - }); - } - } - } - } - - /** - * @memberof async - * @namespace safe - */ - function safe() { - createImmediate(); - return exports; - } - - /** - * @memberof async - * @namespace fast - */ - function fast() { - createImmediate(false); - return exports; - } -}); diff --git a/node_modules/neo-async/async.min.js b/node_modules/neo-async/async.min.js deleted file mode 100644 index 4161a3f6e..000000000 --- a/node_modules/neo-async/async.min.js +++ /dev/null @@ -1,80 +0,0 @@ -(function(N,O){"object"===typeof exports&&"undefined"!==typeof module?O(exports):"function"===typeof define&&define.amd?define(["exports"],O):N.async?O(N.neo_async=N.neo_async||{}):O(N.async=N.async||{})})(this,function(N){function O(a){var c=function(a){var d=J(arguments,1);setTimeout(function(){a.apply(null,d)})};T="function"===typeof setImmediate?setImmediate:c;"object"===typeof process&&"function"===typeof process.nextTick?(D=/^v0.10/.test(process.version)?T:process.nextTick,ba=/^v0/.test(process.version)? -T:process.nextTick):ba=D=T;!1===a&&(D=function(a){a()})}function H(a){for(var c=-1,b=a.length,d=Array(b);++c=d)return[];for(var e=Array(d);++bd[e]){var g=d[f]; -d[f]=d[e];d[e]=g}}if(!(e>b)){for(var l,e=a[a[c]>a[e]?c:e],f=c,g=b;f<=g;){for(l=f;f=l&&a[g]>=e;)g--;if(f>g)break;var q=a;l=d;var s=f++,h=g--,k=q[s];q[s]=q[h];q[h]=k;q=l[s];l[s]=l[h];l[h]=q}e=f;ca(a,c,e-1,d);ca(a,e,b,d)}}}function S(a){var c=[];Q(a,function(a){a!==w&&(C(a)?X.apply(c,a):c.push(a))});return c}function da(a,c,b){var d=-1,e=a.length;if(3===c.length)for(;++db)return e(null,[]);y=y||Array(m);K(b>m?m:b,x)}}function Y(a,c,b){function d(){c(a[v],s)}function e(){c(a[v],v,s)}function f(){n=r.next();n.done?b(null):c(n.value,s)}function g(){n=r.next();n.done?b(null):c(n.value,v,s)}function l(){c(a[m[v]],s)}function q(){k=m[v];c(a[k],k,s)}function s(a,d){a?b(a):++v===h||!1===d?(p=A,b(null)):u?D(p): -(u=!0,p());u=!1}b=E(b||w);var h,k,m,r,n,p,u=!1,v=0;C(a)?(h=a.length,p=3===c.length?e:d):a&&(z&&a[z]?(h=Infinity,r=a[z](),p=3===c.length?g:f):"object"===typeof a&&(m=F(a),h=m.length,p=3===c.length?q:l));if(!h)return b(null);p()}function Z(a,c,b,d){function e(){xc)return d(null);K(c>k?k:c,v)}function za(a,c,b){function d(){c(a[t],s)}function e(){c(a[t],t,s)}function f(){n=r.next(); -n.done?b(null,p):c(n.value,s)}function g(){n=r.next();n.done?b(null,p):c(n.value,t,s)}function l(){c(a[m[t]],s)}function q(){k=m[t];c(a[k],k,s)}function s(a,d){a?(u=A,b=E(b),b(a,H(p))):(p[t]=d,++t===h?(u=A,b(null,p),b=A):v?D(u):(v=!0,u()),v=!1)}b=b||w;var h,k,m,r,n,p,u,v=!1,t=0;C(a)?(h=a.length,u=3===c.length?e:d):a&&(z&&a[z]?(h=Infinity,p=[],r=a[z](),u=3===c.length?g:f):"object"===typeof a&&(m=F(a),h=m.length,u=3===c.length?q:l));if(!h)return b(null,[]);p=p||Array(h);u()}function Aa(a,c,b,d){return function(e, -f,g){function l(a){var b=!1;return function(c,e){b&&A();b=!0;c?(g=I(g),g(c)):!!e===d?(g=I(g),g(null,a)):++h===q&&g(null)}}g=g||w;var q,s,h=0;C(e)?(q=e.length,a(e,f,l)):e&&(z&&e[z]?(q=b(e,f,l))&&q===h&&g(null):"object"===typeof e&&(s=F(e),q=s.length,c(e,f,l,s)));q||g(null)}}function Ba(a){return function(c,b,d){function e(){r=c[x];b(r,h)}function f(){r=c[x];b(r,x,h)}function g(){u=p.next();r=u.value;u.done?d(null):b(r,h)}function l(){u=p.next();r=u.value;u.done?d(null):b(r,x,h)}function q(){r=c[n[x]]; -b(r,h)}function s(){m=n[x];r=c[m];b(r,m,h)}function h(b,c){b?d(b):!!c===a?(v=A,d(null,r)):++x===k?(v=A,d(null)):t?D(v):(t=!0,v());t=!1}d=E(d||w);var k,m,r,n,p,u,v,t=!1,x=0;C(c)?(k=c.length,v=3===b.length?f:e):c&&(z&&c[z]?(k=Infinity,p=c[z](),v=3===b.length?l:g):"object"===typeof c&&(n=F(c),k=n.length,v=3===b.length?s:q));if(!k)return d(null);v()}}function Ca(a){return function(c,b,d,e){function f(){r=G++;rb)return e(null);K(b>m?m:b,x)}}function Da(a,c,b,d){return function(e,f,g){function l(a,b){return function(c,e){null===a&&A();c?(a=null,g=I(g),g(c,L(k))):(!!e===d&&(k[a]=b),a=null,++h===q&&g(null,k))}}g=g||w;var q,s,h=0,k={};C(e)?(q=e.length,a(e,f,l)):e&&(z&&e[z]?(q=b(e,f,l))&&q===h&&g(null,k):"object"===typeof e&&(s=F(e),q=s.length,c(e,f,l,s)));if(!q)return g(null,{})}}function Ea(a){return function(c, -b,d){function e(){m=y;r=c[y];b(r,h)}function f(){m=y;r=c[y];b(r,y,h)}function g(){m=y;u=p.next();r=u.value;u.done?d(null,x):b(r,h)}function l(){m=y;u=p.next();r=u.value;u.done?d(null,x):b(r,m,h)}function q(){m=n[y];r=c[m];b(r,h)}function s(){m=n[y];r=c[m];b(r,m,h)}function h(b,c){b?d(b,x):(!!c===a&&(x[m]=r),++y===k?(v=A,d(null,x)):t?D(v):(t=!0,v()),t=!1)}d=E(d||w);var k,m,r,n,p,u,v,t=!1,x={},y=0;C(c)?(k=c.length,v=3===b.length?f:e):c&&(z&&c[z]?(k=Infinity,p=c[z](),v=3===b.length?l:g):"object"===typeof c&& -(n=F(c),k=n.length,v=3===b.length?s:q));if(!k)return d(null,{});v()}}function Fa(a){return function(c,b,d,e){function f(){r=B++;rb)return e(null,{});K(b>m?m:b,x)}}function $(a,c,b,d){function e(d){b(d,a[t],h)}function f(d){b(d,a[t],t,h)}function g(a){p=n.next();p.done?d(null,a):b(a,p.value, -h)}function l(a){p=n.next();p.done?d(null,a):b(a,p.value,t,h)}function q(d){b(d,a[r[t]],h)}function s(d){m=r[t];b(d,a[m],m,h)}function h(a,c){a?d(a,c):++t===k?(b=A,d(null,c)):v?D(function(){u(c)}):(v=!0,u(c));v=!1}d=E(d||w);var k,m,r,n,p,u,v=!1,t=0;C(a)?(k=a.length,u=4===b.length?f:e):a&&(z&&a[z]?(k=Infinity,n=a[z](),u=4===b.length?l:g):"object"===typeof a&&(r=F(a),k=r.length,u=4===b.length?s:q));if(!k)return d(null,c);u(c)}function Ga(a,c,b,d){function e(d){b(d,a[--s],q)}function f(d){b(d,a[--s], -s,q)}function g(d){b(d,a[m[--s]],q)}function l(d){k=m[--s];b(d,a[k],k,q)}function q(a,b){a?d(a,b):0===s?(u=A,d(null,b)):v?D(function(){u(b)}):(v=!0,u(b));v=!1}d=E(d||w);var s,h,k,m,r,n,p,u,v=!1;if(C(a))s=a.length,u=4===b.length?f:e;else if(a)if(z&&a[z]){p=[];r=a[z]();for(h=-1;!1===(n=r.next()).done;)p[++h]=n.value;a=p;s=p.length;u=4===b.length?f:e}else"object"===typeof a&&(m=F(a),s=m.length,u=4===b.length?l:g);if(!s)return d(null,c);u(c)}function Ha(a,c,b){b=b||w;ja(a,c,function(a,c){if(a)return b(a); -b(null,!!c)})}function Ia(a,c,b){b=b||w;ka(a,c,function(a,c){if(a)return b(a);b(null,!!c)})}function Ja(a,c,b,d){d=d||w;la(a,c,b,function(a,b){if(a)return d(a);d(null,!!b)})}function Ka(a,c){return C(a)?0===a.length?(c(null),!1):!0:(c(Error("First argument to waterfall must be an array of functions")),!1)}function ma(a,c,b){switch(c.length){case 0:case 1:return a(b);case 2:return a(c[1],b);case 3:return a(c[1],c[2],b);case 4:return a(c[1],c[2],c[3],b);case 5:return a(c[1],c[2],c[3],c[4],b);case 6:return a(c[1], -c[2],c[3],c[4],c[5],b);default:return c=J(c,1),c.push(b),a.apply(null,c)}}function La(a,c){function b(b,h){if(b)q=A,c=E(c),c(b);else if(++d===f){q=A;var k=c;c=A;2===arguments.length?k(b,h):k.apply(null,H(arguments))}else g=a[d],l=arguments,e?D(q):(e=!0,q()),e=!1}c=c||w;if(Ka(a,c)){var d=0,e=!1,f=a.length,g=a[d],l=[],q=function(){switch(g.length){case 0:try{b(null,g())}catch(a){b(a)}break;case 1:return g(b);case 2:return g(l[1],b);case 3:return g(l[1],l[2],b);case 4:return g(l[1],l[2],l[3],b);case 5:return g(l[1], -l[2],l[3],l[4],b);default:return l=J(l,1),l[g.length-1]=b,g.apply(null,l)}};q()}}function Ma(){var a=H(arguments);return function(){var c=this,b=H(arguments),d=b[b.length-1];"function"===typeof d?b.pop():d=w;$(a,b,function(a,b,d){a.push(function(a){var b=J(arguments,1);d(a,b)});b.apply(c,a)},function(a,b){b=C(b)?b:[b];b.unshift(a);d.apply(c,b)})}}function Na(a){return function(c){var b=function(){var b=this,d=H(arguments),g=d.pop()||w;return a(c,function(a,c){a.apply(b,d.concat([c]))},g)};if(1b)throw Error("Concurrency must not be zero");var h=0,k=[],m,r,n={_tasks:new M,concurrency:b,payload:d,saturated:w,unsaturated:w,buffer:b/4,empty:w,drain:w,error:w,started:!1,paused:!1,push:function(a, -b){f(a,b)},kill:function(){n.drain=w;n._tasks.empty()},unshift:function(a,b){f(a,b,!0)},remove:function(a){n._tasks.remove(a)},process:a?l:q,length:function(){return n._tasks.length},running:function(){return h},workersList:function(){return k},idle:function(){return 0===n.length()+h},pause:function(){n.paused=!0},resume:function(){!1!==n.paused&&(n.paused=!1,K(n.concurrency=arguments.length?f:J(arguments,1);if(a){q=g=0;s.length=0;var k=L(l);k[d]=f;d=null;var h= -b;b=w;h(a,k)}else q--,g--,l[d]=f,e(d),d=null}function n(){0===--v&&s.push([p,u,c])}var p,u;if(C(a)){var v=a.length-1;p=a[v];u=v;if(0===v)s.push([p,u,c]);else for(var t=-1;++t=arguments.length)return b(a,e);var f=H(arguments);return b.apply(null,f)}c(d)}function e(){c(f)}function f(a,d){if(++s===g||!a||q&&!q(a)){if(2>=arguments.length)return b(a,d);var c=H(arguments);return b.apply(null,c)}setTimeout(e,l(s))}var g,l,q,s=0;if(3>arguments.length&&"function"===typeof a)b=c||w,c=a,a=null,g=5;else switch(b=b||w,typeof a){case "object":"function"===typeof a.errorFilter&&(q=a.errorFilter);var h=a.interval; -switch(typeof h){case "function":l=h;break;case "string":case "number":l=(h=+h)?function(){return h}:function(){return 0}}g=+a.times||5;break;case "number":g=a||5;break;case "string":g=+a||5;break;default:throw Error("Invalid arguments for async.retry");}if("function"!==typeof c)throw Error("Invalid arguments for async.retry");l?c(f):c(d)}function Pa(a){return function(){var c=H(arguments),b=c.pop(),d;try{d=a.apply(this,c)}catch(e){return b(e)}d&&"function"===typeof d.then?d.then(function(a){try{b(null, -a)}catch(d){D(Qa,d)}},function(a){a=a&&a.message?a:Error(a);try{b(a,void 0)}catch(d){D(Qa,d)}}):b(null,d)}}function Qa(a){throw a;}function Ra(a){return function(){function c(a,d){if(a)return b(null,{error:a});2=arguments.length?c:J(arguments,1),a=null,++q===f&&d(null,l))}}d=d||w;var f,g,l,q=0;C(b)?(f=b.length,l=Array(f),a(b,e)):b&&"object"===typeof b&&(g=F(b),f=g.length,l={},c(b,e,g));f||d(null,l)}}(function(a,c){for(var b=-1,d=a.length;++bc)return d(null,[]);v=v||Array(k);K(c>k?k:c,t)},mapValues:fb,mapValuesSeries:function(a,c,b){function d(){k=t;c(a[t], -s)}function e(){k=t;c(a[t],t,s)}function f(){k=t;n=r.next();n.done?b(null,v):c(n.value,s)}function g(){k=t;n=r.next();n.done?b(null,v):c(n.value,t,s)}function l(){k=m[t];c(a[k],s)}function q(){k=m[t];c(a[k],k,s)}function s(a,d){a?(p=A,b=E(b),b(a,L(v))):(v[k]=d,++t===h?(p=A,b(null,v),b=A):u?D(p):(u=!0,p()),u=!1)}b=b||w;var h,k,m,r,n,p,u=!1,v={},t=0;C(a)?(h=a.length,p=3===c.length?e:d):a&&(z&&a[z]?(h=Infinity,r=a[z](),p=3===c.length?g:f):"object"===typeof a&&(m=F(a),h=m.length,p=3===c.length?q:l)); -if(!h)return b(null,v);p()},mapValuesLimit:function(a,c,b,d){function e(){m=y++;mc)return d(null,x);K(c>k?k:c,v)},filter:Ta,filterSeries:Ua,filterLimit:Va,select:Ta,selectSeries:Ua,selectLimit:Va,reject:gb,rejectSeries:hb,rejectLimit:ib,detect:ja,detectSeries:ka,detectLimit:la,find:ja,findSeries:ka,findLimit:la,pick:jb,pickSeries:kb, -pickLimit:lb,omit:mb,omitSeries:nb,omitLimit:ob,reduce:$,inject:$,foldl:$,reduceRight:Ga,foldr:Ga,transform:pb,transformSeries:function(a,c,b,d){function e(){b(v,a[x],h)}function f(){b(v,a[x],x,h)}function g(){p=n.next();p.done?d(null,v):b(v,p.value,h)}function l(){p=n.next();p.done?d(null,v):b(v,p.value,x,h)}function q(){b(v,a[r[x]],h)}function s(){m=r[x];b(v,a[m],m,h)}function h(a,b){a?d(a,v):++x===k||!1===b?(u=A,d(null,v)):t?D(u):(t=!0,u());t=!1}3===arguments.length&&(d=b,b=c,c=void 0);d=E(d|| -w);var k,m,r,n,p,u,v,t=!1,x=0;C(a)?(k=a.length,v=void 0!==c?c:[],u=4===b.length?f:e):a&&(z&&a[z]?(k=Infinity,n=a[z](),v=void 0!==c?c:{},u=4===b.length?l:g):"object"===typeof a&&(r=F(a),k=r.length,v=void 0!==c?c:{},u=4===b.length?s:q));if(!k)return d(null,void 0!==c?c:v||{});u()},transformLimit:function(a,c,b,d,e){function f(){r=A++;rc)return e(null,void 0!==b?b:x||{});K(c>m?m:c,t)},sortBy:qb,sortBySeries:function(a,c,b){function d(){m=a[y];c(m,s)}function e(){m=a[y];c(m,y,s)}function f(){p=n.next();if(p.done)return b(null,P(u,v));m=p.value;u[y]=m;c(m,s)}function g(){p=n.next();if(p.done)return b(null,P(u,v));m=p.value;u[y]=m;c(m,y,s)}function l(){m=a[r[y]];u[y]=m;c(m,s)}function q(){k=r[y];m=a[k];u[y]=m;c(m,k,s)}function s(a,d){v[y]=d;a?b(a):++y===h?(t=A,b(null, -P(u,v))):x?D(t):(x=!0,t());x=!1}b=E(b||w);var h,k,m,r,n,p,u,v,t,x=!1,y=0;C(a)?(h=a.length,u=a,v=Array(h),t=3===c.length?e:d):a&&(z&&a[z]?(h=Infinity,u=[],v=[],n=a[z](),t=3===c.length?g:f):"object"===typeof a&&(r=F(a),h=r.length,u=Array(h),v=Array(h),t=3===c.length?q:l));if(!h)return b(null,[]);t()},sortByLimit:function(a,c,b,d){function e(){Bc)return d(null,[]);x=x||Array(k);K(c>k?k:c,y)},some:Ha,someSeries:Ia,someLimit:Ja,any:Ha,anySeries:Ia,anyLimit:Ja,every:Wa,everySeries:Xa,everyLimit:Ya,all:Wa,allSeries:Xa,allLimit:Ya,concat:rb,concatSeries:function(a,c,b){function d(){c(a[t],s)}function e(){c(a[t],t,s)}function f(){n=r.next();n.done?b(null,v):c(n.value,s)}function g(){n=r.next();n.done?b(null,v):c(n.value,t,s)}function l(){c(a[m[t]], -s)}function q(){k=m[t];c(a[k],k,s)}function s(a,d){C(d)?X.apply(v,d):2<=arguments.length&&X.apply(v,J(arguments,1));a?b(a,v):++t===h?(p=A,b(null,v)):u?D(p):(u=!0,p());u=!1}b=E(b||w);var h,k,m,r,n,p,u=!1,v=[],t=0;C(a)?(h=a.length,p=3===c.length?e:d):a&&(z&&a[z]?(h=Infinity,r=a[z](),p=3===c.length?g:f):"object"===typeof a&&(m=F(a),h=m.length,p=3===c.length?q:l));if(!h)return b(null,v);p()},concatLimit:function(a,c,b,d){function e(){tc)return d(null,[]);u=u||Array(k);K(c>k?k:c,p)},groupBy:sb,groupBySeries:function(a,c,b){function d(){m=a[t];c(m,s)}function e(){m=a[t];c(m,t,s)}function f(){p=n.next();m=p.value;p.done?b(null,x):c(m,s)}function g(){p=n.next();m=p.value;p.done? -b(null,x):c(m,t,s)}function l(){m=a[r[t]];c(m,s)}function q(){k=r[t];m=a[k];c(m,k,s)}function s(a,d){if(a)u=A,b=E(b),b(a,L(x));else{var c=x[d];c?c.push(m):x[d]=[m];++t===h?(u=A,b(null,x)):v?D(u):(v=!0,u());v=!1}}b=E(b||w);var h,k,m,r,n,p,u,v=!1,t=0,x={};C(a)?(h=a.length,u=3===c.length?e:d):a&&(z&&a[z]?(h=Infinity,n=a[z](),u=3===c.length?g:f):"object"===typeof a&&(r=F(a),h=r.length,u=3===c.length?q:l));if(!h)return b(null,x);u()},groupByLimit:function(a,c,b,d){function e(){yc)return d(null,B);K(c>k?k:c,t)},parallel:tb,series:function(a,c){function b(){g=k;a[k](e)}function d(){g=l[k];a[g](e)}function e(a,b){a?(s=A,c=E(c),c(a,q)):(q[g]=2>=arguments.length?b:J(arguments,1),++k===f?(s=A,c(null,q)):h?D(s):(h=!0,s()),h=!1)}c=c||w;var f,g,l,q,s,h=!1,k=0;if(C(a))f=a.length,q=Array(f), -s=b;else if(a&&"object"===typeof a)l=F(a),f=l.length,q={},s=d;else return c(null);if(!f)return c(null,q);s()},parallelLimit:function(a,c,b){function d(){l=r++;if(l=arguments.length?c:J(arguments,1),a=null,++n===g?b(null,h):m?D(k):(m=!0,k()),m=!1)}}b=b||w;var g,l,q,s,h,k,m=!1,r=0,n=0;C(a)?(g=a.length,h=Array(g),k=d):a&&"object"===typeof a&&(s=F(a),g=s.length,h= -{},k=e);if(!g||isNaN(c)||1>c)return b(null,h);K(c>g?g:c,k)},tryEach:function(a,c){function b(){a[q](e)}function d(){a[g[q]](e)}function e(a,b){a?++q===f?c(a):l():2>=arguments.length?c(null,b):c(null,J(arguments,1))}c=c||w;var f,g,l,q=0;C(a)?(f=a.length,l=b):a&&"object"===typeof a&&(g=F(a),f=g.length,l=d);if(!f)return c(null);l()},waterfall:function(a,c){function b(){ma(e,f,d(e))}function d(h){return function(k,m){void 0===h&&(c=w,A());h=void 0;k?(g=c,c=A,g(k)):++q===s?(g=c,c=A,2>=arguments.length? -g(k,m):g.apply(null,H(arguments))):(l?(f=arguments,e=a[q]||A,D(b)):(l=!0,ma(a[q]||A,arguments,d(q))),l=!1)}}c=c||w;if(Ka(a,c)){var e,f,g,l,q=0,s=a.length;ma(a[0],[],d(0))}},angelFall:La,angelfall:La,whilst:function(a,c,b){function d(){g?D(e):(g=!0,c(f));g=!1}function e(){c(f)}function f(c,e){if(c)return b(c);2>=arguments.length?a(e)?d():b(null,e):(e=J(arguments,1),a.apply(null,e)?d():b.apply(null,[null].concat(e)))}b=b||w;var g=!1;a()?d():b(null)},doWhilst:function(a,c,b){function d(){g?D(e):(g=!0, -a(f));g=!1}function e(){a(f)}function f(a,e){if(a)return b(a);2>=arguments.length?c(e)?d():b(null,e):(e=J(arguments,1),c.apply(null,e)?d():b.apply(null,[null].concat(e)))}b=b||w;var g=!1;e()},until:function(a,c,b){function d(){g?D(e):(g=!0,c(f));g=!1}function e(){c(f)}function f(c,e){if(c)return b(c);2>=arguments.length?a(e)?b(null,e):d():(e=J(arguments,1),a.apply(null,e)?b.apply(null,[null].concat(e)):d())}b=b||w;var g=!1;a()?b(null):d()},doUntil:function(a,c,b){function d(){g?D(e):(g=!0,a(f));g= -!1}function e(){a(f)}function f(a,e){if(a)return b(a);2>=arguments.length?c(e)?b(null,e):d():(e=J(arguments,1),c.apply(null,e)?b.apply(null,[null].concat(e)):d())}b=b||w;var g=!1;e()},during:function(a,c,b){function d(a,d){if(a)return b(a);d?c(e):b(null)}function e(c){if(c)return b(c);a(d)}b=b||w;a(d)},doDuring:function(a,c,b){function d(d,c){if(d)return b(d);c?a(e):b(null)}function e(a,e){if(a)return b(a);switch(arguments.length){case 0:case 1:c(d);break;case 2:c(e,d);break;default:var l=J(arguments, -1);l.push(d);c.apply(null,l)}}b=b||w;d(null,!0)},forever:function(a,c){function b(){a(d)}function d(a){if(a){if(c)return c(a);throw a;}e?D(b):(e=!0,b());e=!1}var e=!1;b()},compose:function(){return Ma.apply(null,Za(arguments))},seq:Ma,applyEach:ub,applyEachSeries:vb,queue:function(a,c){return na(!0,a,c)},priorityQueue:function(a,c){var b=na(!0,a,c);b.push=function(a,c,f){b.started=!0;c=c||0;var g=C(a)?a:[a],l=g.length;if(void 0===a||0===l)b.idle()&&D(b.drain);else{f="function"===typeof f?f:w;for(a= -b._tasks.head;a&&c>=a.priority;)a=a.next;for(;l--;){var q={data:g[l],priority:c,callback:f};a?b._tasks.insertBefore(a,q):b._tasks.push(q);D(b.process)}}};delete b.unshift;return b},cargo:function(a,c){return na(!1,a,1,c)},auto:Oa,autoInject:function(a,c,b){var d={};W(a,function(a,b){var c,l=a.length;if(C(a)){if(0===l)throw Error("autoInject task functions require explicit parameters.");c=H(a);l=c.length-1;a=c[l];if(0===l){d[b]=a;return}}else{if(1===l){d[b]=a;return}c=ab(a);if(0===l&&0===c.length)throw Error("autoInject task functions require explicit parameters."); -l=c.length-1}c[l]=function(b,d){switch(l){case 1:a(b[c[0]],d);break;case 2:a(b[c[0]],b[c[1]],d);break;case 3:a(b[c[0]],b[c[1]],b[c[2]],d);break;default:for(var f=-1;++fa)return b(null,[]);var e=Array(a);K(a,function(a){c(a,d(a))})},timesSeries:function(a,c,b){function d(){c(l, -e)}function e(c,e){f[l]=e;c?(b(c),b=A):++l>=a?(b(null,f),b=A):g?D(d):(g=!0,d());g=!1}b=b||w;a=+a;if(isNaN(a)||1>a)return b(null,[]);var f=Array(a),g=!1,l=0;d()},timesLimit:function(a,c,b,d){function e(){var c=q++;c=a?(d(null,g),d=A):l?D(e):(l=!0,e());l=!1}}d=d||w;a=+a;if(isNaN(a)||1>a||isNaN(c)||1>c)return d(null,[]);var g=Array(a),l=!1,q=0,s=0;K(c>a?a:c,e)},race:function(a,c){c=I(c||w);var b,d,e=-1;if(C(a))for(b= -a.length;++e= 2.1.0) - -## v1.6.2 - -- Enhance: minor document update -- Fix: response.json() returns empty object on 204 no-content response instead of throwing a syntax error - -## v1.6.1 - -- Fix: if `res.body` is a non-stream non-formdata object, we will call `body.toString` and send it as a string -- Fix: `counter` value is incorrectly set to `follow` value when wrapping Request instance -- Fix: documentation update - -## v1.6.0 - -- Enhance: added `res.buffer()` api for convenience, it returns body as a Node.js buffer -- Enhance: better old server support by handling raw deflate response -- Enhance: skip encoding detection for non-HTML/XML response -- Enhance: minor document update -- Fix: HEAD request doesn't need decompression, as body is empty -- Fix: `req.body` now accepts a Node.js buffer - -## v1.5.3 - -- Fix: handle 204 and 304 responses when body is empty but content-encoding is gzip/deflate -- Fix: allow resolving response and cloned response in any order -- Fix: avoid setting `content-length` when `form-data` body use streams -- Fix: send DELETE request with content-length when body is present -- Fix: allow any url when calling new Request, but still reject non-http(s) url in fetch - -## v1.5.2 - -- Fix: allow node.js core to handle keep-alive connection pool when passing a custom agent - -## v1.5.1 - -- Fix: redirect mode `manual` should work even when there is no redirection or broken redirection - -## v1.5.0 - -- Enhance: rejected promise now use custom `Error` (thx to @pekeler) -- Enhance: `FetchError` contains `err.type` and `err.code`, allows for better error handling (thx to @pekeler) -- Enhance: basic support for redirect mode `manual` and `error`, allows for location header extraction (thx to @jimmywarting for the initial PR) - -## v1.4.1 - -- Fix: wrapping Request instance with FormData body again should preserve the body as-is - -## v1.4.0 - -- Enhance: Request and Response now have `clone` method (thx to @kirill-konshin for the initial PR) -- Enhance: Request and Response now have proper string and buffer body support (thx to @kirill-konshin) -- Enhance: Body constructor has been refactored out (thx to @kirill-konshin) -- Enhance: Headers now has `forEach` method (thx to @tricoder42) -- Enhance: back to 100% code coverage -- Fix: better form-data support (thx to @item4) -- Fix: better character encoding detection under chunked encoding (thx to @dsuket for the initial PR) - -## v1.3.3 - -- Fix: make sure `Content-Length` header is set when body is string for POST/PUT/PATCH requests -- Fix: handle body stream error, for cases such as incorrect `Content-Encoding` header -- Fix: when following certain redirects, use `GET` on subsequent request per Fetch Spec -- Fix: `Request` and `Response` constructors now parse headers input using `Headers` - -## v1.3.2 - -- Enhance: allow auto detect of form-data input (no `FormData` spec on node.js, this is form-data specific feature) - -## v1.3.1 - -- Enhance: allow custom host header to be set (server-side only feature, as it's a forbidden header on client-side) - -## v1.3.0 - -- Enhance: now `fetch.Request` is exposed as well - -## v1.2.1 - -- Enhance: `Headers` now normalized `Number` value to `String`, prevent common mistakes - -## v1.2.0 - -- Enhance: now fetch.Headers and fetch.Response are exposed, making testing easier - -## v1.1.2 - -- Fix: `Headers` should only support `String` and `Array` properties, and ignore others - -## v1.1.1 - -- Enhance: now req.headers accept both plain object and `Headers` instance - -## v1.1.0 - -- Enhance: timeout now also applies to response body (in case of slow response) -- Fix: timeout is now cleared properly when fetch is done/has failed - -## v1.0.6 - -- Fix: less greedy content-type charset matching - -## v1.0.5 - -- Fix: when `follow = 0`, fetch should not follow redirect -- Enhance: update tests for better coverage -- Enhance: code formatting -- Enhance: clean up doc - -## v1.0.4 - -- Enhance: test iojs support -- Enhance: timeout attached to socket event only fire once per redirect - -## v1.0.3 - -- Fix: response size limit should reject large chunk -- Enhance: added character encoding detection for xml, such as rss/atom feed (encoding in DTD) - -## v1.0.2 - -- Fix: added res.ok per spec change - -## v1.0.0 - -- Enhance: better test coverage and doc - - -# 0.x release - -## v0.1 - -- Major: initial public release diff --git a/node_modules/node-fetch/LICENSE.md b/node_modules/node-fetch/LICENSE.md deleted file mode 100644 index 660ffecb5..000000000 --- a/node_modules/node-fetch/LICENSE.md +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 David Frank - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/node_modules/node-fetch/README.md b/node_modules/node-fetch/README.md deleted file mode 100644 index 2dde74289..000000000 --- a/node_modules/node-fetch/README.md +++ /dev/null @@ -1,590 +0,0 @@ -node-fetch -========== - -[![npm version][npm-image]][npm-url] -[![build status][travis-image]][travis-url] -[![coverage status][codecov-image]][codecov-url] -[![install size][install-size-image]][install-size-url] -[![Discord][discord-image]][discord-url] - -A light-weight module that brings `window.fetch` to Node.js - -(We are looking for [v2 maintainers and collaborators](https://github.com/bitinn/node-fetch/issues/567)) - -[![Backers][opencollective-image]][opencollective-url] - - - -- [Motivation](#motivation) -- [Features](#features) -- [Difference from client-side fetch](#difference-from-client-side-fetch) -- [Installation](#installation) -- [Loading and configuring the module](#loading-and-configuring-the-module) -- [Common Usage](#common-usage) - - [Plain text or HTML](#plain-text-or-html) - - [JSON](#json) - - [Simple Post](#simple-post) - - [Post with JSON](#post-with-json) - - [Post with form parameters](#post-with-form-parameters) - - [Handling exceptions](#handling-exceptions) - - [Handling client and server errors](#handling-client-and-server-errors) -- [Advanced Usage](#advanced-usage) - - [Streams](#streams) - - [Buffer](#buffer) - - [Accessing Headers and other Meta data](#accessing-headers-and-other-meta-data) - - [Extract Set-Cookie Header](#extract-set-cookie-header) - - [Post data using a file stream](#post-data-using-a-file-stream) - - [Post with form-data (detect multipart)](#post-with-form-data-detect-multipart) - - [Request cancellation with AbortSignal](#request-cancellation-with-abortsignal) -- [API](#api) - - [fetch(url[, options])](#fetchurl-options) - - [Options](#options) - - [Class: Request](#class-request) - - [Class: Response](#class-response) - - [Class: Headers](#class-headers) - - [Interface: Body](#interface-body) - - [Class: FetchError](#class-fetcherror) -- [License](#license) -- [Acknowledgement](#acknowledgement) - - - -## Motivation - -Instead of implementing `XMLHttpRequest` in Node.js to run browser-specific [Fetch polyfill](https://github.com/github/fetch), why not go from native `http` to `fetch` API directly? Hence, `node-fetch`, minimal code for a `window.fetch` compatible API on Node.js runtime. - -See Matt Andrews' [isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch) or Leonardo Quixada's [cross-fetch](https://github.com/lquixada/cross-fetch) for isomorphic usage (exports `node-fetch` for server-side, `whatwg-fetch` for client-side). - -## Features - -- Stay consistent with `window.fetch` API. -- Make conscious trade-off when following [WHATWG fetch spec][whatwg-fetch] and [stream spec](https://streams.spec.whatwg.org/) implementation details, document known differences. -- Use native promise but allow substituting it with [insert your favorite promise library]. -- Use native Node streams for body on both request and response. -- Decode content encoding (gzip/deflate) properly and convert string output (such as `res.text()` and `res.json()`) to UTF-8 automatically. -- Useful extensions such as timeout, redirect limit, response size limit, [explicit errors](ERROR-HANDLING.md) for troubleshooting. - -## Difference from client-side fetch - -- See [Known Differences](LIMITS.md) for details. -- If you happen to use a missing feature that `window.fetch` offers, feel free to open an issue. -- Pull requests are welcomed too! - -## Installation - -Current stable release (`2.x`) - -```sh -$ npm install node-fetch -``` - -## Loading and configuring the module -We suggest you load the module via `require` until the stabilization of ES modules in node: -```js -const fetch = require('node-fetch'); -``` - -If you are using a Promise library other than native, set it through `fetch.Promise`: -```js -const Bluebird = require('bluebird'); - -fetch.Promise = Bluebird; -``` - -## Common Usage - -NOTE: The documentation below is up-to-date with `2.x` releases; see the [`1.x` readme](https://github.com/bitinn/node-fetch/blob/1.x/README.md), [changelog](https://github.com/bitinn/node-fetch/blob/1.x/CHANGELOG.md) and [2.x upgrade guide](UPGRADE-GUIDE.md) for the differences. - -#### Plain text or HTML -```js -fetch('https://github.com/') - .then(res => res.text()) - .then(body => console.log(body)); -``` - -#### JSON - -```js - -fetch('https://api.github.com/users/github') - .then(res => res.json()) - .then(json => console.log(json)); -``` - -#### Simple Post -```js -fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' }) - .then(res => res.json()) // expecting a json response - .then(json => console.log(json)); -``` - -#### Post with JSON - -```js -const body = { a: 1 }; - -fetch('https://httpbin.org/post', { - method: 'post', - body: JSON.stringify(body), - headers: { 'Content-Type': 'application/json' }, - }) - .then(res => res.json()) - .then(json => console.log(json)); -``` - -#### Post with form parameters -`URLSearchParams` is available in Node.js as of v7.5.0. See [official documentation](https://nodejs.org/api/url.html#url_class_urlsearchparams) for more usage methods. - -NOTE: The `Content-Type` header is only set automatically to `x-www-form-urlencoded` when an instance of `URLSearchParams` is given as such: - -```js -const { URLSearchParams } = require('url'); - -const params = new URLSearchParams(); -params.append('a', 1); - -fetch('https://httpbin.org/post', { method: 'POST', body: params }) - .then(res => res.json()) - .then(json => console.log(json)); -``` - -#### Handling exceptions -NOTE: 3xx-5xx responses are *NOT* exceptions and should be handled in `then()`; see the next section for more information. - -Adding a catch to the fetch promise chain will catch *all* exceptions, such as errors originating from node core libraries, network errors and operational errors, which are instances of FetchError. See the [error handling document](ERROR-HANDLING.md) for more details. - -```js -fetch('https://domain.invalid/') - .catch(err => console.error(err)); -``` - -#### Handling client and server errors -It is common to create a helper function to check that the response contains no client (4xx) or server (5xx) error responses: - -```js -function checkStatus(res) { - if (res.ok) { // res.status >= 200 && res.status < 300 - return res; - } else { - throw MyCustomError(res.statusText); - } -} - -fetch('https://httpbin.org/status/400') - .then(checkStatus) - .then(res => console.log('will not get here...')) -``` - -## Advanced Usage - -#### Streams -The "Node.js way" is to use streams when possible: - -```js -fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png') - .then(res => { - const dest = fs.createWriteStream('./octocat.png'); - res.body.pipe(dest); - }); -``` - -#### Buffer -If you prefer to cache binary data in full, use buffer(). (NOTE: `buffer()` is a `node-fetch`-only API) - -```js -const fileType = require('file-type'); - -fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png') - .then(res => res.buffer()) - .then(buffer => fileType(buffer)) - .then(type => { /* ... */ }); -``` - -#### Accessing Headers and other Meta data -```js -fetch('https://github.com/') - .then(res => { - console.log(res.ok); - console.log(res.status); - console.log(res.statusText); - console.log(res.headers.raw()); - console.log(res.headers.get('content-type')); - }); -``` - -#### Extract Set-Cookie Header - -Unlike browsers, you can access raw `Set-Cookie` headers manually using `Headers.raw()`. This is a `node-fetch` only API. - -```js -fetch(url).then(res => { - // returns an array of values, instead of a string of comma-separated values - console.log(res.headers.raw()['set-cookie']); -}); -``` - -#### Post data using a file stream - -```js -const { createReadStream } = require('fs'); - -const stream = createReadStream('input.txt'); - -fetch('https://httpbin.org/post', { method: 'POST', body: stream }) - .then(res => res.json()) - .then(json => console.log(json)); -``` - -#### Post with form-data (detect multipart) - -```js -const FormData = require('form-data'); - -const form = new FormData(); -form.append('a', 1); - -fetch('https://httpbin.org/post', { method: 'POST', body: form }) - .then(res => res.json()) - .then(json => console.log(json)); - -// OR, using custom headers -// NOTE: getHeaders() is non-standard API - -const form = new FormData(); -form.append('a', 1); - -const options = { - method: 'POST', - body: form, - headers: form.getHeaders() -} - -fetch('https://httpbin.org/post', options) - .then(res => res.json()) - .then(json => console.log(json)); -``` - -#### Request cancellation with AbortSignal - -> NOTE: You may cancel streamed requests only on Node >= v8.0.0 - -You may cancel requests with `AbortController`. A suggested implementation is [`abort-controller`](https://www.npmjs.com/package/abort-controller). - -An example of timing out a request after 150ms could be achieved as the following: - -```js -import AbortController from 'abort-controller'; - -const controller = new AbortController(); -const timeout = setTimeout( - () => { controller.abort(); }, - 150, -); - -fetch(url, { signal: controller.signal }) - .then(res => res.json()) - .then( - data => { - useData(data) - }, - err => { - if (err.name === 'AbortError') { - // request was aborted - } - }, - ) - .finally(() => { - clearTimeout(timeout); - }); -``` - -See [test cases](https://github.com/bitinn/node-fetch/blob/master/test/test.js) for more examples. - - -## API - -### fetch(url[, options]) - -- `url` A string representing the URL for fetching -- `options` [Options](#fetch-options) for the HTTP(S) request -- Returns: Promise<[Response](#class-response)> - -Perform an HTTP(S) fetch. - -`url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`. - - -### Options - -The default values are shown after each option key. - -```js -{ - // These properties are part of the Fetch Standard - method: 'GET', - headers: {}, // request headers. format is the identical to that accepted by the Headers constructor (see below) - body: null, // request body. can be null, a string, a Buffer, a Blob, or a Node.js Readable stream - redirect: 'follow', // set to `manual` to extract redirect headers, `error` to reject redirect - signal: null, // pass an instance of AbortSignal to optionally abort requests - - // The following properties are node-fetch extensions - follow: 20, // maximum redirect count. 0 to not follow redirect - timeout: 0, // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies). Signal is recommended instead. - compress: true, // support gzip/deflate content encoding. false to disable - size: 0, // maximum response body size in bytes. 0 to disable - agent: null // http(s).Agent instance or function that returns an instance (see below) -} -``` - -##### Default Headers - -If no values are set, the following request headers will be sent automatically: - -Header | Value -------------------- | -------------------------------------------------------- -`Accept-Encoding` | `gzip,deflate` _(when `options.compress === true`)_ -`Accept` | `*/*` -`Connection` | `close` _(when no `options.agent` is present)_ -`Content-Length` | _(automatically calculated, if possible)_ -`Transfer-Encoding` | `chunked` _(when `req.body` is a stream)_ -`User-Agent` | `node-fetch/1.0 (+https://github.com/bitinn/node-fetch)` - -Note: when `body` is a `Stream`, `Content-Length` is not set automatically. - -##### Custom Agent - -The `agent` option allows you to specify networking related options which are out of the scope of Fetch, including and not limited to the following: - -- Support self-signed certificate -- Use only IPv4 or IPv6 -- Custom DNS Lookup - -See [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options) for more information. - -In addition, the `agent` option accepts a function that returns `http`(s)`.Agent` instance given current [URL](https://nodejs.org/api/url.html), this is useful during a redirection chain across HTTP and HTTPS protocol. - -```js -const httpAgent = new http.Agent({ - keepAlive: true -}); -const httpsAgent = new https.Agent({ - keepAlive: true -}); - -const options = { - agent: function (_parsedURL) { - if (_parsedURL.protocol == 'http:') { - return httpAgent; - } else { - return httpsAgent; - } - } -} -``` - - -### Class: Request - -An HTTP(S) request containing information about URL, method, headers, and the body. This class implements the [Body](#iface-body) interface. - -Due to the nature of Node.js, the following properties are not implemented at this moment: - -- `type` -- `destination` -- `referrer` -- `referrerPolicy` -- `mode` -- `credentials` -- `cache` -- `integrity` -- `keepalive` - -The following node-fetch extension properties are provided: - -- `follow` -- `compress` -- `counter` -- `agent` - -See [options](#fetch-options) for exact meaning of these extensions. - -#### new Request(input[, options]) - -*(spec-compliant)* - -- `input` A string representing a URL, or another `Request` (which will be cloned) -- `options` [Options][#fetch-options] for the HTTP(S) request - -Constructs a new `Request` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request). - -In most cases, directly `fetch(url, options)` is simpler than creating a `Request` object. - - -### Class: Response - -An HTTP(S) response. This class implements the [Body](#iface-body) interface. - -The following properties are not implemented in node-fetch at this moment: - -- `Response.error()` -- `Response.redirect()` -- `type` -- `trailer` - -#### new Response([body[, options]]) - -*(spec-compliant)* - -- `body` A `String` or [`Readable` stream][node-readable] -- `options` A [`ResponseInit`][response-init] options dictionary - -Constructs a new `Response` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Response/Response). - -Because Node.js does not implement service workers (for which this class was designed), one rarely has to construct a `Response` directly. - -#### response.ok - -*(spec-compliant)* - -Convenience property representing if the request ended normally. Will evaluate to true if the response status was greater than or equal to 200 but smaller than 300. - -#### response.redirected - -*(spec-compliant)* - -Convenience property representing if the request has been redirected at least once. Will evaluate to true if the internal redirect counter is greater than 0. - - -### Class: Headers - -This class allows manipulating and iterating over a set of HTTP headers. All methods specified in the [Fetch Standard][whatwg-fetch] are implemented. - -#### new Headers([init]) - -*(spec-compliant)* - -- `init` Optional argument to pre-fill the `Headers` object - -Construct a new `Headers` object. `init` can be either `null`, a `Headers` object, an key-value map object or any iterable object. - -```js -// Example adapted from https://fetch.spec.whatwg.org/#example-headers-class - -const meta = { - 'Content-Type': 'text/xml', - 'Breaking-Bad': '<3' -}; -const headers = new Headers(meta); - -// The above is equivalent to -const meta = [ - [ 'Content-Type', 'text/xml' ], - [ 'Breaking-Bad', '<3' ] -]; -const headers = new Headers(meta); - -// You can in fact use any iterable objects, like a Map or even another Headers -const meta = new Map(); -meta.set('Content-Type', 'text/xml'); -meta.set('Breaking-Bad', '<3'); -const headers = new Headers(meta); -const copyOfHeaders = new Headers(headers); -``` - - -### Interface: Body - -`Body` is an abstract interface with methods that are applicable to both `Request` and `Response` classes. - -The following methods are not yet implemented in node-fetch at this moment: - -- `formData()` - -#### body.body - -*(deviation from spec)* - -* Node.js [`Readable` stream][node-readable] - -Data are encapsulated in the `Body` object. Note that while the [Fetch Standard][whatwg-fetch] requires the property to always be a WHATWG `ReadableStream`, in node-fetch it is a Node.js [`Readable` stream][node-readable]. - -#### body.bodyUsed - -*(spec-compliant)* - -* `Boolean` - -A boolean property for if this body has been consumed. Per the specs, a consumed body cannot be used again. - -#### body.arrayBuffer() -#### body.blob() -#### body.json() -#### body.text() - -*(spec-compliant)* - -* Returns: Promise - -Consume the body and return a promise that will resolve to one of these formats. - -#### body.buffer() - -*(node-fetch extension)* - -* Returns: Promise<Buffer> - -Consume the body and return a promise that will resolve to a Buffer. - -#### body.textConverted() - -*(node-fetch extension)* - -* Returns: Promise<String> - -Identical to `body.text()`, except instead of always converting to UTF-8, encoding sniffing will be performed and text converted to UTF-8 if possible. - -(This API requires an optional dependency of the npm package [encoding](https://www.npmjs.com/package/encoding), which you need to install manually. `webpack` users may see [a warning message](https://github.com/bitinn/node-fetch/issues/412#issuecomment-379007792) due to this optional dependency.) - - -### Class: FetchError - -*(node-fetch extension)* - -An operational error in the fetching process. See [ERROR-HANDLING.md][] for more info. - - -### Class: AbortError - -*(node-fetch extension)* - -An Error thrown when the request is aborted in response to an `AbortSignal`'s `abort` event. It has a `name` property of `AbortError`. See [ERROR-HANDLING.MD][] for more info. - -## Acknowledgement - -Thanks to [github/fetch](https://github.com/github/fetch) for providing a solid implementation reference. - -`node-fetch` v1 was maintained by [@bitinn](https://github.com/bitinn); v2 was maintained by [@TimothyGu](https://github.com/timothygu), [@bitinn](https://github.com/bitinn) and [@jimmywarting](https://github.com/jimmywarting); v2 readme is written by [@jkantr](https://github.com/jkantr). - -## License - -MIT - -[npm-image]: https://flat.badgen.net/npm/v/node-fetch -[npm-url]: https://www.npmjs.com/package/node-fetch -[travis-image]: https://flat.badgen.net/travis/bitinn/node-fetch -[travis-url]: https://travis-ci.org/bitinn/node-fetch -[codecov-image]: https://flat.badgen.net/codecov/c/github/bitinn/node-fetch/master -[codecov-url]: https://codecov.io/gh/bitinn/node-fetch -[install-size-image]: https://flat.badgen.net/packagephobia/install/node-fetch -[install-size-url]: https://packagephobia.now.sh/result?p=node-fetch -[discord-image]: https://img.shields.io/discord/619915844268326952?color=%237289DA&label=Discord&style=flat-square -[discord-url]: https://discord.gg/Zxbndcm -[opencollective-image]: https://opencollective.com/node-fetch/backers.svg -[opencollective-url]: https://opencollective.com/node-fetch -[whatwg-fetch]: https://fetch.spec.whatwg.org/ -[response-init]: https://fetch.spec.whatwg.org/#responseinit -[node-readable]: https://nodejs.org/api/stream.html#stream_readable_streams -[mdn-headers]: https://developer.mozilla.org/en-US/docs/Web/API/Headers -[LIMITS.md]: https://github.com/bitinn/node-fetch/blob/master/LIMITS.md -[ERROR-HANDLING.md]: https://github.com/bitinn/node-fetch/blob/master/ERROR-HANDLING.md -[UPGRADE-GUIDE.md]: https://github.com/bitinn/node-fetch/blob/master/UPGRADE-GUIDE.md diff --git a/node_modules/node-fetch/browser.js b/node_modules/node-fetch/browser.js deleted file mode 100644 index 83c54c584..000000000 --- a/node_modules/node-fetch/browser.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; - -// ref: https://github.com/tc39/proposal-global -var getGlobal = function () { - // the only reliable means to get the global object is - // `Function('return this')()` - // However, this causes CSP violations in Chrome apps. - if (typeof self !== 'undefined') { return self; } - if (typeof window !== 'undefined') { return window; } - if (typeof global !== 'undefined') { return global; } - throw new Error('unable to locate global object'); -} - -var global = getGlobal(); - -module.exports = exports = global.fetch; - -// Needed for TypeScript and Webpack. -if (global.fetch) { - exports.default = global.fetch.bind(global); -} - -exports.Headers = global.Headers; -exports.Request = global.Request; -exports.Response = global.Response; \ No newline at end of file diff --git a/node_modules/node-fetch/lib/index.es.js b/node_modules/node-fetch/lib/index.es.js deleted file mode 100644 index 61906c959..000000000 --- a/node_modules/node-fetch/lib/index.es.js +++ /dev/null @@ -1,1640 +0,0 @@ -process.emitWarning("The .es.js file is deprecated. Use .mjs instead."); - -import Stream from 'stream'; -import http from 'http'; -import Url from 'url'; -import https from 'https'; -import zlib from 'zlib'; - -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js - -// fix for "Readable" isn't a named export issue -const Readable = Stream.Readable; - -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); - -class Blob { - constructor() { - this[TYPE] = ''; - - const blobParts = arguments[0]; - const options = arguments[1]; - - const buffers = []; - let size = 0; - - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } - - this[BUFFER] = Buffer.concat(buffers); - - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); - - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } -} - -Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); - -Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * fetch-error.js - * - * FetchError interface for operational errors - */ - -/** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError - */ -function FetchError(message, type, systemError) { - Error.call(this, message); - - this.message = message; - this.type = type; - - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = require('encoding').convert; -} catch (e) {} - -const INTERNALS = Symbol('Body internals'); - -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream.PassThrough; - -/** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -function Body(body) { - var _this = this; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; - - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; - - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - - if (body instanceof Stream) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } -} - -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, - - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; - - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, - - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, - - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; - - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } -}; - -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); - -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } -}; - -/** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise - */ -function consumeBody() { - var _this4 = this; - - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - - this[INTERNALS].disturbed = true; - - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - - let body = this.body; - - // body is null - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is blob - if (isBlob(body)) { - body = body.stream(); - } - - // body is buffer - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } - - // istanbul ignore if: should never happen - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body.Promise(function (resolve, reject) { - let resTimeout; - - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } - - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } - - accumBytes += chunk.length; - accum.push(chunk); - }); - - body.on('end', function () { - if (abort) { - return; - } - - clearTimeout(resTimeout); - - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); -} - -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } - - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); - - // html5 - if (!res && str) { - res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; - - this[MAP] = Object.create(null); - - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } - - return; - } - - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } - - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } - - return this[MAP][key].join(', '); - } - - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } - - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } - - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } - - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; - } - - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } - - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } - - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } - - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } - - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } -} -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; - -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } -}); - -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; - - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} - -const INTERNAL = Symbol('internal'); - -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} - -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } - - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } - - this[INTERNAL].index = index + 1; - - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); - -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } - - return obj; -} - -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; -} - -const INTERNALS$1 = Symbol('Response internals'); - -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http.STATUS_CODES; - -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - Body.call(this, body, opts); - - const status = opts.status || 200; - const headers = new Headers(opts.headers); - - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } - - get url() { - return this[INTERNALS$1].url || ''; - } - - get status() { - return this[INTERNALS$1].status; - } - - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } - - get redirected() { - return this[INTERNALS$1].counter > 0; - } - - get statusText() { - return this[INTERNALS$1].statusText; - } - - get headers() { - return this[INTERNALS$1].headers; - } - - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } -} - -Body.mixIn(Response.prototype); - -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); - -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); - -const INTERNALS$2 = Symbol('Request internals'); - -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; - -const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; - -/** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} - -function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); -} - -/** - * Request class - * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void - */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parse_url(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parse_url(`${input}`); - } - input = {}; - } else { - parsedURL = parse_url(input.url); - } - - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } - - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; - - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); - - const headers = new Headers(init.headers || input.headers || {}); - - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } - - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; - - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - - get method() { - return this[INTERNALS$2].method; - } - - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } - - get headers() { - return this[INTERNALS$2].headers; - } - - get redirect() { - return this[INTERNALS$2].redirect; - } - - get signal() { - return this[INTERNALS$2].signal; - } - - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} - -Body.mixIn(Request.prototype); - -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); - -/** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request - */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - - // HTTP-network-or-cache fetch step 2.15 - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } - - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); - } - - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js - - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); -} - -/** - * abort-error.js - * - * AbortError interface for cancelled requests - */ - -/** - * Create AbortError instance - * - * @param String message Error message for human - * @return AbortError - */ -function AbortError(message) { - Error.call(this, message); - - this.type = 'aborted'; - this.message = message; - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -AbortError.prototype = Object.create(Error.prototype); -AbortError.prototype.constructor = AbortError; -AbortError.prototype.name = 'AbortError'; - -// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream.PassThrough; -const resolve_url = Url.resolve; - -/** - * Fetch function - * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise - */ -function fetch(url, opts) { - - // allow custom promise - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - - Body.Promise = fetch.Promise; - - // wrap http.request into fetch - return new fetch.Promise(function (resolve, reject) { - // build request object - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); - - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; - - let response = null; - - const abort = function abort() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; - - if (signal && signal.aborted) { - abort(); - return; - } - - const abortAndFinalize = function abortAndFinalize() { - abort(); - finalize(); - }; - - // send request - const req = send(options); - let reqTimeout; - - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } - - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } - - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); - - req.on('response', function (res) { - clearTimeout(reqTimeout); - - const headers = createHeadersLenient(res.headers); - - // HTTP fetch step 5 - if (fetch.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); - - // HTTP fetch step 5.3 - const locationURL = location === null ? null : resolve_url(request.url, location); - - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - // handle corrupted header - try { - headers.set('Location', locationURL); - } catch (err) { - // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request - reject(err); - } - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } - - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } - - // HTTP-redirect fetch step 15 - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } - - // prepare response - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); - - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; - - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); - - // HTTP-network fetch step 12.1.1.4: handle content codings - - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - response = new Response(body, response_options); - resolve(response); - return; - } - - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body, response_options); - resolve(response); - return; - } - - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response(body, response_options); - resolve(response); - }); - return; - } - - // for br - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response(body, response_options); - resolve(response); - return; - } - - // otherwise, use response as-is - response = new Response(body, response_options); - resolve(response); - }); - - writeToStream(req, request); - }); -} -/** - * Redirect code matching - * - * @param Number code Status code - * @return Boolean - */ -fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; - -// expose Promise -fetch.Promise = global.Promise; - -export default fetch; -export { Headers, Request, Response, FetchError }; diff --git a/node_modules/node-fetch/lib/index.js b/node_modules/node-fetch/lib/index.js deleted file mode 100644 index 4b241bfbf..000000000 --- a/node_modules/node-fetch/lib/index.js +++ /dev/null @@ -1,1649 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var Stream = _interopDefault(require('stream')); -var http = _interopDefault(require('http')); -var Url = _interopDefault(require('url')); -var https = _interopDefault(require('https')); -var zlib = _interopDefault(require('zlib')); - -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js - -// fix for "Readable" isn't a named export issue -const Readable = Stream.Readable; - -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); - -class Blob { - constructor() { - this[TYPE] = ''; - - const blobParts = arguments[0]; - const options = arguments[1]; - - const buffers = []; - let size = 0; - - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } - - this[BUFFER] = Buffer.concat(buffers); - - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); - - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } -} - -Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); - -Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * fetch-error.js - * - * FetchError interface for operational errors - */ - -/** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError - */ -function FetchError(message, type, systemError) { - Error.call(this, message); - - this.message = message; - this.type = type; - - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = require('encoding').convert; -} catch (e) {} - -const INTERNALS = Symbol('Body internals'); - -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream.PassThrough; - -/** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -function Body(body) { - var _this = this; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; - - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; - - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - - if (body instanceof Stream) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } -} - -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, - - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; - - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, - - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, - - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; - - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } -}; - -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); - -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } -}; - -/** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise - */ -function consumeBody() { - var _this4 = this; - - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - - this[INTERNALS].disturbed = true; - - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - - let body = this.body; - - // body is null - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is blob - if (isBlob(body)) { - body = body.stream(); - } - - // body is buffer - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } - - // istanbul ignore if: should never happen - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body.Promise(function (resolve, reject) { - let resTimeout; - - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } - - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } - - accumBytes += chunk.length; - accum.push(chunk); - }); - - body.on('end', function () { - if (abort) { - return; - } - - clearTimeout(resTimeout); - - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); -} - -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } - - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); - - // html5 - if (!res && str) { - res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; - - this[MAP] = Object.create(null); - - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } - - return; - } - - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } - - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } - - return this[MAP][key].join(', '); - } - - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } - - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } - - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } - - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; - } - - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } - - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } - - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } - - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } - - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } -} -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; - -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } -}); - -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; - - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} - -const INTERNAL = Symbol('internal'); - -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} - -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } - - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } - - this[INTERNAL].index = index + 1; - - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); - -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } - - return obj; -} - -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; -} - -const INTERNALS$1 = Symbol('Response internals'); - -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http.STATUS_CODES; - -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - Body.call(this, body, opts); - - const status = opts.status || 200; - const headers = new Headers(opts.headers); - - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } - - get url() { - return this[INTERNALS$1].url || ''; - } - - get status() { - return this[INTERNALS$1].status; - } - - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } - - get redirected() { - return this[INTERNALS$1].counter > 0; - } - - get statusText() { - return this[INTERNALS$1].statusText; - } - - get headers() { - return this[INTERNALS$1].headers; - } - - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } -} - -Body.mixIn(Response.prototype); - -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); - -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); - -const INTERNALS$2 = Symbol('Request internals'); - -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; - -const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; - -/** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} - -function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); -} - -/** - * Request class - * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void - */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parse_url(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parse_url(`${input}`); - } - input = {}; - } else { - parsedURL = parse_url(input.url); - } - - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } - - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; - - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); - - const headers = new Headers(init.headers || input.headers || {}); - - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } - - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; - - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - - get method() { - return this[INTERNALS$2].method; - } - - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } - - get headers() { - return this[INTERNALS$2].headers; - } - - get redirect() { - return this[INTERNALS$2].redirect; - } - - get signal() { - return this[INTERNALS$2].signal; - } - - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} - -Body.mixIn(Request.prototype); - -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); - -/** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request - */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - - // HTTP-network-or-cache fetch step 2.15 - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } - - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); - } - - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js - - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); -} - -/** - * abort-error.js - * - * AbortError interface for cancelled requests - */ - -/** - * Create AbortError instance - * - * @param String message Error message for human - * @return AbortError - */ -function AbortError(message) { - Error.call(this, message); - - this.type = 'aborted'; - this.message = message; - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -AbortError.prototype = Object.create(Error.prototype); -AbortError.prototype.constructor = AbortError; -AbortError.prototype.name = 'AbortError'; - -// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream.PassThrough; -const resolve_url = Url.resolve; - -/** - * Fetch function - * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise - */ -function fetch(url, opts) { - - // allow custom promise - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - - Body.Promise = fetch.Promise; - - // wrap http.request into fetch - return new fetch.Promise(function (resolve, reject) { - // build request object - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); - - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; - - let response = null; - - const abort = function abort() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; - - if (signal && signal.aborted) { - abort(); - return; - } - - const abortAndFinalize = function abortAndFinalize() { - abort(); - finalize(); - }; - - // send request - const req = send(options); - let reqTimeout; - - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } - - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } - - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); - - req.on('response', function (res) { - clearTimeout(reqTimeout); - - const headers = createHeadersLenient(res.headers); - - // HTTP fetch step 5 - if (fetch.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); - - // HTTP fetch step 5.3 - const locationURL = location === null ? null : resolve_url(request.url, location); - - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - // handle corrupted header - try { - headers.set('Location', locationURL); - } catch (err) { - // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request - reject(err); - } - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } - - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } - - // HTTP-redirect fetch step 15 - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } - - // prepare response - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); - - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; - - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); - - // HTTP-network fetch step 12.1.1.4: handle content codings - - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - response = new Response(body, response_options); - resolve(response); - return; - } - - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body, response_options); - resolve(response); - return; - } - - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response(body, response_options); - resolve(response); - }); - return; - } - - // for br - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response(body, response_options); - resolve(response); - return; - } - - // otherwise, use response as-is - response = new Response(body, response_options); - resolve(response); - }); - - writeToStream(req, request); - }); -} -/** - * Redirect code matching - * - * @param Number code Status code - * @return Boolean - */ -fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; - -// expose Promise -fetch.Promise = global.Promise; - -module.exports = exports = fetch; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = exports; -exports.Headers = Headers; -exports.Request = Request; -exports.Response = Response; -exports.FetchError = FetchError; diff --git a/node_modules/node-fetch/lib/index.mjs b/node_modules/node-fetch/lib/index.mjs deleted file mode 100644 index ecf59af8c..000000000 --- a/node_modules/node-fetch/lib/index.mjs +++ /dev/null @@ -1,1638 +0,0 @@ -import Stream from 'stream'; -import http from 'http'; -import Url from 'url'; -import https from 'https'; -import zlib from 'zlib'; - -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js - -// fix for "Readable" isn't a named export issue -const Readable = Stream.Readable; - -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); - -class Blob { - constructor() { - this[TYPE] = ''; - - const blobParts = arguments[0]; - const options = arguments[1]; - - const buffers = []; - let size = 0; - - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } - - this[BUFFER] = Buffer.concat(buffers); - - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); - - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } -} - -Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); - -Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * fetch-error.js - * - * FetchError interface for operational errors - */ - -/** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError - */ -function FetchError(message, type, systemError) { - Error.call(this, message); - - this.message = message; - this.type = type; - - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = require('encoding').convert; -} catch (e) {} - -const INTERNALS = Symbol('Body internals'); - -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream.PassThrough; - -/** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -function Body(body) { - var _this = this; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; - - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; - - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - - if (body instanceof Stream) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } -} - -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, - - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; - - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, - - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, - - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; - - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } -}; - -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); - -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } -}; - -/** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise - */ -function consumeBody() { - var _this4 = this; - - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - - this[INTERNALS].disturbed = true; - - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - - let body = this.body; - - // body is null - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is blob - if (isBlob(body)) { - body = body.stream(); - } - - // body is buffer - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } - - // istanbul ignore if: should never happen - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body.Promise(function (resolve, reject) { - let resTimeout; - - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } - - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } - - accumBytes += chunk.length; - accum.push(chunk); - }); - - body.on('end', function () { - if (abort) { - return; - } - - clearTimeout(resTimeout); - - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); -} - -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } - - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); - - // html5 - if (!res && str) { - res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; - - this[MAP] = Object.create(null); - - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } - - return; - } - - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } - - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } - - return this[MAP][key].join(', '); - } - - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } - - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } - - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } - - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; - } - - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } - - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } - - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } - - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } - - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } -} -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; - -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } -}); - -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; - - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} - -const INTERNAL = Symbol('internal'); - -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} - -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } - - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } - - this[INTERNAL].index = index + 1; - - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); - -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } - - return obj; -} - -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; -} - -const INTERNALS$1 = Symbol('Response internals'); - -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http.STATUS_CODES; - -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - Body.call(this, body, opts); - - const status = opts.status || 200; - const headers = new Headers(opts.headers); - - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } - - get url() { - return this[INTERNALS$1].url || ''; - } - - get status() { - return this[INTERNALS$1].status; - } - - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } - - get redirected() { - return this[INTERNALS$1].counter > 0; - } - - get statusText() { - return this[INTERNALS$1].statusText; - } - - get headers() { - return this[INTERNALS$1].headers; - } - - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } -} - -Body.mixIn(Response.prototype); - -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); - -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); - -const INTERNALS$2 = Symbol('Request internals'); - -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; - -const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; - -/** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} - -function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); -} - -/** - * Request class - * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void - */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parse_url(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parse_url(`${input}`); - } - input = {}; - } else { - parsedURL = parse_url(input.url); - } - - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } - - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; - - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); - - const headers = new Headers(init.headers || input.headers || {}); - - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } - - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; - - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - - get method() { - return this[INTERNALS$2].method; - } - - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } - - get headers() { - return this[INTERNALS$2].headers; - } - - get redirect() { - return this[INTERNALS$2].redirect; - } - - get signal() { - return this[INTERNALS$2].signal; - } - - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} - -Body.mixIn(Request.prototype); - -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); - -/** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request - */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - - // HTTP-network-or-cache fetch step 2.15 - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } - - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); - } - - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js - - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); -} - -/** - * abort-error.js - * - * AbortError interface for cancelled requests - */ - -/** - * Create AbortError instance - * - * @param String message Error message for human - * @return AbortError - */ -function AbortError(message) { - Error.call(this, message); - - this.type = 'aborted'; - this.message = message; - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -AbortError.prototype = Object.create(Error.prototype); -AbortError.prototype.constructor = AbortError; -AbortError.prototype.name = 'AbortError'; - -// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream.PassThrough; -const resolve_url = Url.resolve; - -/** - * Fetch function - * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise - */ -function fetch(url, opts) { - - // allow custom promise - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - - Body.Promise = fetch.Promise; - - // wrap http.request into fetch - return new fetch.Promise(function (resolve, reject) { - // build request object - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); - - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; - - let response = null; - - const abort = function abort() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; - - if (signal && signal.aborted) { - abort(); - return; - } - - const abortAndFinalize = function abortAndFinalize() { - abort(); - finalize(); - }; - - // send request - const req = send(options); - let reqTimeout; - - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } - - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } - - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); - - req.on('response', function (res) { - clearTimeout(reqTimeout); - - const headers = createHeadersLenient(res.headers); - - // HTTP fetch step 5 - if (fetch.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); - - // HTTP fetch step 5.3 - const locationURL = location === null ? null : resolve_url(request.url, location); - - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - // handle corrupted header - try { - headers.set('Location', locationURL); - } catch (err) { - // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request - reject(err); - } - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } - - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } - - // HTTP-redirect fetch step 15 - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } - - // prepare response - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); - - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; - - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); - - // HTTP-network fetch step 12.1.1.4: handle content codings - - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - response = new Response(body, response_options); - resolve(response); - return; - } - - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body, response_options); - resolve(response); - return; - } - - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response(body, response_options); - resolve(response); - }); - return; - } - - // for br - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response(body, response_options); - resolve(response); - return; - } - - // otherwise, use response as-is - response = new Response(body, response_options); - resolve(response); - }); - - writeToStream(req, request); - }); -} -/** - * Redirect code matching - * - * @param Number code Status code - * @return Boolean - */ -fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; - -// expose Promise -fetch.Promise = global.Promise; - -export default fetch; -export { Headers, Request, Response, FetchError }; diff --git a/node_modules/node-fetch/package.json b/node_modules/node-fetch/package.json deleted file mode 100644 index dff3da8ae..000000000 --- a/node_modules/node-fetch/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_from": "node-fetch@^2.6.1", - "_id": "node-fetch@2.6.1", - "_inBundle": false, - "_integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "_location": "/node-fetch", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "node-fetch@^2.6.1", - "name": "node-fetch", - "escapedName": "node-fetch", - "rawSpec": "^2.6.1", - "saveSpec": null, - "fetchSpec": "^2.6.1" - }, - "_requiredBy": [ - "/@octokit/request" - ], - "_resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "_shasum": "045bd323631f76ed2e2b55573394416b639a0052", - "_spec": "node-fetch@^2.6.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\@octokit\\request", - "author": { - "name": "David Frank" - }, - "browser": "./browser.js", - "bugs": { - "url": "https://github.com/bitinn/node-fetch/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "A light-weight module that brings window.fetch to node.js", - "devDependencies": { - "@ungap/url-search-params": "^0.1.2", - "abort-controller": "^1.1.0", - "abortcontroller-polyfill": "^1.3.0", - "babel-core": "^6.26.3", - "babel-plugin-istanbul": "^4.1.6", - "babel-preset-env": "^1.6.1", - "babel-register": "^6.16.3", - "chai": "^3.5.0", - "chai-as-promised": "^7.1.1", - "chai-iterator": "^1.1.1", - "chai-string": "~1.3.0", - "codecov": "^3.3.0", - "cross-env": "^5.2.0", - "form-data": "^2.3.3", - "is-builtin-module": "^1.0.0", - "mocha": "^5.0.0", - "nyc": "11.9.0", - "parted": "^0.1.1", - "promise": "^8.0.3", - "resumer": "0.0.0", - "rollup": "^0.63.4", - "rollup-plugin-babel": "^3.0.7", - "string-to-arraybuffer": "^1.0.2", - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "files": [ - "lib/index.js", - "lib/index.mjs", - "lib/index.es.js", - "browser.js" - ], - "homepage": "https://github.com/bitinn/node-fetch", - "keywords": [ - "fetch", - "http", - "promise" - ], - "license": "MIT", - "main": "lib/index", - "module": "lib/index.mjs", - "name": "node-fetch", - "repository": { - "type": "git", - "url": "git+https://github.com/bitinn/node-fetch.git" - }, - "scripts": { - "build": "cross-env BABEL_ENV=rollup rollup -c", - "coverage": "cross-env BABEL_ENV=coverage nyc --reporter json --reporter text mocha -R spec test/test.js && codecov -f coverage/coverage-final.json", - "prepare": "npm run build", - "report": "cross-env BABEL_ENV=coverage nyc --reporter lcov --reporter text mocha -R spec test/test.js", - "test": "cross-env BABEL_ENV=test mocha --require babel-register --throw-deprecation test/test.js" - }, - "version": "2.6.1" -} diff --git a/node_modules/object-copy/LICENSE b/node_modules/object-copy/LICENSE deleted file mode 100644 index e28e60323..000000000 --- a/node_modules/object-copy/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/object-copy/index.js b/node_modules/object-copy/index.js deleted file mode 100644 index f9faa2235..000000000 --- a/node_modules/object-copy/index.js +++ /dev/null @@ -1,174 +0,0 @@ -'use strict'; - -var typeOf = require('kind-of'); -var copyDescriptor = require('copy-descriptor'); -var define = require('define-property'); - -/** - * Copy static properties, prototype properties, and descriptors from one object to another. - * - * ```js - * function App() {} - * var proto = App.prototype; - * App.prototype.set = function() {}; - * App.prototype.get = function() {}; - * - * var obj = {}; - * copy(obj, proto); - * ``` - * @param {Object} `receiver` - * @param {Object} `provider` - * @param {String|Array} `omit` One or more properties to omit - * @return {Object} - * @api public - */ - -function copy(receiver, provider, omit) { - if (!isObject(receiver)) { - throw new TypeError('expected receiving object to be an object.'); - } - if (!isObject(provider)) { - throw new TypeError('expected providing object to be an object.'); - } - - var props = nativeKeys(provider); - var keys = Object.keys(provider); - var len = props.length; - omit = arrayify(omit); - - while (len--) { - var key = props[len]; - - if (has(keys, key)) { - define(receiver, key, provider[key]); - } else if (!(key in receiver) && !has(omit, key)) { - copyDescriptor(receiver, provider, key); - } - } -}; - -/** - * Return true if the given value is an object or function - */ - -function isObject(val) { - return typeOf(val) === 'object' || typeof val === 'function'; -} - -/** - * Returns true if an array has any of the given elements, or an - * object has any of the give keys. - * - * ```js - * has(['a', 'b', 'c'], 'c'); - * //=> true - * - * has(['a', 'b', 'c'], ['c', 'z']); - * //=> true - * - * has({a: 'b', c: 'd'}, ['c', 'z']); - * //=> true - * ``` - * @param {Object} `obj` - * @param {String|Array} `val` - * @return {Boolean} - */ - -function has(obj, val) { - val = arrayify(val); - var len = val.length; - - if (isObject(obj)) { - for (var key in obj) { - if (val.indexOf(key) > -1) { - return true; - } - } - - var keys = nativeKeys(obj); - return has(keys, val); - } - - if (Array.isArray(obj)) { - var arr = obj; - while (len--) { - if (arr.indexOf(val[len]) > -1) { - return true; - } - } - return false; - } - - throw new TypeError('expected an array or object.'); -} - -/** - * Cast the given value to an array. - * - * ```js - * arrayify('foo'); - * //=> ['foo'] - * - * arrayify(['foo']); - * //=> ['foo'] - * ``` - * - * @param {String|Array} `val` - * @return {Array} - */ - -function arrayify(val) { - return val ? (Array.isArray(val) ? val : [val]) : []; -} - -/** - * Returns true if a value has a `contructor` - * - * ```js - * hasConstructor({}); - * //=> true - * - * hasConstructor(Object.create(null)); - * //=> false - * ``` - * @param {Object} `value` - * @return {Boolean} - */ - -function hasConstructor(val) { - return isObject(val) && typeof val.constructor !== 'undefined'; -} - -/** - * Get the native `ownPropertyNames` from the constructor of the - * given `object`. An empty array is returned if the object does - * not have a constructor. - * - * ```js - * nativeKeys({a: 'b', b: 'c', c: 'd'}) - * //=> ['a', 'b', 'c'] - * - * nativeKeys(function(){}) - * //=> ['length', 'caller'] - * ``` - * - * @param {Object} `obj` Object that has a `constructor`. - * @return {Array} Array of keys. - */ - -function nativeKeys(val) { - if (!hasConstructor(val)) return []; - return Object.getOwnPropertyNames(val); -} - -/** - * Expose `copy` - */ - -module.exports = copy; - -/** - * Expose `copy.has` for tests - */ - -module.exports.has = has; diff --git a/node_modules/object-copy/node_modules/define-property/LICENSE b/node_modules/object-copy/node_modules/define-property/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/object-copy/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/object-copy/node_modules/define-property/README.md b/node_modules/object-copy/node_modules/define-property/README.md deleted file mode 100644 index 8cac698ad..000000000 --- a/node_modules/object-copy/node_modules/define-property/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# define-property [![NPM version](https://badge.fury.io/js/define-property.svg)](http://badge.fury.io/js/define-property) - -> Define a non-enumerable property on an object. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i define-property --save -``` - -## Usage - -**Params** - -* `obj`: The object on which to define the property. -* `prop`: The name of the property to be defined or modified. -* `descriptor`: The descriptor for the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**get/set** - -```js -define(obj, 'foo', { - get: function() {}, - set: function() {} -}); -``` - -## Related projects - -* [delegate-object](https://www.npmjs.com/package/delegate-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/delegate-object) | [homepage](https://github.com/doowb/delegate-object) -* [forward-object](https://www.npmjs.com/package/forward-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/forward-object) | [homepage](https://github.com/doowb/forward-object) -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep) -* [mixin-object](https://www.npmjs.com/package/mixin-object): Mixin the own and inherited properties of other objects onto the first object. Pass an… [more](https://www.npmjs.com/package/mixin-object) | [homepage](https://github.com/jonschlinkert/mixin-object) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/define-property/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 31, 2015._ diff --git a/node_modules/object-copy/node_modules/define-property/index.js b/node_modules/object-copy/node_modules/define-property/index.js deleted file mode 100644 index 3e0e5e133..000000000 --- a/node_modules/object-copy/node_modules/define-property/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var isDescriptor = require('is-descriptor'); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; diff --git a/node_modules/object-copy/node_modules/define-property/package.json b/node_modules/object-copy/node_modules/define-property/package.json deleted file mode 100644 index afa8b082b..000000000 --- a/node_modules/object-copy/node_modules/define-property/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_args": [ - [ - "define-property@0.2.5", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "define-property@0.2.5", - "_id": "define-property@0.2.5", - "_inBundle": false, - "_integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "_location": "/object-copy/define-property", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "define-property@0.2.5", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "0.2.5", - "saveSpec": null, - "fetchSpec": "0.2.5" - }, - "_requiredBy": [ - "/object-copy" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "_spec": "0.2.5", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "description": "Define a non-enumerable property on an object.", - "devDependencies": { - "mocha": "*", - "should": "^7.0.4" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "mixin-deep", - "mixin-object", - "delegate-object", - "forward-object" - ] - } - }, - "version": "0.2.5" -} diff --git a/node_modules/object-copy/node_modules/kind-of/LICENSE b/node_modules/object-copy/node_modules/kind-of/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/object-copy/node_modules/kind-of/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/object-copy/node_modules/kind-of/README.md b/node_modules/object-copy/node_modules/kind-of/README.md deleted file mode 100644 index 6a9df36d3..000000000 --- a/node_modules/object-copy/node_modules/kind-of/README.md +++ /dev/null @@ -1,261 +0,0 @@ -# kind-of [![NPM version](https://img.shields.io/npm/v/kind-of.svg?style=flat)](https://www.npmjs.com/package/kind-of) [![NPM monthly downloads](https://img.shields.io/npm/dm/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![NPM total downloads](https://img.shields.io/npm/dt/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/kind-of.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/kind-of) - -> Get the native type of a value. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save kind-of -``` - -## Install - -Install with [bower](https://bower.io/) - -```sh -$ bower install kind-of --save -``` - -## Usage - -> es5, browser and es6 ready - -```js -var kindOf = require('kind-of'); - -kindOf(undefined); -//=> 'undefined' - -kindOf(null); -//=> 'null' - -kindOf(true); -//=> 'boolean' - -kindOf(false); -//=> 'boolean' - -kindOf(new Boolean(true)); -//=> 'boolean' - -kindOf(new Buffer('')); -//=> 'buffer' - -kindOf(42); -//=> 'number' - -kindOf(new Number(42)); -//=> 'number' - -kindOf('str'); -//=> 'string' - -kindOf(new String('str')); -//=> 'string' - -kindOf(arguments); -//=> 'arguments' - -kindOf({}); -//=> 'object' - -kindOf(Object.create(null)); -//=> 'object' - -kindOf(new Test()); -//=> 'object' - -kindOf(new Date()); -//=> 'date' - -kindOf([]); -//=> 'array' - -kindOf([1, 2, 3]); -//=> 'array' - -kindOf(new Array()); -//=> 'array' - -kindOf(/foo/); -//=> 'regexp' - -kindOf(new RegExp('foo')); -//=> 'regexp' - -kindOf(function () {}); -//=> 'function' - -kindOf(function * () {}); -//=> 'function' - -kindOf(new Function()); -//=> 'function' - -kindOf(new Map()); -//=> 'map' - -kindOf(new WeakMap()); -//=> 'weakmap' - -kindOf(new Set()); -//=> 'set' - -kindOf(new WeakSet()); -//=> 'weakset' - -kindOf(Symbol('str')); -//=> 'symbol' - -kindOf(new Int8Array()); -//=> 'int8array' - -kindOf(new Uint8Array()); -//=> 'uint8array' - -kindOf(new Uint8ClampedArray()); -//=> 'uint8clampedarray' - -kindOf(new Int16Array()); -//=> 'int16array' - -kindOf(new Uint16Array()); -//=> 'uint16array' - -kindOf(new Int32Array()); -//=> 'int32array' - -kindOf(new Uint32Array()); -//=> 'uint32array' - -kindOf(new Float32Array()); -//=> 'float32array' - -kindOf(new Float64Array()); -//=> 'float64array' -``` - -## Benchmarks - -Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of). -Note that performaces is slower for es6 features `Map`, `WeakMap`, `Set` and `WeakSet`. - -```bash -#1: array - current x 23,329,397 ops/sec ±0.82% (94 runs sampled) - lib-type-of x 4,170,273 ops/sec ±0.55% (94 runs sampled) - lib-typeof x 9,686,935 ops/sec ±0.59% (98 runs sampled) - -#2: boolean - current x 27,197,115 ops/sec ±0.85% (94 runs sampled) - lib-type-of x 3,145,791 ops/sec ±0.73% (97 runs sampled) - lib-typeof x 9,199,562 ops/sec ±0.44% (99 runs sampled) - -#3: date - current x 20,190,117 ops/sec ±0.86% (92 runs sampled) - lib-type-of x 5,166,970 ops/sec ±0.74% (94 runs sampled) - lib-typeof x 9,610,821 ops/sec ±0.50% (96 runs sampled) - -#4: function - current x 23,855,460 ops/sec ±0.60% (97 runs sampled) - lib-type-of x 5,667,740 ops/sec ±0.54% (100 runs sampled) - lib-typeof x 10,010,644 ops/sec ±0.44% (100 runs sampled) - -#5: null - current x 27,061,047 ops/sec ±0.97% (96 runs sampled) - lib-type-of x 13,965,573 ops/sec ±0.62% (97 runs sampled) - lib-typeof x 8,460,194 ops/sec ±0.61% (97 runs sampled) - -#6: number - current x 25,075,682 ops/sec ±0.53% (99 runs sampled) - lib-type-of x 2,266,405 ops/sec ±0.41% (98 runs sampled) - lib-typeof x 9,821,481 ops/sec ±0.45% (99 runs sampled) - -#7: object - current x 3,348,980 ops/sec ±0.49% (99 runs sampled) - lib-type-of x 3,245,138 ops/sec ±0.60% (94 runs sampled) - lib-typeof x 9,262,952 ops/sec ±0.59% (99 runs sampled) - -#8: regex - current x 21,284,827 ops/sec ±0.72% (96 runs sampled) - lib-type-of x 4,689,241 ops/sec ±0.43% (100 runs sampled) - lib-typeof x 8,957,593 ops/sec ±0.62% (98 runs sampled) - -#9: string - current x 25,379,234 ops/sec ±0.58% (96 runs sampled) - lib-type-of x 3,635,148 ops/sec ±0.76% (93 runs sampled) - lib-typeof x 9,494,134 ops/sec ±0.49% (98 runs sampled) - -#10: undef - current x 27,459,221 ops/sec ±1.01% (93 runs sampled) - lib-type-of x 14,360,433 ops/sec ±0.52% (99 runs sampled) - lib-typeof x 23,202,868 ops/sec ±0.59% (94 runs sampled) - -``` - -## Optimizations - -In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library: - -1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot. -2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it. -3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'` - -## About - -### Related projects - -* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 59 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [miguelmota](https://github.com/miguelmota) | -| 1 | [dtothefp](https://github.com/dtothefp) | -| 1 | [ksheedlo](https://github.com/ksheedlo) | -| 1 | [pdehaan](https://github.com/pdehaan) | -| 1 | [laggingreflex](https://github.com/laggingreflex) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 16, 2017._ \ No newline at end of file diff --git a/node_modules/object-copy/node_modules/kind-of/index.js b/node_modules/object-copy/node_modules/kind-of/index.js deleted file mode 100644 index b52c2917f..000000000 --- a/node_modules/object-copy/node_modules/kind-of/index.js +++ /dev/null @@ -1,116 +0,0 @@ -var isBuffer = require('is-buffer'); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; diff --git a/node_modules/object-copy/node_modules/kind-of/package.json b/node_modules/object-copy/node_modules/kind-of/package.json deleted file mode 100644 index 56fe429c3..000000000 --- a/node_modules/object-copy/node_modules/kind-of/package.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "_args": [ - [ - "kind-of@3.2.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "kind-of@3.2.2", - "_id": "kind-of@3.2.2", - "_inBundle": false, - "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "_location": "/object-copy/kind-of", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "kind-of@3.2.2", - "name": "kind-of", - "escapedName": "kind-of", - "rawSpec": "3.2.2", - "saveSpec": null, - "fetchSpec": "3.2.2" - }, - "_requiredBy": [ - "/object-copy" - ], - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "_spec": "3.2.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/kind-of/issues" - }, - "contributors": [ - { - "name": "David Fox-Powell", - "url": "https://dtothefp.github.io/me" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Ken Sheedlo", - "url": "kensheedlo.com" - }, - { - "name": "laggingreflex", - "url": "https://github.com/laggingreflex" - }, - { - "name": "Miguel Mota", - "url": "https://miguelmota.com" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - } - ], - "dependencies": { - "is-buffer": "^1.1.5" - }, - "description": "Get the native type of a value.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "benchmarked": "^1.0.0", - "browserify": "^14.3.0", - "glob": "^7.1.1", - "gulp-format-md": "^0.1.12", - "mocha": "^3.3.0", - "type-of": "^2.0.1", - "typeof": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/kind-of", - "keywords": [ - "arguments", - "array", - "boolean", - "check", - "date", - "function", - "is", - "is-type", - "is-type-of", - "kind", - "kind-of", - "number", - "object", - "of", - "regexp", - "string", - "test", - "type", - "type-of", - "typeof", - "types" - ], - "license": "MIT", - "main": "index.js", - "name": "kind-of", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/kind-of.git" - }, - "scripts": { - "prepublish": "browserify -o browser.js -e index.js -s index --bare", - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-glob", - "is-number", - "is-primitive" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "verb" - ] - }, - "version": "3.2.2" -} diff --git a/node_modules/object-copy/package.json b/node_modules/object-copy/package.json deleted file mode 100644 index 63fcd1c70..000000000 --- a/node_modules/object-copy/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_args": [ - [ - "object-copy@0.1.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "object-copy@0.1.0", - "_id": "object-copy@0.1.0", - "_inBundle": false, - "_integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "_location": "/object-copy", - "_phantomChildren": { - "is-buffer": "1.1.6", - "is-descriptor": "0.1.6" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "object-copy@0.1.0", - "name": "object-copy", - "escapedName": "object-copy", - "rawSpec": "0.1.0", - "saveSpec": null, - "fetchSpec": "0.1.0" - }, - "_requiredBy": [ - "/static-extend" - ], - "_resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "_spec": "0.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/object-copy/issues" - }, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "description": "Copy static properties, prototype properties, and descriptors from one object to another.", - "devDependencies": { - "gulp-format-md": "*", - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/object-copy", - "keywords": [ - "copy", - "object" - ], - "license": "MIT", - "main": "index.js", - "name": "object-copy", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/object-copy.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "layout": "default", - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [] - }, - "reflinks": [ - "verb" - ] - }, - "version": "0.1.0" -} diff --git a/node_modules/object-visit/LICENSE b/node_modules/object-visit/LICENSE deleted file mode 100644 index ec85897eb..000000000 --- a/node_modules/object-visit/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, 2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/object-visit/README.md b/node_modules/object-visit/README.md deleted file mode 100644 index 64015cb9a..000000000 --- a/node_modules/object-visit/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# object-visit [![NPM version](https://img.shields.io/npm/v/object-visit.svg?style=flat)](https://www.npmjs.com/package/object-visit) [![NPM monthly downloads](https://img.shields.io/npm/dm/object-visit.svg?style=flat)](https://npmjs.org/package/object-visit) [![NPM total downloads](https://img.shields.io/npm/dt/object-visit.svg?style=flat)](https://npmjs.org/package/object-visit) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/object-visit.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/object-visit) - -> Call a specified method on each value in the given object. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save object-visit -``` - -## Usage - -```js -var visit = require('object-visit'); - -var ctx = { - data: {}, - set: function (key, value) { - if (typeof key === 'object') { - visit(ctx, 'set', key); - } else { - ctx.data[key] = value; - } - } -}; - -ctx.set('a', 'a'); -ctx.set('b', 'b'); -ctx.set('c', 'c'); -ctx.set({d: {e: 'f'}}); - -console.log(ctx.data); -//=> {a: 'a', b: 'b', c: 'c', d: { e: 'f' }}; -``` - -## About - -### Related projects - -* [base-methods](https://www.npmjs.com/package/base-methods): base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… [more](https://github.com/jonschlinkert/base-methods) | [homepage](https://github.com/jonschlinkert/base-methods "base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`.") -* [collection-visit](https://www.npmjs.com/package/collection-visit): Visit a method over the items in an object, or map visit over the objects… [more](https://github.com/jonschlinkert/collection-visit) | [homepage](https://github.com/jonschlinkert/collection-visit "Visit a method over the items in an object, or map visit over the objects in an array.") -* [define-property](https://www.npmjs.com/package/define-property): Define a non-enumerable property on an object. | [homepage](https://github.com/jonschlinkert/define-property "Define a non-enumerable property on an object.") -* [map-visit](https://www.npmjs.com/package/map-visit): Map `visit` over an array of objects. | [homepage](https://github.com/jonschlinkert/map-visit "Map `visit` over an array of objects.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 30, 2017._ \ No newline at end of file diff --git a/node_modules/object-visit/index.js b/node_modules/object-visit/index.js deleted file mode 100644 index fcaeda925..000000000 --- a/node_modules/object-visit/index.js +++ /dev/null @@ -1,33 +0,0 @@ -/*! - * object-visit - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var isObject = require('isobject'); - -module.exports = function visit(thisArg, method, target, val) { - if (!isObject(thisArg) && typeof thisArg !== 'function') { - throw new Error('object-visit expects `thisArg` to be an object.'); - } - - if (typeof method !== 'string') { - throw new Error('object-visit expects `method` name to be a string'); - } - - if (typeof thisArg[method] !== 'function') { - return thisArg; - } - - var args = [].slice.call(arguments, 3); - target = target || {}; - - for (var key in target) { - var arr = [key, target[key]].concat(args); - thisArg[method].apply(thisArg, arr); - } - return thisArg; -}; diff --git a/node_modules/object-visit/package.json b/node_modules/object-visit/package.json deleted file mode 100644 index 6f8635f0e..000000000 --- a/node_modules/object-visit/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "object-visit@1.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "object-visit@1.0.1", - "_id": "object-visit@1.0.1", - "_inBundle": false, - "_integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "_location": "/object-visit", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "object-visit@1.0.1", - "name": "object-visit", - "escapedName": "object-visit", - "rawSpec": "1.0.1", - "saveSpec": null, - "fetchSpec": "1.0.1" - }, - "_requiredBy": [ - "/collection-visit", - "/map-visit" - ], - "_resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "_spec": "1.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/object-visit/issues" - }, - "dependencies": { - "isobject": "^3.0.0" - }, - "description": "Call a specified method on each value in the given object.", - "devDependencies": { - "gulp": "^3.9.1", - "gulp-eslint": "^3.0.1", - "gulp-format-md": "^0.1.12", - "gulp-istanbul": "^1.1.1", - "gulp-mocha": "^3.0.0", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/object-visit", - "keywords": [ - "context", - "function", - "helper", - "key", - "method", - "object", - "value", - "visit", - "visitor" - ], - "license": "MIT", - "main": "index.js", - "name": "object-visit", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/object-visit.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "base-methods", - "collection-visit", - "define-property", - "map-visit" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.1" -} diff --git a/node_modules/object.pick/LICENSE b/node_modules/object.pick/LICENSE deleted file mode 100644 index 39245ac1c..000000000 --- a/node_modules/object.pick/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/object.pick/README.md b/node_modules/object.pick/README.md deleted file mode 100644 index 48f745348..000000000 --- a/node_modules/object.pick/README.md +++ /dev/null @@ -1,76 +0,0 @@ -# object.pick [![NPM version](https://img.shields.io/npm/v/object.pick.svg?style=flat)](https://www.npmjs.com/package/object.pick) [![NPM monthly downloads](https://img.shields.io/npm/dm/object.pick.svg?style=flat)](https://npmjs.org/package/object.pick) [![NPM total downloads](https://img.shields.io/npm/dt/object.pick.svg?style=flat)](https://npmjs.org/package/object.pick) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/object.pick.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/object.pick) - -> Returns a filtered copy of an object with only the specified keys, similar to `_.pick` from lodash / underscore. - -You might also be interested in [object.omit](https://github.com/jonschlinkert/object.omit). - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save object.pick -``` - -## benchmarks - -This is the [fastest implementation](http://jsperf.com/pick-props) I tested. Pull requests welcome! - -## Usage - -```js -var pick = require('object.pick'); - -pick({a: 'a', b: 'b'}, 'a') -//=> {a: 'a'} - -pick({a: 'a', b: 'b', c: 'c'}, ['a', 'b']) -//=> {a: 'a', b: 'b'} -``` - -## About - -### Related projects - -* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.") -* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value "Use property paths (`a.b.c`) to get a nested value from an object.") -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.") -* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value "Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ - -To generate the readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install -g verb verb-generate-readme && verb -``` - -### Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -### License - -Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/object.pick/blob/master/LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.2.0, on October 27, 2016._ \ No newline at end of file diff --git a/node_modules/object.pick/index.js b/node_modules/object.pick/index.js deleted file mode 100644 index 0ce01782a..000000000 --- a/node_modules/object.pick/index.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! - * object.pick - * - * Copyright (c) 2014-2015 Jon Schlinkert, contributors. - * Licensed under the MIT License - */ - -'use strict'; - -var isObject = require('isobject'); - -module.exports = function pick(obj, keys) { - if (!isObject(obj) && typeof obj !== 'function') { - return {}; - } - - var res = {}; - if (typeof keys === 'string') { - if (keys in obj) { - res[keys] = obj[keys]; - } - return res; - } - - var len = keys.length; - var idx = -1; - - while (++idx < len) { - var key = keys[idx]; - if (key in obj) { - res[key] = obj[key]; - } - } - return res; -}; diff --git a/node_modules/object.pick/package.json b/node_modules/object.pick/package.json deleted file mode 100644 index cb5b3dee0..000000000 --- a/node_modules/object.pick/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "object.pick@1.3.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "object.pick@1.3.0", - "_id": "object.pick@1.3.0", - "_inBundle": false, - "_integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "_location": "/object.pick", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "object.pick@1.3.0", - "name": "object.pick", - "escapedName": "object.pick", - "rawSpec": "1.3.0", - "saveSpec": null, - "fetchSpec": "1.3.0" - }, - "_requiredBy": [ - "/micromatch", - "/nanomatch" - ], - "_resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "_spec": "1.3.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/object.pick/issues" - }, - "dependencies": { - "isobject": "^3.0.1" - }, - "description": "Returns a filtered copy of an object with only the specified keys, similar to `_.pick` from lodash / underscore.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.1.2", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/object.pick", - "keywords": [ - "object", - "pick" - ], - "license": "MIT", - "main": "index.js", - "name": "object.pick", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/object.pick.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "extend-shallow", - "get-value", - "mixin-deep", - "set-value" - ], - "highlight": "object.omit" - }, - "reflinks": [ - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.3.0" -} diff --git a/node_modules/once/LICENSE b/node_modules/once/LICENSE deleted file mode 100644 index 19129e315..000000000 --- a/node_modules/once/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/once/README.md b/node_modules/once/README.md deleted file mode 100644 index 1f1ffca93..000000000 --- a/node_modules/once/README.md +++ /dev/null @@ -1,79 +0,0 @@ -# once - -Only call a function once. - -## usage - -```javascript -var once = require('once') - -function load (file, cb) { - cb = once(cb) - loader.load('file') - loader.once('load', cb) - loader.once('error', cb) -} -``` - -Or add to the Function.prototype in a responsible way: - -```javascript -// only has to be done once -require('once').proto() - -function load (file, cb) { - cb = cb.once() - loader.load('file') - loader.once('load', cb) - loader.once('error', cb) -} -``` - -Ironically, the prototype feature makes this module twice as -complicated as necessary. - -To check whether you function has been called, use `fn.called`. Once the -function is called for the first time the return value of the original -function is saved in `fn.value` and subsequent calls will continue to -return this value. - -```javascript -var once = require('once') - -function load (cb) { - cb = once(cb) - var stream = createStream() - stream.once('data', cb) - stream.once('end', function () { - if (!cb.called) cb(new Error('not found')) - }) -} -``` - -## `once.strict(func)` - -Throw an error if the function is called twice. - -Some functions are expected to be called only once. Using `once` for them would -potentially hide logical errors. - -In the example below, the `greet` function has to call the callback only once: - -```javascript -function greet (name, cb) { - // return is missing from the if statement - // when no name is passed, the callback is called twice - if (!name) cb('Hello anonymous') - cb('Hello ' + name) -} - -function log (msg) { - console.log(msg) -} - -// this will print 'Hello anonymous' but the logical error will be missed -greet(null, once(msg)) - -// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time -greet(null, once.strict(msg)) -``` diff --git a/node_modules/once/once.js b/node_modules/once/once.js deleted file mode 100644 index 235406736..000000000 --- a/node_modules/once/once.js +++ /dev/null @@ -1,42 +0,0 @@ -var wrappy = require('wrappy') -module.exports = wrappy(once) -module.exports.strict = wrappy(onceStrict) - -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) - - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this) - }, - configurable: true - }) -}) - -function once (fn) { - var f = function () { - if (f.called) return f.value - f.called = true - return f.value = fn.apply(this, arguments) - } - f.called = false - return f -} - -function onceStrict (fn) { - var f = function () { - if (f.called) - throw new Error(f.onceError) - f.called = true - return f.value = fn.apply(this, arguments) - } - var name = fn.name || 'Function wrapped with `once`' - f.onceError = name + " shouldn't be called more than once" - f.called = false - return f -} diff --git a/node_modules/once/package.json b/node_modules/once/package.json deleted file mode 100644 index 5dbfa9b28..000000000 --- a/node_modules/once/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "_args": [ - [ - "once@1.4.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "once@1.4.0", - "_id": "once@1.4.0", - "_inBundle": false, - "_integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "_location": "/once", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "once@1.4.0", - "name": "once", - "escapedName": "once", - "rawSpec": "1.4.0", - "saveSpec": null, - "fetchSpec": "1.4.0" - }, - "_requiredBy": [ - "/end-of-stream", - "/glob", - "/inflight", - "/pump" - ], - "_resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "_spec": "1.4.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/once/issues" - }, - "dependencies": { - "wrappy": "1" - }, - "description": "Run a function exactly one time", - "devDependencies": { - "tap": "^7.0.1" - }, - "directories": { - "test": "test" - }, - "files": [ - "once.js" - ], - "homepage": "https://github.com/isaacs/once#readme", - "keywords": [ - "once", - "function", - "one", - "single" - ], - "license": "ISC", - "main": "once.js", - "name": "once", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/once.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "1.4.0" -} diff --git a/node_modules/pascalcase/LICENSE b/node_modules/pascalcase/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/pascalcase/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/pascalcase/README.md b/node_modules/pascalcase/README.md deleted file mode 100644 index fa3fd00fe..000000000 --- a/node_modules/pascalcase/README.md +++ /dev/null @@ -1,80 +0,0 @@ -# pascalcase [![NPM version](https://badge.fury.io/js/pascalcase.svg)](http://badge.fury.io/js/pascalcase) - -> Convert a string to pascal-case. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i pascalcase --save -``` - -## Usage - -```js -var pascalcase = require('pascalcase'); - -pascalcase('a'); -//=> 'A' - -pascalcase('foo bar baz'); -//=> 'FooBarBaz' - -pascalcase('foo_bar-baz'); -//=> 'FooBarBaz' - -pascalcase('foo.bar.baz'); -//=> 'FooBarBaz' - -pascalcase('foo/bar/baz'); -//=> 'FooBarBaz' - -pascalcase('foo[bar)baz'); -//=> 'FooBarBaz' - -pascalcase('#foo+bar*baz'); -//=> 'FooBarBaz' - -pascalcase('$foo~bar`baz'); -//=> 'FooBarBaz' - -pascalcase('_foo_bar-baz-'); -//=> 'FooBarBaz' -``` - -## Related projects - -* [justified](https://github.com/jonschlinkert/justified): Wrap words to a specified length and justified the text. -* [pad-left](https://github.com/jonschlinkert/pad-left): Left pad a string with zeros or a specified string. Fastest implementation. -* [pad-right](https://github.com/jonschlinkert/pad-right): Right pad a string with zeros or a specified string. Fastest implementation. -* [repeat-string](https://github.com/jonschlinkert/repeat-string): Repeat the given string n times. Fastest implementation for repeating a string. -* [word-wrap](https://github.com/jonschlinkert/word-wrap): Wrap words to a specified length. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/pascalcase/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 19, 2015._ \ No newline at end of file diff --git a/node_modules/pascalcase/index.js b/node_modules/pascalcase/index.js deleted file mode 100644 index 7e8159ce4..000000000 --- a/node_modules/pascalcase/index.js +++ /dev/null @@ -1,21 +0,0 @@ -/*! - * pascalcase - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -function pascalcase(str) { - if (typeof str !== 'string') { - throw new TypeError('expected a string.'); - } - str = str.replace(/([A-Z])/g, ' $1'); - if (str.length === 1) { return str.toUpperCase(); } - str = str.replace(/^[\W_]+|[\W_]+$/g, '').toLowerCase(); - str = str.charAt(0).toUpperCase() + str.slice(1); - return str.replace(/[\W_]+(\w|$)/g, function (_, ch) { - return ch.toUpperCase(); - }); -} - -module.exports = pascalcase; diff --git a/node_modules/pascalcase/package.json b/node_modules/pascalcase/package.json deleted file mode 100644 index af58efac2..000000000 --- a/node_modules/pascalcase/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "_args": [ - [ - "pascalcase@0.1.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "pascalcase@0.1.1", - "_id": "pascalcase@0.1.1", - "_inBundle": false, - "_integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "_location": "/pascalcase", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "pascalcase@0.1.1", - "name": "pascalcase", - "escapedName": "pascalcase", - "rawSpec": "0.1.1", - "saveSpec": null, - "fetchSpec": "0.1.1" - }, - "_requiredBy": [ - "/base" - ], - "_resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "_spec": "0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/pascalcase/issues" - }, - "description": "Convert a string to pascal-case.", - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/pascalcase", - "keywords": [ - "camelcase", - "case", - "casing", - "pascal", - "pascal-case", - "pascalcase", - "string" - ], - "license": "MIT", - "main": "index.js", - "name": "pascalcase", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/pascalcase.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "pad-left", - "pad-right", - "word-wrap", - "repeat-string", - "justified" - ] - } - }, - "version": "0.1.1" -} diff --git a/node_modules/posix-character-classes/LICENSE b/node_modules/posix-character-classes/LICENSE deleted file mode 100644 index b11cb7968..000000000 --- a/node_modules/posix-character-classes/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/posix-character-classes/README.md b/node_modules/posix-character-classes/README.md deleted file mode 100644 index 894ae237a..000000000 --- a/node_modules/posix-character-classes/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# posix-character-classes [![NPM version](https://img.shields.io/npm/v/posix-character-classes.svg?style=flat)](https://www.npmjs.com/package/posix-character-classes) [![NPM monthly downloads](https://img.shields.io/npm/dm/posix-character-classes.svg?style=flat)](https://npmjs.org/package/posix-character-classes) [![NPM total downloads](https://img.shields.io/npm/dt/posix-character-classes.svg?style=flat)](https://npmjs.org/package/posix-character-classes) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/posix-character-classes.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/posix-character-classes) - -> POSIX character classes for creating regular expressions. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save posix-character-classes -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add posix-character-classes -``` - -## Usage - -```js -var posix = require('posix-character-classes'); -console.log(posix.alpha); -//=> 'A-Za-z' -``` - -## POSIX Character classes - -The POSIX standard supports the following classes or categories of charactersh (note that classes must be defined within brackets)[1]: - -| **POSIX class** | **Equivalent to** | **Matches** | -| --- | --- | --- | -| `[:alnum:]` | `[A-Za-z0-9]` | digits, uppercase and lowercase letters | -| `[:alpha:]` | `[A-Za-z]` | upper- and lowercase letters | -| `[:ascii:]` | `[\x00-\x7F]` | ASCII characters | -| `[:blank:]` | `[ \t]` | space and TAB characters only | -| `[:cntrl:]` | `[\x00-\x1F\x7F]` | Control characters | -| `[:digit:]` | `[0-9]` | digits | -| `[:graph:]` | `[^[:cntrl:]]` | graphic characters (all characters which have graphic representation) | -| `[:lower:]` | `[a-z]` | lowercase letters | -| `[:print:]` | `[[:graph] ]` | graphic characters and space | -| `[:punct:]` | ``[-!"#$%&'()*+,./:;<=>?@[]^_`{ | }~]`` | all punctuation characters (all graphic characters except letters and digits) | -| `[:space:]` | `[ \t\n\r\f\v]` | all blank (whitespace) characters, including spaces, tabs, new lines, carriage returns, form feeds, and vertical tabs | -| `[:upper:]` | `[A-Z]` | uppercase letters | -| `[:word:]` | `[A-Za-z0-9_]` | word characters | -| `[:xdigit:]` | `[0-9A-Fa-f]` | hexadecimal digits | - -## Examples - -* `a[[:digit:]]b` matches `a0b`, `a1b`, ..., `a9b`. -* `a[:digit:]b` is invalid, character classes must be enclosed in brackets -* `[[:digit:]abc]` matches any digit, as well as `a`, `b`, and `c`. -* `[abc[:digit:]]` is the same as the previous, matching any digit, as well as `a`, `b`, and `c` -* `[^ABZ[:lower:]]` matches any character except lowercase letters, `A`, `B`, and `Z`. - -## About - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 20, 2017._ - -
          -
          -
            -
          1. table and examples are based on the WikiBooks page for [Regular Expressions/POSIX Basic Regular Expressions](https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions), which is available under the [Creative Commons Attribution-ShareAlike License](https://creativecommons.org/licenses/by-sa/3.0/). - -
          2. -
          -
          \ No newline at end of file diff --git a/node_modules/posix-character-classes/index.js b/node_modules/posix-character-classes/index.js deleted file mode 100644 index 19f1c9866..000000000 --- a/node_modules/posix-character-classes/index.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -/** - * POSIX character classes - */ - -module.exports = { - alnum: 'a-zA-Z0-9', - alpha: 'a-zA-Z', - ascii: '\\x00-\\x7F', - blank: ' \\t', - cntrl: '\\x00-\\x1F\\x7F', - digit: '0-9', - graph: '\\x21-\\x7E', - lower: 'a-z', - print: '\\x20-\\x7E ', - punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', - space: ' \\t\\r\\n\\v\\f', - upper: 'A-Z', - word: 'A-Za-z0-9_', - xdigit: 'A-Fa-f0-9' -}; diff --git a/node_modules/posix-character-classes/package.json b/node_modules/posix-character-classes/package.json deleted file mode 100644 index 6137ef2e5..000000000 --- a/node_modules/posix-character-classes/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_args": [ - [ - "posix-character-classes@0.1.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "posix-character-classes@0.1.1", - "_id": "posix-character-classes@0.1.1", - "_inBundle": false, - "_integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "_location": "/posix-character-classes", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "posix-character-classes@0.1.1", - "name": "posix-character-classes", - "escapedName": "posix-character-classes", - "rawSpec": "0.1.1", - "saveSpec": null, - "fetchSpec": "0.1.1" - }, - "_requiredBy": [ - "/expand-brackets" - ], - "_resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "_spec": "0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/posix-character-classes/issues" - }, - "description": "POSIX character classes for creating regular expressions.", - "devDependencies": { - "gulp-format-md": "^0.1.12", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/posix-character-classes", - "keywords": [ - "character", - "classes", - "posix" - ], - "license": "MIT", - "main": "index.js", - "name": "posix-character-classes", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/posix-character-classes.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "reflinks": [ - "verb", - "verb-generate-readme" - ], - "lint": { - "reflinks": true - }, - "related-list": [ - "micromatch", - "nanomatch", - "extglob", - "expand-brackets" - ] - }, - "version": "0.1.1" -} diff --git a/node_modules/process-nextick-args/index.js b/node_modules/process-nextick-args/index.js deleted file mode 100644 index 3eecf1148..000000000 --- a/node_modules/process-nextick-args/index.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -if (typeof process === 'undefined' || - !process.version || - process.version.indexOf('v0.') === 0 || - process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = { nextTick: nextTick }; -} else { - module.exports = process -} - -function nextTick(fn, arg1, arg2, arg3) { - if (typeof fn !== 'function') { - throw new TypeError('"callback" argument must be a function'); - } - var len = arguments.length; - var args, i; - switch (len) { - case 0: - case 1: - return process.nextTick(fn); - case 2: - return process.nextTick(function afterTickOne() { - fn.call(null, arg1); - }); - case 3: - return process.nextTick(function afterTickTwo() { - fn.call(null, arg1, arg2); - }); - case 4: - return process.nextTick(function afterTickThree() { - fn.call(null, arg1, arg2, arg3); - }); - default: - args = new Array(len - 1); - i = 0; - while (i < args.length) { - args[i++] = arguments[i]; - } - return process.nextTick(function afterTick() { - fn.apply(null, args); - }); - } -} - diff --git a/node_modules/process-nextick-args/license.md b/node_modules/process-nextick-args/license.md deleted file mode 100644 index c67e3532b..000000000 --- a/node_modules/process-nextick-args/license.md +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2015 Calvin Metcalf - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE.** diff --git a/node_modules/process-nextick-args/package.json b/node_modules/process-nextick-args/package.json deleted file mode 100644 index 8d056a19e..000000000 --- a/node_modules/process-nextick-args/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "_from": "process-nextick-args@~2.0.0", - "_id": "process-nextick-args@2.0.1", - "_inBundle": false, - "_integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "_location": "/process-nextick-args", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "process-nextick-args@~2.0.0", - "name": "process-nextick-args", - "escapedName": "process-nextick-args", - "rawSpec": "~2.0.0", - "saveSpec": null, - "fetchSpec": "~2.0.0" - }, - "_requiredBy": [ - "/readable-stream" - ], - "_resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "_shasum": "7820d9b16120cc55ca9ae7792680ae7dba6d7fe2", - "_spec": "process-nextick-args@~2.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\readable-stream", - "author": "", - "bugs": { - "url": "https://github.com/calvinmetcalf/process-nextick-args/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "process.nextTick but always with args", - "devDependencies": { - "tap": "~0.2.6" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/calvinmetcalf/process-nextick-args", - "license": "MIT", - "main": "index.js", - "name": "process-nextick-args", - "repository": { - "type": "git", - "url": "git+https://github.com/calvinmetcalf/process-nextick-args.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "2.0.1" -} diff --git a/node_modules/process-nextick-args/readme.md b/node_modules/process-nextick-args/readme.md deleted file mode 100644 index ecb432c9b..000000000 --- a/node_modules/process-nextick-args/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -process-nextick-args -===== - -[![Build Status](https://travis-ci.org/calvinmetcalf/process-nextick-args.svg?branch=master)](https://travis-ci.org/calvinmetcalf/process-nextick-args) - -```bash -npm install --save process-nextick-args -``` - -Always be able to pass arguments to process.nextTick, no matter the platform - -```js -var pna = require('process-nextick-args'); - -pna.nextTick(function (a, b, c) { - console.log(a, b, c); -}, 'step', 3, 'profit'); -``` diff --git a/node_modules/readable-stream/.travis.yml b/node_modules/readable-stream/.travis.yml deleted file mode 100644 index f62cdac06..000000000 --- a/node_modules/readable-stream/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -sudo: false -language: node_js -before_install: - - (test $NPM_LEGACY && npm install -g npm@2 && npm install -g npm@3) || true -notifications: - email: false -matrix: - fast_finish: true - include: - - node_js: '0.8' - env: NPM_LEGACY=true - - node_js: '0.10' - env: NPM_LEGACY=true - - node_js: '0.11' - env: NPM_LEGACY=true - - node_js: '0.12' - env: NPM_LEGACY=true - - node_js: 1 - env: NPM_LEGACY=true - - node_js: 2 - env: NPM_LEGACY=true - - node_js: 3 - env: NPM_LEGACY=true - - node_js: 4 - - node_js: 5 - - node_js: 6 - - node_js: 7 - - node_js: 8 - - node_js: 9 -script: "npm run test" -env: - global: - - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc= - - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI= diff --git a/node_modules/readable-stream/CONTRIBUTING.md b/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dc..000000000 --- a/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/node_modules/readable-stream/GOVERNANCE.md b/node_modules/readable-stream/GOVERNANCE.md deleted file mode 100644 index 16ffb93f2..000000000 --- a/node_modules/readable-stream/GOVERNANCE.md +++ /dev/null @@ -1,136 +0,0 @@ -### Streams Working Group - -The Node.js Streams is jointly governed by a Working Group -(WG) -that is responsible for high-level guidance of the project. - -The WG has final authority over this project including: - -* Technical direction -* Project governance and process (including this policy) -* Contribution policy -* GitHub repository hosting -* Conduct guidelines -* Maintaining the list of additional Collaborators - -For the current list of WG members, see the project -[README.md](./README.md#current-project-team-members). - -### Collaborators - -The readable-stream GitHub repository is -maintained by the WG and additional Collaborators who are added by the -WG on an ongoing basis. - -Individuals making significant and valuable contributions are made -Collaborators and given commit-access to the project. These -individuals are identified by the WG and their addition as -Collaborators is discussed during the WG meeting. - -_Note:_ If you make a significant contribution and are not considered -for commit-access log an issue or contact a WG member directly and it -will be brought up in the next WG meeting. - -Modifications of the contents of the readable-stream repository are -made on -a collaborative basis. Anybody with a GitHub account may propose a -modification via pull request and it will be considered by the project -Collaborators. All pull requests must be reviewed and accepted by a -Collaborator with sufficient expertise who is able to take full -responsibility for the change. In the case of pull requests proposed -by an existing Collaborator, an additional Collaborator is required -for sign-off. Consensus should be sought if additional Collaborators -participate and there is disagreement around a particular -modification. See _Consensus Seeking Process_ below for further detail -on the consensus model used for governance. - -Collaborators may opt to elevate significant or controversial -modifications, or modifications that have not found consensus to the -WG for discussion by assigning the ***WG-agenda*** tag to a pull -request or issue. The WG should serve as the final arbiter where -required. - -For the current list of Collaborators, see the project -[README.md](./README.md#members). - -### WG Membership - -WG seats are not time-limited. There is no fixed size of the WG. -However, the expected target is between 6 and 12, to ensure adequate -coverage of important areas of expertise, balanced with the ability to -make decisions efficiently. - -There is no specific set of requirements or qualifications for WG -membership beyond these rules. - -The WG may add additional members to the WG by unanimous consensus. - -A WG member may be removed from the WG by voluntary resignation, or by -unanimous consensus of all other WG members. - -Changes to WG membership should be posted in the agenda, and may be -suggested as any other agenda item (see "WG Meetings" below). - -If an addition or removal is proposed during a meeting, and the full -WG is not in attendance to participate, then the addition or removal -is added to the agenda for the subsequent meeting. This is to ensure -that all members are given the opportunity to participate in all -membership decisions. If a WG member is unable to attend a meeting -where a planned membership decision is being made, then their consent -is assumed. - -No more than 1/3 of the WG members may be affiliated with the same -employer. If removal or resignation of a WG member, or a change of -employment by a WG member, creates a situation where more than 1/3 of -the WG membership shares an employer, then the situation must be -immediately remedied by the resignation or removal of one or more WG -members affiliated with the over-represented employer(s). - -### WG Meetings - -The WG meets occasionally on a Google Hangout On Air. A designated moderator -approved by the WG runs the meeting. Each meeting should be -published to YouTube. - -Items are added to the WG agenda that are considered contentious or -are modifications of governance, contribution policy, WG membership, -or release process. - -The intention of the agenda is not to approve or review all patches; -that should happen continuously on GitHub and be handled by the larger -group of Collaborators. - -Any community member or contributor can ask that something be added to -the next meeting's agenda by logging a GitHub Issue. Any Collaborator, -WG member or the moderator can add the item to the agenda by adding -the ***WG-agenda*** tag to the issue. - -Prior to each WG meeting the moderator will share the Agenda with -members of the WG. WG members can add any items they like to the -agenda at the beginning of each meeting. The moderator and the WG -cannot veto or remove items. - -The WG may invite persons or representatives from certain projects to -participate in a non-voting capacity. - -The moderator is responsible for summarizing the discussion of each -agenda item and sends it as a pull request after the meeting. - -### Consensus Seeking Process - -The WG follows a -[Consensus -Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making) -decision-making model. - -When an agenda item has appeared to reach a consensus the moderator -will ask "Does anyone object?" as a final call for dissent from the -consensus. - -If an agenda item cannot reach a consensus a WG member can call for -either a closing vote or a vote to table the issue to the next -meeting. The call for a vote must be seconded by a majority of the WG -or else the discussion will continue. Simple majority wins. - -Note that changes to WG membership require a majority consensus. See -"WG Membership" above. diff --git a/node_modules/readable-stream/LICENSE b/node_modules/readable-stream/LICENSE deleted file mode 100644 index 2873b3b2e..000000000 --- a/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,47 +0,0 @@ -Node.js is licensed for use as follows: - -""" -Copyright Node.js contributors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - -This license applies to parts of Node.js originating from the -https://github.com/joyent/node repository: - -""" -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" diff --git a/node_modules/readable-stream/README.md b/node_modules/readable-stream/README.md deleted file mode 100644 index 23fe3f3e3..000000000 --- a/node_modules/readable-stream/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# readable-stream - -***Node-core v8.11.1 streams for userland*** [![Build Status](https://travis-ci.org/nodejs/readable-stream.svg?branch=master)](https://travis-ci.org/nodejs/readable-stream) - - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - - -[![Sauce Test Status](https://saucelabs.com/browser-matrix/readable-stream.svg)](https://saucelabs.com/u/readable-stream) - -```bash -npm install --save readable-stream -``` - -***Node-core streams for userland*** - -This package is a mirror of the Streams2 and Streams3 implementations in -Node-core. - -Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.11.1/docs/api/stream.html). - -If you want to guarantee a stable streams base, regardless of what version of -Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). - -As of version 2.0.0 **readable-stream** uses semantic versioning. - -# Streams Working Group - -`readable-stream` is maintained by the Streams Working Group, which -oversees the development and maintenance of the Streams API within -Node.js. The responsibilities of the Streams Working Group include: - -* Addressing stream issues on the Node.js issue tracker. -* Authoring and editing stream documentation within the Node.js project. -* Reviewing changes to stream subclasses within the Node.js project. -* Redirecting changes to streams from the Node.js project to this - project. -* Assisting in the implementation of stream providers within Node.js. -* Recommending versions of `readable-stream` to be included in Node.js. -* Messaging about the future of streams to give the community advance - notice of changes. - - -## Team Members - -* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com> - - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B -* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com> - - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242 -* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org> - - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D -* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com> -* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com> -* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me> -* **Matteo Collina** ([@mcollina](https://github.com/mcollina)) <matteo.collina@gmail.com> - - Release GPG key: 3ABC01543F22DD2239285CDD818674489FBC127E -* **Irina Shestak** ([@lrlna](https://github.com/lrlna)) <shestak.irina@gmail.com> diff --git a/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md deleted file mode 100644 index 83275f192..000000000 --- a/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +++ /dev/null @@ -1,60 +0,0 @@ -# streams WG Meeting 2015-01-30 - -## Links - -* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg -* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106 -* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/ - -## Agenda - -Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting. - -* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105) -* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101) -* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102) -* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99) - -## Minutes - -### adopt a charter - -* group: +1's all around - -### What versioning scheme should be adopted? -* group: +1’s 3.0.0 -* domenic+group: pulling in patches from other sources where appropriate -* mikeal: version independently, suggesting versions for io.js -* mikeal+domenic: work with TC to notify in advance of changes -simpler stream creation - -### streamline creation of streams -* sam: streamline creation of streams -* domenic: nice simple solution posted - but, we lose the opportunity to change the model - may not be backwards incompatible (double check keys) - - **action item:** domenic will check - -### remove implicit flowing of streams on(‘data’) -* add isFlowing / isPaused -* mikeal: worrying that we’re documenting polyfill methods – confuses users -* domenic: more reflective API is probably good, with warning labels for users -* new section for mad scientists (reflective stream access) -* calvin: name the “third state” -* mikeal: maybe borrow the name from whatwg? -* domenic: we’re missing the “third state” -* consensus: kind of difficult to name the third state -* mikeal: figure out differences in states / compat -* mathias: always flow on data – eliminates third state - * explore what it breaks - -**action items:** -* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream) -* ask rod/build for infrastructure -* **chris**: explore the “flow on data” approach -* add isPaused/isFlowing -* add new docs section -* move isPaused to that section - - diff --git a/node_modules/readable-stream/duplex-browser.js b/node_modules/readable-stream/duplex-browser.js deleted file mode 100644 index f8b2db83d..000000000 --- a/node_modules/readable-stream/duplex-browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/_stream_duplex.js'); diff --git a/node_modules/readable-stream/duplex.js b/node_modules/readable-stream/duplex.js deleted file mode 100644 index 46924cbfd..000000000 --- a/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./readable').Duplex diff --git a/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index 57003c32d..000000000 --- a/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ - -module.exports = Duplex; - -/**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -{ - // avoid scope creep, the keys array can then be collected - var keys = objectKeys(Writable.prototype); - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); -} - -Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - pna.nextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -Object.defineProperty(Duplex.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined || this._writableState === undefined) { - return false; - } - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } -}); - -Duplex.prototype._destroy = function (err, cb) { - this.push(null); - this.end(); - - pna.nextTick(cb, err); -}; \ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 612edb4d8..000000000 --- a/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict'; - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; \ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 0f807646b..000000000 --- a/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,1019 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - -/**/ -var Duplex; -/**/ - -Readable.ReadableState = ReadableState; - -/**/ -var EE = require('events').EventEmitter; - -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ -var Stream = require('./internal/streams/stream'); -/**/ - -/**/ - -var Buffer = require('safe-buffer').Buffer; -var OurUint8Array = global.Uint8Array || function () {}; -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} - -/**/ - -/**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ - -/**/ -var debugUtil = require('util'); -var debug = void 0; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - -var BufferList = require('./internal/streams/BufferList'); -var destroyImpl = require('./internal/streams/destroy'); -var StringDecoder; - -util.inherits(Readable, Stream); - -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); - - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; -} - -function ReadableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var readableHwm = options.readableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; - - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); - - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - - // has it been destroyed - this.destroyed = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - if (!(this instanceof Readable)) return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - if (options) { - if (typeof options.read === 'function') this._read = options.read; - - if (typeof options.destroy === 'function') this._destroy = options.destroy; - } - - Stream.call(this); -} - -Object.defineProperty(Readable.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined) { - return false; - } - return this._readableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._readableState) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._readableState.destroyed = value; - } -}); - -Readable.prototype.destroy = destroyImpl.destroy; -Readable.prototype._undestroy = destroyImpl.undestroy; -Readable.prototype._destroy = function (err, cb) { - this.push(null); - cb(err); -}; - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - var skipChunkCheck; - - if (!state.objectMode) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = Buffer.from(chunk, encoding); - encoding = ''; - } - skipChunkCheck = true; - } - } else { - skipChunkCheck = true; - } - - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - return readableAddChunk(this, chunk, null, true, false); -}; - -function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { - var state = stream._readableState; - if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else { - var er; - if (!skipChunkCheck) er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (addToFront) { - if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); - } else if (state.ended) { - stream.emit('error', new Error('stream.push() after EOF')); - } else { - state.reading = false; - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); - } - } - } else if (!addToFront) { - state.reading = false; - } - } - - return needMoreData(state); -} - -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - - if (state.needReadable) emitReadable(stream); - } - maybeReadMore(stream, state); -} - -function chunkInvalid(state, chunk) { - var er; - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); -} - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; - -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; -} - -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; - // Don't have enough - if (!state.ended) { - state.needReadable = true; - return 0; - } - return state.length; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - - if (n !== 0) state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null) this.emit('data', ret); - - return ret; -}; - -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - pna.nextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('_read() is not implemented')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } - - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - var unpipeInfo = { hasUnpiped: false }; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this, unpipeInfo); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, unpipeInfo); - }return this; - } - - // try to find the right one. - var index = indexOf(state.pipes, dest); - if (index === -1) return this; - - state.pipes.splice(index, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - dest.emit('unpipe', this, unpipeInfo); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - if (!state.reading) { - pna.nextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - pna.nextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var _this = this; - - var state = this._readableState; - var paused = false; - - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); - } - - _this.push(null); - }); - - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = _this.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } - - // proxy certain important events. - for (var n = 0; n < kProxyEvents.length; n++) { - stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - this._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return this; -}; - -Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._readableState.highWaterMark; - } -}); - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); - } - - return ret; -} - -// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromListPartial(n, list, hasStrings) { - var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - return ret; -} - -// Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBuffer(n, list) { - var ret = Buffer.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - pna.nextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} \ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index fcfc105af..000000000 --- a/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict'; - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - -function afterTransform(er, data) { - var ts = this._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) { - return this.emit('error', new Error('write callback called multiple times')); - } - - ts.writechunk = null; - ts.writecb = null; - - if (data != null) // single equals check for both `null` and `undefined` - this.push(data); - - cb(er); - - var rs = this._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - this._read(rs.highWaterMark); - } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - - Duplex.call(this, options); - - this._transformState = { - afterTransform: afterTransform.bind(this), - needTransform: false, - transforming: false, - writecb: null, - writechunk: null, - writeencoding: null - }; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - - if (typeof options.flush === 'function') this._flush = options.flush; - } - - // When the writable side finishes, then flush out anything remaining. - this.on('prefinish', prefinish); -} - -function prefinish() { - var _this = this; - - if (typeof this._flush === 'function') { - this._flush(function (er, data) { - done(_this, er, data); - }); - } else { - done(this, null, null); - } -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('_transform() is not implemented'); -}; - -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -Transform.prototype._destroy = function (err, cb) { - var _this2 = this; - - Duplex.prototype._destroy.call(this, err, function (err2) { - cb(err2); - _this2.emit('close'); - }); -}; - -function done(stream, er, data) { - if (er) return stream.emit('error', er); - - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); - - if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); - - return stream.push(null); -} \ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index b0b02200c..000000000 --- a/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,687 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -module.exports = Writable; - -/* */ -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} - -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - this.finish = function () { - onCorkedFinish(_this, state); - }; -} -/* */ - -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; -/**/ - -/**/ -var Duplex; -/**/ - -Writable.WritableState = WritableState; - -/**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ - -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ - -/**/ -var Stream = require('./internal/streams/stream'); -/**/ - -/**/ - -var Buffer = require('safe-buffer').Buffer; -var OurUint8Array = global.Uint8Array || function () {}; -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} - -/**/ - -var destroyImpl = require('./internal/streams/destroy'); - -util.inherits(Writable, Stream); - -function nop() {} - -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var writableHwm = options.writableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; - - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); - - // if _final has been called - this.finalCalled = false; - - // drain event flag. - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // has it been destroyed - this.destroyed = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; - - // count buffered requests - this.bufferedRequestCount = 0; - - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function getBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') - }); - } catch (_) {} -})(); - -// Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. -var realHasInstance; -if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { - realHasInstance = Function.prototype[Symbol.hasInstance]; - Object.defineProperty(Writable, Symbol.hasInstance, { - value: function (object) { - if (realHasInstance.call(this, object)) return true; - if (this !== Writable) return false; - - return object && object._writableState instanceof WritableState; - } - }); -} else { - realHasInstance = function (object) { - return object instanceof this; - }; -} - -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { - return new Writable(options); - } - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - - if (typeof options.writev === 'function') this._writev = options.writev; - - if (typeof options.destroy === 'function') this._destroy = options.destroy; - - if (typeof options.final === 'function') this._final = options.final; - } - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; - -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - pna.nextTick(cb, er); -} - -// Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - if (er) { - stream.emit('error', er); - pna.nextTick(cb, er); - valid = false; - } - return valid; -} - -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - var isBuf = !state.objectMode && _isUint8Array(chunk); - - if (isBuf && !Buffer.isBuffer(chunk)) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - - if (typeof cb !== 'function') cb = nop; - - if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); - } - - return ret; -}; - -Writable.prototype.cork = function () { - var state = this._writableState; - - state.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer.from(chunk, encoding); - } - return chunk; -} - -Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { - if (!isBuf) { - var newChunk = decodeChunk(state, chunk, encoding); - if (chunk !== newChunk) { - isBuf = true; - encoding = 'buffer'; - chunk = newChunk; - } - } - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, - callback: cb, - next: null - }; - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - - if (sync) { - // defer the callback if we are being called synchronously - // to avoid piling up things on the stack - pna.nextTick(cb, er); - // this can emit finish, and it will always happen - // after error - pna.nextTick(finishMaybe, stream, state); - stream._writableState.errorEmitted = true; - stream.emit('error', er); - } else { - // the caller expect this to happen before if - // it is async - cb(er); - stream._writableState.errorEmitted = true; - stream.emit('error', er); - // this can emit finish, but finish must - // always follow error - finishMaybe(stream, state); - } -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - - var count = 0; - var allBuffers = true; - while (entry) { - buffer[count] = entry; - if (!entry.isBuf) allBuffers = false; - entry = entry.next; - count += 1; - } - buffer.allBuffers = allBuffers; - - doWrite(stream, state, true, state.length, buffer, '', holder.finish); - - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - state.bufferedRequestCount = 0; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - state.bufferedRequestCount--; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('_write() is not implemented')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} -function callFinal(stream, state) { - stream._final(function (err) { - state.pendingcb--; - if (err) { - stream.emit('error', err); - } - state.prefinished = true; - stream.emit('prefinish'); - finishMaybe(stream, state); - }); -} -function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function') { - state.pendingcb++; - state.finalCalled = true; - pna.nextTick(callFinal, stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); - } - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - prefinish(stream, state); - if (state.pendingcb === 0) { - state.finished = true; - stream.emit('finish'); - } - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; -} - -function onCorkedFinish(corkReq, state, err) { - var entry = corkReq.entry; - corkReq.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = corkReq; - } else { - state.corkedRequestsFree = corkReq; - } -} - -Object.defineProperty(Writable.prototype, 'destroyed', { - get: function () { - if (this._writableState === undefined) { - return false; - } - return this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._writableState) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._writableState.destroyed = value; - } -}); - -Writable.prototype.destroy = destroyImpl.destroy; -Writable.prototype._undestroy = destroyImpl.undestroy; -Writable.prototype._destroy = function (err, cb) { - this.end(); - cb(err); -}; \ No newline at end of file diff --git a/node_modules/readable-stream/lib/internal/streams/BufferList.js b/node_modules/readable-stream/lib/internal/streams/BufferList.js deleted file mode 100644 index aefc68bd9..000000000 --- a/node_modules/readable-stream/lib/internal/streams/BufferList.js +++ /dev/null @@ -1,79 +0,0 @@ -'use strict'; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Buffer = require('safe-buffer').Buffer; -var util = require('util'); - -function copyBuffer(src, target, offset) { - src.copy(target, offset); -} - -module.exports = function () { - function BufferList() { - _classCallCheck(this, BufferList); - - this.head = null; - this.tail = null; - this.length = 0; - } - - BufferList.prototype.push = function push(v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - }; - - BufferList.prototype.unshift = function unshift(v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - }; - - BufferList.prototype.shift = function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - }; - - BufferList.prototype.clear = function clear() { - this.head = this.tail = null; - this.length = 0; - }; - - BufferList.prototype.join = function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; - }; - - BufferList.prototype.concat = function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - if (this.length === 1) return this.head.data; - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - return ret; - }; - - return BufferList; -}(); - -if (util && util.inspect && util.inspect.custom) { - module.exports.prototype[util.inspect.custom] = function () { - var obj = util.inspect({ length: this.length }); - return this.constructor.name + ' ' + obj; - }; -} \ No newline at end of file diff --git a/node_modules/readable-stream/lib/internal/streams/destroy.js b/node_modules/readable-stream/lib/internal/streams/destroy.js deleted file mode 100644 index 5a0a0d88c..000000000 --- a/node_modules/readable-stream/lib/internal/streams/destroy.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -// undocumented cb() API, needed for core, not for public API -function destroy(err, cb) { - var _this = this; - - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; - - if (readableDestroyed || writableDestroyed) { - if (cb) { - cb(err); - } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { - pna.nextTick(emitErrorNT, this, err); - } - return this; - } - - // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks - - if (this._readableState) { - this._readableState.destroyed = true; - } - - // if this is a duplex stream mark the writable part as destroyed as well - if (this._writableState) { - this._writableState.destroyed = true; - } - - this._destroy(err || null, function (err) { - if (!cb && err) { - pna.nextTick(emitErrorNT, _this, err); - if (_this._writableState) { - _this._writableState.errorEmitted = true; - } - } else if (cb) { - cb(err); - } - }); - - return this; -} - -function undestroy() { - if (this._readableState) { - this._readableState.destroyed = false; - this._readableState.reading = false; - this._readableState.ended = false; - this._readableState.endEmitted = false; - } - - if (this._writableState) { - this._writableState.destroyed = false; - this._writableState.ended = false; - this._writableState.ending = false; - this._writableState.finished = false; - this._writableState.errorEmitted = false; - } -} - -function emitErrorNT(self, err) { - self.emit('error', err); -} - -module.exports = { - destroy: destroy, - undestroy: undestroy -}; \ No newline at end of file diff --git a/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/node_modules/readable-stream/lib/internal/streams/stream-browser.js deleted file mode 100644 index 9332a3fda..000000000 --- a/node_modules/readable-stream/lib/internal/streams/stream-browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('events').EventEmitter; diff --git a/node_modules/readable-stream/lib/internal/streams/stream.js b/node_modules/readable-stream/lib/internal/streams/stream.js deleted file mode 100644 index ce2ad5b6e..000000000 --- a/node_modules/readable-stream/lib/internal/streams/stream.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('stream'); diff --git a/node_modules/readable-stream/package.json b/node_modules/readable-stream/package.json deleted file mode 100644 index 8c73e7a74..000000000 --- a/node_modules/readable-stream/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "_from": "readable-stream@~2.3.6", - "_id": "readable-stream@2.3.7", - "_inBundle": false, - "_integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "_location": "/readable-stream", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "readable-stream@~2.3.6", - "name": "readable-stream", - "escapedName": "readable-stream", - "rawSpec": "~2.3.6", - "saveSpec": null, - "fetchSpec": "~2.3.6" - }, - "_requiredBy": [ - "/through2" - ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "_shasum": "1eca1cf711aef814c04f62252a36a62f6cb23b57", - "_spec": "readable-stream@~2.3.6", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\through2", - "browser": { - "util": false, - "./readable.js": "./readable-browser.js", - "./writable.js": "./writable-browser.js", - "./duplex.js": "./duplex-browser.js", - "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js" - }, - "bugs": { - "url": "https://github.com/nodejs/readable-stream/issues" - }, - "bundleDependencies": false, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "deprecated": false, - "description": "Streams3, a user-land copy of the stream library from Node.js", - "devDependencies": { - "assert": "^1.4.0", - "babel-polyfill": "^6.9.1", - "buffer": "^4.9.0", - "lolex": "^2.3.2", - "nyc": "^6.4.0", - "tap": "^0.7.0", - "tape": "^4.8.0" - }, - "homepage": "https://github.com/nodejs/readable-stream#readme", - "keywords": [ - "readable", - "stream", - "pipe" - ], - "license": "MIT", - "main": "readable.js", - "name": "readable-stream", - "nyc": { - "include": [ - "lib/**.js" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/nodejs/readable-stream.git" - }, - "scripts": { - "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js", - "cover": "nyc npm test", - "report": "nyc report --reporter=lcov", - "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js" - }, - "version": "2.3.7" -} diff --git a/node_modules/readable-stream/passthrough.js b/node_modules/readable-stream/passthrough.js deleted file mode 100644 index ffd791d7f..000000000 --- a/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./readable').PassThrough diff --git a/node_modules/readable-stream/readable-browser.js b/node_modules/readable-stream/readable-browser.js deleted file mode 100644 index e50372592..000000000 --- a/node_modules/readable-stream/readable-browser.js +++ /dev/null @@ -1,7 +0,0 @@ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/node_modules/readable-stream/readable.js b/node_modules/readable-stream/readable.js deleted file mode 100644 index ec89ec533..000000000 --- a/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,19 +0,0 @@ -var Stream = require('stream'); -if (process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; - exports = module.exports = Stream.Readable; - exports.Readable = Stream.Readable; - exports.Writable = Stream.Writable; - exports.Duplex = Stream.Duplex; - exports.Transform = Stream.Transform; - exports.PassThrough = Stream.PassThrough; - exports.Stream = Stream; -} else { - exports = module.exports = require('./lib/_stream_readable.js'); - exports.Stream = Stream || exports; - exports.Readable = exports; - exports.Writable = require('./lib/_stream_writable.js'); - exports.Duplex = require('./lib/_stream_duplex.js'); - exports.Transform = require('./lib/_stream_transform.js'); - exports.PassThrough = require('./lib/_stream_passthrough.js'); -} diff --git a/node_modules/readable-stream/transform.js b/node_modules/readable-stream/transform.js deleted file mode 100644 index b1baba26d..000000000 --- a/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./readable').Transform diff --git a/node_modules/readable-stream/writable-browser.js b/node_modules/readable-stream/writable-browser.js deleted file mode 100644 index ebdde6a85..000000000 --- a/node_modules/readable-stream/writable-browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/_stream_writable.js'); diff --git a/node_modules/readable-stream/writable.js b/node_modules/readable-stream/writable.js deleted file mode 100644 index 3211a6f80..000000000 --- a/node_modules/readable-stream/writable.js +++ /dev/null @@ -1,8 +0,0 @@ -var Stream = require("stream") -var Writable = require("./lib/_stream_writable.js") - -if (process.env.READABLE_STREAM === 'disable') { - module.exports = Stream && Stream.Writable || Writable -} else { - module.exports = Writable -} diff --git a/node_modules/regex-not/LICENSE b/node_modules/regex-not/LICENSE deleted file mode 100644 index 8ee09d911..000000000 --- a/node_modules/regex-not/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016, 2018, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/regex-not/README.md b/node_modules/regex-not/README.md deleted file mode 100644 index 24d00e7de..000000000 --- a/node_modules/regex-not/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# regex-not [![NPM version](https://img.shields.io/npm/v/regex-not.svg?style=flat)](https://www.npmjs.com/package/regex-not) [![NPM monthly downloads](https://img.shields.io/npm/dm/regex-not.svg?style=flat)](https://npmjs.org/package/regex-not) [![NPM total downloads](https://img.shields.io/npm/dt/regex-not.svg?style=flat)](https://npmjs.org/package/regex-not) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/regex-not.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/regex-not) - -> Create a javascript regular expression for matching everything except for the given string. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save regex-not -``` - -## Usage - -```js -var not = require('regex-not'); -``` - -The main export is a function that takes a string an options object. - -```js -not(string[, options]); -``` - -**Example** - -```js -var not = require('regex-not'); -console.log(not('foo')); -//=> /^(?:(?!^(?:foo)$).)+$/ -``` - -**Strict matching** - -By default, the returned regex is for strictly (not) matching the exact given pattern (in other words, "match this string if it does NOT _exactly equal_ `foo`"): - -```js -var re = not('foo'); -console.log(re.test('foo')); //=> false -console.log(re.test('bar')); //=> true -console.log(re.test('foobar')); //=> true -console.log(re.test('barfoo')); //=> true -``` - -### .create - -Returns a string to allow you to create your own regex: - -```js -console.log(not.create('foo')); -//=> '(?:(?!^(?:foo)$).)+' -``` - -### Options - -**options.contains** - -You can relax strict matching by setting `options.contains` to true (in other words, "match this string if it does NOT _contain_ `foo`"): - -```js -var re = not('foo'); -console.log(re.test('foo', {contains: true})); //=> false -console.log(re.test('bar', {contains: true})); //=> true -console.log(re.test('foobar', {contains: true})); //=> false -console.log(re.test('barfoo', {contains: true})); //=> false -``` - -## About - -
          -Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
          - -
          -Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
          - -
          -Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
          - -### Related projects - -You might also be interested in these projects: - -* [regex-cache](https://www.npmjs.com/package/regex-cache): Memoize the results of a call to the RegExp constructor, avoiding repetitious runtime compilation of… [more](https://github.com/jonschlinkert/regex-cache) | [homepage](https://github.com/jonschlinkert/regex-cache "Memoize the results of a call to the RegExp constructor, avoiding repetitious runtime compilation of the same string and options, resulting in surprising performance improvements.") -* [to-regex](https://www.npmjs.com/package/to-regex): Generate a regex from a string or array of strings. | [homepage](https://github.com/jonschlinkert/to-regex "Generate a regex from a string or array of strings.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 9 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [doowb](https://github.com/doowb) | -| 1 | [EdwardBetts](https://github.com/EdwardBetts) | - -### Author - -**Jon Schlinkert** - -* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert) -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on February 19, 2018._ \ No newline at end of file diff --git a/node_modules/regex-not/index.js b/node_modules/regex-not/index.js deleted file mode 100644 index 02bfed4a8..000000000 --- a/node_modules/regex-not/index.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict'; - -var extend = require('extend-shallow'); -var safe = require('safe-regex'); - -/** - * The main export is a function that takes a `pattern` string and an `options` object. - * - * ```js - & var not = require('regex-not'); - & console.log(not('foo')); - & //=> /^(?:(?!^(?:foo)$).)*$/ - * ``` - * - * @param {String} `pattern` - * @param {Object} `options` - * @return {RegExp} Converts the given `pattern` to a regex using the specified `options`. - * @api public - */ - -function toRegex(pattern, options) { - return new RegExp(toRegex.create(pattern, options)); -} - -/** - * Create a regex-compatible string from the given `pattern` and `options`. - * - * ```js - & var not = require('regex-not'); - & console.log(not.create('foo')); - & //=> '^(?:(?!^(?:foo)$).)*$' - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {String} - * @api public - */ - -toRegex.create = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } - - var opts = extend({}, options); - if (opts.contains === true) { - opts.strictNegate = false; - } - - var open = opts.strictOpen !== false ? '^' : ''; - var close = opts.strictClose !== false ? '$' : ''; - var endChar = opts.endChar ? opts.endChar : '+'; - var str = pattern; - - if (opts.strictNegate === false) { - str = '(?:(?!(?:' + pattern + ')).)' + endChar; - } else { - str = '(?:(?!^(?:' + pattern + ')$).)' + endChar; - } - - var res = open + str + close; - if (opts.safe === true && safe(res) === false) { - throw new Error('potentially unsafe regular expression: ' + res); - } - - return res; -}; - -/** - * Expose `toRegex` - */ - -module.exports = toRegex; diff --git a/node_modules/regex-not/package.json b/node_modules/regex-not/package.json deleted file mode 100644 index 0f1e03fa2..000000000 --- a/node_modules/regex-not/package.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "_args": [ - [ - "regex-not@1.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "regex-not@1.0.2", - "_id": "regex-not@1.0.2", - "_inBundle": false, - "_integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "_location": "/regex-not", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "regex-not@1.0.2", - "name": "regex-not", - "escapedName": "regex-not", - "rawSpec": "1.0.2", - "saveSpec": null, - "fetchSpec": "1.0.2" - }, - "_requiredBy": [ - "/expand-brackets", - "/extglob", - "/micromatch", - "/nanomatch", - "/to-regex" - ], - "_resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "_spec": "1.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/regex-not/issues" - }, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "description": "Create a javascript regular expression for matching everything except for the given string.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/regex-not", - "keywords": [ - "exec", - "match", - "negate", - "negation", - "not", - "regex", - "regular expression", - "test" - ], - "license": "MIT", - "main": "index.js", - "name": "regex-not", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/regex-not.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "regex-cache", - "to-regex" - ] - }, - "reflinks": [ - "verb", - "verb-generate-readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.2" -} diff --git a/node_modules/relative/LICENSE b/node_modules/relative/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/relative/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/relative/README.md b/node_modules/relative/README.md deleted file mode 100644 index 116df817d..000000000 --- a/node_modules/relative/README.md +++ /dev/null @@ -1,124 +0,0 @@ -# relative [![NPM version](https://badge.fury.io/js/relative.svg)](http://badge.fury.io/js/relative) - -> Get the relative filepath from path A to path B. Calculates from file-to-directory, file-to-file, directory-to-file, and directory-to-directory. - -**Calculates correctly from:** - -* file-to-directory -* file-to-file -* directory-to-file -* directory-to-directory - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i relative --save -``` - -## Usage - -```js -var relative = require('relative'); -relative(from, to); - -relative('a/b/c.txt', 'd'); -//=> '../../d' - -relative('d', 'a/b/c.txt'); -//=> '../a/b/c.txt' -``` - -Relative to `process.cwd()` - -```js -relative('a/b/c.txt'); -//=> 'a/b/c.txt' - -relative(process.cwd(), 'a/b/c.txt'); -//=> 'a/b/c.txt' - -relative('a/b/c.txt', process.cwd()); -//=> '..' -``` - -### stat - -There are cases where it is impossible to tell if a path is a file or a directory without more information. - -**Examples** - -If assume that `a.b.c` is a directory, we have no way of know that without hitting the filesystem, which is impossible if the path doesn't actually exist. - -So the result would be: - -```js -relative('fixtures/a.b.c', 'fixtures'); -//=> '.' -``` - -**If the path exists** - -Pass `true` as the last argument, or pass the stat object from `fs.stat()`/`fs.statSync()` and you will get the correct result. - -```js -relative('fixtures/a.b.c', 'fixtures', true); -//=> '..' -``` - -**If the path does not exist** - -End directory names with trailing slash. If you can't or don't want to do that, you may get incorrect results from time to time, but there isn't much we can do about it. - -One very bad idea I had was to create a whitelist of filenames that look like directories, and directories that look like file names so that when those paths are encountered the logic would be adjusted accordingly. Anyway, it is what it is. - -## relative.toBase() - -Get the relative path to the given `base`. - -```js -relative.toBase(base, filepath); -``` - -**Example**: - -```js -relative.toBase('a/b', 'a/b/c/d/file.txt'); -//=> 'c/d/file.txt' -``` - -## Other useful libs - -* [cwd](https://github.com/jonschlinkert/cwd): Node.js util for easily getting the current working directory of a project based on package.json… [more](https://github.com/jonschlinkert/cwd) -* [export-files](https://github.com/jonschlinkert/export-files): node.js utility for exporting a directory of files as modules. -* [global-prefix](https://github.com/jonschlinkert/global-prefix): Get the npm global path prefix. -* [is-absolute](https://github.com/jonschlinkert/is-absolute): Return true if a file path is absolute. -* [is-relative](https://github.com/jonschlinkert/is-relative): Returns `true` if the path appears to be relative. -* [is-dotfile](https://github.com/jonschlinkert/is-dotfile): Return true if a file path is (or has) a dotfile. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/relative/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2014-2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on July 09, 2015._ \ No newline at end of file diff --git a/node_modules/relative/index.js b/node_modules/relative/index.js deleted file mode 100644 index 318b2c4a6..000000000 --- a/node_modules/relative/index.js +++ /dev/null @@ -1,164 +0,0 @@ -'use strict'; - -var isObject = require('isobject'); -var path = require('path'); -var fs = require('fs'); - -/** - * Expose `relative` - */ - -module.exports = relative; - -/** - * Get the relative path from `a` to `b`. - */ - -function relative(a, b, stat) { - if (typeof a !== 'string') { - throw new TypeError('relative expects a string.'); - } - - if (a == '' && !b) return a; - - var len = arguments.length; - if (len === 1) { - b = a; a = process.cwd(); stat = null; - } - - if (len === 2 && typeof b === 'boolean') { - b = a; a = process.cwd(); stat = true; - } - - if (len === 2 && typeof b === 'object') { - stat = b; b = a; a = process.cwd(); - } - - var origB = b; - - // see if a slash exists before normalizing - var slashA = endsWith(a, '/'); - var slashB = endsWith(b, '/'); - - a = unixify(a); - b = unixify(b); - - // if `a` had a slash, add it back - if (slashA) { a = a + '/'; } - - if (isFile(a, stat)) { - a = path.dirname(a); - } - - var res = path.relative(a, b); - if (res === '') { - return '.'; - } - - // if `b` originally had a slash, and the path ends - // with `b` missing a slash, then re-add the slash. - var noslash = trimEnd(origB, '/'); - if (slashB && (res === noslash || endsWith(res, noslash))) { - res = res + '/'; - } - return res; -} - -/** - * Get the path relative to the given base path. - */ - -relative.toBase = function toBase(base, fp) { - base = unixify(base); - fp = unixify(fp); - - var res = fp.slice(base.length); - if (res.charAt(0) === '/') { - res = res.slice(1); - } - return res; -}; - -/** - * Normalize slashes in paths to unix slashes. This is necessary since - * paths are not calculated the same by node.js when - * windows paths are used. - */ - -function unixify(str) { - return str.replace(/[\\\/]+/g, '/'); -} - -/** - * Remove the given character from the path. - */ - -function trimEnd(fp, ch) { - return fp.slice(0, fp.length - ch.length); -} - -/** - * Does the path end with the given `ch`aracter? - */ - -function endsWith(fp, ch) { - return fp.slice(-ch.length)[0] === ch; -} - -/** - * If `fp` exists, return a `stat` object, - * otherwise return `null`. - */ - -function tryStats(fp) { - try { - return fs.statSync(fp); - } catch(err) {} - return null; -} - -/** - * Returns true if `fp` is a directory. To use a `fs` - * stat object to actually check the file system, - * either pass `true` as the second arg, or pass your - * own stat object as the second arg. - * - * @param {String} `fp` - * @param {Boolean|Object} `stat` - * @return {Boolean} - */ - -function isDir(fp, stat) { - if (endsWith(fp, '/')) { - return true; - } - - if (stat === null) { - // try to get the directory info if it hasn't been done yet - // to ensure directories containing dots are well handle - stat = tryStats(fp); - } - - if (isObject(stat) && typeof stat.isDirectory === 'function') { - return stat.isDirectory(); - } - - var segs = fp.split('/'); - var last = segs[segs.length - 1]; - if (last && last.indexOf('.') !== -1) { - return false; - } - return true; -} - -/** - * Return true if `fp` looks like a file, or - * actually is a file if fs.stat is used. - */ - -function isFile(fp, stat) { - if (stat === true) { - stat = tryStats(fp); - } - return !isDir(fp, stat); -} diff --git a/node_modules/relative/node_modules/isobject/LICENSE b/node_modules/relative/node_modules/isobject/LICENSE deleted file mode 100644 index 39245ac1c..000000000 --- a/node_modules/relative/node_modules/isobject/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/relative/node_modules/isobject/README.md b/node_modules/relative/node_modules/isobject/README.md deleted file mode 100644 index 9dd897aa0..000000000 --- a/node_modules/relative/node_modules/isobject/README.md +++ /dev/null @@ -1,112 +0,0 @@ -# isobject [![NPM version](https://img.shields.io/npm/v/isobject.svg?style=flat)](https://www.npmjs.com/package/isobject) [![NPM downloads](https://img.shields.io/npm/dm/isobject.svg?style=flat)](https://npmjs.org/package/isobject) [![Build Status](https://img.shields.io/travis/jonschlinkert/isobject.svg?style=flat)](https://travis-ci.org/jonschlinkert/isobject) - -Returns true if the value is an object and not an array or null. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install isobject --save -``` - -Use [is-plain-object](https://github.com/jonschlinkert/is-plain-object) if you want only objects that are created by the `Object` constructor. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install isobject -``` - -Install with [bower](http://bower.io/) - -```sh -$ bower install isobject -``` - -## Usage - -```js -var isObject = require('isobject'); -``` - -**True** - -All of the following return `true`: - -```js -isObject({}); -isObject(Object.create({})); -isObject(Object.create(Object.prototype)); -isObject(Object.create(null)); -isObject({}); -isObject(new Foo); -isObject(/foo/); -``` - -**False** - -All of the following return `false`: - -```js -isObject(); -isObject(function () {}); -isObject(1); -isObject([]); -isObject(undefined); -isObject(null); -``` - -## Related projects - -You might also be interested in these projects: - -[merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep) - -* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow) -* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object) -* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of) - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/isobject/issues/new). - -## Building docs - -Generate readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install verb && npm run docs -``` - -Or, if [verb](https://github.com/verbose/verb) is installed globally: - -```sh -$ verb -``` - -## Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -## Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/isobject/blob/master/LICENSE). - -*** - -_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on April 25, 2016._ \ No newline at end of file diff --git a/node_modules/relative/node_modules/isobject/index.js b/node_modules/relative/node_modules/isobject/index.js deleted file mode 100644 index aa0dce0bb..000000000 --- a/node_modules/relative/node_modules/isobject/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * isobject - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var isArray = require('isarray'); - -module.exports = function isObject(val) { - return val != null && typeof val === 'object' && isArray(val) === false; -}; diff --git a/node_modules/relative/node_modules/isobject/package.json b/node_modules/relative/node_modules/isobject/package.json deleted file mode 100644 index d98a1dcfd..000000000 --- a/node_modules/relative/node_modules/isobject/package.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "_from": "isobject@^2.0.0", - "_id": "isobject@2.1.0", - "_inBundle": false, - "_integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "_location": "/relative/isobject", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "isobject@^2.0.0", - "name": "isobject", - "escapedName": "isobject", - "rawSpec": "^2.0.0", - "saveSpec": null, - "fetchSpec": "^2.0.0" - }, - "_requiredBy": [ - "/relative" - ], - "_resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "_shasum": "f065561096a3f1da2ef46272f815c840d87e0c89", - "_spec": "isobject@^2.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\relative", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/isobject/issues" - }, - "bundleDependencies": false, - "dependencies": { - "isarray": "1.0.0" - }, - "deprecated": false, - "description": "Returns true if the value is an object and not an array or null.", - "devDependencies": { - "gulp-format-md": "^0.1.9", - "mocha": "^2.4.5" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/isobject", - "keywords": [ - "check", - "is", - "is-object", - "isobject", - "kind", - "kind-of", - "kindof", - "native", - "object", - "type", - "typeof", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "isobject", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/isobject.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "merge-deep", - "extend-shallow", - "is-plain-object", - "kind-of" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "verb" - ] - }, - "version": "2.1.0" -} diff --git a/node_modules/relative/package.json b/node_modules/relative/package.json deleted file mode 100644 index 417db3b2c..000000000 --- a/node_modules/relative/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "relative@^3.0.2", - "_id": "relative@3.0.2", - "_inBundle": false, - "_integrity": "sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=", - "_location": "/relative", - "_phantomChildren": { - "isarray": "1.0.0" - }, - "_requested": { - "type": "range", - "registry": true, - "raw": "relative@^3.0.2", - "name": "relative", - "escapedName": "relative", - "rawSpec": "^3.0.2", - "saveSpec": null, - "fetchSpec": "^3.0.2" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/relative/-/relative-3.0.2.tgz", - "_shasum": "0dcd8ec54a5d35a3c15e104503d65375b5a5367f", - "_spec": "relative@^3.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/relative/issues" - }, - "bundleDependencies": false, - "dependencies": { - "isobject": "^2.0.0" - }, - "deprecated": false, - "description": "Get the relative filepath from path A to path B. Calculates from file-to-directory, file-to-file, directory-to-file, and directory-to-directory.", - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "engines": { - "node": ">= 0.8.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/relative", - "keywords": [ - "absolute", - "calculate", - "file", - "filepath", - "fs", - "normalize", - "path", - "path-relative", - "relative", - "resolve" - ], - "license": "MIT", - "main": "index.js", - "name": "relative", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/relative.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "cwd", - "export-files", - "is-absolute", - "is-relative", - "is-dotfile", - "global-prefix" - ] - } - }, - "version": "3.0.2" -} diff --git a/node_modules/remarkable/CHANGELOG.md b/node_modules/remarkable/CHANGELOG.md deleted file mode 100644 index 2b0b19977..000000000 --- a/node_modules/remarkable/CHANGELOG.md +++ /dev/null @@ -1,138 +0,0 @@ -1.7.0 / 2016-09-27 ------------------- - -- Special thanks to [lemoinem](https://github.com/lemoinem) for adding much needed, and well-written [documentation](docs/)! -- Footnotes are now enabled by default -- Adds support for "passthrough classes", thanks to [matthewmueller](https://github.com/matthewmueller) -- Outlaws data: URLs by default, thanks to [spicyj](https://github.com/spicyj) -- Improves whitespace trimming performance, thanks to [dpkirchner](https://github.com/dpkirchner) -- Image alts are now properly unescaped, thanks to [adam187](https://github.com/adam187) - -1.6.2 / 2016-02-04 ------------------- - -- Add support for specifying link target -- StateBlock.getLines should only read from the current line -- Fix missing space after shortcut links -- Fix "Manage rules" sample code in README.md -- Fix encoding of non-ASCII text (fixes #141) -- Option to not alter links provided for href -- Add Node.js v0.12 and v4 to Travis config -- Define bin script for npm -- Fix "Manage rules" sample code in README.md -- Fix typo in github proj url in Makefile -- Fix build by ignoring the demo directory in eslint - -1.6.1 / 2015-11-19 ------------------- - -- npm now installs a script so you can access remarkable from the command -line. - -1.5.0 / 2014-12-12 ------------------- - -- Added Demo sync scroll, to show how lines mapping can be used. -- Improved IE8 support. Now you need only es5-shim, without es5-sham. -- Fixed errors on refs/attrs/footnoted with special names like `__proto__`. -- Renamed Ruler() private properties, to show those should not be accessed - directly. -- Fixed Makefile OSX compatibility. - - -1.4.2 / 2014-11-29 ------------------- - -- Added footnotes support. -- Added definitions lists support. -- Added `fence_custom` renderer extension to easy override - named fenced blocks (useful for diagrams and so on). -- Exposed `./common/utils` to simplify custom renderers. - - -1.4.1 / 2014-11-13 ------------------- - -- Moved links decode/encode from renderer to parser. -- Added missed validator call for scoped urls in links. -- Handle exceptions in `decoreURI` (regression). - - -1.4.0 / 2014-11-09 ------------------- - -- Added `core` chain, to better organize code and improve pluggability. -- Added `renderInline()` and `parseInline()` methods. -- Added abbreviations support. -- Fixed problem with tables, having single column. -- Fixed rendered rules rewrite for inline tags. -- Changed internal api (ruler, inline, block classes). -- Removed typographer chain (rules moved to `core`). -- Removed all typographer options. Quote chars defs moved to `options.quotes`. - - -1.3.0 / 2014-10-29 ------------------- - -- Fixed problem with minified & mangled browser version. -- Changed ruler API. - - -1.2.2 / 2014-10-29 ------------------- - -- Fixed regression from 1.2.1 for data without tailing `\n`. -- Fixed blockquote line ranges. -- Added subscript/superscript support. -- Updated CommonMark spec and updated implementation. -- Other minor changes. - - -1.2.1 / 2014-10-28 ------------------- - -- Fixed speed degradation when linkifier enabled. -- Added coverage reports. -- Added debug view to demo (show internal representation) -- Other minor optimizations and cleanup. - - -1.2.0 / 2014-10-26 ------------------- - -- Added `` rule. -- Added `` rule. -- Added presets support (default, commonmark, full). -- Exposed `.configure()` method to load rules & options config with one command. -- Moved html escaping to renderer. - - -1.1.2 / 2014-10-23 ------------------- - -- Fixed speed regression. -- Use base64 encoding for permalinks (workaround for github). -- Improved default link validator. -- Updated cache storage logic for inline parser. - - -1.1.1 / 2014-10-22 ------------------- - -- Fixed `Ruler.after()` method. -- Fixed linkification. -- Simplified loose/tight rendering. -- Refactored inline parser. No close coupled code in rules anymore. - - -1.1.0 / 2014-10-20 ------------------- - -- Code refactoring, bugfixes, API update. -- Added source lines info to block nodes. - - -1.0.0 / 2014-10-16 ------------------- - -- First release. diff --git a/node_modules/remarkable/LICENSE b/node_modules/remarkable/LICENSE deleted file mode 100644 index 193b5ebce..000000000 --- a/node_modules/remarkable/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2016, Jon Schlinkert -Copyright (c) 2014 Jon Schlinkert, Vitaly Puzrin. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/remarkable/README.md b/node_modules/remarkable/README.md deleted file mode 100644 index 4cbcbb14a..000000000 --- a/node_modules/remarkable/README.md +++ /dev/null @@ -1,349 +0,0 @@ -# remarkable - -[![Build Status](https://travis-ci.org/jonschlinkert/remarkable.svg?branch=master)](https://travis-ci.org/jonschlinkert/remarkable) -[![NPM version](https://img.shields.io/npm/v/remarkable.svg)](https://www.npmjs.org/package/remarkable) -[![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/remarkable/badge?style=rounded)](https://www.jsdelivr.com/package/npm/remarkable) -[![Coverage Status](https://img.shields.io/coveralls/jonschlinkert/remarkable.svg)](https://coveralls.io/r/jonschlinkert/remarkable?branch=dev) - -> Markdown parser done right. Fast and easy to extend. - -__[Live demo](http://jonschlinkert.github.io/remarkable/demo/)__ - -- Supports the [CommonMark](http://commonmark.org/) spec + - [syntax extensions](#syntax-extensions) + sugar (URL autolinking, typographer). -- Configurable syntax! You can add new rules and even replace existing ones. -- [High speed](#benchmark)! -- [Community plugins](https://www.npmjs.org/browse/keyword/remarkable) on npm. - - -## Install - -**node.js:** - -```bash -npm install remarkable --save -``` - -**bower:** - -```bash -bower install remarkable --save -``` - -**browser (CDN):** - -- [jsDeliver CDN](http://www.jsdelivr.com/#!remarkable "jsDelivr CDN") -- [cdnjs](https://cdnjs.com/libraries/remarkable "cdnjs") - - -## Usage - -```js -var Remarkable = require('remarkable'); -var md = new Remarkable(); - -console.log(md.render('# Remarkable rulezz!')); -// =>

          Remarkable rulezz!

          -``` - -If installed globally with `npm`: - -```sh -cat myfile.md | remarkable -remarkable --file myfile.md - -# get options -remarkable -h -``` - -## Documentation - -See the [docs](docs/) directory for documentation on the following topics: - -- [parser](docs/parser.md) -- [parsing_block](docs/parsing_block.md) -- [parsing_core](docs/parsing_core.md) -- [parsing_inline](docs/parsing_inline.md) -- [plugins](docs/plugins.md) -- [renderer](docs/renderer.md) - -### Options - -By default, remarkable is configured to be similar to GFM, but with HTML disabled. -This is easy to change if you prefer different settings. - -There are two ways to define options. - -#### constructor - -Define options in the constructor: - -```js -// Actual default values -var md = new Remarkable({ - html: false, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // Autoconvert URL-like text to links - - // Enable some language-neutral replacement + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if the source string is not changed - highlight: function (/*str, lang*/) { return ''; } -}); - -console.log(md.render('# Remarkable rulezz!')); -// =>

          Remarkable rulezz!

          -``` - -#### .set - -Or define options via the `.set()` method: - -```js -var Remarkable = require('remarkable'); -var md = new Remarkable(); - -md.set({ - html: true, - breaks: true -}); -``` - -**Note:** To achieve the best possible performance, don't modify a `Remarkable` -instance on the fly. If you need multiple configurations, create -multiple instances and initialize each with a configuration that is ideal for -that instance. - - -### Presets - -Remarkable offers some "presets" as a convenience to quickly enable/disable -active syntax rules and options for common use cases. - -#### commonmark - -Enable strict [CommonMark](http://commonmark.org/) mode with the `commonmark` preset: - -```js -var Remarkable = require('remarkable'); -var md = new Remarkable('commonmark'); -``` - -#### full - -Enable all available rules (but still with default options, if not set): - -```js -var Remarkable = require('remarkable'); -var md = new Remarkable('full'); - -// Or with options: -var md = new Remarkable('full', { - html: true, - linkify: true, - typographer: true -}); -``` - - -### Syntax highlighting - -Apply syntax highlighting to fenced code blocks with the `highlight` option: - -```js -var Remarkable = require('remarkable'); -var hljs = require('highlight.js') // https://highlightjs.org/ - -// Actual default values -var md = new Remarkable({ - highlight: function (str, lang) { - if (lang && hljs.getLanguage(lang)) { - try { - return hljs.highlight(lang, str).value; - } catch (err) {} - } - - try { - return hljs.highlightAuto(str).value; - } catch (err) {} - - return ''; // use external default escaping - } -}); -``` - - -### Syntax extensions - -Enabled by default: - -- [Footnotes](http://johnmacfarlane.net/pandoc/README.html#footnotes) -- [Tables](https://help.github.com/articles/github-flavored-markdown/#tables) (GFM) -- [\](https://help.github.com/articles/github-flavored-markdown/#strikethrough) - (GFM strikethrough) - `~~deleted text~~` - -Disabled by default: - -- [\](http://johnmacfarlane.net/pandoc/README.html#superscripts-and-subscripts) - `19^th^` -- [\](http://johnmacfarlane.net/pandoc/README.html#superscripts-and-subscripts) - `H~2~O` -- [abbreviations](https://michelf.ca/projects/php-markdown/extra/#abbr) -- __\__ - `++inserted text++` (experimental) -- __\__ - `==marked text==` (experimental) - -**HEADS UP!**: Experimental extensions can be changed later for something like [Critic Markup](http://criticmarkup.com/), but you will still be able to use old-style rules via external plugins if you prefer. - - -### Manage rules - -```js -var md = new Remarkable(); -md.inline.ruler.enable([ 'ins', 'mark' ]); -md.block.ruler.disable([ 'table', 'footnote' ]); - -// Enable everything -md = new Remarkable('full', { - html: true, - linkify: true, - typographer: true, -}); - -// -// Manually enable rules, disabled by default: -// -var md = new Remarkable(); -md.core.ruler.enable([ - 'abbr' -]); -md.block.ruler.enable([ - 'footnote', - 'deflist' -]); -md.inline.ruler.enable([ - 'footnote_inline', - 'ins', - 'mark', - 'sub', - 'sup' -]); -``` - - -### Typographer - -Although full-weight typographical replacements are language specific, `remarkable` -provides coverage for the most common and universal use cases: - -```js -var Remarkable = require('remarkable'); -var md = new Remarkable({ - typographer: true, - quotes: '“”‘’' -}); - -// Disable rules at all: -md.core.ruler.disable([ 'replacements', 'smartquotes' ]); - -// Actual default replacements: -// -// '' → ‘’ -// "" → “”. Set '«»' for Russian, '„“' for German, empty to disable -// (c) (C) → © -// (tm) (TM) → ™ -// (r) (R) → ® -// +- → ± -// (p) (P) -> § -// ... → … (also ?.... → ?.., !.... → !..) -// ???????? → ???, !!!!! → !!!, `,,` → `,` -// -- → –, --- → — -// -``` - -Of course, you can also add your own rules or replace the defaults with something -more advanced or specific to your language. - - -### Plugins - -Easily load plugins with the `.use()` method: - -```js -var md = new Remarkable(); - -md.use(plugin1) - .use(plugin2, opts) - .use(plugin3); -``` - -Please refer to the [plugin documentation](docs/plugins.md) to create your own -plugins. - -## References / Thanks - -Big thanks to [John MacFarlane](https://github.com/jgm) for his work on the -CommonMark spec and reference implementations. His work saved us a lot of time -during this project's development. - -**Related Links:** - -1. https://github.com/jgm/CommonMark - reference CommonMark implementations in C & JS, - also contains latest spec & online demo. -2. http://talk.commonmark.org - CommonMark forum, good place to collaborate - developers' efforts. - - -## Development / Modification - -[Parser](docs/parser.md) consists of several responsibility chains filled with -rules. You can reconfigure any of them as you wish. [Renderer](docs/renderer.md) also -can be modified and extended. See source code to understand details. Pay -attention to these properties: - -```js -Remarkable.core -Remarkable.core.ruler -Remarkable.block -Remarkable.block.ruler -Remarkable.inline -Remarkable.inline.ruler -Remarkable.renderer -Remarkable.renderer.rules -``` - -## Benchmark - -Here is result of CommonMark spec parse at Core i5 2.4 GHz (i5-4258U): - -```bash -$ benchmark/benchmark.js spec -Selected samples: (1 of 27) - > spec - -Sample: spec.txt (110610 bytes) - > commonmark-reference x 40.42 ops/sec ±4.07% (51 runs sampled) - > current x 74.99 ops/sec ±4.69% (67 runs sampled) - > current-commonmark x 93.76 ops/sec ±1.23% (79 runs sampled) - > marked-0.3.2 x 22.92 ops/sec ±0.79% (41 runs sampled) -``` - -As you can see, `remarkable` doesn't pay with speed for its flexibility. Because -it's written in monomorphic style and uses JIT inline caches effectively. - - -## Authors - -- Jon Schlinkert [github/jonschlinkert](https://github.com/jonschlinkert) -- Alex Kocharin [github/rlidwka](https://github.com/rlidwka) -- Vitaly Puzrin [github/puzrin](https://github.com/puzrin) - - -## License - -[MIT](https://github.com/jonschlinkert/remarkable/blob/master/LICENSE) diff --git a/node_modules/remarkable/bin/remarkable.js b/node_modules/remarkable/bin/remarkable.js deleted file mode 100644 index b7c03c3fa..000000000 --- a/node_modules/remarkable/bin/remarkable.js +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env node -/*eslint no-console:0*/ - -'use strict'; - - -var fs = require('fs'); -var argparse = require('argparse'); - -var Remarkable = require('..'); - -//////////////////////////////////////////////////////////////////////////////// - -var cli = new argparse.ArgumentParser({ - prog: 'remarkable', - version: require('../package.json').version, - addHelp: true -}); - -cli.addArgument([ 'file' ], { - help: 'File to read', - nargs: '?', - defaultValue: '-' -}); - -var options = cli.parseArgs(); - - -function readFile(filename, encoding, callback) { - if (options.file === '-') { - var chunks = []; - - // read from stdin - process.stdin.on('data', function(chunk) { - chunks.push(chunk); - }); - - process.stdin.on('end', function() { - return callback(null, Buffer.concat(chunks).toString(encoding)); - }); - } else { - fs.readFile(filename, encoding, callback); - } -} - - -//////////////////////////////////////////////////////////////////////////////// - -readFile(options.file, 'utf8', function (err, input) { - var output, md; - - if (err) { - if (err.code === 'ENOENT') { - console.error('File not found: ' + options.file); - process.exit(2); - } - - console.error(err.stack || err.message || String(err)); - process.exit(1); - } - - md = new Remarkable('full', { - html: true, - xhtmlOut: true, - typographer: true, - linkify: true - }); - - try { - output = md.render(input); - } catch (e) { - console.error(e.stack || e.message || String(e)); - process.exit(1); - } - - process.stdout.write(output); - process.exit(0); -}); diff --git a/node_modules/remarkable/dist/remarkable.js b/node_modules/remarkable/dist/remarkable.js deleted file mode 100644 index a49f0ab58..000000000 --- a/node_modules/remarkable/dist/remarkable.js +++ /dev/null @@ -1,11570 +0,0 @@ -/*! remarkable 1.7.4 https://github.com/jonschlinkert/remarkable @license MIT */(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Remarkable = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i`\x00-\x20]+/; -var single_quoted = /'[^']*'/; -var double_quoted = /"[^"]*"/; - -/*eslint no-spaced-func:0*/ -var attr_value = replace(/(?:unquoted|single_quoted|double_quoted)/) - ('unquoted', unquoted) - ('single_quoted', single_quoted) - ('double_quoted', double_quoted) - (); - -var attribute = replace(/(?:\s+attr_name(?:\s*=\s*attr_value)?)/) - ('attr_name', attr_name) - ('attr_value', attr_value) - (); - -var open_tag = replace(/<[A-Za-z][A-Za-z0-9]*attribute*\s*\/?>/) - ('attribute', attribute) - (); - -var close_tag = /<\/[A-Za-z][A-Za-z0-9]*\s*>/; -var comment = /|/; -var processing = /<[?].*?[?]>/; -var declaration = /]*>/; -var cdata = //; - -var HTML_TAG_RE = replace(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/) - ('open_tag', open_tag) - ('close_tag', close_tag) - ('comment', comment) - ('processing', processing) - ('declaration', declaration) - ('cdata', cdata) - (); - - -module.exports.HTML_TAG_RE = HTML_TAG_RE; - -},{}],4:[function(require,module,exports){ -// List of valid url schemas, accorting to commonmark spec -// http://jgm.github.io/CommonMark/spec.html#autolinks - -'use strict'; - - -module.exports = [ - 'coap', - 'doi', - 'javascript', - 'aaa', - 'aaas', - 'about', - 'acap', - 'cap', - 'cid', - 'crid', - 'data', - 'dav', - 'dict', - 'dns', - 'file', - 'ftp', - 'geo', - 'go', - 'gopher', - 'h323', - 'http', - 'https', - 'iax', - 'icap', - 'im', - 'imap', - 'info', - 'ipp', - 'iris', - 'iris.beep', - 'iris.xpc', - 'iris.xpcs', - 'iris.lwz', - 'ldap', - 'mailto', - 'mid', - 'msrp', - 'msrps', - 'mtqp', - 'mupdate', - 'news', - 'nfs', - 'ni', - 'nih', - 'nntp', - 'opaquelocktoken', - 'pop', - 'pres', - 'rtsp', - 'service', - 'session', - 'shttp', - 'sieve', - 'sip', - 'sips', - 'sms', - 'snmp', - 'soap.beep', - 'soap.beeps', - 'tag', - 'tel', - 'telnet', - 'tftp', - 'thismessage', - 'tn3270', - 'tip', - 'tv', - 'urn', - 'vemmi', - 'ws', - 'wss', - 'xcon', - 'xcon-userid', - 'xmlrpc.beep', - 'xmlrpc.beeps', - 'xmpp', - 'z39.50r', - 'z39.50s', - 'adiumxtra', - 'afp', - 'afs', - 'aim', - 'apt', - 'attachment', - 'aw', - 'beshare', - 'bitcoin', - 'bolo', - 'callto', - 'chrome', - 'chrome-extension', - 'com-eventbrite-attendee', - 'content', - 'cvs', - 'dlna-playsingle', - 'dlna-playcontainer', - 'dtn', - 'dvb', - 'ed2k', - 'facetime', - 'feed', - 'finger', - 'fish', - 'gg', - 'git', - 'gizmoproject', - 'gtalk', - 'hcp', - 'icon', - 'ipn', - 'irc', - 'irc6', - 'ircs', - 'itms', - 'jar', - 'jms', - 'keyparc', - 'lastfm', - 'ldaps', - 'magnet', - 'maps', - 'market', - 'message', - 'mms', - 'ms-help', - 'msnim', - 'mumble', - 'mvn', - 'notes', - 'oid', - 'palm', - 'paparazzi', - 'platform', - 'proxy', - 'psyc', - 'query', - 'res', - 'resource', - 'rmi', - 'rsync', - 'rtmp', - 'secondlife', - 'sftp', - 'sgn', - 'skype', - 'smb', - 'soldat', - 'spotify', - 'ssh', - 'steam', - 'svn', - 'teamspeak', - 'things', - 'udp', - 'unreal', - 'ut2004', - 'ventrilo', - 'view-source', - 'webcal', - 'wtai', - 'wyciwyg', - 'xfire', - 'xri', - 'ymsgr' -]; - -},{}],5:[function(require,module,exports){ -'use strict'; - -/** - * Utility functions - */ - -function typeOf(obj) { - return Object.prototype.toString.call(obj); -} - -function isString(obj) { - return typeOf(obj) === '[object String]'; -} - -var hasOwn = Object.prototype.hasOwnProperty; - -function has(object, key) { - return object - ? hasOwn.call(object, key) - : false; -} - -// Extend objects -// -function assign(obj /*from1, from2, from3, ...*/) { - var sources = [].slice.call(arguments, 1); - - sources.forEach(function (source) { - if (!source) { return; } - - if (typeof source !== 'object') { - throw new TypeError(source + 'must be object'); - } - - Object.keys(source).forEach(function (key) { - obj[key] = source[key]; - }); - }); - - return obj; -} - -//////////////////////////////////////////////////////////////////////////////// - -var UNESCAPE_MD_RE = /\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; - -function unescapeMd(str) { - if (str.indexOf('\\') < 0) { return str; } - return str.replace(UNESCAPE_MD_RE, '$1'); -} - -//////////////////////////////////////////////////////////////////////////////// - -function isValidEntityCode(c) { - /*eslint no-bitwise:0*/ - // broken sequence - if (c >= 0xD800 && c <= 0xDFFF) { return false; } - // never used - if (c >= 0xFDD0 && c <= 0xFDEF) { return false; } - if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; } - // control codes - if (c >= 0x00 && c <= 0x08) { return false; } - if (c === 0x0B) { return false; } - if (c >= 0x0E && c <= 0x1F) { return false; } - if (c >= 0x7F && c <= 0x9F) { return false; } - // out of range - if (c > 0x10FFFF) { return false; } - return true; -} - -function fromCodePoint(c) { - /*eslint no-bitwise:0*/ - if (c > 0xffff) { - c -= 0x10000; - var surrogate1 = 0xd800 + (c >> 10), - surrogate2 = 0xdc00 + (c & 0x3ff); - - return String.fromCharCode(surrogate1, surrogate2); - } - return String.fromCharCode(c); -} - -var NAMED_ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi; -var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i; -var entities = require('./entities'); - -function replaceEntityPattern(match, name) { - var code = 0; - - if (has(entities, name)) { - return entities[name]; - } else if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) { - code = name[1].toLowerCase() === 'x' ? - parseInt(name.slice(2), 16) - : - parseInt(name.slice(1), 10); - if (isValidEntityCode(code)) { - return fromCodePoint(code); - } - } - return match; -} - -function replaceEntities(str) { - if (str.indexOf('&') < 0) { return str; } - - return str.replace(NAMED_ENTITY_RE, replaceEntityPattern); -} - -//////////////////////////////////////////////////////////////////////////////// - -var HTML_ESCAPE_TEST_RE = /[&<>"]/; -var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; -var HTML_REPLACEMENTS = { - '&': '&', - '<': '<', - '>': '>', - '"': '"' -}; - -function replaceUnsafeChar(ch) { - return HTML_REPLACEMENTS[ch]; -} - -function escapeHtml(str) { - if (HTML_ESCAPE_TEST_RE.test(str)) { - return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar); - } - return str; -} - -//////////////////////////////////////////////////////////////////////////////// - -exports.assign = assign; -exports.isString = isString; -exports.has = has; -exports.unescapeMd = unescapeMd; -exports.isValidEntityCode = isValidEntityCode; -exports.fromCodePoint = fromCodePoint; -exports.replaceEntities = replaceEntities; -exports.escapeHtml = escapeHtml; - -},{"./entities":1}],6:[function(require,module,exports){ -// Commonmark default options - -'use strict'; - - -module.exports = { - options: { - html: true, // Enable HTML tags in source - xhtmlOut: true, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - linkTarget: '', // set target to open link in - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if input not changed - // - // function (/*str, lang*/) { return ''; } - // - highlight: null, - - maxNesting: 20 // Internal protection, recursion limit - }, - - components: { - - core: { - rules: [ - 'block', - 'inline', - 'references', - 'abbr2' - ] - }, - - block: { - rules: [ - 'blockquote', - 'code', - 'fences', - 'heading', - 'hr', - 'htmlblock', - 'lheading', - 'list', - 'paragraph' - ] - }, - - inline: { - rules: [ - 'autolink', - 'backticks', - 'emphasis', - 'entity', - 'escape', - 'htmltag', - 'links', - 'newline', - 'text' - ] - } - } -}; - -},{}],7:[function(require,module,exports){ -// Remarkable default options - -'use strict'; - - -module.exports = { - options: { - html: false, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - linkTarget: '', // set target to open link in - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if input not changed - // - // function (/*str, lang*/) { return ''; } - // - highlight: null, - - maxNesting: 20 // Internal protection, recursion limit - }, - - components: { - - core: { - rules: [ - 'block', - 'inline', - 'references', - 'replacements', - 'linkify', - 'smartquotes', - 'references', - 'abbr2', - 'footnote_tail' - ] - }, - - block: { - rules: [ - 'blockquote', - 'code', - 'fences', - 'footnote', - 'heading', - 'hr', - 'htmlblock', - 'lheading', - 'list', - 'paragraph', - 'table' - ] - }, - - inline: { - rules: [ - 'autolink', - 'backticks', - 'del', - 'emphasis', - 'entity', - 'escape', - 'footnote_ref', - 'htmltag', - 'links', - 'newline', - 'text' - ] - } - } -}; - -},{}],8:[function(require,module,exports){ -// Remarkable default options - -'use strict'; - - -module.exports = { - options: { - html: false, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - linkTarget: '', // set target to open link in - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if input not changed - // - // function (/*str, lang*/) { return ''; } - // - highlight: null, - - maxNesting: 20 // Internal protection, recursion limit - }, - - components: { - // Don't restrict core/block/inline rules - core: {}, - block: {}, - inline: {} - } -}; - -},{}],9:[function(require,module,exports){ -'use strict'; - -var replaceEntities = require('../common/utils').replaceEntities; - -module.exports = function normalizeLink(url) { - var normalized = replaceEntities(url); - // We shouldn't care about the result of malformed URIs, - // and should not throw an exception. - try { - normalized = decodeURI(normalized); - } catch (err) {} - return encodeURI(normalized); -}; - -},{"../common/utils":5}],10:[function(require,module,exports){ -'use strict'; - -module.exports = function normalizeReference(str) { - // use .toUpperCase() instead of .toLowerCase() - // here to avoid a conflict with Object.prototype - // members (most notably, `__proto__`) - return str.trim().replace(/\s+/g, ' ').toUpperCase(); -}; - -},{}],11:[function(require,module,exports){ -'use strict'; - - -var normalizeLink = require('./normalize_link'); -var unescapeMd = require('../common/utils').unescapeMd; - -/** - * Parse link destination - * - * - on success it returns a string and updates state.pos; - * - on failure it returns null - * - * @param {Object} state - * @param {Number} pos - * @api private - */ - -module.exports = function parseLinkDestination(state, pos) { - var code, level, link, - start = pos, - max = state.posMax; - - if (state.src.charCodeAt(pos) === 0x3C /* < */) { - pos++; - while (pos < max) { - code = state.src.charCodeAt(pos); - if (code === 0x0A /* \n */) { return false; } - if (code === 0x3E /* > */) { - link = normalizeLink(unescapeMd(state.src.slice(start + 1, pos))); - if (!state.parser.validateLink(link)) { return false; } - state.pos = pos + 1; - state.linkContent = link; - return true; - } - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - pos++; - } - - // no closing '>' - return false; - } - - // this should be ... } else { ... branch - - level = 0; - while (pos < max) { - code = state.src.charCodeAt(pos); - - if (code === 0x20) { break; } - - // ascii control chars - if (code < 0x20 || code === 0x7F) { break; } - - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - if (code === 0x28 /* ( */) { - level++; - if (level > 1) { break; } - } - - if (code === 0x29 /* ) */) { - level--; - if (level < 0) { break; } - } - - pos++; - } - - if (start === pos) { return false; } - - link = unescapeMd(state.src.slice(start, pos)); - if (!state.parser.validateLink(link)) { return false; } - - state.linkContent = link; - state.pos = pos; - return true; -}; - -},{"../common/utils":5,"./normalize_link":9}],12:[function(require,module,exports){ -'use strict'; - -/** - * Parse link labels - * - * This function assumes that first character (`[`) already matches; - * returns the end of the label. - * - * @param {Object} state - * @param {Number} start - * @api private - */ - -module.exports = function parseLinkLabel(state, start) { - var level, found, marker, - labelEnd = -1, - max = state.posMax, - oldPos = state.pos, - oldFlag = state.isInLabel; - - if (state.isInLabel) { return -1; } - - if (state.labelUnmatchedScopes) { - state.labelUnmatchedScopes--; - return -1; - } - - state.pos = start + 1; - state.isInLabel = true; - level = 1; - - while (state.pos < max) { - marker = state.src.charCodeAt(state.pos); - if (marker === 0x5B /* [ */) { - level++; - } else if (marker === 0x5D /* ] */) { - level--; - if (level === 0) { - found = true; - break; - } - } - - state.parser.skipToken(state); - } - - if (found) { - labelEnd = state.pos; - state.labelUnmatchedScopes = 0; - } else { - state.labelUnmatchedScopes = level - 1; - } - - // restore old state - state.pos = oldPos; - state.isInLabel = oldFlag; - - return labelEnd; -}; - -},{}],13:[function(require,module,exports){ -'use strict'; - - -var unescapeMd = require('../common/utils').unescapeMd; - -/** - * Parse link title - * - * - on success it returns a string and updates state.pos; - * - on failure it returns null - * - * @param {Object} state - * @param {Number} pos - * @api private - */ - -module.exports = function parseLinkTitle(state, pos) { - var code, - start = pos, - max = state.posMax, - marker = state.src.charCodeAt(pos); - - if (marker !== 0x22 /* " */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return false; } - - pos++; - - // if opening marker is "(", switch it to closing marker ")" - if (marker === 0x28) { marker = 0x29; } - - while (pos < max) { - code = state.src.charCodeAt(pos); - if (code === marker) { - state.pos = pos + 1; - state.linkContent = unescapeMd(state.src.slice(start + 1, pos)); - return true; - } - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - pos++; - } - - return false; -}; - -},{"../common/utils":5}],14:[function(require,module,exports){ -'use strict'; - -/** - * Local dependencies - */ - -var assign = require('./common/utils').assign; -var Renderer = require('./renderer'); -var ParserCore = require('./parser_core'); -var ParserBlock = require('./parser_block'); -var ParserInline = require('./parser_inline'); -var Ruler = require('./ruler'); - -/** - * Preset configs - */ - -var config = { - 'default': require('./configs/default'), - 'full': require('./configs/full'), - 'commonmark': require('./configs/commonmark') -}; - -/** - * The `StateCore` class manages state. - * - * @param {Object} `instance` Remarkable instance - * @param {String} `str` Markdown string - * @param {Object} `env` - */ - -function StateCore(instance, str, env) { - this.src = str; - this.env = env; - this.options = instance.options; - this.tokens = []; - this.inlineMode = false; - - this.inline = instance.inline; - this.block = instance.block; - this.renderer = instance.renderer; - this.typographer = instance.typographer; -} - -/** - * The main `Remarkable` class. Create an instance of - * `Remarkable` with a `preset` and/or `options`. - * - * @param {String} `preset` If no preset is given, `default` is used. - * @param {Object} `options` - */ - -function Remarkable(preset, options) { - if (typeof preset !== 'string') { - options = preset; - preset = 'default'; - } - - this.inline = new ParserInline(); - this.block = new ParserBlock(); - this.core = new ParserCore(); - this.renderer = new Renderer(); - this.ruler = new Ruler(); - - this.options = {}; - this.configure(config[preset]); - this.set(options || {}); -} - -/** - * Set options as an alternative to passing them - * to the constructor. - * - * ```js - * md.set({typographer: true}); - * ``` - * @param {Object} `options` - * @api public - */ - -Remarkable.prototype.set = function (options) { - assign(this.options, options); -}; - -/** - * Batch loader for components rules states, and options - * - * @param {Object} `presets` - */ - -Remarkable.prototype.configure = function (presets) { - var self = this; - - if (!presets) { throw new Error('Wrong `remarkable` preset, check name/content'); } - if (presets.options) { self.set(presets.options); } - if (presets.components) { - Object.keys(presets.components).forEach(function (name) { - if (presets.components[name].rules) { - self[name].ruler.enable(presets.components[name].rules, true); - } - }); - } -}; - -/** - * Use a plugin. - * - * ```js - * var md = new Remarkable(); - * - * md.use(plugin1) - * .use(plugin2, opts) - * .use(plugin3); - * ``` - * - * @param {Function} `plugin` - * @param {Object} `options` - * @return {Object} `Remarkable` for chaining - */ - -Remarkable.prototype.use = function (plugin, options) { - plugin(this, options); - return this; -}; - - -/** - * Parse the input `string` and return a tokens array. - * Modifies `env` with definitions data. - * - * @param {String} `string` - * @param {Object} `env` - * @return {Array} Array of tokens - */ - -Remarkable.prototype.parse = function (str, env) { - var state = new StateCore(this, str, env); - this.core.process(state); - return state.tokens; -}; - -/** - * The main `.render()` method that does all the magic :) - * - * @param {String} `string` - * @param {Object} `env` - * @return {String} Rendered HTML. - */ - -Remarkable.prototype.render = function (str, env) { - env = env || {}; - return this.renderer.render(this.parse(str, env), this.options, env); -}; - -/** - * Parse the given content `string` as a single string. - * - * @param {String} `string` - * @param {Object} `env` - * @return {Array} Array of tokens - */ - -Remarkable.prototype.parseInline = function (str, env) { - var state = new StateCore(this, str, env); - state.inlineMode = true; - this.core.process(state); - return state.tokens; -}; - -/** - * Render a single content `string`, without wrapping it - * to paragraphs - * - * @param {String} `str` - * @param {Object} `env` - * @return {String} - */ - -Remarkable.prototype.renderInline = function (str, env) { - env = env || {}; - return this.renderer.render(this.parseInline(str, env), this.options, env); -}; - -/** - * Expose `Remarkable` - */ - -module.exports = Remarkable; - -/** - * Expose `utils`, Useful helper functions for custom - * rendering. - */ - -module.exports.utils = require('./common/utils'); - -},{"./common/utils":5,"./configs/commonmark":6,"./configs/default":7,"./configs/full":8,"./parser_block":15,"./parser_core":16,"./parser_inline":17,"./renderer":18,"./ruler":19}],15:[function(require,module,exports){ -'use strict'; - -/** - * Local dependencies - */ - -var Ruler = require('./ruler'); -var StateBlock = require('./rules_block/state_block'); - -/** - * Parser rules - */ - -var _rules = [ - [ 'code', require('./rules_block/code') ], - [ 'fences', require('./rules_block/fences'), [ 'paragraph', 'blockquote', 'list' ] ], - [ 'blockquote', require('./rules_block/blockquote'), [ 'paragraph', 'blockquote', 'list' ] ], - [ 'hr', require('./rules_block/hr'), [ 'paragraph', 'blockquote', 'list' ] ], - [ 'list', require('./rules_block/list'), [ 'paragraph', 'blockquote' ] ], - [ 'footnote', require('./rules_block/footnote'), [ 'paragraph' ] ], - [ 'heading', require('./rules_block/heading'), [ 'paragraph', 'blockquote' ] ], - [ 'lheading', require('./rules_block/lheading') ], - [ 'htmlblock', require('./rules_block/htmlblock'), [ 'paragraph', 'blockquote' ] ], - [ 'table', require('./rules_block/table'), [ 'paragraph' ] ], - [ 'deflist', require('./rules_block/deflist'), [ 'paragraph' ] ], - [ 'paragraph', require('./rules_block/paragraph') ] -]; - -/** - * Block Parser class - * - * @api private - */ - -function ParserBlock() { - this.ruler = new Ruler(); - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1], { - alt: (_rules[i][2] || []).slice() - }); - } -} - -/** - * Generate tokens for the given input range. - * - * @param {Object} `state` Has properties like `src`, `parser`, `options` etc - * @param {Number} `startLine` - * @param {Number} `endLine` - * @api private - */ - -ParserBlock.prototype.tokenize = function (state, startLine, endLine) { - var rules = this.ruler.getRules(''); - var len = rules.length; - var line = startLine; - var hasEmptyLines = false; - var ok, i; - - while (line < endLine) { - state.line = line = state.skipEmptyLines(line); - if (line >= endLine) { - break; - } - - // Termination condition for nested calls. - // Nested calls currently used for blockquotes & lists - if (state.tShift[line] < state.blkIndent) { - break; - } - - // Try all possible rules. - // On success, rule should: - // - // - update `state.line` - // - update `state.tokens` - // - return true - - for (i = 0; i < len; i++) { - ok = rules[i](state, line, endLine, false); - if (ok) { - break; - } - } - - // set state.tight iff we had an empty line before current tag - // i.e. latest empty line should not count - state.tight = !hasEmptyLines; - - // paragraph might "eat" one newline after it in nested lists - if (state.isEmpty(state.line - 1)) { - hasEmptyLines = true; - } - - line = state.line; - - if (line < endLine && state.isEmpty(line)) { - hasEmptyLines = true; - line++; - - // two empty lines should stop the parser in list mode - if (line < endLine && state.parentType === 'list' && state.isEmpty(line)) { break; } - state.line = line; - } - } -}; - -var TABS_SCAN_RE = /[\n\t]/g; -var NEWLINES_RE = /\r[\n\u0085]|[\u2424\u2028\u0085]/g; -var SPACES_RE = /\u00a0/g; - -/** - * Tokenize the given `str`. - * - * @param {String} `str` Source string - * @param {Object} `options` - * @param {Object} `env` - * @param {Array} `outTokens` - * @api private - */ - -ParserBlock.prototype.parse = function (str, options, env, outTokens) { - var state, lineStart = 0, lastTabPos = 0; - if (!str) { return []; } - - // Normalize spaces - str = str.replace(SPACES_RE, ' '); - - // Normalize newlines - str = str.replace(NEWLINES_RE, '\n'); - - // Replace tabs with proper number of spaces (1..4) - if (str.indexOf('\t') >= 0) { - str = str.replace(TABS_SCAN_RE, function (match, offset) { - var result; - if (str.charCodeAt(offset) === 0x0A) { - lineStart = offset + 1; - lastTabPos = 0; - return match; - } - result = ' '.slice((offset - lineStart - lastTabPos) % 4); - lastTabPos = offset - lineStart + 1; - return result; - }); - } - - state = new StateBlock(str, this, options, env, outTokens); - this.tokenize(state, state.line, state.lineMax); -}; - -/** - * Expose `ParserBlock` - */ - -module.exports = ParserBlock; - -},{"./ruler":19,"./rules_block/blockquote":21,"./rules_block/code":22,"./rules_block/deflist":23,"./rules_block/fences":24,"./rules_block/footnote":25,"./rules_block/heading":26,"./rules_block/hr":27,"./rules_block/htmlblock":28,"./rules_block/lheading":29,"./rules_block/list":30,"./rules_block/paragraph":31,"./rules_block/state_block":32,"./rules_block/table":33}],16:[function(require,module,exports){ -'use strict'; - -/** - * Local dependencies - */ - -var Ruler = require('./ruler'); - -/** - * Core parser `rules` - */ - -var _rules = [ - [ 'block', require('./rules_core/block') ], - [ 'abbr', require('./rules_core/abbr') ], - [ 'references', require('./rules_core/references') ], - [ 'inline', require('./rules_core/inline') ], - [ 'footnote_tail', require('./rules_core/footnote_tail') ], - [ 'abbr2', require('./rules_core/abbr2') ], - [ 'replacements', require('./rules_core/replacements') ], - [ 'smartquotes', require('./rules_core/smartquotes') ], - [ 'linkify', require('./rules_core/linkify') ] -]; - -/** - * Class for top level (`core`) parser rules - * - * @api private - */ - -function Core() { - this.options = {}; - this.ruler = new Ruler(); - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1]); - } -} - -/** - * Process rules with the given `state` - * - * @param {Object} `state` - * @api private - */ - -Core.prototype.process = function (state) { - var i, l, rules; - rules = this.ruler.getRules(''); - for (i = 0, l = rules.length; i < l; i++) { - rules[i](state); - } -}; - -/** - * Expose `Core` - */ - -module.exports = Core; - -},{"./ruler":19,"./rules_core/abbr":34,"./rules_core/abbr2":35,"./rules_core/block":36,"./rules_core/footnote_tail":37,"./rules_core/inline":38,"./rules_core/linkify":39,"./rules_core/references":40,"./rules_core/replacements":41,"./rules_core/smartquotes":42}],17:[function(require,module,exports){ -'use strict'; - -/** - * Local dependencies - */ - -var Ruler = require('./ruler'); -var StateInline = require('./rules_inline/state_inline'); -var utils = require('./common/utils'); - -/** - * Inline Parser `rules` - */ - -var _rules = [ - [ 'text', require('./rules_inline/text') ], - [ 'newline', require('./rules_inline/newline') ], - [ 'escape', require('./rules_inline/escape') ], - [ 'backticks', require('./rules_inline/backticks') ], - [ 'del', require('./rules_inline/del') ], - [ 'ins', require('./rules_inline/ins') ], - [ 'mark', require('./rules_inline/mark') ], - [ 'emphasis', require('./rules_inline/emphasis') ], - [ 'sub', require('./rules_inline/sub') ], - [ 'sup', require('./rules_inline/sup') ], - [ 'links', require('./rules_inline/links') ], - [ 'footnote_inline', require('./rules_inline/footnote_inline') ], - [ 'footnote_ref', require('./rules_inline/footnote_ref') ], - [ 'autolink', require('./rules_inline/autolink') ], - [ 'htmltag', require('./rules_inline/htmltag') ], - [ 'entity', require('./rules_inline/entity') ] -]; - -/** - * Inline Parser class. Note that link validation is stricter - * in Remarkable than what is specified by CommonMark. If you - * want to change this you can use a custom validator. - * - * @api private - */ - -function ParserInline() { - this.ruler = new Ruler(); - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1]); - } - - // Can be overridden with a custom validator - this.validateLink = validateLink; -} - -/** - * Skip a single token by running all rules in validation mode. - * Returns `true` if any rule reports success. - * - * @param {Object} `state` - * @api privage - */ - -ParserInline.prototype.skipToken = function (state) { - var rules = this.ruler.getRules(''); - var len = rules.length; - var pos = state.pos; - var i, cached_pos; - - if ((cached_pos = state.cacheGet(pos)) > 0) { - state.pos = cached_pos; - return; - } - - for (i = 0; i < len; i++) { - if (rules[i](state, true)) { - state.cacheSet(pos, state.pos); - return; - } - } - - state.pos++; - state.cacheSet(pos, state.pos); -}; - -/** - * Generate tokens for the given input range. - * - * @param {Object} `state` - * @api private - */ - -ParserInline.prototype.tokenize = function (state) { - var rules = this.ruler.getRules(''); - var len = rules.length; - var end = state.posMax; - var ok, i; - - while (state.pos < end) { - - // Try all possible rules. - // On success, the rule should: - // - // - update `state.pos` - // - update `state.tokens` - // - return true - for (i = 0; i < len; i++) { - ok = rules[i](state, false); - - if (ok) { - break; - } - } - - if (ok) { - if (state.pos >= end) { break; } - continue; - } - - state.pending += state.src[state.pos++]; - } - - if (state.pending) { - state.pushPending(); - } -}; - -/** - * Parse the given input string. - * - * @param {String} `str` - * @param {Object} `options` - * @param {Object} `env` - * @param {Array} `outTokens` - * @api private - */ - -ParserInline.prototype.parse = function (str, options, env, outTokens) { - var state = new StateInline(str, this, options, env, outTokens); - this.tokenize(state); -}; - -/** - * Validate the given `url` by checking for bad protocols. - * - * @param {String} `url` - * @return {Boolean} - */ - -function validateLink(url) { - var BAD_PROTOCOLS = [ 'vbscript', 'javascript', 'file', 'data' ]; - var str = url.trim().toLowerCase(); - // Care about digital entities "javascript:alert(1)" - str = utils.replaceEntities(str); - if (str.indexOf(':') !== -1 && BAD_PROTOCOLS.indexOf(str.split(':')[0]) !== -1) { - return false; - } - return true; -} - -/** - * Expose `ParserInline` - */ - -module.exports = ParserInline; - -},{"./common/utils":5,"./ruler":19,"./rules_inline/autolink":43,"./rules_inline/backticks":44,"./rules_inline/del":45,"./rules_inline/emphasis":46,"./rules_inline/entity":47,"./rules_inline/escape":48,"./rules_inline/footnote_inline":49,"./rules_inline/footnote_ref":50,"./rules_inline/htmltag":51,"./rules_inline/ins":52,"./rules_inline/links":53,"./rules_inline/mark":54,"./rules_inline/newline":55,"./rules_inline/state_inline":56,"./rules_inline/sub":57,"./rules_inline/sup":58,"./rules_inline/text":59}],18:[function(require,module,exports){ -'use strict'; - -/** - * Local dependencies - */ - -var utils = require('./common/utils'); -var rules = require('./rules'); - -/** - * Expose `Renderer` - */ - -module.exports = Renderer; - -/** - * Renderer class. Renders HTML and exposes `rules` to allow - * local modifications. - */ - -function Renderer() { - this.rules = utils.assign({}, rules); - - // exported helper, for custom rules only - this.getBreak = rules.getBreak; -} - -/** - * Render a string of inline HTML with the given `tokens` and - * `options`. - * - * @param {Array} `tokens` - * @param {Object} `options` - * @param {Object} `env` - * @return {String} - * @api public - */ - -Renderer.prototype.renderInline = function (tokens, options, env) { - var _rules = this.rules; - var len = tokens.length, i = 0; - var result = ''; - - while (len--) { - result += _rules[tokens[i].type](tokens, i++, options, env, this); - } - - return result; -}; - -/** - * Render a string of HTML with the given `tokens` and - * `options`. - * - * @param {Array} `tokens` - * @param {Object} `options` - * @param {Object} `env` - * @return {String} - * @api public - */ - -Renderer.prototype.render = function (tokens, options, env) { - var _rules = this.rules; - var len = tokens.length, i = -1; - var result = ''; - - while (++i < len) { - if (tokens[i].type === 'inline') { - result += this.renderInline(tokens[i].children, options, env); - } else { - result += _rules[tokens[i].type](tokens, i, options, env, this); - } - } - return result; -}; - -},{"./common/utils":5,"./rules":20}],19:[function(require,module,exports){ -'use strict'; - -/** - * Ruler is a helper class for building responsibility chains from - * parse rules. It allows: - * - * - easy stack rules chains - * - getting main chain and named chains content (as arrays of functions) - * - * Helper methods, should not be used directly. - * @api private - */ - -function Ruler() { - // List of added rules. Each element is: - // - // { name: XXX, - // enabled: Boolean, - // fn: Function(), - // alt: [ name2, name3 ] } - // - this.__rules__ = []; - - // Cached rule chains. - // - // First level - chain name, '' for default. - // Second level - digital anchor for fast filtering by charcodes. - // - this.__cache__ = null; -} - -/** - * Find the index of a rule by `name`. - * - * @param {String} `name` - * @return {Number} Index of the given `name` - * @api private - */ - -Ruler.prototype.__find__ = function (name) { - var len = this.__rules__.length; - var i = -1; - - while (len--) { - if (this.__rules__[++i].name === name) { - return i; - } - } - return -1; -}; - -/** - * Build the rules lookup cache - * - * @api private - */ - -Ruler.prototype.__compile__ = function () { - var self = this; - var chains = [ '' ]; - - // collect unique names - self.__rules__.forEach(function (rule) { - if (!rule.enabled) { - return; - } - - rule.alt.forEach(function (altName) { - if (chains.indexOf(altName) < 0) { - chains.push(altName); - } - }); - }); - - self.__cache__ = {}; - - chains.forEach(function (chain) { - self.__cache__[chain] = []; - self.__rules__.forEach(function (rule) { - if (!rule.enabled) { - return; - } - - if (chain && rule.alt.indexOf(chain) < 0) { - return; - } - self.__cache__[chain].push(rule.fn); - }); - }); -}; - -/** - * Ruler public methods - * ------------------------------------------------ - */ - -/** - * Replace rule function - * - * @param {String} `name` Rule name - * @param {Function `fn` - * @param {Object} `options` - * @api private - */ - -Ruler.prototype.at = function (name, fn, options) { - var idx = this.__find__(name); - var opt = options || {}; - - if (idx === -1) { - throw new Error('Parser rule not found: ' + name); - } - - this.__rules__[idx].fn = fn; - this.__rules__[idx].alt = opt.alt || []; - this.__cache__ = null; -}; - -/** - * Add a rule to the chain before given the `ruleName`. - * - * @param {String} `beforeName` - * @param {String} `ruleName` - * @param {Function} `fn` - * @param {Object} `options` - * @api private - */ - -Ruler.prototype.before = function (beforeName, ruleName, fn, options) { - var idx = this.__find__(beforeName); - var opt = options || {}; - - if (idx === -1) { - throw new Error('Parser rule not found: ' + beforeName); - } - - this.__rules__.splice(idx, 0, { - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Add a rule to the chain after the given `ruleName`. - * - * @param {String} `afterName` - * @param {String} `ruleName` - * @param {Function} `fn` - * @param {Object} `options` - * @api private - */ - -Ruler.prototype.after = function (afterName, ruleName, fn, options) { - var idx = this.__find__(afterName); - var opt = options || {}; - - if (idx === -1) { - throw new Error('Parser rule not found: ' + afterName); - } - - this.__rules__.splice(idx + 1, 0, { - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Add a rule to the end of chain. - * - * @param {String} `ruleName` - * @param {Function} `fn` - * @param {Object} `options` - * @return {String} - */ - -Ruler.prototype.push = function (ruleName, fn, options) { - var opt = options || {}; - - this.__rules__.push({ - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Enable a rule or list of rules. - * - * @param {String|Array} `list` Name or array of rule names to enable - * @param {Boolean} `strict` If `true`, all non listed rules will be disabled. - * @api private - */ - -Ruler.prototype.enable = function (list, strict) { - list = !Array.isArray(list) - ? [ list ] - : list; - - // In strict mode disable all existing rules first - if (strict) { - this.__rules__.forEach(function (rule) { - rule.enabled = false; - }); - } - - // Search by name and enable - list.forEach(function (name) { - var idx = this.__find__(name); - if (idx < 0) { - throw new Error('Rules manager: invalid rule name ' + name); - } - this.__rules__[idx].enabled = true; - }, this); - - this.__cache__ = null; -}; - - -/** - * Disable a rule or list of rules. - * - * @param {String|Array} `list` Name or array of rule names to disable - * @api private - */ - -Ruler.prototype.disable = function (list) { - list = !Array.isArray(list) - ? [ list ] - : list; - - // Search by name and disable - list.forEach(function (name) { - var idx = this.__find__(name); - if (idx < 0) { - throw new Error('Rules manager: invalid rule name ' + name); - } - this.__rules__[idx].enabled = false; - }, this); - - this.__cache__ = null; -}; - -/** - * Get a rules list as an array of functions. - * - * @param {String} `chainName` - * @return {Object} - * @api private - */ - -Ruler.prototype.getRules = function (chainName) { - if (this.__cache__ === null) { - this.__compile__(); - } - return this.__cache__[chainName] || []; -}; - -/** - * Expose `Ruler` - */ - -module.exports = Ruler; - -},{}],20:[function(require,module,exports){ -'use strict'; - -/** - * Local dependencies - */ - -var has = require('./common/utils').has; -var unescapeMd = require('./common/utils').unescapeMd; -var replaceEntities = require('./common/utils').replaceEntities; -var escapeHtml = require('./common/utils').escapeHtml; - -/** - * Renderer rules cache - */ - -var rules = {}; - -/** - * Blockquotes - */ - -rules.blockquote_open = function(/* tokens, idx, options, env */) { - return '
          \n'; -}; - -rules.blockquote_close = function(tokens, idx /*, options, env */) { - return '
          ' + getBreak(tokens, idx); -}; - -/** - * Code - */ - -rules.code = function(tokens, idx /*, options, env */) { - if (tokens[idx].block) { - return '
          ' + escapeHtml(tokens[idx].content) + '
          ' + getBreak(tokens, idx); - } - return '' + escapeHtml(tokens[idx].content) + ''; -}; - -/** - * Fenced code blocks - */ - -rules.fence = function(tokens, idx, options, env, instance) { - var token = tokens[idx]; - var langClass = ''; - var langPrefix = options.langPrefix; - var langName = '', fences, fenceName; - var highlighted; - - if (token.params) { - - // - // ```foo bar - // - // Try custom renderer "foo" first. That will simplify overwrite - // for diagrams, latex, and any other fenced block with custom look - // - - fences = token.params.split(/\s+/g); - fenceName = fences.join(' '); - - if (has(instance.rules.fence_custom, fences[0])) { - return instance.rules.fence_custom[fences[0]](tokens, idx, options, env, instance); - } - - langName = escapeHtml(replaceEntities(unescapeMd(fenceName))); - langClass = ' class="' + langPrefix + langName + '"'; - } - - if (options.highlight) { - highlighted = options.highlight.apply(options.highlight, [ token.content ].concat(fences)) - || escapeHtml(token.content); - } else { - highlighted = escapeHtml(token.content); - } - - return '
          '
          -        + highlighted
          -        + '
          ' - + getBreak(tokens, idx); -}; - -rules.fence_custom = {}; - -/** - * Headings - */ - -rules.heading_open = function(tokens, idx /*, options, env */) { - return ''; -}; -rules.heading_close = function(tokens, idx /*, options, env */) { - return '\n'; -}; - -/** - * Horizontal rules - */ - -rules.hr = function(tokens, idx, options /*, env */) { - return (options.xhtmlOut ? '
          ' : '
          ') + getBreak(tokens, idx); -}; - -/** - * Bullets - */ - -rules.bullet_list_open = function(/* tokens, idx, options, env */) { - return '
            \n'; -}; -rules.bullet_list_close = function(tokens, idx /*, options, env */) { - return '
          ' + getBreak(tokens, idx); -}; - -/** - * List items - */ - -rules.list_item_open = function(/* tokens, idx, options, env */) { - return '
        1. '; -}; -rules.list_item_close = function(/* tokens, idx, options, env */) { - return '
        2. \n'; -}; - -/** - * Ordered list items - */ - -rules.ordered_list_open = function(tokens, idx /*, options, env */) { - var token = tokens[idx]; - var order = token.order > 1 ? ' start="' + token.order + '"' : ''; - return '\n'; -}; -rules.ordered_list_close = function(tokens, idx /*, options, env */) { - return '' + getBreak(tokens, idx); -}; - -/** - * Paragraphs - */ - -rules.paragraph_open = function(tokens, idx /*, options, env */) { - return tokens[idx].tight ? '' : '

          '; -}; -rules.paragraph_close = function(tokens, idx /*, options, env */) { - var addBreak = !(tokens[idx].tight && idx && tokens[idx - 1].type === 'inline' && !tokens[idx - 1].content); - return (tokens[idx].tight ? '' : '

          ') + (addBreak ? getBreak(tokens, idx) : ''); -}; - -/** - * Links - */ - -rules.link_open = function(tokens, idx, options /* env */) { - var title = tokens[idx].title ? (' title="' + escapeHtml(replaceEntities(tokens[idx].title)) + '"') : ''; - var target = options.linkTarget ? (' target="' + options.linkTarget + '"') : ''; - return ''; -}; -rules.link_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Images - */ - -rules.image = function(tokens, idx, options /*, env */) { - var src = ' src="' + escapeHtml(tokens[idx].src) + '"'; - var title = tokens[idx].title ? (' title="' + escapeHtml(replaceEntities(tokens[idx].title)) + '"') : ''; - var alt = ' alt="' + (tokens[idx].alt ? escapeHtml(replaceEntities(unescapeMd(tokens[idx].alt))) : '') + '"'; - var suffix = options.xhtmlOut ? ' /' : ''; - return ''; -}; - -/** - * Tables - */ - -rules.table_open = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.table_close = function(/* tokens, idx, options, env */) { - return '
          \n'; -}; -rules.thead_open = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.thead_close = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.tbody_open = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.tbody_close = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.tr_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.tr_close = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.th_open = function(tokens, idx /*, options, env */) { - var token = tokens[idx]; - return ''; -}; -rules.th_close = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.td_open = function(tokens, idx /*, options, env */) { - var token = tokens[idx]; - return ''; -}; -rules.td_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Bold - */ - -rules.strong_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.strong_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Italicize - */ - -rules.em_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.em_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Strikethrough - */ - -rules.del_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.del_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Insert - */ - -rules.ins_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.ins_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Highlight - */ - -rules.mark_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.mark_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Super- and sub-script - */ - -rules.sub = function(tokens, idx /*, options, env */) { - return '' + escapeHtml(tokens[idx].content) + ''; -}; -rules.sup = function(tokens, idx /*, options, env */) { - return '' + escapeHtml(tokens[idx].content) + ''; -}; - -/** - * Breaks - */ - -rules.hardbreak = function(tokens, idx, options /*, env */) { - return options.xhtmlOut ? '
          \n' : '
          \n'; -}; -rules.softbreak = function(tokens, idx, options /*, env */) { - return options.breaks ? (options.xhtmlOut ? '
          \n' : '
          \n') : '\n'; -}; - -/** - * Text - */ - -rules.text = function(tokens, idx /*, options, env */) { - return escapeHtml(tokens[idx].content); -}; - -/** - * Content - */ - -rules.htmlblock = function(tokens, idx /*, options, env */) { - return tokens[idx].content; -}; -rules.htmltag = function(tokens, idx /*, options, env */) { - return tokens[idx].content; -}; - -/** - * Abbreviations, initialism - */ - -rules.abbr_open = function(tokens, idx /*, options, env */) { - return ''; -}; -rules.abbr_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Footnotes - */ - -rules.footnote_ref = function(tokens, idx) { - var n = Number(tokens[idx].id + 1).toString(); - var id = 'fnref' + n; - if (tokens[idx].subId > 0) { - id += ':' + tokens[idx].subId; - } - return '[' + n + ']'; -}; -rules.footnote_block_open = function(tokens, idx, options) { - var hr = options.xhtmlOut - ? '
          \n' - : '
          \n'; - return hr + '
          \n
            \n'; -}; -rules.footnote_block_close = function() { - return '
          \n
          \n'; -}; -rules.footnote_open = function(tokens, idx) { - var id = Number(tokens[idx].id + 1).toString(); - return '
        3. '; -}; -rules.footnote_close = function() { - return '
        4. \n'; -}; -rules.footnote_anchor = function(tokens, idx) { - var n = Number(tokens[idx].id + 1).toString(); - var id = 'fnref' + n; - if (tokens[idx].subId > 0) { - id += ':' + tokens[idx].subId; - } - return ' '; -}; - -/** - * Definition lists - */ - -rules.dl_open = function() { - return '
          \n'; -}; -rules.dt_open = function() { - return '
          '; -}; -rules.dd_open = function() { - return '
          '; -}; -rules.dl_close = function() { - return '
          \n'; -}; -rules.dt_close = function() { - return '
          \n'; -}; -rules.dd_close = function() { - return '\n'; -}; - -/** - * Helper functions - */ - -function nextToken(tokens, idx) { - if (++idx >= tokens.length - 2) { - return idx; - } - if ((tokens[idx].type === 'paragraph_open' && tokens[idx].tight) && - (tokens[idx + 1].type === 'inline' && tokens[idx + 1].content.length === 0) && - (tokens[idx + 2].type === 'paragraph_close' && tokens[idx + 2].tight)) { - return nextToken(tokens, idx + 2); - } - return idx; -} - -/** - * Check to see if `\n` is needed before the next token. - * - * @param {Array} `tokens` - * @param {Number} `idx` - * @return {String} Empty string or newline - * @api private - */ - -var getBreak = rules.getBreak = function getBreak(tokens, idx) { - idx = nextToken(tokens, idx); - if (idx < tokens.length && tokens[idx].type === 'list_item_close') { - return ''; - } - return '\n'; -}; - -/** - * Expose `rules` - */ - -module.exports = rules; - -},{"./common/utils":5}],21:[function(require,module,exports){ -// Block quotes - -'use strict'; - - -module.exports = function blockquote(state, startLine, endLine, silent) { - var nextLine, lastLineEmpty, oldTShift, oldBMarks, oldIndent, oldParentType, lines, - terminatorRules, - i, l, terminate, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos > max) { return false; } - - // check the block quote marker - if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; } - - if (state.level >= state.options.maxNesting) { return false; } - - // we know that it's going to be a valid blockquote, - // so no point trying to find the end of it in silent mode - if (silent) { return true; } - - // skip one optional space after '>' - if (state.src.charCodeAt(pos) === 0x20) { pos++; } - - oldIndent = state.blkIndent; - state.blkIndent = 0; - - oldBMarks = [ state.bMarks[startLine] ]; - state.bMarks[startLine] = pos; - - // check if we have an empty blockquote - pos = pos < max ? state.skipSpaces(pos) : pos; - lastLineEmpty = pos >= max; - - oldTShift = [ state.tShift[startLine] ]; - state.tShift[startLine] = pos - state.bMarks[startLine]; - - terminatorRules = state.parser.ruler.getRules('blockquote'); - - // Search the end of the block - // - // Block ends with either: - // 1. an empty line outside: - // ``` - // > test - // - // ``` - // 2. an empty line inside: - // ``` - // > - // test - // ``` - // 3. another tag - // ``` - // > test - // - - - - // ``` - for (nextLine = startLine + 1; nextLine < endLine; nextLine++) { - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (pos >= max) { - // Case 1: line is not inside the blockquote, and this line is empty. - break; - } - - if (state.src.charCodeAt(pos++) === 0x3E/* > */) { - // This line is inside the blockquote. - - // skip one optional space after '>' - if (state.src.charCodeAt(pos) === 0x20) { pos++; } - - oldBMarks.push(state.bMarks[nextLine]); - state.bMarks[nextLine] = pos; - - pos = pos < max ? state.skipSpaces(pos) : pos; - lastLineEmpty = pos >= max; - - oldTShift.push(state.tShift[nextLine]); - state.tShift[nextLine] = pos - state.bMarks[nextLine]; - continue; - } - - // Case 2: line is not inside the blockquote, and the last line was empty. - if (lastLineEmpty) { break; } - - // Case 3: another tag found. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - - oldBMarks.push(state.bMarks[nextLine]); - oldTShift.push(state.tShift[nextLine]); - - // A negative number means that this is a paragraph continuation; - // - // Any negative number will do the job here, but it's better for it - // to be large enough to make any bugs obvious. - state.tShift[nextLine] = -1337; - } - - oldParentType = state.parentType; - state.parentType = 'blockquote'; - state.tokens.push({ - type: 'blockquote_open', - lines: lines = [ startLine, 0 ], - level: state.level++ - }); - state.parser.tokenize(state, startLine, nextLine); - state.tokens.push({ - type: 'blockquote_close', - level: --state.level - }); - state.parentType = oldParentType; - lines[1] = state.line; - - // Restore original tShift; this might not be necessary since the parser - // has already been here, but just to make sure we can do that. - for (i = 0; i < oldTShift.length; i++) { - state.bMarks[i + startLine] = oldBMarks[i]; - state.tShift[i + startLine] = oldTShift[i]; - } - state.blkIndent = oldIndent; - - return true; -}; - -},{}],22:[function(require,module,exports){ -// Code block (4 spaces padded) - -'use strict'; - - -module.exports = function code(state, startLine, endLine/*, silent*/) { - var nextLine, last; - - if (state.tShift[startLine] - state.blkIndent < 4) { return false; } - - last = nextLine = startLine + 1; - - while (nextLine < endLine) { - if (state.isEmpty(nextLine)) { - nextLine++; - continue; - } - if (state.tShift[nextLine] - state.blkIndent >= 4) { - nextLine++; - last = nextLine; - continue; - } - break; - } - - state.line = nextLine; - state.tokens.push({ - type: 'code', - content: state.getLines(startLine, last, 4 + state.blkIndent, true), - block: true, - lines: [ startLine, state.line ], - level: state.level - }); - - return true; -}; - -},{}],23:[function(require,module,exports){ -// Definition lists - -'use strict'; - - -// Search `[:~][\n ]`, returns next pos after marker on success -// or -1 on fail. -function skipMarker(state, line) { - var pos, marker, - start = state.bMarks[line] + state.tShift[line], - max = state.eMarks[line]; - - if (start >= max) { return -1; } - - // Check bullet - marker = state.src.charCodeAt(start++); - if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1; } - - pos = state.skipSpaces(start); - - // require space after ":" - if (start === pos) { return -1; } - - // no empty definitions, e.g. " : " - if (pos >= max) { return -1; } - - return pos; -} - -function markTightParagraphs(state, idx) { - var i, l, - level = state.level + 2; - - for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) { - if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { - state.tokens[i + 2].tight = true; - state.tokens[i].tight = true; - i += 2; - } - } -} - -module.exports = function deflist(state, startLine, endLine, silent) { - var contentStart, - ddLine, - dtLine, - itemLines, - listLines, - listTokIdx, - nextLine, - oldIndent, - oldDDIndent, - oldParentType, - oldTShift, - oldTight, - prevEmptyEnd, - tight; - - if (silent) { - // quirk: validation mode validates a dd block only, not a whole deflist - if (state.ddIndent < 0) { return false; } - return skipMarker(state, startLine) >= 0; - } - - nextLine = startLine + 1; - if (state.isEmpty(nextLine)) { - if (++nextLine > endLine) { return false; } - } - - if (state.tShift[nextLine] < state.blkIndent) { return false; } - contentStart = skipMarker(state, nextLine); - if (contentStart < 0) { return false; } - - if (state.level >= state.options.maxNesting) { return false; } - - // Start list - listTokIdx = state.tokens.length; - - state.tokens.push({ - type: 'dl_open', - lines: listLines = [ startLine, 0 ], - level: state.level++ - }); - - // - // Iterate list items - // - - dtLine = startLine; - ddLine = nextLine; - - // One definition list can contain multiple DTs, - // and one DT can be followed by multiple DDs. - // - // Thus, there is two loops here, and label is - // needed to break out of the second one - // - /*eslint no-labels:0,block-scoped-var:0*/ - OUTER: - for (;;) { - tight = true; - prevEmptyEnd = false; - - state.tokens.push({ - type: 'dt_open', - lines: [ dtLine, dtLine ], - level: state.level++ - }); - state.tokens.push({ - type: 'inline', - content: state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim(), - level: state.level + 1, - lines: [ dtLine, dtLine ], - children: [] - }); - state.tokens.push({ - type: 'dt_close', - level: --state.level - }); - - for (;;) { - state.tokens.push({ - type: 'dd_open', - lines: itemLines = [ nextLine, 0 ], - level: state.level++ - }); - - oldTight = state.tight; - oldDDIndent = state.ddIndent; - oldIndent = state.blkIndent; - oldTShift = state.tShift[ddLine]; - oldParentType = state.parentType; - state.blkIndent = state.ddIndent = state.tShift[ddLine] + 2; - state.tShift[ddLine] = contentStart - state.bMarks[ddLine]; - state.tight = true; - state.parentType = 'deflist'; - - state.parser.tokenize(state, ddLine, endLine, true); - - // If any of list item is tight, mark list as tight - if (!state.tight || prevEmptyEnd) { - tight = false; - } - // Item become loose if finish with empty line, - // but we should filter last element, because it means list finish - prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1); - - state.tShift[ddLine] = oldTShift; - state.tight = oldTight; - state.parentType = oldParentType; - state.blkIndent = oldIndent; - state.ddIndent = oldDDIndent; - - state.tokens.push({ - type: 'dd_close', - level: --state.level - }); - - itemLines[1] = nextLine = state.line; - - if (nextLine >= endLine) { break OUTER; } - - if (state.tShift[nextLine] < state.blkIndent) { break OUTER; } - contentStart = skipMarker(state, nextLine); - if (contentStart < 0) { break; } - - ddLine = nextLine; - - // go to the next loop iteration: - // insert DD tag and repeat checking - } - - if (nextLine >= endLine) { break; } - dtLine = nextLine; - - if (state.isEmpty(dtLine)) { break; } - if (state.tShift[dtLine] < state.blkIndent) { break; } - - ddLine = dtLine + 1; - if (ddLine >= endLine) { break; } - if (state.isEmpty(ddLine)) { ddLine++; } - if (ddLine >= endLine) { break; } - - if (state.tShift[ddLine] < state.blkIndent) { break; } - contentStart = skipMarker(state, ddLine); - if (contentStart < 0) { break; } - - // go to the next loop iteration: - // insert DT and DD tags and repeat checking - } - - // Finilize list - state.tokens.push({ - type: 'dl_close', - level: --state.level - }); - listLines[1] = nextLine; - - state.line = nextLine; - - // mark paragraphs tight if needed - if (tight) { - markTightParagraphs(state, listTokIdx); - } - - return true; -}; - -},{}],24:[function(require,module,exports){ -// fences (``` lang, ~~~ lang) - -'use strict'; - - -module.exports = function fences(state, startLine, endLine, silent) { - var marker, len, params, nextLine, mem, - haveEndMarker = false, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos + 3 > max) { return false; } - - marker = state.src.charCodeAt(pos); - - if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) { - return false; - } - - // scan marker length - mem = pos; - pos = state.skipChars(pos, marker); - - len = pos - mem; - - if (len < 3) { return false; } - - params = state.src.slice(pos, max).trim(); - - if (params.indexOf('`') >= 0) { return false; } - - // Since start is found, we can report success here in validation mode - if (silent) { return true; } - - // search end of block - nextLine = startLine; - - for (;;) { - nextLine++; - if (nextLine >= endLine) { - // unclosed block should be autoclosed by end of document. - // also block seems to be autoclosed by end of parent - break; - } - - pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (pos < max && state.tShift[nextLine] < state.blkIndent) { - // non-empty line with negative indent should stop the list: - // - ``` - // test - break; - } - - if (state.src.charCodeAt(pos) !== marker) { continue; } - - if (state.tShift[nextLine] - state.blkIndent >= 4) { - // closing fence should be indented less than 4 spaces - continue; - } - - pos = state.skipChars(pos, marker); - - // closing code fence must be at least as long as the opening one - if (pos - mem < len) { continue; } - - // make sure tail has spaces only - pos = state.skipSpaces(pos); - - if (pos < max) { continue; } - - haveEndMarker = true; - // found! - break; - } - - // If a fence has heading spaces, they should be removed from its inner block - len = state.tShift[startLine]; - - state.line = nextLine + (haveEndMarker ? 1 : 0); - state.tokens.push({ - type: 'fence', - params: params, - content: state.getLines(startLine + 1, nextLine, len, true), - lines: [ startLine, state.line ], - level: state.level - }); - - return true; -}; - -},{}],25:[function(require,module,exports){ -// Process footnote reference list - -'use strict'; - - -module.exports = function footnote(state, startLine, endLine, silent) { - var oldBMark, oldTShift, oldParentType, pos, label, - start = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - // line should be at least 5 chars - "[^x]:" - if (start + 4 > max) { return false; } - - if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - for (pos = start + 2; pos < max; pos++) { - if (state.src.charCodeAt(pos) === 0x20) { return false; } - if (state.src.charCodeAt(pos) === 0x5D /* ] */) { - break; - } - } - - if (pos === start + 2) { return false; } // no empty footnote labels - if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) { return false; } - if (silent) { return true; } - pos++; - - if (!state.env.footnotes) { state.env.footnotes = {}; } - if (!state.env.footnotes.refs) { state.env.footnotes.refs = {}; } - label = state.src.slice(start + 2, pos - 2); - state.env.footnotes.refs[':' + label] = -1; - - state.tokens.push({ - type: 'footnote_reference_open', - label: label, - level: state.level++ - }); - - oldBMark = state.bMarks[startLine]; - oldTShift = state.tShift[startLine]; - oldParentType = state.parentType; - state.tShift[startLine] = state.skipSpaces(pos) - pos; - state.bMarks[startLine] = pos; - state.blkIndent += 4; - state.parentType = 'footnote'; - - if (state.tShift[startLine] < state.blkIndent) { - state.tShift[startLine] += state.blkIndent; - state.bMarks[startLine] -= state.blkIndent; - } - - state.parser.tokenize(state, startLine, endLine, true); - - state.parentType = oldParentType; - state.blkIndent -= 4; - state.tShift[startLine] = oldTShift; - state.bMarks[startLine] = oldBMark; - - state.tokens.push({ - type: 'footnote_reference_close', - level: --state.level - }); - - return true; -}; - -},{}],26:[function(require,module,exports){ -// heading (#, ##, ...) - -'use strict'; - - -module.exports = function heading(state, startLine, endLine, silent) { - var ch, level, tmp, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos >= max) { return false; } - - ch = state.src.charCodeAt(pos); - - if (ch !== 0x23/* # */ || pos >= max) { return false; } - - // count heading level - level = 1; - ch = state.src.charCodeAt(++pos); - while (ch === 0x23/* # */ && pos < max && level <= 6) { - level++; - ch = state.src.charCodeAt(++pos); - } - - if (level > 6 || (pos < max && ch !== 0x20/* space */)) { return false; } - - if (silent) { return true; } - - // Let's cut tails like ' ### ' from the end of string - - max = state.skipCharsBack(max, 0x20, pos); // space - tmp = state.skipCharsBack(max, 0x23, pos); // # - if (tmp > pos && state.src.charCodeAt(tmp - 1) === 0x20/* space */) { - max = tmp; - } - - state.line = startLine + 1; - - state.tokens.push({ type: 'heading_open', - hLevel: level, - lines: [ startLine, state.line ], - level: state.level - }); - - // only if header is not empty - if (pos < max) { - state.tokens.push({ - type: 'inline', - content: state.src.slice(pos, max).trim(), - level: state.level + 1, - lines: [ startLine, state.line ], - children: [] - }); - } - state.tokens.push({ type: 'heading_close', hLevel: level, level: state.level }); - - return true; -}; - -},{}],27:[function(require,module,exports){ -// Horizontal rule - -'use strict'; - - -module.exports = function hr(state, startLine, endLine, silent) { - var marker, cnt, ch, - pos = state.bMarks[startLine], - max = state.eMarks[startLine]; - - pos += state.tShift[startLine]; - - if (pos > max) { return false; } - - marker = state.src.charCodeAt(pos++); - - // Check hr marker - if (marker !== 0x2A/* * */ && - marker !== 0x2D/* - */ && - marker !== 0x5F/* _ */) { - return false; - } - - // markers can be mixed with spaces, but there should be at least 3 one - - cnt = 1; - while (pos < max) { - ch = state.src.charCodeAt(pos++); - if (ch !== marker && ch !== 0x20/* space */) { return false; } - if (ch === marker) { cnt++; } - } - - if (cnt < 3) { return false; } - - if (silent) { return true; } - - state.line = startLine + 1; - state.tokens.push({ - type: 'hr', - lines: [ startLine, state.line ], - level: state.level - }); - - return true; -}; - -},{}],28:[function(require,module,exports){ -// HTML block - -'use strict'; - - -var block_names = require('../common/html_blocks'); - - -var HTML_TAG_OPEN_RE = /^<([a-zA-Z]{1,15})[\s\/>]/; -var HTML_TAG_CLOSE_RE = /^<\/([a-zA-Z]{1,15})[\s>]/; - -function isLetter(ch) { - /*eslint no-bitwise:0*/ - var lc = ch | 0x20; // to lower case - return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); -} - -module.exports = function htmlblock(state, startLine, endLine, silent) { - var ch, match, nextLine, - pos = state.bMarks[startLine], - max = state.eMarks[startLine], - shift = state.tShift[startLine]; - - pos += shift; - - if (!state.options.html) { return false; } - - if (shift > 3 || pos + 2 >= max) { return false; } - - if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } - - ch = state.src.charCodeAt(pos + 1); - - if (ch === 0x21/* ! */ || ch === 0x3F/* ? */) { - // Directive start / comment start / processing instruction start - if (silent) { return true; } - - } else if (ch === 0x2F/* / */ || isLetter(ch)) { - - // Probably start or end of tag - if (ch === 0x2F/* \ */) { - // closing tag - match = state.src.slice(pos, max).match(HTML_TAG_CLOSE_RE); - if (!match) { return false; } - } else { - // opening tag - match = state.src.slice(pos, max).match(HTML_TAG_OPEN_RE); - if (!match) { return false; } - } - // Make sure tag name is valid - if (block_names[match[1].toLowerCase()] !== true) { return false; } - if (silent) { return true; } - - } else { - return false; - } - - // If we are here - we detected HTML block. - // Let's roll down till empty line (block end). - nextLine = startLine + 1; - while (nextLine < state.lineMax && !state.isEmpty(nextLine)) { - nextLine++; - } - - state.line = nextLine; - state.tokens.push({ - type: 'htmlblock', - level: state.level, - lines: [ startLine, state.line ], - content: state.getLines(startLine, nextLine, 0, true) - }); - - return true; -}; - -},{"../common/html_blocks":2}],29:[function(require,module,exports){ -// lheading (---, ===) - -'use strict'; - - -module.exports = function lheading(state, startLine, endLine/*, silent*/) { - var marker, pos, max, - next = startLine + 1; - - if (next >= endLine) { return false; } - if (state.tShift[next] < state.blkIndent) { return false; } - - // Scan next line - - if (state.tShift[next] - state.blkIndent > 3) { return false; } - - pos = state.bMarks[next] + state.tShift[next]; - max = state.eMarks[next]; - - if (pos >= max) { return false; } - - marker = state.src.charCodeAt(pos); - - if (marker !== 0x2D/* - */ && marker !== 0x3D/* = */) { return false; } - - pos = state.skipChars(pos, marker); - - pos = state.skipSpaces(pos); - - if (pos < max) { return false; } - - pos = state.bMarks[startLine] + state.tShift[startLine]; - - state.line = next + 1; - state.tokens.push({ - type: 'heading_open', - hLevel: marker === 0x3D/* = */ ? 1 : 2, - lines: [ startLine, state.line ], - level: state.level - }); - state.tokens.push({ - type: 'inline', - content: state.src.slice(pos, state.eMarks[startLine]).trim(), - level: state.level + 1, - lines: [ startLine, state.line - 1 ], - children: [] - }); - state.tokens.push({ - type: 'heading_close', - hLevel: marker === 0x3D/* = */ ? 1 : 2, - level: state.level - }); - - return true; -}; - -},{}],30:[function(require,module,exports){ -// Lists - -'use strict'; - - -// Search `[-+*][\n ]`, returns next pos arter marker on success -// or -1 on fail. -function skipBulletListMarker(state, startLine) { - var marker, pos, max; - - pos = state.bMarks[startLine] + state.tShift[startLine]; - max = state.eMarks[startLine]; - - if (pos >= max) { return -1; } - - marker = state.src.charCodeAt(pos++); - // Check bullet - if (marker !== 0x2A/* * */ && - marker !== 0x2D/* - */ && - marker !== 0x2B/* + */) { - return -1; - } - - if (pos < max && state.src.charCodeAt(pos) !== 0x20) { - // " 1.test " - is not a list item - return -1; - } - - return pos; -} - -// Search `\d+[.)][\n ]`, returns next pos arter marker on success -// or -1 on fail. -function skipOrderedListMarker(state, startLine) { - var ch, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos + 1 >= max) { return -1; } - - ch = state.src.charCodeAt(pos++); - - if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; } - - for (;;) { - // EOL -> fail - if (pos >= max) { return -1; } - - ch = state.src.charCodeAt(pos++); - - if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) { - continue; - } - - // found valid marker - if (ch === 0x29/* ) */ || ch === 0x2e/* . */) { - break; - } - - return -1; - } - - - if (pos < max && state.src.charCodeAt(pos) !== 0x20/* space */) { - // " 1.test " - is not a list item - return -1; - } - return pos; -} - -function markTightParagraphs(state, idx) { - var i, l, - level = state.level + 2; - - for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) { - if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { - state.tokens[i + 2].tight = true; - state.tokens[i].tight = true; - i += 2; - } - } -} - - -module.exports = function list(state, startLine, endLine, silent) { - var nextLine, - indent, - oldTShift, - oldIndent, - oldTight, - oldParentType, - start, - posAfterMarker, - max, - indentAfterMarker, - markerValue, - markerCharCode, - isOrdered, - contentStart, - listTokIdx, - prevEmptyEnd, - listLines, - itemLines, - tight = true, - terminatorRules, - i, l, terminate; - - // Detect list type and position after marker - if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) { - isOrdered = true; - } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) { - isOrdered = false; - } else { - return false; - } - - if (state.level >= state.options.maxNesting) { return false; } - - // We should terminate list on style change. Remember first one to compare. - markerCharCode = state.src.charCodeAt(posAfterMarker - 1); - - // For validation mode we can terminate immediately - if (silent) { return true; } - - // Start list - listTokIdx = state.tokens.length; - - if (isOrdered) { - start = state.bMarks[startLine] + state.tShift[startLine]; - markerValue = Number(state.src.substr(start, posAfterMarker - start - 1)); - - state.tokens.push({ - type: 'ordered_list_open', - order: markerValue, - lines: listLines = [ startLine, 0 ], - level: state.level++ - }); - - } else { - state.tokens.push({ - type: 'bullet_list_open', - lines: listLines = [ startLine, 0 ], - level: state.level++ - }); - } - - // - // Iterate list items - // - - nextLine = startLine; - prevEmptyEnd = false; - terminatorRules = state.parser.ruler.getRules('list'); - - while (nextLine < endLine) { - contentStart = state.skipSpaces(posAfterMarker); - max = state.eMarks[nextLine]; - - if (contentStart >= max) { - // trimming space in "- \n 3" case, indent is 1 here - indentAfterMarker = 1; - } else { - indentAfterMarker = contentStart - posAfterMarker; - } - - // If we have more than 4 spaces, the indent is 1 - // (the rest is just indented code block) - if (indentAfterMarker > 4) { indentAfterMarker = 1; } - - // If indent is less than 1, assume that it's one, example: - // "-\n test" - if (indentAfterMarker < 1) { indentAfterMarker = 1; } - - // " - test" - // ^^^^^ - calculating total length of this thing - indent = (posAfterMarker - state.bMarks[nextLine]) + indentAfterMarker; - - // Run subparser & write tokens - state.tokens.push({ - type: 'list_item_open', - lines: itemLines = [ startLine, 0 ], - level: state.level++ - }); - - oldIndent = state.blkIndent; - oldTight = state.tight; - oldTShift = state.tShift[startLine]; - oldParentType = state.parentType; - state.tShift[startLine] = contentStart - state.bMarks[startLine]; - state.blkIndent = indent; - state.tight = true; - state.parentType = 'list'; - - state.parser.tokenize(state, startLine, endLine, true); - - // If any of list item is tight, mark list as tight - if (!state.tight || prevEmptyEnd) { - tight = false; - } - // Item become loose if finish with empty line, - // but we should filter last element, because it means list finish - prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1); - - state.blkIndent = oldIndent; - state.tShift[startLine] = oldTShift; - state.tight = oldTight; - state.parentType = oldParentType; - - state.tokens.push({ - type: 'list_item_close', - level: --state.level - }); - - nextLine = startLine = state.line; - itemLines[1] = nextLine; - contentStart = state.bMarks[startLine]; - - if (nextLine >= endLine) { break; } - - if (state.isEmpty(nextLine)) { - break; - } - - // - // Try to check if list is terminated or continued. - // - if (state.tShift[nextLine] < state.blkIndent) { break; } - - // fail if terminating block found - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - - // fail if list has another type - if (isOrdered) { - posAfterMarker = skipOrderedListMarker(state, nextLine); - if (posAfterMarker < 0) { break; } - } else { - posAfterMarker = skipBulletListMarker(state, nextLine); - if (posAfterMarker < 0) { break; } - } - - if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; } - } - - // Finilize list - state.tokens.push({ - type: isOrdered ? 'ordered_list_close' : 'bullet_list_close', - level: --state.level - }); - listLines[1] = nextLine; - - state.line = nextLine; - - // mark paragraphs tight if needed - if (tight) { - markTightParagraphs(state, listTokIdx); - } - - return true; -}; - -},{}],31:[function(require,module,exports){ -// Paragraph - -'use strict'; - - -module.exports = function paragraph(state, startLine/*, endLine*/) { - var endLine, content, terminate, i, l, - nextLine = startLine + 1, - terminatorRules; - - endLine = state.lineMax; - - // jump line-by-line until empty one or EOF - if (nextLine < endLine && !state.isEmpty(nextLine)) { - terminatorRules = state.parser.ruler.getRules('paragraph'); - - for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { - // this would be a code block normally, but after paragraph - // it's considered a lazy continuation regardless of what's there - if (state.tShift[nextLine] - state.blkIndent > 3) { continue; } - - // Some tags can terminate paragraph without empty line. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - } - } - - content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); - - state.line = nextLine; - if (content.length) { - state.tokens.push({ - type: 'paragraph_open', - tight: false, - lines: [ startLine, state.line ], - level: state.level - }); - state.tokens.push({ - type: 'inline', - content: content, - level: state.level + 1, - lines: [ startLine, state.line ], - children: [] - }); - state.tokens.push({ - type: 'paragraph_close', - tight: false, - level: state.level - }); - } - - return true; -}; - -},{}],32:[function(require,module,exports){ -// Parser state class - -'use strict'; - - -function StateBlock(src, parser, options, env, tokens) { - var ch, s, start, pos, len, indent, indent_found; - - this.src = src; - - // Shortcuts to simplify nested calls - this.parser = parser; - - this.options = options; - - this.env = env; - - // - // Internal state vartiables - // - - this.tokens = tokens; - - this.bMarks = []; // line begin offsets for fast jumps - this.eMarks = []; // line end offsets for fast jumps - this.tShift = []; // indent for each line - - // block parser variables - this.blkIndent = 0; // required block content indent - // (for example, if we are in list) - this.line = 0; // line index in src - this.lineMax = 0; // lines count - this.tight = false; // loose/tight mode for lists - this.parentType = 'root'; // if `list`, block parser stops on two newlines - this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any) - - this.level = 0; - - // renderer - this.result = ''; - - // Create caches - // Generate markers. - s = this.src; - indent = 0; - indent_found = false; - - for (start = pos = indent = 0, len = s.length; pos < len; pos++) { - ch = s.charCodeAt(pos); - - if (!indent_found) { - if (ch === 0x20/* space */) { - indent++; - continue; - } else { - indent_found = true; - } - } - - if (ch === 0x0A || pos === len - 1) { - if (ch !== 0x0A) { pos++; } - this.bMarks.push(start); - this.eMarks.push(pos); - this.tShift.push(indent); - - indent_found = false; - indent = 0; - start = pos + 1; - } - } - - // Push fake entry to simplify cache bounds checks - this.bMarks.push(s.length); - this.eMarks.push(s.length); - this.tShift.push(0); - - this.lineMax = this.bMarks.length - 1; // don't count last fake line -} - -StateBlock.prototype.isEmpty = function isEmpty(line) { - return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]; -}; - -StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) { - for (var max = this.lineMax; from < max; from++) { - if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) { - break; - } - } - return from; -}; - -// Skip spaces from given position. -StateBlock.prototype.skipSpaces = function skipSpaces(pos) { - for (var max = this.src.length; pos < max; pos++) { - if (this.src.charCodeAt(pos) !== 0x20/* space */) { break; } - } - return pos; -}; - -// Skip char codes from given position -StateBlock.prototype.skipChars = function skipChars(pos, code) { - for (var max = this.src.length; pos < max; pos++) { - if (this.src.charCodeAt(pos) !== code) { break; } - } - return pos; -}; - -// Skip char codes reverse from given position - 1 -StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) { - if (pos <= min) { return pos; } - - while (pos > min) { - if (code !== this.src.charCodeAt(--pos)) { return pos + 1; } - } - return pos; -}; - -// cut lines range from source. -StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) { - var i, first, last, queue, shift, - line = begin; - - if (begin >= end) { - return ''; - } - - // Opt: don't use push queue for single line; - if (line + 1 === end) { - first = this.bMarks[line] + Math.min(this.tShift[line], indent); - last = keepLastLF ? this.eMarks[line] + 1 : this.eMarks[line]; - return this.src.slice(first, last); - } - - queue = new Array(end - begin); - - for (i = 0; line < end; line++, i++) { - shift = this.tShift[line]; - if (shift > indent) { shift = indent; } - if (shift < 0) { shift = 0; } - - first = this.bMarks[line] + shift; - - if (line + 1 < end || keepLastLF) { - // No need for bounds check because we have fake entry on tail. - last = this.eMarks[line] + 1; - } else { - last = this.eMarks[line]; - } - - queue[i] = this.src.slice(first, last); - } - - return queue.join(''); -}; - - -module.exports = StateBlock; - -},{}],33:[function(require,module,exports){ -// GFM table, non-standard - -'use strict'; - - -function getLine(state, line) { - var pos = state.bMarks[line] + state.blkIndent, - max = state.eMarks[line]; - - return state.src.substr(pos, max - pos); -} - -module.exports = function table(state, startLine, endLine, silent) { - var ch, lineText, pos, i, nextLine, rows, cell, - aligns, t, tableLines, tbodyLines; - - // should have at least three lines - if (startLine + 2 > endLine) { return false; } - - nextLine = startLine + 1; - - if (state.tShift[nextLine] < state.blkIndent) { return false; } - - // first character of the second line should be '|' or '-' - - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - if (pos >= state.eMarks[nextLine]) { return false; } - - ch = state.src.charCodeAt(pos); - if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */) { return false; } - - lineText = getLine(state, startLine + 1); - if (!/^[-:| ]+$/.test(lineText)) { return false; } - - rows = lineText.split('|'); - if (rows <= 2) { return false; } - aligns = []; - for (i = 0; i < rows.length; i++) { - t = rows[i].trim(); - if (!t) { - // allow empty columns before and after table, but not in between columns; - // e.g. allow ` |---| `, disallow ` ---||--- ` - if (i === 0 || i === rows.length - 1) { - continue; - } else { - return false; - } - } - - if (!/^:?-+:?$/.test(t)) { return false; } - if (t.charCodeAt(t.length - 1) === 0x3A/* : */) { - aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right'); - } else if (t.charCodeAt(0) === 0x3A/* : */) { - aligns.push('left'); - } else { - aligns.push(''); - } - } - - lineText = getLine(state, startLine).trim(); - if (lineText.indexOf('|') === -1) { return false; } - rows = lineText.replace(/^\||\|$/g, '').split('|'); - if (aligns.length !== rows.length) { return false; } - if (silent) { return true; } - - state.tokens.push({ - type: 'table_open', - lines: tableLines = [ startLine, 0 ], - level: state.level++ - }); - state.tokens.push({ - type: 'thead_open', - lines: [ startLine, startLine + 1 ], - level: state.level++ - }); - - state.tokens.push({ - type: 'tr_open', - lines: [ startLine, startLine + 1 ], - level: state.level++ - }); - for (i = 0; i < rows.length; i++) { - state.tokens.push({ - type: 'th_open', - align: aligns[i], - lines: [ startLine, startLine + 1 ], - level: state.level++ - }); - state.tokens.push({ - type: 'inline', - content: rows[i].trim(), - lines: [ startLine, startLine + 1 ], - level: state.level, - children: [] - }); - state.tokens.push({ type: 'th_close', level: --state.level }); - } - state.tokens.push({ type: 'tr_close', level: --state.level }); - state.tokens.push({ type: 'thead_close', level: --state.level }); - - state.tokens.push({ - type: 'tbody_open', - lines: tbodyLines = [ startLine + 2, 0 ], - level: state.level++ - }); - - for (nextLine = startLine + 2; nextLine < endLine; nextLine++) { - if (state.tShift[nextLine] < state.blkIndent) { break; } - - lineText = getLine(state, nextLine).trim(); - if (lineText.indexOf('|') === -1) { break; } - rows = lineText.replace(/^\||\|$/g, '').split('|'); - - state.tokens.push({ type: 'tr_open', level: state.level++ }); - for (i = 0; i < rows.length; i++) { - state.tokens.push({ type: 'td_open', align: aligns[i], level: state.level++ }); - // 0x7c === '|' - cell = rows[i].substring( - rows[i].charCodeAt(0) === 0x7c ? 1 : 0, - rows[i].charCodeAt(rows[i].length - 1) === 0x7c ? rows[i].length - 1 : rows[i].length - ).trim(); - state.tokens.push({ - type: 'inline', - content: cell, - level: state.level, - children: [] - }); - state.tokens.push({ type: 'td_close', level: --state.level }); - } - state.tokens.push({ type: 'tr_close', level: --state.level }); - } - state.tokens.push({ type: 'tbody_close', level: --state.level }); - state.tokens.push({ type: 'table_close', level: --state.level }); - - tableLines[1] = tbodyLines[1] = nextLine; - state.line = nextLine; - return true; -}; - -},{}],34:[function(require,module,exports){ -// Parse abbreviation definitions, i.e. `*[abbr]: description` -// - -'use strict'; - - -var StateInline = require('../rules_inline/state_inline'); -var parseLinkLabel = require('../helpers/parse_link_label'); - - -function parseAbbr(str, parserInline, options, env) { - var state, labelEnd, pos, max, label, title; - - if (str.charCodeAt(0) !== 0x2A/* * */) { return -1; } - if (str.charCodeAt(1) !== 0x5B/* [ */) { return -1; } - - if (str.indexOf(']:') === -1) { return -1; } - - state = new StateInline(str, parserInline, options, env, []); - labelEnd = parseLinkLabel(state, 1); - - if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; } - - max = state.posMax; - - // abbr title is always one line, so looking for ending "\n" here - for (pos = labelEnd + 2; pos < max; pos++) { - if (state.src.charCodeAt(pos) === 0x0A) { break; } - } - - label = str.slice(2, labelEnd); - title = str.slice(labelEnd + 2, pos).trim(); - if (title.length === 0) { return -1; } - if (!env.abbreviations) { env.abbreviations = {}; } - // prepend ':' to avoid conflict with Object.prototype members - if (typeof env.abbreviations[':' + label] === 'undefined') { - env.abbreviations[':' + label] = title; - } - - return pos; -} - -module.exports = function abbr(state) { - var tokens = state.tokens, i, l, content, pos; - - if (state.inlineMode) { - return; - } - - // Parse inlines - for (i = 1, l = tokens.length - 1; i < l; i++) { - if (tokens[i - 1].type === 'paragraph_open' && - tokens[i].type === 'inline' && - tokens[i + 1].type === 'paragraph_close') { - - content = tokens[i].content; - while (content.length) { - pos = parseAbbr(content, state.inline, state.options, state.env); - if (pos < 0) { break; } - content = content.slice(pos).trim(); - } - - tokens[i].content = content; - if (!content.length) { - tokens[i - 1].tight = true; - tokens[i + 1].tight = true; - } - } - } -}; - -},{"../helpers/parse_link_label":12,"../rules_inline/state_inline":56}],35:[function(require,module,exports){ -// Enclose abbreviations in tags -// -'use strict'; - - -var PUNCT_CHARS = ' \n()[]\'".,!?-'; - - -// from Google closure library -// http://closure-library.googlecode.com/git-history/docs/local_closure_goog_string_string.js.source.html#line1021 -function regEscape(s) { - return s.replace(/([-()\[\]{}+?*.$\^|,:#= 0; i--) { - token = tokens[i]; - if (token.type !== 'text') { continue; } - - pos = 0; - text = token.content; - reg.lastIndex = 0; - level = token.level; - nodes = []; - - while ((m = reg.exec(text))) { - if (reg.lastIndex > pos) { - nodes.push({ - type: 'text', - content: text.slice(pos, m.index + m[1].length), - level: level - }); - } - - nodes.push({ - type: 'abbr_open', - title: state.env.abbreviations[':' + m[2]], - level: level++ - }); - nodes.push({ - type: 'text', - content: m[2], - level: level - }); - nodes.push({ - type: 'abbr_close', - level: --level - }); - pos = reg.lastIndex - m[3].length; - } - - if (!nodes.length) { continue; } - - if (pos < text.length) { - nodes.push({ - type: 'text', - content: text.slice(pos), - level: level - }); - } - - // replace current node - blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1)); - } - } -}; - -},{}],36:[function(require,module,exports){ -'use strict'; - -module.exports = function block(state) { - - if (state.inlineMode) { - state.tokens.push({ - type: 'inline', - content: state.src.replace(/\n/g, ' ').trim(), - level: 0, - lines: [ 0, 1 ], - children: [] - }); - - } else { - state.block.parse(state.src, state.options, state.env, state.tokens); - } -}; - -},{}],37:[function(require,module,exports){ -'use strict'; - - -module.exports = function footnote_block(state) { - var i, l, j, t, lastParagraph, list, tokens, current, currentLabel, - level = 0, - insideRef = false, - refTokens = {}; - - if (!state.env.footnotes) { return; } - - state.tokens = state.tokens.filter(function(tok) { - if (tok.type === 'footnote_reference_open') { - insideRef = true; - current = []; - currentLabel = tok.label; - return false; - } - if (tok.type === 'footnote_reference_close') { - insideRef = false; - // prepend ':' to avoid conflict with Object.prototype members - refTokens[':' + currentLabel] = current; - return false; - } - if (insideRef) { current.push(tok); } - return !insideRef; - }); - - if (!state.env.footnotes.list) { return; } - list = state.env.footnotes.list; - - state.tokens.push({ - type: 'footnote_block_open', - level: level++ - }); - for (i = 0, l = list.length; i < l; i++) { - state.tokens.push({ - type: 'footnote_open', - id: i, - level: level++ - }); - - if (list[i].tokens) { - tokens = []; - tokens.push({ - type: 'paragraph_open', - tight: false, - level: level++ - }); - tokens.push({ - type: 'inline', - content: '', - level: level, - children: list[i].tokens - }); - tokens.push({ - type: 'paragraph_close', - tight: false, - level: --level - }); - } else if (list[i].label) { - tokens = refTokens[':' + list[i].label]; - } - - state.tokens = state.tokens.concat(tokens); - if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') { - lastParagraph = state.tokens.pop(); - } else { - lastParagraph = null; - } - - t = list[i].count > 0 ? list[i].count : 1; - for (j = 0; j < t; j++) { - state.tokens.push({ - type: 'footnote_anchor', - id: i, - subId: j, - level: level - }); - } - - if (lastParagraph) { - state.tokens.push(lastParagraph); - } - - state.tokens.push({ - type: 'footnote_close', - level: --level - }); - } - state.tokens.push({ - type: 'footnote_block_close', - level: --level - }); -}; - -},{}],38:[function(require,module,exports){ -'use strict'; - -module.exports = function inline(state) { - var tokens = state.tokens, tok, i, l; - - // Parse inlines - for (i = 0, l = tokens.length; i < l; i++) { - tok = tokens[i]; - if (tok.type === 'inline') { - state.inline.parse(tok.content, state.options, state.env, tok.children); - } - } -}; - -},{}],39:[function(require,module,exports){ -// Replace link-like texts with link nodes. -// -// Currently restricted by `inline.validateLink()` to http/https/ftp -// -'use strict'; - - -var Autolinker = require('autolinker'); - - -var LINK_SCAN_RE = /www|@|\:\/\//; - - -function isLinkOpen(str) { - return /^\s]/i.test(str); -} -function isLinkClose(str) { - return /^<\/a\s*>/i.test(str); -} - -// Stupid fabric to avoid singletons, for thread safety. -// Required for engines like Nashorn. -// -function createLinkifier() { - var links = []; - var autolinker = new Autolinker({ - stripPrefix: false, - url: true, - email: true, - twitter: false, - replaceFn: function (linker, match) { - // Only collect matched strings but don't change anything. - switch (match.getType()) { - /*eslint default-case:0*/ - case 'url': - links.push({ - text: match.matchedText, - url: match.getUrl() - }); - break; - case 'email': - links.push({ - text: match.matchedText, - // normalize email protocol - url: 'mailto:' + match.getEmail().replace(/^mailto:/i, '') - }); - break; - } - return false; - } - }); - - return { - links: links, - autolinker: autolinker - }; -} - - -module.exports = function linkify(state) { - var i, j, l, tokens, token, text, nodes, ln, pos, level, htmlLinkLevel, - blockTokens = state.tokens, - linkifier = null, links, autolinker; - - if (!state.options.linkify) { return; } - - for (j = 0, l = blockTokens.length; j < l; j++) { - if (blockTokens[j].type !== 'inline') { continue; } - tokens = blockTokens[j].children; - - htmlLinkLevel = 0; - - // We scan from the end, to keep position when new tags added. - // Use reversed logic in links start/end match - for (i = tokens.length - 1; i >= 0; i--) { - token = tokens[i]; - - // Skip content of markdown links - if (token.type === 'link_close') { - i--; - while (tokens[i].level !== token.level && tokens[i].type !== 'link_open') { - i--; - } - continue; - } - - // Skip content of html tag links - if (token.type === 'htmltag') { - if (isLinkOpen(token.content) && htmlLinkLevel > 0) { - htmlLinkLevel--; - } - if (isLinkClose(token.content)) { - htmlLinkLevel++; - } - } - if (htmlLinkLevel > 0) { continue; } - - if (token.type === 'text' && LINK_SCAN_RE.test(token.content)) { - - // Init linkifier in lazy manner, only if required. - if (!linkifier) { - linkifier = createLinkifier(); - links = linkifier.links; - autolinker = linkifier.autolinker; - } - - text = token.content; - links.length = 0; - autolinker.link(text); - - if (!links.length) { continue; } - - // Now split string to nodes - nodes = []; - level = token.level; - - for (ln = 0; ln < links.length; ln++) { - - if (!state.inline.validateLink(links[ln].url)) { continue; } - - pos = text.indexOf(links[ln].text); - - if (pos) { - level = level; - nodes.push({ - type: 'text', - content: text.slice(0, pos), - level: level - }); - } - nodes.push({ - type: 'link_open', - href: links[ln].url, - title: '', - level: level++ - }); - nodes.push({ - type: 'text', - content: links[ln].text, - level: level - }); - nodes.push({ - type: 'link_close', - level: --level - }); - text = text.slice(pos + links[ln].text.length); - } - if (text.length) { - nodes.push({ - type: 'text', - content: text, - level: level - }); - } - - // replace current node - blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1)); - } - } - } -}; - -},{"autolinker":60}],40:[function(require,module,exports){ -'use strict'; - - -var StateInline = require('../rules_inline/state_inline'); -var parseLinkLabel = require('../helpers/parse_link_label'); -var parseLinkDestination = require('../helpers/parse_link_destination'); -var parseLinkTitle = require('../helpers/parse_link_title'); -var normalizeReference = require('../helpers/normalize_reference'); - - -function parseReference(str, parser, options, env) { - var state, labelEnd, pos, max, code, start, href, title, label; - - if (str.charCodeAt(0) !== 0x5B/* [ */) { return -1; } - - if (str.indexOf(']:') === -1) { return -1; } - - state = new StateInline(str, parser, options, env, []); - labelEnd = parseLinkLabel(state, 0); - - if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; } - - max = state.posMax; - - // [label]: destination 'title' - // ^^^ skip optional whitespace here - for (pos = labelEnd + 2; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - // [label]: destination 'title' - // ^^^^^^^^^^^ parse this - if (!parseLinkDestination(state, pos)) { return -1; } - href = state.linkContent; - pos = state.pos; - - // [label]: destination 'title' - // ^^^ skipping those spaces - start = pos; - for (pos = pos + 1; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - // [label]: destination 'title' - // ^^^^^^^ parse this - if (pos < max && start !== pos && parseLinkTitle(state, pos)) { - title = state.linkContent; - pos = state.pos; - } else { - title = ''; - pos = start; - } - - // ensure that the end of the line is empty - while (pos < max && state.src.charCodeAt(pos) === 0x20/* space */) { pos++; } - if (pos < max && state.src.charCodeAt(pos) !== 0x0A) { return -1; } - - label = normalizeReference(str.slice(1, labelEnd)); - if (typeof env.references[label] === 'undefined') { - env.references[label] = { title: title, href: href }; - } - - return pos; -} - - -module.exports = function references(state) { - var tokens = state.tokens, i, l, content, pos; - - state.env.references = state.env.references || {}; - - if (state.inlineMode) { - return; - } - - // Scan definitions in paragraph inlines - for (i = 1, l = tokens.length - 1; i < l; i++) { - if (tokens[i].type === 'inline' && - tokens[i - 1].type === 'paragraph_open' && - tokens[i + 1].type === 'paragraph_close') { - - content = tokens[i].content; - while (content.length) { - pos = parseReference(content, state.inline, state.options, state.env); - if (pos < 0) { break; } - content = content.slice(pos).trim(); - } - - tokens[i].content = content; - if (!content.length) { - tokens[i - 1].tight = true; - tokens[i + 1].tight = true; - } - } - } -}; - -},{"../helpers/normalize_reference":10,"../helpers/parse_link_destination":11,"../helpers/parse_link_label":12,"../helpers/parse_link_title":13,"../rules_inline/state_inline":56}],41:[function(require,module,exports){ -// Simple typographical replacements -// -'use strict'; - -// TODO: -// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾ -// - miltiplication 2 x 4 -> 2 × 4 - -var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/; - -var SCOPED_ABBR_RE = /\((c|tm|r|p)\)/ig; -var SCOPED_ABBR = { - 'c': '©', - 'r': '®', - 'p': '§', - 'tm': '™' -}; - -function replaceScopedAbbr(str) { - if (str.indexOf('(') < 0) { return str; } - - return str.replace(SCOPED_ABBR_RE, function(match, name) { - return SCOPED_ABBR[name.toLowerCase()]; - }); -} - - -module.exports = function replace(state) { - var i, token, text, inlineTokens, blkIdx; - - if (!state.options.typographer) { return; } - - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - - if (state.tokens[blkIdx].type !== 'inline') { continue; } - - inlineTokens = state.tokens[blkIdx].children; - - for (i = inlineTokens.length - 1; i >= 0; i--) { - token = inlineTokens[i]; - if (token.type === 'text') { - text = token.content; - - text = replaceScopedAbbr(text); - - if (RARE_RE.test(text)) { - text = text - .replace(/\+-/g, '±') - // .., ..., ....... -> … - // but ?..... & !..... -> ?.. & !.. - .replace(/\.{2,}/g, '…').replace(/([?!])…/g, '$1..') - .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') - // em-dash - .replace(/(^|[^-])---([^-]|$)/mg, '$1\u2014$2') - // en-dash - .replace(/(^|\s)--(\s|$)/mg, '$1\u2013$2') - .replace(/(^|[^-\s])--([^-\s]|$)/mg, '$1\u2013$2'); - } - - token.content = text; - } - } - } -}; - -},{}],42:[function(require,module,exports){ -// Convert straight quotation marks to typographic ones -// -'use strict'; - - -var QUOTE_TEST_RE = /['"]/; -var QUOTE_RE = /['"]/g; -var PUNCT_RE = /[-\s()\[\]]/; -var APOSTROPHE = '’'; - -// This function returns true if the character at `pos` -// could be inside a word. -function isLetter(str, pos) { - if (pos < 0 || pos >= str.length) { return false; } - return !PUNCT_RE.test(str[pos]); -} - - -function replaceAt(str, index, ch) { - return str.substr(0, index) + ch + str.substr(index + 1); -} - - -module.exports = function smartquotes(state) { - /*eslint max-depth:0*/ - var i, token, text, t, pos, max, thisLevel, lastSpace, nextSpace, item, - canOpen, canClose, j, isSingle, blkIdx, tokens, - stack; - - if (!state.options.typographer) { return; } - - stack = []; - - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - - if (state.tokens[blkIdx].type !== 'inline') { continue; } - - tokens = state.tokens[blkIdx].children; - stack.length = 0; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - - if (token.type !== 'text' || QUOTE_TEST_RE.test(token.text)) { continue; } - - thisLevel = tokens[i].level; - - for (j = stack.length - 1; j >= 0; j--) { - if (stack[j].level <= thisLevel) { break; } - } - stack.length = j + 1; - - text = token.content; - pos = 0; - max = text.length; - - /*eslint no-labels:0,block-scoped-var:0*/ - OUTER: - while (pos < max) { - QUOTE_RE.lastIndex = pos; - t = QUOTE_RE.exec(text); - if (!t) { break; } - - lastSpace = !isLetter(text, t.index - 1); - pos = t.index + 1; - isSingle = (t[0] === "'"); - nextSpace = !isLetter(text, pos); - - if (!nextSpace && !lastSpace) { - // middle of word - if (isSingle) { - token.content = replaceAt(token.content, t.index, APOSTROPHE); - } - continue; - } - - canOpen = !nextSpace; - canClose = !lastSpace; - - if (canClose) { - // this could be a closing quote, rewind the stack to get a match - for (j = stack.length - 1; j >= 0; j--) { - item = stack[j]; - if (stack[j].level < thisLevel) { break; } - if (item.single === isSingle && stack[j].level === thisLevel) { - item = stack[j]; - if (isSingle) { - tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[2]); - token.content = replaceAt(token.content, t.index, state.options.quotes[3]); - } else { - tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[0]); - token.content = replaceAt(token.content, t.index, state.options.quotes[1]); - } - stack.length = j; - continue OUTER; - } - } - } - - if (canOpen) { - stack.push({ - token: i, - pos: t.index, - single: isSingle, - level: thisLevel - }); - } else if (canClose && isSingle) { - token.content = replaceAt(token.content, t.index, APOSTROPHE); - } - } - } - } -}; - -},{}],43:[function(require,module,exports){ -// Process autolinks '' - -'use strict'; - -var url_schemas = require('../common/url_schemas'); -var normalizeLink = require('../helpers/normalize_link'); - - -/*eslint max-len:0*/ -var EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/; -var AUTOLINK_RE = /^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/; - - -module.exports = function autolink(state, silent) { - var tail, linkMatch, emailMatch, url, fullUrl, pos = state.pos; - - if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } - - tail = state.src.slice(pos); - - if (tail.indexOf('>') < 0) { return false; } - - linkMatch = tail.match(AUTOLINK_RE); - - if (linkMatch) { - if (url_schemas.indexOf(linkMatch[1].toLowerCase()) < 0) { return false; } - - url = linkMatch[0].slice(1, -1); - fullUrl = normalizeLink(url); - if (!state.parser.validateLink(url)) { return false; } - - if (!silent) { - state.push({ - type: 'link_open', - href: fullUrl, - level: state.level - }); - state.push({ - type: 'text', - content: url, - level: state.level + 1 - }); - state.push({ type: 'link_close', level: state.level }); - } - - state.pos += linkMatch[0].length; - return true; - } - - emailMatch = tail.match(EMAIL_RE); - - if (emailMatch) { - - url = emailMatch[0].slice(1, -1); - - fullUrl = normalizeLink('mailto:' + url); - if (!state.parser.validateLink(fullUrl)) { return false; } - - if (!silent) { - state.push({ - type: 'link_open', - href: fullUrl, - level: state.level - }); - state.push({ - type: 'text', - content: url, - level: state.level + 1 - }); - state.push({ type: 'link_close', level: state.level }); - } - - state.pos += emailMatch[0].length; - return true; - } - - return false; -}; - -},{"../common/url_schemas":4,"../helpers/normalize_link":9}],44:[function(require,module,exports){ -// Parse backticks - -'use strict'; - -module.exports = function backticks(state, silent) { - var start, max, marker, matchStart, matchEnd, - pos = state.pos, - ch = state.src.charCodeAt(pos); - - if (ch !== 0x60/* ` */) { return false; } - - start = pos; - pos++; - max = state.posMax; - - while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; } - - marker = state.src.slice(start, pos); - - matchStart = matchEnd = pos; - - while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) { - matchEnd = matchStart + 1; - - while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; } - - if (matchEnd - matchStart === marker.length) { - if (!silent) { - state.push({ - type: 'code', - content: state.src.slice(pos, matchStart) - .replace(/[ \n]+/g, ' ') - .trim(), - block: false, - level: state.level - }); - } - state.pos = matchEnd; - return true; - } - } - - if (!silent) { state.pending += marker; } - state.pos += marker.length; - return true; -}; - -},{}],45:[function(require,module,exports){ -// Process ~~deleted text~~ - -'use strict'; - -module.exports = function del(state, silent) { - var found, - pos, - stack, - max = state.posMax, - start = state.pos, - lastChar, - nextChar; - - if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 4 >= max) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x7E/* ~ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - nextChar = state.src.charCodeAt(start + 2); - - if (lastChar === 0x7E/* ~ */) { return false; } - if (nextChar === 0x7E/* ~ */) { return false; } - if (nextChar === 0x20 || nextChar === 0x0A) { return false; } - - pos = start + 2; - while (pos < max && state.src.charCodeAt(pos) === 0x7E/* ~ */) { pos++; } - if (pos > start + 3) { - // sequence of 4+ markers taking as literal, same as in a emphasis - state.pos += pos - start; - if (!silent) { state.pending += state.src.slice(start, pos); } - return true; - } - - state.pos = start + 2; - stack = 1; - - while (state.pos + 1 < max) { - if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) { - if (state.src.charCodeAt(state.pos + 1) === 0x7E/* ~ */) { - lastChar = state.src.charCodeAt(state.pos - 1); - nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; - if (nextChar !== 0x7E/* ~ */ && lastChar !== 0x7E/* ~ */) { - if (lastChar !== 0x20 && lastChar !== 0x0A) { - // closing '~~' - stack--; - } else if (nextChar !== 0x20 && nextChar !== 0x0A) { - // opening '~~' - stack++; - } // else { - // // standalone ' ~~ ' indented with spaces - // } - if (stack <= 0) { - found = true; - break; - } - } - } - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 2; - - if (!silent) { - state.push({ type: 'del_open', level: state.level++ }); - state.parser.tokenize(state); - state.push({ type: 'del_close', level: --state.level }); - } - - state.pos = state.posMax + 2; - state.posMax = max; - return true; -}; - -},{}],46:[function(require,module,exports){ -// Process *this* and _that_ - -'use strict'; - - -function isAlphaNum(code) { - return (code >= 0x30 /* 0 */ && code <= 0x39 /* 9 */) || - (code >= 0x41 /* A */ && code <= 0x5A /* Z */) || - (code >= 0x61 /* a */ && code <= 0x7A /* z */); -} - -// parse sequence of emphasis markers, -// "start" should point at a valid marker -function scanDelims(state, start) { - var pos = start, lastChar, nextChar, count, - can_open = true, - can_close = true, - max = state.posMax, - marker = state.src.charCodeAt(start); - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - - while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; } - if (pos >= max) { can_open = false; } - count = pos - start; - - if (count >= 4) { - // sequence of four or more unescaped markers can't start/end an emphasis - can_open = can_close = false; - } else { - nextChar = pos < max ? state.src.charCodeAt(pos) : -1; - - // check whitespace conditions - if (nextChar === 0x20 || nextChar === 0x0A) { can_open = false; } - if (lastChar === 0x20 || lastChar === 0x0A) { can_close = false; } - - if (marker === 0x5F /* _ */) { - // check if we aren't inside the word - if (isAlphaNum(lastChar)) { can_open = false; } - if (isAlphaNum(nextChar)) { can_close = false; } - } - } - - return { - can_open: can_open, - can_close: can_close, - delims: count - }; -} - -module.exports = function emphasis(state, silent) { - var startCount, - count, - found, - oldCount, - newCount, - stack, - res, - max = state.posMax, - start = state.pos, - marker = state.src.charCodeAt(start); - - if (marker !== 0x5F/* _ */ && marker !== 0x2A /* * */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - - res = scanDelims(state, start); - startCount = res.delims; - if (!res.can_open) { - state.pos += startCount; - if (!silent) { state.pending += state.src.slice(start, state.pos); } - return true; - } - - if (state.level >= state.options.maxNesting) { return false; } - - state.pos = start + startCount; - stack = [ startCount ]; - - while (state.pos < max) { - if (state.src.charCodeAt(state.pos) === marker) { - res = scanDelims(state, state.pos); - count = res.delims; - if (res.can_close) { - oldCount = stack.pop(); - newCount = count; - - while (oldCount !== newCount) { - if (newCount < oldCount) { - stack.push(oldCount - newCount); - break; - } - - // assert(newCount > oldCount) - newCount -= oldCount; - - if (stack.length === 0) { break; } - state.pos += oldCount; - oldCount = stack.pop(); - } - - if (stack.length === 0) { - startCount = oldCount; - found = true; - break; - } - state.pos += count; - continue; - } - - if (res.can_open) { stack.push(count); } - state.pos += count; - continue; - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + startCount; - - if (!silent) { - if (startCount === 2 || startCount === 3) { - state.push({ type: 'strong_open', level: state.level++ }); - } - if (startCount === 1 || startCount === 3) { - state.push({ type: 'em_open', level: state.level++ }); - } - - state.parser.tokenize(state); - - if (startCount === 1 || startCount === 3) { - state.push({ type: 'em_close', level: --state.level }); - } - if (startCount === 2 || startCount === 3) { - state.push({ type: 'strong_close', level: --state.level }); - } - } - - state.pos = state.posMax + startCount; - state.posMax = max; - return true; -}; - -},{}],47:[function(require,module,exports){ -// Process html entity - {, ¯, ", ... - -'use strict'; - -var entities = require('../common/entities'); -var has = require('../common/utils').has; -var isValidEntityCode = require('../common/utils').isValidEntityCode; -var fromCodePoint = require('../common/utils').fromCodePoint; - - -var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i; -var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i; - - -module.exports = function entity(state, silent) { - var ch, code, match, pos = state.pos, max = state.posMax; - - if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; } - - if (pos + 1 < max) { - ch = state.src.charCodeAt(pos + 1); - - if (ch === 0x23 /* # */) { - match = state.src.slice(pos).match(DIGITAL_RE); - if (match) { - if (!silent) { - code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10); - state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD); - } - state.pos += match[0].length; - return true; - } - } else { - match = state.src.slice(pos).match(NAMED_RE); - if (match) { - if (has(entities, match[1])) { - if (!silent) { state.pending += entities[match[1]]; } - state.pos += match[0].length; - return true; - } - } - } - } - - if (!silent) { state.pending += '&'; } - state.pos++; - return true; -}; - -},{"../common/entities":1,"../common/utils":5}],48:[function(require,module,exports){ -// Proceess escaped chars and hardbreaks - -'use strict'; - -var ESCAPED = []; - -for (var i = 0; i < 256; i++) { ESCAPED.push(0); } - -'\\!"#$%&\'()*+,./:;<=>?@[]^_`{|}~-' - .split('').forEach(function(ch) { ESCAPED[ch.charCodeAt(0)] = 1; }); - - -module.exports = function escape(state, silent) { - var ch, pos = state.pos, max = state.posMax; - - if (state.src.charCodeAt(pos) !== 0x5C/* \ */) { return false; } - - pos++; - - if (pos < max) { - ch = state.src.charCodeAt(pos); - - if (ch < 256 && ESCAPED[ch] !== 0) { - if (!silent) { state.pending += state.src[pos]; } - state.pos += 2; - return true; - } - - if (ch === 0x0A) { - if (!silent) { - state.push({ - type: 'hardbreak', - level: state.level - }); - } - - pos++; - // skip leading whitespaces from next line - while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } - - state.pos = pos; - return true; - } - } - - if (!silent) { state.pending += '\\'; } - state.pos++; - return true; -}; - -},{}],49:[function(require,module,exports){ -// Process inline footnotes (^[...]) - -'use strict'; - -var parseLinkLabel = require('../helpers/parse_link_label'); - - -module.exports = function footnote_inline(state, silent) { - var labelStart, - labelEnd, - footnoteId, - oldLength, - max = state.posMax, - start = state.pos; - - if (start + 2 >= max) { return false; } - if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - labelStart = start + 2; - labelEnd = parseLinkLabel(state, start + 1); - - // parser failed to find ']', so it's not a valid note - if (labelEnd < 0) { return false; } - - // We found the end of the link, and know for a fact it's a valid link; - // so all that's left to do is to call tokenizer. - // - if (!silent) { - if (!state.env.footnotes) { state.env.footnotes = {}; } - if (!state.env.footnotes.list) { state.env.footnotes.list = []; } - footnoteId = state.env.footnotes.list.length; - - state.pos = labelStart; - state.posMax = labelEnd; - - state.push({ - type: 'footnote_ref', - id: footnoteId, - level: state.level - }); - state.linkLevel++; - oldLength = state.tokens.length; - state.parser.tokenize(state); - state.env.footnotes.list[footnoteId] = { tokens: state.tokens.splice(oldLength) }; - state.linkLevel--; - } - - state.pos = labelEnd + 1; - state.posMax = max; - return true; -}; - -},{"../helpers/parse_link_label":12}],50:[function(require,module,exports){ -// Process footnote references ([^...]) - -'use strict'; - - -module.exports = function footnote_ref(state, silent) { - var label, - pos, - footnoteId, - footnoteSubId, - max = state.posMax, - start = state.pos; - - // should be at least 4 chars - "[^x]" - if (start + 3 > max) { return false; } - - if (!state.env.footnotes || !state.env.footnotes.refs) { return false; } - if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - for (pos = start + 2; pos < max; pos++) { - if (state.src.charCodeAt(pos) === 0x20) { return false; } - if (state.src.charCodeAt(pos) === 0x0A) { return false; } - if (state.src.charCodeAt(pos) === 0x5D /* ] */) { - break; - } - } - - if (pos === start + 2) { return false; } // no empty footnote labels - if (pos >= max) { return false; } - pos++; - - label = state.src.slice(start + 2, pos - 1); - if (typeof state.env.footnotes.refs[':' + label] === 'undefined') { return false; } - - if (!silent) { - if (!state.env.footnotes.list) { state.env.footnotes.list = []; } - - if (state.env.footnotes.refs[':' + label] < 0) { - footnoteId = state.env.footnotes.list.length; - state.env.footnotes.list[footnoteId] = { label: label, count: 0 }; - state.env.footnotes.refs[':' + label] = footnoteId; - } else { - footnoteId = state.env.footnotes.refs[':' + label]; - } - - footnoteSubId = state.env.footnotes.list[footnoteId].count; - state.env.footnotes.list[footnoteId].count++; - - state.push({ - type: 'footnote_ref', - id: footnoteId, - subId: footnoteSubId, - level: state.level - }); - } - - state.pos = pos; - state.posMax = max; - return true; -}; - -},{}],51:[function(require,module,exports){ -// Process html tags - -'use strict'; - - -var HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE; - - -function isLetter(ch) { - /*eslint no-bitwise:0*/ - var lc = ch | 0x20; // to lower case - return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); -} - - -module.exports = function htmltag(state, silent) { - var ch, match, max, pos = state.pos; - - if (!state.options.html) { return false; } - - // Check start - max = state.posMax; - if (state.src.charCodeAt(pos) !== 0x3C/* < */ || - pos + 2 >= max) { - return false; - } - - // Quick fail on second char - ch = state.src.charCodeAt(pos + 1); - if (ch !== 0x21/* ! */ && - ch !== 0x3F/* ? */ && - ch !== 0x2F/* / */ && - !isLetter(ch)) { - return false; - } - - match = state.src.slice(pos).match(HTML_TAG_RE); - if (!match) { return false; } - - if (!silent) { - state.push({ - type: 'htmltag', - content: state.src.slice(pos, pos + match[0].length), - level: state.level - }); - } - state.pos += match[0].length; - return true; -}; - -},{"../common/html_re":3}],52:[function(require,module,exports){ -// Process ++inserted text++ - -'use strict'; - -module.exports = function ins(state, silent) { - var found, - pos, - stack, - max = state.posMax, - start = state.pos, - lastChar, - nextChar; - - if (state.src.charCodeAt(start) !== 0x2B/* + */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 4 >= max) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x2B/* + */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - nextChar = state.src.charCodeAt(start + 2); - - if (lastChar === 0x2B/* + */) { return false; } - if (nextChar === 0x2B/* + */) { return false; } - if (nextChar === 0x20 || nextChar === 0x0A) { return false; } - - pos = start + 2; - while (pos < max && state.src.charCodeAt(pos) === 0x2B/* + */) { pos++; } - if (pos !== start + 2) { - // sequence of 3+ markers taking as literal, same as in a emphasis - state.pos += pos - start; - if (!silent) { state.pending += state.src.slice(start, pos); } - return true; - } - - state.pos = start + 2; - stack = 1; - - while (state.pos + 1 < max) { - if (state.src.charCodeAt(state.pos) === 0x2B/* + */) { - if (state.src.charCodeAt(state.pos + 1) === 0x2B/* + */) { - lastChar = state.src.charCodeAt(state.pos - 1); - nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; - if (nextChar !== 0x2B/* + */ && lastChar !== 0x2B/* + */) { - if (lastChar !== 0x20 && lastChar !== 0x0A) { - // closing '++' - stack--; - } else if (nextChar !== 0x20 && nextChar !== 0x0A) { - // opening '++' - stack++; - } // else { - // // standalone ' ++ ' indented with spaces - // } - if (stack <= 0) { - found = true; - break; - } - } - } - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 2; - - if (!silent) { - state.push({ type: 'ins_open', level: state.level++ }); - state.parser.tokenize(state); - state.push({ type: 'ins_close', level: --state.level }); - } - - state.pos = state.posMax + 2; - state.posMax = max; - return true; -}; - -},{}],53:[function(require,module,exports){ -// Process [links]( "stuff") - -'use strict'; - -var parseLinkLabel = require('../helpers/parse_link_label'); -var parseLinkDestination = require('../helpers/parse_link_destination'); -var parseLinkTitle = require('../helpers/parse_link_title'); -var normalizeReference = require('../helpers/normalize_reference'); - - -module.exports = function links(state, silent) { - var labelStart, - labelEnd, - label, - href, - title, - pos, - ref, - code, - isImage = false, - oldPos = state.pos, - max = state.posMax, - start = state.pos, - marker = state.src.charCodeAt(start); - - if (marker === 0x21/* ! */) { - isImage = true; - marker = state.src.charCodeAt(++start); - } - - if (marker !== 0x5B/* [ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - labelStart = start + 1; - labelEnd = parseLinkLabel(state, start); - - // parser failed to find ']', so it's not a valid link - if (labelEnd < 0) { return false; } - - pos = labelEnd + 1; - if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) { - // - // Inline link - // - - // [link]( "title" ) - // ^^ skipping these spaces - pos++; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - if (pos >= max) { return false; } - - // [link]( "title" ) - // ^^^^^^ parsing link destination - start = pos; - if (parseLinkDestination(state, pos)) { - href = state.linkContent; - pos = state.pos; - } else { - href = ''; - } - - // [link]( "title" ) - // ^^ skipping these spaces - start = pos; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - // [link]( "title" ) - // ^^^^^^^ parsing link title - if (pos < max && start !== pos && parseLinkTitle(state, pos)) { - title = state.linkContent; - pos = state.pos; - - // [link]( "title" ) - // ^^ skipping these spaces - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - } else { - title = ''; - } - - if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) { - state.pos = oldPos; - return false; - } - pos++; - } else { - // - // Link reference - // - - // do not allow nested reference links - if (state.linkLevel > 0) { return false; } - - // [foo] [bar] - // ^^ optional whitespace (can include newlines) - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) { - start = pos + 1; - pos = parseLinkLabel(state, pos); - if (pos >= 0) { - label = state.src.slice(start, pos++); - } else { - pos = start - 1; - } - } - - // covers label === '' and label === undefined - // (collapsed reference link and shortcut reference link respectively) - if (!label) { - if (typeof label === 'undefined') { - pos = labelEnd + 1; - } - label = state.src.slice(labelStart, labelEnd); - } - - ref = state.env.references[normalizeReference(label)]; - if (!ref) { - state.pos = oldPos; - return false; - } - href = ref.href; - title = ref.title; - } - - // - // We found the end of the link, and know for a fact it's a valid link; - // so all that's left to do is to call tokenizer. - // - if (!silent) { - state.pos = labelStart; - state.posMax = labelEnd; - - if (isImage) { - state.push({ - type: 'image', - src: href, - title: title, - alt: state.src.substr(labelStart, labelEnd - labelStart), - level: state.level - }); - } else { - state.push({ - type: 'link_open', - href: href, - title: title, - level: state.level++ - }); - state.linkLevel++; - state.parser.tokenize(state); - state.linkLevel--; - state.push({ type: 'link_close', level: --state.level }); - } - } - - state.pos = pos; - state.posMax = max; - return true; -}; - -},{"../helpers/normalize_reference":10,"../helpers/parse_link_destination":11,"../helpers/parse_link_label":12,"../helpers/parse_link_title":13}],54:[function(require,module,exports){ -// Process ==highlighted text== - -'use strict'; - -module.exports = function del(state, silent) { - var found, - pos, - stack, - max = state.posMax, - start = state.pos, - lastChar, - nextChar; - - if (state.src.charCodeAt(start) !== 0x3D/* = */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 4 >= max) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x3D/* = */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - nextChar = state.src.charCodeAt(start + 2); - - if (lastChar === 0x3D/* = */) { return false; } - if (nextChar === 0x3D/* = */) { return false; } - if (nextChar === 0x20 || nextChar === 0x0A) { return false; } - - pos = start + 2; - while (pos < max && state.src.charCodeAt(pos) === 0x3D/* = */) { pos++; } - if (pos !== start + 2) { - // sequence of 3+ markers taking as literal, same as in a emphasis - state.pos += pos - start; - if (!silent) { state.pending += state.src.slice(start, pos); } - return true; - } - - state.pos = start + 2; - stack = 1; - - while (state.pos + 1 < max) { - if (state.src.charCodeAt(state.pos) === 0x3D/* = */) { - if (state.src.charCodeAt(state.pos + 1) === 0x3D/* = */) { - lastChar = state.src.charCodeAt(state.pos - 1); - nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; - if (nextChar !== 0x3D/* = */ && lastChar !== 0x3D/* = */) { - if (lastChar !== 0x20 && lastChar !== 0x0A) { - // closing '==' - stack--; - } else if (nextChar !== 0x20 && nextChar !== 0x0A) { - // opening '==' - stack++; - } // else { - // // standalone ' == ' indented with spaces - // } - if (stack <= 0) { - found = true; - break; - } - } - } - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 2; - - if (!silent) { - state.push({ type: 'mark_open', level: state.level++ }); - state.parser.tokenize(state); - state.push({ type: 'mark_close', level: --state.level }); - } - - state.pos = state.posMax + 2; - state.posMax = max; - return true; -}; - -},{}],55:[function(require,module,exports){ -// Proceess '\n' - -'use strict'; - -module.exports = function newline(state, silent) { - var pmax, max, pos = state.pos; - - if (state.src.charCodeAt(pos) !== 0x0A/* \n */) { return false; } - - pmax = state.pending.length - 1; - max = state.posMax; - - // ' \n' -> hardbreak - // Lookup in pending chars is bad practice! Don't copy to other rules! - // Pending string is stored in concat mode, indexed lookups will cause - // convertion to flat mode. - if (!silent) { - if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) { - if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) { - // Strip out all trailing spaces on this line. - for (var i = pmax - 2; i >= 0; i--) { - if (state.pending.charCodeAt(i) !== 0x20) { - state.pending = state.pending.substring(0, i + 1); - break; - } - } - state.push({ - type: 'hardbreak', - level: state.level - }); - } else { - state.pending = state.pending.slice(0, -1); - state.push({ - type: 'softbreak', - level: state.level - }); - } - - } else { - state.push({ - type: 'softbreak', - level: state.level - }); - } - } - - pos++; - - // skip heading spaces for next line - while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } - - state.pos = pos; - return true; -}; - -},{}],56:[function(require,module,exports){ -// Inline parser state - -'use strict'; - -function StateInline(src, parserInline, options, env, outTokens) { - this.src = src; - this.env = env; - this.options = options; - this.parser = parserInline; - this.tokens = outTokens; - this.pos = 0; - this.posMax = this.src.length; - this.level = 0; - this.pending = ''; - this.pendingLevel = 0; - - this.cache = []; // Stores { start: end } pairs. Useful for backtrack - // optimization of pairs parse (emphasis, strikes). - - // Link parser state vars - - this.isInLabel = false; // Set true when seek link label - we should disable - // "paired" rules (emphasis, strikes) to not skip - // tailing `]` - - this.linkLevel = 0; // Increment for each nesting link. Used to prevent - // nesting in definitions - - this.linkContent = ''; // Temporary storage for link url - - this.labelUnmatchedScopes = 0; // Track unpaired `[` for link labels - // (backtrack optimization) -} - -// Flush pending text -// -StateInline.prototype.pushPending = function () { - this.tokens.push({ - type: 'text', - content: this.pending, - level: this.pendingLevel - }); - this.pending = ''; -}; - -// Push new token to "stream". -// If pending text exists - flush it as text token -// -StateInline.prototype.push = function (token) { - if (this.pending) { - this.pushPending(); - } - - this.tokens.push(token); - this.pendingLevel = this.level; -}; - -// Store value to cache. -// !!! Implementation has parser-specific optimizations -// !!! keys MUST be integer, >= 0; values MUST be integer, > 0 -// -StateInline.prototype.cacheSet = function (key, val) { - for (var i = this.cache.length; i <= key; i++) { - this.cache.push(0); - } - - this.cache[key] = val; -}; - -// Get cache value -// -StateInline.prototype.cacheGet = function (key) { - return key < this.cache.length ? this.cache[key] : 0; -}; - -module.exports = StateInline; - -},{}],57:[function(require,module,exports){ -// Process ~subscript~ - -'use strict'; - -// same as UNESCAPE_MD_RE plus a space -var UNESCAPE_RE = /\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; - -module.exports = function sub(state, silent) { - var found, - content, - max = state.posMax, - start = state.pos; - - if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 2 >= max) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - state.pos = start + 1; - - while (state.pos < max) { - if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) { - found = true; - break; - } - - state.parser.skipToken(state); - } - - if (!found || start + 1 === state.pos) { - state.pos = start; - return false; - } - - content = state.src.slice(start + 1, state.pos); - - // don't allow unescaped spaces/newlines inside - if (content.match(/(^|[^\\])(\\\\)*\s/)) { - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 1; - - if (!silent) { - state.push({ - type: 'sub', - level: state.level, - content: content.replace(UNESCAPE_RE, '$1') - }); - } - - state.pos = state.posMax + 1; - state.posMax = max; - return true; -}; - -},{}],58:[function(require,module,exports){ -// Process ^superscript^ - -'use strict'; - -// same as UNESCAPE_MD_RE plus a space -var UNESCAPE_RE = /\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; - -module.exports = function sup(state, silent) { - var found, - content, - max = state.posMax, - start = state.pos; - - if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 2 >= max) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - state.pos = start + 1; - - while (state.pos < max) { - if (state.src.charCodeAt(state.pos) === 0x5E/* ^ */) { - found = true; - break; - } - - state.parser.skipToken(state); - } - - if (!found || start + 1 === state.pos) { - state.pos = start; - return false; - } - - content = state.src.slice(start + 1, state.pos); - - // don't allow unescaped spaces/newlines inside - if (content.match(/(^|[^\\])(\\\\)*\s/)) { - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 1; - - if (!silent) { - state.push({ - type: 'sup', - level: state.level, - content: content.replace(UNESCAPE_RE, '$1') - }); - } - - state.pos = state.posMax + 1; - state.posMax = max; - return true; -}; - -},{}],59:[function(require,module,exports){ -// Skip text characters for text token, place those to pending buffer -// and increment current pos - -'use strict'; - -// Rule to skip pure text -// '{}$%@~+=:' reserved for extentions - -function isTerminatorChar(ch) { - switch (ch) { - case 0x0A/* \n */: - case 0x5C/* \ */: - case 0x60/* ` */: - case 0x2A/* * */: - case 0x5F/* _ */: - case 0x5E/* ^ */: - case 0x5B/* [ */: - case 0x5D/* ] */: - case 0x21/* ! */: - case 0x26/* & */: - case 0x3C/* < */: - case 0x3E/* > */: - case 0x7B/* { */: - case 0x7D/* } */: - case 0x24/* $ */: - case 0x25/* % */: - case 0x40/* @ */: - case 0x7E/* ~ */: - case 0x2B/* + */: - case 0x3D/* = */: - case 0x3A/* : */: - return true; - default: - return false; - } -} - -module.exports = function text(state, silent) { - var pos = state.pos; - - while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) { - pos++; - } - - if (pos === state.pos) { return false; } - - if (!silent) { state.pending += state.src.slice(state.pos, pos); } - - state.pos = pos; - - return true; -}; - -},{}],60:[function(require,module,exports){ -/*! - * Autolinker.js - * 0.28.1 - * - * Copyright(c) 2016 Gregory Jacobs - * MIT License - * - * https://github.com/gregjacobs/Autolinker.js - */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { - define([], factory); - } else if (typeof exports === 'object') { - module.exports = factory(); - } else { - root.Autolinker = factory(); - } -}(this, function() { -/** - * @class Autolinker - * @extends Object - * - * Utility class used to process a given string of text, and wrap the matches in - * the appropriate anchor (<a>) tags to turn them into links. - * - * Any of the configuration options may be provided in an Object (map) provided - * to the Autolinker constructor, which will configure how the {@link #link link()} - * method will process the links. - * - * For example: - * - * var autolinker = new Autolinker( { - * newWindow : false, - * truncate : 30 - * } ); - * - * var html = autolinker.link( "Joe went to www.yahoo.com" ); - * // produces: 'Joe went to yahoo.com' - * - * - * The {@link #static-link static link()} method may also be used to inline - * options into a single call, which may be more convenient for one-off uses. - * For example: - * - * var html = Autolinker.link( "Joe went to www.yahoo.com", { - * newWindow : false, - * truncate : 30 - * } ); - * // produces: 'Joe went to yahoo.com' - * - * - * ## Custom Replacements of Links - * - * If the configuration options do not provide enough flexibility, a {@link #replaceFn} - * may be provided to fully customize the output of Autolinker. This function is - * called once for each URL/Email/Phone#/Twitter Handle/Hashtag match that is - * encountered. - * - * For example: - * - * var input = "..."; // string with URLs, Email Addresses, Phone #s, Twitter Handles, and Hashtags - * - * var linkedText = Autolinker.link( input, { - * replaceFn : function( autolinker, match ) { - * console.log( "href = ", match.getAnchorHref() ); - * console.log( "text = ", match.getAnchorText() ); - * - * switch( match.getType() ) { - * case 'url' : - * console.log( "url: ", match.getUrl() ); - * - * if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) { - * var tag = autolinker.getTagBuilder().build( match ); // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes - * tag.setAttr( 'rel', 'nofollow' ); - * tag.addClass( 'external-link' ); - * - * return tag; - * - * } else { - * return true; // let Autolinker perform its normal anchor tag replacement - * } - * - * case 'email' : - * var email = match.getEmail(); - * console.log( "email: ", email ); - * - * if( email === "my@own.address" ) { - * return false; // don't auto-link this particular email address; leave as-is - * } else { - * return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`) - * } - * - * case 'phone' : - * var phoneNumber = match.getPhoneNumber(); - * console.log( phoneNumber ); - * - * return '' + phoneNumber + ''; - * - * case 'twitter' : - * var twitterHandle = match.getTwitterHandle(); - * console.log( twitterHandle ); - * - * return '' + twitterHandle + ''; - * - * case 'hashtag' : - * var hashtag = match.getHashtag(); - * console.log( hashtag ); - * - * return '' + hashtag + ''; - * } - * } - * } ); - * - * - * The function may return the following values: - * - * - `true` (Boolean): Allow Autolinker to replace the match as it normally - * would. - * - `false` (Boolean): Do not replace the current match at all - leave as-is. - * - Any String: If a string is returned from the function, the string will be - * used directly as the replacement HTML for the match. - * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify - * an HTML tag before writing out its HTML text. - * - * @constructor - * @param {Object} [cfg] The configuration options for the Autolinker instance, - * specified in an Object (map). - */ -var Autolinker = function( cfg ) { - cfg = cfg || {}; - - this.version = Autolinker.version; - - this.urls = this.normalizeUrlsCfg( cfg.urls ); - this.email = typeof cfg.email === 'boolean' ? cfg.email : true; - this.twitter = typeof cfg.twitter === 'boolean' ? cfg.twitter : true; - this.phone = typeof cfg.phone === 'boolean' ? cfg.phone : true; - this.hashtag = cfg.hashtag || false; - this.newWindow = typeof cfg.newWindow === 'boolean' ? cfg.newWindow : true; - this.stripPrefix = typeof cfg.stripPrefix === 'boolean' ? cfg.stripPrefix : true; - - // Validate the value of the `hashtag` cfg. - var hashtag = this.hashtag; - if( hashtag !== false && hashtag !== 'twitter' && hashtag !== 'facebook' && hashtag !== 'instagram' ) { - throw new Error( "invalid `hashtag` cfg - see docs" ); - } - - this.truncate = this.normalizeTruncateCfg( cfg.truncate ); - this.className = cfg.className || ''; - this.replaceFn = cfg.replaceFn || null; - - this.htmlParser = null; - this.matchers = null; - this.tagBuilder = null; -}; - - - -/** - * Automatically links URLs, Email addresses, Phone Numbers, Twitter handles, - * and Hashtags found in the given chunk of HTML. Does not link URLs found - * within HTML tags. - * - * For instance, if given the text: `You should go to http://www.yahoo.com`, - * then the result will be `You should go to <a href="http://www.yahoo.com">http://www.yahoo.com</a>` - * - * Example: - * - * var linkedText = Autolinker.link( "Go to google.com", { newWindow: false } ); - * // Produces: "Go to google.com" - * - * @static - * @param {String} textOrHtml The HTML or text to find matches within (depending - * on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #twitter}, - * and {@link #hashtag} options are enabled). - * @param {Object} [options] Any of the configuration options for the Autolinker - * class, specified in an Object (map). See the class description for an - * example call. - * @return {String} The HTML text, with matches automatically linked. - */ -Autolinker.link = function( textOrHtml, options ) { - var autolinker = new Autolinker( options ); - return autolinker.link( textOrHtml ); -}; - - -/** - * @static - * @property {String} version (readonly) - * - * The Autolinker version number in the form major.minor.patch - * - * Ex: 0.25.1 - */ -Autolinker.version = '0.28.1'; - - -Autolinker.prototype = { - constructor : Autolinker, // fix constructor property - - /** - * @cfg {Boolean/Object} [urls=true] - * - * `true` if URLs should be automatically linked, `false` if they should not - * be. - * - * This option also accepts an Object form with 3 properties, to allow for - * more customization of what exactly gets linked. All default to `true`: - * - * @param {Boolean} schemeMatches `true` to match URLs found prefixed with a - * scheme, i.e. `http://google.com`, or `other+scheme://google.com`, - * `false` to prevent these types of matches. - * @param {Boolean} wwwMatches `true` to match urls found prefixed with - * `'www.'`, i.e. `www.google.com`. `false` to prevent these types of - * matches. Note that if the URL had a prefixed scheme, and - * `schemeMatches` is true, it will still be linked. - * @param {Boolean} tldMatches `true` to match URLs with known top level - * domains (.com, .net, etc.) that are not prefixed with a scheme or - * `'www.'`. This option attempts to match anything that looks like a URL - * in the given text. Ex: `google.com`, `asdf.org/?page=1`, etc. `false` - * to prevent these types of matches. - */ - - /** - * @cfg {Boolean} [email=true] - * - * `true` if email addresses should be automatically linked, `false` if they - * should not be. - */ - - /** - * @cfg {Boolean} [twitter=true] - * - * `true` if Twitter handles ("@example") should be automatically linked, - * `false` if they should not be. - */ - - /** - * @cfg {Boolean} [phone=true] - * - * `true` if Phone numbers ("(555)555-5555") should be automatically linked, - * `false` if they should not be. - */ - - /** - * @cfg {Boolean/String} [hashtag=false] - * - * A string for the service name to have hashtags (ex: "#myHashtag") - * auto-linked to. The currently-supported values are: - * - * - 'twitter' - * - 'facebook' - * - 'instagram' - * - * Pass `false` to skip auto-linking of hashtags. - */ - - /** - * @cfg {Boolean} [newWindow=true] - * - * `true` if the links should open in a new window, `false` otherwise. - */ - - /** - * @cfg {Boolean} [stripPrefix=true] - * - * `true` if 'http://' or 'https://' and/or the 'www.' should be stripped - * from the beginning of URL links' text, `false` otherwise. - */ - - /** - * @cfg {Number/Object} [truncate=0] - * - * ## Number Form - * - * A number for how many characters matched text should be truncated to - * inside the text of a link. If the matched text is over this number of - * characters, it will be truncated to this length by adding a two period - * ellipsis ('..') to the end of the string. - * - * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file' - * truncated to 25 characters might look something like this: - * 'yahoo.com/some/long/pat..' - * - * Example Usage: - * - * truncate: 25 - * - * - * Defaults to `0` for "no truncation." - * - * - * ## Object Form - * - * An Object may also be provided with two properties: `length` (Number) and - * `location` (String). `location` may be one of the following: 'end' - * (default), 'middle', or 'smart'. - * - * Example Usage: - * - * truncate: { length: 25, location: 'middle' } - * - * @cfg {Number} [truncate.length=0] How many characters to allow before - * truncation will occur. Defaults to `0` for "no truncation." - * @cfg {"end"/"middle"/"smart"} [truncate.location="end"] - * - * - 'end' (default): will truncate up to the number of characters, and then - * add an ellipsis at the end. Ex: 'yahoo.com/some/long/pat..' - * - 'middle': will truncate and add the ellipsis in the middle. Ex: - * 'yahoo.com/s..th/to/a/file' - * - 'smart': for URLs where the algorithm attempts to strip out unnecessary - * parts first (such as the 'www.', then URL scheme, hash, etc.), - * attempting to make the URL human-readable before looking for a good - * point to insert the ellipsis if it is still too long. Ex: - * 'yahoo.com/some..to/a/file'. For more details, see - * {@link Autolinker.truncate.TruncateSmart}. - */ - - /** - * @cfg {String} className - * - * A CSS class name to add to the generated links. This class will be added - * to all links, as well as this class plus match suffixes for styling - * url/email/phone/twitter/hashtag links differently. - * - * For example, if this config is provided as "myLink", then: - * - * - URL links will have the CSS classes: "myLink myLink-url" - * - Email links will have the CSS classes: "myLink myLink-email", and - * - Twitter links will have the CSS classes: "myLink myLink-twitter" - * - Phone links will have the CSS classes: "myLink myLink-phone" - * - Hashtag links will have the CSS classes: "myLink myLink-hashtag" - */ - - /** - * @cfg {Function} replaceFn - * - * A function to individually process each match found in the input string. - * - * See the class's description for usage. - * - * This function is called with the following parameters: - * - * @cfg {Autolinker} replaceFn.autolinker The Autolinker instance, which may - * be used to retrieve child objects from (such as the instance's - * {@link #getTagBuilder tag builder}). - * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which - * can be used to retrieve information about the match that the `replaceFn` - * is currently processing. See {@link Autolinker.match.Match} subclasses - * for details. - */ - - - /** - * @property {String} version (readonly) - * - * The Autolinker version number in the form major.minor.patch - * - * Ex: 0.25.1 - */ - - /** - * @private - * @property {Autolinker.htmlParser.HtmlParser} htmlParser - * - * The HtmlParser instance used to skip over HTML tags, while finding text - * nodes to process. This is lazily instantiated in the {@link #getHtmlParser} - * method. - */ - - /** - * @private - * @property {Autolinker.matcher.Matcher[]} matchers - * - * The {@link Autolinker.matcher.Matcher} instances for this Autolinker - * instance. - * - * This is lazily created in {@link #getMatchers}. - */ - - /** - * @private - * @property {Autolinker.AnchorTagBuilder} tagBuilder - * - * The AnchorTagBuilder instance used to build match replacement anchor tags. - * Note: this is lazily instantiated in the {@link #getTagBuilder} method. - */ - - - /** - * Normalizes the {@link #urls} config into an Object with 3 properties: - * `schemeMatches`, `wwwMatches`, and `tldMatches`, all Booleans. - * - * See {@link #urls} config for details. - * - * @private - * @param {Boolean/Object} urls - * @return {Object} - */ - normalizeUrlsCfg : function( urls ) { - if( urls == null ) urls = true; // default to `true` - - if( typeof urls === 'boolean' ) { - return { schemeMatches: urls, wwwMatches: urls, tldMatches: urls }; - - } else { // object form - return { - schemeMatches : typeof urls.schemeMatches === 'boolean' ? urls.schemeMatches : true, - wwwMatches : typeof urls.wwwMatches === 'boolean' ? urls.wwwMatches : true, - tldMatches : typeof urls.tldMatches === 'boolean' ? urls.tldMatches : true - }; - } - }, - - - /** - * Normalizes the {@link #truncate} config into an Object with 2 properties: - * `length` (Number), and `location` (String). - * - * See {@link #truncate} config for details. - * - * @private - * @param {Number/Object} truncate - * @return {Object} - */ - normalizeTruncateCfg : function( truncate ) { - if( typeof truncate === 'number' ) { - return { length: truncate, location: 'end' }; - - } else { // object, or undefined/null - return Autolinker.Util.defaults( truncate || {}, { - length : Number.POSITIVE_INFINITY, - location : 'end' - } ); - } - }, - - - /** - * Parses the input `textOrHtml` looking for URLs, email addresses, phone - * numbers, username handles, and hashtags (depending on the configuration - * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match} - * objects describing those matches. - * - * This method is used by the {@link #link} method, but can also be used to - * simply do parsing of the input in order to discover what kinds of links - * there are and how many. - * - * @param {String} textOrHtml The HTML or text to find matches within - * (depending on if the {@link #urls}, {@link #email}, {@link #phone}, - * {@link #twitter}, and {@link #hashtag} options are enabled). - * @return {Autolinker.match.Match[]} The array of Matches found in the - * given input `textOrHtml`. - */ - parse : function( textOrHtml ) { - var htmlParser = this.getHtmlParser(), - htmlNodes = htmlParser.parse( textOrHtml ), - anchorTagStackCount = 0, // used to only process text around anchor tags, and any inner text/html they may have; - matches = []; - - // Find all matches within the `textOrHtml` (but not matches that are - // already nested within tags) - for( var i = 0, len = htmlNodes.length; i < len; i++ ) { - var node = htmlNodes[ i ], - nodeType = node.getType(); - - if( nodeType === 'element' && node.getTagName() === 'a' ) { // Process HTML anchor element nodes in the input `textOrHtml` to find out when we're within an tag - if( !node.isClosing() ) { // it's the start tag - anchorTagStackCount++; - } else { // it's the end tag - anchorTagStackCount = Math.max( anchorTagStackCount - 1, 0 ); // attempt to handle extraneous tags by making sure the stack count never goes below 0 - } - - } else if( nodeType === 'text' && anchorTagStackCount === 0 ) { // Process text nodes that are not within an tag - var textNodeMatches = this.parseText( node.getText(), node.getOffset() ); - - matches.push.apply( matches, textNodeMatches ); - } - } - - - // After we have found all matches, remove subsequent matches that - // overlap with a previous match. This can happen for instance with URLs, - // where the url 'google.com/#link' would match '#link' as a hashtag. - matches = this.compactMatches( matches ); - - // And finally, remove matches for match types that have been turned - // off. We needed to have all match types turned on initially so that - // things like hashtags could be filtered out if they were really just - // part of a URL match (for instance, as a named anchor). - matches = this.removeUnwantedMatches( matches ); - - return matches; - }, - - - /** - * After we have found all matches, we need to remove subsequent matches - * that overlap with a previous match. This can happen for instance with - * URLs, where the url 'google.com/#link' would match '#link' as a hashtag. - * - * @private - * @param {Autolinker.match.Match[]} matches - * @return {Autolinker.match.Match[]} - */ - compactMatches : function( matches ) { - // First, the matches need to be sorted in order of offset - matches.sort( function( a, b ) { return a.getOffset() - b.getOffset(); } ); - - for( var i = 0; i < matches.length - 1; i++ ) { - var match = matches[ i ], - endIdx = match.getOffset() + match.getMatchedText().length; - - // Remove subsequent matches that overlap with the current match - while( i + 1 < matches.length && matches[ i + 1 ].getOffset() <= endIdx ) { - matches.splice( i + 1, 1 ); - } - } - - return matches; - }, - - - /** - * Removes matches for matchers that were turned off in the options. For - * example, if {@link #hashtag hashtags} were not to be matched, we'll - * remove them from the `matches` array here. - * - * @private - * @param {Autolinker.match.Match[]} matches The array of matches to remove - * the unwanted matches from. Note: this array is mutated for the - * removals. - * @return {Autolinker.match.Match[]} The mutated input `matches` array. - */ - removeUnwantedMatches : function( matches ) { - var remove = Autolinker.Util.remove; - - if( !this.hashtag ) remove( matches, function( match ) { return match.getType() === 'hashtag'; } ); - if( !this.email ) remove( matches, function( match ) { return match.getType() === 'email'; } ); - if( !this.phone ) remove( matches, function( match ) { return match.getType() === 'phone'; } ); - if( !this.twitter ) remove( matches, function( match ) { return match.getType() === 'twitter'; } ); - if( !this.urls.schemeMatches ) { - remove( matches, function( m ) { return m.getType() === 'url' && m.getUrlMatchType() === 'scheme'; } ); - } - if( !this.urls.wwwMatches ) { - remove( matches, function( m ) { return m.getType() === 'url' && m.getUrlMatchType() === 'www'; } ); - } - if( !this.urls.tldMatches ) { - remove( matches, function( m ) { return m.getType() === 'url' && m.getUrlMatchType() === 'tld'; } ); - } - - return matches; - }, - - - /** - * Parses the input `text` looking for URLs, email addresses, phone - * numbers, username handles, and hashtags (depending on the configuration - * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match} - * objects describing those matches. - * - * This method processes a **non-HTML string**, and is used to parse and - * match within the text nodes of an HTML string. This method is used - * internally by {@link #parse}. - * - * @private - * @param {String} text The text to find matches within (depending on if the - * {@link #urls}, {@link #email}, {@link #phone}, {@link #twitter}, and - * {@link #hashtag} options are enabled). This must be a non-HTML string. - * @param {Number} [offset=0] The offset of the text node within the - * original string. This is used when parsing with the {@link #parse} - * method to generate correct offsets within the {@link Autolinker.match.Match} - * instances, but may be omitted if calling this method publicly. - * @return {Autolinker.match.Match[]} The array of Matches found in the - * given input `text`. - */ - parseText : function( text, offset ) { - offset = offset || 0; - var matchers = this.getMatchers(), - matches = []; - - for( var i = 0, numMatchers = matchers.length; i < numMatchers; i++ ) { - var textMatches = matchers[ i ].parseMatches( text ); - - // Correct the offset of each of the matches. They are originally - // the offset of the match within the provided text node, but we - // need to correct them to be relative to the original HTML input - // string (i.e. the one provided to #parse). - for( var j = 0, numTextMatches = textMatches.length; j < numTextMatches; j++ ) { - textMatches[ j ].setOffset( offset + textMatches[ j ].getOffset() ); - } - - matches.push.apply( matches, textMatches ); - } - return matches; - }, - - - /** - * Automatically links URLs, Email addresses, Phone numbers, Twitter - * handles, and Hashtags found in the given chunk of HTML. Does not link - * URLs found within HTML tags. - * - * For instance, if given the text: `You should go to http://www.yahoo.com`, - * then the result will be `You should go to - * <a href="http://www.yahoo.com">http://www.yahoo.com</a>` - * - * This method finds the text around any HTML elements in the input - * `textOrHtml`, which will be the text that is processed. Any original HTML - * elements will be left as-is, as well as the text that is already wrapped - * in anchor (<a>) tags. - * - * @param {String} textOrHtml The HTML or text to autolink matches within - * (depending on if the {@link #urls}, {@link #email}, {@link #phone}, - * {@link #twitter}, and {@link #hashtag} options are enabled). - * @return {String} The HTML, with matches automatically linked. - */ - link : function( textOrHtml ) { - if( !textOrHtml ) { return ""; } // handle `null` and `undefined` - - var matches = this.parse( textOrHtml ), - newHtml = [], - lastIndex = 0; - - for( var i = 0, len = matches.length; i < len; i++ ) { - var match = matches[ i ]; - - newHtml.push( textOrHtml.substring( lastIndex, match.getOffset() ) ); - newHtml.push( this.createMatchReturnVal( match ) ); - - lastIndex = match.getOffset() + match.getMatchedText().length; - } - newHtml.push( textOrHtml.substring( lastIndex ) ); // handle the text after the last match - - return newHtml.join( '' ); - }, - - - /** - * Creates the return string value for a given match in the input string. - * - * This method handles the {@link #replaceFn}, if one was provided. - * - * @private - * @param {Autolinker.match.Match} match The Match object that represents - * the match. - * @return {String} The string that the `match` should be replaced with. - * This is usually the anchor tag string, but may be the `matchStr` itself - * if the match is not to be replaced. - */ - createMatchReturnVal : function( match ) { - // Handle a custom `replaceFn` being provided - var replaceFnResult; - if( this.replaceFn ) { - replaceFnResult = this.replaceFn.call( this, this, match ); // Autolinker instance is the context, and the first arg - } - - if( typeof replaceFnResult === 'string' ) { - return replaceFnResult; // `replaceFn` returned a string, use that - - } else if( replaceFnResult === false ) { - return match.getMatchedText(); // no replacement for the match - - } else if( replaceFnResult instanceof Autolinker.HtmlTag ) { - return replaceFnResult.toAnchorString(); - - } else { // replaceFnResult === true, or no/unknown return value from function - // Perform Autolinker's default anchor tag generation - var anchorTag = match.buildTag(); // returns an Autolinker.HtmlTag instance - - return anchorTag.toAnchorString(); - } - }, - - - /** - * Lazily instantiates and returns the {@link #htmlParser} instance for this - * Autolinker instance. - * - * @protected - * @return {Autolinker.htmlParser.HtmlParser} - */ - getHtmlParser : function() { - var htmlParser = this.htmlParser; - - if( !htmlParser ) { - htmlParser = this.htmlParser = new Autolinker.htmlParser.HtmlParser(); - } - - return htmlParser; - }, - - - /** - * Lazily instantiates and returns the {@link Autolinker.matcher.Matcher} - * instances for this Autolinker instance. - * - * @protected - * @return {Autolinker.matcher.Matcher[]} - */ - getMatchers : function() { - if( !this.matchers ) { - var matchersNs = Autolinker.matcher, - tagBuilder = this.getTagBuilder(); - - var matchers = [ - new matchersNs.Hashtag( { tagBuilder: tagBuilder, serviceName: this.hashtag } ), - new matchersNs.Email( { tagBuilder: tagBuilder } ), - new matchersNs.Phone( { tagBuilder: tagBuilder } ), - new matchersNs.Twitter( { tagBuilder: tagBuilder } ), - new matchersNs.Url( { tagBuilder: tagBuilder, stripPrefix: this.stripPrefix } ) - ]; - - return ( this.matchers = matchers ); - - } else { - return this.matchers; - } - }, - - - /** - * Returns the {@link #tagBuilder} instance for this Autolinker instance, lazily instantiating it - * if it does not yet exist. - * - * This method may be used in a {@link #replaceFn} to generate the {@link Autolinker.HtmlTag HtmlTag} instance that - * Autolinker would normally generate, and then allow for modifications before returning it. For example: - * - * var html = Autolinker.link( "Test google.com", { - * replaceFn : function( autolinker, match ) { - * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance - * tag.setAttr( 'rel', 'nofollow' ); - * - * return tag; - * } - * } ); - * - * // generated html: - * // Test google.com - * - * @return {Autolinker.AnchorTagBuilder} - */ - getTagBuilder : function() { - var tagBuilder = this.tagBuilder; - - if( !tagBuilder ) { - tagBuilder = this.tagBuilder = new Autolinker.AnchorTagBuilder( { - newWindow : this.newWindow, - truncate : this.truncate, - className : this.className - } ); - } - - return tagBuilder; - } - -}; - - -// Autolinker Namespaces - -Autolinker.match = {}; -Autolinker.matcher = {}; -Autolinker.htmlParser = {}; -Autolinker.truncate = {}; - -/*global Autolinker */ -/*jshint eqnull:true, boss:true */ -/** - * @class Autolinker.Util - * @singleton - * - * A few utility methods for Autolinker. - */ -Autolinker.Util = { - - /** - * @property {Function} abstractMethod - * - * A function object which represents an abstract method. - */ - abstractMethod : function() { throw "abstract"; }, - - - /** - * @private - * @property {RegExp} trimRegex - * - * The regular expression used to trim the leading and trailing whitespace - * from a string. - */ - trimRegex : /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - - /** - * Assigns (shallow copies) the properties of `src` onto `dest`. - * - * @param {Object} dest The destination object. - * @param {Object} src The source object. - * @return {Object} The destination object (`dest`) - */ - assign : function( dest, src ) { - for( var prop in src ) { - if( src.hasOwnProperty( prop ) ) { - dest[ prop ] = src[ prop ]; - } - } - - return dest; - }, - - - /** - * Assigns (shallow copies) the properties of `src` onto `dest`, if the - * corresponding property on `dest` === `undefined`. - * - * @param {Object} dest The destination object. - * @param {Object} src The source object. - * @return {Object} The destination object (`dest`) - */ - defaults : function( dest, src ) { - for( var prop in src ) { - if( src.hasOwnProperty( prop ) && dest[ prop ] === undefined ) { - dest[ prop ] = src[ prop ]; - } - } - - return dest; - }, - - - /** - * Extends `superclass` to create a new subclass, adding the `protoProps` to the new subclass's prototype. - * - * @param {Function} superclass The constructor function for the superclass. - * @param {Object} protoProps The methods/properties to add to the subclass's prototype. This may contain the - * special property `constructor`, which will be used as the new subclass's constructor function. - * @return {Function} The new subclass function. - */ - extend : function( superclass, protoProps ) { - var superclassProto = superclass.prototype; - - var F = function() {}; - F.prototype = superclassProto; - - var subclass; - if( protoProps.hasOwnProperty( 'constructor' ) ) { - subclass = protoProps.constructor; - } else { - subclass = function() { superclassProto.constructor.apply( this, arguments ); }; - } - - var subclassProto = subclass.prototype = new F(); // set up prototype chain - subclassProto.constructor = subclass; // fix constructor property - subclassProto.superclass = superclassProto; - - delete protoProps.constructor; // don't re-assign constructor property to the prototype, since a new function may have been created (`subclass`), which is now already there - Autolinker.Util.assign( subclassProto, protoProps ); - - return subclass; - }, - - - /** - * Truncates the `str` at `len - ellipsisChars.length`, and adds the `ellipsisChars` to the - * end of the string (by default, two periods: '..'). If the `str` length does not exceed - * `len`, the string will be returned unchanged. - * - * @param {String} str The string to truncate and add an ellipsis to. - * @param {Number} truncateLen The length to truncate the string at. - * @param {String} [ellipsisChars=..] The ellipsis character(s) to add to the end of `str` - * when truncated. Defaults to '..' - */ - ellipsis : function( str, truncateLen, ellipsisChars ) { - if( str.length > truncateLen ) { - ellipsisChars = ( ellipsisChars == null ) ? '..' : ellipsisChars; - str = str.substring( 0, truncateLen - ellipsisChars.length ) + ellipsisChars; - } - return str; - }, - - - /** - * Supports `Array.prototype.indexOf()` functionality for old IE (IE8 and below). - * - * @param {Array} arr The array to find an element of. - * @param {*} element The element to find in the array, and return the index of. - * @return {Number} The index of the `element`, or -1 if it was not found. - */ - indexOf : function( arr, element ) { - if( Array.prototype.indexOf ) { - return arr.indexOf( element ); - - } else { - for( var i = 0, len = arr.length; i < len; i++ ) { - if( arr[ i ] === element ) return i; - } - return -1; - } - }, - - - /** - * Removes array elements based on a filtering function. Mutates the input - * array. - * - * Using this instead of the ES5 Array.prototype.filter() function, to allow - * Autolinker compatibility with IE8, and also to prevent creating many new - * arrays in memory for filtering. - * - * @param {Array} arr The array to remove elements from. This array is - * mutated. - * @param {Function} fn A function which should return `true` to - * remove an element. - * @return {Array} The mutated input `arr`. - */ - remove : function( arr, fn ) { - for( var i = arr.length - 1; i >= 0; i-- ) { - if( fn( arr[ i ] ) === true ) { - arr.splice( i, 1 ); - } - } - }, - - - /** - * Performs the functionality of what modern browsers do when `String.prototype.split()` is called - * with a regular expression that contains capturing parenthesis. - * - * For example: - * - * // Modern browsers: - * "a,b,c".split( /(,)/ ); // --> [ 'a', ',', 'b', ',', 'c' ] - * - * // Old IE (including IE8): - * "a,b,c".split( /(,)/ ); // --> [ 'a', 'b', 'c' ] - * - * This method emulates the functionality of modern browsers for the old IE case. - * - * @param {String} str The string to split. - * @param {RegExp} splitRegex The regular expression to split the input `str` on. The splitting - * character(s) will be spliced into the array, as in the "modern browsers" example in the - * description of this method. - * Note #1: the supplied regular expression **must** have the 'g' flag specified. - * Note #2: for simplicity's sake, the regular expression does not need - * to contain capturing parenthesis - it will be assumed that any match has them. - * @return {String[]} The split array of strings, with the splitting character(s) included. - */ - splitAndCapture : function( str, splitRegex ) { - if( !splitRegex.global ) throw new Error( "`splitRegex` must have the 'g' flag set" ); - - var result = [], - lastIdx = 0, - match; - - while( match = splitRegex.exec( str ) ) { - result.push( str.substring( lastIdx, match.index ) ); - result.push( match[ 0 ] ); // push the splitting char(s) - - lastIdx = match.index + match[ 0 ].length; - } - result.push( str.substring( lastIdx ) ); - - return result; - }, - - - /** - * Trims the leading and trailing whitespace from a string. - * - * @param {String} str The string to trim. - * @return {String} - */ - trim : function( str ) { - return str.replace( this.trimRegex, '' ); - } - -}; -/*global Autolinker */ -/*jshint boss:true */ -/** - * @class Autolinker.HtmlTag - * @extends Object - * - * Represents an HTML tag, which can be used to easily build/modify HTML tags programmatically. - * - * Autolinker uses this abstraction to create HTML tags, and then write them out as strings. You may also use - * this class in your code, especially within a {@link Autolinker#replaceFn replaceFn}. - * - * ## Examples - * - * Example instantiation: - * - * var tag = new Autolinker.HtmlTag( { - * tagName : 'a', - * attrs : { 'href': 'http://google.com', 'class': 'external-link' }, - * innerHtml : 'Google' - * } ); - * - * tag.toAnchorString(); // Google - * - * // Individual accessor methods - * tag.getTagName(); // 'a' - * tag.getAttr( 'href' ); // 'http://google.com' - * tag.hasClass( 'external-link' ); // true - * - * - * Using mutator methods (which may be used in combination with instantiation config properties): - * - * var tag = new Autolinker.HtmlTag(); - * tag.setTagName( 'a' ); - * tag.setAttr( 'href', 'http://google.com' ); - * tag.addClass( 'external-link' ); - * tag.setInnerHtml( 'Google' ); - * - * tag.getTagName(); // 'a' - * tag.getAttr( 'href' ); // 'http://google.com' - * tag.hasClass( 'external-link' ); // true - * - * tag.toAnchorString(); // Google - * - * - * ## Example use within a {@link Autolinker#replaceFn replaceFn} - * - * var html = Autolinker.link( "Test google.com", { - * replaceFn : function( autolinker, match ) { - * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance, configured with the Match's href and anchor text - * tag.setAttr( 'rel', 'nofollow' ); - * - * return tag; - * } - * } ); - * - * // generated html: - * // Test google.com - * - * - * ## Example use with a new tag for the replacement - * - * var html = Autolinker.link( "Test google.com", { - * replaceFn : function( autolinker, match ) { - * var tag = new Autolinker.HtmlTag( { - * tagName : 'button', - * attrs : { 'title': 'Load URL: ' + match.getAnchorHref() }, - * innerHtml : 'Load URL: ' + match.getAnchorText() - * } ); - * - * return tag; - * } - * } ); - * - * // generated html: - * // Test - */ -Autolinker.HtmlTag = Autolinker.Util.extend( Object, { - - /** - * @cfg {String} tagName - * - * The tag name. Ex: 'a', 'button', etc. - * - * Not required at instantiation time, but should be set using {@link #setTagName} before {@link #toAnchorString} - * is executed. - */ - - /** - * @cfg {Object.} attrs - * - * An key/value Object (map) of attributes to create the tag with. The keys are the attribute names, and the - * values are the attribute values. - */ - - /** - * @cfg {String} innerHtml - * - * The inner HTML for the tag. - * - * Note the camel case name on `innerHtml`. Acronyms are camelCased in this utility (such as not to run into the acronym - * naming inconsistency that the DOM developers created with `XMLHttpRequest`). You may alternatively use {@link #innerHTML} - * if you prefer, but this one is recommended. - */ - - /** - * @cfg {String} innerHTML - * - * Alias of {@link #innerHtml}, accepted for consistency with the browser DOM api, but prefer the camelCased version - * for acronym names. - */ - - - /** - * @protected - * @property {RegExp} whitespaceRegex - * - * Regular expression used to match whitespace in a string of CSS classes. - */ - whitespaceRegex : /\s+/, - - - /** - * @constructor - * @param {Object} [cfg] The configuration properties for this class, in an Object (map) - */ - constructor : function( cfg ) { - Autolinker.Util.assign( this, cfg ); - - this.innerHtml = this.innerHtml || this.innerHTML; // accept either the camelCased form or the fully capitalized acronym - }, - - - /** - * Sets the tag name that will be used to generate the tag with. - * - * @param {String} tagName - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setTagName : function( tagName ) { - this.tagName = tagName; - return this; - }, - - - /** - * Retrieves the tag name. - * - * @return {String} - */ - getTagName : function() { - return this.tagName || ""; - }, - - - /** - * Sets an attribute on the HtmlTag. - * - * @param {String} attrName The attribute name to set. - * @param {String} attrValue The attribute value to set. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setAttr : function( attrName, attrValue ) { - var tagAttrs = this.getAttrs(); - tagAttrs[ attrName ] = attrValue; - - return this; - }, - - - /** - * Retrieves an attribute from the HtmlTag. If the attribute does not exist, returns `undefined`. - * - * @param {String} attrName The attribute name to retrieve. - * @return {String} The attribute's value, or `undefined` if it does not exist on the HtmlTag. - */ - getAttr : function( attrName ) { - return this.getAttrs()[ attrName ]; - }, - - - /** - * Sets one or more attributes on the HtmlTag. - * - * @param {Object.} attrs A key/value Object (map) of the attributes to set. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setAttrs : function( attrs ) { - var tagAttrs = this.getAttrs(); - Autolinker.Util.assign( tagAttrs, attrs ); - - return this; - }, - - - /** - * Retrieves the attributes Object (map) for the HtmlTag. - * - * @return {Object.} A key/value object of the attributes for the HtmlTag. - */ - getAttrs : function() { - return this.attrs || ( this.attrs = {} ); - }, - - - /** - * Sets the provided `cssClass`, overwriting any current CSS classes on the HtmlTag. - * - * @param {String} cssClass One or more space-separated CSS classes to set (overwrite). - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setClass : function( cssClass ) { - return this.setAttr( 'class', cssClass ); - }, - - - /** - * Convenience method to add one or more CSS classes to the HtmlTag. Will not add duplicate CSS classes. - * - * @param {String} cssClass One or more space-separated CSS classes to add. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - addClass : function( cssClass ) { - var classAttr = this.getClass(), - whitespaceRegex = this.whitespaceRegex, - indexOf = Autolinker.Util.indexOf, // to support IE8 and below - classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ), - newClasses = cssClass.split( whitespaceRegex ), - newClass; - - while( newClass = newClasses.shift() ) { - if( indexOf( classes, newClass ) === -1 ) { - classes.push( newClass ); - } - } - - this.getAttrs()[ 'class' ] = classes.join( " " ); - return this; - }, - - - /** - * Convenience method to remove one or more CSS classes from the HtmlTag. - * - * @param {String} cssClass One or more space-separated CSS classes to remove. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - removeClass : function( cssClass ) { - var classAttr = this.getClass(), - whitespaceRegex = this.whitespaceRegex, - indexOf = Autolinker.Util.indexOf, // to support IE8 and below - classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ), - removeClasses = cssClass.split( whitespaceRegex ), - removeClass; - - while( classes.length && ( removeClass = removeClasses.shift() ) ) { - var idx = indexOf( classes, removeClass ); - if( idx !== -1 ) { - classes.splice( idx, 1 ); - } - } - - this.getAttrs()[ 'class' ] = classes.join( " " ); - return this; - }, - - - /** - * Convenience method to retrieve the CSS class(es) for the HtmlTag, which will each be separated by spaces when - * there are multiple. - * - * @return {String} - */ - getClass : function() { - return this.getAttrs()[ 'class' ] || ""; - }, - - - /** - * Convenience method to check if the tag has a CSS class or not. - * - * @param {String} cssClass The CSS class to check for. - * @return {Boolean} `true` if the HtmlTag has the CSS class, `false` otherwise. - */ - hasClass : function( cssClass ) { - return ( ' ' + this.getClass() + ' ' ).indexOf( ' ' + cssClass + ' ' ) !== -1; - }, - - - /** - * Sets the inner HTML for the tag. - * - * @param {String} html The inner HTML to set. - * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. - */ - setInnerHtml : function( html ) { - this.innerHtml = html; - - return this; - }, - - - /** - * Retrieves the inner HTML for the tag. - * - * @return {String} - */ - getInnerHtml : function() { - return this.innerHtml || ""; - }, - - - /** - * Override of superclass method used to generate the HTML string for the tag. - * - * @return {String} - */ - toAnchorString : function() { - var tagName = this.getTagName(), - attrsStr = this.buildAttrsStr(); - - attrsStr = ( attrsStr ) ? ' ' + attrsStr : ''; // prepend a space if there are actually attributes - - return [ '<', tagName, attrsStr, '>', this.getInnerHtml(), '' ].join( "" ); - }, - - - /** - * Support method for {@link #toAnchorString}, returns the string space-separated key="value" pairs, used to populate - * the stringified HtmlTag. - * - * @protected - * @return {String} Example return: `attr1="value1" attr2="value2"` - */ - buildAttrsStr : function() { - if( !this.attrs ) return ""; // no `attrs` Object (map) has been set, return empty string - - var attrs = this.getAttrs(), - attrsArr = []; - - for( var prop in attrs ) { - if( attrs.hasOwnProperty( prop ) ) { - attrsArr.push( prop + '="' + attrs[ prop ] + '"' ); - } - } - return attrsArr.join( " " ); - } - -} ); - -/*global Autolinker */ -/** - * @class Autolinker.RegexLib - * @singleton - * - * Builds and stores a library of the common regular expressions used by the - * Autolinker utility. - * - * Other regular expressions may exist ad-hoc, but these are generally the - * regular expressions that are shared between source files. - */ -Autolinker.RegexLib = (function() { - - /** - * The string form of a regular expression that would match all of the - * alphabetic ("letter") chars in the unicode character set when placed in a - * RegExp character class (`[]`). This includes all international alphabetic - * characters. - * - * These would be the characters matched by unicode regex engines `\p{L}` - * escape ("all letters"). - * - * Taken from the XRegExp library: http://xregexp.com/ - * Specifically: http://xregexp.com/v/3.0.0/unicode-categories.js - * - * @private - * @type {String} - */ - var alphaCharsStr = 'A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC'; - - /** - * The string form of a regular expression that would match all of the - * decimal number chars in the unicode character set when placed in a RegExp - * character class (`[]`). - * - * These would be the characters matched by unicode regex engines `\p{Nd}` - * escape ("all decimal numbers") - * - * Taken from the XRegExp library: http://xregexp.com/ - * Specifically: http://xregexp.com/v/3.0.0/unicode-categories.js - * - * @private - * @type {String} - */ - var decimalNumbersStr = '0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19'; - - - // See documentation below - var alphaNumericCharsStr = alphaCharsStr + decimalNumbersStr; - - - // See documentation below - var domainNameRegex = new RegExp( '[' + alphaNumericCharsStr + '.\\-]*[' + alphaNumericCharsStr + '\\-]' ); - - - // See documentation below - var tldRegex = /(?:travelersinsurance|sandvikcoromant|kerryproperties|cancerresearch|weatherchannel|kerrylogistics|spreadbetting|international|wolterskluwer|lifeinsurance|construction|pamperedchef|scholarships|versicherung|bridgestone|creditunion|kerryhotels|investments|productions|blackfriday|enterprises|lamborghini|photography|motorcycles|williamhill|playstation|contractors|barclaycard|accountants|redumbrella|engineering|management|telefonica|protection|consulting|tatamotors|creditcard|vlaanderen|schaeffler|associates|properties|foundation|republican|bnpparibas|boehringer|eurovision|extraspace|industries|immobilien|university|technology|volkswagen|healthcare|restaurant|cuisinella|vistaprint|apartments|accountant|travelers|homedepot|institute|vacations|furniture|fresenius|insurance|christmas|bloomberg|solutions|barcelona|firestone|financial|kuokgroup|fairwinds|community|passagens|goldpoint|equipment|lifestyle|yodobashi|aquarelle|marketing|analytics|education|amsterdam|statefarm|melbourne|allfinanz|directory|microsoft|stockholm|montblanc|accenture|lancaster|landrover|everbank|istanbul|graphics|grainger|ipiranga|softbank|attorney|pharmacy|saarland|catering|airforce|yokohama|mortgage|frontier|mutuelle|stcgroup|memorial|pictures|football|symantec|cipriani|ventures|telecity|cityeats|verisign|flsmidth|boutique|cleaning|firmdale|clinique|clothing|redstone|infiniti|deloitte|feedback|services|broadway|plumbing|commbank|training|barclays|exchange|computer|brussels|software|delivery|barefoot|builders|business|bargains|engineer|holdings|download|security|helsinki|lighting|movistar|discount|hdfcbank|supplies|marriott|property|diamonds|capetown|partners|democrat|jpmorgan|bradesco|budapest|rexroth|zuerich|shriram|academy|science|support|youtube|singles|surgery|alibaba|statoil|dentist|schwarz|android|cruises|cricket|digital|markets|starhub|systems|courses|coupons|netbank|country|domains|corsica|network|neustar|realtor|lincoln|limited|schmidt|yamaxun|cooking|contact|auction|spiegel|liaison|leclerc|latrobe|lasalle|abogado|compare|lanxess|exposed|express|company|cologne|college|avianca|lacaixa|fashion|recipes|ferrero|komatsu|storage|wanggou|clubmed|sandvik|fishing|fitness|bauhaus|kitchen|flights|florist|flowers|watches|weather|temasek|samsung|bentley|forsale|channel|theater|frogans|theatre|okinawa|website|tickets|jewelry|gallery|tiffany|iselect|shiksha|brother|organic|wedding|genting|toshiba|origins|philips|hyundai|hotmail|hoteles|hosting|rentals|windows|cartier|bugatti|holiday|careers|whoswho|hitachi|panerai|caravan|reviews|guitars|capital|trading|hamburg|hangout|finance|stream|family|abbott|health|review|travel|report|hermes|hiphop|gratis|career|toyota|hockey|dating|repair|google|social|soccer|reisen|global|otsuka|giving|unicom|casino|photos|center|broker|rocher|orange|bostik|garden|insure|ryukyu|bharti|safety|physio|sakura|oracle|online|jaguar|gallup|piaget|tienda|futbol|pictet|joburg|webcam|berlin|office|juegos|kaufen|chanel|chrome|xihuan|church|tennis|circle|kinder|flickr|bayern|claims|clinic|viajes|nowruz|xperia|norton|yachts|studio|coffee|camera|sanofi|nissan|author|expert|events|comsec|lawyer|tattoo|viking|estate|villas|condos|realty|yandex|energy|emerck|virgin|vision|durban|living|school|coupon|london|taobao|natura|taipei|nagoya|luxury|walter|aramco|sydney|madrid|credit|maison|makeup|schule|market|anquan|direct|design|swatch|suzuki|alsace|vuelos|dental|alipay|voyage|shouji|voting|airtel|mutual|degree|supply|agency|museum|mobily|dealer|monash|select|mormon|active|moscow|racing|datsun|quebec|nissay|rodeo|email|gifts|works|photo|chloe|edeka|cheap|earth|vista|tushu|koeln|glass|shoes|globo|tunes|gmail|nokia|space|kyoto|black|ricoh|seven|lamer|sener|epson|cisco|praxi|trust|citic|crown|shell|lease|green|legal|lexus|ninja|tatar|gripe|nikon|group|video|wales|autos|gucci|party|nexus|guide|linde|adult|parts|amica|lixil|boats|azure|loans|locus|cymru|lotte|lotto|stada|click|poker|quest|dabur|lupin|nadex|paris|faith|dance|canon|place|gives|trade|skype|rocks|mango|cloud|boots|smile|final|swiss|homes|honda|media|horse|cards|deals|watch|bosch|house|pizza|miami|osaka|tours|total|xerox|coach|sucks|style|delta|toray|iinet|tools|money|codes|beats|tokyo|salon|archi|movie|baidu|study|actor|yahoo|store|apple|world|forex|today|bible|tmall|tirol|irish|tires|forum|reise|vegas|vodka|sharp|omega|weber|jetzt|audio|promo|build|bingo|chase|gallo|drive|dubai|rehab|press|solar|sale|beer|bbva|bank|band|auto|sapo|sarl|saxo|audi|asia|arte|arpa|army|yoga|ally|zara|scor|scot|sexy|seat|zero|seek|aero|adac|zone|aarp|maif|meet|meme|menu|surf|mini|mobi|mtpc|porn|desi|star|ltda|name|talk|navy|love|loan|live|link|news|limo|like|spot|life|nico|lidl|lgbt|land|taxi|team|tech|kred|kpmg|sony|song|kiwi|kddi|jprs|jobs|sohu|java|itau|tips|info|immo|icbc|hsbc|town|host|page|toys|here|help|pars|haus|guru|guge|tube|goog|golf|gold|sncf|gmbh|gift|ggee|gent|gbiz|game|vana|pics|fund|ford|ping|pink|fish|film|fast|farm|play|fans|fail|plus|skin|pohl|fage|moda|post|erni|dvag|prod|doha|prof|docs|viva|diet|luxe|site|dell|sina|dclk|show|qpon|date|vote|cyou|voto|read|coop|cool|wang|club|city|chat|cern|cash|reit|rent|casa|cars|care|camp|rest|call|cafe|weir|wien|rich|wiki|buzz|wine|book|bond|room|work|rsvp|shia|ruhr|blue|bing|shaw|bike|safe|xbox|best|pwc|mtn|lds|aig|boo|fyi|nra|nrw|ntt|car|gal|obi|zip|aeg|vin|how|one|ong|onl|dad|ooo|bet|esq|org|htc|bar|uol|ibm|ovh|gdn|ice|icu|uno|gea|ifm|bot|top|wtf|lol|day|pet|eus|wtc|ubs|tvs|aco|ing|ltd|ink|tab|abb|afl|cat|int|pid|pin|bid|cba|gle|com|cbn|ads|man|wed|ceb|gmo|sky|ist|gmx|tui|mba|fan|ski|iwc|app|pro|med|ceo|jcb|jcp|goo|dev|men|aaa|meo|pub|jlc|bom|jll|gop|jmp|mil|got|gov|win|jot|mma|joy|trv|red|cfa|cfd|bio|moe|moi|mom|ren|biz|aws|xin|bbc|dnp|buy|kfh|mov|thd|xyz|fit|kia|rio|rip|kim|dog|vet|nyc|bcg|mtr|bcn|bms|bmw|run|bzh|rwe|tel|stc|axa|kpn|fly|krd|cab|bnl|foo|crs|eat|tci|sap|srl|nec|sas|net|cal|sbs|sfr|sca|scb|csc|edu|new|xxx|hiv|fox|wme|ngo|nhk|vip|sex|frl|lat|yun|law|you|tax|soy|sew|om|ac|hu|se|sc|sg|sh|sb|sa|rw|ru|rs|ro|re|qa|py|si|pw|pt|ps|sj|sk|pr|pn|pm|pl|sl|sm|pk|sn|ph|so|pg|pf|pe|pa|zw|nz|nu|nr|np|no|nl|ni|ng|nf|sr|ne|st|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|su|mn|mm|ml|mk|mh|mg|me|sv|md|mc|sx|sy|ma|ly|lv|sz|lu|lt|ls|lr|lk|li|lc|lb|la|tc|kz|td|ky|kw|kr|kp|kn|km|ki|kh|tf|tg|th|kg|ke|jp|jo|jm|je|it|is|ir|tj|tk|tl|tm|iq|tn|to|io|in|im|il|ie|ad|sd|ht|hr|hn|hm|tr|hk|gy|gw|gu|gt|gs|gr|gq|tt|gp|gn|gm|gl|tv|gi|tw|tz|ua|gh|ug|uk|gg|gf|ge|gd|us|uy|uz|va|gb|ga|vc|ve|fr|fo|fm|fk|fj|vg|vi|fi|eu|et|es|er|eg|ee|ec|dz|do|dm|dk|vn|dj|de|cz|cy|cx|cw|vu|cv|cu|cr|co|cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|wf|bz|by|bw|bv|bt|bs|br|bo|bn|bm|bj|bi|ws|bh|bg|bf|be|bd|bb|ba|az|ax|aw|au|at|as|ye|ar|aq|ao|am|al|yt|ai|za|ag|af|ae|zm|id)\b/; - - - return { - - /** - * The string form of a regular expression that would match all of the - * letters and decimal number chars in the unicode character set when placed - * in a RegExp character class (`[]`). - * - * These would be the characters matched by unicode regex engines `[\p{L}\p{Nd}]` - * escape ("all letters and decimal numbers") - * - * @property {String} alphaNumericCharsStr - */ - alphaNumericCharsStr : alphaNumericCharsStr, - - /** - * A regular expression to match domain names of a URL or email address. - * Ex: 'google', 'yahoo', 'some-other-company', etc. - * - * @property {RegExp} domainNameRegex - */ - domainNameRegex : domainNameRegex, - - /** - * A regular expression to match top level domains (TLDs) for a URL or - * email address. Ex: 'com', 'org', 'net', etc. - * - * @property {RegExp} tldRegex - */ - tldRegex : tldRegex - - }; - - -}() ); -/*global Autolinker */ -/*jshint sub:true */ -/** - * @protected - * @class Autolinker.AnchorTagBuilder - * @extends Object - * - * Builds anchor (<a>) tags for the Autolinker utility when a match is - * found. - * - * Normally this class is instantiated, configured, and used internally by an - * {@link Autolinker} instance, but may actually be retrieved in a {@link Autolinker#replaceFn replaceFn} - * to create {@link Autolinker.HtmlTag HtmlTag} instances which may be modified - * before returning from the {@link Autolinker#replaceFn replaceFn}. For - * example: - * - * var html = Autolinker.link( "Test google.com", { - * replaceFn : function( autolinker, match ) { - * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance - * tag.setAttr( 'rel', 'nofollow' ); - * - * return tag; - * } - * } ); - * - * // generated html: - * // Test google.com - */ -Autolinker.AnchorTagBuilder = Autolinker.Util.extend( Object, { - - /** - * @cfg {Boolean} newWindow - * @inheritdoc Autolinker#newWindow - */ - - /** - * @cfg {Object} truncate - * @inheritdoc Autolinker#truncate - */ - - /** - * @cfg {String} className - * @inheritdoc Autolinker#className - */ - - - /** - * @constructor - * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.Util.assign( this, cfg ); - }, - - - /** - * Generates the actual anchor (<a>) tag to use in place of the - * matched text, via its `match` object. - * - * @param {Autolinker.match.Match} match The Match instance to generate an - * anchor tag from. - * @return {Autolinker.HtmlTag} The HtmlTag instance for the anchor tag. - */ - build : function( match ) { - return new Autolinker.HtmlTag( { - tagName : 'a', - attrs : this.createAttrs( match.getType(), match.getAnchorHref() ), - innerHtml : this.processAnchorText( match.getAnchorText() ) - } ); - }, - - - /** - * Creates the Object (map) of the HTML attributes for the anchor (<a>) - * tag being generated. - * - * @protected - * @param {"url"/"email"/"phone"/"twitter"/"hashtag"} matchType The type of - * match that an anchor tag is being generated for. - * @param {String} anchorHref The href for the anchor tag. - * @return {Object} A key/value Object (map) of the anchor tag's attributes. - */ - createAttrs : function( matchType, anchorHref ) { - var attrs = { - 'href' : anchorHref // we'll always have the `href` attribute - }; - - var cssClass = this.createCssClass( matchType ); - if( cssClass ) { - attrs[ 'class' ] = cssClass; - } - if( this.newWindow ) { - attrs[ 'target' ] = "_blank"; - attrs[ 'rel' ] = "noopener noreferrer"; - } - - return attrs; - }, - - - /** - * Creates the CSS class that will be used for a given anchor tag, based on - * the `matchType` and the {@link #className} config. - * - * @private - * @param {"url"/"email"/"phone"/"twitter"/"hashtag"} matchType The type of - * match that an anchor tag is being generated for. - * @return {String} The CSS class string for the link. Example return: - * "myLink myLink-url". If no {@link #className} was configured, returns - * an empty string. - */ - createCssClass : function( matchType ) { - var className = this.className; - - if( !className ) - return ""; - else - return className + " " + className + "-" + matchType; // ex: "myLink myLink-url", "myLink myLink-email", "myLink myLink-phone", "myLink myLink-twitter", or "myLink myLink-hashtag" - }, - - - /** - * Processes the `anchorText` by truncating the text according to the - * {@link #truncate} config. - * - * @private - * @param {String} anchorText The anchor tag's text (i.e. what will be - * displayed). - * @return {String} The processed `anchorText`. - */ - processAnchorText : function( anchorText ) { - anchorText = this.doTruncate( anchorText ); - - return anchorText; - }, - - - /** - * Performs the truncation of the `anchorText` based on the {@link #truncate} - * option. If the `anchorText` is longer than the length specified by the - * {@link #truncate} option, the truncation is performed based on the - * `location` property. See {@link #truncate} for details. - * - * @private - * @param {String} anchorText The anchor tag's text (i.e. what will be - * displayed). - * @return {String} The truncated anchor text. - */ - doTruncate : function( anchorText ) { - var truncate = this.truncate; - if( !truncate || !truncate.length ) return anchorText; - - var truncateLength = truncate.length, - truncateLocation = truncate.location; - - if( truncateLocation === 'smart' ) { - return Autolinker.truncate.TruncateSmart( anchorText, truncateLength, '..' ); - - } else if( truncateLocation === 'middle' ) { - return Autolinker.truncate.TruncateMiddle( anchorText, truncateLength, '..' ); - - } else { - return Autolinker.truncate.TruncateEnd( anchorText, truncateLength, '..' ); - } - } - -} ); - -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.HtmlParser - * @extends Object - * - * An HTML parser implementation which simply walks an HTML string and returns an array of - * {@link Autolinker.htmlParser.HtmlNode HtmlNodes} that represent the basic HTML structure of the input string. - * - * Autolinker uses this to only link URLs/emails/Twitter handles within text nodes, effectively ignoring / "walking - * around" HTML tags. - */ -Autolinker.htmlParser.HtmlParser = Autolinker.Util.extend( Object, { - - /** - * @private - * @property {RegExp} htmlRegex - * - * The regular expression used to pull out HTML tags from a string. Handles namespaced HTML tags and - * attribute names, as specified by http://www.w3.org/TR/html-markup/syntax.html. - * - * Capturing groups: - * - * 1. The "!DOCTYPE" tag name, if a tag is a <!DOCTYPE> tag. - * 2. If it is an end tag, this group will have the '/'. - * 3. If it is a comment tag, this group will hold the comment text (i.e. - * the text inside the `<!--` and `-->`. - * 4. The tag name for all tags (other than the <!DOCTYPE> tag) - */ - htmlRegex : (function() { - var commentTagRegex = /!--([\s\S]+?)--/, - tagNameRegex = /[0-9a-zA-Z][0-9a-zA-Z:]*/, - attrNameRegex = /[^\s"'>\/=\x00-\x1F\x7F]+/, // the unicode range accounts for excluding control chars, and the delete char - attrValueRegex = /(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/, // double quoted, single quoted, or unquoted attribute values - nameEqualsValueRegex = attrNameRegex.source + '(?:\\s*=\\s*' + attrValueRegex.source + ')?'; // optional '=[value]' - - return new RegExp( [ - // for tag. Ex: ) - '(?:', - '<(!DOCTYPE)', // *** Capturing Group 1 - If it's a doctype tag - - // Zero or more attributes following the tag name - '(?:', - '\\s+', // one or more whitespace chars before an attribute - - // Either: - // A. attr="value", or - // B. "value" alone (To cover example doctype tag: ) - '(?:', nameEqualsValueRegex, '|', attrValueRegex.source + ')', - ')*', - '>', - ')', - - '|', - - // All other HTML tags (i.e. tags that are not ) - '(?:', - '<(/)?', // Beginning of a tag or comment. Either '<' for a start tag, or '' - - ')', - ')', - '>', - ')' - ].join( "" ), 'gi' ); - } )(), - - /** - * @private - * @property {RegExp} htmlCharacterEntitiesRegex - * - * The regular expression that matches common HTML character entities. - * - * Ignoring & as it could be part of a query string -- handling it separately. - */ - htmlCharacterEntitiesRegex: /( | |<|<|>|>|"|"|')/gi, - - - /** - * Parses an HTML string and returns a simple array of {@link Autolinker.htmlParser.HtmlNode HtmlNodes} - * to represent the HTML structure of the input string. - * - * @param {String} html The HTML to parse. - * @return {Autolinker.htmlParser.HtmlNode[]} - */ - parse : function( html ) { - var htmlRegex = this.htmlRegex, - currentResult, - lastIndex = 0, - textAndEntityNodes, - nodes = []; // will be the result of the method - - while( ( currentResult = htmlRegex.exec( html ) ) !== null ) { - var tagText = currentResult[ 0 ], - commentText = currentResult[ 3 ], // if we've matched a comment - tagName = currentResult[ 1 ] || currentResult[ 4 ], // The tag (ex: "!DOCTYPE"), or another tag (ex: "a" or "img") - isClosingTag = !!currentResult[ 2 ], - offset = currentResult.index, - inBetweenTagsText = html.substring( lastIndex, offset ); - - // Push TextNodes and EntityNodes for any text found between tags - if( inBetweenTagsText ) { - textAndEntityNodes = this.parseTextAndEntityNodes( lastIndex, inBetweenTagsText ); - nodes.push.apply( nodes, textAndEntityNodes ); - } - - // Push the CommentNode or ElementNode - if( commentText ) { - nodes.push( this.createCommentNode( offset, tagText, commentText ) ); - } else { - nodes.push( this.createElementNode( offset, tagText, tagName, isClosingTag ) ); - } - - lastIndex = offset + tagText.length; - } - - // Process any remaining text after the last HTML element. Will process all of the text if there were no HTML elements. - if( lastIndex < html.length ) { - var text = html.substring( lastIndex ); - - // Push TextNodes and EntityNodes for any text found between tags - if( text ) { - textAndEntityNodes = this.parseTextAndEntityNodes( lastIndex, text ); - nodes.push.apply( nodes, textAndEntityNodes ); - } - } - - return nodes; - }, - - - /** - * Parses text and HTML entity nodes from a given string. The input string - * should not have any HTML tags (elements) within it. - * - * @private - * @param {Number} offset The offset of the text node match within the - * original HTML string. - * @param {String} text The string of text to parse. This is from an HTML - * text node. - * @return {Autolinker.htmlParser.HtmlNode[]} An array of HtmlNodes to - * represent the {@link Autolinker.htmlParser.TextNode TextNodes} and - * {@link Autolinker.htmlParser.EntityNode EntityNodes} found. - */ - parseTextAndEntityNodes : function( offset, text ) { - var nodes = [], - textAndEntityTokens = Autolinker.Util.splitAndCapture( text, this.htmlCharacterEntitiesRegex ); // split at HTML entities, but include the HTML entities in the results array - - // Every even numbered token is a TextNode, and every odd numbered token is an EntityNode - // For example: an input `text` of "Test "this" today" would turn into the - // `textAndEntityTokens`: [ 'Test ', '"', 'this', '"', ' today' ] - for( var i = 0, len = textAndEntityTokens.length; i < len; i += 2 ) { - var textToken = textAndEntityTokens[ i ], - entityToken = textAndEntityTokens[ i + 1 ]; - - if( textToken ) { - nodes.push( this.createTextNode( offset, textToken ) ); - offset += textToken.length; - } - if( entityToken ) { - nodes.push( this.createEntityNode( offset, entityToken ) ); - offset += entityToken.length; - } - } - return nodes; - }, - - - /** - * Factory method to create an {@link Autolinker.htmlParser.CommentNode CommentNode}. - * - * @private - * @param {Number} offset The offset of the match within the original HTML - * string. - * @param {String} tagText The full text of the tag (comment) that was - * matched, including its <!-- and -->. - * @param {String} commentText The full text of the comment that was matched. - */ - createCommentNode : function( offset, tagText, commentText ) { - return new Autolinker.htmlParser.CommentNode( { - offset : offset, - text : tagText, - comment: Autolinker.Util.trim( commentText ) - } ); - }, - - - /** - * Factory method to create an {@link Autolinker.htmlParser.ElementNode ElementNode}. - * - * @private - * @param {Number} offset The offset of the match within the original HTML - * string. - * @param {String} tagText The full text of the tag (element) that was - * matched, including its attributes. - * @param {String} tagName The name of the tag. Ex: An <img> tag would - * be passed to this method as "img". - * @param {Boolean} isClosingTag `true` if it's a closing tag, false - * otherwise. - * @return {Autolinker.htmlParser.ElementNode} - */ - createElementNode : function( offset, tagText, tagName, isClosingTag ) { - return new Autolinker.htmlParser.ElementNode( { - offset : offset, - text : tagText, - tagName : tagName.toLowerCase(), - closing : isClosingTag - } ); - }, - - - /** - * Factory method to create a {@link Autolinker.htmlParser.EntityNode EntityNode}. - * - * @private - * @param {Number} offset The offset of the match within the original HTML - * string. - * @param {String} text The text that was matched for the HTML entity (such - * as '&nbsp;'). - * @return {Autolinker.htmlParser.EntityNode} - */ - createEntityNode : function( offset, text ) { - return new Autolinker.htmlParser.EntityNode( { offset: offset, text: text } ); - }, - - - /** - * Factory method to create a {@link Autolinker.htmlParser.TextNode TextNode}. - * - * @private - * @param {Number} offset The offset of the match within the original HTML - * string. - * @param {String} text The text that was matched. - * @return {Autolinker.htmlParser.TextNode} - */ - createTextNode : function( offset, text ) { - return new Autolinker.htmlParser.TextNode( { offset: offset, text: text } ); - } - -} ); -/*global Autolinker */ -/** - * @abstract - * @class Autolinker.htmlParser.HtmlNode - * - * Represents an HTML node found in an input string. An HTML node is one of the - * following: - * - * 1. An {@link Autolinker.htmlParser.ElementNode ElementNode}, which represents - * HTML tags. - * 2. A {@link Autolinker.htmlParser.CommentNode CommentNode}, which represents - * HTML comments. - * 3. A {@link Autolinker.htmlParser.TextNode TextNode}, which represents text - * outside or within HTML tags. - * 4. A {@link Autolinker.htmlParser.EntityNode EntityNode}, which represents - * one of the known HTML entities that Autolinker looks for. This includes - * common ones such as &quot; and &nbsp; - */ -Autolinker.htmlParser.HtmlNode = Autolinker.Util.extend( Object, { - - /** - * @cfg {Number} offset (required) - * - * The offset of the HTML node in the original text that was parsed. - */ - offset : undefined, - - /** - * @cfg {String} text (required) - * - * The text that was matched for the HtmlNode. - * - * - In the case of an {@link Autolinker.htmlParser.ElementNode ElementNode}, - * this will be the tag's text. - * - In the case of an {@link Autolinker.htmlParser.CommentNode CommentNode}, - * this will be the comment's text. - * - In the case of a {@link Autolinker.htmlParser.TextNode TextNode}, this - * will be the text itself. - * - In the case of a {@link Autolinker.htmlParser.EntityNode EntityNode}, - * this will be the text of the HTML entity. - */ - text : undefined, - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match instance, - * specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.Util.assign( this, cfg ); - - if( this.offset == null ) throw new Error( '`offset` cfg required' ); - if( this.text == null ) throw new Error( '`text` cfg required' ); - }, - - - /** - * Returns a string name for the type of node that this class represents. - * - * @abstract - * @return {String} - */ - getType : Autolinker.Util.abstractMethod, - - - /** - * Retrieves the {@link #offset} of the HtmlNode. This is the offset of the - * HTML node in the original string that was parsed. - * - * @return {Number} - */ - getOffset : function() { - return this.offset; - }, - - - /** - * Retrieves the {@link #text} for the HtmlNode. - * - * @return {String} - */ - getText : function() { - return this.text; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.CommentNode - * @extends Autolinker.htmlParser.HtmlNode - * - * Represents an HTML comment node that has been parsed by the - * {@link Autolinker.htmlParser.HtmlParser}. - * - * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more - * details. - */ -Autolinker.htmlParser.CommentNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { - - /** - * @cfg {String} comment (required) - * - * The text inside the comment tag. This text is stripped of any leading or - * trailing whitespace. - */ - comment : '', - - - /** - * Returns a string name for the type of node that this class represents. - * - * @return {String} - */ - getType : function() { - return 'comment'; - }, - - - /** - * Returns the comment inside the comment tag. - * - * @return {String} - */ - getComment : function() { - return this.comment; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.ElementNode - * @extends Autolinker.htmlParser.HtmlNode - * - * Represents an HTML element node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}. - * - * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more - * details. - */ -Autolinker.htmlParser.ElementNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { - - /** - * @cfg {String} tagName (required) - * - * The name of the tag that was matched. - */ - tagName : '', - - /** - * @cfg {Boolean} closing (required) - * - * `true` if the element (tag) is a closing tag, `false` if its an opening - * tag. - */ - closing : false, - - - /** - * Returns a string name for the type of node that this class represents. - * - * @return {String} - */ - getType : function() { - return 'element'; - }, - - - /** - * Returns the HTML element's (tag's) name. Ex: for an <img> tag, - * returns "img". - * - * @return {String} - */ - getTagName : function() { - return this.tagName; - }, - - - /** - * Determines if the HTML element (tag) is a closing tag. Ex: <div> - * returns `false`, while </div> returns `true`. - * - * @return {Boolean} - */ - isClosing : function() { - return this.closing; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.EntityNode - * @extends Autolinker.htmlParser.HtmlNode - * - * Represents a known HTML entity node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}. - * Ex: '&nbsp;', or '&#160;' (which will be retrievable from the {@link #getText} - * method. - * - * Note that this class will only be returned from the HtmlParser for the set of - * checked HTML entity nodes defined by the {@link Autolinker.htmlParser.HtmlParser#htmlCharacterEntitiesRegex}. - * - * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more - * details. - */ -Autolinker.htmlParser.EntityNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { - - /** - * Returns a string name for the type of node that this class represents. - * - * @return {String} - */ - getType : function() { - return 'entity'; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.htmlParser.TextNode - * @extends Autolinker.htmlParser.HtmlNode - * - * Represents a text node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}. - * - * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more - * details. - */ -Autolinker.htmlParser.TextNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { - - /** - * Returns a string name for the type of node that this class represents. - * - * @return {String} - */ - getType : function() { - return 'text'; - } - -} ); -/*global Autolinker */ -/** - * @abstract - * @class Autolinker.match.Match - * - * Represents a match found in an input string which should be Autolinked. A Match object is what is provided in a - * {@link Autolinker#replaceFn replaceFn}, and may be used to query for details about the match. - * - * For example: - * - * var input = "..."; // string with URLs, Email Addresses, and Twitter Handles - * - * var linkedText = Autolinker.link( input, { - * replaceFn : function( autolinker, match ) { - * console.log( "href = ", match.getAnchorHref() ); - * console.log( "text = ", match.getAnchorText() ); - * - * switch( match.getType() ) { - * case 'url' : - * console.log( "url: ", match.getUrl() ); - * - * case 'email' : - * console.log( "email: ", match.getEmail() ); - * - * case 'twitter' : - * console.log( "twitter: ", match.getTwitterHandle() ); - * } - * } - * } ); - * - * See the {@link Autolinker} class for more details on using the {@link Autolinker#replaceFn replaceFn}. - */ -Autolinker.match.Match = Autolinker.Util.extend( Object, { - - /** - * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required) - * - * Reference to the AnchorTagBuilder instance to use to generate an anchor - * tag for the Match. - */ - - /** - * @cfg {String} matchedText (required) - * - * The original text that was matched by the {@link Autolinker.matcher.Matcher}. - */ - - /** - * @cfg {Number} offset (required) - * - * The offset of where the match was made in the input string. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - if( cfg.tagBuilder == null ) throw new Error( '`tagBuilder` cfg required' ); - if( cfg.matchedText == null ) throw new Error( '`matchedText` cfg required' ); - if( cfg.offset == null ) throw new Error( '`offset` cfg required' ); - - this.tagBuilder = cfg.tagBuilder; - this.matchedText = cfg.matchedText; - this.offset = cfg.offset; - }, - - - /** - * Returns a string name for the type of match that this class represents. - * - * @abstract - * @return {String} - */ - getType : Autolinker.Util.abstractMethod, - - - /** - * Returns the original text that was matched. - * - * @return {String} - */ - getMatchedText : function() { - return this.matchedText; - }, - - - /** - * Sets the {@link #offset} of where the match was made in the input string. - * - * A {@link Autolinker.matcher.Matcher} will be fed only HTML text nodes, - * and will therefore set an original offset that is relative to the HTML - * text node itself. However, we want this offset to be relative to the full - * HTML input string, and thus if using {@link Autolinker#parse} (rather - * than calling a {@link Autolinker.matcher.Matcher} directly), then this - * offset is corrected after the Matcher itself has done its job. - * - * @param {Number} offset - */ - setOffset : function( offset ) { - this.offset = offset; - }, - - - /** - * Returns the offset of where the match was made in the input string. This - * is the 0-based index of the match. - * - * @return {Number} - */ - getOffset : function() { - return this.offset; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @abstract - * @return {String} - */ - getAnchorHref : Autolinker.Util.abstractMethod, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @abstract - * @return {String} - */ - getAnchorText : Autolinker.Util.abstractMethod, - - - /** - * Builds and returns an {@link Autolinker.HtmlTag} instance based on the - * Match. - * - * This can be used to easily generate anchor tags from matches, and either - * return their HTML string, or modify them before doing so. - * - * Example Usage: - * - * var tag = match.buildTag(); - * tag.addClass( 'cordova-link' ); - * tag.setAttr( 'target', '_system' ); - * - * tag.toAnchorString(); // Google - */ - buildTag : function() { - return this.tagBuilder.build( this ); - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.match.Email - * @extends Autolinker.match.Match - * - * Represents a Email match found in an input string which should be Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more details. - */ -Autolinker.match.Email = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @cfg {String} email (required) - * - * The email address that was matched. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - if( !cfg.email ) throw new Error( '`email` cfg required' ); - - this.email = cfg.email; - }, - - - /** - * Returns a string name for the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'email'; - }, - - - /** - * Returns the email address that was matched. - * - * @return {String} - */ - getEmail : function() { - return this.email; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - return 'mailto:' + this.email; - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - return this.email; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.match.Hashtag - * @extends Autolinker.match.Match - * - * Represents a Hashtag match found in an input string which should be - * Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more - * details. - */ -Autolinker.match.Hashtag = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @cfg {String} serviceName - * - * The service to point hashtag matches to. See {@link Autolinker#hashtag} - * for available values. - */ - - /** - * @cfg {String} hashtag (required) - * - * The Hashtag that was matched, without the '#'. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - // TODO: if( !serviceName ) throw new Error( '`serviceName` cfg required' ); - if( !cfg.hashtag ) throw new Error( '`hashtag` cfg required' ); - - this.serviceName = cfg.serviceName; - this.hashtag = cfg.hashtag; - }, - - - /** - * Returns the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'hashtag'; - }, - - - /** - * Returns the configured {@link #serviceName} to point the Hashtag to. - * Ex: 'facebook', 'twitter'. - * - * @return {String} - */ - getServiceName : function() { - return this.serviceName; - }, - - - /** - * Returns the matched hashtag, without the '#' character. - * - * @return {String} - */ - getHashtag : function() { - return this.hashtag; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - var serviceName = this.serviceName, - hashtag = this.hashtag; - - switch( serviceName ) { - case 'twitter' : - return 'https://twitter.com/hashtag/' + hashtag; - case 'facebook' : - return 'https://www.facebook.com/hashtag/' + hashtag; - case 'instagram' : - return 'https://instagram.com/explore/tags/' + hashtag; - - default : // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case. - throw new Error( 'Unknown service name to point hashtag to: ', serviceName ); - } - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - return '#' + this.hashtag; - } - -} ); - -/*global Autolinker */ -/** - * @class Autolinker.match.Phone - * @extends Autolinker.match.Match - * - * Represents a Phone number match found in an input string which should be - * Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more - * details. - */ -Autolinker.match.Phone = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @protected - * @property {String} number (required) - * - * The phone number that was matched, without any delimiter characters. - * - * Note: This is a string to allow for prefixed 0's. - */ - - /** - * @protected - * @property {Boolean} plusSign (required) - * - * `true` if the matched phone number started with a '+' sign. We'll include - * it in the `tel:` URL if so, as this is needed for international numbers. - * - * Ex: '+1 (123) 456 7879' - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - if( !cfg.number ) throw new Error( '`number` cfg required' ); - if( cfg.plusSign == null ) throw new Error( '`plusSign` cfg required' ); - - this.number = cfg.number; - this.plusSign = cfg.plusSign; - }, - - - /** - * Returns a string name for the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'phone'; - }, - - - /** - * Returns the phone number that was matched as a string, without any - * delimiter characters. - * - * Note: This is a string to allow for prefixed 0's. - * - * @return {String} - */ - getNumber: function() { - return this.number; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - return 'tel:' + ( this.plusSign ? '+' : '' ) + this.number; - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - return this.matchedText; - } - -} ); - -/*global Autolinker */ -/** - * @class Autolinker.match.Twitter - * @extends Autolinker.match.Match - * - * Represents a Twitter match found in an input string which should be Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more details. - */ -Autolinker.match.Twitter = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @cfg {String} twitterHandle (required) - * - * The Twitter handle that was matched, without the '@' character. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - if( !cfg.twitterHandle ) throw new Error( '`twitterHandle` cfg required' ); - - this.twitterHandle = cfg.twitterHandle; - }, - - - /** - * Returns the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'twitter'; - }, - - - /** - * Returns the twitter handle, without the '@' character. - * - * @return {String} - */ - getTwitterHandle : function() { - return this.twitterHandle; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - return 'https://twitter.com/' + this.twitterHandle; - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - return '@' + this.twitterHandle; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.match.Url - * @extends Autolinker.match.Match - * - * Represents a Url match found in an input string which should be Autolinked. - * - * See this class's superclass ({@link Autolinker.match.Match}) for more details. - */ -Autolinker.match.Url = Autolinker.Util.extend( Autolinker.match.Match, { - - /** - * @cfg {String} url (required) - * - * The url that was matched. - */ - - /** - * @cfg {"scheme"/"www"/"tld"} urlMatchType (required) - * - * The type of URL match that this class represents. This helps to determine - * if the match was made in the original text with a prefixed scheme (ex: - * 'http://www.google.com'), a prefixed 'www' (ex: 'www.google.com'), or - * was matched by a known top-level domain (ex: 'google.com'). - */ - - /** - * @cfg {Boolean} protocolUrlMatch (required) - * - * `true` if the URL is a match which already has a protocol (i.e. - * 'http://'), `false` if the match was from a 'www' or known TLD match. - */ - - /** - * @cfg {Boolean} protocolRelativeMatch (required) - * - * `true` if the URL is a protocol-relative match. A protocol-relative match - * is a URL that starts with '//', and will be either http:// or https:// - * based on the protocol that the site is loaded under. - */ - - /** - * @cfg {Boolean} stripPrefix (required) - * @inheritdoc Autolinker#cfg-stripPrefix - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.match.Match.prototype.constructor.call( this, cfg ); - - if( cfg.urlMatchType !== 'scheme' && cfg.urlMatchType !== 'www' && cfg.urlMatchType !== 'tld' ) throw new Error( '`urlMatchType` cfg must be one of: "scheme", "www", or "tld"' ); - if( !cfg.url ) throw new Error( '`url` cfg required' ); - if( cfg.protocolUrlMatch == null ) throw new Error( '`protocolUrlMatch` cfg required' ); - if( cfg.protocolRelativeMatch == null ) throw new Error( '`protocolRelativeMatch` cfg required' ); - if( cfg.stripPrefix == null ) throw new Error( '`stripPrefix` cfg required' ); - - this.urlMatchType = cfg.urlMatchType; - this.url = cfg.url; - this.protocolUrlMatch = cfg.protocolUrlMatch; - this.protocolRelativeMatch = cfg.protocolRelativeMatch; - this.stripPrefix = cfg.stripPrefix; - }, - - - /** - * @private - * @property {RegExp} urlPrefixRegex - * - * A regular expression used to remove the 'http://' or 'https://' and/or the 'www.' from URLs. - */ - urlPrefixRegex: /^(https?:\/\/)?(www\.)?/i, - - /** - * @private - * @property {RegExp} protocolRelativeRegex - * - * The regular expression used to remove the protocol-relative '//' from the {@link #url} string, for purposes - * of {@link #getAnchorText}. A protocol-relative URL is, for example, "//yahoo.com" - */ - protocolRelativeRegex : /^\/\//, - - /** - * @private - * @property {Boolean} protocolPrepended - * - * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the - * {@link #url} did not have a protocol) - */ - protocolPrepended : false, - - - /** - * Returns a string name for the type of match that this class represents. - * - * @return {String} - */ - getType : function() { - return 'url'; - }, - - - /** - * Returns a string name for the type of URL match that this class - * represents. - * - * This helps to determine if the match was made in the original text with a - * prefixed scheme (ex: 'http://www.google.com'), a prefixed 'www' (ex: - * 'www.google.com'), or was matched by a known top-level domain (ex: - * 'google.com'). - * - * @return {"scheme"/"www"/"tld"} - */ - getUrlMatchType : function() { - return this.urlMatchType; - }, - - - /** - * Returns the url that was matched, assuming the protocol to be 'http://' if the original - * match was missing a protocol. - * - * @return {String} - */ - getUrl : function() { - var url = this.url; - - // if the url string doesn't begin with a protocol, assume 'http://' - if( !this.protocolRelativeMatch && !this.protocolUrlMatch && !this.protocolPrepended ) { - url = this.url = 'http://' + url; - - this.protocolPrepended = true; - } - - return url; - }, - - - /** - * Returns the anchor href that should be generated for the match. - * - * @return {String} - */ - getAnchorHref : function() { - var url = this.getUrl(); - - return url.replace( /&/g, '&' ); // any &'s in the URL should be converted back to '&' if they were displayed as & in the source html - }, - - - /** - * Returns the anchor text that should be generated for the match. - * - * @return {String} - */ - getAnchorText : function() { - var anchorText = this.getMatchedText(); - - if( this.protocolRelativeMatch ) { - // Strip off any protocol-relative '//' from the anchor text - anchorText = this.stripProtocolRelativePrefix( anchorText ); - } - if( this.stripPrefix ) { - anchorText = this.stripUrlPrefix( anchorText ); - } - anchorText = this.removeTrailingSlash( anchorText ); // remove trailing slash, if there is one - - return anchorText; - }, - - - // --------------------------------------- - - // Utility Functionality - - /** - * Strips the URL prefix (such as "http://" or "https://") from the given text. - * - * @private - * @param {String} text The text of the anchor that is being generated, for which to strip off the - * url prefix (such as stripping off "http://") - * @return {String} The `anchorText`, with the prefix stripped. - */ - stripUrlPrefix : function( text ) { - return text.replace( this.urlPrefixRegex, '' ); - }, - - - /** - * Strips any protocol-relative '//' from the anchor text. - * - * @private - * @param {String} text The text of the anchor that is being generated, for which to strip off the - * protocol-relative prefix (such as stripping off "//") - * @return {String} The `anchorText`, with the protocol-relative prefix stripped. - */ - stripProtocolRelativePrefix : function( text ) { - return text.replace( this.protocolRelativeRegex, '' ); - }, - - - /** - * Removes any trailing slash from the given `anchorText`, in preparation for the text to be displayed. - * - * @private - * @param {String} anchorText The text of the anchor that is being generated, for which to remove any trailing - * slash ('/') that may exist. - * @return {String} The `anchorText`, with the trailing slash removed. - */ - removeTrailingSlash : function( anchorText ) { - if( anchorText.charAt( anchorText.length - 1 ) === '/' ) { - anchorText = anchorText.slice( 0, -1 ); - } - return anchorText; - } - -} ); -/*global Autolinker */ -/** - * @abstract - * @class Autolinker.matcher.Matcher - * - * An abstract class and interface for individual matchers to find matches in - * an input string with linkified versions of them. - * - * Note that Matchers do not take HTML into account - they must be fed the text - * nodes of any HTML string, which is handled by {@link Autolinker#parse}. - */ -Autolinker.matcher.Matcher = Autolinker.Util.extend( Object, { - - /** - * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required) - * - * Reference to the AnchorTagBuilder instance to use to generate HTML tags - * for {@link Autolinker.match.Match Matches}. - */ - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Matcher - * instance, specified in an Object (map). - */ - constructor : function( cfg ) { - if( !cfg.tagBuilder ) throw new Error( '`tagBuilder` cfg required' ); - - this.tagBuilder = cfg.tagBuilder; - }, - - - /** - * Parses the input `text` and returns the array of {@link Autolinker.match.Match Matches} - * for the matcher. - * - * @abstract - * @param {String} text The text to scan and replace matches in. - * @return {Autolinker.match.Match[]} - */ - parseMatches : Autolinker.Util.abstractMethod - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Email - * @extends Autolinker.matcher.Matcher - * - * Matcher to find email matches in an input string. - * - * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details. - */ -Autolinker.matcher.Email = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * The regular expression to match email addresses. Example match: - * - * person@place.com - * - * @private - * @property {RegExp} matcherRegex - */ - matcherRegex : (function() { - var alphaNumericChars = Autolinker.RegexLib.alphaNumericCharsStr, - emailRegex = new RegExp( '[' + alphaNumericChars + '\\-_\';:&=+$.,]+@' ), // something@ for email addresses (a.k.a. local-part) - domainNameRegex = Autolinker.RegexLib.domainNameRegex, - tldRegex = Autolinker.RegexLib.tldRegex; // match our known top level domains (TLDs) - - return new RegExp( [ - emailRegex.source, - domainNameRegex.source, - '\\.', tldRegex.source // '.com', '.net', etc - ].join( "" ), 'gi' ); - } )(), - - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - var matchedText = match[ 0 ]; - - matches.push( new Autolinker.match.Email( { - tagBuilder : tagBuilder, - matchedText : matchedText, - offset : match.index, - email : matchedText - } ) ); - } - - return matches; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Hashtag - * @extends Autolinker.matcher.Matcher - * - * Matcher to find Hashtag matches in an input string. - */ -Autolinker.matcher.Hashtag = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * @cfg {String} serviceName - * - * The service to point hashtag matches to. See {@link Autolinker#hashtag} - * for available values. - */ - - - /** - * The regular expression to match Hashtags. Example match: - * - * #asdf - * - * @private - * @property {RegExp} matcherRegex - */ - matcherRegex : new RegExp( '#[_' + Autolinker.RegexLib.alphaNumericCharsStr + ']{1,139}', 'g' ), - - /** - * The regular expression to use to check the character before a username match to - * make sure we didn't accidentally match an email address. - * - * For example, the string "asdf@asdf.com" should not match "@asdf" as a username. - * - * @private - * @property {RegExp} nonWordCharRegex - */ - nonWordCharRegex : new RegExp( '[^' + Autolinker.RegexLib.alphaNumericCharsStr + ']' ), - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match instance, - * specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.matcher.Matcher.prototype.constructor.call( this, cfg ); - - this.serviceName = cfg.serviceName; - }, - - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - nonWordCharRegex = this.nonWordCharRegex, - serviceName = this.serviceName, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - var offset = match.index, - prevChar = text.charAt( offset - 1 ); - - // If we found the match at the beginning of the string, or we found the match - // and there is a whitespace char in front of it (meaning it is not a '#' char - // in the middle of a word), then it is a hashtag match. - if( offset === 0 || nonWordCharRegex.test( prevChar ) ) { - var matchedText = match[ 0 ], - hashtag = match[ 0 ].slice( 1 ); // strip off the '#' character at the beginning - - matches.push( new Autolinker.match.Hashtag( { - tagBuilder : tagBuilder, - matchedText : matchedText, - offset : offset, - serviceName : serviceName, - hashtag : hashtag - } ) ); - } - } - - return matches; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Phone - * @extends Autolinker.matcher.Matcher - * - * Matcher to find Phone number matches in an input string. - * - * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more - * details. - */ -Autolinker.matcher.Phone = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * The regular expression to match Phone numbers. Example match: - * - * (123) 456-7890 - * - * This regular expression has the following capturing groups: - * - * 1. The prefixed '+' sign, if there is one. - * - * @private - * @property {RegExp} matcherRegex - */ - matcherRegex : /(?:(\+)?\d{1,3}[-\040.])?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]\d{4}/g, // ex: (123) 456-7890, 123 456 7890, 123-456-7890, etc. - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - // Remove non-numeric values from phone number string - var matchedText = match[ 0 ], - cleanNumber = matchedText.replace( /\D/g, '' ), // strip out non-digit characters - plusSign = !!match[ 1 ]; // match[ 1 ] is the prefixed plus sign, if there is one - - matches.push( new Autolinker.match.Phone( { - tagBuilder : tagBuilder, - matchedText : matchedText, - offset : match.index, - number : cleanNumber, - plusSign : plusSign - } ) ); - } - - return matches; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Twitter - * @extends Autolinker.matcher.Matcher - * - * Matcher to find/replace username matches in an input string. - */ -Autolinker.matcher.Twitter = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * The regular expression to match username handles. Example match: - * - * @asdf - * - * @private - * @property {RegExp} matcherRegex - */ - matcherRegex : new RegExp( '@[_' + Autolinker.RegexLib.alphaNumericCharsStr + ']{1,20}', 'g' ), - - /** - * The regular expression to use to check the character before a username match to - * make sure we didn't accidentally match an email address. - * - * For example, the string "asdf@asdf.com" should not match "@asdf" as a username. - * - * @private - * @property {RegExp} nonWordCharRegex - */ - nonWordCharRegex : new RegExp( '[^' + Autolinker.RegexLib.alphaNumericCharsStr + ']' ), - - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - nonWordCharRegex = this.nonWordCharRegex, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - var offset = match.index, - prevChar = text.charAt( offset - 1 ); - - // If we found the match at the beginning of the string, or we found the match - // and there is a whitespace char in front of it (meaning it is not an email - // address), then it is a username match. - if( offset === 0 || nonWordCharRegex.test( prevChar ) ) { - var matchedText = match[ 0 ], - twitterHandle = match[ 0 ].slice( 1 ); // strip off the '@' character at the beginning - - matches.push( new Autolinker.match.Twitter( { - tagBuilder : tagBuilder, - matchedText : matchedText, - offset : offset, - twitterHandle : twitterHandle - } ) ); - } - } - - return matches; - } - -} ); -/*global Autolinker */ -/** - * @class Autolinker.matcher.Url - * @extends Autolinker.matcher.Matcher - * - * Matcher to find URL matches in an input string. - * - * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details. - */ -Autolinker.matcher.Url = Autolinker.Util.extend( Autolinker.matcher.Matcher, { - - /** - * @cfg {Boolean} stripPrefix (required) - * @inheritdoc Autolinker#stripPrefix - */ - - - /** - * @private - * @property {RegExp} matcherRegex - * - * The regular expression to match URLs with an optional scheme, port - * number, path, query string, and hash anchor. - * - * Example matches: - * - * http://google.com - * www.google.com - * google.com/path/to/file?q1=1&q2=2#myAnchor - * - * - * This regular expression will have the following capturing groups: - * - * 1. Group that matches a scheme-prefixed URL (i.e. 'http://google.com'). - * This is used to match scheme URLs with just a single word, such as - * 'http://localhost', where we won't double check that the domain name - * has at least one dot ('.') in it. - * 2. Group that matches a 'www.' prefixed URL. This is only matched if the - * 'www.' text was not prefixed by a scheme (i.e.: not prefixed by - * 'http://', 'ftp:', etc.) - * 3. A protocol-relative ('//') match for the case of a 'www.' prefixed - * URL. Will be an empty string if it is not a protocol-relative match. - * We need to know the character before the '//' in order to determine - * if it is a valid match or the // was in a string we don't want to - * auto-link. - * 4. Group that matches a known TLD (top level domain), when a scheme - * or 'www.'-prefixed domain is not matched. - * 5. A protocol-relative ('//') match for the case of a known TLD prefixed - * URL. Will be an empty string if it is not a protocol-relative match. - * See #3 for more info. - */ - matcherRegex : (function() { - var schemeRegex = /(?:[A-Za-z][-.+A-Za-z0-9]*:(?![A-Za-z][-.+A-Za-z0-9]*:\/\/)(?!\d+\/?)(?:\/\/)?)/, // match protocol, allow in format "http://" or "mailto:". However, do not match the first part of something like 'link:http://www.google.com' (i.e. don't match "link:"). Also, make sure we don't interpret 'google.com:8000' as if 'google.com' was a protocol here (i.e. ignore a trailing port number in this regex) - wwwRegex = /(?:www\.)/, // starting with 'www.' - domainNameRegex = Autolinker.RegexLib.domainNameRegex, - tldRegex = Autolinker.RegexLib.tldRegex, // match our known top level domains (TLDs) - alphaNumericCharsStr = Autolinker.RegexLib.alphaNumericCharsStr, - - // Allow optional path, query string, and hash anchor, not ending in the following characters: "?!:,.;" - // http://blog.codinghorror.com/the-problem-with-urls/ - urlSuffixRegex = new RegExp( '[' + alphaNumericCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]?!:,.;]*[' + alphaNumericCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]]' ); - - return new RegExp( [ - '(?:', // parens to cover match for scheme (optional), and domain - '(', // *** Capturing group $1, for a scheme-prefixed url (ex: http://google.com) - schemeRegex.source, - domainNameRegex.source, - ')', - - '|', - - '(', // *** Capturing group $2, for a 'www.' prefixed url (ex: www.google.com) - '(//)?', // *** Capturing group $3 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character (handled later) - wwwRegex.source, - domainNameRegex.source, - ')', - - '|', - - '(', // *** Capturing group $4, for known a TLD url (ex: google.com) - '(//)?', // *** Capturing group $5 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character (handled later) - domainNameRegex.source + '\\.', - tldRegex.source, - ')', - ')', - - '(?:' + urlSuffixRegex.source + ')?' // match for path, query string, and/or hash anchor - optional - ].join( "" ), 'gi' ); - } )(), - - - /** - * A regular expression to use to check the character before a protocol-relative - * URL match. We don't want to match a protocol-relative URL if it is part - * of another word. - * - * For example, we want to match something like "Go to: //google.com", - * but we don't want to match something like "abc//google.com" - * - * This regular expression is used to test the character before the '//'. - * - * @private - * @type {RegExp} wordCharRegExp - */ - wordCharRegExp : /\w/, - - - /** - * The regular expression to match opening parenthesis in a URL match. - * - * This is to determine if we have unbalanced parenthesis in the URL, and to - * drop the final parenthesis that was matched if so. - * - * Ex: The text "(check out: wikipedia.com/something_(disambiguation))" - * should only autolink the inner "wikipedia.com/something_(disambiguation)" - * part, so if we find that we have unbalanced parenthesis, we will drop the - * last one for the match. - * - * @private - * @property {RegExp} - */ - openParensRe : /\(/g, - - /** - * The regular expression to match closing parenthesis in a URL match. See - * {@link #openParensRe} for more information. - * - * @private - * @property {RegExp} - */ - closeParensRe : /\)/g, - - - /** - * @constructor - * @param {Object} cfg The configuration properties for the Match instance, - * specified in an Object (map). - */ - constructor : function( cfg ) { - Autolinker.matcher.Matcher.prototype.constructor.call( this, cfg ); - - this.stripPrefix = cfg.stripPrefix; - - if( this.stripPrefix == null ) throw new Error( '`stripPrefix` cfg required' ); - }, - - - /** - * @inheritdoc - */ - parseMatches : function( text ) { - var matcherRegex = this.matcherRegex, - stripPrefix = this.stripPrefix, - tagBuilder = this.tagBuilder, - matches = [], - match; - - while( ( match = matcherRegex.exec( text ) ) !== null ) { - var matchStr = match[ 0 ], - schemeUrlMatch = match[ 1 ], - wwwUrlMatch = match[ 2 ], - wwwProtocolRelativeMatch = match[ 3 ], - //tldUrlMatch = match[ 4 ], -- not needed at the moment - tldProtocolRelativeMatch = match[ 5 ], - offset = match.index, - protocolRelativeMatch = wwwProtocolRelativeMatch || tldProtocolRelativeMatch, - prevChar = text.charAt( offset - 1 ); - - if( !Autolinker.matcher.UrlMatchValidator.isValid( matchStr, schemeUrlMatch ) ) { - continue; - } - - // If the match is preceded by an '@' character, then it is either - // an email address or a username. Skip these types of matches. - if( offset > 0 && prevChar === '@' ) { - continue; - } - - // If it's a protocol-relative '//' match, but the character before the '//' - // was a word character (i.e. a letter/number), then we found the '//' in the - // middle of another word (such as "asdf//asdf.com"). In this case, skip the - // match. - if( offset > 0 && protocolRelativeMatch && this.wordCharRegExp.test( prevChar ) ) { - continue; - } - - // Handle a closing parenthesis at the end of the match, and exclude - // it if there is not a matching open parenthesis in the match - // itself. - if( this.matchHasUnbalancedClosingParen( matchStr ) ) { - matchStr = matchStr.substr( 0, matchStr.length - 1 ); // remove the trailing ")" - } else { - // Handle an invalid character after the TLD - var pos = this.matchHasInvalidCharAfterTld( matchStr, schemeUrlMatch ); - if( pos > -1 ) { - matchStr = matchStr.substr( 0, pos ); // remove the trailing invalid chars - } - } - - var urlMatchType = schemeUrlMatch ? 'scheme' : ( wwwUrlMatch ? 'www' : 'tld' ), - protocolUrlMatch = !!schemeUrlMatch; - - matches.push( new Autolinker.match.Url( { - tagBuilder : tagBuilder, - matchedText : matchStr, - offset : offset, - urlMatchType : urlMatchType, - url : matchStr, - protocolUrlMatch : protocolUrlMatch, - protocolRelativeMatch : !!protocolRelativeMatch, - stripPrefix : stripPrefix - } ) ); - } - - return matches; - }, - - - /** - * Determines if a match found has an unmatched closing parenthesis. If so, - * this parenthesis will be removed from the match itself, and appended - * after the generated anchor tag. - * - * A match may have an extra closing parenthesis at the end of the match - * because the regular expression must include parenthesis for URLs such as - * "wikipedia.com/something_(disambiguation)", which should be auto-linked. - * - * However, an extra parenthesis *will* be included when the URL itself is - * wrapped in parenthesis, such as in the case of "(wikipedia.com/something_(disambiguation))". - * In this case, the last closing parenthesis should *not* be part of the - * URL itself, and this method will return `true`. - * - * @private - * @param {String} matchStr The full match string from the {@link #matcherRegex}. - * @return {Boolean} `true` if there is an unbalanced closing parenthesis at - * the end of the `matchStr`, `false` otherwise. - */ - matchHasUnbalancedClosingParen : function( matchStr ) { - var lastChar = matchStr.charAt( matchStr.length - 1 ); - - if( lastChar === ')' ) { - var openParensMatch = matchStr.match( this.openParensRe ), - closeParensMatch = matchStr.match( this.closeParensRe ), - numOpenParens = ( openParensMatch && openParensMatch.length ) || 0, - numCloseParens = ( closeParensMatch && closeParensMatch.length ) || 0; - - if( numOpenParens < numCloseParens ) { - return true; - } - } - - return false; - }, - - - /** - * Determine if there's an invalid character after the TLD in a URL. Valid - * characters after TLD are ':/?#'. Exclude scheme matched URLs from this - * check. - * - * @private - * @param {String} urlMatch The matched URL, if there was one. Will be an - * empty string if the match is not a URL match. - * @param {String} schemeUrlMatch The match URL string for a scheme - * match. Ex: 'http://yahoo.com'. This is used to match something like - * 'http://localhost', where we won't double check that the domain name - * has at least one '.' in it. - * @return {Number} the position where the invalid character was found. If - * no such character was found, returns -1 - */ - matchHasInvalidCharAfterTld : function( urlMatch, schemeUrlMatch ) { - if( !urlMatch ) { - return -1; - } - - var offset = 0; - if ( schemeUrlMatch ) { - offset = urlMatch.indexOf(':'); - urlMatch = urlMatch.slice(offset); - } - - var re = /^((.?\/\/)?[A-Za-z0-9\u00C0-\u017F\.\-]*[A-Za-z0-9\u00C0-\u017F\-]\.[A-Za-z]+)/; - var res = re.exec( urlMatch ); - if ( res === null ) { - return -1; - } - - offset += res[1].length; - urlMatch = urlMatch.slice(res[1].length); - if (/^[^.A-Za-z:\/?#]/.test(urlMatch)) { - return offset; - } - - return -1; - } - -} ); -/*global Autolinker */ -/*jshint scripturl:true */ -/** - * @private - * @class Autolinker.matcher.UrlMatchValidator - * @singleton - * - * Used by Autolinker to filter out false URL positives from the - * {@link Autolinker.matcher.Url UrlMatcher}. - * - * Due to the limitations of regular expressions (including the missing feature - * of look-behinds in JS regular expressions), we cannot always determine the - * validity of a given match. This class applies a bit of additional logic to - * filter out any false positives that have been matched by the - * {@link Autolinker.matcher.Url UrlMatcher}. - */ -Autolinker.matcher.UrlMatchValidator = { - - /** - * Regex to test for a full protocol, with the two trailing slashes. Ex: 'http://' - * - * @private - * @property {RegExp} hasFullProtocolRegex - */ - hasFullProtocolRegex : /^[A-Za-z][-.+A-Za-z0-9]*:\/\//, - - /** - * Regex to find the URI scheme, such as 'mailto:'. - * - * This is used to filter out 'javascript:' and 'vbscript:' schemes. - * - * @private - * @property {RegExp} uriSchemeRegex - */ - uriSchemeRegex : /^[A-Za-z][-.+A-Za-z0-9]*:/, - - /** - * Regex to determine if at least one word char exists after the protocol (i.e. after the ':') - * - * @private - * @property {RegExp} hasWordCharAfterProtocolRegex - */ - hasWordCharAfterProtocolRegex : /:[^\s]*?[A-Za-z\u00C0-\u017F]/, - - /** - * Regex to determine if the string is a valid IP address - * - * @private - * @property {RegExp} ipRegex - */ - ipRegex: /[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/, - - /** - * Determines if a given URL match found by the {@link Autolinker.matcher.Url UrlMatcher} - * is valid. Will return `false` for: - * - * 1) URL matches which do not have at least have one period ('.') in the - * domain name (effectively skipping over matches like "abc:def"). - * However, URL matches with a protocol will be allowed (ex: 'http://localhost') - * 2) URL matches which do not have at least one word character in the - * domain name (effectively skipping over matches like "git:1.0"). - * 3) A protocol-relative url match (a URL beginning with '//') whose - * previous character is a word character (effectively skipping over - * strings like "abc//google.com") - * - * Otherwise, returns `true`. - * - * @param {String} urlMatch The matched URL, if there was one. Will be an - * empty string if the match is not a URL match. - * @param {String} protocolUrlMatch The match URL string for a protocol - * match. Ex: 'http://yahoo.com'. This is used to match something like - * 'http://localhost', where we won't double check that the domain name - * has at least one '.' in it. - * @return {Boolean} `true` if the match given is valid and should be - * processed, or `false` if the match is invalid and/or should just not be - * processed. - */ - isValid : function( urlMatch, protocolUrlMatch ) { - if( - ( protocolUrlMatch && !this.isValidUriScheme( protocolUrlMatch ) ) || - this.urlMatchDoesNotHaveProtocolOrDot( urlMatch, protocolUrlMatch ) || // At least one period ('.') must exist in the URL match for us to consider it an actual URL, *unless* it was a full protocol match (like 'http://localhost') - (this.urlMatchDoesNotHaveAtLeastOneWordChar( urlMatch, protocolUrlMatch ) && // At least one letter character must exist in the domain name after a protocol match. Ex: skip over something like "git:1.0" - !this.isValidIpAddress( urlMatch ) // Except if it's an IP address - ) - ) { - return false; - } - - return true; - }, - - - isValidIpAddress : function ( uriSchemeMatch ) { - var newRegex = new RegExp(this.hasFullProtocolRegex.source + this.ipRegex.source); - var uriScheme = uriSchemeMatch.match( newRegex ); - - return uriScheme !== null; - }, - - /** - * Determines if the URI scheme is a valid scheme to be autolinked. Returns - * `false` if the scheme is 'javascript:' or 'vbscript:' - * - * @private - * @param {String} uriSchemeMatch The match URL string for a full URI scheme - * match. Ex: 'http://yahoo.com' or 'mailto:a@a.com'. - * @return {Boolean} `true` if the scheme is a valid one, `false` otherwise. - */ - isValidUriScheme : function( uriSchemeMatch ) { - var uriScheme = uriSchemeMatch.match( this.uriSchemeRegex )[ 0 ].toLowerCase(); - - return ( uriScheme !== 'javascript:' && uriScheme !== 'vbscript:' ); - }, - - - /** - * Determines if a URL match does not have either: - * - * a) a full protocol (i.e. 'http://'), or - * b) at least one dot ('.') in the domain name (for a non-full-protocol - * match). - * - * Either situation is considered an invalid URL (ex: 'git:d' does not have - * either the '://' part, or at least one dot in the domain name. If the - * match was 'git:abc.com', we would consider this valid.) - * - * @private - * @param {String} urlMatch The matched URL, if there was one. Will be an - * empty string if the match is not a URL match. - * @param {String} protocolUrlMatch The match URL string for a protocol - * match. Ex: 'http://yahoo.com'. This is used to match something like - * 'http://localhost', where we won't double check that the domain name - * has at least one '.' in it. - * @return {Boolean} `true` if the URL match does not have a full protocol, - * or at least one dot ('.') in a non-full-protocol match. - */ - urlMatchDoesNotHaveProtocolOrDot : function( urlMatch, protocolUrlMatch ) { - return ( !!urlMatch && ( !protocolUrlMatch || !this.hasFullProtocolRegex.test( protocolUrlMatch ) ) && urlMatch.indexOf( '.' ) === -1 ); - }, - - - /** - * Determines if a URL match does not have at least one word character after - * the protocol (i.e. in the domain name). - * - * At least one letter character must exist in the domain name after a - * protocol match. Ex: skip over something like "git:1.0" - * - * @private - * @param {String} urlMatch The matched URL, if there was one. Will be an - * empty string if the match is not a URL match. - * @param {String} protocolUrlMatch The match URL string for a protocol - * match. Ex: 'http://yahoo.com'. This is used to know whether or not we - * have a protocol in the URL string, in order to check for a word - * character after the protocol separator (':'). - * @return {Boolean} `true` if the URL match does not have at least one word - * character in it after the protocol, `false` otherwise. - */ - urlMatchDoesNotHaveAtLeastOneWordChar : function( urlMatch, protocolUrlMatch ) { - if( urlMatch && protocolUrlMatch ) { - return !this.hasWordCharAfterProtocolRegex.test( urlMatch ); - } else { - return false; - } - } - -}; -/*global Autolinker */ -/** - * A truncation feature where the ellipsis will be placed at the end of the URL. - * - * @param {String} anchorText - * @param {Number} truncateLen The maximum length of the truncated output URL string. - * @param {String} ellipsisChars The characters to place within the url, e.g. "..". - * @return {String} The truncated URL. - */ -Autolinker.truncate.TruncateEnd = function(anchorText, truncateLen, ellipsisChars){ - return Autolinker.Util.ellipsis( anchorText, truncateLen, ellipsisChars ); -}; - -/*global Autolinker */ -/** - * Date: 2015-10-05 - * Author: Kasper Søfren (https://github.com/kafoso) - * - * A truncation feature, where the ellipsis will be placed in the dead-center of the URL. - * - * @param {String} url A URL. - * @param {Number} truncateLen The maximum length of the truncated output URL string. - * @param {String} ellipsisChars The characters to place within the url, e.g. "..". - * @return {String} The truncated URL. - */ -Autolinker.truncate.TruncateMiddle = function(url, truncateLen, ellipsisChars){ - if (url.length <= truncateLen) { - return url; - } - var availableLength = truncateLen - ellipsisChars.length; - var end = ""; - if (availableLength > 0) { - end = url.substr((-1)*Math.floor(availableLength/2)); - } - return (url.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, truncateLen); -}; - -/*global Autolinker */ -/** - * Date: 2015-10-05 - * Author: Kasper Søfren (https://github.com/kafoso) - * - * A truncation feature, where the ellipsis will be placed at a section within - * the URL making it still somewhat human readable. - * - * @param {String} url A URL. - * @param {Number} truncateLen The maximum length of the truncated output URL string. - * @param {String} ellipsisChars The characters to place within the url, e.g. "..". - * @return {String} The truncated URL. - */ -Autolinker.truncate.TruncateSmart = function(url, truncateLen, ellipsisChars){ - var parse_url = function(url){ // Functionality inspired by PHP function of same name - var urlObj = {}; - var urlSub = url; - var match = urlSub.match(/^([a-z]+):\/\//i); - if (match) { - urlObj.scheme = match[1]; - urlSub = urlSub.substr(match[0].length); - } - match = urlSub.match(/^(.*?)(?=(\?|#|\/|$))/i); - if (match) { - urlObj.host = match[1]; - urlSub = urlSub.substr(match[0].length); - } - match = urlSub.match(/^\/(.*?)(?=(\?|#|$))/i); - if (match) { - urlObj.path = match[1]; - urlSub = urlSub.substr(match[0].length); - } - match = urlSub.match(/^\?(.*?)(?=(#|$))/i); - if (match) { - urlObj.query = match[1]; - urlSub = urlSub.substr(match[0].length); - } - match = urlSub.match(/^#(.*?)$/i); - if (match) { - urlObj.fragment = match[1]; - //urlSub = urlSub.substr(match[0].length); -- not used. Uncomment if adding another block. - } - return urlObj; - }; - - var buildUrl = function(urlObj){ - var url = ""; - if (urlObj.scheme && urlObj.host) { - url += urlObj.scheme + "://"; - } - if (urlObj.host) { - url += urlObj.host; - } - if (urlObj.path) { - url += "/" + urlObj.path; - } - if (urlObj.query) { - url += "?" + urlObj.query; - } - if (urlObj.fragment) { - url += "#" + urlObj.fragment; - } - return url; - }; - - var buildSegment = function(segment, remainingAvailableLength){ - var remainingAvailableLengthHalf = remainingAvailableLength/ 2, - startOffset = Math.ceil(remainingAvailableLengthHalf), - endOffset = (-1)*Math.floor(remainingAvailableLengthHalf), - end = ""; - if (endOffset < 0) { - end = segment.substr(endOffset); - } - return segment.substr(0, startOffset) + ellipsisChars + end; - }; - if (url.length <= truncateLen) { - return url; - } - var availableLength = truncateLen - ellipsisChars.length; - var urlObj = parse_url(url); - // Clean up the URL - if (urlObj.query) { - var matchQuery = urlObj.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i); - if (matchQuery) { - // Malformed URL; two or more "?". Removed any content behind the 2nd. - urlObj.query = urlObj.query.substr(0, matchQuery[1].length); - url = buildUrl(urlObj); - } - } - if (url.length <= truncateLen) { - return url; - } - if (urlObj.host) { - urlObj.host = urlObj.host.replace(/^www\./, ""); - url = buildUrl(urlObj); - } - if (url.length <= truncateLen) { - return url; - } - // Process and build the URL - var str = ""; - if (urlObj.host) { - str += urlObj.host; - } - if (str.length >= availableLength) { - if (urlObj.host.length == truncateLen) { - return (urlObj.host.substr(0, (truncateLen - ellipsisChars.length)) + ellipsisChars).substr(0, truncateLen); - } - return buildSegment(str, availableLength).substr(0, truncateLen); - } - var pathAndQuery = ""; - if (urlObj.path) { - pathAndQuery += "/" + urlObj.path; - } - if (urlObj.query) { - pathAndQuery += "?" + urlObj.query; - } - if (pathAndQuery) { - if ((str+pathAndQuery).length >= availableLength) { - if ((str+pathAndQuery).length == truncateLen) { - return (str + pathAndQuery).substr(0, truncateLen); - } - var remainingAvailableLength = availableLength - str.length; - return (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, truncateLen); - } else { - str += pathAndQuery; - } - } - if (urlObj.fragment) { - var fragment = "#"+urlObj.fragment; - if ((str+fragment).length >= availableLength) { - if ((str+fragment).length == truncateLen) { - return (str + fragment).substr(0, truncateLen); - } - var remainingAvailableLength2 = availableLength - str.length; - return (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, truncateLen); - } else { - str += fragment; - } - } - if (urlObj.scheme && urlObj.host) { - var scheme = urlObj.scheme + "://"; - if ((str+scheme).length < availableLength) { - return (scheme + str).substr(0, truncateLen); - } - } - if (str.length <= truncateLen) { - return str; - } - var end = ""; - if (availableLength > 0) { - end = str.substr((-1)*Math.floor(availableLength/2)); - } - return (str.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, truncateLen); -}; - -return Autolinker; -})); - -},{}],"/":[function(require,module,exports){ -'use strict'; - -module.exports = require('./lib/'); - -},{"./lib/":14}]},{},[])("/") -}); diff --git a/node_modules/remarkable/dist/remarkable.min.js b/node_modules/remarkable/dist/remarkable.min.js deleted file mode 100644 index 6f3fb02ec..000000000 --- a/node_modules/remarkable/dist/remarkable.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Remarkable=e()}}(function(){return function o(i,a,l){function c(t,e){if(!a[t]){if(!i[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(u)return u(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var s=a[t]={exports:{}};i[t][0].call(s.exports,function(e){return c(i[t][1][e]||e)},s,s.exports,o,i,a,l)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;e",Gt:"≫",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",hArr:"⇔",harr:"↔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",Hfr:"ℌ",hfr:"𝔥",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",Hopf:"ℍ",hopf:"𝕙",horbar:"―",HorizontalLine:"─",Hscr:"ℋ",hscr:"𝒽",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",Ifr:"ℑ",ifr:"𝔦",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Im:"ℑ",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",Int:"∬",int:"∫",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",Iscr:"ℐ",iscr:"𝒾",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",Lang:"⟪",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",Larr:"↞",lArr:"⇐",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",lAtail:"⤛",latail:"⤙",late:"⪭",lates:"⪭︀",lBarr:"⤎",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",lE:"≦",le:"≤",LeftAngleBracket:"⟨",LeftArrow:"←",Leftarrow:"⇐",leftarrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",Ll:"⋘",ll:"≪",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lnE:"≨",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftarrow:"⟵",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longleftrightarrow:"⟷",longmapsto:"⟼",LongRightArrow:"⟶",Longrightarrow:"⟹",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",Lscr:"ℒ",lscr:"𝓁",Lsh:"↰",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",LT:"<",Lt:"≪",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",Mscr:"ℳ",mscr:"𝓂",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",ne:"≠",nearhk:"⤤",neArr:"⇗",nearr:"↗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlArr:"⇍",nlarr:"↚",nldr:"‥",nlE:"≦̸",nle:"≰",nLeftarrow:"⇍",nleftarrow:"↚",nLeftrightarrow:"⇎",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",nopf:"𝕟",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nRightarrow:"⇏",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nVDash:"⊯",nVdash:"⊮",nvDash:"⊭",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwArr:"⇖",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",ocir:"⊚",Ocirc:"Ô",ocirc:"ô",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",Or:"⩔",or:"∨",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",Otimes:"⨷",otimes:"⊗",otimesas:"⨶",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",Popf:"ℙ",popf:"𝕡",pound:"£",Pr:"⪻",pr:"≺",prap:"⪷",prcue:"≼",prE:"⪳",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",Prime:"″",prime:"′",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",Qopf:"ℚ",qopf:"𝕢",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",QUOT:'"',quot:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",Rang:"⟫",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",Rarr:"↠",rArr:"⇒",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",rAtail:"⤜",ratail:"⤚",ratio:"∶",rationals:"ℚ",RBarr:"⤐",rBarr:"⤏",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",REG:"®",reg:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",Rfr:"ℜ",rfr:"𝔯",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrow:"→",Rightarrow:"⇒",rightarrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",Ropf:"ℝ",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",Rscr:"ℛ",rscr:"𝓇",Rsh:"↱",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",Sc:"⪼",sc:"≻",scap:"⪸",Scaron:"Š",scaron:"š",sccue:"≽",scE:"⪴",sce:"⪰",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",seArr:"⇘",searr:"↘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",Square:"□",square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",Sub:"⋐",sub:"⊂",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",Subset:"⋐",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",Sum:"∑",sum:"∑",sung:"♪",Sup:"⋑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",Supset:"⋑",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swArr:"⇙",swarr:"↙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",Therefore:"∴",therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",Tilde:"∼",tilde:"˜",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",TRADE:"™",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",Uarr:"↟",uArr:"⇑",uarr:"↑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrow:"↑",Uparrow:"⇑",uparrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",Updownarrow:"⇕",updownarrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",upsi:"υ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",vArr:"⇕",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",Vbar:"⫫",vBar:"⫨",vBarv:"⫩",Vcy:"В",vcy:"в",VDash:"⊫",Vdash:"⊩",vDash:"⊨",vdash:"⊢",Vdashl:"⫦",Vee:"⋁",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",Verbar:"‖",verbar:"|",Vert:"‖",vert:"|",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",Wedge:"⋀",wedge:"∧",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",Xi:"Ξ",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",Yuml:"Ÿ",yuml:"ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",Zfr:"ℨ",zfr:"𝔷",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",Zopf:"ℤ",zopf:"𝕫",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}},{}],2:[function(e,t,r){"use strict";var n={};["article","aside","button","blockquote","body","canvas","caption","col","colgroup","dd","div","dl","dt","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","iframe","li","map","object","ol","output","p","pre","progress","script","section","style","table","tbody","td","textarea","tfoot","th","tr","thead","ul","video"].forEach(function(e){n[e]=!0}),t.exports=n},{}],3:[function(e,t,r){"use strict";function n(n,s){return n=n.source,s=s||"",function e(t,r){return t?(r=r.source||r,n=n.replace(t,r),e):new RegExp(n,s)}}var s=n(/(?:unquoted|single_quoted|double_quoted)/)("unquoted",/[^"'=<>`\x00-\x20]+/)("single_quoted",/'[^']*'/)("double_quoted",/"[^"]*"/)(),o=n(/(?:\s+attr_name(?:\s*=\s*attr_value)?)/)("attr_name",/[a-zA-Z_:][a-zA-Z0-9:._-]*/)("attr_value",s)(),i=n(/<[A-Za-z][A-Za-z0-9]*attribute*\s*\/?>/)("attribute",o)(),a=n(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)("open_tag",i)("close_tag",/<\/[A-Za-z][A-Za-z0-9]*\s*>/)("comment",/|/)("processing",/<[?].*?[?]>/)("declaration",/]*>/)("cdata",//)();t.exports.HTML_TAG_RE=a},{}],4:[function(e,t,r){"use strict";t.exports=["coap","doi","javascript","aaa","aaas","about","acap","cap","cid","crid","data","dav","dict","dns","file","ftp","geo","go","gopher","h323","http","https","iax","icap","im","imap","info","ipp","iris","iris.beep","iris.xpc","iris.xpcs","iris.lwz","ldap","mailto","mid","msrp","msrps","mtqp","mupdate","news","nfs","ni","nih","nntp","opaquelocktoken","pop","pres","rtsp","service","session","shttp","sieve","sip","sips","sms","snmp","soap.beep","soap.beeps","tag","tel","telnet","tftp","thismessage","tn3270","tip","tv","urn","vemmi","ws","wss","xcon","xcon-userid","xmlrpc.beep","xmlrpc.beeps","xmpp","z39.50r","z39.50s","adiumxtra","afp","afs","aim","apt","attachment","aw","beshare","bitcoin","bolo","callto","chrome","chrome-extension","com-eventbrite-attendee","content","cvs","dlna-playsingle","dlna-playcontainer","dtn","dvb","ed2k","facetime","feed","finger","fish","gg","git","gizmoproject","gtalk","hcp","icon","ipn","irc","irc6","ircs","itms","jar","jms","keyparc","lastfm","ldaps","magnet","maps","market","message","mms","ms-help","msnim","mumble","mvn","notes","oid","palm","paparazzi","platform","proxy","psyc","query","res","resource","rmi","rsync","rtmp","secondlife","sftp","sgn","skype","smb","soldat","spotify","ssh","steam","svn","teamspeak","things","udp","unreal","ut2004","ventrilo","view-source","webcal","wtai","wyciwyg","xfire","xri","ymsgr"]},{}],5:[function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty;function s(e,t){return!!e&&n.call(e,t)}var o=/\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;function i(e){return!(55296<=e&&e<=57343)&&(!(64976<=e&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(0<=e&&e<=8)&&(11!==e&&(!(14<=e&&e<=31)&&(!(127<=e&&e<=159)&&!(1114111>10),r=56320+(1023&e);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var l=/&([a-z#][a-z0-9]{1,31});/gi,c=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,u=e("./entities");function p(e,t){var r=0;return s(u,t)?u[t]:35===t.charCodeAt(0)&&c.test(t)&&i(r="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(r):e}var h=/[&<>"]/,f=/[&<>"]/g,g={"&":"&","<":"<",">":">",'"':"""};function d(e){return g[e]}r.assign=function(r){return[].slice.call(arguments,1).forEach(function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach(function(e){r[e]=t[e]})}}),r},r.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},r.has=s,r.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(o,"$1")},r.isValidEntityCode=i,r.fromCodePoint=a,r.replaceEntities=function(e){return e.indexOf("&")<0?e:e.replace(l,p)},r.escapeHtml=function(e){return h.test(e)?e.replace(f,d):e}},{"./entities":1}],6:[function(e,t,r){"use strict";t.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,linkTarget:"",typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["block","inline","references","abbr2"]},block:{rules:["blockquote","code","fences","heading","hr","htmlblock","lheading","list","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","htmltag","links","newline","text"]}}}},{}],7:[function(e,t,r){"use strict";t.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,linkTarget:"",typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["block","inline","references","replacements","linkify","smartquotes","references","abbr2","footnote_tail"]},block:{rules:["blockquote","code","fences","footnote","heading","hr","htmlblock","lheading","list","paragraph","table"]},inline:{rules:["autolink","backticks","del","emphasis","entity","escape","footnote_ref","htmltag","links","newline","text"]}}}},{}],8:[function(e,t,r){"use strict";t.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,linkTarget:"",typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}}},{}],9:[function(e,t,r){"use strict";var n=e("../common/utils").replaceEntities;t.exports=function(e){var t=n(e);try{t=decodeURI(t)}catch(e){}return encodeURI(t)}},{"../common/utils":5}],10:[function(e,t,r){"use strict";t.exports=function(e){return e.trim().replace(/\s+/g," ").toUpperCase()}},{}],11:[function(e,t,r){"use strict";var a=e("./normalize_link"),l=e("../common/utils").unescapeMd;t.exports=function(e,t){var r,n,s,o=t,i=e.posMax;if(60===e.src.charCodeAt(t)){for(t++;t=o)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},a.prototype.parse=function(e,t,r,n){var s=new o(e,this,t,r,n);this.tokenize(s)},t.exports=a},{"./common/utils":5,"./ruler":19,"./rules_inline/autolink":43,"./rules_inline/backticks":44,"./rules_inline/del":45,"./rules_inline/emphasis":46,"./rules_inline/entity":47,"./rules_inline/escape":48,"./rules_inline/footnote_inline":49,"./rules_inline/footnote_ref":50,"./rules_inline/htmltag":51,"./rules_inline/ins":52,"./rules_inline/links":53,"./rules_inline/mark":54,"./rules_inline/newline":55,"./rules_inline/state_inline":56,"./rules_inline/sub":57,"./rules_inline/sup":58,"./rules_inline/text":59}],18:[function(e,t,r){"use strict";var n=e("./common/utils"),s=e("./rules");function o(){this.rules=n.assign({},s),this.getBreak=s.getBreak}(t.exports=o).prototype.renderInline=function(e,t,r){for(var n=this.rules,s=e.length,o=0,i="";s--;)i+=n[e[o].type](e,o++,t,r,this);return i},o.prototype.render=function(e,t,r){for(var n=this.rules,s=e.length,o=-1,i="";++o\n"},n.blockquote_close=function(e,t){return""+g(e,t)},n.code=function(e,t){return e[t].block?"
          "+f(e[t].content)+"
          "+g(e,t):""+f(e[t].content)+""},n.fence=function(e,t,r,n,s){var o,i,a=e[t],l="",c=r.langPrefix;if(a.params){if(i=(o=a.params.split(/\s+/g)).join(" "),u(s.rules.fence_custom,o[0]))return s.rules.fence_custom[o[0]](e,t,r,n,s);l=' class="'+c+f(h(p(i)))+'"'}return"
          "+(r.highlight&&r.highlight.apply(r.highlight,[a.content].concat(o))||f(a.content))+"
          "+g(e,t)},n.fence_custom={},n.heading_open=function(e,t){return""},n.heading_close=function(e,t){return"\n"},n.hr=function(e,t,r){return(r.xhtmlOut?"
          ":"
          ")+g(e,t)},n.bullet_list_open=function(){return"
            \n"},n.bullet_list_close=function(e,t){return"
          "+g(e,t)},n.list_item_open=function(){return"
        5. "},n.list_item_close=function(){return"
        6. \n"},n.ordered_list_open=function(e,t){var r=e[t];return"\n"},n.ordered_list_close=function(e,t){return""+g(e,t)},n.paragraph_open=function(e,t){return e[t].tight?"":"

          "},n.paragraph_close=function(e,t){var r=!(e[t].tight&&t&&"inline"===e[t-1].type&&!e[t-1].content);return(e[t].tight?"":"

          ")+(r?g(e,t):"")},n.link_open=function(e,t,r){var n=e[t].title?' title="'+f(h(e[t].title))+'"':"",s=r.linkTarget?' target="'+r.linkTarget+'"':"";return'"},n.link_close=function(){return""},n.image=function(e,t,r){var n=' src="'+f(e[t].src)+'"',s=e[t].title?' title="'+f(h(e[t].title))+'"':"";return""},n.table_open=function(){return"\n"},n.table_close=function(){return"
          \n"},n.thead_open=function(){return"\n"},n.thead_close=function(){return"\n"},n.tbody_open=function(){return"\n"},n.tbody_close=function(){return"\n"},n.tr_open=function(){return""},n.tr_close=function(){return"\n"},n.th_open=function(e,t){var r=e[t];return""},n.th_close=function(){return""},n.td_open=function(e,t){var r=e[t];return""},n.td_close=function(){return""},n.strong_open=function(){return""},n.strong_close=function(){return""},n.em_open=function(){return""},n.em_close=function(){return""},n.del_open=function(){return""},n.del_close=function(){return""},n.ins_open=function(){return""},n.ins_close=function(){return""},n.mark_open=function(){return""},n.mark_close=function(){return""},n.sub=function(e,t){return""+f(e[t].content)+""},n.sup=function(e,t){return""+f(e[t].content)+""},n.hardbreak=function(e,t,r){return r.xhtmlOut?"
          \n":"
          \n"},n.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?"
          \n":"
          \n":"\n"},n.text=function(e,t){return f(e[t].content)},n.htmlblock=function(e,t){return e[t].content},n.htmltag=function(e,t){return e[t].content},n.abbr_open=function(e,t){return''},n.abbr_close=function(){return""},n.footnote_ref=function(e,t){var r=Number(e[t].id+1).toString(),n="fnref"+r;return 0['+r+"]"},n.footnote_block_open=function(e,t,r){return(r.xhtmlOut?'
          \n':'
          \n')+'
          \n
            \n'},n.footnote_block_close=function(){return"
          \n
          \n"},n.footnote_open=function(e,t){return'
        7. '},n.footnote_close=function(){return"
        8. \n"},n.footnote_anchor=function(e,t){var r="fnref"+Number(e[t].id+1).toString();return 0↩'},n.dl_open=function(){return"
          \n"},n.dt_open=function(){return"
          "},n.dd_open=function(){return"
          "},n.dl_close=function(){return"
          \n"},n.dt_close=function(){return"\n"},n.dd_close=function(){return"\n"};var g=n.getBreak=function(e,t){return(t=function e(t,r){return++r>=t.length-2?r:"paragraph_open"===t[r].type&&t[r].tight&&"inline"===t[r+1].type&&0===t[r+1].content.length&&"paragraph_close"===t[r+2].type&&t[r+2].tight?e(t,r+2):r}(e,t))=e.options.maxNesting)return!1;if(n)return!0;for(32===e.src.charCodeAt(d)&&d++,l=e.blkIndent,e.blkIndent=0,a=[e.bMarks[t]],o=m<=(d=(e.bMarks[t]=d)r)return!1;if(e.tShift[u]=e.options.maxNesting)return!1;c=e.tokens.length,e.tokens.push({type:"dl_open",lines:l=[t,0],level:e.level++}),i=t,o=u;e:for(;;){for(m=!(b=!0),e.tokens.push({type:"dt_open",lines:[i,i],level:e.level++}),e.tokens.push({type:"inline",content:e.getLines(i,i+1,e.blkIndent,!1).trim(),level:e.level+1,lines:[i,i],children:[]}),e.tokens.push({type:"dt_close",level:--e.level});;){if(e.tokens.push({type:"dd_open",lines:a=[u,0],level:e.level++}),d=e.tight,h=e.ddIndent,p=e.blkIndent,g=e.tShift[o],f=e.parentType,e.blkIndent=e.ddIndent=e.tShift[o]+2,e.tShift[o]=s-e.bMarks[o],e.tight=!0,e.parentType="deflist",e.parser.tokenize(e,o,r,!0),e.tight&&!m||(b=!1),m=1=e.options.maxNesting)return!1;for(a=c+2;a]/,h=/^<\/([a-zA-Z]{1,15})[\s>]/;t.exports=function(e,t,r,n){var s,o,i,a=e.bMarks[t],l=e.eMarks[t],c=e.tShift[t];if(a+=c,!e.options.html)return!1;if(3=e.options.maxNesting)return!1;if(g=e.src.charCodeAt(p-1),n)return!0;for(b=e.tokens.length,d?(u=e.bMarks[t]+e.tShift[t],f=Number(e.src.substr(u,p-u-1)),e.tokens.push({type:"ordered_list_open",order:f,lines:k=[t,0],level:e.level++})):e.tokens.push({type:"bullet_list_open",lines:k=[t,0],level:e.level++}),s=t,v=!1,x=e.parser.ruler.getRules("list");!(!(s=this.eMarks[e]},n.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e=e.eMarks[l])return!1;if(124!==(s=e.src.charCodeAt(i))&&45!==s&&58!==s)return!1;if(o=d(e,t+1),!/^[-:| ]+$/.test(o))return!1;if((c=o.split("|"))<=2)return!1;for(p=[],a=0;al&&a.push({type:"text",content:i.slice(l,p.index+p[1].length),level:c}),a.push({type:"abbr_open",title:e.env.abbreviations[":"+p[2]],level:c++}),a.push({type:"text",content:p[2],level:c}),a.push({type:"abbr_close",level:--c}),l=u.lastIndex-p[3].length;a.length&&(l\s]/i.test(d)&&0/i.test(g)&&p++),!(0=e.length)&&!n.test(e[t])}function x(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}t.exports=function(e){var t,r,n,s,o,i,a,l,c,u,p,h,f,g,d,m,b;if(e.options.typographer)for(b=[],d=e.tokens.length-1;0<=d;d--)if("inline"===e.tokens[d].type)for(m=e.tokens[d].children,t=b.length=0;t/,p=/^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/;t.exports=function(e,t){var r,n,s,o,i,a=e.pos;return 60===e.src.charCodeAt(a)&&(!((r=e.src.slice(a)).indexOf(">")<0)&&((n=r.match(p))?!(l.indexOf(n[1].toLowerCase())<0)&&(o=n[0].slice(1,-1),i=c(o),!!e.parser.validateLink(o)&&(t||(e.push({type:"link_open",href:i,level:e.level}),e.push({type:"text",content:o,level:e.level+1}),e.push({type:"link_close",level:e.level})),e.pos+=n[0].length,!0)):!!(s=r.match(u))&&(o=s[0].slice(1,-1),i=c("mailto:"+o),!!e.parser.validateLink(i)&&(t||(e.push({type:"link_open",href:i,level:e.level}),e.push({type:"text",content:o,level:e.level+1}),e.push({type:"link_close",level:e.level})),e.pos+=s[0].length,!0))))}},{"../common/url_schemas":4,"../helpers/normalize_link":9}],44:[function(e,t,r){"use strict";t.exports=function(e,t){var r,n,s,o,i,a=e.pos;if(96!==e.src.charCodeAt(a))return!1;for(r=a,a++,n=e.posMax;a=e.options.maxNesting)return!1;if(o=0=e.options.maxNesting)return!1;for(e.pos=u+r,a=[r];e.pos?@[]^_`{|}~-".split("").forEach(function(e){o[e.charCodeAt(0)]=1}),t.exports=function(e,t){var r,n=e.pos,s=e.posMax;if(92!==e.src.charCodeAt(n))return!1;if(++n=e.options.maxNesting)&&(r=a+2,!((n=l(e,a+1))<0)&&(t||(e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.list||(e.env.footnotes.list=[]),s=e.env.footnotes.list.length,e.pos=r,e.posMax=n,e.push({type:"footnote_ref",id:s,level:e.level}),e.linkLevel++,o=e.tokens.length,e.parser.tokenize(e),e.env.footnotes.list[s]={tokens:e.tokens.splice(o)},e.linkLevel--),e.pos=n+1,e.posMax=i,!0)))))}},{"../helpers/parse_link_label":12}],50:[function(e,t,r){"use strict";t.exports=function(e,t){var r,n,s,o,i=e.posMax,a=e.pos;if(i=e.options.maxNesting)return!1;for(n=a+2;n=e.options.maxNesting)return!1;if(o=0=e.options.maxNesting)return!1;if(r=f+1,(n=d(e,f))<0)return!1;if((a=n+1)=e.options.maxNesting)return!1;if(o=0?@[\]^_`{|}~-])/g;t.exports=function(e,t){var r,n,s=e.posMax,o=e.pos;if(126!==e.src.charCodeAt(o))return!1;if(t)return!1;if(s<=o+2)return!1;if(e.level>=e.options.maxNesting)return!1;for(e.pos=o+1;e.pos?@[\]^_`{|}~-])/g;t.exports=function(e,t){var r,n,s=e.posMax,o=e.pos;if(94!==e.src.charCodeAt(o))return!1;if(t)return!1;if(s<=o+2)return!1;if(e.level>=e.options.maxNesting)return!1;for(e.pos=o+1;e.post&&(r=null==r?"..":r,e=e.substring(0,t-r.length)+r),e},indexOf:function(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r",this.getInnerHtml(),""].join("")},buildAttrsStr:function(){if(!this.attrs)return"";var e=this.getAttrs(),t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r+'="'+e[r]+'"');return t.join(" ")}}),b.RegexLib={alphaNumericCharsStr:e="A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹0-9",domainNameRegex:new RegExp("["+e+".\\-]*["+e+"\\-]"),tldRegex:/(?:travelersinsurance|sandvikcoromant|kerryproperties|cancerresearch|weatherchannel|kerrylogistics|spreadbetting|international|wolterskluwer|lifeinsurance|construction|pamperedchef|scholarships|versicherung|bridgestone|creditunion|kerryhotels|investments|productions|blackfriday|enterprises|lamborghini|photography|motorcycles|williamhill|playstation|contractors|barclaycard|accountants|redumbrella|engineering|management|telefonica|protection|consulting|tatamotors|creditcard|vlaanderen|schaeffler|associates|properties|foundation|republican|bnpparibas|boehringer|eurovision|extraspace|industries|immobilien|university|technology|volkswagen|healthcare|restaurant|cuisinella|vistaprint|apartments|accountant|travelers|homedepot|institute|vacations|furniture|fresenius|insurance|christmas|bloomberg|solutions|barcelona|firestone|financial|kuokgroup|fairwinds|community|passagens|goldpoint|equipment|lifestyle|yodobashi|aquarelle|marketing|analytics|education|amsterdam|statefarm|melbourne|allfinanz|directory|microsoft|stockholm|montblanc|accenture|lancaster|landrover|everbank|istanbul|graphics|grainger|ipiranga|softbank|attorney|pharmacy|saarland|catering|airforce|yokohama|mortgage|frontier|mutuelle|stcgroup|memorial|pictures|football|symantec|cipriani|ventures|telecity|cityeats|verisign|flsmidth|boutique|cleaning|firmdale|clinique|clothing|redstone|infiniti|deloitte|feedback|services|broadway|plumbing|commbank|training|barclays|exchange|computer|brussels|software|delivery|barefoot|builders|business|bargains|engineer|holdings|download|security|helsinki|lighting|movistar|discount|hdfcbank|supplies|marriott|property|diamonds|capetown|partners|democrat|jpmorgan|bradesco|budapest|rexroth|zuerich|shriram|academy|science|support|youtube|singles|surgery|alibaba|statoil|dentist|schwarz|android|cruises|cricket|digital|markets|starhub|systems|courses|coupons|netbank|country|domains|corsica|network|neustar|realtor|lincoln|limited|schmidt|yamaxun|cooking|contact|auction|spiegel|liaison|leclerc|latrobe|lasalle|abogado|compare|lanxess|exposed|express|company|cologne|college|avianca|lacaixa|fashion|recipes|ferrero|komatsu|storage|wanggou|clubmed|sandvik|fishing|fitness|bauhaus|kitchen|flights|florist|flowers|watches|weather|temasek|samsung|bentley|forsale|channel|theater|frogans|theatre|okinawa|website|tickets|jewelry|gallery|tiffany|iselect|shiksha|brother|organic|wedding|genting|toshiba|origins|philips|hyundai|hotmail|hoteles|hosting|rentals|windows|cartier|bugatti|holiday|careers|whoswho|hitachi|panerai|caravan|reviews|guitars|capital|trading|hamburg|hangout|finance|stream|family|abbott|health|review|travel|report|hermes|hiphop|gratis|career|toyota|hockey|dating|repair|google|social|soccer|reisen|global|otsuka|giving|unicom|casino|photos|center|broker|rocher|orange|bostik|garden|insure|ryukyu|bharti|safety|physio|sakura|oracle|online|jaguar|gallup|piaget|tienda|futbol|pictet|joburg|webcam|berlin|office|juegos|kaufen|chanel|chrome|xihuan|church|tennis|circle|kinder|flickr|bayern|claims|clinic|viajes|nowruz|xperia|norton|yachts|studio|coffee|camera|sanofi|nissan|author|expert|events|comsec|lawyer|tattoo|viking|estate|villas|condos|realty|yandex|energy|emerck|virgin|vision|durban|living|school|coupon|london|taobao|natura|taipei|nagoya|luxury|walter|aramco|sydney|madrid|credit|maison|makeup|schule|market|anquan|direct|design|swatch|suzuki|alsace|vuelos|dental|alipay|voyage|shouji|voting|airtel|mutual|degree|supply|agency|museum|mobily|dealer|monash|select|mormon|active|moscow|racing|datsun|quebec|nissay|rodeo|email|gifts|works|photo|chloe|edeka|cheap|earth|vista|tushu|koeln|glass|shoes|globo|tunes|gmail|nokia|space|kyoto|black|ricoh|seven|lamer|sener|epson|cisco|praxi|trust|citic|crown|shell|lease|green|legal|lexus|ninja|tatar|gripe|nikon|group|video|wales|autos|gucci|party|nexus|guide|linde|adult|parts|amica|lixil|boats|azure|loans|locus|cymru|lotte|lotto|stada|click|poker|quest|dabur|lupin|nadex|paris|faith|dance|canon|place|gives|trade|skype|rocks|mango|cloud|boots|smile|final|swiss|homes|honda|media|horse|cards|deals|watch|bosch|house|pizza|miami|osaka|tours|total|xerox|coach|sucks|style|delta|toray|iinet|tools|money|codes|beats|tokyo|salon|archi|movie|baidu|study|actor|yahoo|store|apple|world|forex|today|bible|tmall|tirol|irish|tires|forum|reise|vegas|vodka|sharp|omega|weber|jetzt|audio|promo|build|bingo|chase|gallo|drive|dubai|rehab|press|solar|sale|beer|bbva|bank|band|auto|sapo|sarl|saxo|audi|asia|arte|arpa|army|yoga|ally|zara|scor|scot|sexy|seat|zero|seek|aero|adac|zone|aarp|maif|meet|meme|menu|surf|mini|mobi|mtpc|porn|desi|star|ltda|name|talk|navy|love|loan|live|link|news|limo|like|spot|life|nico|lidl|lgbt|land|taxi|team|tech|kred|kpmg|sony|song|kiwi|kddi|jprs|jobs|sohu|java|itau|tips|info|immo|icbc|hsbc|town|host|page|toys|here|help|pars|haus|guru|guge|tube|goog|golf|gold|sncf|gmbh|gift|ggee|gent|gbiz|game|vana|pics|fund|ford|ping|pink|fish|film|fast|farm|play|fans|fail|plus|skin|pohl|fage|moda|post|erni|dvag|prod|doha|prof|docs|viva|diet|luxe|site|dell|sina|dclk|show|qpon|date|vote|cyou|voto|read|coop|cool|wang|club|city|chat|cern|cash|reit|rent|casa|cars|care|camp|rest|call|cafe|weir|wien|rich|wiki|buzz|wine|book|bond|room|work|rsvp|shia|ruhr|blue|bing|shaw|bike|safe|xbox|best|pwc|mtn|lds|aig|boo|fyi|nra|nrw|ntt|car|gal|obi|zip|aeg|vin|how|one|ong|onl|dad|ooo|bet|esq|org|htc|bar|uol|ibm|ovh|gdn|ice|icu|uno|gea|ifm|bot|top|wtf|lol|day|pet|eus|wtc|ubs|tvs|aco|ing|ltd|ink|tab|abb|afl|cat|int|pid|pin|bid|cba|gle|com|cbn|ads|man|wed|ceb|gmo|sky|ist|gmx|tui|mba|fan|ski|iwc|app|pro|med|ceo|jcb|jcp|goo|dev|men|aaa|meo|pub|jlc|bom|jll|gop|jmp|mil|got|gov|win|jot|mma|joy|trv|red|cfa|cfd|bio|moe|moi|mom|ren|biz|aws|xin|bbc|dnp|buy|kfh|mov|thd|xyz|fit|kia|rio|rip|kim|dog|vet|nyc|bcg|mtr|bcn|bms|bmw|run|bzh|rwe|tel|stc|axa|kpn|fly|krd|cab|bnl|foo|crs|eat|tci|sap|srl|nec|sas|net|cal|sbs|sfr|sca|scb|csc|edu|new|xxx|hiv|fox|wme|ngo|nhk|vip|sex|frl|lat|yun|law|you|tax|soy|sew|om|ac|hu|se|sc|sg|sh|sb|sa|rw|ru|rs|ro|re|qa|py|si|pw|pt|ps|sj|sk|pr|pn|pm|pl|sl|sm|pk|sn|ph|so|pg|pf|pe|pa|zw|nz|nu|nr|np|no|nl|ni|ng|nf|sr|ne|st|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|su|mn|mm|ml|mk|mh|mg|me|sv|md|mc|sx|sy|ma|ly|lv|sz|lu|lt|ls|lr|lk|li|lc|lb|la|tc|kz|td|ky|kw|kr|kp|kn|km|ki|kh|tf|tg|th|kg|ke|jp|jo|jm|je|it|is|ir|tj|tk|tl|tm|iq|tn|to|io|in|im|il|ie|ad|sd|ht|hr|hn|hm|tr|hk|gy|gw|gu|gt|gs|gr|gq|tt|gp|gn|gm|gl|tv|gi|tw|tz|ua|gh|ug|uk|gg|gf|ge|gd|us|uy|uz|va|gb|ga|vc|ve|fr|fo|fm|fk|fj|vg|vi|fi|eu|et|es|er|eg|ee|ec|dz|do|dm|dk|vn|dj|de|cz|cy|cx|cw|vu|cv|cu|cr|co|cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|wf|bz|by|bw|bv|bt|bs|br|bo|bn|bm|bj|bi|ws|bh|bg|bf|be|bd|bb|ba|az|ax|aw|au|at|as|ye|ar|aq|ao|am|al|yt|ai|za|ag|af|ae|zm|id)\b/},b.AnchorTagBuilder=b.Util.extend(Object,{constructor:function(e){b.Util.assign(this,e)},build:function(e){return new b.HtmlTag({tagName:"a",attrs:this.createAttrs(e.getType(),e.getAnchorHref()),innerHtml:this.processAnchorText(e.getAnchorText())})},createAttrs:function(e,t){var r={href:t},n=this.createCssClass(e);return n&&(r.class=n),this.newWindow&&(r.target="_blank",r.rel="noopener noreferrer"),r},createCssClass:function(e){var t=this.className;return t?t+" "+t+"-"+e:""},processAnchorText:function(e){return e=this.doTruncate(e)},doTruncate:function(e){var t=this.truncate;if(!t||!t.length)return e;var r=t.length,n=t.location;return"smart"===n?b.truncate.TruncateSmart(e,r,".."):"middle"===n?b.truncate.TruncateMiddle(e,r,".."):b.truncate.TruncateEnd(e,r,"..")}}),b.htmlParser.HtmlParser=b.Util.extend(Object,{htmlRegex:(t=/(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/,r=/[^\s"'>\/=\x00-\x1F\x7F]+/.source+"(?:\\s*=\\s*"+t.source+")?",new RegExp(["(?:","<(!DOCTYPE)","(?:","\\s+","(?:",r,"|",t.source+")",")*",">",")","|","(?:","<(/)?","(?:",/!--([\s\S]+?)--/.source,"|","(?:","("+/[0-9a-zA-Z][0-9a-zA-Z:]*/.source+")","(?:","(?:\\s+|\\b)",r,")*","\\s*/?",")",")",">",")"].join(""),"gi")),htmlCharacterEntitiesRegex:/( | |<|<|>|>|"|"|')/gi,parse:function(e){for(var t,r,n=this.htmlRegex,s=0,o=[];null!==(t=n.exec(e));){var i=t[0],a=t[3],l=t[1]||t[4],c=!!t[2],u=t.index,p=e.substring(s,u);p&&(r=this.parseTextAndEntityNodes(s,p),o.push.apply(o,r)),a?o.push(this.createCommentNode(u,i,a)):o.push(this.createElementNode(u,i,l,c)),s=u+i.length}if(s=l)return c.host.length==t?(c.host.substr(0,t-i.length)+i).substr(0,t):n(p,l).substr(0,t);var h="";if(c.path&&(h+="/"+c.path),c.query&&(h+="?"+c.query),h){if(l<=(p+h).length)return(p+h).length==t?(p+h).substr(0,t):(p+n(h,l-p.length)).substr(0,t);p+=h}if(c.fragment){var f="#"+c.fragment;if(l<=(p+f).length)return(p+f).length==t?(p+f).substr(0,t):(p+n(f,l-p.length)).substr(0,t);else p+=f}if(c.scheme&&c.host){var g=c.scheme+"://";if((p+g).length`\x00-\x20]+/; -var single_quoted = /'[^']*'/; -var double_quoted = /"[^"]*"/; - -/*eslint no-spaced-func:0*/ -var attr_value = replace(/(?:unquoted|single_quoted|double_quoted)/) - ('unquoted', unquoted) - ('single_quoted', single_quoted) - ('double_quoted', double_quoted) - (); - -var attribute = replace(/(?:\s+attr_name(?:\s*=\s*attr_value)?)/) - ('attr_name', attr_name) - ('attr_value', attr_value) - (); - -var open_tag = replace(/<[A-Za-z][A-Za-z0-9]*attribute*\s*\/?>/) - ('attribute', attribute) - (); - -var close_tag = /<\/[A-Za-z][A-Za-z0-9]*\s*>/; -var comment = /|/; -var processing = /<[?].*?[?]>/; -var declaration = /]*>/; -var cdata = //; - -var HTML_TAG_RE = replace(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/) - ('open_tag', open_tag) - ('close_tag', close_tag) - ('comment', comment) - ('processing', processing) - ('declaration', declaration) - ('cdata', cdata) - (); - - -module.exports.HTML_TAG_RE = HTML_TAG_RE; diff --git a/node_modules/remarkable/lib/common/url_schemas.js b/node_modules/remarkable/lib/common/url_schemas.js deleted file mode 100644 index bd71c25b0..000000000 --- a/node_modules/remarkable/lib/common/url_schemas.js +++ /dev/null @@ -1,172 +0,0 @@ -// List of valid url schemas, accorting to commonmark spec -// http://jgm.github.io/CommonMark/spec.html#autolinks - -'use strict'; - - -module.exports = [ - 'coap', - 'doi', - 'javascript', - 'aaa', - 'aaas', - 'about', - 'acap', - 'cap', - 'cid', - 'crid', - 'data', - 'dav', - 'dict', - 'dns', - 'file', - 'ftp', - 'geo', - 'go', - 'gopher', - 'h323', - 'http', - 'https', - 'iax', - 'icap', - 'im', - 'imap', - 'info', - 'ipp', - 'iris', - 'iris.beep', - 'iris.xpc', - 'iris.xpcs', - 'iris.lwz', - 'ldap', - 'mailto', - 'mid', - 'msrp', - 'msrps', - 'mtqp', - 'mupdate', - 'news', - 'nfs', - 'ni', - 'nih', - 'nntp', - 'opaquelocktoken', - 'pop', - 'pres', - 'rtsp', - 'service', - 'session', - 'shttp', - 'sieve', - 'sip', - 'sips', - 'sms', - 'snmp', - 'soap.beep', - 'soap.beeps', - 'tag', - 'tel', - 'telnet', - 'tftp', - 'thismessage', - 'tn3270', - 'tip', - 'tv', - 'urn', - 'vemmi', - 'ws', - 'wss', - 'xcon', - 'xcon-userid', - 'xmlrpc.beep', - 'xmlrpc.beeps', - 'xmpp', - 'z39.50r', - 'z39.50s', - 'adiumxtra', - 'afp', - 'afs', - 'aim', - 'apt', - 'attachment', - 'aw', - 'beshare', - 'bitcoin', - 'bolo', - 'callto', - 'chrome', - 'chrome-extension', - 'com-eventbrite-attendee', - 'content', - 'cvs', - 'dlna-playsingle', - 'dlna-playcontainer', - 'dtn', - 'dvb', - 'ed2k', - 'facetime', - 'feed', - 'finger', - 'fish', - 'gg', - 'git', - 'gizmoproject', - 'gtalk', - 'hcp', - 'icon', - 'ipn', - 'irc', - 'irc6', - 'ircs', - 'itms', - 'jar', - 'jms', - 'keyparc', - 'lastfm', - 'ldaps', - 'magnet', - 'maps', - 'market', - 'message', - 'mms', - 'ms-help', - 'msnim', - 'mumble', - 'mvn', - 'notes', - 'oid', - 'palm', - 'paparazzi', - 'platform', - 'proxy', - 'psyc', - 'query', - 'res', - 'resource', - 'rmi', - 'rsync', - 'rtmp', - 'secondlife', - 'sftp', - 'sgn', - 'skype', - 'smb', - 'soldat', - 'spotify', - 'ssh', - 'steam', - 'svn', - 'teamspeak', - 'things', - 'udp', - 'unreal', - 'ut2004', - 'ventrilo', - 'view-source', - 'webcal', - 'wtai', - 'wyciwyg', - 'xfire', - 'xri', - 'ymsgr' -]; diff --git a/node_modules/remarkable/lib/common/utils.js b/node_modules/remarkable/lib/common/utils.js deleted file mode 100644 index 85e463daf..000000000 --- a/node_modules/remarkable/lib/common/utils.js +++ /dev/null @@ -1,141 +0,0 @@ -'use strict'; - -/** - * Utility functions - */ - -function typeOf(obj) { - return Object.prototype.toString.call(obj); -} - -function isString(obj) { - return typeOf(obj) === '[object String]'; -} - -var hasOwn = Object.prototype.hasOwnProperty; - -function has(object, key) { - return object - ? hasOwn.call(object, key) - : false; -} - -// Extend objects -// -function assign(obj /*from1, from2, from3, ...*/) { - var sources = [].slice.call(arguments, 1); - - sources.forEach(function (source) { - if (!source) { return; } - - if (typeof source !== 'object') { - throw new TypeError(source + 'must be object'); - } - - Object.keys(source).forEach(function (key) { - obj[key] = source[key]; - }); - }); - - return obj; -} - -//////////////////////////////////////////////////////////////////////////////// - -var UNESCAPE_MD_RE = /\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; - -function unescapeMd(str) { - if (str.indexOf('\\') < 0) { return str; } - return str.replace(UNESCAPE_MD_RE, '$1'); -} - -//////////////////////////////////////////////////////////////////////////////// - -function isValidEntityCode(c) { - /*eslint no-bitwise:0*/ - // broken sequence - if (c >= 0xD800 && c <= 0xDFFF) { return false; } - // never used - if (c >= 0xFDD0 && c <= 0xFDEF) { return false; } - if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; } - // control codes - if (c >= 0x00 && c <= 0x08) { return false; } - if (c === 0x0B) { return false; } - if (c >= 0x0E && c <= 0x1F) { return false; } - if (c >= 0x7F && c <= 0x9F) { return false; } - // out of range - if (c > 0x10FFFF) { return false; } - return true; -} - -function fromCodePoint(c) { - /*eslint no-bitwise:0*/ - if (c > 0xffff) { - c -= 0x10000; - var surrogate1 = 0xd800 + (c >> 10), - surrogate2 = 0xdc00 + (c & 0x3ff); - - return String.fromCharCode(surrogate1, surrogate2); - } - return String.fromCharCode(c); -} - -var NAMED_ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi; -var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i; -var entities = require('./entities'); - -function replaceEntityPattern(match, name) { - var code = 0; - - if (has(entities, name)) { - return entities[name]; - } else if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) { - code = name[1].toLowerCase() === 'x' ? - parseInt(name.slice(2), 16) - : - parseInt(name.slice(1), 10); - if (isValidEntityCode(code)) { - return fromCodePoint(code); - } - } - return match; -} - -function replaceEntities(str) { - if (str.indexOf('&') < 0) { return str; } - - return str.replace(NAMED_ENTITY_RE, replaceEntityPattern); -} - -//////////////////////////////////////////////////////////////////////////////// - -var HTML_ESCAPE_TEST_RE = /[&<>"]/; -var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; -var HTML_REPLACEMENTS = { - '&': '&', - '<': '<', - '>': '>', - '"': '"' -}; - -function replaceUnsafeChar(ch) { - return HTML_REPLACEMENTS[ch]; -} - -function escapeHtml(str) { - if (HTML_ESCAPE_TEST_RE.test(str)) { - return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar); - } - return str; -} - -//////////////////////////////////////////////////////////////////////////////// - -exports.assign = assign; -exports.isString = isString; -exports.has = has; -exports.unescapeMd = unescapeMd; -exports.isValidEntityCode = isValidEntityCode; -exports.fromCodePoint = fromCodePoint; -exports.replaceEntities = replaceEntities; -exports.escapeHtml = escapeHtml; diff --git a/node_modules/remarkable/lib/configs/commonmark.js b/node_modules/remarkable/lib/configs/commonmark.js deleted file mode 100644 index 40d8c1d0d..000000000 --- a/node_modules/remarkable/lib/configs/commonmark.js +++ /dev/null @@ -1,71 +0,0 @@ -// Commonmark default options - -'use strict'; - - -module.exports = { - options: { - html: true, // Enable HTML tags in source - xhtmlOut: true, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - linkTarget: '', // set target to open link in - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if input not changed - // - // function (/*str, lang*/) { return ''; } - // - highlight: null, - - maxNesting: 20 // Internal protection, recursion limit - }, - - components: { - - core: { - rules: [ - 'block', - 'inline', - 'references', - 'abbr2' - ] - }, - - block: { - rules: [ - 'blockquote', - 'code', - 'fences', - 'heading', - 'hr', - 'htmlblock', - 'lheading', - 'list', - 'paragraph' - ] - }, - - inline: { - rules: [ - 'autolink', - 'backticks', - 'emphasis', - 'entity', - 'escape', - 'htmltag', - 'links', - 'newline', - 'text' - ] - } - } -}; diff --git a/node_modules/remarkable/lib/configs/default.js b/node_modules/remarkable/lib/configs/default.js deleted file mode 100644 index 5b8ef824d..000000000 --- a/node_modules/remarkable/lib/configs/default.js +++ /dev/null @@ -1,80 +0,0 @@ -// Remarkable default options - -'use strict'; - - -module.exports = { - options: { - html: false, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - linkTarget: '', // set target to open link in - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if input not changed - // - // function (/*str, lang*/) { return ''; } - // - highlight: null, - - maxNesting: 20 // Internal protection, recursion limit - }, - - components: { - - core: { - rules: [ - 'block', - 'inline', - 'references', - 'replacements', - 'linkify', - 'smartquotes', - 'references', - 'abbr2', - 'footnote_tail' - ] - }, - - block: { - rules: [ - 'blockquote', - 'code', - 'fences', - 'footnote', - 'heading', - 'hr', - 'htmlblock', - 'lheading', - 'list', - 'paragraph', - 'table' - ] - }, - - inline: { - rules: [ - 'autolink', - 'backticks', - 'del', - 'emphasis', - 'entity', - 'escape', - 'footnote_ref', - 'htmltag', - 'links', - 'newline', - 'text' - ] - } - } -}; diff --git a/node_modules/remarkable/lib/configs/full.js b/node_modules/remarkable/lib/configs/full.js deleted file mode 100644 index f1ac24d62..000000000 --- a/node_modules/remarkable/lib/configs/full.js +++ /dev/null @@ -1,38 +0,0 @@ -// Remarkable default options - -'use strict'; - - -module.exports = { - options: { - html: false, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - linkTarget: '', // set target to open link in - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if input not changed - // - // function (/*str, lang*/) { return ''; } - // - highlight: null, - - maxNesting: 20 // Internal protection, recursion limit - }, - - components: { - // Don't restrict core/block/inline rules - core: {}, - block: {}, - inline: {} - } -}; diff --git a/node_modules/remarkable/lib/helpers/normalize_link.js b/node_modules/remarkable/lib/helpers/normalize_link.js deleted file mode 100644 index cdec3956a..000000000 --- a/node_modules/remarkable/lib/helpers/normalize_link.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var replaceEntities = require('../common/utils').replaceEntities; - -module.exports = function normalizeLink(url) { - var normalized = replaceEntities(url); - // We shouldn't care about the result of malformed URIs, - // and should not throw an exception. - try { - normalized = decodeURI(normalized); - } catch (err) {} - return encodeURI(normalized); -}; diff --git a/node_modules/remarkable/lib/helpers/normalize_reference.js b/node_modules/remarkable/lib/helpers/normalize_reference.js deleted file mode 100644 index 30e3129ae..000000000 --- a/node_modules/remarkable/lib/helpers/normalize_reference.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -module.exports = function normalizeReference(str) { - // use .toUpperCase() instead of .toLowerCase() - // here to avoid a conflict with Object.prototype - // members (most notably, `__proto__`) - return str.trim().replace(/\s+/g, ' ').toUpperCase(); -}; diff --git a/node_modules/remarkable/lib/helpers/parse_link_destination.js b/node_modules/remarkable/lib/helpers/parse_link_destination.js deleted file mode 100644 index 9586339c4..000000000 --- a/node_modules/remarkable/lib/helpers/parse_link_destination.js +++ /dev/null @@ -1,84 +0,0 @@ -'use strict'; - - -var normalizeLink = require('./normalize_link'); -var unescapeMd = require('../common/utils').unescapeMd; - -/** - * Parse link destination - * - * - on success it returns a string and updates state.pos; - * - on failure it returns null - * - * @param {Object} state - * @param {Number} pos - * @api private - */ - -module.exports = function parseLinkDestination(state, pos) { - var code, level, link, - start = pos, - max = state.posMax; - - if (state.src.charCodeAt(pos) === 0x3C /* < */) { - pos++; - while (pos < max) { - code = state.src.charCodeAt(pos); - if (code === 0x0A /* \n */) { return false; } - if (code === 0x3E /* > */) { - link = normalizeLink(unescapeMd(state.src.slice(start + 1, pos))); - if (!state.parser.validateLink(link)) { return false; } - state.pos = pos + 1; - state.linkContent = link; - return true; - } - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - pos++; - } - - // no closing '>' - return false; - } - - // this should be ... } else { ... branch - - level = 0; - while (pos < max) { - code = state.src.charCodeAt(pos); - - if (code === 0x20) { break; } - - // ascii control chars - if (code < 0x20 || code === 0x7F) { break; } - - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - if (code === 0x28 /* ( */) { - level++; - if (level > 1) { break; } - } - - if (code === 0x29 /* ) */) { - level--; - if (level < 0) { break; } - } - - pos++; - } - - if (start === pos) { return false; } - - link = unescapeMd(state.src.slice(start, pos)); - if (!state.parser.validateLink(link)) { return false; } - - state.linkContent = link; - state.pos = pos; - return true; -}; diff --git a/node_modules/remarkable/lib/helpers/parse_link_label.js b/node_modules/remarkable/lib/helpers/parse_link_label.js deleted file mode 100644 index c0480ef9e..000000000 --- a/node_modules/remarkable/lib/helpers/parse_link_label.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -/** - * Parse link labels - * - * This function assumes that first character (`[`) already matches; - * returns the end of the label. - * - * @param {Object} state - * @param {Number} start - * @api private - */ - -module.exports = function parseLinkLabel(state, start) { - var level, found, marker, - labelEnd = -1, - max = state.posMax, - oldPos = state.pos, - oldFlag = state.isInLabel; - - if (state.isInLabel) { return -1; } - - if (state.labelUnmatchedScopes) { - state.labelUnmatchedScopes--; - return -1; - } - - state.pos = start + 1; - state.isInLabel = true; - level = 1; - - while (state.pos < max) { - marker = state.src.charCodeAt(state.pos); - if (marker === 0x5B /* [ */) { - level++; - } else if (marker === 0x5D /* ] */) { - level--; - if (level === 0) { - found = true; - break; - } - } - - state.parser.skipToken(state); - } - - if (found) { - labelEnd = state.pos; - state.labelUnmatchedScopes = 0; - } else { - state.labelUnmatchedScopes = level - 1; - } - - // restore old state - state.pos = oldPos; - state.isInLabel = oldFlag; - - return labelEnd; -}; diff --git a/node_modules/remarkable/lib/helpers/parse_link_title.js b/node_modules/remarkable/lib/helpers/parse_link_title.js deleted file mode 100644 index f6757a066..000000000 --- a/node_modules/remarkable/lib/helpers/parse_link_title.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - - -var unescapeMd = require('../common/utils').unescapeMd; - -/** - * Parse link title - * - * - on success it returns a string and updates state.pos; - * - on failure it returns null - * - * @param {Object} state - * @param {Number} pos - * @api private - */ - -module.exports = function parseLinkTitle(state, pos) { - var code, - start = pos, - max = state.posMax, - marker = state.src.charCodeAt(pos); - - if (marker !== 0x22 /* " */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return false; } - - pos++; - - // if opening marker is "(", switch it to closing marker ")" - if (marker === 0x28) { marker = 0x29; } - - while (pos < max) { - code = state.src.charCodeAt(pos); - if (code === marker) { - state.pos = pos + 1; - state.linkContent = unescapeMd(state.src.slice(start + 1, pos)); - return true; - } - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - pos++; - } - - return false; -}; diff --git a/node_modules/remarkable/lib/index.js b/node_modules/remarkable/lib/index.js deleted file mode 100644 index 7033509ff..000000000 --- a/node_modules/remarkable/lib/index.js +++ /dev/null @@ -1,195 +0,0 @@ -'use strict'; - -/** - * Local dependencies - */ - -var assign = require('./common/utils').assign; -var Renderer = require('./renderer'); -var ParserCore = require('./parser_core'); -var ParserBlock = require('./parser_block'); -var ParserInline = require('./parser_inline'); -var Ruler = require('./ruler'); - -/** - * Preset configs - */ - -var config = { - 'default': require('./configs/default'), - 'full': require('./configs/full'), - 'commonmark': require('./configs/commonmark') -}; - -/** - * The `StateCore` class manages state. - * - * @param {Object} `instance` Remarkable instance - * @param {String} `str` Markdown string - * @param {Object} `env` - */ - -function StateCore(instance, str, env) { - this.src = str; - this.env = env; - this.options = instance.options; - this.tokens = []; - this.inlineMode = false; - - this.inline = instance.inline; - this.block = instance.block; - this.renderer = instance.renderer; - this.typographer = instance.typographer; -} - -/** - * The main `Remarkable` class. Create an instance of - * `Remarkable` with a `preset` and/or `options`. - * - * @param {String} `preset` If no preset is given, `default` is used. - * @param {Object} `options` - */ - -function Remarkable(preset, options) { - if (typeof preset !== 'string') { - options = preset; - preset = 'default'; - } - - this.inline = new ParserInline(); - this.block = new ParserBlock(); - this.core = new ParserCore(); - this.renderer = new Renderer(); - this.ruler = new Ruler(); - - this.options = {}; - this.configure(config[preset]); - this.set(options || {}); -} - -/** - * Set options as an alternative to passing them - * to the constructor. - * - * ```js - * md.set({typographer: true}); - * ``` - * @param {Object} `options` - * @api public - */ - -Remarkable.prototype.set = function (options) { - assign(this.options, options); -}; - -/** - * Batch loader for components rules states, and options - * - * @param {Object} `presets` - */ - -Remarkable.prototype.configure = function (presets) { - var self = this; - - if (!presets) { throw new Error('Wrong `remarkable` preset, check name/content'); } - if (presets.options) { self.set(presets.options); } - if (presets.components) { - Object.keys(presets.components).forEach(function (name) { - if (presets.components[name].rules) { - self[name].ruler.enable(presets.components[name].rules, true); - } - }); - } -}; - -/** - * Use a plugin. - * - * ```js - * var md = new Remarkable(); - * - * md.use(plugin1) - * .use(plugin2, opts) - * .use(plugin3); - * ``` - * - * @param {Function} `plugin` - * @param {Object} `options` - * @return {Object} `Remarkable` for chaining - */ - -Remarkable.prototype.use = function (plugin, options) { - plugin(this, options); - return this; -}; - - -/** - * Parse the input `string` and return a tokens array. - * Modifies `env` with definitions data. - * - * @param {String} `string` - * @param {Object} `env` - * @return {Array} Array of tokens - */ - -Remarkable.prototype.parse = function (str, env) { - var state = new StateCore(this, str, env); - this.core.process(state); - return state.tokens; -}; - -/** - * The main `.render()` method that does all the magic :) - * - * @param {String} `string` - * @param {Object} `env` - * @return {String} Rendered HTML. - */ - -Remarkable.prototype.render = function (str, env) { - env = env || {}; - return this.renderer.render(this.parse(str, env), this.options, env); -}; - -/** - * Parse the given content `string` as a single string. - * - * @param {String} `string` - * @param {Object} `env` - * @return {Array} Array of tokens - */ - -Remarkable.prototype.parseInline = function (str, env) { - var state = new StateCore(this, str, env); - state.inlineMode = true; - this.core.process(state); - return state.tokens; -}; - -/** - * Render a single content `string`, without wrapping it - * to paragraphs - * - * @param {String} `str` - * @param {Object} `env` - * @return {String} - */ - -Remarkable.prototype.renderInline = function (str, env) { - env = env || {}; - return this.renderer.render(this.parseInline(str, env), this.options, env); -}; - -/** - * Expose `Remarkable` - */ - -module.exports = Remarkable; - -/** - * Expose `utils`, Useful helper functions for custom - * rendering. - */ - -module.exports.utils = require('./common/utils'); diff --git a/node_modules/remarkable/lib/parser_block.js b/node_modules/remarkable/lib/parser_block.js deleted file mode 100644 index 808c9e3fb..000000000 --- a/node_modules/remarkable/lib/parser_block.js +++ /dev/null @@ -1,155 +0,0 @@ -'use strict'; - -/** - * Local dependencies - */ - -var Ruler = require('./ruler'); -var StateBlock = require('./rules_block/state_block'); - -/** - * Parser rules - */ - -var _rules = [ - [ 'code', require('./rules_block/code') ], - [ 'fences', require('./rules_block/fences'), [ 'paragraph', 'blockquote', 'list' ] ], - [ 'blockquote', require('./rules_block/blockquote'), [ 'paragraph', 'blockquote', 'list' ] ], - [ 'hr', require('./rules_block/hr'), [ 'paragraph', 'blockquote', 'list' ] ], - [ 'list', require('./rules_block/list'), [ 'paragraph', 'blockquote' ] ], - [ 'footnote', require('./rules_block/footnote'), [ 'paragraph' ] ], - [ 'heading', require('./rules_block/heading'), [ 'paragraph', 'blockquote' ] ], - [ 'lheading', require('./rules_block/lheading') ], - [ 'htmlblock', require('./rules_block/htmlblock'), [ 'paragraph', 'blockquote' ] ], - [ 'table', require('./rules_block/table'), [ 'paragraph' ] ], - [ 'deflist', require('./rules_block/deflist'), [ 'paragraph' ] ], - [ 'paragraph', require('./rules_block/paragraph') ] -]; - -/** - * Block Parser class - * - * @api private - */ - -function ParserBlock() { - this.ruler = new Ruler(); - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1], { - alt: (_rules[i][2] || []).slice() - }); - } -} - -/** - * Generate tokens for the given input range. - * - * @param {Object} `state` Has properties like `src`, `parser`, `options` etc - * @param {Number} `startLine` - * @param {Number} `endLine` - * @api private - */ - -ParserBlock.prototype.tokenize = function (state, startLine, endLine) { - var rules = this.ruler.getRules(''); - var len = rules.length; - var line = startLine; - var hasEmptyLines = false; - var ok, i; - - while (line < endLine) { - state.line = line = state.skipEmptyLines(line); - if (line >= endLine) { - break; - } - - // Termination condition for nested calls. - // Nested calls currently used for blockquotes & lists - if (state.tShift[line] < state.blkIndent) { - break; - } - - // Try all possible rules. - // On success, rule should: - // - // - update `state.line` - // - update `state.tokens` - // - return true - - for (i = 0; i < len; i++) { - ok = rules[i](state, line, endLine, false); - if (ok) { - break; - } - } - - // set state.tight iff we had an empty line before current tag - // i.e. latest empty line should not count - state.tight = !hasEmptyLines; - - // paragraph might "eat" one newline after it in nested lists - if (state.isEmpty(state.line - 1)) { - hasEmptyLines = true; - } - - line = state.line; - - if (line < endLine && state.isEmpty(line)) { - hasEmptyLines = true; - line++; - - // two empty lines should stop the parser in list mode - if (line < endLine && state.parentType === 'list' && state.isEmpty(line)) { break; } - state.line = line; - } - } -}; - -var TABS_SCAN_RE = /[\n\t]/g; -var NEWLINES_RE = /\r[\n\u0085]|[\u2424\u2028\u0085]/g; -var SPACES_RE = /\u00a0/g; - -/** - * Tokenize the given `str`. - * - * @param {String} `str` Source string - * @param {Object} `options` - * @param {Object} `env` - * @param {Array} `outTokens` - * @api private - */ - -ParserBlock.prototype.parse = function (str, options, env, outTokens) { - var state, lineStart = 0, lastTabPos = 0; - if (!str) { return []; } - - // Normalize spaces - str = str.replace(SPACES_RE, ' '); - - // Normalize newlines - str = str.replace(NEWLINES_RE, '\n'); - - // Replace tabs with proper number of spaces (1..4) - if (str.indexOf('\t') >= 0) { - str = str.replace(TABS_SCAN_RE, function (match, offset) { - var result; - if (str.charCodeAt(offset) === 0x0A) { - lineStart = offset + 1; - lastTabPos = 0; - return match; - } - result = ' '.slice((offset - lineStart - lastTabPos) % 4); - lastTabPos = offset - lineStart + 1; - return result; - }); - } - - state = new StateBlock(str, this, options, env, outTokens); - this.tokenize(state, state.line, state.lineMax); -}; - -/** - * Expose `ParserBlock` - */ - -module.exports = ParserBlock; diff --git a/node_modules/remarkable/lib/parser_core.js b/node_modules/remarkable/lib/parser_core.js deleted file mode 100644 index 84e786a19..000000000 --- a/node_modules/remarkable/lib/parser_core.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -/** - * Local dependencies - */ - -var Ruler = require('./ruler'); - -/** - * Core parser `rules` - */ - -var _rules = [ - [ 'block', require('./rules_core/block') ], - [ 'abbr', require('./rules_core/abbr') ], - [ 'references', require('./rules_core/references') ], - [ 'inline', require('./rules_core/inline') ], - [ 'footnote_tail', require('./rules_core/footnote_tail') ], - [ 'abbr2', require('./rules_core/abbr2') ], - [ 'replacements', require('./rules_core/replacements') ], - [ 'smartquotes', require('./rules_core/smartquotes') ], - [ 'linkify', require('./rules_core/linkify') ] -]; - -/** - * Class for top level (`core`) parser rules - * - * @api private - */ - -function Core() { - this.options = {}; - this.ruler = new Ruler(); - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1]); - } -} - -/** - * Process rules with the given `state` - * - * @param {Object} `state` - * @api private - */ - -Core.prototype.process = function (state) { - var i, l, rules; - rules = this.ruler.getRules(''); - for (i = 0, l = rules.length; i < l; i++) { - rules[i](state); - } -}; - -/** - * Expose `Core` - */ - -module.exports = Core; diff --git a/node_modules/remarkable/lib/parser_inline.js b/node_modules/remarkable/lib/parser_inline.js deleted file mode 100644 index 0c819c6c8..000000000 --- a/node_modules/remarkable/lib/parser_inline.js +++ /dev/null @@ -1,161 +0,0 @@ -'use strict'; - -/** - * Local dependencies - */ - -var Ruler = require('./ruler'); -var StateInline = require('./rules_inline/state_inline'); -var utils = require('./common/utils'); - -/** - * Inline Parser `rules` - */ - -var _rules = [ - [ 'text', require('./rules_inline/text') ], - [ 'newline', require('./rules_inline/newline') ], - [ 'escape', require('./rules_inline/escape') ], - [ 'backticks', require('./rules_inline/backticks') ], - [ 'del', require('./rules_inline/del') ], - [ 'ins', require('./rules_inline/ins') ], - [ 'mark', require('./rules_inline/mark') ], - [ 'emphasis', require('./rules_inline/emphasis') ], - [ 'sub', require('./rules_inline/sub') ], - [ 'sup', require('./rules_inline/sup') ], - [ 'links', require('./rules_inline/links') ], - [ 'footnote_inline', require('./rules_inline/footnote_inline') ], - [ 'footnote_ref', require('./rules_inline/footnote_ref') ], - [ 'autolink', require('./rules_inline/autolink') ], - [ 'htmltag', require('./rules_inline/htmltag') ], - [ 'entity', require('./rules_inline/entity') ] -]; - -/** - * Inline Parser class. Note that link validation is stricter - * in Remarkable than what is specified by CommonMark. If you - * want to change this you can use a custom validator. - * - * @api private - */ - -function ParserInline() { - this.ruler = new Ruler(); - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1]); - } - - // Can be overridden with a custom validator - this.validateLink = validateLink; -} - -/** - * Skip a single token by running all rules in validation mode. - * Returns `true` if any rule reports success. - * - * @param {Object} `state` - * @api privage - */ - -ParserInline.prototype.skipToken = function (state) { - var rules = this.ruler.getRules(''); - var len = rules.length; - var pos = state.pos; - var i, cached_pos; - - if ((cached_pos = state.cacheGet(pos)) > 0) { - state.pos = cached_pos; - return; - } - - for (i = 0; i < len; i++) { - if (rules[i](state, true)) { - state.cacheSet(pos, state.pos); - return; - } - } - - state.pos++; - state.cacheSet(pos, state.pos); -}; - -/** - * Generate tokens for the given input range. - * - * @param {Object} `state` - * @api private - */ - -ParserInline.prototype.tokenize = function (state) { - var rules = this.ruler.getRules(''); - var len = rules.length; - var end = state.posMax; - var ok, i; - - while (state.pos < end) { - - // Try all possible rules. - // On success, the rule should: - // - // - update `state.pos` - // - update `state.tokens` - // - return true - for (i = 0; i < len; i++) { - ok = rules[i](state, false); - - if (ok) { - break; - } - } - - if (ok) { - if (state.pos >= end) { break; } - continue; - } - - state.pending += state.src[state.pos++]; - } - - if (state.pending) { - state.pushPending(); - } -}; - -/** - * Parse the given input string. - * - * @param {String} `str` - * @param {Object} `options` - * @param {Object} `env` - * @param {Array} `outTokens` - * @api private - */ - -ParserInline.prototype.parse = function (str, options, env, outTokens) { - var state = new StateInline(str, this, options, env, outTokens); - this.tokenize(state); -}; - -/** - * Validate the given `url` by checking for bad protocols. - * - * @param {String} `url` - * @return {Boolean} - */ - -function validateLink(url) { - var BAD_PROTOCOLS = [ 'vbscript', 'javascript', 'file', 'data' ]; - var str = url.trim().toLowerCase(); - // Care about digital entities "javascript:alert(1)" - str = utils.replaceEntities(str); - if (str.indexOf(':') !== -1 && BAD_PROTOCOLS.indexOf(str.split(':')[0]) !== -1) { - return false; - } - return true; -} - -/** - * Expose `ParserInline` - */ - -module.exports = ParserInline; diff --git a/node_modules/remarkable/lib/renderer.js b/node_modules/remarkable/lib/renderer.js deleted file mode 100644 index efe9e6719..000000000 --- a/node_modules/remarkable/lib/renderer.js +++ /dev/null @@ -1,75 +0,0 @@ -'use strict'; - -/** - * Local dependencies - */ - -var utils = require('./common/utils'); -var rules = require('./rules'); - -/** - * Expose `Renderer` - */ - -module.exports = Renderer; - -/** - * Renderer class. Renders HTML and exposes `rules` to allow - * local modifications. - */ - -function Renderer() { - this.rules = utils.assign({}, rules); - - // exported helper, for custom rules only - this.getBreak = rules.getBreak; -} - -/** - * Render a string of inline HTML with the given `tokens` and - * `options`. - * - * @param {Array} `tokens` - * @param {Object} `options` - * @param {Object} `env` - * @return {String} - * @api public - */ - -Renderer.prototype.renderInline = function (tokens, options, env) { - var _rules = this.rules; - var len = tokens.length, i = 0; - var result = ''; - - while (len--) { - result += _rules[tokens[i].type](tokens, i++, options, env, this); - } - - return result; -}; - -/** - * Render a string of HTML with the given `tokens` and - * `options`. - * - * @param {Array} `tokens` - * @param {Object} `options` - * @param {Object} `env` - * @return {String} - * @api public - */ - -Renderer.prototype.render = function (tokens, options, env) { - var _rules = this.rules; - var len = tokens.length, i = -1; - var result = ''; - - while (++i < len) { - if (tokens[i].type === 'inline') { - result += this.renderInline(tokens[i].children, options, env); - } else { - result += _rules[tokens[i].type](tokens, i, options, env, this); - } - } - return result; -}; diff --git a/node_modules/remarkable/lib/ruler.js b/node_modules/remarkable/lib/ruler.js deleted file mode 100644 index 05064508b..000000000 --- a/node_modules/remarkable/lib/ruler.js +++ /dev/null @@ -1,273 +0,0 @@ -'use strict'; - -/** - * Ruler is a helper class for building responsibility chains from - * parse rules. It allows: - * - * - easy stack rules chains - * - getting main chain and named chains content (as arrays of functions) - * - * Helper methods, should not be used directly. - * @api private - */ - -function Ruler() { - // List of added rules. Each element is: - // - // { name: XXX, - // enabled: Boolean, - // fn: Function(), - // alt: [ name2, name3 ] } - // - this.__rules__ = []; - - // Cached rule chains. - // - // First level - chain name, '' for default. - // Second level - digital anchor for fast filtering by charcodes. - // - this.__cache__ = null; -} - -/** - * Find the index of a rule by `name`. - * - * @param {String} `name` - * @return {Number} Index of the given `name` - * @api private - */ - -Ruler.prototype.__find__ = function (name) { - var len = this.__rules__.length; - var i = -1; - - while (len--) { - if (this.__rules__[++i].name === name) { - return i; - } - } - return -1; -}; - -/** - * Build the rules lookup cache - * - * @api private - */ - -Ruler.prototype.__compile__ = function () { - var self = this; - var chains = [ '' ]; - - // collect unique names - self.__rules__.forEach(function (rule) { - if (!rule.enabled) { - return; - } - - rule.alt.forEach(function (altName) { - if (chains.indexOf(altName) < 0) { - chains.push(altName); - } - }); - }); - - self.__cache__ = {}; - - chains.forEach(function (chain) { - self.__cache__[chain] = []; - self.__rules__.forEach(function (rule) { - if (!rule.enabled) { - return; - } - - if (chain && rule.alt.indexOf(chain) < 0) { - return; - } - self.__cache__[chain].push(rule.fn); - }); - }); -}; - -/** - * Ruler public methods - * ------------------------------------------------ - */ - -/** - * Replace rule function - * - * @param {String} `name` Rule name - * @param {Function `fn` - * @param {Object} `options` - * @api private - */ - -Ruler.prototype.at = function (name, fn, options) { - var idx = this.__find__(name); - var opt = options || {}; - - if (idx === -1) { - throw new Error('Parser rule not found: ' + name); - } - - this.__rules__[idx].fn = fn; - this.__rules__[idx].alt = opt.alt || []; - this.__cache__ = null; -}; - -/** - * Add a rule to the chain before given the `ruleName`. - * - * @param {String} `beforeName` - * @param {String} `ruleName` - * @param {Function} `fn` - * @param {Object} `options` - * @api private - */ - -Ruler.prototype.before = function (beforeName, ruleName, fn, options) { - var idx = this.__find__(beforeName); - var opt = options || {}; - - if (idx === -1) { - throw new Error('Parser rule not found: ' + beforeName); - } - - this.__rules__.splice(idx, 0, { - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Add a rule to the chain after the given `ruleName`. - * - * @param {String} `afterName` - * @param {String} `ruleName` - * @param {Function} `fn` - * @param {Object} `options` - * @api private - */ - -Ruler.prototype.after = function (afterName, ruleName, fn, options) { - var idx = this.__find__(afterName); - var opt = options || {}; - - if (idx === -1) { - throw new Error('Parser rule not found: ' + afterName); - } - - this.__rules__.splice(idx + 1, 0, { - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Add a rule to the end of chain. - * - * @param {String} `ruleName` - * @param {Function} `fn` - * @param {Object} `options` - * @return {String} - */ - -Ruler.prototype.push = function (ruleName, fn, options) { - var opt = options || {}; - - this.__rules__.push({ - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Enable a rule or list of rules. - * - * @param {String|Array} `list` Name or array of rule names to enable - * @param {Boolean} `strict` If `true`, all non listed rules will be disabled. - * @api private - */ - -Ruler.prototype.enable = function (list, strict) { - list = !Array.isArray(list) - ? [ list ] - : list; - - // In strict mode disable all existing rules first - if (strict) { - this.__rules__.forEach(function (rule) { - rule.enabled = false; - }); - } - - // Search by name and enable - list.forEach(function (name) { - var idx = this.__find__(name); - if (idx < 0) { - throw new Error('Rules manager: invalid rule name ' + name); - } - this.__rules__[idx].enabled = true; - }, this); - - this.__cache__ = null; -}; - - -/** - * Disable a rule or list of rules. - * - * @param {String|Array} `list` Name or array of rule names to disable - * @api private - */ - -Ruler.prototype.disable = function (list) { - list = !Array.isArray(list) - ? [ list ] - : list; - - // Search by name and disable - list.forEach(function (name) { - var idx = this.__find__(name); - if (idx < 0) { - throw new Error('Rules manager: invalid rule name ' + name); - } - this.__rules__[idx].enabled = false; - }, this); - - this.__cache__ = null; -}; - -/** - * Get a rules list as an array of functions. - * - * @param {String} `chainName` - * @return {Object} - * @api private - */ - -Ruler.prototype.getRules = function (chainName) { - if (this.__cache__ === null) { - this.__compile__(); - } - return this.__cache__[chainName] || []; -}; - -/** - * Expose `Ruler` - */ - -module.exports = Ruler; diff --git a/node_modules/remarkable/lib/rules.js b/node_modules/remarkable/lib/rules.js deleted file mode 100644 index d879bb80d..000000000 --- a/node_modules/remarkable/lib/rules.js +++ /dev/null @@ -1,429 +0,0 @@ -'use strict'; - -/** - * Local dependencies - */ - -var has = require('./common/utils').has; -var unescapeMd = require('./common/utils').unescapeMd; -var replaceEntities = require('./common/utils').replaceEntities; -var escapeHtml = require('./common/utils').escapeHtml; - -/** - * Renderer rules cache - */ - -var rules = {}; - -/** - * Blockquotes - */ - -rules.blockquote_open = function(/* tokens, idx, options, env */) { - return '
          \n'; -}; - -rules.blockquote_close = function(tokens, idx /*, options, env */) { - return '
          ' + getBreak(tokens, idx); -}; - -/** - * Code - */ - -rules.code = function(tokens, idx /*, options, env */) { - if (tokens[idx].block) { - return '
          ' + escapeHtml(tokens[idx].content) + '
          ' + getBreak(tokens, idx); - } - return '' + escapeHtml(tokens[idx].content) + ''; -}; - -/** - * Fenced code blocks - */ - -rules.fence = function(tokens, idx, options, env, instance) { - var token = tokens[idx]; - var langClass = ''; - var langPrefix = options.langPrefix; - var langName = '', fences, fenceName; - var highlighted; - - if (token.params) { - - // - // ```foo bar - // - // Try custom renderer "foo" first. That will simplify overwrite - // for diagrams, latex, and any other fenced block with custom look - // - - fences = token.params.split(/\s+/g); - fenceName = fences.join(' '); - - if (has(instance.rules.fence_custom, fences[0])) { - return instance.rules.fence_custom[fences[0]](tokens, idx, options, env, instance); - } - - langName = escapeHtml(replaceEntities(unescapeMd(fenceName))); - langClass = ' class="' + langPrefix + langName + '"'; - } - - if (options.highlight) { - highlighted = options.highlight.apply(options.highlight, [ token.content ].concat(fences)) - || escapeHtml(token.content); - } else { - highlighted = escapeHtml(token.content); - } - - return '
          '
          -        + highlighted
          -        + '
          ' - + getBreak(tokens, idx); -}; - -rules.fence_custom = {}; - -/** - * Headings - */ - -rules.heading_open = function(tokens, idx /*, options, env */) { - return ''; -}; -rules.heading_close = function(tokens, idx /*, options, env */) { - return '\n'; -}; - -/** - * Horizontal rules - */ - -rules.hr = function(tokens, idx, options /*, env */) { - return (options.xhtmlOut ? '
          ' : '
          ') + getBreak(tokens, idx); -}; - -/** - * Bullets - */ - -rules.bullet_list_open = function(/* tokens, idx, options, env */) { - return '
            \n'; -}; -rules.bullet_list_close = function(tokens, idx /*, options, env */) { - return '
          ' + getBreak(tokens, idx); -}; - -/** - * List items - */ - -rules.list_item_open = function(/* tokens, idx, options, env */) { - return '
        9. '; -}; -rules.list_item_close = function(/* tokens, idx, options, env */) { - return '
        10. \n'; -}; - -/** - * Ordered list items - */ - -rules.ordered_list_open = function(tokens, idx /*, options, env */) { - var token = tokens[idx]; - var order = token.order > 1 ? ' start="' + token.order + '"' : ''; - return '\n'; -}; -rules.ordered_list_close = function(tokens, idx /*, options, env */) { - return '' + getBreak(tokens, idx); -}; - -/** - * Paragraphs - */ - -rules.paragraph_open = function(tokens, idx /*, options, env */) { - return tokens[idx].tight ? '' : '

          '; -}; -rules.paragraph_close = function(tokens, idx /*, options, env */) { - var addBreak = !(tokens[idx].tight && idx && tokens[idx - 1].type === 'inline' && !tokens[idx - 1].content); - return (tokens[idx].tight ? '' : '

          ') + (addBreak ? getBreak(tokens, idx) : ''); -}; - -/** - * Links - */ - -rules.link_open = function(tokens, idx, options /* env */) { - var title = tokens[idx].title ? (' title="' + escapeHtml(replaceEntities(tokens[idx].title)) + '"') : ''; - var target = options.linkTarget ? (' target="' + options.linkTarget + '"') : ''; - return ''; -}; -rules.link_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Images - */ - -rules.image = function(tokens, idx, options /*, env */) { - var src = ' src="' + escapeHtml(tokens[idx].src) + '"'; - var title = tokens[idx].title ? (' title="' + escapeHtml(replaceEntities(tokens[idx].title)) + '"') : ''; - var alt = ' alt="' + (tokens[idx].alt ? escapeHtml(replaceEntities(unescapeMd(tokens[idx].alt))) : '') + '"'; - var suffix = options.xhtmlOut ? ' /' : ''; - return ''; -}; - -/** - * Tables - */ - -rules.table_open = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.table_close = function(/* tokens, idx, options, env */) { - return '
          \n'; -}; -rules.thead_open = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.thead_close = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.tbody_open = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.tbody_close = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.tr_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.tr_close = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.th_open = function(tokens, idx /*, options, env */) { - var token = tokens[idx]; - return ''; -}; -rules.th_close = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.td_open = function(tokens, idx /*, options, env */) { - var token = tokens[idx]; - return ''; -}; -rules.td_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Bold - */ - -rules.strong_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.strong_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Italicize - */ - -rules.em_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.em_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Strikethrough - */ - -rules.del_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.del_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Insert - */ - -rules.ins_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.ins_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Highlight - */ - -rules.mark_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.mark_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Super- and sub-script - */ - -rules.sub = function(tokens, idx /*, options, env */) { - return '' + escapeHtml(tokens[idx].content) + ''; -}; -rules.sup = function(tokens, idx /*, options, env */) { - return '' + escapeHtml(tokens[idx].content) + ''; -}; - -/** - * Breaks - */ - -rules.hardbreak = function(tokens, idx, options /*, env */) { - return options.xhtmlOut ? '
          \n' : '
          \n'; -}; -rules.softbreak = function(tokens, idx, options /*, env */) { - return options.breaks ? (options.xhtmlOut ? '
          \n' : '
          \n') : '\n'; -}; - -/** - * Text - */ - -rules.text = function(tokens, idx /*, options, env */) { - return escapeHtml(tokens[idx].content); -}; - -/** - * Content - */ - -rules.htmlblock = function(tokens, idx /*, options, env */) { - return tokens[idx].content; -}; -rules.htmltag = function(tokens, idx /*, options, env */) { - return tokens[idx].content; -}; - -/** - * Abbreviations, initialism - */ - -rules.abbr_open = function(tokens, idx /*, options, env */) { - return ''; -}; -rules.abbr_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Footnotes - */ - -rules.footnote_ref = function(tokens, idx) { - var n = Number(tokens[idx].id + 1).toString(); - var id = 'fnref' + n; - if (tokens[idx].subId > 0) { - id += ':' + tokens[idx].subId; - } - return '[' + n + ']'; -}; -rules.footnote_block_open = function(tokens, idx, options) { - var hr = options.xhtmlOut - ? '
          \n' - : '
          \n'; - return hr + '
          \n
            \n'; -}; -rules.footnote_block_close = function() { - return '
          \n
          \n'; -}; -rules.footnote_open = function(tokens, idx) { - var id = Number(tokens[idx].id + 1).toString(); - return '
        11. '; -}; -rules.footnote_close = function() { - return '
        12. \n'; -}; -rules.footnote_anchor = function(tokens, idx) { - var n = Number(tokens[idx].id + 1).toString(); - var id = 'fnref' + n; - if (tokens[idx].subId > 0) { - id += ':' + tokens[idx].subId; - } - return ' '; -}; - -/** - * Definition lists - */ - -rules.dl_open = function() { - return '
          \n'; -}; -rules.dt_open = function() { - return '
          '; -}; -rules.dd_open = function() { - return '
          '; -}; -rules.dl_close = function() { - return '
          \n'; -}; -rules.dt_close = function() { - return '\n'; -}; -rules.dd_close = function() { - return '\n'; -}; - -/** - * Helper functions - */ - -function nextToken(tokens, idx) { - if (++idx >= tokens.length - 2) { - return idx; - } - if ((tokens[idx].type === 'paragraph_open' && tokens[idx].tight) && - (tokens[idx + 1].type === 'inline' && tokens[idx + 1].content.length === 0) && - (tokens[idx + 2].type === 'paragraph_close' && tokens[idx + 2].tight)) { - return nextToken(tokens, idx + 2); - } - return idx; -} - -/** - * Check to see if `\n` is needed before the next token. - * - * @param {Array} `tokens` - * @param {Number} `idx` - * @return {String} Empty string or newline - * @api private - */ - -var getBreak = rules.getBreak = function getBreak(tokens, idx) { - idx = nextToken(tokens, idx); - if (idx < tokens.length && tokens[idx].type === 'list_item_close') { - return ''; - } - return '\n'; -}; - -/** - * Expose `rules` - */ - -module.exports = rules; diff --git a/node_modules/remarkable/lib/rules_block/blockquote.js b/node_modules/remarkable/lib/rules_block/blockquote.js deleted file mode 100644 index ca7b026ee..000000000 --- a/node_modules/remarkable/lib/rules_block/blockquote.js +++ /dev/null @@ -1,133 +0,0 @@ -// Block quotes - -'use strict'; - - -module.exports = function blockquote(state, startLine, endLine, silent) { - var nextLine, lastLineEmpty, oldTShift, oldBMarks, oldIndent, oldParentType, lines, - terminatorRules, - i, l, terminate, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos > max) { return false; } - - // check the block quote marker - if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; } - - if (state.level >= state.options.maxNesting) { return false; } - - // we know that it's going to be a valid blockquote, - // so no point trying to find the end of it in silent mode - if (silent) { return true; } - - // skip one optional space after '>' - if (state.src.charCodeAt(pos) === 0x20) { pos++; } - - oldIndent = state.blkIndent; - state.blkIndent = 0; - - oldBMarks = [ state.bMarks[startLine] ]; - state.bMarks[startLine] = pos; - - // check if we have an empty blockquote - pos = pos < max ? state.skipSpaces(pos) : pos; - lastLineEmpty = pos >= max; - - oldTShift = [ state.tShift[startLine] ]; - state.tShift[startLine] = pos - state.bMarks[startLine]; - - terminatorRules = state.parser.ruler.getRules('blockquote'); - - // Search the end of the block - // - // Block ends with either: - // 1. an empty line outside: - // ``` - // > test - // - // ``` - // 2. an empty line inside: - // ``` - // > - // test - // ``` - // 3. another tag - // ``` - // > test - // - - - - // ``` - for (nextLine = startLine + 1; nextLine < endLine; nextLine++) { - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (pos >= max) { - // Case 1: line is not inside the blockquote, and this line is empty. - break; - } - - if (state.src.charCodeAt(pos++) === 0x3E/* > */) { - // This line is inside the blockquote. - - // skip one optional space after '>' - if (state.src.charCodeAt(pos) === 0x20) { pos++; } - - oldBMarks.push(state.bMarks[nextLine]); - state.bMarks[nextLine] = pos; - - pos = pos < max ? state.skipSpaces(pos) : pos; - lastLineEmpty = pos >= max; - - oldTShift.push(state.tShift[nextLine]); - state.tShift[nextLine] = pos - state.bMarks[nextLine]; - continue; - } - - // Case 2: line is not inside the blockquote, and the last line was empty. - if (lastLineEmpty) { break; } - - // Case 3: another tag found. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - - oldBMarks.push(state.bMarks[nextLine]); - oldTShift.push(state.tShift[nextLine]); - - // A negative number means that this is a paragraph continuation; - // - // Any negative number will do the job here, but it's better for it - // to be large enough to make any bugs obvious. - state.tShift[nextLine] = -1337; - } - - oldParentType = state.parentType; - state.parentType = 'blockquote'; - state.tokens.push({ - type: 'blockquote_open', - lines: lines = [ startLine, 0 ], - level: state.level++ - }); - state.parser.tokenize(state, startLine, nextLine); - state.tokens.push({ - type: 'blockquote_close', - level: --state.level - }); - state.parentType = oldParentType; - lines[1] = state.line; - - // Restore original tShift; this might not be necessary since the parser - // has already been here, but just to make sure we can do that. - for (i = 0; i < oldTShift.length; i++) { - state.bMarks[i + startLine] = oldBMarks[i]; - state.tShift[i + startLine] = oldTShift[i]; - } - state.blkIndent = oldIndent; - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/code.js b/node_modules/remarkable/lib/rules_block/code.js deleted file mode 100644 index 77d6f90a8..000000000 --- a/node_modules/remarkable/lib/rules_block/code.js +++ /dev/null @@ -1,36 +0,0 @@ -// Code block (4 spaces padded) - -'use strict'; - - -module.exports = function code(state, startLine, endLine/*, silent*/) { - var nextLine, last; - - if (state.tShift[startLine] - state.blkIndent < 4) { return false; } - - last = nextLine = startLine + 1; - - while (nextLine < endLine) { - if (state.isEmpty(nextLine)) { - nextLine++; - continue; - } - if (state.tShift[nextLine] - state.blkIndent >= 4) { - nextLine++; - last = nextLine; - continue; - } - break; - } - - state.line = nextLine; - state.tokens.push({ - type: 'code', - content: state.getLines(startLine, last, 4 + state.blkIndent, true), - block: true, - lines: [ startLine, state.line ], - level: state.level - }); - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/deflist.js b/node_modules/remarkable/lib/rules_block/deflist.js deleted file mode 100644 index 7fde6ccf8..000000000 --- a/node_modules/remarkable/lib/rules_block/deflist.js +++ /dev/null @@ -1,207 +0,0 @@ -// Definition lists - -'use strict'; - - -// Search `[:~][\n ]`, returns next pos after marker on success -// or -1 on fail. -function skipMarker(state, line) { - var pos, marker, - start = state.bMarks[line] + state.tShift[line], - max = state.eMarks[line]; - - if (start >= max) { return -1; } - - // Check bullet - marker = state.src.charCodeAt(start++); - if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1; } - - pos = state.skipSpaces(start); - - // require space after ":" - if (start === pos) { return -1; } - - // no empty definitions, e.g. " : " - if (pos >= max) { return -1; } - - return pos; -} - -function markTightParagraphs(state, idx) { - var i, l, - level = state.level + 2; - - for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) { - if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { - state.tokens[i + 2].tight = true; - state.tokens[i].tight = true; - i += 2; - } - } -} - -module.exports = function deflist(state, startLine, endLine, silent) { - var contentStart, - ddLine, - dtLine, - itemLines, - listLines, - listTokIdx, - nextLine, - oldIndent, - oldDDIndent, - oldParentType, - oldTShift, - oldTight, - prevEmptyEnd, - tight; - - if (silent) { - // quirk: validation mode validates a dd block only, not a whole deflist - if (state.ddIndent < 0) { return false; } - return skipMarker(state, startLine) >= 0; - } - - nextLine = startLine + 1; - if (state.isEmpty(nextLine)) { - if (++nextLine > endLine) { return false; } - } - - if (state.tShift[nextLine] < state.blkIndent) { return false; } - contentStart = skipMarker(state, nextLine); - if (contentStart < 0) { return false; } - - if (state.level >= state.options.maxNesting) { return false; } - - // Start list - listTokIdx = state.tokens.length; - - state.tokens.push({ - type: 'dl_open', - lines: listLines = [ startLine, 0 ], - level: state.level++ - }); - - // - // Iterate list items - // - - dtLine = startLine; - ddLine = nextLine; - - // One definition list can contain multiple DTs, - // and one DT can be followed by multiple DDs. - // - // Thus, there is two loops here, and label is - // needed to break out of the second one - // - /*eslint no-labels:0,block-scoped-var:0*/ - OUTER: - for (;;) { - tight = true; - prevEmptyEnd = false; - - state.tokens.push({ - type: 'dt_open', - lines: [ dtLine, dtLine ], - level: state.level++ - }); - state.tokens.push({ - type: 'inline', - content: state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim(), - level: state.level + 1, - lines: [ dtLine, dtLine ], - children: [] - }); - state.tokens.push({ - type: 'dt_close', - level: --state.level - }); - - for (;;) { - state.tokens.push({ - type: 'dd_open', - lines: itemLines = [ nextLine, 0 ], - level: state.level++ - }); - - oldTight = state.tight; - oldDDIndent = state.ddIndent; - oldIndent = state.blkIndent; - oldTShift = state.tShift[ddLine]; - oldParentType = state.parentType; - state.blkIndent = state.ddIndent = state.tShift[ddLine] + 2; - state.tShift[ddLine] = contentStart - state.bMarks[ddLine]; - state.tight = true; - state.parentType = 'deflist'; - - state.parser.tokenize(state, ddLine, endLine, true); - - // If any of list item is tight, mark list as tight - if (!state.tight || prevEmptyEnd) { - tight = false; - } - // Item become loose if finish with empty line, - // but we should filter last element, because it means list finish - prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1); - - state.tShift[ddLine] = oldTShift; - state.tight = oldTight; - state.parentType = oldParentType; - state.blkIndent = oldIndent; - state.ddIndent = oldDDIndent; - - state.tokens.push({ - type: 'dd_close', - level: --state.level - }); - - itemLines[1] = nextLine = state.line; - - if (nextLine >= endLine) { break OUTER; } - - if (state.tShift[nextLine] < state.blkIndent) { break OUTER; } - contentStart = skipMarker(state, nextLine); - if (contentStart < 0) { break; } - - ddLine = nextLine; - - // go to the next loop iteration: - // insert DD tag and repeat checking - } - - if (nextLine >= endLine) { break; } - dtLine = nextLine; - - if (state.isEmpty(dtLine)) { break; } - if (state.tShift[dtLine] < state.blkIndent) { break; } - - ddLine = dtLine + 1; - if (ddLine >= endLine) { break; } - if (state.isEmpty(ddLine)) { ddLine++; } - if (ddLine >= endLine) { break; } - - if (state.tShift[ddLine] < state.blkIndent) { break; } - contentStart = skipMarker(state, ddLine); - if (contentStart < 0) { break; } - - // go to the next loop iteration: - // insert DT and DD tags and repeat checking - } - - // Finilize list - state.tokens.push({ - type: 'dl_close', - level: --state.level - }); - listLines[1] = nextLine; - - state.line = nextLine; - - // mark paragraphs tight if needed - if (tight) { - markTightParagraphs(state, listTokIdx); - } - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/fences.js b/node_modules/remarkable/lib/rules_block/fences.js deleted file mode 100644 index 186cdbb04..000000000 --- a/node_modules/remarkable/lib/rules_block/fences.js +++ /dev/null @@ -1,91 +0,0 @@ -// fences (``` lang, ~~~ lang) - -'use strict'; - - -module.exports = function fences(state, startLine, endLine, silent) { - var marker, len, params, nextLine, mem, - haveEndMarker = false, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos + 3 > max) { return false; } - - marker = state.src.charCodeAt(pos); - - if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) { - return false; - } - - // scan marker length - mem = pos; - pos = state.skipChars(pos, marker); - - len = pos - mem; - - if (len < 3) { return false; } - - params = state.src.slice(pos, max).trim(); - - if (params.indexOf('`') >= 0) { return false; } - - // Since start is found, we can report success here in validation mode - if (silent) { return true; } - - // search end of block - nextLine = startLine; - - for (;;) { - nextLine++; - if (nextLine >= endLine) { - // unclosed block should be autoclosed by end of document. - // also block seems to be autoclosed by end of parent - break; - } - - pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (pos < max && state.tShift[nextLine] < state.blkIndent) { - // non-empty line with negative indent should stop the list: - // - ``` - // test - break; - } - - if (state.src.charCodeAt(pos) !== marker) { continue; } - - if (state.tShift[nextLine] - state.blkIndent >= 4) { - // closing fence should be indented less than 4 spaces - continue; - } - - pos = state.skipChars(pos, marker); - - // closing code fence must be at least as long as the opening one - if (pos - mem < len) { continue; } - - // make sure tail has spaces only - pos = state.skipSpaces(pos); - - if (pos < max) { continue; } - - haveEndMarker = true; - // found! - break; - } - - // If a fence has heading spaces, they should be removed from its inner block - len = state.tShift[startLine]; - - state.line = nextLine + (haveEndMarker ? 1 : 0); - state.tokens.push({ - type: 'fence', - params: params, - content: state.getLines(startLine + 1, nextLine, len, true), - lines: [ startLine, state.line ], - level: state.level - }); - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/footnote.js b/node_modules/remarkable/lib/rules_block/footnote.js deleted file mode 100644 index 7c8c5e4e1..000000000 --- a/node_modules/remarkable/lib/rules_block/footnote.js +++ /dev/null @@ -1,67 +0,0 @@ -// Process footnote reference list - -'use strict'; - - -module.exports = function footnote(state, startLine, endLine, silent) { - var oldBMark, oldTShift, oldParentType, pos, label, - start = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - // line should be at least 5 chars - "[^x]:" - if (start + 4 > max) { return false; } - - if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - for (pos = start + 2; pos < max; pos++) { - if (state.src.charCodeAt(pos) === 0x20) { return false; } - if (state.src.charCodeAt(pos) === 0x5D /* ] */) { - break; - } - } - - if (pos === start + 2) { return false; } // no empty footnote labels - if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) { return false; } - if (silent) { return true; } - pos++; - - if (!state.env.footnotes) { state.env.footnotes = {}; } - if (!state.env.footnotes.refs) { state.env.footnotes.refs = {}; } - label = state.src.slice(start + 2, pos - 2); - state.env.footnotes.refs[':' + label] = -1; - - state.tokens.push({ - type: 'footnote_reference_open', - label: label, - level: state.level++ - }); - - oldBMark = state.bMarks[startLine]; - oldTShift = state.tShift[startLine]; - oldParentType = state.parentType; - state.tShift[startLine] = state.skipSpaces(pos) - pos; - state.bMarks[startLine] = pos; - state.blkIndent += 4; - state.parentType = 'footnote'; - - if (state.tShift[startLine] < state.blkIndent) { - state.tShift[startLine] += state.blkIndent; - state.bMarks[startLine] -= state.blkIndent; - } - - state.parser.tokenize(state, startLine, endLine, true); - - state.parentType = oldParentType; - state.blkIndent -= 4; - state.tShift[startLine] = oldTShift; - state.bMarks[startLine] = oldBMark; - - state.tokens.push({ - type: 'footnote_reference_close', - level: --state.level - }); - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/heading.js b/node_modules/remarkable/lib/rules_block/heading.js deleted file mode 100644 index f5ef6a26d..000000000 --- a/node_modules/remarkable/lib/rules_block/heading.js +++ /dev/null @@ -1,58 +0,0 @@ -// heading (#, ##, ...) - -'use strict'; - - -module.exports = function heading(state, startLine, endLine, silent) { - var ch, level, tmp, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos >= max) { return false; } - - ch = state.src.charCodeAt(pos); - - if (ch !== 0x23/* # */ || pos >= max) { return false; } - - // count heading level - level = 1; - ch = state.src.charCodeAt(++pos); - while (ch === 0x23/* # */ && pos < max && level <= 6) { - level++; - ch = state.src.charCodeAt(++pos); - } - - if (level > 6 || (pos < max && ch !== 0x20/* space */)) { return false; } - - if (silent) { return true; } - - // Let's cut tails like ' ### ' from the end of string - - max = state.skipCharsBack(max, 0x20, pos); // space - tmp = state.skipCharsBack(max, 0x23, pos); // # - if (tmp > pos && state.src.charCodeAt(tmp - 1) === 0x20/* space */) { - max = tmp; - } - - state.line = startLine + 1; - - state.tokens.push({ type: 'heading_open', - hLevel: level, - lines: [ startLine, state.line ], - level: state.level - }); - - // only if header is not empty - if (pos < max) { - state.tokens.push({ - type: 'inline', - content: state.src.slice(pos, max).trim(), - level: state.level + 1, - lines: [ startLine, state.line ], - children: [] - }); - } - state.tokens.push({ type: 'heading_close', hLevel: level, level: state.level }); - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/hr.js b/node_modules/remarkable/lib/rules_block/hr.js deleted file mode 100644 index 2fbbc07ee..000000000 --- a/node_modules/remarkable/lib/rules_block/hr.js +++ /dev/null @@ -1,45 +0,0 @@ -// Horizontal rule - -'use strict'; - - -module.exports = function hr(state, startLine, endLine, silent) { - var marker, cnt, ch, - pos = state.bMarks[startLine], - max = state.eMarks[startLine]; - - pos += state.tShift[startLine]; - - if (pos > max) { return false; } - - marker = state.src.charCodeAt(pos++); - - // Check hr marker - if (marker !== 0x2A/* * */ && - marker !== 0x2D/* - */ && - marker !== 0x5F/* _ */) { - return false; - } - - // markers can be mixed with spaces, but there should be at least 3 one - - cnt = 1; - while (pos < max) { - ch = state.src.charCodeAt(pos++); - if (ch !== marker && ch !== 0x20/* space */) { return false; } - if (ch === marker) { cnt++; } - } - - if (cnt < 3) { return false; } - - if (silent) { return true; } - - state.line = startLine + 1; - state.tokens.push({ - type: 'hr', - lines: [ startLine, state.line ], - level: state.level - }); - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/htmlblock.js b/node_modules/remarkable/lib/rules_block/htmlblock.js deleted file mode 100644 index c5851938e..000000000 --- a/node_modules/remarkable/lib/rules_block/htmlblock.js +++ /dev/null @@ -1,74 +0,0 @@ -// HTML block - -'use strict'; - - -var block_names = require('../common/html_blocks'); - - -var HTML_TAG_OPEN_RE = /^<([a-zA-Z]{1,15})[\s\/>]/; -var HTML_TAG_CLOSE_RE = /^<\/([a-zA-Z]{1,15})[\s>]/; - -function isLetter(ch) { - /*eslint no-bitwise:0*/ - var lc = ch | 0x20; // to lower case - return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); -} - -module.exports = function htmlblock(state, startLine, endLine, silent) { - var ch, match, nextLine, - pos = state.bMarks[startLine], - max = state.eMarks[startLine], - shift = state.tShift[startLine]; - - pos += shift; - - if (!state.options.html) { return false; } - - if (shift > 3 || pos + 2 >= max) { return false; } - - if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } - - ch = state.src.charCodeAt(pos + 1); - - if (ch === 0x21/* ! */ || ch === 0x3F/* ? */) { - // Directive start / comment start / processing instruction start - if (silent) { return true; } - - } else if (ch === 0x2F/* / */ || isLetter(ch)) { - - // Probably start or end of tag - if (ch === 0x2F/* \ */) { - // closing tag - match = state.src.slice(pos, max).match(HTML_TAG_CLOSE_RE); - if (!match) { return false; } - } else { - // opening tag - match = state.src.slice(pos, max).match(HTML_TAG_OPEN_RE); - if (!match) { return false; } - } - // Make sure tag name is valid - if (block_names[match[1].toLowerCase()] !== true) { return false; } - if (silent) { return true; } - - } else { - return false; - } - - // If we are here - we detected HTML block. - // Let's roll down till empty line (block end). - nextLine = startLine + 1; - while (nextLine < state.lineMax && !state.isEmpty(nextLine)) { - nextLine++; - } - - state.line = nextLine; - state.tokens.push({ - type: 'htmlblock', - level: state.level, - lines: [ startLine, state.line ], - content: state.getLines(startLine, nextLine, 0, true) - }); - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/lheading.js b/node_modules/remarkable/lib/rules_block/lheading.js deleted file mode 100644 index 43da43bf1..000000000 --- a/node_modules/remarkable/lib/rules_block/lheading.js +++ /dev/null @@ -1,55 +0,0 @@ -// lheading (---, ===) - -'use strict'; - - -module.exports = function lheading(state, startLine, endLine/*, silent*/) { - var marker, pos, max, - next = startLine + 1; - - if (next >= endLine) { return false; } - if (state.tShift[next] < state.blkIndent) { return false; } - - // Scan next line - - if (state.tShift[next] - state.blkIndent > 3) { return false; } - - pos = state.bMarks[next] + state.tShift[next]; - max = state.eMarks[next]; - - if (pos >= max) { return false; } - - marker = state.src.charCodeAt(pos); - - if (marker !== 0x2D/* - */ && marker !== 0x3D/* = */) { return false; } - - pos = state.skipChars(pos, marker); - - pos = state.skipSpaces(pos); - - if (pos < max) { return false; } - - pos = state.bMarks[startLine] + state.tShift[startLine]; - - state.line = next + 1; - state.tokens.push({ - type: 'heading_open', - hLevel: marker === 0x3D/* = */ ? 1 : 2, - lines: [ startLine, state.line ], - level: state.level - }); - state.tokens.push({ - type: 'inline', - content: state.src.slice(pos, state.eMarks[startLine]).trim(), - level: state.level + 1, - lines: [ startLine, state.line - 1 ], - children: [] - }); - state.tokens.push({ - type: 'heading_close', - hLevel: marker === 0x3D/* = */ ? 1 : 2, - level: state.level - }); - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/list.js b/node_modules/remarkable/lib/rules_block/list.js deleted file mode 100644 index 65b653bf0..000000000 --- a/node_modules/remarkable/lib/rules_block/list.js +++ /dev/null @@ -1,266 +0,0 @@ -// Lists - -'use strict'; - - -// Search `[-+*][\n ]`, returns next pos arter marker on success -// or -1 on fail. -function skipBulletListMarker(state, startLine) { - var marker, pos, max; - - pos = state.bMarks[startLine] + state.tShift[startLine]; - max = state.eMarks[startLine]; - - if (pos >= max) { return -1; } - - marker = state.src.charCodeAt(pos++); - // Check bullet - if (marker !== 0x2A/* * */ && - marker !== 0x2D/* - */ && - marker !== 0x2B/* + */) { - return -1; - } - - if (pos < max && state.src.charCodeAt(pos) !== 0x20) { - // " 1.test " - is not a list item - return -1; - } - - return pos; -} - -// Search `\d+[.)][\n ]`, returns next pos arter marker on success -// or -1 on fail. -function skipOrderedListMarker(state, startLine) { - var ch, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos + 1 >= max) { return -1; } - - ch = state.src.charCodeAt(pos++); - - if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; } - - for (;;) { - // EOL -> fail - if (pos >= max) { return -1; } - - ch = state.src.charCodeAt(pos++); - - if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) { - continue; - } - - // found valid marker - if (ch === 0x29/* ) */ || ch === 0x2e/* . */) { - break; - } - - return -1; - } - - - if (pos < max && state.src.charCodeAt(pos) !== 0x20/* space */) { - // " 1.test " - is not a list item - return -1; - } - return pos; -} - -function markTightParagraphs(state, idx) { - var i, l, - level = state.level + 2; - - for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) { - if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { - state.tokens[i + 2].tight = true; - state.tokens[i].tight = true; - i += 2; - } - } -} - - -module.exports = function list(state, startLine, endLine, silent) { - var nextLine, - indent, - oldTShift, - oldIndent, - oldTight, - oldParentType, - start, - posAfterMarker, - max, - indentAfterMarker, - markerValue, - markerCharCode, - isOrdered, - contentStart, - listTokIdx, - prevEmptyEnd, - listLines, - itemLines, - tight = true, - terminatorRules, - i, l, terminate; - - // Detect list type and position after marker - if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) { - isOrdered = true; - } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) { - isOrdered = false; - } else { - return false; - } - - if (state.level >= state.options.maxNesting) { return false; } - - // We should terminate list on style change. Remember first one to compare. - markerCharCode = state.src.charCodeAt(posAfterMarker - 1); - - // For validation mode we can terminate immediately - if (silent) { return true; } - - // Start list - listTokIdx = state.tokens.length; - - if (isOrdered) { - start = state.bMarks[startLine] + state.tShift[startLine]; - markerValue = Number(state.src.substr(start, posAfterMarker - start - 1)); - - state.tokens.push({ - type: 'ordered_list_open', - order: markerValue, - lines: listLines = [ startLine, 0 ], - level: state.level++ - }); - - } else { - state.tokens.push({ - type: 'bullet_list_open', - lines: listLines = [ startLine, 0 ], - level: state.level++ - }); - } - - // - // Iterate list items - // - - nextLine = startLine; - prevEmptyEnd = false; - terminatorRules = state.parser.ruler.getRules('list'); - - while (nextLine < endLine) { - contentStart = state.skipSpaces(posAfterMarker); - max = state.eMarks[nextLine]; - - if (contentStart >= max) { - // trimming space in "- \n 3" case, indent is 1 here - indentAfterMarker = 1; - } else { - indentAfterMarker = contentStart - posAfterMarker; - } - - // If we have more than 4 spaces, the indent is 1 - // (the rest is just indented code block) - if (indentAfterMarker > 4) { indentAfterMarker = 1; } - - // If indent is less than 1, assume that it's one, example: - // "-\n test" - if (indentAfterMarker < 1) { indentAfterMarker = 1; } - - // " - test" - // ^^^^^ - calculating total length of this thing - indent = (posAfterMarker - state.bMarks[nextLine]) + indentAfterMarker; - - // Run subparser & write tokens - state.tokens.push({ - type: 'list_item_open', - lines: itemLines = [ startLine, 0 ], - level: state.level++ - }); - - oldIndent = state.blkIndent; - oldTight = state.tight; - oldTShift = state.tShift[startLine]; - oldParentType = state.parentType; - state.tShift[startLine] = contentStart - state.bMarks[startLine]; - state.blkIndent = indent; - state.tight = true; - state.parentType = 'list'; - - state.parser.tokenize(state, startLine, endLine, true); - - // If any of list item is tight, mark list as tight - if (!state.tight || prevEmptyEnd) { - tight = false; - } - // Item become loose if finish with empty line, - // but we should filter last element, because it means list finish - prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1); - - state.blkIndent = oldIndent; - state.tShift[startLine] = oldTShift; - state.tight = oldTight; - state.parentType = oldParentType; - - state.tokens.push({ - type: 'list_item_close', - level: --state.level - }); - - nextLine = startLine = state.line; - itemLines[1] = nextLine; - contentStart = state.bMarks[startLine]; - - if (nextLine >= endLine) { break; } - - if (state.isEmpty(nextLine)) { - break; - } - - // - // Try to check if list is terminated or continued. - // - if (state.tShift[nextLine] < state.blkIndent) { break; } - - // fail if terminating block found - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - - // fail if list has another type - if (isOrdered) { - posAfterMarker = skipOrderedListMarker(state, nextLine); - if (posAfterMarker < 0) { break; } - } else { - posAfterMarker = skipBulletListMarker(state, nextLine); - if (posAfterMarker < 0) { break; } - } - - if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; } - } - - // Finilize list - state.tokens.push({ - type: isOrdered ? 'ordered_list_close' : 'bullet_list_close', - level: --state.level - }); - listLines[1] = nextLine; - - state.line = nextLine; - - // mark paragraphs tight if needed - if (tight) { - markTightParagraphs(state, listTokIdx); - } - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/paragraph.js b/node_modules/remarkable/lib/rules_block/paragraph.js deleted file mode 100644 index d25e5da72..000000000 --- a/node_modules/remarkable/lib/rules_block/paragraph.js +++ /dev/null @@ -1,59 +0,0 @@ -// Paragraph - -'use strict'; - - -module.exports = function paragraph(state, startLine/*, endLine*/) { - var endLine, content, terminate, i, l, - nextLine = startLine + 1, - terminatorRules; - - endLine = state.lineMax; - - // jump line-by-line until empty one or EOF - if (nextLine < endLine && !state.isEmpty(nextLine)) { - terminatorRules = state.parser.ruler.getRules('paragraph'); - - for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { - // this would be a code block normally, but after paragraph - // it's considered a lazy continuation regardless of what's there - if (state.tShift[nextLine] - state.blkIndent > 3) { continue; } - - // Some tags can terminate paragraph without empty line. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - } - } - - content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); - - state.line = nextLine; - if (content.length) { - state.tokens.push({ - type: 'paragraph_open', - tight: false, - lines: [ startLine, state.line ], - level: state.level - }); - state.tokens.push({ - type: 'inline', - content: content, - level: state.level + 1, - lines: [ startLine, state.line ], - children: [] - }); - state.tokens.push({ - type: 'paragraph_close', - tight: false, - level: state.level - }); - } - - return true; -}; diff --git a/node_modules/remarkable/lib/rules_block/state_block.js b/node_modules/remarkable/lib/rules_block/state_block.js deleted file mode 100644 index ad1006d44..000000000 --- a/node_modules/remarkable/lib/rules_block/state_block.js +++ /dev/null @@ -1,158 +0,0 @@ -// Parser state class - -'use strict'; - - -function StateBlock(src, parser, options, env, tokens) { - var ch, s, start, pos, len, indent, indent_found; - - this.src = src; - - // Shortcuts to simplify nested calls - this.parser = parser; - - this.options = options; - - this.env = env; - - // - // Internal state vartiables - // - - this.tokens = tokens; - - this.bMarks = []; // line begin offsets for fast jumps - this.eMarks = []; // line end offsets for fast jumps - this.tShift = []; // indent for each line - - // block parser variables - this.blkIndent = 0; // required block content indent - // (for example, if we are in list) - this.line = 0; // line index in src - this.lineMax = 0; // lines count - this.tight = false; // loose/tight mode for lists - this.parentType = 'root'; // if `list`, block parser stops on two newlines - this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any) - - this.level = 0; - - // renderer - this.result = ''; - - // Create caches - // Generate markers. - s = this.src; - indent = 0; - indent_found = false; - - for (start = pos = indent = 0, len = s.length; pos < len; pos++) { - ch = s.charCodeAt(pos); - - if (!indent_found) { - if (ch === 0x20/* space */) { - indent++; - continue; - } else { - indent_found = true; - } - } - - if (ch === 0x0A || pos === len - 1) { - if (ch !== 0x0A) { pos++; } - this.bMarks.push(start); - this.eMarks.push(pos); - this.tShift.push(indent); - - indent_found = false; - indent = 0; - start = pos + 1; - } - } - - // Push fake entry to simplify cache bounds checks - this.bMarks.push(s.length); - this.eMarks.push(s.length); - this.tShift.push(0); - - this.lineMax = this.bMarks.length - 1; // don't count last fake line -} - -StateBlock.prototype.isEmpty = function isEmpty(line) { - return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]; -}; - -StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) { - for (var max = this.lineMax; from < max; from++) { - if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) { - break; - } - } - return from; -}; - -// Skip spaces from given position. -StateBlock.prototype.skipSpaces = function skipSpaces(pos) { - for (var max = this.src.length; pos < max; pos++) { - if (this.src.charCodeAt(pos) !== 0x20/* space */) { break; } - } - return pos; -}; - -// Skip char codes from given position -StateBlock.prototype.skipChars = function skipChars(pos, code) { - for (var max = this.src.length; pos < max; pos++) { - if (this.src.charCodeAt(pos) !== code) { break; } - } - return pos; -}; - -// Skip char codes reverse from given position - 1 -StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) { - if (pos <= min) { return pos; } - - while (pos > min) { - if (code !== this.src.charCodeAt(--pos)) { return pos + 1; } - } - return pos; -}; - -// cut lines range from source. -StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) { - var i, first, last, queue, shift, - line = begin; - - if (begin >= end) { - return ''; - } - - // Opt: don't use push queue for single line; - if (line + 1 === end) { - first = this.bMarks[line] + Math.min(this.tShift[line], indent); - last = keepLastLF ? this.eMarks[line] + 1 : this.eMarks[line]; - return this.src.slice(first, last); - } - - queue = new Array(end - begin); - - for (i = 0; line < end; line++, i++) { - shift = this.tShift[line]; - if (shift > indent) { shift = indent; } - if (shift < 0) { shift = 0; } - - first = this.bMarks[line] + shift; - - if (line + 1 < end || keepLastLF) { - // No need for bounds check because we have fake entry on tail. - last = this.eMarks[line] + 1; - } else { - last = this.eMarks[line]; - } - - queue[i] = this.src.slice(first, last); - } - - return queue.join(''); -}; - - -module.exports = StateBlock; diff --git a/node_modules/remarkable/lib/rules_block/table.js b/node_modules/remarkable/lib/rules_block/table.js deleted file mode 100644 index 20689b9f8..000000000 --- a/node_modules/remarkable/lib/rules_block/table.js +++ /dev/null @@ -1,138 +0,0 @@ -// GFM table, non-standard - -'use strict'; - - -function getLine(state, line) { - var pos = state.bMarks[line] + state.blkIndent, - max = state.eMarks[line]; - - return state.src.substr(pos, max - pos); -} - -module.exports = function table(state, startLine, endLine, silent) { - var ch, lineText, pos, i, nextLine, rows, cell, - aligns, t, tableLines, tbodyLines; - - // should have at least three lines - if (startLine + 2 > endLine) { return false; } - - nextLine = startLine + 1; - - if (state.tShift[nextLine] < state.blkIndent) { return false; } - - // first character of the second line should be '|' or '-' - - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - if (pos >= state.eMarks[nextLine]) { return false; } - - ch = state.src.charCodeAt(pos); - if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */) { return false; } - - lineText = getLine(state, startLine + 1); - if (!/^[-:| ]+$/.test(lineText)) { return false; } - - rows = lineText.split('|'); - if (rows <= 2) { return false; } - aligns = []; - for (i = 0; i < rows.length; i++) { - t = rows[i].trim(); - if (!t) { - // allow empty columns before and after table, but not in between columns; - // e.g. allow ` |---| `, disallow ` ---||--- ` - if (i === 0 || i === rows.length - 1) { - continue; - } else { - return false; - } - } - - if (!/^:?-+:?$/.test(t)) { return false; } - if (t.charCodeAt(t.length - 1) === 0x3A/* : */) { - aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right'); - } else if (t.charCodeAt(0) === 0x3A/* : */) { - aligns.push('left'); - } else { - aligns.push(''); - } - } - - lineText = getLine(state, startLine).trim(); - if (lineText.indexOf('|') === -1) { return false; } - rows = lineText.replace(/^\||\|$/g, '').split('|'); - if (aligns.length !== rows.length) { return false; } - if (silent) { return true; } - - state.tokens.push({ - type: 'table_open', - lines: tableLines = [ startLine, 0 ], - level: state.level++ - }); - state.tokens.push({ - type: 'thead_open', - lines: [ startLine, startLine + 1 ], - level: state.level++ - }); - - state.tokens.push({ - type: 'tr_open', - lines: [ startLine, startLine + 1 ], - level: state.level++ - }); - for (i = 0; i < rows.length; i++) { - state.tokens.push({ - type: 'th_open', - align: aligns[i], - lines: [ startLine, startLine + 1 ], - level: state.level++ - }); - state.tokens.push({ - type: 'inline', - content: rows[i].trim(), - lines: [ startLine, startLine + 1 ], - level: state.level, - children: [] - }); - state.tokens.push({ type: 'th_close', level: --state.level }); - } - state.tokens.push({ type: 'tr_close', level: --state.level }); - state.tokens.push({ type: 'thead_close', level: --state.level }); - - state.tokens.push({ - type: 'tbody_open', - lines: tbodyLines = [ startLine + 2, 0 ], - level: state.level++ - }); - - for (nextLine = startLine + 2; nextLine < endLine; nextLine++) { - if (state.tShift[nextLine] < state.blkIndent) { break; } - - lineText = getLine(state, nextLine).trim(); - if (lineText.indexOf('|') === -1) { break; } - rows = lineText.replace(/^\||\|$/g, '').split('|'); - - state.tokens.push({ type: 'tr_open', level: state.level++ }); - for (i = 0; i < rows.length; i++) { - state.tokens.push({ type: 'td_open', align: aligns[i], level: state.level++ }); - // 0x7c === '|' - cell = rows[i].substring( - rows[i].charCodeAt(0) === 0x7c ? 1 : 0, - rows[i].charCodeAt(rows[i].length - 1) === 0x7c ? rows[i].length - 1 : rows[i].length - ).trim(); - state.tokens.push({ - type: 'inline', - content: cell, - level: state.level, - children: [] - }); - state.tokens.push({ type: 'td_close', level: --state.level }); - } - state.tokens.push({ type: 'tr_close', level: --state.level }); - } - state.tokens.push({ type: 'tbody_close', level: --state.level }); - state.tokens.push({ type: 'table_close', level: --state.level }); - - tableLines[1] = tbodyLines[1] = nextLine; - state.line = nextLine; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_core/abbr.js b/node_modules/remarkable/lib/rules_core/abbr.js deleted file mode 100644 index abc669dd1..000000000 --- a/node_modules/remarkable/lib/rules_core/abbr.js +++ /dev/null @@ -1,70 +0,0 @@ -// Parse abbreviation definitions, i.e. `*[abbr]: description` -// - -'use strict'; - - -var StateInline = require('../rules_inline/state_inline'); -var parseLinkLabel = require('../helpers/parse_link_label'); - - -function parseAbbr(str, parserInline, options, env) { - var state, labelEnd, pos, max, label, title; - - if (str.charCodeAt(0) !== 0x2A/* * */) { return -1; } - if (str.charCodeAt(1) !== 0x5B/* [ */) { return -1; } - - if (str.indexOf(']:') === -1) { return -1; } - - state = new StateInline(str, parserInline, options, env, []); - labelEnd = parseLinkLabel(state, 1); - - if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; } - - max = state.posMax; - - // abbr title is always one line, so looking for ending "\n" here - for (pos = labelEnd + 2; pos < max; pos++) { - if (state.src.charCodeAt(pos) === 0x0A) { break; } - } - - label = str.slice(2, labelEnd); - title = str.slice(labelEnd + 2, pos).trim(); - if (title.length === 0) { return -1; } - if (!env.abbreviations) { env.abbreviations = {}; } - // prepend ':' to avoid conflict with Object.prototype members - if (typeof env.abbreviations[':' + label] === 'undefined') { - env.abbreviations[':' + label] = title; - } - - return pos; -} - -module.exports = function abbr(state) { - var tokens = state.tokens, i, l, content, pos; - - if (state.inlineMode) { - return; - } - - // Parse inlines - for (i = 1, l = tokens.length - 1; i < l; i++) { - if (tokens[i - 1].type === 'paragraph_open' && - tokens[i].type === 'inline' && - tokens[i + 1].type === 'paragraph_close') { - - content = tokens[i].content; - while (content.length) { - pos = parseAbbr(content, state.inline, state.options, state.env); - if (pos < 0) { break; } - content = content.slice(pos).trim(); - } - - tokens[i].content = content; - if (!content.length) { - tokens[i - 1].tight = true; - tokens[i + 1].tight = true; - } - } - } -}; diff --git a/node_modules/remarkable/lib/rules_core/abbr2.js b/node_modules/remarkable/lib/rules_core/abbr2.js deleted file mode 100644 index cdc03ce96..000000000 --- a/node_modules/remarkable/lib/rules_core/abbr2.js +++ /dev/null @@ -1,88 +0,0 @@ -// Enclose abbreviations in tags -// -'use strict'; - - -var PUNCT_CHARS = ' \n()[]\'".,!?-'; - - -// from Google closure library -// http://closure-library.googlecode.com/git-history/docs/local_closure_goog_string_string.js.source.html#line1021 -function regEscape(s) { - return s.replace(/([-()\[\]{}+?*.$\^|,:#= 0; i--) { - token = tokens[i]; - if (token.type !== 'text') { continue; } - - pos = 0; - text = token.content; - reg.lastIndex = 0; - level = token.level; - nodes = []; - - while ((m = reg.exec(text))) { - if (reg.lastIndex > pos) { - nodes.push({ - type: 'text', - content: text.slice(pos, m.index + m[1].length), - level: level - }); - } - - nodes.push({ - type: 'abbr_open', - title: state.env.abbreviations[':' + m[2]], - level: level++ - }); - nodes.push({ - type: 'text', - content: m[2], - level: level - }); - nodes.push({ - type: 'abbr_close', - level: --level - }); - pos = reg.lastIndex - m[3].length; - } - - if (!nodes.length) { continue; } - - if (pos < text.length) { - nodes.push({ - type: 'text', - content: text.slice(pos), - level: level - }); - } - - // replace current node - blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1)); - } - } -}; diff --git a/node_modules/remarkable/lib/rules_core/block.js b/node_modules/remarkable/lib/rules_core/block.js deleted file mode 100644 index f3bbb6ddc..000000000 --- a/node_modules/remarkable/lib/rules_core/block.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -module.exports = function block(state) { - - if (state.inlineMode) { - state.tokens.push({ - type: 'inline', - content: state.src.replace(/\n/g, ' ').trim(), - level: 0, - lines: [ 0, 1 ], - children: [] - }); - - } else { - state.block.parse(state.src, state.options, state.env, state.tokens); - } -}; diff --git a/node_modules/remarkable/lib/rules_core/footnote_tail.js b/node_modules/remarkable/lib/rules_core/footnote_tail.js deleted file mode 100644 index faee3ec58..000000000 --- a/node_modules/remarkable/lib/rules_core/footnote_tail.js +++ /dev/null @@ -1,95 +0,0 @@ -'use strict'; - - -module.exports = function footnote_block(state) { - var i, l, j, t, lastParagraph, list, tokens, current, currentLabel, - level = 0, - insideRef = false, - refTokens = {}; - - if (!state.env.footnotes) { return; } - - state.tokens = state.tokens.filter(function(tok) { - if (tok.type === 'footnote_reference_open') { - insideRef = true; - current = []; - currentLabel = tok.label; - return false; - } - if (tok.type === 'footnote_reference_close') { - insideRef = false; - // prepend ':' to avoid conflict with Object.prototype members - refTokens[':' + currentLabel] = current; - return false; - } - if (insideRef) { current.push(tok); } - return !insideRef; - }); - - if (!state.env.footnotes.list) { return; } - list = state.env.footnotes.list; - - state.tokens.push({ - type: 'footnote_block_open', - level: level++ - }); - for (i = 0, l = list.length; i < l; i++) { - state.tokens.push({ - type: 'footnote_open', - id: i, - level: level++ - }); - - if (list[i].tokens) { - tokens = []; - tokens.push({ - type: 'paragraph_open', - tight: false, - level: level++ - }); - tokens.push({ - type: 'inline', - content: '', - level: level, - children: list[i].tokens - }); - tokens.push({ - type: 'paragraph_close', - tight: false, - level: --level - }); - } else if (list[i].label) { - tokens = refTokens[':' + list[i].label]; - } - - state.tokens = state.tokens.concat(tokens); - if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') { - lastParagraph = state.tokens.pop(); - } else { - lastParagraph = null; - } - - t = list[i].count > 0 ? list[i].count : 1; - for (j = 0; j < t; j++) { - state.tokens.push({ - type: 'footnote_anchor', - id: i, - subId: j, - level: level - }); - } - - if (lastParagraph) { - state.tokens.push(lastParagraph); - } - - state.tokens.push({ - type: 'footnote_close', - level: --level - }); - } - state.tokens.push({ - type: 'footnote_block_close', - level: --level - }); -}; diff --git a/node_modules/remarkable/lib/rules_core/inline.js b/node_modules/remarkable/lib/rules_core/inline.js deleted file mode 100644 index 8b2280b64..000000000 --- a/node_modules/remarkable/lib/rules_core/inline.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -module.exports = function inline(state) { - var tokens = state.tokens, tok, i, l; - - // Parse inlines - for (i = 0, l = tokens.length; i < l; i++) { - tok = tokens[i]; - if (tok.type === 'inline') { - state.inline.parse(tok.content, state.options, state.env, tok.children); - } - } -}; diff --git a/node_modules/remarkable/lib/rules_core/linkify.js b/node_modules/remarkable/lib/rules_core/linkify.js deleted file mode 100644 index e9bc88c5d..000000000 --- a/node_modules/remarkable/lib/rules_core/linkify.js +++ /dev/null @@ -1,161 +0,0 @@ -// Replace link-like texts with link nodes. -// -// Currently restricted by `inline.validateLink()` to http/https/ftp -// -'use strict'; - - -var Autolinker = require('autolinker'); - - -var LINK_SCAN_RE = /www|@|\:\/\//; - - -function isLinkOpen(str) { - return /^\s]/i.test(str); -} -function isLinkClose(str) { - return /^<\/a\s*>/i.test(str); -} - -// Stupid fabric to avoid singletons, for thread safety. -// Required for engines like Nashorn. -// -function createLinkifier() { - var links = []; - var autolinker = new Autolinker({ - stripPrefix: false, - url: true, - email: true, - twitter: false, - replaceFn: function (linker, match) { - // Only collect matched strings but don't change anything. - switch (match.getType()) { - /*eslint default-case:0*/ - case 'url': - links.push({ - text: match.matchedText, - url: match.getUrl() - }); - break; - case 'email': - links.push({ - text: match.matchedText, - // normalize email protocol - url: 'mailto:' + match.getEmail().replace(/^mailto:/i, '') - }); - break; - } - return false; - } - }); - - return { - links: links, - autolinker: autolinker - }; -} - - -module.exports = function linkify(state) { - var i, j, l, tokens, token, text, nodes, ln, pos, level, htmlLinkLevel, - blockTokens = state.tokens, - linkifier = null, links, autolinker; - - if (!state.options.linkify) { return; } - - for (j = 0, l = blockTokens.length; j < l; j++) { - if (blockTokens[j].type !== 'inline') { continue; } - tokens = blockTokens[j].children; - - htmlLinkLevel = 0; - - // We scan from the end, to keep position when new tags added. - // Use reversed logic in links start/end match - for (i = tokens.length - 1; i >= 0; i--) { - token = tokens[i]; - - // Skip content of markdown links - if (token.type === 'link_close') { - i--; - while (tokens[i].level !== token.level && tokens[i].type !== 'link_open') { - i--; - } - continue; - } - - // Skip content of html tag links - if (token.type === 'htmltag') { - if (isLinkOpen(token.content) && htmlLinkLevel > 0) { - htmlLinkLevel--; - } - if (isLinkClose(token.content)) { - htmlLinkLevel++; - } - } - if (htmlLinkLevel > 0) { continue; } - - if (token.type === 'text' && LINK_SCAN_RE.test(token.content)) { - - // Init linkifier in lazy manner, only if required. - if (!linkifier) { - linkifier = createLinkifier(); - links = linkifier.links; - autolinker = linkifier.autolinker; - } - - text = token.content; - links.length = 0; - autolinker.link(text); - - if (!links.length) { continue; } - - // Now split string to nodes - nodes = []; - level = token.level; - - for (ln = 0; ln < links.length; ln++) { - - if (!state.inline.validateLink(links[ln].url)) { continue; } - - pos = text.indexOf(links[ln].text); - - if (pos) { - level = level; - nodes.push({ - type: 'text', - content: text.slice(0, pos), - level: level - }); - } - nodes.push({ - type: 'link_open', - href: links[ln].url, - title: '', - level: level++ - }); - nodes.push({ - type: 'text', - content: links[ln].text, - level: level - }); - nodes.push({ - type: 'link_close', - level: --level - }); - text = text.slice(pos + links[ln].text.length); - } - if (text.length) { - nodes.push({ - type: 'text', - content: text, - level: level - }); - } - - // replace current node - blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1)); - } - } - } -}; diff --git a/node_modules/remarkable/lib/rules_core/references.js b/node_modules/remarkable/lib/rules_core/references.js deleted file mode 100644 index 2a6c7beb2..000000000 --- a/node_modules/remarkable/lib/rules_core/references.js +++ /dev/null @@ -1,98 +0,0 @@ -'use strict'; - - -var StateInline = require('../rules_inline/state_inline'); -var parseLinkLabel = require('../helpers/parse_link_label'); -var parseLinkDestination = require('../helpers/parse_link_destination'); -var parseLinkTitle = require('../helpers/parse_link_title'); -var normalizeReference = require('../helpers/normalize_reference'); - - -function parseReference(str, parser, options, env) { - var state, labelEnd, pos, max, code, start, href, title, label; - - if (str.charCodeAt(0) !== 0x5B/* [ */) { return -1; } - - if (str.indexOf(']:') === -1) { return -1; } - - state = new StateInline(str, parser, options, env, []); - labelEnd = parseLinkLabel(state, 0); - - if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; } - - max = state.posMax; - - // [label]: destination 'title' - // ^^^ skip optional whitespace here - for (pos = labelEnd + 2; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - // [label]: destination 'title' - // ^^^^^^^^^^^ parse this - if (!parseLinkDestination(state, pos)) { return -1; } - href = state.linkContent; - pos = state.pos; - - // [label]: destination 'title' - // ^^^ skipping those spaces - start = pos; - for (pos = pos + 1; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - // [label]: destination 'title' - // ^^^^^^^ parse this - if (pos < max && start !== pos && parseLinkTitle(state, pos)) { - title = state.linkContent; - pos = state.pos; - } else { - title = ''; - pos = start; - } - - // ensure that the end of the line is empty - while (pos < max && state.src.charCodeAt(pos) === 0x20/* space */) { pos++; } - if (pos < max && state.src.charCodeAt(pos) !== 0x0A) { return -1; } - - label = normalizeReference(str.slice(1, labelEnd)); - if (typeof env.references[label] === 'undefined') { - env.references[label] = { title: title, href: href }; - } - - return pos; -} - - -module.exports = function references(state) { - var tokens = state.tokens, i, l, content, pos; - - state.env.references = state.env.references || {}; - - if (state.inlineMode) { - return; - } - - // Scan definitions in paragraph inlines - for (i = 1, l = tokens.length - 1; i < l; i++) { - if (tokens[i].type === 'inline' && - tokens[i - 1].type === 'paragraph_open' && - tokens[i + 1].type === 'paragraph_close') { - - content = tokens[i].content; - while (content.length) { - pos = parseReference(content, state.inline, state.options, state.env); - if (pos < 0) { break; } - content = content.slice(pos).trim(); - } - - tokens[i].content = content; - if (!content.length) { - tokens[i - 1].tight = true; - tokens[i + 1].tight = true; - } - } - } -}; diff --git a/node_modules/remarkable/lib/rules_core/replacements.js b/node_modules/remarkable/lib/rules_core/replacements.js deleted file mode 100644 index f15439e60..000000000 --- a/node_modules/remarkable/lib/rules_core/replacements.js +++ /dev/null @@ -1,64 +0,0 @@ -// Simple typographical replacements -// -'use strict'; - -// TODO: -// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾ -// - miltiplication 2 x 4 -> 2 × 4 - -var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/; - -var SCOPED_ABBR_RE = /\((c|tm|r|p)\)/ig; -var SCOPED_ABBR = { - 'c': '©', - 'r': '®', - 'p': '§', - 'tm': '™' -}; - -function replaceScopedAbbr(str) { - if (str.indexOf('(') < 0) { return str; } - - return str.replace(SCOPED_ABBR_RE, function(match, name) { - return SCOPED_ABBR[name.toLowerCase()]; - }); -} - - -module.exports = function replace(state) { - var i, token, text, inlineTokens, blkIdx; - - if (!state.options.typographer) { return; } - - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - - if (state.tokens[blkIdx].type !== 'inline') { continue; } - - inlineTokens = state.tokens[blkIdx].children; - - for (i = inlineTokens.length - 1; i >= 0; i--) { - token = inlineTokens[i]; - if (token.type === 'text') { - text = token.content; - - text = replaceScopedAbbr(text); - - if (RARE_RE.test(text)) { - text = text - .replace(/\+-/g, '±') - // .., ..., ....... -> … - // but ?..... & !..... -> ?.. & !.. - .replace(/\.{2,}/g, '…').replace(/([?!])…/g, '$1..') - .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') - // em-dash - .replace(/(^|[^-])---([^-]|$)/mg, '$1\u2014$2') - // en-dash - .replace(/(^|\s)--(\s|$)/mg, '$1\u2013$2') - .replace(/(^|[^-\s])--([^-\s]|$)/mg, '$1\u2013$2'); - } - - token.content = text; - } - } - } -}; diff --git a/node_modules/remarkable/lib/rules_core/smartquotes.js b/node_modules/remarkable/lib/rules_core/smartquotes.js deleted file mode 100644 index 12a2e931a..000000000 --- a/node_modules/remarkable/lib/rules_core/smartquotes.js +++ /dev/null @@ -1,113 +0,0 @@ -// Convert straight quotation marks to typographic ones -// -'use strict'; - - -var QUOTE_TEST_RE = /['"]/; -var QUOTE_RE = /['"]/g; -var PUNCT_RE = /[-\s()\[\]]/; -var APOSTROPHE = '’'; - -// This function returns true if the character at `pos` -// could be inside a word. -function isLetter(str, pos) { - if (pos < 0 || pos >= str.length) { return false; } - return !PUNCT_RE.test(str[pos]); -} - - -function replaceAt(str, index, ch) { - return str.substr(0, index) + ch + str.substr(index + 1); -} - - -module.exports = function smartquotes(state) { - /*eslint max-depth:0*/ - var i, token, text, t, pos, max, thisLevel, lastSpace, nextSpace, item, - canOpen, canClose, j, isSingle, blkIdx, tokens, - stack; - - if (!state.options.typographer) { return; } - - stack = []; - - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - - if (state.tokens[blkIdx].type !== 'inline') { continue; } - - tokens = state.tokens[blkIdx].children; - stack.length = 0; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - - if (token.type !== 'text' || QUOTE_TEST_RE.test(token.text)) { continue; } - - thisLevel = tokens[i].level; - - for (j = stack.length - 1; j >= 0; j--) { - if (stack[j].level <= thisLevel) { break; } - } - stack.length = j + 1; - - text = token.content; - pos = 0; - max = text.length; - - /*eslint no-labels:0,block-scoped-var:0*/ - OUTER: - while (pos < max) { - QUOTE_RE.lastIndex = pos; - t = QUOTE_RE.exec(text); - if (!t) { break; } - - lastSpace = !isLetter(text, t.index - 1); - pos = t.index + 1; - isSingle = (t[0] === "'"); - nextSpace = !isLetter(text, pos); - - if (!nextSpace && !lastSpace) { - // middle of word - if (isSingle) { - token.content = replaceAt(token.content, t.index, APOSTROPHE); - } - continue; - } - - canOpen = !nextSpace; - canClose = !lastSpace; - - if (canClose) { - // this could be a closing quote, rewind the stack to get a match - for (j = stack.length - 1; j >= 0; j--) { - item = stack[j]; - if (stack[j].level < thisLevel) { break; } - if (item.single === isSingle && stack[j].level === thisLevel) { - item = stack[j]; - if (isSingle) { - tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[2]); - token.content = replaceAt(token.content, t.index, state.options.quotes[3]); - } else { - tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[0]); - token.content = replaceAt(token.content, t.index, state.options.quotes[1]); - } - stack.length = j; - continue OUTER; - } - } - } - - if (canOpen) { - stack.push({ - token: i, - pos: t.index, - single: isSingle, - level: thisLevel - }); - } else if (canClose && isSingle) { - token.content = replaceAt(token.content, t.index, APOSTROPHE); - } - } - } - } -}; diff --git a/node_modules/remarkable/lib/rules_inline/autolink.js b/node_modules/remarkable/lib/rules_inline/autolink.js deleted file mode 100644 index e63b9aab7..000000000 --- a/node_modules/remarkable/lib/rules_inline/autolink.js +++ /dev/null @@ -1,78 +0,0 @@ -// Process autolinks '' - -'use strict'; - -var url_schemas = require('../common/url_schemas'); -var normalizeLink = require('../helpers/normalize_link'); - - -/*eslint max-len:0*/ -var EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/; -var AUTOLINK_RE = /^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/; - - -module.exports = function autolink(state, silent) { - var tail, linkMatch, emailMatch, url, fullUrl, pos = state.pos; - - if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } - - tail = state.src.slice(pos); - - if (tail.indexOf('>') < 0) { return false; } - - linkMatch = tail.match(AUTOLINK_RE); - - if (linkMatch) { - if (url_schemas.indexOf(linkMatch[1].toLowerCase()) < 0) { return false; } - - url = linkMatch[0].slice(1, -1); - fullUrl = normalizeLink(url); - if (!state.parser.validateLink(url)) { return false; } - - if (!silent) { - state.push({ - type: 'link_open', - href: fullUrl, - level: state.level - }); - state.push({ - type: 'text', - content: url, - level: state.level + 1 - }); - state.push({ type: 'link_close', level: state.level }); - } - - state.pos += linkMatch[0].length; - return true; - } - - emailMatch = tail.match(EMAIL_RE); - - if (emailMatch) { - - url = emailMatch[0].slice(1, -1); - - fullUrl = normalizeLink('mailto:' + url); - if (!state.parser.validateLink(fullUrl)) { return false; } - - if (!silent) { - state.push({ - type: 'link_open', - href: fullUrl, - level: state.level - }); - state.push({ - type: 'text', - content: url, - level: state.level + 1 - }); - state.push({ type: 'link_close', level: state.level }); - } - - state.pos += emailMatch[0].length; - return true; - } - - return false; -}; diff --git a/node_modules/remarkable/lib/rules_inline/backticks.js b/node_modules/remarkable/lib/rules_inline/backticks.js deleted file mode 100644 index fff04f526..000000000 --- a/node_modules/remarkable/lib/rules_inline/backticks.js +++ /dev/null @@ -1,46 +0,0 @@ -// Parse backticks - -'use strict'; - -module.exports = function backticks(state, silent) { - var start, max, marker, matchStart, matchEnd, - pos = state.pos, - ch = state.src.charCodeAt(pos); - - if (ch !== 0x60/* ` */) { return false; } - - start = pos; - pos++; - max = state.posMax; - - while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; } - - marker = state.src.slice(start, pos); - - matchStart = matchEnd = pos; - - while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) { - matchEnd = matchStart + 1; - - while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; } - - if (matchEnd - matchStart === marker.length) { - if (!silent) { - state.push({ - type: 'code', - content: state.src.slice(pos, matchStart) - .replace(/[ \n]+/g, ' ') - .trim(), - block: false, - level: state.level - }); - } - state.pos = matchEnd; - return true; - } - } - - if (!silent) { state.pending += marker; } - state.pos += marker.length; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/del.js b/node_modules/remarkable/lib/rules_inline/del.js deleted file mode 100644 index 0af767c7f..000000000 --- a/node_modules/remarkable/lib/rules_inline/del.js +++ /dev/null @@ -1,84 +0,0 @@ -// Process ~~deleted text~~ - -'use strict'; - -module.exports = function del(state, silent) { - var found, - pos, - stack, - max = state.posMax, - start = state.pos, - lastChar, - nextChar; - - if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 4 >= max) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x7E/* ~ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - nextChar = state.src.charCodeAt(start + 2); - - if (lastChar === 0x7E/* ~ */) { return false; } - if (nextChar === 0x7E/* ~ */) { return false; } - if (nextChar === 0x20 || nextChar === 0x0A) { return false; } - - pos = start + 2; - while (pos < max && state.src.charCodeAt(pos) === 0x7E/* ~ */) { pos++; } - if (pos > start + 3) { - // sequence of 4+ markers taking as literal, same as in a emphasis - state.pos += pos - start; - if (!silent) { state.pending += state.src.slice(start, pos); } - return true; - } - - state.pos = start + 2; - stack = 1; - - while (state.pos + 1 < max) { - if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) { - if (state.src.charCodeAt(state.pos + 1) === 0x7E/* ~ */) { - lastChar = state.src.charCodeAt(state.pos - 1); - nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; - if (nextChar !== 0x7E/* ~ */ && lastChar !== 0x7E/* ~ */) { - if (lastChar !== 0x20 && lastChar !== 0x0A) { - // closing '~~' - stack--; - } else if (nextChar !== 0x20 && nextChar !== 0x0A) { - // opening '~~' - stack++; - } // else { - // // standalone ' ~~ ' indented with spaces - // } - if (stack <= 0) { - found = true; - break; - } - } - } - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 2; - - if (!silent) { - state.push({ type: 'del_open', level: state.level++ }); - state.parser.tokenize(state); - state.push({ type: 'del_close', level: --state.level }); - } - - state.pos = state.posMax + 2; - state.posMax = max; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/emphasis.js b/node_modules/remarkable/lib/rules_inline/emphasis.js deleted file mode 100644 index 1bfb6fb6d..000000000 --- a/node_modules/remarkable/lib/rules_inline/emphasis.js +++ /dev/null @@ -1,149 +0,0 @@ -// Process *this* and _that_ - -'use strict'; - - -function isAlphaNum(code) { - return (code >= 0x30 /* 0 */ && code <= 0x39 /* 9 */) || - (code >= 0x41 /* A */ && code <= 0x5A /* Z */) || - (code >= 0x61 /* a */ && code <= 0x7A /* z */); -} - -// parse sequence of emphasis markers, -// "start" should point at a valid marker -function scanDelims(state, start) { - var pos = start, lastChar, nextChar, count, - can_open = true, - can_close = true, - max = state.posMax, - marker = state.src.charCodeAt(start); - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - - while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; } - if (pos >= max) { can_open = false; } - count = pos - start; - - if (count >= 4) { - // sequence of four or more unescaped markers can't start/end an emphasis - can_open = can_close = false; - } else { - nextChar = pos < max ? state.src.charCodeAt(pos) : -1; - - // check whitespace conditions - if (nextChar === 0x20 || nextChar === 0x0A) { can_open = false; } - if (lastChar === 0x20 || lastChar === 0x0A) { can_close = false; } - - if (marker === 0x5F /* _ */) { - // check if we aren't inside the word - if (isAlphaNum(lastChar)) { can_open = false; } - if (isAlphaNum(nextChar)) { can_close = false; } - } - } - - return { - can_open: can_open, - can_close: can_close, - delims: count - }; -} - -module.exports = function emphasis(state, silent) { - var startCount, - count, - found, - oldCount, - newCount, - stack, - res, - max = state.posMax, - start = state.pos, - marker = state.src.charCodeAt(start); - - if (marker !== 0x5F/* _ */ && marker !== 0x2A /* * */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - - res = scanDelims(state, start); - startCount = res.delims; - if (!res.can_open) { - state.pos += startCount; - if (!silent) { state.pending += state.src.slice(start, state.pos); } - return true; - } - - if (state.level >= state.options.maxNesting) { return false; } - - state.pos = start + startCount; - stack = [ startCount ]; - - while (state.pos < max) { - if (state.src.charCodeAt(state.pos) === marker) { - res = scanDelims(state, state.pos); - count = res.delims; - if (res.can_close) { - oldCount = stack.pop(); - newCount = count; - - while (oldCount !== newCount) { - if (newCount < oldCount) { - stack.push(oldCount - newCount); - break; - } - - // assert(newCount > oldCount) - newCount -= oldCount; - - if (stack.length === 0) { break; } - state.pos += oldCount; - oldCount = stack.pop(); - } - - if (stack.length === 0) { - startCount = oldCount; - found = true; - break; - } - state.pos += count; - continue; - } - - if (res.can_open) { stack.push(count); } - state.pos += count; - continue; - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + startCount; - - if (!silent) { - if (startCount === 2 || startCount === 3) { - state.push({ type: 'strong_open', level: state.level++ }); - } - if (startCount === 1 || startCount === 3) { - state.push({ type: 'em_open', level: state.level++ }); - } - - state.parser.tokenize(state); - - if (startCount === 1 || startCount === 3) { - state.push({ type: 'em_close', level: --state.level }); - } - if (startCount === 2 || startCount === 3) { - state.push({ type: 'strong_close', level: --state.level }); - } - } - - state.pos = state.posMax + startCount; - state.posMax = max; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/entity.js b/node_modules/remarkable/lib/rules_inline/entity.js deleted file mode 100644 index 52e7cbaf3..000000000 --- a/node_modules/remarkable/lib/rules_inline/entity.js +++ /dev/null @@ -1,48 +0,0 @@ -// Process html entity - {, ¯, ", ... - -'use strict'; - -var entities = require('../common/entities'); -var has = require('../common/utils').has; -var isValidEntityCode = require('../common/utils').isValidEntityCode; -var fromCodePoint = require('../common/utils').fromCodePoint; - - -var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i; -var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i; - - -module.exports = function entity(state, silent) { - var ch, code, match, pos = state.pos, max = state.posMax; - - if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; } - - if (pos + 1 < max) { - ch = state.src.charCodeAt(pos + 1); - - if (ch === 0x23 /* # */) { - match = state.src.slice(pos).match(DIGITAL_RE); - if (match) { - if (!silent) { - code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10); - state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD); - } - state.pos += match[0].length; - return true; - } - } else { - match = state.src.slice(pos).match(NAMED_RE); - if (match) { - if (has(entities, match[1])) { - if (!silent) { state.pending += entities[match[1]]; } - state.pos += match[0].length; - return true; - } - } - } - } - - if (!silent) { state.pending += '&'; } - state.pos++; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/escape.js b/node_modules/remarkable/lib/rules_inline/escape.js deleted file mode 100644 index 09dee0b8e..000000000 --- a/node_modules/remarkable/lib/rules_inline/escape.js +++ /dev/null @@ -1,49 +0,0 @@ -// Proceess escaped chars and hardbreaks - -'use strict'; - -var ESCAPED = []; - -for (var i = 0; i < 256; i++) { ESCAPED.push(0); } - -'\\!"#$%&\'()*+,./:;<=>?@[]^_`{|}~-' - .split('').forEach(function(ch) { ESCAPED[ch.charCodeAt(0)] = 1; }); - - -module.exports = function escape(state, silent) { - var ch, pos = state.pos, max = state.posMax; - - if (state.src.charCodeAt(pos) !== 0x5C/* \ */) { return false; } - - pos++; - - if (pos < max) { - ch = state.src.charCodeAt(pos); - - if (ch < 256 && ESCAPED[ch] !== 0) { - if (!silent) { state.pending += state.src[pos]; } - state.pos += 2; - return true; - } - - if (ch === 0x0A) { - if (!silent) { - state.push({ - type: 'hardbreak', - level: state.level - }); - } - - pos++; - // skip leading whitespaces from next line - while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } - - state.pos = pos; - return true; - } - } - - if (!silent) { state.pending += '\\'; } - state.pos++; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/footnote_inline.js b/node_modules/remarkable/lib/rules_inline/footnote_inline.js deleted file mode 100644 index ee0fb231a..000000000 --- a/node_modules/remarkable/lib/rules_inline/footnote_inline.js +++ /dev/null @@ -1,53 +0,0 @@ -// Process inline footnotes (^[...]) - -'use strict'; - -var parseLinkLabel = require('../helpers/parse_link_label'); - - -module.exports = function footnote_inline(state, silent) { - var labelStart, - labelEnd, - footnoteId, - oldLength, - max = state.posMax, - start = state.pos; - - if (start + 2 >= max) { return false; } - if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - labelStart = start + 2; - labelEnd = parseLinkLabel(state, start + 1); - - // parser failed to find ']', so it's not a valid note - if (labelEnd < 0) { return false; } - - // We found the end of the link, and know for a fact it's a valid link; - // so all that's left to do is to call tokenizer. - // - if (!silent) { - if (!state.env.footnotes) { state.env.footnotes = {}; } - if (!state.env.footnotes.list) { state.env.footnotes.list = []; } - footnoteId = state.env.footnotes.list.length; - - state.pos = labelStart; - state.posMax = labelEnd; - - state.push({ - type: 'footnote_ref', - id: footnoteId, - level: state.level - }); - state.linkLevel++; - oldLength = state.tokens.length; - state.parser.tokenize(state); - state.env.footnotes.list[footnoteId] = { tokens: state.tokens.splice(oldLength) }; - state.linkLevel--; - } - - state.pos = labelEnd + 1; - state.posMax = max; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/footnote_ref.js b/node_modules/remarkable/lib/rules_inline/footnote_ref.js deleted file mode 100644 index f0ab553e8..000000000 --- a/node_modules/remarkable/lib/rules_inline/footnote_ref.js +++ /dev/null @@ -1,62 +0,0 @@ -// Process footnote references ([^...]) - -'use strict'; - - -module.exports = function footnote_ref(state, silent) { - var label, - pos, - footnoteId, - footnoteSubId, - max = state.posMax, - start = state.pos; - - // should be at least 4 chars - "[^x]" - if (start + 3 > max) { return false; } - - if (!state.env.footnotes || !state.env.footnotes.refs) { return false; } - if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - for (pos = start + 2; pos < max; pos++) { - if (state.src.charCodeAt(pos) === 0x20) { return false; } - if (state.src.charCodeAt(pos) === 0x0A) { return false; } - if (state.src.charCodeAt(pos) === 0x5D /* ] */) { - break; - } - } - - if (pos === start + 2) { return false; } // no empty footnote labels - if (pos >= max) { return false; } - pos++; - - label = state.src.slice(start + 2, pos - 1); - if (typeof state.env.footnotes.refs[':' + label] === 'undefined') { return false; } - - if (!silent) { - if (!state.env.footnotes.list) { state.env.footnotes.list = []; } - - if (state.env.footnotes.refs[':' + label] < 0) { - footnoteId = state.env.footnotes.list.length; - state.env.footnotes.list[footnoteId] = { label: label, count: 0 }; - state.env.footnotes.refs[':' + label] = footnoteId; - } else { - footnoteId = state.env.footnotes.refs[':' + label]; - } - - footnoteSubId = state.env.footnotes.list[footnoteId].count; - state.env.footnotes.list[footnoteId].count++; - - state.push({ - type: 'footnote_ref', - id: footnoteId, - subId: footnoteSubId, - level: state.level - }); - } - - state.pos = pos; - state.posMax = max; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/htmltag.js b/node_modules/remarkable/lib/rules_inline/htmltag.js deleted file mode 100644 index db3dd76b4..000000000 --- a/node_modules/remarkable/lib/rules_inline/htmltag.js +++ /dev/null @@ -1,49 +0,0 @@ -// Process html tags - -'use strict'; - - -var HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE; - - -function isLetter(ch) { - /*eslint no-bitwise:0*/ - var lc = ch | 0x20; // to lower case - return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); -} - - -module.exports = function htmltag(state, silent) { - var ch, match, max, pos = state.pos; - - if (!state.options.html) { return false; } - - // Check start - max = state.posMax; - if (state.src.charCodeAt(pos) !== 0x3C/* < */ || - pos + 2 >= max) { - return false; - } - - // Quick fail on second char - ch = state.src.charCodeAt(pos + 1); - if (ch !== 0x21/* ! */ && - ch !== 0x3F/* ? */ && - ch !== 0x2F/* / */ && - !isLetter(ch)) { - return false; - } - - match = state.src.slice(pos).match(HTML_TAG_RE); - if (!match) { return false; } - - if (!silent) { - state.push({ - type: 'htmltag', - content: state.src.slice(pos, pos + match[0].length), - level: state.level - }); - } - state.pos += match[0].length; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/ins.js b/node_modules/remarkable/lib/rules_inline/ins.js deleted file mode 100644 index 2a55981a6..000000000 --- a/node_modules/remarkable/lib/rules_inline/ins.js +++ /dev/null @@ -1,84 +0,0 @@ -// Process ++inserted text++ - -'use strict'; - -module.exports = function ins(state, silent) { - var found, - pos, - stack, - max = state.posMax, - start = state.pos, - lastChar, - nextChar; - - if (state.src.charCodeAt(start) !== 0x2B/* + */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 4 >= max) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x2B/* + */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - nextChar = state.src.charCodeAt(start + 2); - - if (lastChar === 0x2B/* + */) { return false; } - if (nextChar === 0x2B/* + */) { return false; } - if (nextChar === 0x20 || nextChar === 0x0A) { return false; } - - pos = start + 2; - while (pos < max && state.src.charCodeAt(pos) === 0x2B/* + */) { pos++; } - if (pos !== start + 2) { - // sequence of 3+ markers taking as literal, same as in a emphasis - state.pos += pos - start; - if (!silent) { state.pending += state.src.slice(start, pos); } - return true; - } - - state.pos = start + 2; - stack = 1; - - while (state.pos + 1 < max) { - if (state.src.charCodeAt(state.pos) === 0x2B/* + */) { - if (state.src.charCodeAt(state.pos + 1) === 0x2B/* + */) { - lastChar = state.src.charCodeAt(state.pos - 1); - nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; - if (nextChar !== 0x2B/* + */ && lastChar !== 0x2B/* + */) { - if (lastChar !== 0x20 && lastChar !== 0x0A) { - // closing '++' - stack--; - } else if (nextChar !== 0x20 && nextChar !== 0x0A) { - // opening '++' - stack++; - } // else { - // // standalone ' ++ ' indented with spaces - // } - if (stack <= 0) { - found = true; - break; - } - } - } - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 2; - - if (!silent) { - state.push({ type: 'ins_open', level: state.level++ }); - state.parser.tokenize(state); - state.push({ type: 'ins_close', level: --state.level }); - } - - state.pos = state.posMax + 2; - state.posMax = max; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/links.js b/node_modules/remarkable/lib/rules_inline/links.js deleted file mode 100644 index b356f4041..000000000 --- a/node_modules/remarkable/lib/rules_inline/links.js +++ /dev/null @@ -1,170 +0,0 @@ -// Process [links]( "stuff") - -'use strict'; - -var parseLinkLabel = require('../helpers/parse_link_label'); -var parseLinkDestination = require('../helpers/parse_link_destination'); -var parseLinkTitle = require('../helpers/parse_link_title'); -var normalizeReference = require('../helpers/normalize_reference'); - - -module.exports = function links(state, silent) { - var labelStart, - labelEnd, - label, - href, - title, - pos, - ref, - code, - isImage = false, - oldPos = state.pos, - max = state.posMax, - start = state.pos, - marker = state.src.charCodeAt(start); - - if (marker === 0x21/* ! */) { - isImage = true; - marker = state.src.charCodeAt(++start); - } - - if (marker !== 0x5B/* [ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - labelStart = start + 1; - labelEnd = parseLinkLabel(state, start); - - // parser failed to find ']', so it's not a valid link - if (labelEnd < 0) { return false; } - - pos = labelEnd + 1; - if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) { - // - // Inline link - // - - // [link]( "title" ) - // ^^ skipping these spaces - pos++; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - if (pos >= max) { return false; } - - // [link]( "title" ) - // ^^^^^^ parsing link destination - start = pos; - if (parseLinkDestination(state, pos)) { - href = state.linkContent; - pos = state.pos; - } else { - href = ''; - } - - // [link]( "title" ) - // ^^ skipping these spaces - start = pos; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - // [link]( "title" ) - // ^^^^^^^ parsing link title - if (pos < max && start !== pos && parseLinkTitle(state, pos)) { - title = state.linkContent; - pos = state.pos; - - // [link]( "title" ) - // ^^ skipping these spaces - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - } else { - title = ''; - } - - if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) { - state.pos = oldPos; - return false; - } - pos++; - } else { - // - // Link reference - // - - // do not allow nested reference links - if (state.linkLevel > 0) { return false; } - - // [foo] [bar] - // ^^ optional whitespace (can include newlines) - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) { - start = pos + 1; - pos = parseLinkLabel(state, pos); - if (pos >= 0) { - label = state.src.slice(start, pos++); - } else { - pos = start - 1; - } - } - - // covers label === '' and label === undefined - // (collapsed reference link and shortcut reference link respectively) - if (!label) { - if (typeof label === 'undefined') { - pos = labelEnd + 1; - } - label = state.src.slice(labelStart, labelEnd); - } - - ref = state.env.references[normalizeReference(label)]; - if (!ref) { - state.pos = oldPos; - return false; - } - href = ref.href; - title = ref.title; - } - - // - // We found the end of the link, and know for a fact it's a valid link; - // so all that's left to do is to call tokenizer. - // - if (!silent) { - state.pos = labelStart; - state.posMax = labelEnd; - - if (isImage) { - state.push({ - type: 'image', - src: href, - title: title, - alt: state.src.substr(labelStart, labelEnd - labelStart), - level: state.level - }); - } else { - state.push({ - type: 'link_open', - href: href, - title: title, - level: state.level++ - }); - state.linkLevel++; - state.parser.tokenize(state); - state.linkLevel--; - state.push({ type: 'link_close', level: --state.level }); - } - } - - state.pos = pos; - state.posMax = max; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/mark.js b/node_modules/remarkable/lib/rules_inline/mark.js deleted file mode 100644 index d154ba454..000000000 --- a/node_modules/remarkable/lib/rules_inline/mark.js +++ /dev/null @@ -1,84 +0,0 @@ -// Process ==highlighted text== - -'use strict'; - -module.exports = function del(state, silent) { - var found, - pos, - stack, - max = state.posMax, - start = state.pos, - lastChar, - nextChar; - - if (state.src.charCodeAt(start) !== 0x3D/* = */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 4 >= max) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x3D/* = */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - nextChar = state.src.charCodeAt(start + 2); - - if (lastChar === 0x3D/* = */) { return false; } - if (nextChar === 0x3D/* = */) { return false; } - if (nextChar === 0x20 || nextChar === 0x0A) { return false; } - - pos = start + 2; - while (pos < max && state.src.charCodeAt(pos) === 0x3D/* = */) { pos++; } - if (pos !== start + 2) { - // sequence of 3+ markers taking as literal, same as in a emphasis - state.pos += pos - start; - if (!silent) { state.pending += state.src.slice(start, pos); } - return true; - } - - state.pos = start + 2; - stack = 1; - - while (state.pos + 1 < max) { - if (state.src.charCodeAt(state.pos) === 0x3D/* = */) { - if (state.src.charCodeAt(state.pos + 1) === 0x3D/* = */) { - lastChar = state.src.charCodeAt(state.pos - 1); - nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; - if (nextChar !== 0x3D/* = */ && lastChar !== 0x3D/* = */) { - if (lastChar !== 0x20 && lastChar !== 0x0A) { - // closing '==' - stack--; - } else if (nextChar !== 0x20 && nextChar !== 0x0A) { - // opening '==' - stack++; - } // else { - // // standalone ' == ' indented with spaces - // } - if (stack <= 0) { - found = true; - break; - } - } - } - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 2; - - if (!silent) { - state.push({ type: 'mark_open', level: state.level++ }); - state.parser.tokenize(state); - state.push({ type: 'mark_close', level: --state.level }); - } - - state.pos = state.posMax + 2; - state.posMax = max; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/newline.js b/node_modules/remarkable/lib/rules_inline/newline.js deleted file mode 100644 index 3fe8eb81e..000000000 --- a/node_modules/remarkable/lib/rules_inline/newline.js +++ /dev/null @@ -1,54 +0,0 @@ -// Proceess '\n' - -'use strict'; - -module.exports = function newline(state, silent) { - var pmax, max, pos = state.pos; - - if (state.src.charCodeAt(pos) !== 0x0A/* \n */) { return false; } - - pmax = state.pending.length - 1; - max = state.posMax; - - // ' \n' -> hardbreak - // Lookup in pending chars is bad practice! Don't copy to other rules! - // Pending string is stored in concat mode, indexed lookups will cause - // convertion to flat mode. - if (!silent) { - if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) { - if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) { - // Strip out all trailing spaces on this line. - for (var i = pmax - 2; i >= 0; i--) { - if (state.pending.charCodeAt(i) !== 0x20) { - state.pending = state.pending.substring(0, i + 1); - break; - } - } - state.push({ - type: 'hardbreak', - level: state.level - }); - } else { - state.pending = state.pending.slice(0, -1); - state.push({ - type: 'softbreak', - level: state.level - }); - } - - } else { - state.push({ - type: 'softbreak', - level: state.level - }); - } - } - - pos++; - - // skip heading spaces for next line - while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } - - state.pos = pos; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/state_inline.js b/node_modules/remarkable/lib/rules_inline/state_inline.js deleted file mode 100644 index fc3c0cfce..000000000 --- a/node_modules/remarkable/lib/rules_inline/state_inline.js +++ /dev/null @@ -1,76 +0,0 @@ -// Inline parser state - -'use strict'; - -function StateInline(src, parserInline, options, env, outTokens) { - this.src = src; - this.env = env; - this.options = options; - this.parser = parserInline; - this.tokens = outTokens; - this.pos = 0; - this.posMax = this.src.length; - this.level = 0; - this.pending = ''; - this.pendingLevel = 0; - - this.cache = []; // Stores { start: end } pairs. Useful for backtrack - // optimization of pairs parse (emphasis, strikes). - - // Link parser state vars - - this.isInLabel = false; // Set true when seek link label - we should disable - // "paired" rules (emphasis, strikes) to not skip - // tailing `]` - - this.linkLevel = 0; // Increment for each nesting link. Used to prevent - // nesting in definitions - - this.linkContent = ''; // Temporary storage for link url - - this.labelUnmatchedScopes = 0; // Track unpaired `[` for link labels - // (backtrack optimization) -} - -// Flush pending text -// -StateInline.prototype.pushPending = function () { - this.tokens.push({ - type: 'text', - content: this.pending, - level: this.pendingLevel - }); - this.pending = ''; -}; - -// Push new token to "stream". -// If pending text exists - flush it as text token -// -StateInline.prototype.push = function (token) { - if (this.pending) { - this.pushPending(); - } - - this.tokens.push(token); - this.pendingLevel = this.level; -}; - -// Store value to cache. -// !!! Implementation has parser-specific optimizations -// !!! keys MUST be integer, >= 0; values MUST be integer, > 0 -// -StateInline.prototype.cacheSet = function (key, val) { - for (var i = this.cache.length; i <= key; i++) { - this.cache.push(0); - } - - this.cache[key] = val; -}; - -// Get cache value -// -StateInline.prototype.cacheGet = function (key) { - return key < this.cache.length ? this.cache[key] : 0; -}; - -module.exports = StateInline; diff --git a/node_modules/remarkable/lib/rules_inline/sub.js b/node_modules/remarkable/lib/rules_inline/sub.js deleted file mode 100644 index a126e9aef..000000000 --- a/node_modules/remarkable/lib/rules_inline/sub.js +++ /dev/null @@ -1,58 +0,0 @@ -// Process ~subscript~ - -'use strict'; - -// same as UNESCAPE_MD_RE plus a space -var UNESCAPE_RE = /\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; - -module.exports = function sub(state, silent) { - var found, - content, - max = state.posMax, - start = state.pos; - - if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 2 >= max) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - state.pos = start + 1; - - while (state.pos < max) { - if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) { - found = true; - break; - } - - state.parser.skipToken(state); - } - - if (!found || start + 1 === state.pos) { - state.pos = start; - return false; - } - - content = state.src.slice(start + 1, state.pos); - - // don't allow unescaped spaces/newlines inside - if (content.match(/(^|[^\\])(\\\\)*\s/)) { - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 1; - - if (!silent) { - state.push({ - type: 'sub', - level: state.level, - content: content.replace(UNESCAPE_RE, '$1') - }); - } - - state.pos = state.posMax + 1; - state.posMax = max; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/sup.js b/node_modules/remarkable/lib/rules_inline/sup.js deleted file mode 100644 index 07bf35746..000000000 --- a/node_modules/remarkable/lib/rules_inline/sup.js +++ /dev/null @@ -1,58 +0,0 @@ -// Process ^superscript^ - -'use strict'; - -// same as UNESCAPE_MD_RE plus a space -var UNESCAPE_RE = /\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; - -module.exports = function sup(state, silent) { - var found, - content, - max = state.posMax, - start = state.pos; - - if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 2 >= max) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - state.pos = start + 1; - - while (state.pos < max) { - if (state.src.charCodeAt(state.pos) === 0x5E/* ^ */) { - found = true; - break; - } - - state.parser.skipToken(state); - } - - if (!found || start + 1 === state.pos) { - state.pos = start; - return false; - } - - content = state.src.slice(start + 1, state.pos); - - // don't allow unescaped spaces/newlines inside - if (content.match(/(^|[^\\])(\\\\)*\s/)) { - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 1; - - if (!silent) { - state.push({ - type: 'sup', - level: state.level, - content: content.replace(UNESCAPE_RE, '$1') - }); - } - - state.pos = state.posMax + 1; - state.posMax = max; - return true; -}; diff --git a/node_modules/remarkable/lib/rules_inline/text.js b/node_modules/remarkable/lib/rules_inline/text.js deleted file mode 100644 index 1bae53eed..000000000 --- a/node_modules/remarkable/lib/rules_inline/text.js +++ /dev/null @@ -1,52 +0,0 @@ -// Skip text characters for text token, place those to pending buffer -// and increment current pos - -'use strict'; - -// Rule to skip pure text -// '{}$%@~+=:' reserved for extentions - -function isTerminatorChar(ch) { - switch (ch) { - case 0x0A/* \n */: - case 0x5C/* \ */: - case 0x60/* ` */: - case 0x2A/* * */: - case 0x5F/* _ */: - case 0x5E/* ^ */: - case 0x5B/* [ */: - case 0x5D/* ] */: - case 0x21/* ! */: - case 0x26/* & */: - case 0x3C/* < */: - case 0x3E/* > */: - case 0x7B/* { */: - case 0x7D/* } */: - case 0x24/* $ */: - case 0x25/* % */: - case 0x40/* @ */: - case 0x7E/* ~ */: - case 0x2B/* + */: - case 0x3D/* = */: - case 0x3A/* : */: - return true; - default: - return false; - } -} - -module.exports = function text(state, silent) { - var pos = state.pos; - - while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) { - pos++; - } - - if (pos === state.pos) { return false; } - - if (!silent) { state.pending += state.src.slice(state.pos, pos); } - - state.pos = pos; - - return true; -}; diff --git a/node_modules/remarkable/package.json b/node_modules/remarkable/package.json deleted file mode 100644 index 1c094f90c..000000000 --- a/node_modules/remarkable/package.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "_from": "remarkable@^1.7.1", - "_id": "remarkable@1.7.4", - "_inBundle": false, - "_integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==", - "_location": "/remarkable", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "remarkable@^1.7.1", - "name": "remarkable", - "escapedName": "remarkable", - "rawSpec": "^1.7.1", - "saveSpec": null, - "fetchSpec": "^1.7.1" - }, - "_requiredBy": [ - "/helper-markdown", - "/helper-md" - ], - "_resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz", - "_shasum": "19073cb960398c87a7d6546eaa5e50d2022fcd00", - "_spec": "remarkable@^1.7.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\helper-markdown", - "bin": { - "remarkable": "bin/remarkable.js" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/remarkable/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "url": "https://github.com/dohliam" - }, - { - "url": "https://github.com/loveencounterflow" - }, - { - "url": "https://github.com/vyp" - }, - { - "name": "Adam Misiorny", - "email": "adam.misiorny@gmail.com", - "url": "http://bitnoi.se" - }, - { - "name": "Akuma", - "email": "ihuangwj@gmail.com", - "url": "https://github.com/akuma" - }, - { - "name": "Alex Kocharin", - "email": "alex@kocharin.ru", - "url": "https://github.com/rlidwka" - }, - { - "name": "Amila Welihinda", - "email": "amilajack@gmail.com", - "url": "http://amilawelihinda.com" - }, - { - "name": "Brenard Cubacub", - "url": "bren.me" - }, - { - "name": "Denis Sokolov", - "email": "denis@sokolov.cc", - "url": "http://sokolov.cc" - }, - { - "name": "Eugene Sharygin", - "url": "https://github.com/eush77" - }, - { - "name": "Harry Llewelyn", - "email": "advocation@gmail.com", - "url": "http://mynameisharry.com" - }, - { - "name": "Joey Baker", - "email": "joey@byjoeybaker.com", - "url": "https://byjoeybaker.com" - }, - { - "name": "Jon Schlinkert", - "email": "jon.schlinkert@sellside.com", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Julian Lam", - "email": "julian@nodebb.org", - "url": "https://www.nodebb.org" - }, - { - "name": "Lucas Parry", - "url": "https://github.com/lparry" - }, - { - "name": "Luke Horvat", - "email": "lukehorvat@gmail.com", - "url": "http://lukehorvat.com" - }, - { - "name": "Mariusz Nowak", - "email": "medyk@medikoo.com", - "url": "http://www.medikoo.com" - }, - { - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be" - }, - { - "name": "Mathieu Lemoine", - "url": "https://github.com/lemoinem" - }, - { - "name": "Matthew Mueller", - "email": "mattmuelle@gmail.com", - "url": "https://standupjack.com" - }, - { - "name": "Nik Nyby", - "url": "http://nikolas.us.to" - }, - { - "name": "Per Kristian Næss-Fladset", - "url": "https://github.com/pkfladset" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - }, - { - "name": "Rome Li", - "url": "https://github.com/akaroml" - }, - { - "name": "Takezoe,Tomoaki", - "email": "sumito3478@gmail.com", - "url": "@sumito3478" - }, - { - "name": "Tom Byrer", - "url": "https://github.com/tomByrer" - }, - { - "name": "Tom MacWright", - "email": "tom@macwright.org", - "url": "http://macwright.org" - }, - { - "name": "Una Ma", - "email": "maruilian11@cdnjs.com.tw", - "url": "https://github.com/maruilian11" - }, - { - "name": "Vitaly Puzrin", - "email": "vitaly@rcdesign.ru", - "url": "http://gravatar.com/puzrin" - } - ], - "dependencies": { - "argparse": "^1.0.10", - "autolinker": "~0.28.0" - }, - "deprecated": false, - "description": "Markdown parser, done right. 100% Commonmark support, extensions, syntax plugins, high speed - all in one.", - "devDependencies": { - "ansi": "^0.3.0", - "benchmark": "^1.0.0", - "browserify": "^16.3.0", - "commonmark": "0.12.0", - "gulp-format-md": "^0.1.10", - "highlight.js": "^9.7.0", - "marked": "0.3.2", - "mocha": "^6.1.4", - "nyc": "^14.1.1" - }, - "engines": { - "node": ">= 0.10.0" - }, - "files": [ - "bin", - "dist", - "index.js", - "lib" - ], - "homepage": "https://github.com/jonschlinkert/remarkable", - "keywords": [ - "commonmark", - "markdown", - "md", - "parse", - "parser", - "process", - "remarkable", - "render", - "renderer", - "text" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "name": "doowb", - "email": "brian.woodward@sellside.com" - }, - { - "name": "jonschlinkert", - "email": "github@sellside.com" - } - ], - "name": "remarkable", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/remarkable.git" - }, - "scripts": { - "build": "make browserify", - "coverage": "yarn add coveralls@2 && nyc report --reporter=text-lcov | coveralls", - "prepublishOnly": "make browserify", - "test": "make test", - "test-ci": "nyc mocha -R spec --bail" - }, - "verb": { - "toc": false, - "layout": "nil", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.7.4" -} diff --git a/node_modules/repeat-element/LICENSE b/node_modules/repeat-element/LICENSE deleted file mode 100644 index 7cccaf9e3..000000000 --- a/node_modules/repeat-element/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-present, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/repeat-element/README.md b/node_modules/repeat-element/README.md deleted file mode 100644 index 6006418b3..000000000 --- a/node_modules/repeat-element/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# repeat-element [![NPM version](https://img.shields.io/npm/v/repeat-element.svg?style=flat)](https://www.npmjs.com/package/repeat-element) [![NPM monthly downloads](https://img.shields.io/npm/dm/repeat-element.svg?style=flat)](https://npmjs.org/package/repeat-element) [![NPM total downloads](https://img.shields.io/npm/dt/repeat-element.svg?style=flat)](https://npmjs.org/package/repeat-element) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/repeat-element.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/repeat-element) - -> Create an array by repeating the given value n times. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save repeat-element -``` - -## Usage - -```js -const repeat = require('repeat-element'); - -repeat('a', 5); -//=> ['a', 'a', 'a', 'a', 'a'] - -repeat('a', 1); -//=> ['a'] - -repeat('a', 0); -//=> [] - -repeat(null, 5) -//» [ null, null, null, null, null ] - -repeat({some: 'object'}, 5) -//» [ { some: 'object' }, -// { some: 'object' }, -// { some: 'object' }, -// { some: 'object' }, -// { some: 'object' } ] - -repeat(5, 5) -//» [ 5, 5, 5, 5, 5 ] -``` - -## About - -
          -Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
          - -
          -Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
          - -
          -Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
          - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 17 | [jonschlinkert](https://github.com/jonschlinkert) | -| 3 | [LinusU](https://github.com/LinusU) | -| 1 | [architectcodes](https://github.com/architectcodes) | - -### Author - -**Jon Schlinkert** - -* [GitHub Profile](https://github.com/jonschlinkert) -* [Twitter Profile](https://twitter.com/jonschlinkert) -* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) - -### License - -Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on August 19, 2018._ \ No newline at end of file diff --git a/node_modules/repeat-element/index.js b/node_modules/repeat-element/index.js deleted file mode 100644 index 06a8d01d9..000000000 --- a/node_modules/repeat-element/index.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * repeat-element - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Licensed under the MIT license. - */ - -'use strict'; - -module.exports = function repeat(ele, num) { - var arr = new Array(num); - - for (var i = 0; i < num; i++) { - arr[i] = ele; - } - - return arr; -}; diff --git a/node_modules/repeat-element/package.json b/node_modules/repeat-element/package.json deleted file mode 100644 index 82383706d..000000000 --- a/node_modules/repeat-element/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_args": [ - [ - "repeat-element@1.1.3", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "repeat-element@1.1.3", - "_id": "repeat-element@1.1.3", - "_inBundle": false, - "_integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "_location": "/repeat-element", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "repeat-element@1.1.3", - "name": "repeat-element", - "escapedName": "repeat-element", - "rawSpec": "1.1.3", - "saveSpec": null, - "fetchSpec": "1.1.3" - }, - "_requiredBy": [ - "/braces" - ], - "_resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "_spec": "1.1.3", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/repeat-element/issues" - }, - "description": "Create an array by repeating the given value n times.", - "devDependencies": { - "benchmarked": "^2.0.0", - "chalk": "^2.4.1", - "glob": "^7.1.2", - "gulp-format-md": "^1.0.0", - "minimist": "^1.2.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/repeat-element", - "keywords": [ - "array", - "element", - "repeat", - "string" - ], - "license": "MIT", - "main": "index.js", - "name": "repeat-element", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/repeat-element.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.1.3" -} diff --git a/node_modules/repeat-string/LICENSE b/node_modules/repeat-string/LICENSE deleted file mode 100644 index 39245ac1c..000000000 --- a/node_modules/repeat-string/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/repeat-string/README.md b/node_modules/repeat-string/README.md deleted file mode 100644 index aaa5e91c7..000000000 --- a/node_modules/repeat-string/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# repeat-string [![NPM version](https://img.shields.io/npm/v/repeat-string.svg?style=flat)](https://www.npmjs.com/package/repeat-string) [![NPM monthly downloads](https://img.shields.io/npm/dm/repeat-string.svg?style=flat)](https://npmjs.org/package/repeat-string) [![NPM total downloads](https://img.shields.io/npm/dt/repeat-string.svg?style=flat)](https://npmjs.org/package/repeat-string) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/repeat-string.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/repeat-string) - -> Repeat the given string n times. Fastest implementation for repeating a string. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save repeat-string -``` - -## Usage - -### [repeat](index.js#L41) - -Repeat the given `string` the specified `number` of times. - -**Example:** - -**Example** - -```js -var repeat = require('repeat-string'); -repeat('A', 5); -//=> AAAAA -``` - -**Params** - -* `string` **{String}**: The string to repeat -* `number` **{Number}**: The number of times to repeat the string -* `returns` **{String}**: Repeated string - -## Benchmarks - -Repeat string is significantly faster than the native method (which is itself faster than [repeating](https://github.com/sindresorhus/repeating)): - -```sh -# 2x -repeat-string █████████████████████████ (26,953,977 ops/sec) -repeating █████████ (9,855,695 ops/sec) -native ██████████████████ (19,453,895 ops/sec) - -# 3x -repeat-string █████████████████████████ (19,445,252 ops/sec) -repeating ███████████ (8,661,565 ops/sec) -native ████████████████████ (16,020,598 ops/sec) - -# 10x -repeat-string █████████████████████████ (23,792,521 ops/sec) -repeating █████████ (8,571,332 ops/sec) -native ███████████████ (14,582,955 ops/sec) - -# 50x -repeat-string █████████████████████████ (23,640,179 ops/sec) -repeating █████ (5,505,509 ops/sec) -native ██████████ (10,085,557 ops/sec) - -# 250x -repeat-string █████████████████████████ (23,489,618 ops/sec) -repeating ████ (3,962,937 ops/sec) -native ████████ (7,724,892 ops/sec) - -# 2000x -repeat-string █████████████████████████ (20,315,172 ops/sec) -repeating ████ (3,297,079 ops/sec) -native ███████ (6,203,331 ops/sec) - -# 20000x -repeat-string █████████████████████████ (23,382,915 ops/sec) -repeating ███ (2,980,058 ops/sec) -native █████ (5,578,808 ops/sec) -``` - -**Run the benchmarks** - -Install dev dependencies: - -```sh -npm i -d && node benchmark -``` - -## About - -### Related projects - -[repeat-element](https://www.npmjs.com/package/repeat-element): Create an array by repeating the given value n times. | [homepage](https://github.com/jonschlinkert/repeat-element "Create an array by repeating the given value n times.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor**
          | -| --- | --- | -| 51 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [LinusU](https://github.com/LinusU) | -| 2 | [tbusser](https://github.com/tbusser) | -| 1 | [doowb](https://github.com/doowb) | -| 1 | [wooorm](https://github.com/wooorm) | - -### Building docs - -_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ - -To generate the readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install -g verb verb-generate-readme && verb -``` - -### Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -### License - -Copyright © 2016, [Jon Schlinkert](http://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/repeat-string/blob/master/LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.2.0, on October 23, 2016._ \ No newline at end of file diff --git a/node_modules/repeat-string/index.js b/node_modules/repeat-string/index.js deleted file mode 100644 index 4459afd80..000000000 --- a/node_modules/repeat-string/index.js +++ /dev/null @@ -1,70 +0,0 @@ -/*! - * repeat-string - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -/** - * Results cache - */ - -var res = ''; -var cache; - -/** - * Expose `repeat` - */ - -module.exports = repeat; - -/** - * Repeat the given `string` the specified `number` - * of times. - * - * **Example:** - * - * ```js - * var repeat = require('repeat-string'); - * repeat('A', 5); - * //=> AAAAA - * ``` - * - * @param {String} `string` The string to repeat - * @param {Number} `number` The number of times to repeat the string - * @return {String} Repeated string - * @api public - */ - -function repeat(str, num) { - if (typeof str !== 'string') { - throw new TypeError('expected a string'); - } - - // cover common, quick use cases - if (num === 1) return str; - if (num === 2) return str + str; - - var max = str.length * num; - if (cache !== str || typeof cache === 'undefined') { - cache = str; - res = ''; - } else if (res.length >= max) { - return res.substr(0, max); - } - - while (max > res.length && num > 1) { - if (num & 1) { - res += str; - } - - num >>= 1; - str += str; - } - - res += str; - res = res.substr(0, max); - return res; -} diff --git a/node_modules/repeat-string/package.json b/node_modules/repeat-string/package.json deleted file mode 100644 index 57fb797ed..000000000 --- a/node_modules/repeat-string/package.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "_args": [ - [ - "repeat-string@1.6.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "repeat-string@1.6.1", - "_id": "repeat-string@1.6.1", - "_inBundle": false, - "_integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "_location": "/repeat-string", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "repeat-string@1.6.1", - "name": "repeat-string", - "escapedName": "repeat-string", - "rawSpec": "1.6.1", - "saveSpec": null, - "fetchSpec": "1.6.1" - }, - "_requiredBy": [ - "/fill-range", - "/to-regex-range" - ], - "_resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "_spec": "1.6.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "http://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/repeat-string/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "email": "brian.woodward@gmail.com", - "url": "https://github.com/doowb" - }, - { - "name": "Jon Schlinkert", - "email": "jon.schlinkert@sellside.com", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Linus Unnebäck", - "email": "linus@folkdatorn.se", - "url": "http://linus.unnebäck.se" - }, - { - "name": "Thijs Busser", - "email": "tbusser@gmail.com", - "url": "http://tbusser.net" - }, - { - "name": "Titus", - "email": "tituswormer@gmail.com", - "url": "wooorm.com" - } - ], - "description": "Repeat the given string n times. Fastest implementation for repeating a string.", - "devDependencies": { - "ansi-cyan": "^0.1.1", - "benchmarked": "^0.2.5", - "gulp-format-md": "^0.1.11", - "isobject": "^2.1.0", - "mocha": "^3.1.2", - "repeating": "^3.0.0", - "text-table": "^0.2.0", - "yargs-parser": "^4.0.2" - }, - "engines": { - "node": ">=0.10" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/repeat-string", - "keywords": [ - "fast", - "fastest", - "fill", - "left", - "left-pad", - "multiple", - "pad", - "padding", - "repeat", - "repeating", - "repetition", - "right", - "right-pad", - "string", - "times" - ], - "license": "MIT", - "main": "index.js", - "name": "repeat-string", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/repeat-string.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "repeat-element" - ] - }, - "helpers": [ - "./benchmark/helper.js" - ], - "reflinks": [ - "verb" - ] - }, - "version": "1.6.1" -} diff --git a/node_modules/resolve-url/.jshintrc b/node_modules/resolve-url/.jshintrc deleted file mode 100644 index 8703acd7f..000000000 --- a/node_modules/resolve-url/.jshintrc +++ /dev/null @@ -1,44 +0,0 @@ -{ - "bitwise": true, - "camelcase": true, - "curly": false, - "eqeqeq": true, - "es3": true, - "forin": true, - "immed": false, - "indent": false, - "latedef": "nofunc", - "newcap": false, - "noarg": true, - "noempty": true, - "nonew": false, - "plusplus": false, - "quotmark": false, - "undef": true, - "unused": "vars", - "strict": false, - "trailing": true, - "maxparams": 5, - "maxdepth": false, - "maxstatements": false, - "maxcomplexity": false, - "maxlen": 100, - - "asi": true, - "expr": true, - "globalstrict": true, - "smarttabs": true, - "sub": true, - - "node": true, - "browser": true, - "globals": { - "describe": false, - "it": false, - "before": false, - "beforeEach": false, - "after": false, - "afterEach": false, - "define": false - } -} diff --git a/node_modules/resolve-url/LICENSE b/node_modules/resolve-url/LICENSE deleted file mode 100644 index 0595be367..000000000 --- a/node_modules/resolve-url/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Simon Lydell - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/resolve-url/bower.json b/node_modules/resolve-url/bower.json deleted file mode 100644 index 31aa6f4ea..000000000 --- a/node_modules/resolve-url/bower.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "resolve-url", - "version": "0.2.1", - "description": "Like Node.js’ `path.resolve`/`url.resolve` for the browser.", - "authors": ["Simon Lydell"], - "license": "MIT", - "main": "resolve-url.js", - "keywords": [ - "resolve", - "url" - ], - "ignore": [ - ".*" - ] -} diff --git a/node_modules/resolve-url/changelog.md b/node_modules/resolve-url/changelog.md deleted file mode 100644 index 2a4a6304c..000000000 --- a/node_modules/resolve-url/changelog.md +++ /dev/null @@ -1,15 +0,0 @@ -### Version 0.2.1 (2014-02-25) ### - -- Fix edge case when (accidentally) supplying only one argument, and that - argument happens to be a falsy value such as `undefined` or `null`. - - -### Version 0.2.0 (2014-02-24) ### - -- Disallow passing 0 arguments. It’s weird and inconsistent between browsers. - (Backwards incompatible change.) - - -### Version 0.1.0 (2014-02-23) ### - -- Initial release. diff --git a/node_modules/resolve-url/component.json b/node_modules/resolve-url/component.json deleted file mode 100644 index f37cf0055..000000000 --- a/node_modules/resolve-url/component.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "resolve-url", - "version": "0.2.1", - "license": "MIT", - "description": "Like Node.js’ `path.resolve`/`url.resolve` for the browser.", - "main": "resolve-url.js", - "repo": "lydell/resolve-url", - "keywords": [ - "resolve", - "url" - ], - "scripts": [ - "resolve-url.js" - ] -} diff --git a/node_modules/resolve-url/package.json b/node_modules/resolve-url/package.json deleted file mode 100644 index 29f916c9a..000000000 --- a/node_modules/resolve-url/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "_args": [ - [ - "resolve-url@0.2.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "resolve-url@0.2.1", - "_id": "resolve-url@0.2.1", - "_inBundle": false, - "_integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "_location": "/resolve-url", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "resolve-url@0.2.1", - "name": "resolve-url", - "escapedName": "resolve-url", - "rawSpec": "0.2.1", - "saveSpec": null, - "fetchSpec": "0.2.1" - }, - "_requiredBy": [ - "/source-map-resolve" - ], - "_resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "_spec": "0.2.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Simon Lydell" - }, - "bugs": { - "url": "https://github.com/lydell/resolve-url/issues" - }, - "description": "Like Node.js’ `path.resolve`/`url.resolve` for the browser.", - "devDependencies": { - "jshint": "~2.4.3", - "tape": "~2.5.0", - "testling": "~1.6.0" - }, - "homepage": "https://github.com/lydell/resolve-url#readme", - "keywords": [ - "resolve", - "url" - ], - "license": "MIT", - "main": "resolve-url.js", - "name": "resolve-url", - "repository": { - "type": "git", - "url": "git+https://github.com/lydell/resolve-url.git" - }, - "scripts": { - "test": "jshint resolve-url.js test/ && testling -u" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/8..latest", - "chrome/latest", - "firefox/latest", - "opera/12", - "opera/latest", - "safari/5", - "iphone/6", - "android-browser/4" - ] - }, - "version": "0.2.1" -} diff --git a/node_modules/resolve-url/readme.md b/node_modules/resolve-url/readme.md deleted file mode 100644 index 1f864e8de..000000000 --- a/node_modules/resolve-url/readme.md +++ /dev/null @@ -1,83 +0,0 @@ -Overview -======== - -[![browser support](https://ci.testling.com/lydell/resolve-url.png)](https://ci.testling.com/lydell/resolve-url) - -Like Node.js’ [`path.resolve`]/[`url.resolve`] for the browser. - -```js -var resolveUrl = require("resolve-url") - -window.location -// https://example.com/articles/resolving-urls/edit - -resolveUrl("remove") -// https://example.com/articles/resolving-urls/remove - -resolveUrl("/static/scripts/app.js") -// https://example.com/static/scripts/app.js - -// Imagine /static/scripts/app.js contains `//# sourceMappingURL=../source-maps/app.js.map` -resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map") -// https://example.com/static/source-maps/app.js.map - -resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map", "../coffee/app.coffee") -// https://example.com/static/coffee/app.coffee - -resolveUrl("//cdn.example.com/jquery.js") -// https://cdn.example.com/jquery.js - -resolveUrl("http://foo.org/") -// http://foo.org/ -``` - - -Installation -============ - -- `npm install resolve-url` -- `bower install resolve-url` -- `component install lydell/resolve-url` - -Works with CommonJS, AMD and browser globals, through UMD. - - -Usage -===== - -### `resolveUrl(...urls)` ### - -Pass one or more urls. Resolves the last one to an absolute url, using the -previous ones and `window.location`. - -It’s like starting out on `window.location`, and then clicking links with the -urls as `href` attributes in order, from left to right. - -Unlike Node.js’ [`path.resolve`], this function always goes through all of the -arguments, from left to right. `path.resolve` goes from right to left and only -in the worst case goes through them all. Should that matter. - -Actually, the function is _really_ like clicking a lot of links in series: An -actual `` gets its `href` attribute set for each url! This means that the -url resolution of the browser is used, which makes this module really -light-weight. - -Also note that this functions deals with urls, not paths, so in that respect it -has more in common with Node.js’ [`url.resolve`]. But the arguments are more -like [`path.resolve`]. - -[`path.resolve`]: http://nodejs.org/api/path.html#path_path_resolve_from_to -[`url.resolve`]: http://nodejs.org/api/url.html#url_url_resolve_from_to - - -Tests -===== - -Run `npm test`, which lints the code and then gives you a link to open in a -browser of choice (using `testling`). - - -License -======= - -[The X11 (“MIT”) License](LICENSE). diff --git a/node_modules/resolve-url/resolve-url.js b/node_modules/resolve-url/resolve-url.js deleted file mode 100644 index dc5c5b7b8..000000000 --- a/node_modules/resolve-url/resolve-url.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -void (function(root, factory) { - if (typeof define === "function" && define.amd) { - define(factory) - } else if (typeof exports === "object") { - module.exports = factory() - } else { - root.resolveUrl = factory() - } -}(this, function() { - - function resolveUrl(/* ...urls */) { - var numUrls = arguments.length - - if (numUrls === 0) { - throw new Error("resolveUrl requires at least one argument; got none.") - } - - var base = document.createElement("base") - base.href = arguments[0] - - if (numUrls === 1) { - return base.href - } - - var head = document.getElementsByTagName("head")[0] - head.insertBefore(base, head.firstChild) - - var a = document.createElement("a") - var resolved - - for (var index = 1; index < numUrls; index++) { - a.href = arguments[index] - resolved = a.href - base.href = resolved - } - - head.removeChild(base) - - return resolved - } - - return resolveUrl - -})); diff --git a/node_modules/resolve-url/test/resolve-url.js b/node_modules/resolve-url/test/resolve-url.js deleted file mode 100644 index 7f135a7cd..000000000 --- a/node_modules/resolve-url/test/resolve-url.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var test = require("tape") - -var resolveUrl = require("../") - -"use strict" - -test("resolveUrl", function(t) { - - t.plan(7) - - t.equal(typeof resolveUrl, "function", "is a function") - - t.equal( - resolveUrl("https://example.com/"), - "https://example.com/" - ) - - var loc = "https://example.com/articles/resolving-urls/edit" - - t.equal( - resolveUrl(loc, "remove"), - "https://example.com/articles/resolving-urls/remove" - ) - - t.equal( - resolveUrl(loc, "/static/scripts/app.js"), - "https://example.com/static/scripts/app.js" - ) - - t.equal( - resolveUrl(loc, "/static/scripts/app.js", "../source-maps/app.js.map"), - "https://example.com/static/source-maps/app.js.map" - ) - - t.equal( - resolveUrl(loc, "/static/scripts/app.js", "../source-maps/app.js.map", "../coffee/app.coffee"), - "https://example.com/static/coffee/app.coffee" - ) - - t.equal( - resolveUrl(loc, "//cdn.example.com/jquery.js"), - "https://cdn.example.com/jquery.js" - ) - -}) - -test("edge cases", function(t) { - - t.plan(4) - - t["throws"](resolveUrl, /at least one argument/, "throws with no arguments") - - var accidentallyUndefined - var result - t.doesNotThrow( - function() { result = resolveUrl(accidentallyUndefined) }, - "undefined is still an argument" - ) - t.ok(result.match(/\/undefined$/), "undefined is stringified") - - t.equal( - resolveUrl("http://foo.org/test", undefined, {}, ["a/b"], null), - "http://foo.org/a/null", - "arguments are stringified" - ) - -}) diff --git a/node_modules/ret/LICENSE b/node_modules/ret/LICENSE deleted file mode 100644 index b351ee8e9..000000000 --- a/node_modules/ret/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2011 by Roly Fentanes - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ret/README.md b/node_modules/ret/README.md deleted file mode 100644 index 28563e16d..000000000 --- a/node_modules/ret/README.md +++ /dev/null @@ -1,183 +0,0 @@ -# Regular Expression Tokenizer - -Tokenizes strings that represent a regular expressions. - -[![Build Status](https://secure.travis-ci.org/fent/ret.js.svg)](http://travis-ci.org/fent/ret.js) -[![Dependency Status](https://david-dm.org/fent/ret.js.svg)](https://david-dm.org/fent/ret.js) -[![codecov](https://codecov.io/gh/fent/ret.js/branch/master/graph/badge.svg)](https://codecov.io/gh/fent/ret.js) - -# Usage - -```js -var ret = require('ret'); - -var tokens = ret(/foo|bar/.source); -``` - -`tokens` will contain the following object - -```js -{ - "type": ret.types.ROOT - "options": [ - [ { "type": ret.types.CHAR, "value", 102 }, - { "type": ret.types.CHAR, "value", 111 }, - { "type": ret.types.CHAR, "value", 111 } ], - [ { "type": ret.types.CHAR, "value", 98 }, - { "type": ret.types.CHAR, "value", 97 }, - { "type": ret.types.CHAR, "value", 114 } ] - ] -} -``` - -# Token Types - -`ret.types` is a collection of the various token types exported by ret. - -### ROOT - -Only used in the root of the regexp. This is needed due to the posibility of the root containing a pipe `|` character. In that case, the token will have an `options` key that will be an array of arrays of tokens. If not, it will contain a `stack` key that is an array of tokens. - -```js -{ - "type": ret.types.ROOT, - "stack": [token1, token2...], -} -``` - -```js -{ - "type": ret.types.ROOT, - "options" [ - [token1, token2...], - [othertoken1, othertoken2...] - ... - ], -} -``` - -### GROUP - -Groups contain tokens that are inside of a parenthesis. If the group begins with `?` followed by another character, it's a special type of group. A ':' tells the group not to be remembered when `exec` is used. '=' means the previous token matches only if followed by this group, and '!' means the previous token matches only if NOT followed. - -Like root, it can contain an `options` key instead of `stack` if there is a pipe. - -```js -{ - "type": ret.types.GROUP, - "remember" true, - "followedBy": false, - "notFollowedBy": false, - "stack": [token1, token2...], -} -``` - -```js -{ - "type": ret.types.GROUP, - "remember" true, - "followedBy": false, - "notFollowedBy": false, - "options" [ - [token1, token2...], - [othertoken1, othertoken2...] - ... - ], -} -``` - -### POSITION - -`\b`, `\B`, `^`, and `$` specify positions in the regexp. - -```js -{ - "type": ret.types.POSITION, - "value": "^", -} -``` - -### SET - -Contains a key `set` specifying what tokens are allowed and a key `not` specifying if the set should be negated. A set can contain other sets, ranges, and characters. - -```js -{ - "type": ret.types.SET, - "set": [token1, token2...], - "not": false, -} -``` - -### RANGE - -Used in set tokens to specify a character range. `from` and `to` are character codes. - -```js -{ - "type": ret.types.RANGE, - "from": 97, - "to": 122, -} -``` - -### REPETITION - -```js -{ - "type": ret.types.REPETITION, - "min": 0, - "max": Infinity, - "value": token, -} -``` - -### REFERENCE - -References a group token. `value` is 1-9. - -```js -{ - "type": ret.types.REFERENCE, - "value": 1, -} -``` - -### CHAR - -Represents a single character token. `value` is the character code. This might seem a bit cluttering instead of concatenating characters together. But since repetition tokens only repeat the last token and not the last clause like the pipe, it's simpler to do it this way. - -```js -{ - "type": ret.types.CHAR, - "value": 123, -} -``` - -## Errors - -ret.js will throw errors if given a string with an invalid regular expression. All possible errors are - -* Invalid group. When a group with an immediate `?` character is followed by an invalid character. It can only be followed by `!`, `=`, or `:`. Example: `/(?_abc)/` -* Nothing to repeat. Thrown when a repetitional token is used as the first token in the current clause, as in right in the beginning of the regexp or group, or right after a pipe. Example: `/foo|?bar/`, `/{1,3}foo|bar/`, `/foo(+bar)/` -* Unmatched ). A group was not opened, but was closed. Example: `/hello)2u/` -* Unterminated group. A group was not closed. Example: `/(1(23)4/` -* Unterminated character class. A custom character set was not closed. Example: `/[abc/` - - -# Install - - npm install ret - - -# Tests - -Tests are written with [vows](http://vowsjs.org/) - -```bash -npm test -``` - -# License - -MIT diff --git a/node_modules/ret/lib/index.js b/node_modules/ret/lib/index.js deleted file mode 100644 index 0e151c39b..000000000 --- a/node_modules/ret/lib/index.js +++ /dev/null @@ -1,282 +0,0 @@ -var util = require('./util'); -var types = require('./types'); -var sets = require('./sets'); -var positions = require('./positions'); - - -module.exports = function(regexpStr) { - var i = 0, l, c, - start = { type: types.ROOT, stack: []}, - - // Keep track of last clause/group and stack. - lastGroup = start, - last = start.stack, - groupStack = []; - - - var repeatErr = function(i) { - util.error(regexpStr, 'Nothing to repeat at column ' + (i - 1)); - }; - - // Decode a few escaped characters. - var str = util.strToChars(regexpStr); - l = str.length; - - // Iterate through each character in string. - while (i < l) { - c = str[i++]; - - switch (c) { - // Handle escaped characters, inclues a few sets. - case '\\': - c = str[i++]; - - switch (c) { - case 'b': - last.push(positions.wordBoundary()); - break; - - case 'B': - last.push(positions.nonWordBoundary()); - break; - - case 'w': - last.push(sets.words()); - break; - - case 'W': - last.push(sets.notWords()); - break; - - case 'd': - last.push(sets.ints()); - break; - - case 'D': - last.push(sets.notInts()); - break; - - case 's': - last.push(sets.whitespace()); - break; - - case 'S': - last.push(sets.notWhitespace()); - break; - - default: - // Check if c is integer. - // In which case it's a reference. - if (/\d/.test(c)) { - last.push({ type: types.REFERENCE, value: parseInt(c, 10) }); - - // Escaped character. - } else { - last.push({ type: types.CHAR, value: c.charCodeAt(0) }); - } - } - - break; - - - // Positionals. - case '^': - last.push(positions.begin()); - break; - - case '$': - last.push(positions.end()); - break; - - - // Handle custom sets. - case '[': - // Check if this class is 'anti' i.e. [^abc]. - var not; - if (str[i] === '^') { - not = true; - i++; - } else { - not = false; - } - - // Get all the characters in class. - var classTokens = util.tokenizeClass(str.slice(i), regexpStr); - - // Increase index by length of class. - i += classTokens[1]; - last.push({ - type: types.SET, - set: classTokens[0], - not: not, - }); - - break; - - - // Class of any character except \n. - case '.': - last.push(sets.anyChar()); - break; - - - // Push group onto stack. - case '(': - // Create group. - var group = { - type: types.GROUP, - stack: [], - remember: true, - }; - - c = str[i]; - - // If if this is a special kind of group. - if (c === '?') { - c = str[i + 1]; - i += 2; - - // Match if followed by. - if (c === '=') { - group.followedBy = true; - - // Match if not followed by. - } else if (c === '!') { - group.notFollowedBy = true; - - } else if (c !== ':') { - util.error(regexpStr, - 'Invalid group, character \'' + c + - '\' after \'?\' at column ' + (i - 1)); - } - - group.remember = false; - } - - // Insert subgroup into current group stack. - last.push(group); - - // Remember the current group for when the group closes. - groupStack.push(lastGroup); - - // Make this new group the current group. - lastGroup = group; - last = group.stack; - break; - - - // Pop group out of stack. - case ')': - if (groupStack.length === 0) { - util.error(regexpStr, 'Unmatched ) at column ' + (i - 1)); - } - lastGroup = groupStack.pop(); - - // Check if this group has a PIPE. - // To get back the correct last stack. - last = lastGroup.options ? - lastGroup.options[lastGroup.options.length - 1] : lastGroup.stack; - break; - - - // Use pipe character to give more choices. - case '|': - // Create array where options are if this is the first PIPE - // in this clause. - if (!lastGroup.options) { - lastGroup.options = [lastGroup.stack]; - delete lastGroup.stack; - } - - // Create a new stack and add to options for rest of clause. - var stack = []; - lastGroup.options.push(stack); - last = stack; - break; - - - // Repetition. - // For every repetition, remove last element from last stack - // then insert back a RANGE object. - // This design is chosen because there could be more than - // one repetition symbols in a regex i.e. `a?+{2,3}`. - case '{': - var rs = /^(\d+)(,(\d+)?)?\}/.exec(str.slice(i)), min, max; - if (rs !== null) { - if (last.length === 0) { - repeatErr(i); - } - min = parseInt(rs[1], 10); - max = rs[2] ? rs[3] ? parseInt(rs[3], 10) : Infinity : min; - i += rs[0].length; - - last.push({ - type: types.REPETITION, - min: min, - max: max, - value: last.pop(), - }); - } else { - last.push({ - type: types.CHAR, - value: 123, - }); - } - break; - - case '?': - if (last.length === 0) { - repeatErr(i); - } - last.push({ - type: types.REPETITION, - min: 0, - max: 1, - value: last.pop(), - }); - break; - - case '+': - if (last.length === 0) { - repeatErr(i); - } - last.push({ - type: types.REPETITION, - min: 1, - max: Infinity, - value: last.pop(), - }); - break; - - case '*': - if (last.length === 0) { - repeatErr(i); - } - last.push({ - type: types.REPETITION, - min: 0, - max: Infinity, - value: last.pop(), - }); - break; - - - // Default is a character that is not `\[](){}?+*^$`. - default: - last.push({ - type: types.CHAR, - value: c.charCodeAt(0), - }); - } - - } - - // Check if any groups have not been closed. - if (groupStack.length !== 0) { - util.error(regexpStr, 'Unterminated group'); - } - - return start; -}; - -module.exports.types = types; diff --git a/node_modules/ret/lib/positions.js b/node_modules/ret/lib/positions.js deleted file mode 100644 index 80677ee5d..000000000 --- a/node_modules/ret/lib/positions.js +++ /dev/null @@ -1,17 +0,0 @@ -var types = require('./types'); - -exports.wordBoundary = function() { - return { type: types.POSITION, value: 'b' }; -}; - -exports.nonWordBoundary = function() { - return { type: types.POSITION, value: 'B' }; -}; - -exports.begin = function() { - return { type: types.POSITION, value: '^' }; -}; - -exports.end = function() { - return { type: types.POSITION, value: '$' }; -}; diff --git a/node_modules/ret/lib/sets.js b/node_modules/ret/lib/sets.js deleted file mode 100644 index 5fb6be5d1..000000000 --- a/node_modules/ret/lib/sets.js +++ /dev/null @@ -1,82 +0,0 @@ -var types = require('./types'); - -var INTS = function() { - return [{ type: types.RANGE , from: 48, to: 57 }]; -}; - -var WORDS = function() { - return [ - { type: types.CHAR, value: 95 }, - { type: types.RANGE, from: 97, to: 122 }, - { type: types.RANGE, from: 65, to: 90 } - ].concat(INTS()); -}; - -var WHITESPACE = function() { - return [ - { type: types.CHAR, value: 9 }, - { type: types.CHAR, value: 10 }, - { type: types.CHAR, value: 11 }, - { type: types.CHAR, value: 12 }, - { type: types.CHAR, value: 13 }, - { type: types.CHAR, value: 32 }, - { type: types.CHAR, value: 160 }, - { type: types.CHAR, value: 5760 }, - { type: types.CHAR, value: 6158 }, - { type: types.CHAR, value: 8192 }, - { type: types.CHAR, value: 8193 }, - { type: types.CHAR, value: 8194 }, - { type: types.CHAR, value: 8195 }, - { type: types.CHAR, value: 8196 }, - { type: types.CHAR, value: 8197 }, - { type: types.CHAR, value: 8198 }, - { type: types.CHAR, value: 8199 }, - { type: types.CHAR, value: 8200 }, - { type: types.CHAR, value: 8201 }, - { type: types.CHAR, value: 8202 }, - { type: types.CHAR, value: 8232 }, - { type: types.CHAR, value: 8233 }, - { type: types.CHAR, value: 8239 }, - { type: types.CHAR, value: 8287 }, - { type: types.CHAR, value: 12288 }, - { type: types.CHAR, value: 65279 } - ]; -}; - -var NOTANYCHAR = function() { - return [ - { type: types.CHAR, value: 10 }, - { type: types.CHAR, value: 13 }, - { type: types.CHAR, value: 8232 }, - { type: types.CHAR, value: 8233 }, - ]; -}; - -// Predefined class objects. -exports.words = function() { - return { type: types.SET, set: WORDS(), not: false }; -}; - -exports.notWords = function() { - return { type: types.SET, set: WORDS(), not: true }; -}; - -exports.ints = function() { - return { type: types.SET, set: INTS(), not: false }; -}; - -exports.notInts = function() { - return { type: types.SET, set: INTS(), not: true }; -}; - -exports.whitespace = function() { - return { type: types.SET, set: WHITESPACE(), not: false }; -}; - -exports.notWhitespace = function() { - return { type: types.SET, set: WHITESPACE(), not: true }; -}; - -exports.anyChar = function() { - return { type: types.SET, set: NOTANYCHAR(), not: true }; -}; diff --git a/node_modules/ret/lib/types.js b/node_modules/ret/lib/types.js deleted file mode 100644 index 948414512..000000000 --- a/node_modules/ret/lib/types.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - ROOT : 0, - GROUP : 1, - POSITION : 2, - SET : 3, - RANGE : 4, - REPETITION : 5, - REFERENCE : 6, - CHAR : 7, -}; diff --git a/node_modules/ret/lib/util.js b/node_modules/ret/lib/util.js deleted file mode 100644 index 97d8cf516..000000000 --- a/node_modules/ret/lib/util.js +++ /dev/null @@ -1,111 +0,0 @@ -var types = require('./types'); -var sets = require('./sets'); - - -// All of these are private and only used by randexp. -// It's assumed that they will always be called with the correct input. - -var CTRL = '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?'; -var SLSH = { '0': 0, 't': 9, 'n': 10, 'v': 11, 'f': 12, 'r': 13 }; - -/** - * Finds character representations in str and convert all to - * their respective characters - * - * @param {String} str - * @return {String} - */ -exports.strToChars = function(str) { - /* jshint maxlen: false */ - var chars_regex = /(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z\[\\\]\^?])|([0tnvfr]))/g; - str = str.replace(chars_regex, function(s, b, lbs, a16, b16, c8, dctrl, eslsh) { - if (lbs) { - return s; - } - - var code = b ? 8 : - a16 ? parseInt(a16, 16) : - b16 ? parseInt(b16, 16) : - c8 ? parseInt(c8, 8) : - dctrl ? CTRL.indexOf(dctrl) : - SLSH[eslsh]; - - var c = String.fromCharCode(code); - - // Escape special regex characters. - if (/[\[\]{}\^$.|?*+()]/.test(c)) { - c = '\\' + c; - } - - return c; - }); - - return str; -}; - - -/** - * turns class into tokens - * reads str until it encounters a ] not preceeded by a \ - * - * @param {String} str - * @param {String} regexpStr - * @return {Array., Number>} - */ -exports.tokenizeClass = function(str, regexpStr) { - /* jshint maxlen: false */ - var tokens = []; - var regexp = /\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\)(.)|([^\]\\]))-(?:\\)?([^\]]))|(\])|(?:\\)?(.)/g; - var rs, c; - - - while ((rs = regexp.exec(str)) != null) { - if (rs[1]) { - tokens.push(sets.words()); - - } else if (rs[2]) { - tokens.push(sets.ints()); - - } else if (rs[3]) { - tokens.push(sets.whitespace()); - - } else if (rs[4]) { - tokens.push(sets.notWords()); - - } else if (rs[5]) { - tokens.push(sets.notInts()); - - } else if (rs[6]) { - tokens.push(sets.notWhitespace()); - - } else if (rs[7]) { - tokens.push({ - type: types.RANGE, - from: (rs[8] || rs[9]).charCodeAt(0), - to: rs[10].charCodeAt(0), - }); - - } else if (c = rs[12]) { - tokens.push({ - type: types.CHAR, - value: c.charCodeAt(0), - }); - - } else { - return [tokens, regexp.lastIndex]; - } - } - - exports.error(regexpStr, 'Unterminated character class'); -}; - - -/** - * Shortcut to throw errors. - * - * @param {String} regexp - * @param {String} msg - */ -exports.error = function(regexp, msg) { - throw new SyntaxError('Invalid regular expression: /' + regexp + '/: ' + msg); -}; diff --git a/node_modules/ret/package.json b/node_modules/ret/package.json deleted file mode 100644 index ad945abd7..000000000 --- a/node_modules/ret/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_args": [ - [ - "ret@0.1.15", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "ret@0.1.15", - "_id": "ret@0.1.15", - "_inBundle": false, - "_integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "_location": "/ret", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "ret@0.1.15", - "name": "ret", - "escapedName": "ret", - "rawSpec": "0.1.15", - "saveSpec": null, - "fetchSpec": "0.1.15" - }, - "_requiredBy": [ - "/safe-regex" - ], - "_resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "_spec": "0.1.15", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Roly Fentanes", - "url": "https://github.com/fent" - }, - "bugs": { - "url": "https://github.com/fent/ret.js/issues" - }, - "description": "Tokenizes a string that represents a regular expression.", - "devDependencies": { - "istanbul": "*", - "vows": "*" - }, - "directories": { - "lib": "./lib" - }, - "engines": { - "node": ">=0.12" - }, - "files": [ - "lib" - ], - "homepage": "https://github.com/fent/ret.js#readme", - "keywords": [ - "regex", - "regexp", - "regular expression", - "parser", - "tokenizer" - ], - "license": "MIT", - "main": "./lib/index.js", - "name": "ret", - "repository": { - "type": "git", - "url": "git://github.com/fent/ret.js.git" - }, - "scripts": { - "test": "istanbul cover vows -- --spec test/*-test.js" - }, - "version": "0.1.15" -} diff --git a/node_modules/safe-buffer/LICENSE b/node_modules/safe-buffer/LICENSE deleted file mode 100644 index 0c068ceec..000000000 --- a/node_modules/safe-buffer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Feross Aboukhadijeh - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/safe-buffer/README.md b/node_modules/safe-buffer/README.md deleted file mode 100644 index e9a81afd0..000000000 --- a/node_modules/safe-buffer/README.md +++ /dev/null @@ -1,584 +0,0 @@ -# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] - -[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg -[travis-url]: https://travis-ci.org/feross/safe-buffer -[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg -[npm-url]: https://npmjs.org/package/safe-buffer -[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg -[downloads-url]: https://npmjs.org/package/safe-buffer -[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg -[standard-url]: https://standardjs.com - -#### Safer Node.js Buffer API - -**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`, -`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.** - -**Uses the built-in implementation when available.** - -## install - -``` -npm install safe-buffer -``` - -## usage - -The goal of this package is to provide a safe replacement for the node.js `Buffer`. - -It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to -the top of your node.js modules: - -```js -var Buffer = require('safe-buffer').Buffer - -// Existing buffer code will continue to work without issues: - -new Buffer('hey', 'utf8') -new Buffer([1, 2, 3], 'utf8') -new Buffer(obj) -new Buffer(16) // create an uninitialized buffer (potentially unsafe) - -// But you can use these new explicit APIs to make clear what you want: - -Buffer.from('hey', 'utf8') // convert from many types to a Buffer -Buffer.alloc(16) // create a zero-filled buffer (safe) -Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe) -``` - -## api - -### Class Method: Buffer.from(array) - - -* `array` {Array} - -Allocates a new `Buffer` using an `array` of octets. - -```js -const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]); - // creates a new Buffer containing ASCII bytes - // ['b','u','f','f','e','r'] -``` - -A `TypeError` will be thrown if `array` is not an `Array`. - -### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) - - -* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or - a `new ArrayBuffer()` -* `byteOffset` {Number} Default: `0` -* `length` {Number} Default: `arrayBuffer.length - byteOffset` - -When passed a reference to the `.buffer` property of a `TypedArray` instance, -the newly created `Buffer` will share the same allocated memory as the -TypedArray. - -```js -const arr = new Uint16Array(2); -arr[0] = 5000; -arr[1] = 4000; - -const buf = Buffer.from(arr.buffer); // shares the memory with arr; - -console.log(buf); - // Prints: - -// changing the TypedArray changes the Buffer also -arr[1] = 6000; - -console.log(buf); - // Prints: -``` - -The optional `byteOffset` and `length` arguments specify a memory range within -the `arrayBuffer` that will be shared by the `Buffer`. - -```js -const ab = new ArrayBuffer(10); -const buf = Buffer.from(ab, 0, 2); -console.log(buf.length); - // Prints: 2 -``` - -A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`. - -### Class Method: Buffer.from(buffer) - - -* `buffer` {Buffer} - -Copies the passed `buffer` data onto a new `Buffer` instance. - -```js -const buf1 = Buffer.from('buffer'); -const buf2 = Buffer.from(buf1); - -buf1[0] = 0x61; -console.log(buf1.toString()); - // 'auffer' -console.log(buf2.toString()); - // 'buffer' (copy is not changed) -``` - -A `TypeError` will be thrown if `buffer` is not a `Buffer`. - -### Class Method: Buffer.from(str[, encoding]) - - -* `str` {String} String to encode. -* `encoding` {String} Encoding to use, Default: `'utf8'` - -Creates a new `Buffer` containing the given JavaScript string `str`. If -provided, the `encoding` parameter identifies the character encoding. -If not provided, `encoding` defaults to `'utf8'`. - -```js -const buf1 = Buffer.from('this is a tést'); -console.log(buf1.toString()); - // prints: this is a tést -console.log(buf1.toString('ascii')); - // prints: this is a tC)st - -const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); -console.log(buf2.toString()); - // prints: this is a tést -``` - -A `TypeError` will be thrown if `str` is not a string. - -### Class Method: Buffer.alloc(size[, fill[, encoding]]) - - -* `size` {Number} -* `fill` {Value} Default: `undefined` -* `encoding` {String} Default: `utf8` - -Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the -`Buffer` will be *zero-filled*. - -```js -const buf = Buffer.alloc(5); -console.log(buf); - // -``` - -The `size` must be less than or equal to the value of -`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is -`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will -be created if a `size` less than or equal to 0 is specified. - -If `fill` is specified, the allocated `Buffer` will be initialized by calling -`buf.fill(fill)`. See [`buf.fill()`][] for more information. - -```js -const buf = Buffer.alloc(5, 'a'); -console.log(buf); - // -``` - -If both `fill` and `encoding` are specified, the allocated `Buffer` will be -initialized by calling `buf.fill(fill, encoding)`. For example: - -```js -const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); -console.log(buf); - // -``` - -Calling `Buffer.alloc(size)` can be significantly slower than the alternative -`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance -contents will *never contain sensitive data*. - -A `TypeError` will be thrown if `size` is not a number. - -### Class Method: Buffer.allocUnsafe(size) - - -* `size` {Number} - -Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must -be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit -architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is -thrown. A zero-length Buffer will be created if a `size` less than or equal to -0 is specified. - -The underlying memory for `Buffer` instances created in this way is *not -initialized*. The contents of the newly created `Buffer` are unknown and -*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such -`Buffer` instances to zeroes. - -```js -const buf = Buffer.allocUnsafe(5); -console.log(buf); - // - // (octets will be different, every time) -buf.fill(0); -console.log(buf); - // -``` - -A `TypeError` will be thrown if `size` is not a number. - -Note that the `Buffer` module pre-allocates an internal `Buffer` instance of -size `Buffer.poolSize` that is used as a pool for the fast allocation of new -`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated -`new Buffer(size)` constructor) only when `size` is less than or equal to -`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default -value of `Buffer.poolSize` is `8192` but can be modified. - -Use of this pre-allocated internal memory pool is a key difference between -calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. -Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer -pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal -Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The -difference is subtle but can be important when an application requires the -additional performance that `Buffer.allocUnsafe(size)` provides. - -### Class Method: Buffer.allocUnsafeSlow(size) - - -* `size` {Number} - -Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The -`size` must be less than or equal to the value of -`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is -`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will -be created if a `size` less than or equal to 0 is specified. - -The underlying memory for `Buffer` instances created in this way is *not -initialized*. The contents of the newly created `Buffer` are unknown and -*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such -`Buffer` instances to zeroes. - -When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, -allocations under 4KB are, by default, sliced from a single pre-allocated -`Buffer`. This allows applications to avoid the garbage collection overhead of -creating many individually allocated Buffers. This approach improves both -performance and memory usage by eliminating the need to track and cleanup as -many `Persistent` objects. - -However, in the case where a developer may need to retain a small chunk of -memory from a pool for an indeterminate amount of time, it may be appropriate -to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then -copy out the relevant bits. - -```js -// need to keep around a few small chunks of memory -const store = []; - -socket.on('readable', () => { - const data = socket.read(); - // allocate for retained data - const sb = Buffer.allocUnsafeSlow(10); - // copy the data into the new allocation - data.copy(sb, 0, 0, 10); - store.push(sb); -}); -``` - -Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after* -a developer has observed undue memory retention in their applications. - -A `TypeError` will be thrown if `size` is not a number. - -### All the Rest - -The rest of the `Buffer` API is exactly the same as in node.js. -[See the docs](https://nodejs.org/api/buffer.html). - - -## Related links - -- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660) -- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4) - -## Why is `Buffer` unsafe? - -Today, the node.js `Buffer` constructor is overloaded to handle many different argument -types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), -`ArrayBuffer`, and also `Number`. - -The API is optimized for convenience: you can throw any type at it, and it will try to do -what you want. - -Because the Buffer constructor is so powerful, you often see code like this: - -```js -// Convert UTF-8 strings to hex -function toHex (str) { - return new Buffer(str).toString('hex') -} -``` - -***But what happens if `toHex` is called with a `Number` argument?*** - -### Remote Memory Disclosure - -If an attacker can make your program call the `Buffer` constructor with a `Number` -argument, then they can make it allocate uninitialized memory from the node.js process. -This could potentially disclose TLS private keys, user data, or database passwords. - -When the `Buffer` constructor is passed a `Number` argument, it returns an -**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like -this, you **MUST** overwrite the contents before returning it to the user. - -From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size): - -> `new Buffer(size)` -> -> - `size` Number -> -> The underlying memory for `Buffer` instances created in this way is not initialized. -> **The contents of a newly created `Buffer` are unknown and could contain sensitive -> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes. - -(Emphasis our own.) - -Whenever the programmer intended to create an uninitialized `Buffer` you often see code -like this: - -```js -var buf = new Buffer(16) - -// Immediately overwrite the uninitialized buffer with data from another buffer -for (var i = 0; i < buf.length; i++) { - buf[i] = otherBuf[i] -} -``` - - -### Would this ever be a problem in real code? - -Yes. It's surprisingly common to forget to check the type of your variables in a -dynamically-typed language like JavaScript. - -Usually the consequences of assuming the wrong type is that your program crashes with an -uncaught exception. But the failure mode for forgetting to check the type of arguments to -the `Buffer` constructor is more catastrophic. - -Here's an example of a vulnerable service that takes a JSON payload and converts it to -hex: - -```js -// Take a JSON payload {str: "some string"} and convert it to hex -var server = http.createServer(function (req, res) { - var data = '' - req.setEncoding('utf8') - req.on('data', function (chunk) { - data += chunk - }) - req.on('end', function () { - var body = JSON.parse(data) - res.end(new Buffer(body.str).toString('hex')) - }) -}) - -server.listen(8080) -``` - -In this example, an http client just has to send: - -```json -{ - "str": 1000 -} -``` - -and it will get back 1,000 bytes of uninitialized memory from the server. - -This is a very serious bug. It's similar in severity to the -[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process -memory by remote attackers. - - -### Which real-world packages were vulnerable? - -#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht) - -[Mathias Buus](https://github.com/mafintosh) and I -([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages, -[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow -anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get -them to reveal 20 bytes at a time of uninitialized memory from the node.js process. - -Here's -[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) -that fixed it. We released a new fixed version, created a -[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all -vulnerable versions on npm so users will get a warning to upgrade to a newer version. - -#### [`ws`](https://www.npmjs.com/package/ws) - -That got us wondering if there were other vulnerable packages. Sure enough, within a short -period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the -most popular WebSocket implementation in node.js. - -If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as -expected, then uninitialized server memory would be disclosed to the remote peer. - -These were the vulnerable methods: - -```js -socket.send(number) -socket.ping(number) -socket.pong(number) -``` - -Here's a vulnerable socket server with some echo functionality: - -```js -server.on('connection', function (socket) { - socket.on('message', function (message) { - message = JSON.parse(message) - if (message.type === 'echo') { - socket.send(message.data) // send back the user's message - } - }) -}) -``` - -`socket.send(number)` called on the server, will disclose server memory. - -Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue -was fixed, with a more detailed explanation. Props to -[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the -[Node Security Project disclosure](https://nodesecurity.io/advisories/67). - - -### What's the solution? - -It's important that node.js offers a fast way to get memory otherwise performance-critical -applications would needlessly get a lot slower. - -But we need a better way to *signal our intent* as programmers. **When we want -uninitialized memory, we should request it explicitly.** - -Sensitive functionality should not be packed into a developer-friendly API that loosely -accepts many different types. This type of API encourages the lazy practice of passing -variables in without checking the type very carefully. - -#### A new API: `Buffer.allocUnsafe(number)` - -The functionality of creating buffers with uninitialized memory should be part of another -API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that -frequently gets user input of all sorts of different types passed into it. - -```js -var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory! - -// Immediately overwrite the uninitialized buffer with data from another buffer -for (var i = 0; i < buf.length; i++) { - buf[i] = otherBuf[i] -} -``` - - -### How do we fix node.js core? - -We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as -`semver-major`) which defends against one case: - -```js -var str = 16 -new Buffer(str, 'utf8') -``` - -In this situation, it's implied that the programmer intended the first argument to be a -string, since they passed an encoding as a second argument. Today, node.js will allocate -uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not -what the programmer intended. - -But this is only a partial solution, since if the programmer does `new Buffer(variable)` -(without an `encoding` parameter) there's no way to know what they intended. If `variable` -is sometimes a number, then uninitialized memory will sometimes be returned. - -### What's the real long-term fix? - -We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when -we need uninitialized memory. But that would break 1000s of packages. - -~~We believe the best solution is to:~~ - -~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~ - -~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~ - -#### Update - -We now support adding three new APIs: - -- `Buffer.from(value)` - convert from any type to a buffer -- `Buffer.alloc(size)` - create a zero-filled buffer -- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size - -This solves the core problem that affected `ws` and `bittorrent-dht` which is -`Buffer(variable)` getting tricked into taking a number argument. - -This way, existing code continues working and the impact on the npm ecosystem will be -minimal. Over time, npm maintainers can migrate performance-critical code to use -`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`. - - -### Conclusion - -We think there's a serious design issue with the `Buffer` API as it exists today. It -promotes insecure software by putting high-risk functionality into a convenient API -with friendly "developer ergonomics". - -This wasn't merely a theoretical exercise because we found the issue in some of the -most popular npm packages. - -Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of -`buffer`. - -```js -var Buffer = require('safe-buffer').Buffer -``` - -Eventually, we hope that node.js core can switch to this new, safer behavior. We believe -the impact on the ecosystem would be minimal since it's not a breaking change. -Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while -older, insecure packages would magically become safe from this attack vector. - - -## links - -- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514) -- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67) -- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68) - - -## credit - -The original issues in `bittorrent-dht` -([disclosure](https://nodesecurity.io/advisories/68)) and -`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by -[Mathias Buus](https://github.com/mafintosh) and -[Feross Aboukhadijeh](http://feross.org/). - -Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues -and for his work running the [Node Security Project](https://nodesecurity.io/). - -Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and -auditing the code. - - -## license - -MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) diff --git a/node_modules/safe-buffer/index.d.ts b/node_modules/safe-buffer/index.d.ts deleted file mode 100644 index e9fed809a..000000000 --- a/node_modules/safe-buffer/index.d.ts +++ /dev/null @@ -1,187 +0,0 @@ -declare module "safe-buffer" { - export class Buffer { - length: number - write(string: string, offset?: number, length?: number, encoding?: string): number; - toString(encoding?: string, start?: number, end?: number): string; - toJSON(): { type: 'Buffer', data: any[] }; - equals(otherBuffer: Buffer): boolean; - compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; - copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - slice(start?: number, end?: number): Buffer; - writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readUInt8(offset: number, noAssert?: boolean): number; - readUInt16LE(offset: number, noAssert?: boolean): number; - readUInt16BE(offset: number, noAssert?: boolean): number; - readUInt32LE(offset: number, noAssert?: boolean): number; - readUInt32BE(offset: number, noAssert?: boolean): number; - readInt8(offset: number, noAssert?: boolean): number; - readInt16LE(offset: number, noAssert?: boolean): number; - readInt16BE(offset: number, noAssert?: boolean): number; - readInt32LE(offset: number, noAssert?: boolean): number; - readInt32BE(offset: number, noAssert?: boolean): number; - readFloatLE(offset: number, noAssert?: boolean): number; - readFloatBE(offset: number, noAssert?: boolean): number; - readDoubleLE(offset: number, noAssert?: boolean): number; - readDoubleBE(offset: number, noAssert?: boolean): number; - swap16(): Buffer; - swap32(): Buffer; - swap64(): Buffer; - writeUInt8(value: number, offset: number, noAssert?: boolean): number; - writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeInt8(value: number, offset: number, noAssert?: boolean): number; - writeInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeFloatLE(value: number, offset: number, noAssert?: boolean): number; - writeFloatBE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; - fill(value: any, offset?: number, end?: number): this; - indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; - - /** - * Allocates a new buffer containing the given {str}. - * - * @param str String to store in buffer. - * @param encoding encoding to use, optional. Default is 'utf8' - */ - constructor (str: string, encoding?: string); - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - */ - constructor (size: number); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - constructor (array: Uint8Array); - /** - * Produces a Buffer backed by the same allocated memory as - * the given {ArrayBuffer}. - * - * - * @param arrayBuffer The ArrayBuffer with which to share memory. - */ - constructor (arrayBuffer: ArrayBuffer); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - constructor (array: any[]); - /** - * Copies the passed {buffer} data onto a new {Buffer} instance. - * - * @param buffer The buffer to copy. - */ - constructor (buffer: Buffer); - prototype: Buffer; - /** - * Allocates a new Buffer using an {array} of octets. - * - * @param array - */ - static from(array: any[]): Buffer; - /** - * When passed a reference to the .buffer property of a TypedArray instance, - * the newly created Buffer will share the same allocated memory as the TypedArray. - * The optional {byteOffset} and {length} arguments specify a memory range - * within the {arrayBuffer} that will be shared by the Buffer. - * - * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() - * @param byteOffset - * @param length - */ - static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; - /** - * Copies the passed {buffer} data onto a new Buffer instance. - * - * @param buffer - */ - static from(buffer: Buffer): Buffer; - /** - * Creates a new Buffer containing the given JavaScript string {str}. - * If provided, the {encoding} parameter identifies the character encoding. - * If not provided, {encoding} defaults to 'utf8'. - * - * @param str - */ - static from(str: string, encoding?: string): Buffer; - /** - * Returns true if {obj} is a Buffer - * - * @param obj object to test. - */ - static isBuffer(obj: any): obj is Buffer; - /** - * Returns true if {encoding} is a valid encoding argument. - * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' - * - * @param encoding string to test. - */ - static isEncoding(encoding: string): boolean; - /** - * Gives the actual byte length of a string. encoding defaults to 'utf8'. - * This is not the same as String.prototype.length since that returns the number of characters in a string. - * - * @param string string to test. - * @param encoding encoding used to evaluate (defaults to 'utf8') - */ - static byteLength(string: string, encoding?: string): number; - /** - * Returns a buffer which is the result of concatenating all the buffers in the list together. - * - * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. - * If the list has exactly one item, then the first item of the list is returned. - * If the list has more than one item, then a new Buffer is created. - * - * @param list An array of Buffer objects to concatenate - * @param totalLength Total length of the buffers when concatenated. - * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. - */ - static concat(list: Buffer[], totalLength?: number): Buffer; - /** - * The same as buf1.compare(buf2). - */ - static compare(buf1: Buffer, buf2: Buffer): number; - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - * @param fill if specified, buffer will be initialized by calling buf.fill(fill). - * If parameter is omitted, buffer will be filled with zeros. - * @param encoding encoding used for call to buf.fill while initalizing - */ - static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; - /** - * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafe(size: number): Buffer; - /** - * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafeSlow(size: number): Buffer; - } -} \ No newline at end of file diff --git a/node_modules/safe-buffer/index.js b/node_modules/safe-buffer/index.js deleted file mode 100644 index 22438dabb..000000000 --- a/node_modules/safe-buffer/index.js +++ /dev/null @@ -1,62 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer') -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} diff --git a/node_modules/safe-buffer/package.json b/node_modules/safe-buffer/package.json deleted file mode 100644 index d2ddfa52c..000000000 --- a/node_modules/safe-buffer/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_args": [ - [ - "safe-buffer@5.1.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "safe-buffer@5.1.2", - "_id": "safe-buffer@5.1.2", - "_inBundle": false, - "_integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "_location": "/safe-buffer", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "safe-buffer@5.1.2", - "name": "safe-buffer", - "escapedName": "safe-buffer", - "rawSpec": "5.1.2", - "saveSpec": null, - "fetchSpec": "5.1.2" - }, - "_requiredBy": [ - "/convert-source-map", - "/jest-circus/request", - "/request", - "/tunnel-agent" - ], - "_resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "_spec": "5.1.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Feross Aboukhadijeh", - "email": "feross@feross.org", - "url": "http://feross.org" - }, - "bugs": { - "url": "https://github.com/feross/safe-buffer/issues" - }, - "description": "Safer Node.js Buffer API", - "devDependencies": { - "standard": "*", - "tape": "^4.0.0" - }, - "homepage": "https://github.com/feross/safe-buffer", - "keywords": [ - "buffer", - "buffer allocate", - "node security", - "safe", - "safe-buffer", - "security", - "uninitialized" - ], - "license": "MIT", - "main": "index.js", - "name": "safe-buffer", - "repository": { - "type": "git", - "url": "git://github.com/feross/safe-buffer.git" - }, - "scripts": { - "test": "standard && tape test/*.js" - }, - "types": "index.d.ts", - "version": "5.1.2" -} diff --git a/node_modules/safe-regex/.travis.yml b/node_modules/safe-regex/.travis.yml deleted file mode 100644 index cc4dba29d..000000000 --- a/node_modules/safe-regex/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/safe-regex/LICENSE b/node_modules/safe-regex/LICENSE deleted file mode 100644 index ee27ba4b4..000000000 --- a/node_modules/safe-regex/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/safe-regex/example/safe.js b/node_modules/safe-regex/example/safe.js deleted file mode 100644 index f486f592c..000000000 --- a/node_modules/safe-regex/example/safe.js +++ /dev/null @@ -1,3 +0,0 @@ -var safe = require('../'); -var regex = process.argv.slice(2).join(' '); -console.log(safe(regex)); diff --git a/node_modules/safe-regex/index.js b/node_modules/safe-regex/index.js deleted file mode 100644 index 488f5014d..000000000 --- a/node_modules/safe-regex/index.js +++ /dev/null @@ -1,43 +0,0 @@ -var parse = require('ret'); -var types = parse.types; - -module.exports = function (re, opts) { - if (!opts) opts = {}; - var replimit = opts.limit === undefined ? 25 : opts.limit; - - if (isRegExp(re)) re = re.source; - else if (typeof re !== 'string') re = String(re); - - try { re = parse(re) } - catch (err) { return false } - - var reps = 0; - return (function walk (node, starHeight) { - if (node.type === types.REPETITION) { - starHeight ++; - reps ++; - if (starHeight > 1) return false; - if (reps > replimit) return false; - } - - if (node.options) { - for (var i = 0, len = node.options.length; i < len; i++) { - var ok = walk({ stack: node.options[i] }, starHeight); - if (!ok) return false; - } - } - var stack = node.stack || (node.value && node.value.stack); - if (!stack) return true; - - for (var i = 0; i < stack.length; i++) { - var ok = walk(stack[i], starHeight); - if (!ok) return false; - } - - return true; - })(re, 0); -}; - -function isRegExp (x) { - return {}.toString.call(x) === '[object RegExp]'; -} diff --git a/node_modules/safe-regex/package.json b/node_modules/safe-regex/package.json deleted file mode 100644 index 09c6e2b22..000000000 --- a/node_modules/safe-regex/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "_args": [ - [ - "safe-regex@1.1.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "safe-regex@1.1.0", - "_id": "safe-regex@1.1.0", - "_inBundle": false, - "_integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "_location": "/safe-regex", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "safe-regex@1.1.0", - "name": "safe-regex", - "escapedName": "safe-regex", - "rawSpec": "1.1.0", - "saveSpec": null, - "fetchSpec": "1.1.0" - }, - "_requiredBy": [ - "/regex-not", - "/to-regex" - ], - "_resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "_spec": "1.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "bugs": { - "url": "https://github.com/substack/safe-regex/issues" - }, - "dependencies": { - "ret": "~0.1.10" - }, - "description": "detect possibly catastrophic, exponential-time regular expressions", - "devDependencies": { - "tape": "^3.5.0" - }, - "homepage": "https://github.com/substack/safe-regex", - "keywords": [ - "catastrophic", - "exponential", - "regex", - "safe", - "sandbox" - ], - "license": "MIT", - "main": "index.js", - "name": "safe-regex", - "repository": { - "type": "git", - "url": "git://github.com/substack/safe-regex.git" - }, - "scripts": { - "test": "tape test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/8", - "ie/9", - "ie/10", - "firefox/latest", - "chrome/latest", - "opera/latest", - "safari/latest" - ] - }, - "version": "1.1.0" -} diff --git a/node_modules/safe-regex/readme.markdown b/node_modules/safe-regex/readme.markdown deleted file mode 100644 index 83673ac3d..000000000 --- a/node_modules/safe-regex/readme.markdown +++ /dev/null @@ -1,65 +0,0 @@ -# safe-regex - -detect potentially -[catastrophic](http://regular-expressions.mobi/catastrophic.html) -[exponential-time](http://perlgeek.de/blog-en/perl-tips/in-search-of-an-exponetial-regexp.html) -regular expressions by limiting the -[star height](https://en.wikipedia.org/wiki/Star_height) to 1 - -WARNING: This module merely *seems* to work given all the catastrophic regular -expressions I could find scouring the internet, but I don't have enough of a -background in automata to be absolutely sure that this module will catch all -exponential-time cases. - -[![browser support](https://ci.testling.com/substack/safe-regex.png)](https://ci.testling.com/substack/safe-regex) - -[![build status](https://secure.travis-ci.org/substack/safe-regex.png)](http://travis-ci.org/substack/safe-regex) - -# example - -``` js -var safe = require('safe-regex'); -var regex = process.argv.slice(2).join(' '); -console.log(safe(regex)); -``` - -``` -$ node safe.js '(x+x+)+y' -false -$ node safe.js '(beep|boop)*' -true -$ node safe.js '(a+){10}' -false -$ node safe.js '\blocation\s*:[^:\n]+\b(Oakland|San Francisco)\b' -true -``` - -# methods - -``` js -var safe = require('safe-regex') -``` - -## var ok = safe(re, opts={}) - -Return a boolean `ok` whether or not the regex `re` is safe and not possibly -catastrophic. - -`re` can be a `RegExp` object or just a string. - -If the `re` is a string and is an invalid regex, returns `false`. - -* `opts.limit` - maximum number of allowed repetitions in the entire regex. -Default: `25`. - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install safe-regex -``` - -# license - -MIT diff --git a/node_modules/safe-regex/test/regex.js b/node_modules/safe-regex/test/regex.js deleted file mode 100644 index 0bda85045..000000000 --- a/node_modules/safe-regex/test/regex.js +++ /dev/null @@ -1,50 +0,0 @@ -var safe = require('../'); -var test = require('tape'); - -var good = [ - /\bOakland\b/, - /\b(Oakland|San Francisco)\b/i, - /^\d+1337\d+$/i, - /^\d+(1337|404)\d+$/i, - /^\d+(1337|404)*\d+$/i, - RegExp(Array(26).join('a?') + Array(26).join('a')), -]; - -test('safe regex', function (t) { - t.plan(good.length); - good.forEach(function (re) { - t.equal(safe(re), true); - }); -}); - - -var bad = [ - /^(a?){25}(a){25}$/, - RegExp(Array(27).join('a?') + Array(27).join('a')), - /(x+x+)+y/, - /foo|(x+x+)+y/, - /(a+){10}y/, - /(a+){2}y/, - /(.*){1,32000}[bc]/ -]; - -test('unsafe regex', function (t) { - t.plan(bad.length); - bad.forEach(function (re) { - t.equal(safe(re), false); - }); -}); - -var invalid = [ - '*Oakland*', - 'hey(yoo))', - 'abcde(?>hellow)', - '[abc' -]; - -test('invalid regex', function (t) { - t.plan(invalid.length); - invalid.forEach(function (re) { - t.equal(safe(re), false); - }); -}); diff --git a/node_modules/self-closing-tags/LICENSE b/node_modules/self-closing-tags/LICENSE deleted file mode 100644 index 5385a0983..000000000 --- a/node_modules/self-closing-tags/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/self-closing-tags/README.md b/node_modules/self-closing-tags/README.md deleted file mode 100644 index 8b6a87dd1..000000000 --- a/node_modules/self-closing-tags/README.md +++ /dev/null @@ -1,94 +0,0 @@ -# self-closing-tags [![NPM version](https://img.shields.io/npm/v/self-closing-tags.svg?style=flat)](https://www.npmjs.com/package/self-closing-tags) [![NPM monthly downloads](https://img.shields.io/npm/dm/self-closing-tags.svg?style=flat)](https://npmjs.org/package/self-closing-tags) [![NPM total downloads](https://img.shields.io/npm/dt/self-closing-tags.svg?style=flat)](https://npmjs.org/package/self-closing-tags) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/self-closing-tags.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/self-closing-tags) - -> HTML void elements are not the only self-closing tags. This includes common SVG self-closing elements as well. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save self-closing-tags -``` - -## Usage - -Please [create an issue](../../issues) or do a pull request to add addtional SVG self-closing elements, thanks! - -```js -var selfClosingTags = require('self-closing-tags'); -``` - -**Void elements only** - -```js -var voidElements = require('self-closing-tags').voidElements; -``` - -**SVG self-closing elements only** - -```js -var svgElements = require('self-closing-tags').svgElements; -``` - -## About - -
          -Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. - -
          - -
          -Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
          - -
          -Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
          - -### Related projects - -You might also be interested in these projects: - -* [breakdance](https://www.npmjs.com/package/breakdance): Breakdance is a node.js library for converting HTML to markdown. Highly pluggable, flexible and easy… [more](http://breakdance.io) | [homepage](http://breakdance.io "Breakdance is a node.js library for converting HTML to markdown. Highly pluggable, flexible and easy to use. It's time for your markup to get down.") -* [html-tag](https://www.npmjs.com/package/html-tag): Generate HTML elements from a javascript object. | [homepage](https://github.com/jonschlinkert/html-tag "Generate HTML elements from a javascript object.") -* [html-toc](https://www.npmjs.com/package/html-toc): Generate a HTML table of contents using cheerio. | [homepage](https://github.com/jonschlinkert/html-toc "Generate a HTML table of contents using cheerio.") -* [is-self-closing](https://www.npmjs.com/package/is-self-closing): Returns true if the given name is a HTML void element or common SVG self-closing… [more](https://github.com/jonschlinkert/is-self-closing) | [homepage](https://github.com/jonschlinkert/is-self-closing "Returns true if the given name is a HTML void element or common SVG self-closing element.") -* [remarkable](https://www.npmjs.com/package/remarkable): Markdown parser, done right. 100% Commonmark support, extensions, syntax plugins, high speed - all in… [more](https://github.com/jonschlinkert/remarkable) | [homepage](https://github.com/jonschlinkert/remarkable "Markdown parser, done right. 100% Commonmark support, extensions, syntax plugins, high speed - all in one.") - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on October 30, 2017._ \ No newline at end of file diff --git a/node_modules/self-closing-tags/index.js b/node_modules/self-closing-tags/index.js deleted file mode 100644 index a04d0da74..000000000 --- a/node_modules/self-closing-tags/index.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -var svgElements = [ - 'circle', - 'ellipse', - 'line', - 'path', - 'polygon', - 'polyline', - 'rect', - 'stop', - 'use' -]; - -var voidElements = [ - 'area', - 'base', - 'br', - 'col', - 'command', - 'embed', - 'hr', - 'img', - 'input', - 'keygen', - 'link', - 'meta', - 'param', - 'source', - 'track', - 'wbr' -]; - -module.exports = voidElements.concat(svgElements); -module.exports.voidElements = voidElements; -module.exports.svgElements = svgElements; diff --git a/node_modules/self-closing-tags/package.json b/node_modules/self-closing-tags/package.json deleted file mode 100644 index e78e38c81..000000000 --- a/node_modules/self-closing-tags/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_from": "self-closing-tags@^1.0.1", - "_id": "self-closing-tags@1.0.1", - "_inBundle": false, - "_integrity": "sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA==", - "_location": "/self-closing-tags", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "self-closing-tags@^1.0.1", - "name": "self-closing-tags", - "escapedName": "self-closing-tags", - "rawSpec": "^1.0.1", - "saveSpec": null, - "fetchSpec": "^1.0.1" - }, - "_requiredBy": [ - "/is-self-closing" - ], - "_resolved": "https://registry.npmjs.org/self-closing-tags/-/self-closing-tags-1.0.1.tgz", - "_shasum": "6c5fa497994bb826b484216916371accee490a5d", - "_spec": "self-closing-tags@^1.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\is-self-closing", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/self-closing-tags/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "HTML void elements are not the only self-closing tags. This includes common SVG self-closing elements as well.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.12.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/self-closing-tags", - "keywords": [ - "closing", - "element", - "elements", - "html", - "self", - "self-closing", - "svg", - "tag", - "tags", - "void", - "xml" - ], - "license": "MIT", - "main": "index.js", - "name": "self-closing-tags", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/self-closing-tags.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "breakdance", - "html-tag", - "html-toc", - "is-self-closing", - "remarkable" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.0.1" -} diff --git a/node_modules/set-getter/LICENSE b/node_modules/set-getter/LICENSE deleted file mode 100644 index 3f525ab13..000000000 --- a/node_modules/set-getter/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016, Brian Woodward. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/set-getter/README.md b/node_modules/set-getter/README.md deleted file mode 100644 index 072d3eaca..000000000 --- a/node_modules/set-getter/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# set-getter [![NPM version](https://img.shields.io/npm/v/set-getter.svg?style=flat)](https://www.npmjs.com/package/set-getter) [![NPM downloads](https://img.shields.io/npm/dm/set-getter.svg?style=flat)](https://npmjs.org/package/set-getter) [![Build Status](https://img.shields.io/travis/doowb/set-getter.svg?style=flat)](https://travis-ci.org/doowb/set-getter) - -> Create nested getter properties and any intermediary dot notation (`'a.b.c'`) paths - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install set-getter --save -``` - -## Usage - -```js -var getter = require('set-getter'); -``` - -set-getter works like [set-value](https://github.com/jonschlinkert/set-value) by adding a property to an object or an object hierarchy using dot notation. The main difference is that the property is added using `Object.defineProperty` and is expected to be a getter function that returns a value. - -**Example** - -```js -var obj = {}; - -// root level property -getter(obj, 'foo', function() { - return 'bar'; -}); -console.log(obj.foo); -//=> 'bar' - -// property dot notation -getter(obj, 'bar.baz', function() { - return 'qux'; -}); -console.log(obj.bar.baz); -//=> 'qux' - -// property array notation -getter(obj, ['beep', 'boop'], function() { - return 'bop'; -}); -console.log(obj.beep.boop); -//=> 'bop' -``` - -## API - -### [setGetter](index.js#L27) - -Defines a getter function on an object using property path notation. - -**Params** - -* `obj` **{Object}**: Object to add property to. -* `prop` **{String|Array}**: Property string or array to add. -* `getter` **{Function}**: Getter function to add as a property. - -**Example** - -```js -var obj = {}; -getter(obj, 'foo', function() { - return 'bar'; -}); -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/doowb/set-getter/issues/new). - -## Building docs - -Generate readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install verb && npm run docs -``` - -Or, if [verb](https://github.com/verbose/verb) is installed globally: - -```sh -$ verb -``` - -## Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -## Author - -**Brian Woodward** - -* [github/doowb](https://github.com/doowb) -* [twitter/doowb](http://twitter.com/doowb) - -## License - -Copyright © 2016, [Brian Woodward](https://github.com/doowb). -Released under the [MIT license](https://github.com/doowb/set-getter/blob/master/LICENSE). - -*** - -_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on April 29, 2016._ \ No newline at end of file diff --git a/node_modules/set-getter/index.js b/node_modules/set-getter/index.js deleted file mode 100644 index ce9a6a0d4..000000000 --- a/node_modules/set-getter/index.js +++ /dev/null @@ -1,83 +0,0 @@ -/*! - * set-getter (https://github.com/doowb/set-getter) - * - * Copyright (c) 2016, Brian Woodward. - * Licensed under the MIT License. - */ - -'use strict'; - -var toPath = require('to-object-path'); - -/** - * Defines a getter function on an object using property path notation. - * - * ```js - * var obj = {}; - * getter(obj, 'foo', function() { - * return 'bar'; - * }); - * ``` - * @param {Object} `obj` Object to add property to. - * @param {String|Array} `prop` Property string or array to add. - * @param {Function} `getter` Getter function to add as a property. - * @api public - */ - -function setGetter(obj, prop, getter) { - var key = toPath(arguments); - return define(obj, key, getter); -} - -/** - * Define getter function on object or object hierarchy using dot notation. - * - * @param {Object} `obj` Object to define getter property on. - * @param {String} `prop` Property string to define. - * @param {Function} `getter` Getter function to define. - * @return {Object} Returns original object. - */ - -function define(obj, prop, getter) { - if (!~prop.indexOf('.')) { - defineProperty(obj, prop, getter); - return obj; - } - - var keys = prop.split('.'); - var last = keys.pop(); - var target = obj; - var key; - - while ((key = keys.shift())) { - while (key.slice(-1) === '\\') { - key = key.slice(0, -1) + '.' + keys.shift(); - } - target = target[key] || (target[key] = {}); - } - - defineProperty(target, last, getter); - return obj; -} - -/** - * Define getter function on object as a configurable and enumerable property. - * - * @param {Object} `obj` Object to define property on. - * @param {String} `prop` Property to define. - * @param {Function} `getter` Getter function to define. - */ - -function defineProperty(obj, prop, getter) { - Object.defineProperty(obj, prop, { - configurable: true, - enumerable: true, - get: getter - }); -} - -/** - * Expose `setGetter` - */ - -module.exports = setGetter; diff --git a/node_modules/set-getter/package.json b/node_modules/set-getter/package.json deleted file mode 100644 index 7d82bb3e9..000000000 --- a/node_modules/set-getter/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "_from": "set-getter@^0.1.0", - "_id": "set-getter@0.1.0", - "_inBundle": false, - "_integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "_location": "/set-getter", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "set-getter@^0.1.0", - "name": "set-getter", - "escapedName": "set-getter", - "rawSpec": "^0.1.0", - "saveSpec": null, - "fetchSpec": "^0.1.0" - }, - "_requiredBy": [ - "/lazy-cache" - ], - "_resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "_shasum": "d769c182c9d5a51f409145f2fba82e5e86e80376", - "_spec": "set-getter@^0.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\lazy-cache", - "author": { - "name": "Brian Woodward", - "url": "https://github.com/doowb" - }, - "bugs": { - "url": "https://github.com/doowb/set-getter/issues" - }, - "bundleDependencies": false, - "dependencies": { - "to-object-path": "^0.3.0" - }, - "deprecated": false, - "description": "Create nested getter properties and any intermediary dot notation (`'a.b.c'`) paths", - "devDependencies": { - "gulp-format-md": "^0.1.9", - "mocha": "^2.4.5" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/doowb/set-getter", - "keywords": [], - "license": "MIT", - "main": "index.js", - "name": "set-getter", - "repository": { - "type": "git", - "url": "git+https://github.com/doowb/set-getter.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "plugins": [ - "gulp-format-md" - ], - "reflinks": [ - "verb", - "set-value" - ], - "layout": "default", - "toc": false, - "tasks": [ - "readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.1.0" -} diff --git a/node_modules/set-value/LICENSE b/node_modules/set-value/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/set-value/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/set-value/README.md b/node_modules/set-value/README.md deleted file mode 100644 index e336d744e..000000000 --- a/node_modules/set-value/README.md +++ /dev/null @@ -1,150 +0,0 @@ -# set-value [![NPM version](https://img.shields.io/npm/v/set-value.svg?style=flat)](https://www.npmjs.com/package/set-value) [![NPM monthly downloads](https://img.shields.io/npm/dm/set-value.svg?style=flat)](https://npmjs.org/package/set-value) [![NPM total downloads](https://img.shields.io/npm/dt/set-value.svg?style=flat)](https://npmjs.org/package/set-value) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/set-value.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/set-value) - -> Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save set-value -``` - -## Usage - -```js -var set = require('set-value'); -set(object, prop, value); -``` - -### Params - -* `object` **{object}**: The object to set `value` on -* `prop` **{string}**: The property to set. Dot-notation may be used. -* `value` **{any}**: The value to set on `object[prop]` - -## Examples - -Updates and returns the given object: - -```js -var obj = {}; -set(obj, 'a.b.c', 'd'); -console.log(obj); -//=> { a: { b: { c: 'd' } } } -``` - -### Escaping - -**Escaping with backslashes** - -Prevent set-value from splitting on a dot by prefixing it with backslashes: - -```js -console.log(set({}, 'a\\.b.c', 'd')); -//=> { 'a.b': { c: 'd' } } - -console.log(set({}, 'a\\.b\\.c', 'd')); -//=> { 'a.b.c': 'd' } -``` - -**Escaping with double-quotes or single-quotes** - -Wrap double or single quotes around the string, or part of the string, that should not be split by set-value: - -```js -console.log(set({}, '"a.b".c', 'd')); -//=> { 'a.b': { c: 'd' } } - -console.log(set({}, "'a.b'.c", "d")); -//=> { 'a.b': { c: 'd' } } - -console.log(set({}, '"this/is/a/.file.path"', 'd')); -//=> { 'this/is/a/file.path': 'd' } -``` - -### Bracket support - -set-value does not split inside brackets or braces: - -```js -console.log(set({}, '[a.b].c', 'd')); -//=> { '[a.b]': { c: 'd' } } - -console.log(set({}, "(a.b).c", "d")); -//=> { '(a.b)': { c: 'd' } } - -console.log(set({}, ".c", "d")); -//=> { '': { c: 'd' } } - -console.log(set({}, "{a..b}.c", "d")); -//=> { '{a..b}': { c: 'd' } } -``` - -## History - -### v2.0.0 - -* Adds support for escaping with double or single quotes. See [escaping](#escaping) for examples. -* Will no longer split inside brackets or braces. See [bracket support](#bracket-support) for examples. - -If there are any regressions please create a [bug report](../../issues/new). Thanks! - -## About - -### Related projects - -* [assign-value](https://www.npmjs.com/package/assign-value): Assign a value or extend a deeply nested property of an object using object path… [more](https://github.com/jonschlinkert/assign-value) | [homepage](https://github.com/jonschlinkert/assign-value "Assign a value or extend a deeply nested property of an object using object path notation.") -* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value "Use property paths (`a.b.c`) to get a nested value from an object.") -* [has-value](https://www.npmjs.com/package/has-value): Returns true if a value exists, false if empty. Works with deeply nested values using… [more](https://github.com/jonschlinkert/has-value) | [homepage](https://github.com/jonschlinkert/has-value "Returns true if a value exists, false if empty. Works with deeply nested values using object paths.") -* [merge-value](https://www.npmjs.com/package/merge-value): Similar to assign-value but deeply merges object values or nested values using object path/dot notation. | [homepage](https://github.com/jonschlinkert/merge-value "Similar to assign-value but deeply merges object values or nested values using object path/dot notation.") -* [omit-value](https://www.npmjs.com/package/omit-value): Omit properties from an object or deeply nested property of an object using object path… [more](https://github.com/jonschlinkert/omit-value) | [homepage](https://github.com/jonschlinkert/omit-value "Omit properties from an object or deeply nested property of an object using object path notation.") -* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value "Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths.") -* [union-value](https://www.npmjs.com/package/union-value): Set an array of unique values as the property of an object. Supports setting deeply… [more](https://github.com/jonschlinkert/union-value) | [homepage](https://github.com/jonschlinkert/union-value "Set an array of unique values as the property of an object. Supports setting deeply nested properties using using object-paths/dot notation.") -* [unset-value](https://www.npmjs.com/package/unset-value): Delete nested properties from an object using dot notation. | [homepage](https://github.com/jonschlinkert/unset-value "Delete nested properties from an object using dot notation.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 59 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [vadimdemedes](https://github.com/vadimdemedes) | -| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 21, 2017._ \ No newline at end of file diff --git a/node_modules/set-value/index.js b/node_modules/set-value/index.js deleted file mode 100644 index 0b32e8fab..000000000 --- a/node_modules/set-value/index.js +++ /dev/null @@ -1,55 +0,0 @@ -/*! - * set-value - * - * Copyright (c) 2014-2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var split = require('split-string'); -var extend = require('extend-shallow'); -var isPlainObject = require('is-plain-object'); -var isObject = require('is-extendable'); - -module.exports = function(obj, prop, val) { - if (!isObject(obj)) { - return obj; - } - - if (Array.isArray(prop)) { - prop = [].concat.apply([], prop).join('.'); - } - - if (typeof prop !== 'string') { - return obj; - } - - var keys = split(prop, {sep: '.', brackets: true}).filter(isValidKey); - var len = keys.length; - var idx = -1; - var current = obj; - - while (++idx < len) { - var key = keys[idx]; - if (idx !== len - 1) { - if (!isObject(current[key])) { - current[key] = {}; - } - current = current[key]; - continue; - } - - if (isPlainObject(current[key]) && isPlainObject(val)) { - current[key] = extend({}, current[key], val); - } else { - current[key] = val; - } - } - - return obj; -}; - -function isValidKey(key) { - return key !== '__proto__' && key !== 'constructor' && key !== 'prototype'; -} diff --git a/node_modules/set-value/node_modules/extend-shallow/LICENSE b/node_modules/set-value/node_modules/extend-shallow/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/set-value/node_modules/extend-shallow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/set-value/node_modules/extend-shallow/README.md b/node_modules/set-value/node_modules/extend-shallow/README.md deleted file mode 100644 index cdc45d4ff..000000000 --- a/node_modules/set-value/node_modules/extend-shallow/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# extend-shallow [![NPM version](https://badge.fury.io/js/extend-shallow.svg)](http://badge.fury.io/js/extend-shallow) [![Build Status](https://travis-ci.org/jonschlinkert/extend-shallow.svg)](https://travis-ci.org/jonschlinkert/extend-shallow) - -> Extend an object with the properties of additional objects. node.js/javascript util. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i extend-shallow --save -``` - -## Usage - -```js -var extend = require('extend-shallow'); - -extend({a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -Pass an empty object to shallow clone: - -```js -var obj = {}; -extend(obj, {a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -## Related - -* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. -* [for-own](https://github.com/jonschlinkert/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) -* [for-in](https://github.com/jonschlinkert/for-in): Iterate over the own and inherited enumerable properties of an objecte, and return an object… [more](https://github.com/jonschlinkert/for-in) -* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. -* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. -* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 29, 2015._ \ No newline at end of file diff --git a/node_modules/set-value/node_modules/extend-shallow/index.js b/node_modules/set-value/node_modules/extend-shallow/index.js deleted file mode 100644 index 92a067fcc..000000000 --- a/node_modules/set-value/node_modules/extend-shallow/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var isObject = require('is-extendable'); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} diff --git a/node_modules/set-value/node_modules/extend-shallow/package.json b/node_modules/set-value/node_modules/extend-shallow/package.json deleted file mode 100644 index ee63557ab..000000000 --- a/node_modules/set-value/node_modules/extend-shallow/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "extend-shallow@2.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "extend-shallow@2.0.1", - "_id": "extend-shallow@2.0.1", - "_inBundle": false, - "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "_location": "/set-value/extend-shallow", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "extend-shallow@2.0.1", - "name": "extend-shallow", - "escapedName": "extend-shallow", - "rawSpec": "2.0.1", - "saveSpec": null, - "fetchSpec": "2.0.1" - }, - "_requiredBy": [ - "/set-value" - ], - "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "_spec": "2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/extend-shallow/issues" - }, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "description": "Extend an object with the properties of additional objects. node.js/javascript util.", - "devDependencies": { - "array-slice": "^0.2.3", - "benchmarked": "^0.1.4", - "chalk": "^1.0.0", - "for-own": "^0.1.3", - "glob": "^5.0.12", - "is-plain-object": "^2.0.1", - "kind-of": "^2.0.0", - "minimist": "^1.1.1", - "mocha": "^2.2.5", - "should": "^7.0.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/extend-shallow", - "keywords": [ - "assign", - "extend", - "javascript", - "js", - "keys", - "merge", - "obj", - "object", - "prop", - "properties", - "property", - "props", - "shallow", - "util", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "extend-shallow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/extend-shallow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.1" -} diff --git a/node_modules/set-value/package.json b/node_modules/set-value/package.json deleted file mode 100644 index 73a77679d..000000000 --- a/node_modules/set-value/package.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "_args": [ - [ - "set-value@2.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "set-value@2.0.1", - "_id": "set-value@2.0.1", - "_inBundle": false, - "_integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "_location": "/set-value", - "_phantomChildren": { - "is-extendable": "0.1.1" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "set-value@2.0.1", - "name": "set-value", - "escapedName": "set-value", - "rawSpec": "2.0.1", - "saveSpec": null, - "fetchSpec": "2.0.1" - }, - "_requiredBy": [ - "/cache-base", - "/union-value" - ], - "_resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "_spec": "2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/set-value/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - }, - { - "name": "Vadim Demedes", - "url": "https://vadimdemedes.com" - } - ], - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "description": "Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths.", - "devDependencies": { - "gulp-format-md": "^0.1.12", - "mocha": "^3.4.2" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/set-value", - "keywords": [ - "get", - "has", - "hasown", - "key", - "keys", - "nested", - "notation", - "object", - "prop", - "properties", - "property", - "props", - "set", - "value", - "values" - ], - "license": "MIT", - "main": "index.js", - "name": "set-value", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/set-value.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "assign-value", - "get-value", - "has-value", - "merge-value", - "omit-value", - "set-value", - "union-value", - "unset-value" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "2.0.1" -} diff --git a/node_modules/snapdragon-node/LICENSE b/node_modules/snapdragon-node/LICENSE deleted file mode 100644 index 9a1c85675..000000000 --- a/node_modules/snapdragon-node/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/snapdragon-node/README.md b/node_modules/snapdragon-node/README.md deleted file mode 100644 index 2300a3cd7..000000000 --- a/node_modules/snapdragon-node/README.md +++ /dev/null @@ -1,453 +0,0 @@ -# snapdragon-node [![NPM version](https://img.shields.io/npm/v/snapdragon-node.svg?style=flat)](https://www.npmjs.com/package/snapdragon-node) [![NPM monthly downloads](https://img.shields.io/npm/dm/snapdragon-node.svg?style=flat)](https://npmjs.org/package/snapdragon-node) [![NPM total downloads](https://img.shields.io/npm/dt/snapdragon-node.svg?style=flat)](https://npmjs.org/package/snapdragon-node) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/snapdragon-node.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/snapdragon-node) - -> Snapdragon utility for creating a new AST node in custom code, such as plugins. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save snapdragon-node -``` - -## Usage - -With [snapdragon](https://github.com/jonschlinkert/snapdragon) v0.9.0 and higher you can use `this.node()` to create a new `Node`, whenever it makes sense. - -```js -var Node = require('snapdragon-node'); -var Snapdragon = require('snapdragon'); -var snapdragon = new Snapdragon(); - -// example usage inside a parser visitor function -snapdragon.parser.set('foo', function() { - // get the current "start" position - var pos = this.position(); - - // returns the match if regex matches the substring - // at the current position on `parser.input` - var match = this.match(/foo/); - if (match) { - // call "pos" on the node, to set the start and end - // positions, and return the node to push it onto the AST - // (snapdragon will push the node onto the correct - // nodes array, based on the stack) - return pos(new Node({type: 'bar', val: match[0]})); - } -}); -``` - -## API - -### [Node](index.js#L22) - -Create a new AST `Node` with the given `val` and `type`. - -**Params** - -* `val` **{String|Object}**: Pass a matched substring, or an object to merge onto the node. -* `type` **{String}**: The node type to use when `val` is a string. -* `returns` **{Object}**: node instance - -**Example** - -```js -var node = new Node('*', 'Star'); -var node = new Node({type: 'star', val: '*'}); -``` - -### [.isNode](index.js#L61) - -Returns true if the given value is a node. - -**Params** - -* `node` **{Object}** -* `returns` **{Boolean}** - -**Example** - -```js -var Node = require('snapdragon-node'); -var node = new Node({type: 'foo'}); -console.log(Node.isNode(node)); //=> true -console.log(Node.isNode({})); //=> false -``` - -### [.define](index.js#L80) - -Define a non-enumberable property on the node instance. Useful for adding properties that shouldn't be extended or visible during debugging. - -**Params** - -* `name` **{String}** -* `val` **{any}** -* `returns` **{Object}**: returns the node instance - -**Example** - -```js -var node = new Node(); -node.define('foo', 'something non-enumerable'); -``` - -### [.isEmpty](index.js#L100) - -Returns true if `node.val` is an empty string, or `node.nodes` does not contain any non-empty text nodes. - -**Params** - -* `fn` **{Function}**: (optional) Filter function that is called on `node` and/or child nodes. `isEmpty` will return false immediately when the filter function returns false on any nodes. -* `returns` **{Boolean}** - -**Example** - -```js -var node = new Node({type: 'text'}); -node.isEmpty(); //=> true -node.val = 'foo'; -node.isEmpty(); //=> false -``` - -### [.push](index.js#L118) - -Given node `foo` and node `bar`, push node `bar` onto `foo.nodes`, and set `foo` as `bar.parent`. - -**Params** - -* `node` **{Object}** -* `returns` **{Number}**: Returns the length of `node.nodes` - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -foo.push(bar); -``` - -### [.unshift](index.js#L140) - -Given node `foo` and node `bar`, unshift node `bar` onto `foo.nodes`, and set `foo` as `bar.parent`. - -**Params** - -* `node` **{Object}** -* `returns` **{Number}**: Returns the length of `node.nodes` - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -foo.unshift(bar); -``` - -### [.pop](index.js#L167) - -Pop a node from `node.nodes`. - -* `returns` **{Number}**: Returns the popped `node` - -**Example** - -```js -var node = new Node({type: 'foo'}); -node.push(new Node({type: 'a'})); -node.push(new Node({type: 'b'})); -node.push(new Node({type: 'c'})); -node.push(new Node({type: 'd'})); -console.log(node.nodes.length); -//=> 4 -node.pop(); -console.log(node.nodes.length); -//=> 3 -``` - -### [.shift](index.js#L190) - -Shift a node from `node.nodes`. - -* `returns` **{Object}**: Returns the shifted `node` - -**Example** - -```js -var node = new Node({type: 'foo'}); -node.push(new Node({type: 'a'})); -node.push(new Node({type: 'b'})); -node.push(new Node({type: 'c'})); -node.push(new Node({type: 'd'})); -console.log(node.nodes.length); -//=> 4 -node.shift(); -console.log(node.nodes.length); -//=> 3 -``` - -### [.remove](index.js#L205) - -Remove `node` from `node.nodes`. - -**Params** - -* `node` **{Object}** -* `returns` **{Object}**: Returns the removed node. - -**Example** - -```js -node.remove(childNode); -``` - -### [.find](index.js#L231) - -Get the first child node from `node.nodes` that matches the given `type`. If `type` is a number, the child node at that index is returned. - -**Params** - -* `type` **{String}** -* `returns` **{Object}**: Returns a child node or undefined. - -**Example** - -```js -var child = node.find(1); //<= index of the node to get -var child = node.find('foo'); //<= node.type of a child node -var child = node.find(/^(foo|bar)$/); //<= regex to match node.type -var child = node.find(['foo', 'bar']); //<= array of node.type(s) -``` - -### [.isType](index.js#L249) - -Return true if the node is the given `type`. - -**Params** - -* `type` **{String}** -* `returns` **{Boolean}** - -**Example** - -```js -var node = new Node({type: 'bar'}); -cosole.log(node.isType('foo')); // false -cosole.log(node.isType(/^(foo|bar)$/)); // true -cosole.log(node.isType(['foo', 'bar'])); // true -``` - -### [.hasType](index.js#L270) - -Return true if the `node.nodes` has the given `type`. - -**Params** - -* `type` **{String}** -* `returns` **{Boolean}** - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -foo.push(bar); - -cosole.log(foo.hasType('qux')); // false -cosole.log(foo.hasType(/^(qux|bar)$/)); // true -cosole.log(foo.hasType(['qux', 'bar'])); // true -``` - -* `returns` **{Array}** - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -var baz = new Node({type: 'baz'}); -foo.push(bar); -foo.push(baz); - -console.log(bar.siblings.length) // 2 -console.log(baz.siblings.length) // 2 -``` - -* `returns` **{Number}** - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -var baz = new Node({type: 'baz'}); -var qux = new Node({type: 'qux'}); -foo.push(bar); -foo.push(baz); -foo.unshift(qux); - -console.log(bar.index) // 1 -console.log(baz.index) // 2 -console.log(qux.index) // 0 -``` - -* `returns` **{Object}** - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -var baz = new Node({type: 'baz'}); -foo.push(bar); -foo.push(baz); - -console.log(baz.prev.type) // 'bar' -``` - -* `returns` **{Object}** - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -var baz = new Node({type: 'baz'}); -foo.push(bar); -foo.push(baz); - -console.log(bar.siblings.length) // 2 -console.log(baz.siblings.length) // 2 -``` - -* `returns` **{Object}**: The first node, or undefiend - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -var baz = new Node({type: 'baz'}); -var qux = new Node({type: 'qux'}); -foo.push(bar); -foo.push(baz); -foo.push(qux); - -console.log(foo.first.type) // 'bar' -``` - -* `returns` **{Object}**: The last node, or undefiend - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -var baz = new Node({type: 'baz'}); -var qux = new Node({type: 'qux'}); -foo.push(bar); -foo.push(baz); -foo.push(qux); - -console.log(foo.last.type) // 'qux' -``` - -* `returns` **{Object}**: The last node, or undefiend - -**Example** - -```js -var foo = new Node({type: 'foo'}); -var bar = new Node({type: 'bar'}); -var baz = new Node({type: 'baz'}); -var qux = new Node({type: 'qux'}); -foo.push(bar); -foo.push(baz); -foo.push(qux); - -console.log(foo.last.type) // 'qux' -``` - -## Release history - -Changelog entries are classified using the following labels from [keep-a-changelog](https://github.com/olivierlacan/keep-a-changelog): - -* `added`: for new features -* `changed`: for changes in existing functionality -* `deprecated`: for once-stable features removed in upcoming releases -* `removed`: for deprecated features removed in this release -* `fixed`: for any bug fixes - -Custom labels used in this changelog: - -* `dependencies`: bumps dependencies -* `housekeeping`: code re-organization, minor edits, or other changes that don't fit in one of the other categories. - -### [2.0.0] - 2017-05-01 - -**Changed** - -* `.unshiftNode` was renamed to [.unshift](#unshift) -* `.pushNode` was renamed to [.push](#push) -* `.getNode` was renamed to [.find](#find) - -**Added** - -* [.isNode](#isNode) -* [.isEmpty](#isEmpty) -* [.pop](#pop) -* [.shift](#shift) -* [.remove](#remove) - -### [0.1.0] - -First release. - -## About - -### Related projects - -* [breakdance](https://www.npmjs.com/package/breakdance): Breakdance is a node.js library for converting HTML to markdown. Highly pluggable, flexible and easy… [more](http://breakdance.io) | [homepage](http://breakdance.io "Breakdance is a node.js library for converting HTML to markdown. Highly pluggable, flexible and easy to use. It's time for your markup to get down.") -* [snapdragon-capture](https://www.npmjs.com/package/snapdragon-capture): Snapdragon plugin that adds a capture method to the parser instance. | [homepage](https://github.com/jonschlinkert/snapdragon-capture "Snapdragon plugin that adds a capture method to the parser instance.") -* [snapdragon-cheerio](https://www.npmjs.com/package/snapdragon-cheerio): Snapdragon plugin for converting a cheerio AST to a snapdragon AST. | [homepage](https://github.com/jonschlinkert/snapdragon-cheerio "Snapdragon plugin for converting a cheerio AST to a snapdragon AST.") -* [snapdragon-util](https://www.npmjs.com/package/snapdragon-util): Utilities for the snapdragon parser/compiler. | [homepage](https://github.com/jonschlinkert/snapdragon-util "Utilities for the snapdragon parser/compiler.") -* [snapdragon](https://www.npmjs.com/package/snapdragon): Easy-to-use plugin system for creating powerful, fast and versatile parsers and compilers, with built-in source-map… [more](https://github.com/jonschlinkert/snapdragon) | [homepage](https://github.com/jonschlinkert/snapdragon "Easy-to-use plugin system for creating powerful, fast and versatile parsers and compilers, with built-in source-map support.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 25, 2017._ \ No newline at end of file diff --git a/node_modules/snapdragon-node/index.js b/node_modules/snapdragon-node/index.js deleted file mode 100644 index 0f66ff5a4..000000000 --- a/node_modules/snapdragon-node/index.js +++ /dev/null @@ -1,492 +0,0 @@ -'use strict'; - -var isObject = require('isobject'); -var define = require('define-property'); -var utils = require('snapdragon-util'); -var ownNames; - -/** - * Create a new AST `Node` with the given `val` and `type`. - * - * ```js - * var node = new Node('*', 'Star'); - * var node = new Node({type: 'star', val: '*'}); - * ``` - * @name Node - * @param {String|Object} `val` Pass a matched substring, or an object to merge onto the node. - * @param {String} `type` The node type to use when `val` is a string. - * @return {Object} node instance - * @api public - */ - -function Node(val, type, parent) { - if (typeof type !== 'string') { - parent = type; - type = null; - } - - define(this, 'parent', parent); - define(this, 'isNode', true); - define(this, 'expect', null); - - if (typeof type !== 'string' && isObject(val)) { - lazyKeys(); - var keys = Object.keys(val); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (ownNames.indexOf(key) === -1) { - this[key] = val[key]; - } - } - } else { - this.type = type; - this.val = val; - } -} - -/** - * Returns true if the given value is a node. - * - * ```js - * var Node = require('snapdragon-node'); - * var node = new Node({type: 'foo'}); - * console.log(Node.isNode(node)); //=> true - * console.log(Node.isNode({})); //=> false - * ``` - * @param {Object} `node` - * @returns {Boolean} - * @api public - */ - -Node.isNode = function(node) { - return utils.isNode(node); -}; - -/** - * Define a non-enumberable property on the node instance. - * Useful for adding properties that shouldn't be extended - * or visible during debugging. - * - * ```js - * var node = new Node(); - * node.define('foo', 'something non-enumerable'); - * ``` - * @param {String} `name` - * @param {any} `val` - * @return {Object} returns the node instance - * @api public - */ - -Node.prototype.define = function(name, val) { - define(this, name, val); - return this; -}; - -/** - * Returns true if `node.val` is an empty string, or `node.nodes` does - * not contain any non-empty text nodes. - * - * ```js - * var node = new Node({type: 'text'}); - * node.isEmpty(); //=> true - * node.val = 'foo'; - * node.isEmpty(); //=> false - * ``` - * @param {Function} `fn` (optional) Filter function that is called on `node` and/or child nodes. `isEmpty` will return false immediately when the filter function returns false on any nodes. - * @return {Boolean} - * @api public - */ - -Node.prototype.isEmpty = function(fn) { - return utils.isEmpty(this, fn); -}; - -/** - * Given node `foo` and node `bar`, push node `bar` onto `foo.nodes`, and - * set `foo` as `bar.parent`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * foo.push(bar); - * ``` - * @param {Object} `node` - * @return {Number} Returns the length of `node.nodes` - * @api public - */ - -Node.prototype.push = function(node) { - assert(Node.isNode(node), 'expected node to be an instance of Node'); - define(node, 'parent', this); - - this.nodes = this.nodes || []; - return this.nodes.push(node); -}; - -/** - * Given node `foo` and node `bar`, unshift node `bar` onto `foo.nodes`, and - * set `foo` as `bar.parent`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * foo.unshift(bar); - * ``` - * @param {Object} `node` - * @return {Number} Returns the length of `node.nodes` - * @api public - */ - -Node.prototype.unshift = function(node) { - assert(Node.isNode(node), 'expected node to be an instance of Node'); - define(node, 'parent', this); - - this.nodes = this.nodes || []; - return this.nodes.unshift(node); -}; - -/** - * Pop a node from `node.nodes`. - * - * ```js - * var node = new Node({type: 'foo'}); - * node.push(new Node({type: 'a'})); - * node.push(new Node({type: 'b'})); - * node.push(new Node({type: 'c'})); - * node.push(new Node({type: 'd'})); - * console.log(node.nodes.length); - * //=> 4 - * node.pop(); - * console.log(node.nodes.length); - * //=> 3 - * ``` - * @return {Number} Returns the popped `node` - * @api public - */ - -Node.prototype.pop = function() { - return this.nodes && this.nodes.pop(); -}; - -/** - * Shift a node from `node.nodes`. - * - * ```js - * var node = new Node({type: 'foo'}); - * node.push(new Node({type: 'a'})); - * node.push(new Node({type: 'b'})); - * node.push(new Node({type: 'c'})); - * node.push(new Node({type: 'd'})); - * console.log(node.nodes.length); - * //=> 4 - * node.shift(); - * console.log(node.nodes.length); - * //=> 3 - * ``` - * @return {Object} Returns the shifted `node` - * @api public - */ - -Node.prototype.shift = function() { - return this.nodes && this.nodes.shift(); -}; - -/** - * Remove `node` from `node.nodes`. - * - * ```js - * node.remove(childNode); - * ``` - * @param {Object} `node` - * @return {Object} Returns the removed node. - * @api public - */ - -Node.prototype.remove = function(node) { - assert(Node.isNode(node), 'expected node to be an instance of Node'); - this.nodes = this.nodes || []; - var idx = node.index; - if (idx !== -1) { - node.index = -1; - return this.nodes.splice(idx, 1); - } - return null; -}; - -/** - * Get the first child node from `node.nodes` that matches the given `type`. - * If `type` is a number, the child node at that index is returned. - * - * ```js - * var child = node.find(1); //<= index of the node to get - * var child = node.find('foo'); //<= node.type of a child node - * var child = node.find(/^(foo|bar)$/); //<= regex to match node.type - * var child = node.find(['foo', 'bar']); //<= array of node.type(s) - * ``` - * @param {String} `type` - * @return {Object} Returns a child node or undefined. - * @api public - */ - -Node.prototype.find = function(type) { - return utils.findNode(this.nodes, type); -}; - -/** - * Return true if the node is the given `type`. - * - * ```js - * var node = new Node({type: 'bar'}); - * cosole.log(node.isType('foo')); // false - * cosole.log(node.isType(/^(foo|bar)$/)); // true - * cosole.log(node.isType(['foo', 'bar'])); // true - * ``` - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -Node.prototype.isType = function(type) { - return utils.isType(this, type); -}; - -/** - * Return true if the `node.nodes` has the given `type`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * foo.push(bar); - * - * cosole.log(foo.hasType('qux')); // false - * cosole.log(foo.hasType(/^(qux|bar)$/)); // true - * cosole.log(foo.hasType(['qux', 'bar'])); // true - * ``` - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -Node.prototype.hasType = function(type) { - return utils.hasType(this, type); -}; - -/** - * Get the siblings array, or `null` if it doesn't exist. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * foo.push(bar); - * foo.push(baz); - * - * console.log(bar.siblings.length) // 2 - * console.log(baz.siblings.length) // 2 - * ``` - * @return {Array} - * @api public - */ - -Object.defineProperty(Node.prototype, 'siblings', { - set: function() { - throw new Error('node.siblings is a getter and cannot be defined'); - }, - get: function() { - return this.parent ? this.parent.nodes : null; - } -}); - -/** - * Get the node's current index from `node.parent.nodes`. - * This should always be correct, even when the parent adds nodes. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * var qux = new Node({type: 'qux'}); - * foo.push(bar); - * foo.push(baz); - * foo.unshift(qux); - * - * console.log(bar.index) // 1 - * console.log(baz.index) // 2 - * console.log(qux.index) // 0 - * ``` - * @return {Number} - * @api public - */ - -Object.defineProperty(Node.prototype, 'index', { - set: function(index) { - define(this, 'idx', index); - }, - get: function() { - if (!Array.isArray(this.siblings)) { - return -1; - } - var tok = this.idx !== -1 ? this.siblings[this.idx] : null; - if (tok !== this) { - this.idx = this.siblings.indexOf(this); - } - return this.idx; - } -}); - -/** - * Get the previous node from the siblings array or `null`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * foo.push(bar); - * foo.push(baz); - * - * console.log(baz.prev.type) // 'bar' - * ``` - * @return {Object} - * @api public - */ - -Object.defineProperty(Node.prototype, 'prev', { - set: function() { - throw new Error('node.prev is a getter and cannot be defined'); - }, - get: function() { - if (Array.isArray(this.siblings)) { - return this.siblings[this.index - 1] || this.parent.prev; - } - return null; - } -}); - -/** - * Get the siblings array, or `null` if it doesn't exist. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * foo.push(bar); - * foo.push(baz); - * - * console.log(bar.siblings.length) // 2 - * console.log(baz.siblings.length) // 2 - * ``` - * @return {Object} - * @api public - */ - -Object.defineProperty(Node.prototype, 'next', { - set: function() { - throw new Error('node.next is a getter and cannot be defined'); - }, - get: function() { - if (Array.isArray(this.siblings)) { - return this.siblings[this.index + 1] || this.parent.next; - } - return null; - } -}); - -/** - * Get the first node from `node.nodes`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * var qux = new Node({type: 'qux'}); - * foo.push(bar); - * foo.push(baz); - * foo.push(qux); - * - * console.log(foo.first.type) // 'bar' - * ``` - * @return {Object} The first node, or undefiend - * @api public - */ - -Object.defineProperty(Node.prototype, 'first', { - get: function() { - return this.nodes ? this.nodes[0] : null; - } -}); - -/** - * Get the last node from `node.nodes`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * var qux = new Node({type: 'qux'}); - * foo.push(bar); - * foo.push(baz); - * foo.push(qux); - * - * console.log(foo.last.type) // 'qux' - * ``` - * @return {Object} The last node, or undefiend - * @api public - */ - -Object.defineProperty(Node.prototype, 'last', { - get: function() { - return this.nodes ? utils.last(this.nodes) : null; - } -}); - -/** - * Get the last node from `node.nodes`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * var qux = new Node({type: 'qux'}); - * foo.push(bar); - * foo.push(baz); - * foo.push(qux); - * - * console.log(foo.last.type) // 'qux' - * ``` - * @return {Object} The last node, or undefiend - * @api public - */ - -Object.defineProperty(Node.prototype, 'scope', { - get: function() { - if (this.isScope !== true) { - return this.parent ? this.parent.scope : this; - } - return this; - } -}); - -/** - * Get own property names from Node prototype, but only the - * first time `Node` is instantiated - */ - -function lazyKeys() { - if (!ownNames) { - ownNames = Object.getOwnPropertyNames(Node.prototype); - } -} - -/** - * Simplified assertion. Throws an error is `val` is falsey. - */ - -function assert(val, message) { - if (!val) throw new Error(message); -} - -/** - * Expose `Node` - */ - -exports = module.exports = Node; diff --git a/node_modules/snapdragon-node/node_modules/define-property/LICENSE b/node_modules/snapdragon-node/node_modules/define-property/LICENSE deleted file mode 100644 index ec85897eb..000000000 --- a/node_modules/snapdragon-node/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, 2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/snapdragon-node/node_modules/define-property/README.md b/node_modules/snapdragon-node/node_modules/define-property/README.md deleted file mode 100644 index 2f1af05f3..000000000 --- a/node_modules/snapdragon-node/node_modules/define-property/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# define-property [![NPM version](https://img.shields.io/npm/v/define-property.svg?style=flat)](https://www.npmjs.com/package/define-property) [![NPM monthly downloads](https://img.shields.io/npm/dm/define-property.svg?style=flat)](https://npmjs.org/package/define-property) [![NPM total downloads](https://img.shields.io/npm/dt/define-property.svg?style=flat)](https://npmjs.org/package/define-property) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/define-property.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/define-property) - -> Define a non-enumerable property on an object. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save define-property -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add define-property -``` - -## Usage - -**Params** - -* `obj`: The object on which to define the property. -* `prop`: The name of the property to be defined or modified. -* `descriptor`: The descriptor for the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**get/set** - -```js -define(obj, 'foo', { - get: function() {}, - set: function() {} -}); -``` - -## About - -### Related projects - -* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.") -* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.") -* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep "Recursively merge values in a javascript object.") -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 20, 2017._ \ No newline at end of file diff --git a/node_modules/snapdragon-node/node_modules/define-property/index.js b/node_modules/snapdragon-node/node_modules/define-property/index.js deleted file mode 100644 index 27c19ebf6..000000000 --- a/node_modules/snapdragon-node/node_modules/define-property/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var isDescriptor = require('is-descriptor'); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; diff --git a/node_modules/snapdragon-node/node_modules/define-property/package.json b/node_modules/snapdragon-node/node_modules/define-property/package.json deleted file mode 100644 index 4f4aa0e92..000000000 --- a/node_modules/snapdragon-node/node_modules/define-property/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "define-property@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "define-property@1.0.0", - "_id": "define-property@1.0.0", - "_inBundle": false, - "_integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "_location": "/snapdragon-node/define-property", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "define-property@1.0.0", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/snapdragon-node" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "description": "Define a non-enumerable property on an object.", - "devDependencies": { - "gulp-format-md": "^0.1.12", - "mocha": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "extend-shallow", - "merge-deep", - "assign-deep", - "mixin-deep" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/LICENSE b/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/README.md b/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/README.md deleted file mode 100644 index d198e1f05..000000000 --- a/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/README.md +++ /dev/null @@ -1,144 +0,0 @@ -# is-accessor-descriptor [![NPM version](https://img.shields.io/npm/v/is-accessor-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-accessor-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-accessor-descriptor.svg?style=flat)](https://npmjs.org/package/is-accessor-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-accessor-descriptor.svg?style=flat)](https://npmjs.org/package/is-accessor-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-accessor-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-accessor-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-accessor-descriptor -``` - -## Usage - -```js -var isAccessor = require('is-accessor-descriptor'); - -isAccessor({get: function() {}}); -//=> true -``` - -You may also pass an object and property name to check if the property is an accessor: - -```js -isAccessor(foo, 'bar'); -``` - -## Examples - -`false` when not an object - -```js -isAccessor('a') -isAccessor(null) -isAccessor([]) -//=> false -``` - -`true` when the object has valid properties - -and the properties all have the correct JavaScript types: - -```js -isAccessor({get: noop, set: noop}) -isAccessor({get: noop}) -isAccessor({set: noop}) -//=> true -``` - -`false` when the object has invalid properties - -```js -isAccessor({get: noop, set: noop, bar: 'baz'}) -isAccessor({get: noop, writable: true}) -isAccessor({get: noop, value: true}) -//=> false -``` - -`false` when an accessor is not a function - -```js -isAccessor({get: noop, set: 'baz'}) -isAccessor({get: 'foo', set: noop}) -isAccessor({get: 'foo', bar: 'baz'}) -isAccessor({get: 'foo', set: 'baz'}) -//=> false -``` - -`false` when a value is not the correct type - -```js -isAccessor({get: noop, set: noop, enumerable: 'foo'}) -isAccessor({set: noop, configurable: 'foo'}) -isAccessor({get: noop, configurable: 'foo'}) -//=> false -``` - -## About - -
          -Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
          - -
          -Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
          - -
          -Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
          - -### Related projects - -You might also be interested in these projects: - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 22 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [realityking](https://github.com/realityking) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._ \ No newline at end of file diff --git a/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/index.js b/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/index.js deleted file mode 100644 index d2e6fe8b9..000000000 --- a/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - * is-accessor-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -// accessor descriptor properties -var accessor = { - get: 'function', - set: 'function', - configurable: 'boolean', - enumerable: 'boolean' -}; - -function isAccessorDescriptor(obj, prop) { - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (typeOf(obj) !== 'object') { - return false; - } - - if (has(obj, 'value') || has(obj, 'writable')) { - return false; - } - - if (!has(obj, 'get') || typeof obj.get !== 'function') { - return false; - } - - // tldr: it's valid to have "set" be undefined - // "set" might be undefined if `Object.getOwnPropertyDescriptor` - // was used to get the value, and only `get` was defined by the user - if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { - return false; - } - - for (var key in obj) { - if (!accessor.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === accessor[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -} - -function has(obj, key) { - return {}.hasOwnProperty.call(obj, key); -} - -/** - * Expose `isAccessorDescriptor` - */ - -module.exports = isAccessorDescriptor; diff --git a/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/package.json b/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/package.json deleted file mode 100644 index 60d2f784d..000000000 --- a/node_modules/snapdragon-node/node_modules/is-accessor-descriptor/package.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "_args": [ - [ - "is-accessor-descriptor@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-accessor-descriptor@1.0.0", - "_id": "is-accessor-descriptor@1.0.0", - "_inBundle": false, - "_integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "_location": "/snapdragon-node/is-accessor-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-accessor-descriptor@1.0.0", - "name": "is-accessor-descriptor", - "escapedName": "is-accessor-descriptor", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/snapdragon-node/is-descriptor" - ], - "_resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Rouven Weßling", - "url": "www.rouvenwessling.de" - } - ], - "dependencies": { - "kind-of": "^6.0.0" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-accessor-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-accessor-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "is-plain-object", - "isobject" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/snapdragon-node/node_modules/is-data-descriptor/LICENSE b/node_modules/snapdragon-node/node_modules/is-data-descriptor/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/snapdragon-node/node_modules/is-data-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/snapdragon-node/node_modules/is-data-descriptor/README.md b/node_modules/snapdragon-node/node_modules/is-data-descriptor/README.md deleted file mode 100644 index 42b071446..000000000 --- a/node_modules/snapdragon-node/node_modules/is-data-descriptor/README.md +++ /dev/null @@ -1,161 +0,0 @@ -# is-data-descriptor [![NPM version](https://img.shields.io/npm/v/is-data-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-data-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-data-descriptor.svg?style=flat)](https://npmjs.org/package/is-data-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-data-descriptor.svg?style=flat)](https://npmjs.org/package/is-data-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-data-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-data-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript data descriptor. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-data-descriptor -``` - -## Usage - -```js -var isDataDesc = require('is-data-descriptor'); -``` - -## Examples - -`true` when the descriptor has valid properties with valid values. - -```js -// `value` can be anything -isDataDesc({value: 'foo'}) -isDataDesc({value: function() {}}) -isDataDesc({value: true}) -//=> true -``` - -`false` when not an object - -```js -isDataDesc('a') -//=> false -isDataDesc(null) -//=> false -isDataDesc([]) -//=> false -``` - -`false` when the object has invalid properties - -```js -isDataDesc({value: 'foo', bar: 'baz'}) -//=> false -isDataDesc({value: 'foo', bar: 'baz'}) -//=> false -isDataDesc({value: 'foo', get: function(){}}) -//=> false -isDataDesc({get: function(){}, value: 'foo'}) -//=> false -``` - -`false` when a value is not the correct type - -```js -isDataDesc({value: 'foo', enumerable: 'foo'}) -//=> false -isDataDesc({value: 'foo', configurable: 'foo'}) -//=> false -isDataDesc({value: 'foo', writable: 'foo'}) -//=> false -``` - -## Valid properties - -The only valid data descriptor properties are the following: - -* `configurable` (required) -* `enumerable` (required) -* `value` (optional) -* `writable` (optional) - -To be a valid data descriptor, either `value` or `writable` must be defined. - -**Invalid properties** - -A descriptor may have additional _invalid_ properties (an error will **not** be thrown). - -```js -var foo = {}; - -Object.defineProperty(foo, 'bar', { - enumerable: true, - whatever: 'blah', // invalid, but doesn't cause an error - get: function() { - return 'baz'; - } -}); - -console.log(foo.bar); -//=> 'baz' -``` - -## About - -
          -Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
          - -
          -Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
          - -
          -Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
          - -### Related projects - -You might also be interested in these projects: - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 21 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [realityking](https://github.com/realityking) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._ \ No newline at end of file diff --git a/node_modules/snapdragon-node/node_modules/is-data-descriptor/index.js b/node_modules/snapdragon-node/node_modules/is-data-descriptor/index.js deleted file mode 100644 index cfeae3619..000000000 --- a/node_modules/snapdragon-node/node_modules/is-data-descriptor/index.js +++ /dev/null @@ -1,49 +0,0 @@ -/*! - * is-data-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -module.exports = function isDataDescriptor(obj, prop) { - // data descriptor properties - var data = { - configurable: 'boolean', - enumerable: 'boolean', - writable: 'boolean' - }; - - if (typeOf(obj) !== 'object') { - return false; - } - - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } - - if (!('value' in obj) && !('writable' in obj)) { - return false; - } - - for (var key in obj) { - if (key === 'value') continue; - - if (!data.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === data[key]) { - continue; - } - - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -}; diff --git a/node_modules/snapdragon-node/node_modules/is-data-descriptor/package.json b/node_modules/snapdragon-node/node_modules/is-data-descriptor/package.json deleted file mode 100644 index 02b99a6e5..000000000 --- a/node_modules/snapdragon-node/node_modules/is-data-descriptor/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_args": [ - [ - "is-data-descriptor@1.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-data-descriptor@1.0.0", - "_id": "is-data-descriptor@1.0.0", - "_inBundle": false, - "_integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "_location": "/snapdragon-node/is-data-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-data-descriptor@1.0.0", - "name": "is-data-descriptor", - "escapedName": "is-data-descriptor", - "rawSpec": "1.0.0", - "saveSpec": null, - "fetchSpec": "1.0.0" - }, - "_requiredBy": [ - "/snapdragon-node/is-descriptor" - ], - "_resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "_spec": "1.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-data-descriptor/issues" - }, - "contributors": [ - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Rouven Weßling", - "url": "www.rouvenwessling.de" - } - ], - "dependencies": { - "kind-of": "^6.0.0" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-data-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-data-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-data-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "isobject" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "1.0.0" -} diff --git a/node_modules/snapdragon-node/node_modules/is-descriptor/LICENSE b/node_modules/snapdragon-node/node_modules/is-descriptor/LICENSE deleted file mode 100644 index c0d7f1362..000000000 --- a/node_modules/snapdragon-node/node_modules/is-descriptor/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/snapdragon-node/node_modules/is-descriptor/README.md b/node_modules/snapdragon-node/node_modules/is-descriptor/README.md deleted file mode 100644 index 658e53301..000000000 --- a/node_modules/snapdragon-node/node_modules/is-descriptor/README.md +++ /dev/null @@ -1,193 +0,0 @@ -# is-descriptor [![NPM version](https://img.shields.io/npm/v/is-descriptor.svg?style=flat)](https://www.npmjs.com/package/is-descriptor) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-descriptor.svg?style=flat)](https://npmjs.org/package/is-descriptor) [![NPM total downloads](https://img.shields.io/npm/dt/is-descriptor.svg?style=flat)](https://npmjs.org/package/is-descriptor) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-descriptor.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-descriptor) - -> Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save is-descriptor -``` - -## Usage - -```js -var isDescriptor = require('is-descriptor'); - -isDescriptor({value: 'foo'}) -//=> true -isDescriptor({get: function(){}, set: function(){}}) -//=> true -isDescriptor({get: 'foo', set: function(){}}) -//=> false -``` - -You may also check for a descriptor by passing an object as the first argument and property name (`string`) as the second argument. - -```js -var obj = {}; -obj.foo = 'abc'; - -Object.defineProperty(obj, 'bar', { - value: 'xyz' -}); - -isDescriptor(obj, 'foo'); -//=> true -isDescriptor(obj, 'bar'); -//=> true -``` - -## Examples - -### value type - -`false` when not an object - -```js -isDescriptor('a'); -//=> false -isDescriptor(null); -//=> false -isDescriptor([]); -//=> false -``` - -### data descriptor - -`true` when the object has valid properties with valid values. - -```js -isDescriptor({value: 'foo'}); -//=> true -isDescriptor({value: noop}); -//=> true -``` - -`false` when the object has invalid properties - -```js -isDescriptor({value: 'foo', bar: 'baz'}); -//=> false -isDescriptor({value: 'foo', bar: 'baz'}); -//=> false -isDescriptor({value: 'foo', get: noop}); -//=> false -isDescriptor({get: noop, value: noop}); -//=> false -``` - -`false` when a value is not the correct type - -```js -isDescriptor({value: 'foo', enumerable: 'foo'}); -//=> false -isDescriptor({value: 'foo', configurable: 'foo'}); -//=> false -isDescriptor({value: 'foo', writable: 'foo'}); -//=> false -``` - -### accessor descriptor - -`true` when the object has valid properties with valid values. - -```js -isDescriptor({get: noop, set: noop}); -//=> true -isDescriptor({get: noop}); -//=> true -isDescriptor({set: noop}); -//=> true -``` - -`false` when the object has invalid properties - -```js -isDescriptor({get: noop, set: noop, bar: 'baz'}); -//=> false -isDescriptor({get: noop, writable: true}); -//=> false -isDescriptor({get: noop, value: true}); -//=> false -``` - -`false` when an accessor is not a function - -```js -isDescriptor({get: noop, set: 'baz'}); -//=> false -isDescriptor({get: 'foo', set: noop}); -//=> false -isDescriptor({get: 'foo', bar: 'baz'}); -//=> false -isDescriptor({get: 'foo', set: 'baz'}); -//=> false -``` - -`false` when a value is not the correct type - -```js -isDescriptor({get: noop, set: noop, enumerable: 'foo'}); -//=> false -isDescriptor({set: noop, configurable: 'foo'}); -//=> false -isDescriptor({get: noop, configurable: 'foo'}); -//=> false -``` - -## About - -### Related projects - -* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") -* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") -* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") -* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 24 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [doowb](https://github.com/doowb) | -| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 22, 2017._ \ No newline at end of file diff --git a/node_modules/snapdragon-node/node_modules/is-descriptor/index.js b/node_modules/snapdragon-node/node_modules/is-descriptor/index.js deleted file mode 100644 index c9b91d762..000000000 --- a/node_modules/snapdragon-node/node_modules/is-descriptor/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * is-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); -var isAccessor = require('is-accessor-descriptor'); -var isData = require('is-data-descriptor'); - -module.exports = function isDescriptor(obj, key) { - if (typeOf(obj) !== 'object') { - return false; - } - if ('get' in obj) { - return isAccessor(obj, key); - } - return isData(obj, key); -}; diff --git a/node_modules/snapdragon-node/node_modules/is-descriptor/package.json b/node_modules/snapdragon-node/node_modules/is-descriptor/package.json deleted file mode 100644 index b83fc8596..000000000 --- a/node_modules/snapdragon-node/node_modules/is-descriptor/package.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "_args": [ - [ - "is-descriptor@1.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "is-descriptor@1.0.2", - "_id": "is-descriptor@1.0.2", - "_inBundle": false, - "_integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "_location": "/snapdragon-node/is-descriptor", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "is-descriptor@1.0.2", - "name": "is-descriptor", - "escapedName": "is-descriptor", - "rawSpec": "1.0.2", - "saveSpec": null, - "fetchSpec": "1.0.2" - }, - "_requiredBy": [ - "/snapdragon-node/define-property" - ], - "_resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "_spec": "1.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/is-descriptor/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "url": "https://github.com/wtgtybhertgeghgtwtg" - } - ], - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/is-descriptor", - "keywords": [ - "accessor", - "check", - "data", - "descriptor", - "get", - "getter", - "is", - "keys", - "object", - "properties", - "property", - "set", - "setter", - "type", - "valid", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "is-descriptor", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/is-descriptor.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-accessor-descriptor", - "is-data-descriptor", - "is-descriptor", - "isobject" - ] - }, - "plugins": [ - "gulp-format-md" - ], - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.0.2" -} diff --git a/node_modules/snapdragon-node/package.json b/node_modules/snapdragon-node/package.json deleted file mode 100644 index 44dab7cee..000000000 --- a/node_modules/snapdragon-node/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_args": [ - [ - "snapdragon-node@2.1.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "snapdragon-node@2.1.1", - "_id": "snapdragon-node@2.1.1", - "_inBundle": false, - "_integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "_location": "/snapdragon-node", - "_phantomChildren": { - "kind-of": "6.0.3" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "snapdragon-node@2.1.1", - "name": "snapdragon-node", - "escapedName": "snapdragon-node", - "rawSpec": "2.1.1", - "saveSpec": null, - "fetchSpec": "2.1.1" - }, - "_requiredBy": [ - "/braces" - ], - "_resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "_spec": "2.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/snapdragon-node/issues" - }, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "description": "Snapdragon utility for creating a new AST node in custom code, such as plugins.", - "devDependencies": { - "gulp": "^3.9.1", - "gulp-eslint": "^4.0.0", - "gulp-format-md": "^0.1.12", - "gulp-istanbul": "^1.1.2", - "gulp-mocha": "^3.0.1", - "mocha": "^3.4.2", - "snapdragon": "^0.11.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/snapdragon-node", - "keywords": [ - "ast", - "compile", - "compiler", - "convert", - "node", - "parse", - "parser", - "plugin", - "render", - "snapdragon", - "snapdragonplugin", - "token", - "transform" - ], - "license": "MIT", - "main": "index.js", - "name": "snapdragon-node", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/snapdragon-node.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "breakdance", - "snapdragon", - "snapdragon-capture", - "snapdragon-cheerio", - "snapdragon-util" - ] - }, - "reflinks": [ - "verb", - "verb-generate-readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "2.1.1" -} diff --git a/node_modules/snapdragon-util/LICENSE b/node_modules/snapdragon-util/LICENSE deleted file mode 100644 index 9a1c85675..000000000 --- a/node_modules/snapdragon-util/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/snapdragon-util/README.md b/node_modules/snapdragon-util/README.md deleted file mode 100644 index b654e023d..000000000 --- a/node_modules/snapdragon-util/README.md +++ /dev/null @@ -1,807 +0,0 @@ -# snapdragon-util [![NPM version](https://img.shields.io/npm/v/snapdragon-util.svg?style=flat)](https://www.npmjs.com/package/snapdragon-util) [![NPM monthly downloads](https://img.shields.io/npm/dm/snapdragon-util.svg?style=flat)](https://npmjs.org/package/snapdragon-util) [![NPM total downloads](https://img.shields.io/npm/dt/snapdragon-util.svg?style=flat)](https://npmjs.org/package/snapdragon-util) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/snapdragon-util.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/snapdragon-util) - -> Utilities for the snapdragon parser/compiler. - -
          -Table of Contents - -- [Install](#install) -- [Usage](#usage) -- [API](#api) -- [Release history](#release-history) - * [[3.0.0] - 2017-05-01](#300---2017-05-01) - * [[0.1.0]](#010) -- [About](#about) - -
          - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save snapdragon-util -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add snapdragon-util -``` - -## Usage - -```js -var util = require('snapdragon-util'); -``` - -## API - -### [.isNode](index.js#L21) - -Returns true if the given value is a node. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Boolean}** - -**Example** - -```js -var Node = require('snapdragon-node'); -var node = new Node({type: 'foo'}); -console.log(utils.isNode(node)); //=> true -console.log(utils.isNode({})); //=> false -``` - -### [.noop](index.js#L37) - -Emit an empty string for the given `node`. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{undefined}** - -**Example** - -```js -// do nothing for beginning-of-string -snapdragon.compiler.set('bos', utils.noop); -``` - -### [.identity](index.js#L53) - -Appdend `node.val` to `compiler.output`, exactly as it was created by the parser. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{undefined}** - -**Example** - -```js -snapdragon.compiler.set('text', utils.identity); -``` - -### [.append](index.js#L76) - -Previously named `.emit`, this method appends the given `val` to `compiler.output` for the given node. Useful when you know what value should be appended advance, regardless of the actual value of `node.val`. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Function}**: Returns a compiler middleware function. - -**Example** - -```js -snapdragon.compiler - .set('i', function(node) { - this.mapVisit(node); - }) - .set('i.open', utils.append('')) - .set('i.close', utils.append('')) -``` - -### [.toNoop](index.js#L99) - -Used in compiler middleware, this onverts an AST node into an empty `text` node and deletes `node.nodes` if it exists. The advantage of this method is that, as opposed to completely removing the node, indices will not need to be re-calculated in sibling nodes, and nothing is appended to the output. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `nodes` **{Array}**: Optionally pass a new `nodes` value, to replace the existing `node.nodes` array. - -**Example** - -```js -utils.toNoop(node); -// convert `node.nodes` to the given value instead of deleting it -utils.toNoop(node, []); -``` - -### [.visit](index.js#L128) - -Visit `node` with the given `fn`. The built-in `.visit` method in snapdragon automatically calls registered compilers, this allows you to pass a visitor function. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `fn` **{Function}** -* `returns` **{Object}**: returns the node after recursively visiting all child nodes. - -**Example** - -```js -snapdragon.compiler.set('i', function(node) { - utils.visit(node, function(childNode) { - // do stuff with "childNode" - return childNode; - }); -}); -``` - -### [.mapVisit](index.js#L155) - -Map [visit](#visit) the given `fn` over `node.nodes`. This is called by [visit](#visit), use this method if you do not want `fn` to be called on the first node. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `options` **{Object}** -* `fn` **{Function}** -* `returns` **{Object}**: returns the node - -**Example** - -```js -snapdragon.compiler.set('i', function(node) { - utils.mapVisit(node, function(childNode) { - // do stuff with "childNode" - return childNode; - }); -}); -``` - -### [.addOpen](index.js#L194) - -Unshift an `*.open` node onto `node.nodes`. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `Node` **{Function}**: (required) Node constructor function from [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node). -* `filter` **{Function}**: Optionaly specify a filter function to exclude the node. -* `returns` **{Object}**: Returns the created opening node. - -**Example** - -```js -var Node = require('snapdragon-node'); -snapdragon.parser.set('brace', function(node) { - var match = this.match(/^{/); - if (match) { - var parent = new Node({type: 'brace'}); - utils.addOpen(parent, Node); - console.log(parent.nodes[0]): - // { type: 'brace.open', val: '' }; - - // push the parent "brace" node onto the stack - this.push(parent); - - // return the parent node, so it's also added to the AST - return brace; - } -}); -``` - -### [.addClose](index.js#L244) - -Push a `*.close` node onto `node.nodes`. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `Node` **{Function}**: (required) Node constructor function from [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node). -* `filter` **{Function}**: Optionaly specify a filter function to exclude the node. -* `returns` **{Object}**: Returns the created closing node. - -**Example** - -```js -var Node = require('snapdragon-node'); -snapdragon.parser.set('brace', function(node) { - var match = this.match(/^}/); - if (match) { - var parent = this.parent(); - if (parent.type !== 'brace') { - throw new Error('missing opening: ' + '}'); - } - - utils.addClose(parent, Node); - console.log(parent.nodes[parent.nodes.length - 1]): - // { type: 'brace.close', val: '' }; - - // no need to return a node, since the parent - // was already added to the AST - return; - } -}); -``` - -### [.wrapNodes](index.js#L274) - -Wraps the given `node` with `*.open` and `*.close` nodes. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `Node` **{Function}**: (required) Node constructor function from [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node). -* `filter` **{Function}**: Optionaly specify a filter function to exclude the node. -* `returns` **{Object}**: Returns the node - -### [.pushNode](index.js#L299) - -Push the given `node` onto `parent.nodes`, and set `parent` as `node.parent. - -**Params** - -* `parent` **{Object}** -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Object}**: Returns the child node - -**Example** - -```js -var parent = new Node({type: 'foo'}); -var node = new Node({type: 'bar'}); -utils.pushNode(parent, node); -console.log(parent.nodes[0].type) // 'bar' -console.log(node.parent.type) // 'foo' -``` - -### [.unshiftNode](index.js#L325) - -Unshift `node` onto `parent.nodes`, and set `parent` as `node.parent. - -**Params** - -* `parent` **{Object}** -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{undefined}** - -**Example** - -```js -var parent = new Node({type: 'foo'}); -var node = new Node({type: 'bar'}); -utils.unshiftNode(parent, node); -console.log(parent.nodes[0].type) // 'bar' -console.log(node.parent.type) // 'foo' -``` - -### [.popNode](index.js#L354) - -Pop the last `node` off of `parent.nodes`. The advantage of using this method is that it checks for `node.nodes` and works with any version of `snapdragon-node`. - -**Params** - -* `parent` **{Object}** -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Number|Undefined}**: Returns the length of `node.nodes` or undefined. - -**Example** - -```js -var parent = new Node({type: 'foo'}); -utils.pushNode(parent, new Node({type: 'foo'})); -utils.pushNode(parent, new Node({type: 'bar'})); -utils.pushNode(parent, new Node({type: 'baz'})); -console.log(parent.nodes.length); //=> 3 -utils.popNode(parent); -console.log(parent.nodes.length); //=> 2 -``` - -### [.shiftNode](index.js#L382) - -Shift the first `node` off of `parent.nodes`. The advantage of using this method is that it checks for `node.nodes` and works with any version of `snapdragon-node`. - -**Params** - -* `parent` **{Object}** -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Number|Undefined}**: Returns the length of `node.nodes` or undefined. - -**Example** - -```js -var parent = new Node({type: 'foo'}); -utils.pushNode(parent, new Node({type: 'foo'})); -utils.pushNode(parent, new Node({type: 'bar'})); -utils.pushNode(parent, new Node({type: 'baz'})); -console.log(parent.nodes.length); //=> 3 -utils.shiftNode(parent); -console.log(parent.nodes.length); //=> 2 -``` - -### [.removeNode](index.js#L409) - -Remove the specified `node` from `parent.nodes`. - -**Params** - -* `parent` **{Object}** -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Object|undefined}**: Returns the removed node, if successful, or undefined if it does not exist on `parent.nodes`. - -**Example** - -```js -var parent = new Node({type: 'abc'}); -var foo = new Node({type: 'foo'}); -utils.pushNode(parent, foo); -utils.pushNode(parent, new Node({type: 'bar'})); -utils.pushNode(parent, new Node({type: 'baz'})); -console.log(parent.nodes.length); //=> 3 -utils.removeNode(parent, foo); -console.log(parent.nodes.length); //=> 2 -``` - -### [.isType](index.js#L443) - -Returns true if `node.type` matches the given `type`. Throws a `TypeError` if `node` is not an instance of `Node`. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `type` **{String}** -* `returns` **{Boolean}** - -**Example** - -```js -var Node = require('snapdragon-node'); -var node = new Node({type: 'foo'}); -console.log(utils.isType(node, 'foo')); // false -console.log(utils.isType(node, 'bar')); // true -``` - -### [.hasType](index.js#L486) - -Returns true if the given `node` has the given `type` in `node.nodes`. Throws a `TypeError` if `node` is not an instance of `Node`. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `type` **{String}** -* `returns` **{Boolean}** - -**Example** - -```js -var Node = require('snapdragon-node'); -var node = new Node({ - type: 'foo', - nodes: [ - new Node({type: 'bar'}), - new Node({type: 'baz'}) - ] -}); -console.log(utils.hasType(node, 'xyz')); // false -console.log(utils.hasType(node, 'baz')); // true -``` - -### [.firstOfType](index.js#L519) - -Returns the first node from `node.nodes` of the given `type` - -**Params** - -* `nodes` **{Array}** -* `type` **{String}** -* `returns` **{Object|undefined}**: Returns the first matching node or undefined. - -**Example** - -```js -var node = new Node({ - type: 'foo', - nodes: [ - new Node({type: 'text', val: 'abc'}), - new Node({type: 'text', val: 'xyz'}) - ] -}); - -var textNode = utils.firstOfType(node.nodes, 'text'); -console.log(textNode.val); -//=> 'abc' -``` - -### [.findNode](index.js#L556) - -Returns the node at the specified index, or the first node of the given `type` from `node.nodes`. - -**Params** - -* `nodes` **{Array}** -* `type` **{String|Number}**: Node type or index. -* `returns` **{Object}**: Returns a node or undefined. - -**Example** - -```js -var node = new Node({ - type: 'foo', - nodes: [ - new Node({type: 'text', val: 'abc'}), - new Node({type: 'text', val: 'xyz'}) - ] -}); - -var nodeOne = utils.findNode(node.nodes, 'text'); -console.log(nodeOne.val); -//=> 'abc' - -var nodeTwo = utils.findNode(node.nodes, 1); -console.log(nodeTwo.val); -//=> 'xyz' -``` - -### [.isOpen](index.js#L584) - -Returns true if the given node is an "*.open" node. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Boolean}** - -**Example** - -```js -var Node = require('snapdragon-node'); -var brace = new Node({type: 'brace'}); -var open = new Node({type: 'brace.open'}); -var close = new Node({type: 'brace.close'}); - -console.log(utils.isOpen(brace)); // false -console.log(utils.isOpen(open)); // true -console.log(utils.isOpen(close)); // false -``` - -### [.isClose](index.js#L607) - -Returns true if the given node is a "*.close" node. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Boolean}** - -**Example** - -```js -var Node = require('snapdragon-node'); -var brace = new Node({type: 'brace'}); -var open = new Node({type: 'brace.open'}); -var close = new Node({type: 'brace.close'}); - -console.log(utils.isClose(brace)); // false -console.log(utils.isClose(open)); // false -console.log(utils.isClose(close)); // true -``` - -### [.hasOpen](index.js#L633) - -Returns true if `node.nodes` **has** an `.open` node - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Boolean}** - -**Example** - -```js -var Node = require('snapdragon-node'); -var brace = new Node({ - type: 'brace', - nodes: [] -}); - -var open = new Node({type: 'brace.open'}); -console.log(utils.hasOpen(brace)); // false - -brace.pushNode(open); -console.log(utils.hasOpen(brace)); // true -``` - -### [.hasClose](index.js#L663) - -Returns true if `node.nodes` **has** a `.close` node - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Boolean}** - -**Example** - -```js -var Node = require('snapdragon-node'); -var brace = new Node({ - type: 'brace', - nodes: [] -}); - -var close = new Node({type: 'brace.close'}); -console.log(utils.hasClose(brace)); // false - -brace.pushNode(close); -console.log(utils.hasClose(brace)); // true -``` - -### [.hasOpenAndClose](index.js#L697) - -Returns true if `node.nodes` has both `.open` and `.close` nodes - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Boolean}** - -**Example** - -```js -var Node = require('snapdragon-node'); -var brace = new Node({ - type: 'brace', - nodes: [] -}); - -var open = new Node({type: 'brace.open'}); -var close = new Node({type: 'brace.close'}); -console.log(utils.hasOpen(brace)); // false -console.log(utils.hasClose(brace)); // false - -brace.pushNode(open); -brace.pushNode(close); -console.log(utils.hasOpen(brace)); // true -console.log(utils.hasClose(brace)); // true -``` - -### [.addType](index.js#L719) - -Push the given `node` onto the `state.inside` array for the given type. This array is used as a specialized "stack" for only the given `node.type`. - -**Params** - -* `state` **{Object}**: The `compiler.state` object or custom state object. -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Array}**: Returns the `state.inside` stack for the given type. - -**Example** - -```js -var state = { inside: {}}; -var node = new Node({type: 'brace'}); -utils.addType(state, node); -console.log(state.inside); -//=> { brace: [{type: 'brace'}] } -``` - -### [.removeType](index.js#L759) - -Remove the given `node` from the `state.inside` array for the given type. This array is used as a specialized "stack" for only the given `node.type`. - -**Params** - -* `state` **{Object}**: The `compiler.state` object or custom state object. -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `returns` **{Array}**: Returns the `state.inside` stack for the given type. - -**Example** - -```js -var state = { inside: {}}; -var node = new Node({type: 'brace'}); -utils.addType(state, node); -console.log(state.inside); -//=> { brace: [{type: 'brace'}] } -utils.removeType(state, node); -//=> { brace: [] } -``` - -### [.isEmpty](index.js#L788) - -Returns true if `node.val` is an empty string, or `node.nodes` does not contain any non-empty text nodes. - -**Params** - -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `fn` **{Function}** -* `returns` **{Boolean}** - -**Example** - -```js -var node = new Node({type: 'text'}); -utils.isEmpty(node); //=> true -node.val = 'foo'; -utils.isEmpty(node); //=> false -``` - -### [.isInsideType](index.js#L833) - -Returns true if the `state.inside` stack for the given type exists and has one or more nodes on it. - -**Params** - -* `state` **{Object}** -* `type` **{String}** -* `returns` **{Boolean}** - -**Example** - -```js -var state = { inside: {}}; -var node = new Node({type: 'brace'}); -console.log(utils.isInsideType(state, 'brace')); //=> false -utils.addType(state, node); -console.log(utils.isInsideType(state, 'brace')); //=> true -utils.removeType(state, node); -console.log(utils.isInsideType(state, 'brace')); //=> false -``` - -### [.isInside](index.js#L867) - -Returns true if `node` is either a child or grand-child of the given `type`, or `state.inside[type]` is a non-empty array. - -**Params** - -* `state` **{Object}**: Either the `compiler.state` object, if it exists, or a user-supplied state object. -* `node` **{Object}**: Instance of [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) -* `type` **{String}**: The `node.type` to check for. -* `returns` **{Boolean}** - -**Example** - -```js -var state = { inside: {}}; -var node = new Node({type: 'brace'}); -var open = new Node({type: 'brace.open'}); -console.log(utils.isInside(state, open, 'brace')); //=> false -utils.pushNode(node, open); -console.log(utils.isInside(state, open, 'brace')); //=> true -``` - -### [.last](index.js#L915) - -Get the last `n` element from the given `array`. Used for getting -a node from `node.nodes.` - -**Params** - -* `array` **{Array}** -* `n` **{Number}** -* `returns` **{undefined}** - -### [.arrayify](index.js#L935) - -Cast the given `val` to an array. - -**Params** - -* `val` **{any}** -* `returns` **{Array}** - -**Example** - -```js -console.log(utils.arraify('')); -//=> [] -console.log(utils.arraify('foo')); -//=> ['foo'] -console.log(utils.arraify(['foo'])); -//=> ['foo'] -``` - -### [.stringify](index.js#L948) - -Convert the given `val` to a string by joining with `,`. Useful -for creating a cheerio/CSS/DOM-style selector from a list of strings. - -**Params** - -* `val` **{any}** -* `returns` **{Array}** - -### [.trim](index.js#L961) - -Ensure that the given value is a string and call `.trim()` on it, -or return an empty string. - -**Params** - -* `str` **{String}** -* `returns` **{String}** - -## Release history - -Changelog entries are classified using the following labels from [keep-a-changelog](https://github.com/olivierlacan/keep-a-changelog): - -* `added`: for new features -* `changed`: for changes in existing functionality -* `deprecated`: for once-stable features removed in upcoming releases -* `removed`: for deprecated features removed in this release -* `fixed`: for any bug fixes - -Custom labels used in this changelog: - -* `dependencies`: bumps dependencies -* `housekeeping`: code re-organization, minor edits, or other changes that don't fit in one of the other categories. - -### [3.0.0] - 2017-05-01 - -**Changed** - -* `.emit` was renamed to [.append](#append) -* `.addNode` was renamed to [.pushNode](#pushNode) -* `.getNode` was renamed to [.findNode](#findNode) -* `.isEmptyNodes` was renamed to [.isEmpty](#isEmpty): also now works with `node.nodes` and/or `node.val` - -**Added** - -* [.identity](#identity) -* [.removeNode](#removeNode) -* [.shiftNode](#shiftNode) -* [.popNode](#popNode) - -### [0.1.0] - -First release. - -## About - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 01, 2017._ \ No newline at end of file diff --git a/node_modules/snapdragon-util/index.js b/node_modules/snapdragon-util/index.js deleted file mode 100644 index 68a030ec1..000000000 --- a/node_modules/snapdragon-util/index.js +++ /dev/null @@ -1,1019 +0,0 @@ -'use strict'; - -var typeOf = require('kind-of'); -var utils = module.exports; - -/** - * Returns true if the given value is a node. - * - * ```js - * var Node = require('snapdragon-node'); - * var node = new Node({type: 'foo'}); - * console.log(utils.isNode(node)); //=> true - * console.log(utils.isNode({})); //=> false - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @returns {Boolean} - * @api public - */ - -utils.isNode = function(node) { - return typeOf(node) === 'object' && node.isNode === true; -}; - -/** - * Emit an empty string for the given `node`. - * - * ```js - * // do nothing for beginning-of-string - * snapdragon.compiler.set('bos', utils.noop); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @returns {undefined} - * @api public - */ - -utils.noop = function(node) { - append(this, '', node); -}; - -/** - * Appdend `node.val` to `compiler.output`, exactly as it was created - * by the parser. - * - * ```js - * snapdragon.compiler.set('text', utils.identity); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @returns {undefined} - * @api public - */ - -utils.identity = function(node) { - append(this, node.val, node); -}; - -/** - * Previously named `.emit`, this method appends the given `val` - * to `compiler.output` for the given node. Useful when you know - * what value should be appended advance, regardless of the actual - * value of `node.val`. - * - * ```js - * snapdragon.compiler - * .set('i', function(node) { - * this.mapVisit(node); - * }) - * .set('i.open', utils.append('')) - * .set('i.close', utils.append('')) - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @returns {Function} Returns a compiler middleware function. - * @api public - */ - -utils.append = function(val) { - return function(node) { - append(this, val, node); - }; -}; - -/** - * Used in compiler middleware, this onverts an AST node into - * an empty `text` node and deletes `node.nodes` if it exists. - * The advantage of this method is that, as opposed to completely - * removing the node, indices will not need to be re-calculated - * in sibling nodes, and nothing is appended to the output. - * - * ```js - * utils.toNoop(node); - * // convert `node.nodes` to the given value instead of deleting it - * utils.toNoop(node, []); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Array} `nodes` Optionally pass a new `nodes` value, to replace the existing `node.nodes` array. - * @api public - */ - -utils.toNoop = function(node, nodes) { - if (nodes) { - node.nodes = nodes; - } else { - delete node.nodes; - node.type = 'text'; - node.val = ''; - } -}; - -/** - * Visit `node` with the given `fn`. The built-in `.visit` method in snapdragon - * automatically calls registered compilers, this allows you to pass a visitor - * function. - * - * ```js - * snapdragon.compiler.set('i', function(node) { - * utils.visit(node, function(childNode) { - * // do stuff with "childNode" - * return childNode; - * }); - * }); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `fn` - * @return {Object} returns the node after recursively visiting all child nodes. - * @api public - */ - -utils.visit = function(node, fn) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isFunction(fn), 'expected a visitor function'); - fn(node); - return node.nodes ? utils.mapVisit(node, fn) : node; -}; - -/** - * Map [visit](#visit) the given `fn` over `node.nodes`. This is called by - * [visit](#visit), use this method if you do not want `fn` to be called on - * the first node. - * - * ```js - * snapdragon.compiler.set('i', function(node) { - * utils.mapVisit(node, function(childNode) { - * // do stuff with "childNode" - * return childNode; - * }); - * }); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Object} `options` - * @param {Function} `fn` - * @return {Object} returns the node - * @api public - */ - -utils.mapVisit = function(node, fn) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isArray(node.nodes), 'expected node.nodes to be an array'); - assert(isFunction(fn), 'expected a visitor function'); - - for (var i = 0; i < node.nodes.length; i++) { - utils.visit(node.nodes[i], fn); - } - return node; -}; - -/** - * Unshift an `*.open` node onto `node.nodes`. - * - * ```js - * var Node = require('snapdragon-node'); - * snapdragon.parser.set('brace', function(node) { - * var match = this.match(/^{/); - * if (match) { - * var parent = new Node({type: 'brace'}); - * utils.addOpen(parent, Node); - * console.log(parent.nodes[0]): - * // { type: 'brace.open', val: '' }; - * - * // push the parent "brace" node onto the stack - * this.push(parent); - * - * // return the parent node, so it's also added to the AST - * return brace; - * } - * }); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][]. - * @param {Function} `filter` Optionaly specify a filter function to exclude the node. - * @return {Object} Returns the created opening node. - * @api public - */ - -utils.addOpen = function(node, Node, val, filter) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isFunction(Node), 'expected Node to be a constructor function'); - - if (typeof val === 'function') { - filter = val; - val = ''; - } - - if (typeof filter === 'function' && !filter(node)) return; - var open = new Node({ type: node.type + '.open', val: val}); - var unshift = node.unshift || node.unshiftNode; - if (typeof unshift === 'function') { - unshift.call(node, open); - } else { - utils.unshiftNode(node, open); - } - return open; -}; - -/** - * Push a `*.close` node onto `node.nodes`. - * - * ```js - * var Node = require('snapdragon-node'); - * snapdragon.parser.set('brace', function(node) { - * var match = this.match(/^}/); - * if (match) { - * var parent = this.parent(); - * if (parent.type !== 'brace') { - * throw new Error('missing opening: ' + '}'); - * } - * - * utils.addClose(parent, Node); - * console.log(parent.nodes[parent.nodes.length - 1]): - * // { type: 'brace.close', val: '' }; - * - * // no need to return a node, since the parent - * // was already added to the AST - * return; - * } - * }); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][]. - * @param {Function} `filter` Optionaly specify a filter function to exclude the node. - * @return {Object} Returns the created closing node. - * @api public - */ - -utils.addClose = function(node, Node, val, filter) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isFunction(Node), 'expected Node to be a constructor function'); - - if (typeof val === 'function') { - filter = val; - val = ''; - } - - if (typeof filter === 'function' && !filter(node)) return; - var close = new Node({ type: node.type + '.close', val: val}); - var push = node.push || node.pushNode; - if (typeof push === 'function') { - push.call(node, close); - } else { - utils.pushNode(node, close); - } - return close; -}; - -/** - * Wraps the given `node` with `*.open` and `*.close` nodes. - * - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][]. - * @param {Function} `filter` Optionaly specify a filter function to exclude the node. - * @return {Object} Returns the node - * @api public - */ - -utils.wrapNodes = function(node, Node, filter) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isFunction(Node), 'expected Node to be a constructor function'); - - utils.addOpen(node, Node, filter); - utils.addClose(node, Node, filter); - return node; -}; - -/** - * Push the given `node` onto `parent.nodes`, and set `parent` as `node.parent. - * - * ```js - * var parent = new Node({type: 'foo'}); - * var node = new Node({type: 'bar'}); - * utils.pushNode(parent, node); - * console.log(parent.nodes[0].type) // 'bar' - * console.log(node.parent.type) // 'foo' - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Object} Returns the child node - * @api public - */ - -utils.pushNode = function(parent, node) { - assert(utils.isNode(parent), 'expected parent node to be an instance of Node'); - assert(utils.isNode(node), 'expected node to be an instance of Node'); - - node.define('parent', parent); - parent.nodes = parent.nodes || []; - parent.nodes.push(node); - return node; -}; - -/** - * Unshift `node` onto `parent.nodes`, and set `parent` as `node.parent. - * - * ```js - * var parent = new Node({type: 'foo'}); - * var node = new Node({type: 'bar'}); - * utils.unshiftNode(parent, node); - * console.log(parent.nodes[0].type) // 'bar' - * console.log(node.parent.type) // 'foo' - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {undefined} - * @api public - */ - -utils.unshiftNode = function(parent, node) { - assert(utils.isNode(parent), 'expected parent node to be an instance of Node'); - assert(utils.isNode(node), 'expected node to be an instance of Node'); - - node.define('parent', parent); - parent.nodes = parent.nodes || []; - parent.nodes.unshift(node); -}; - -/** - * Pop the last `node` off of `parent.nodes`. The advantage of - * using this method is that it checks for `node.nodes` and works - * with any version of `snapdragon-node`. - * - * ```js - * var parent = new Node({type: 'foo'}); - * utils.pushNode(parent, new Node({type: 'foo'})); - * utils.pushNode(parent, new Node({type: 'bar'})); - * utils.pushNode(parent, new Node({type: 'baz'})); - * console.log(parent.nodes.length); //=> 3 - * utils.popNode(parent); - * console.log(parent.nodes.length); //=> 2 - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Number|Undefined} Returns the length of `node.nodes` or undefined. - * @api public - */ - -utils.popNode = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - if (typeof node.pop === 'function') { - return node.pop(); - } - return node.nodes && node.nodes.pop(); -}; - -/** - * Shift the first `node` off of `parent.nodes`. The advantage of - * using this method is that it checks for `node.nodes` and works - * with any version of `snapdragon-node`. - * - * ```js - * var parent = new Node({type: 'foo'}); - * utils.pushNode(parent, new Node({type: 'foo'})); - * utils.pushNode(parent, new Node({type: 'bar'})); - * utils.pushNode(parent, new Node({type: 'baz'})); - * console.log(parent.nodes.length); //=> 3 - * utils.shiftNode(parent); - * console.log(parent.nodes.length); //=> 2 - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Number|Undefined} Returns the length of `node.nodes` or undefined. - * @api public - */ - -utils.shiftNode = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - if (typeof node.shift === 'function') { - return node.shift(); - } - return node.nodes && node.nodes.shift(); -}; - -/** - * Remove the specified `node` from `parent.nodes`. - * - * ```js - * var parent = new Node({type: 'abc'}); - * var foo = new Node({type: 'foo'}); - * utils.pushNode(parent, foo); - * utils.pushNode(parent, new Node({type: 'bar'})); - * utils.pushNode(parent, new Node({type: 'baz'})); - * console.log(parent.nodes.length); //=> 3 - * utils.removeNode(parent, foo); - * console.log(parent.nodes.length); //=> 2 - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Object|undefined} Returns the removed node, if successful, or undefined if it does not exist on `parent.nodes`. - * @api public - */ - -utils.removeNode = function(parent, node) { - assert(utils.isNode(parent), 'expected parent.node to be an instance of Node'); - assert(utils.isNode(node), 'expected node to be an instance of Node'); - - if (!parent.nodes) { - return null; - } - - if (typeof parent.remove === 'function') { - return parent.remove(node); - } - - var idx = parent.nodes.indexOf(node); - if (idx !== -1) { - return parent.nodes.splice(idx, 1); - } -}; - -/** - * Returns true if `node.type` matches the given `type`. Throws a - * `TypeError` if `node` is not an instance of `Node`. - * - * ```js - * var Node = require('snapdragon-node'); - * var node = new Node({type: 'foo'}); - * console.log(utils.isType(node, 'foo')); // false - * console.log(utils.isType(node, 'bar')); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -utils.isType = function(node, type) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - switch (typeOf(type)) { - case 'array': - var types = type.slice(); - for (var i = 0; i < types.length; i++) { - if (utils.isType(node, types[i])) { - return true; - } - } - return false; - case 'string': - return node.type === type; - case 'regexp': - return type.test(node.type); - default: { - throw new TypeError('expected "type" to be an array, string or regexp'); - } - } -}; - -/** - * Returns true if the given `node` has the given `type` in `node.nodes`. - * Throws a `TypeError` if `node` is not an instance of `Node`. - * - * ```js - * var Node = require('snapdragon-node'); - * var node = new Node({ - * type: 'foo', - * nodes: [ - * new Node({type: 'bar'}), - * new Node({type: 'baz'}) - * ] - * }); - * console.log(utils.hasType(node, 'xyz')); // false - * console.log(utils.hasType(node, 'baz')); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -utils.hasType = function(node, type) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - if (!Array.isArray(node.nodes)) return false; - for (var i = 0; i < node.nodes.length; i++) { - if (utils.isType(node.nodes[i], type)) { - return true; - } - } - return false; -}; - -/** - * Returns the first node from `node.nodes` of the given `type` - * - * ```js - * var node = new Node({ - * type: 'foo', - * nodes: [ - * new Node({type: 'text', val: 'abc'}), - * new Node({type: 'text', val: 'xyz'}) - * ] - * }); - * - * var textNode = utils.firstOfType(node.nodes, 'text'); - * console.log(textNode.val); - * //=> 'abc' - * ``` - * @param {Array} `nodes` - * @param {String} `type` - * @return {Object|undefined} Returns the first matching node or undefined. - * @api public - */ - -utils.firstOfType = function(nodes, type) { - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - if (utils.isType(node, type)) { - return node; - } - } -}; - -/** - * Returns the node at the specified index, or the first node of the - * given `type` from `node.nodes`. - * - * ```js - * var node = new Node({ - * type: 'foo', - * nodes: [ - * new Node({type: 'text', val: 'abc'}), - * new Node({type: 'text', val: 'xyz'}) - * ] - * }); - * - * var nodeOne = utils.findNode(node.nodes, 'text'); - * console.log(nodeOne.val); - * //=> 'abc' - * - * var nodeTwo = utils.findNode(node.nodes, 1); - * console.log(nodeTwo.val); - * //=> 'xyz' - * ``` - * - * @param {Array} `nodes` - * @param {String|Number} `type` Node type or index. - * @return {Object} Returns a node or undefined. - * @api public - */ - -utils.findNode = function(nodes, type) { - if (!Array.isArray(nodes)) { - return null; - } - if (typeof type === 'number') { - return nodes[type]; - } - return utils.firstOfType(nodes, type); -}; - -/** - * Returns true if the given node is an "*.open" node. - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({type: 'brace'}); - * var open = new Node({type: 'brace.open'}); - * var close = new Node({type: 'brace.close'}); - * - * console.log(utils.isOpen(brace)); // false - * console.log(utils.isOpen(open)); // true - * console.log(utils.isOpen(close)); // false - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.isOpen = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - return node.type.slice(-5) === '.open'; -}; - -/** - * Returns true if the given node is a "*.close" node. - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({type: 'brace'}); - * var open = new Node({type: 'brace.open'}); - * var close = new Node({type: 'brace.close'}); - * - * console.log(utils.isClose(brace)); // false - * console.log(utils.isClose(open)); // false - * console.log(utils.isClose(close)); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.isClose = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - return node.type.slice(-6) === '.close'; -}; - -/** - * Returns true if `node.nodes` **has** an `.open` node - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({ - * type: 'brace', - * nodes: [] - * }); - * - * var open = new Node({type: 'brace.open'}); - * console.log(utils.hasOpen(brace)); // false - * - * brace.pushNode(open); - * console.log(utils.hasOpen(brace)); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.hasOpen = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - var first = node.first || node.nodes ? node.nodes[0] : null; - if (utils.isNode(first)) { - return first.type === node.type + '.open'; - } - return false; -}; - -/** - * Returns true if `node.nodes` **has** a `.close` node - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({ - * type: 'brace', - * nodes: [] - * }); - * - * var close = new Node({type: 'brace.close'}); - * console.log(utils.hasClose(brace)); // false - * - * brace.pushNode(close); - * console.log(utils.hasClose(brace)); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.hasClose = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - var last = node.last || node.nodes ? node.nodes[node.nodes.length - 1] : null; - if (utils.isNode(last)) { - return last.type === node.type + '.close'; - } - return false; -}; - -/** - * Returns true if `node.nodes` has both `.open` and `.close` nodes - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({ - * type: 'brace', - * nodes: [] - * }); - * - * var open = new Node({type: 'brace.open'}); - * var close = new Node({type: 'brace.close'}); - * console.log(utils.hasOpen(brace)); // false - * console.log(utils.hasClose(brace)); // false - * - * brace.pushNode(open); - * brace.pushNode(close); - * console.log(utils.hasOpen(brace)); // true - * console.log(utils.hasClose(brace)); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.hasOpenAndClose = function(node) { - return utils.hasOpen(node) && utils.hasClose(node); -}; - -/** - * Push the given `node` onto the `state.inside` array for the - * given type. This array is used as a specialized "stack" for - * only the given `node.type`. - * - * ```js - * var state = { inside: {}}; - * var node = new Node({type: 'brace'}); - * utils.addType(state, node); - * console.log(state.inside); - * //=> { brace: [{type: 'brace'}] } - * ``` - * @param {Object} `state` The `compiler.state` object or custom state object. - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Array} Returns the `state.inside` stack for the given type. - * @api public - */ - -utils.addType = function(state, node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isObject(state), 'expected state to be an object'); - - var type = node.parent - ? node.parent.type - : node.type.replace(/\.open$/, ''); - - if (!state.hasOwnProperty('inside')) { - state.inside = {}; - } - if (!state.inside.hasOwnProperty(type)) { - state.inside[type] = []; - } - - var arr = state.inside[type]; - arr.push(node); - return arr; -}; - -/** - * Remove the given `node` from the `state.inside` array for the - * given type. This array is used as a specialized "stack" for - * only the given `node.type`. - * - * ```js - * var state = { inside: {}}; - * var node = new Node({type: 'brace'}); - * utils.addType(state, node); - * console.log(state.inside); - * //=> { brace: [{type: 'brace'}] } - * utils.removeType(state, node); - * //=> { brace: [] } - * ``` - * @param {Object} `state` The `compiler.state` object or custom state object. - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Array} Returns the `state.inside` stack for the given type. - * @api public - */ - -utils.removeType = function(state, node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isObject(state), 'expected state to be an object'); - - var type = node.parent - ? node.parent.type - : node.type.replace(/\.close$/, ''); - - if (state.inside.hasOwnProperty(type)) { - return state.inside[type].pop(); - } -}; - -/** - * Returns true if `node.val` is an empty string, or `node.nodes` does - * not contain any non-empty text nodes. - * - * ```js - * var node = new Node({type: 'text'}); - * utils.isEmpty(node); //=> true - * node.val = 'foo'; - * utils.isEmpty(node); //=> false - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `fn` - * @return {Boolean} - * @api public - */ - -utils.isEmpty = function(node, fn) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - - if (!Array.isArray(node.nodes)) { - if (node.type !== 'text') { - return true; - } - if (typeof fn === 'function') { - return fn(node, node.parent); - } - return !utils.trim(node.val); - } - - for (var i = 0; i < node.nodes.length; i++) { - var child = node.nodes[i]; - if (utils.isOpen(child) || utils.isClose(child)) { - continue; - } - if (!utils.isEmpty(child, fn)) { - return false; - } - } - - return true; -}; - -/** - * Returns true if the `state.inside` stack for the given type exists - * and has one or more nodes on it. - * - * ```js - * var state = { inside: {}}; - * var node = new Node({type: 'brace'}); - * console.log(utils.isInsideType(state, 'brace')); //=> false - * utils.addType(state, node); - * console.log(utils.isInsideType(state, 'brace')); //=> true - * utils.removeType(state, node); - * console.log(utils.isInsideType(state, 'brace')); //=> false - * ``` - * @param {Object} `state` - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -utils.isInsideType = function(state, type) { - assert(isObject(state), 'expected state to be an object'); - assert(isString(type), 'expected type to be a string'); - - if (!state.hasOwnProperty('inside')) { - return false; - } - - if (!state.inside.hasOwnProperty(type)) { - return false; - } - - return state.inside[type].length > 0; -}; - -/** - * Returns true if `node` is either a child or grand-child of the given `type`, - * or `state.inside[type]` is a non-empty array. - * - * ```js - * var state = { inside: {}}; - * var node = new Node({type: 'brace'}); - * var open = new Node({type: 'brace.open'}); - * console.log(utils.isInside(state, open, 'brace')); //=> false - * utils.pushNode(node, open); - * console.log(utils.isInside(state, open, 'brace')); //=> true - * ``` - * @param {Object} `state` Either the `compiler.state` object, if it exists, or a user-supplied state object. - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {String} `type` The `node.type` to check for. - * @return {Boolean} - * @api public - */ - -utils.isInside = function(state, node, type) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isObject(state), 'expected state to be an object'); - - if (Array.isArray(type)) { - for (var i = 0; i < type.length; i++) { - if (utils.isInside(state, node, type[i])) { - return true; - } - } - return false; - } - - var parent = node.parent; - if (typeof type === 'string') { - return (parent && parent.type === type) || utils.isInsideType(state, type); - } - - if (typeOf(type) === 'regexp') { - if (parent && parent.type && type.test(parent.type)) { - return true; - } - - var keys = Object.keys(state.inside); - var len = keys.length; - var idx = -1; - while (++idx < len) { - var key = keys[idx]; - var val = state.inside[key]; - - if (Array.isArray(val) && val.length !== 0 && type.test(key)) { - return true; - } - } - } - return false; -}; - -/** - * Get the last `n` element from the given `array`. Used for getting - * a node from `node.nodes.` - * - * @param {Array} `array` - * @param {Number} `n` - * @return {undefined} - * @api public - */ - -utils.last = function(arr, n) { - return arr[arr.length - (n || 1)]; -}; - -/** - * Cast the given `val` to an array. - * - * ```js - * console.log(utils.arrayify('')); - * //=> [] - * console.log(utils.arrayify('foo')); - * //=> ['foo'] - * console.log(utils.arrayify(['foo'])); - * //=> ['foo'] - * ``` - * @param {any} `val` - * @return {Array} - * @api public - */ - -utils.arrayify = function(val) { - if (typeof val === 'string' && val !== '') { - return [val]; - } - if (!Array.isArray(val)) { - return []; - } - return val; -}; - -/** - * Convert the given `val` to a string by joining with `,`. Useful - * for creating a cheerio/CSS/DOM-style selector from a list of strings. - * - * @param {any} `val` - * @return {Array} - * @api public - */ - -utils.stringify = function(val) { - return utils.arrayify(val).join(','); -}; - -/** - * Ensure that the given value is a string and call `.trim()` on it, - * or return an empty string. - * - * @param {String} `str` - * @return {String} - * @api public - */ - -utils.trim = function(str) { - return typeof str === 'string' ? str.trim() : ''; -}; - -/** - * Return true if val is an object - */ - -function isObject(val) { - return typeOf(val) === 'object'; -} - -/** - * Return true if val is a string - */ - -function isString(val) { - return typeof val === 'string'; -} - -/** - * Return true if val is a function - */ - -function isFunction(val) { - return typeof val === 'function'; -} - -/** - * Return true if val is an array - */ - -function isArray(val) { - return Array.isArray(val); -} - -/** - * Shim to ensure the `.append` methods work with any version of snapdragon - */ - -function append(compiler, val, node) { - if (typeof compiler.append !== 'function') { - return compiler.emit(val, node); - } - return compiler.append(val, node); -} - -/** - * Simplified assertion. Throws an error is `val` is falsey. - */ - -function assert(val, message) { - if (!val) throw new Error(message); -} diff --git a/node_modules/snapdragon-util/node_modules/kind-of/LICENSE b/node_modules/snapdragon-util/node_modules/kind-of/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/snapdragon-util/node_modules/kind-of/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/snapdragon-util/node_modules/kind-of/README.md b/node_modules/snapdragon-util/node_modules/kind-of/README.md deleted file mode 100644 index 6a9df36d3..000000000 --- a/node_modules/snapdragon-util/node_modules/kind-of/README.md +++ /dev/null @@ -1,261 +0,0 @@ -# kind-of [![NPM version](https://img.shields.io/npm/v/kind-of.svg?style=flat)](https://www.npmjs.com/package/kind-of) [![NPM monthly downloads](https://img.shields.io/npm/dm/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![NPM total downloads](https://img.shields.io/npm/dt/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/kind-of.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/kind-of) - -> Get the native type of a value. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save kind-of -``` - -## Install - -Install with [bower](https://bower.io/) - -```sh -$ bower install kind-of --save -``` - -## Usage - -> es5, browser and es6 ready - -```js -var kindOf = require('kind-of'); - -kindOf(undefined); -//=> 'undefined' - -kindOf(null); -//=> 'null' - -kindOf(true); -//=> 'boolean' - -kindOf(false); -//=> 'boolean' - -kindOf(new Boolean(true)); -//=> 'boolean' - -kindOf(new Buffer('')); -//=> 'buffer' - -kindOf(42); -//=> 'number' - -kindOf(new Number(42)); -//=> 'number' - -kindOf('str'); -//=> 'string' - -kindOf(new String('str')); -//=> 'string' - -kindOf(arguments); -//=> 'arguments' - -kindOf({}); -//=> 'object' - -kindOf(Object.create(null)); -//=> 'object' - -kindOf(new Test()); -//=> 'object' - -kindOf(new Date()); -//=> 'date' - -kindOf([]); -//=> 'array' - -kindOf([1, 2, 3]); -//=> 'array' - -kindOf(new Array()); -//=> 'array' - -kindOf(/foo/); -//=> 'regexp' - -kindOf(new RegExp('foo')); -//=> 'regexp' - -kindOf(function () {}); -//=> 'function' - -kindOf(function * () {}); -//=> 'function' - -kindOf(new Function()); -//=> 'function' - -kindOf(new Map()); -//=> 'map' - -kindOf(new WeakMap()); -//=> 'weakmap' - -kindOf(new Set()); -//=> 'set' - -kindOf(new WeakSet()); -//=> 'weakset' - -kindOf(Symbol('str')); -//=> 'symbol' - -kindOf(new Int8Array()); -//=> 'int8array' - -kindOf(new Uint8Array()); -//=> 'uint8array' - -kindOf(new Uint8ClampedArray()); -//=> 'uint8clampedarray' - -kindOf(new Int16Array()); -//=> 'int16array' - -kindOf(new Uint16Array()); -//=> 'uint16array' - -kindOf(new Int32Array()); -//=> 'int32array' - -kindOf(new Uint32Array()); -//=> 'uint32array' - -kindOf(new Float32Array()); -//=> 'float32array' - -kindOf(new Float64Array()); -//=> 'float64array' -``` - -## Benchmarks - -Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of). -Note that performaces is slower for es6 features `Map`, `WeakMap`, `Set` and `WeakSet`. - -```bash -#1: array - current x 23,329,397 ops/sec ±0.82% (94 runs sampled) - lib-type-of x 4,170,273 ops/sec ±0.55% (94 runs sampled) - lib-typeof x 9,686,935 ops/sec ±0.59% (98 runs sampled) - -#2: boolean - current x 27,197,115 ops/sec ±0.85% (94 runs sampled) - lib-type-of x 3,145,791 ops/sec ±0.73% (97 runs sampled) - lib-typeof x 9,199,562 ops/sec ±0.44% (99 runs sampled) - -#3: date - current x 20,190,117 ops/sec ±0.86% (92 runs sampled) - lib-type-of x 5,166,970 ops/sec ±0.74% (94 runs sampled) - lib-typeof x 9,610,821 ops/sec ±0.50% (96 runs sampled) - -#4: function - current x 23,855,460 ops/sec ±0.60% (97 runs sampled) - lib-type-of x 5,667,740 ops/sec ±0.54% (100 runs sampled) - lib-typeof x 10,010,644 ops/sec ±0.44% (100 runs sampled) - -#5: null - current x 27,061,047 ops/sec ±0.97% (96 runs sampled) - lib-type-of x 13,965,573 ops/sec ±0.62% (97 runs sampled) - lib-typeof x 8,460,194 ops/sec ±0.61% (97 runs sampled) - -#6: number - current x 25,075,682 ops/sec ±0.53% (99 runs sampled) - lib-type-of x 2,266,405 ops/sec ±0.41% (98 runs sampled) - lib-typeof x 9,821,481 ops/sec ±0.45% (99 runs sampled) - -#7: object - current x 3,348,980 ops/sec ±0.49% (99 runs sampled) - lib-type-of x 3,245,138 ops/sec ±0.60% (94 runs sampled) - lib-typeof x 9,262,952 ops/sec ±0.59% (99 runs sampled) - -#8: regex - current x 21,284,827 ops/sec ±0.72% (96 runs sampled) - lib-type-of x 4,689,241 ops/sec ±0.43% (100 runs sampled) - lib-typeof x 8,957,593 ops/sec ±0.62% (98 runs sampled) - -#9: string - current x 25,379,234 ops/sec ±0.58% (96 runs sampled) - lib-type-of x 3,635,148 ops/sec ±0.76% (93 runs sampled) - lib-typeof x 9,494,134 ops/sec ±0.49% (98 runs sampled) - -#10: undef - current x 27,459,221 ops/sec ±1.01% (93 runs sampled) - lib-type-of x 14,360,433 ops/sec ±0.52% (99 runs sampled) - lib-typeof x 23,202,868 ops/sec ±0.59% (94 runs sampled) - -``` - -## Optimizations - -In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library: - -1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot. -2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it. -3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'` - -## About - -### Related projects - -* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 59 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [miguelmota](https://github.com/miguelmota) | -| 1 | [dtothefp](https://github.com/dtothefp) | -| 1 | [ksheedlo](https://github.com/ksheedlo) | -| 1 | [pdehaan](https://github.com/pdehaan) | -| 1 | [laggingreflex](https://github.com/laggingreflex) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 16, 2017._ \ No newline at end of file diff --git a/node_modules/snapdragon-util/node_modules/kind-of/index.js b/node_modules/snapdragon-util/node_modules/kind-of/index.js deleted file mode 100644 index b52c2917f..000000000 --- a/node_modules/snapdragon-util/node_modules/kind-of/index.js +++ /dev/null @@ -1,116 +0,0 @@ -var isBuffer = require('is-buffer'); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; diff --git a/node_modules/snapdragon-util/node_modules/kind-of/package.json b/node_modules/snapdragon-util/node_modules/kind-of/package.json deleted file mode 100644 index e5cd111ad..000000000 --- a/node_modules/snapdragon-util/node_modules/kind-of/package.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "_args": [ - [ - "kind-of@3.2.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "kind-of@3.2.2", - "_id": "kind-of@3.2.2", - "_inBundle": false, - "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "_location": "/snapdragon-util/kind-of", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "kind-of@3.2.2", - "name": "kind-of", - "escapedName": "kind-of", - "rawSpec": "3.2.2", - "saveSpec": null, - "fetchSpec": "3.2.2" - }, - "_requiredBy": [ - "/snapdragon-util" - ], - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "_spec": "3.2.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/kind-of/issues" - }, - "contributors": [ - { - "name": "David Fox-Powell", - "url": "https://dtothefp.github.io/me" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Ken Sheedlo", - "url": "kensheedlo.com" - }, - { - "name": "laggingreflex", - "url": "https://github.com/laggingreflex" - }, - { - "name": "Miguel Mota", - "url": "https://miguelmota.com" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - } - ], - "dependencies": { - "is-buffer": "^1.1.5" - }, - "description": "Get the native type of a value.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "benchmarked": "^1.0.0", - "browserify": "^14.3.0", - "glob": "^7.1.1", - "gulp-format-md": "^0.1.12", - "mocha": "^3.3.0", - "type-of": "^2.0.1", - "typeof": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/kind-of", - "keywords": [ - "arguments", - "array", - "boolean", - "check", - "date", - "function", - "is", - "is-type", - "is-type-of", - "kind", - "kind-of", - "number", - "object", - "of", - "regexp", - "string", - "test", - "type", - "type-of", - "typeof", - "types" - ], - "license": "MIT", - "main": "index.js", - "name": "kind-of", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/kind-of.git" - }, - "scripts": { - "prepublish": "browserify -o browser.js -e index.js -s index --bare", - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-glob", - "is-number", - "is-primitive" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "verb" - ] - }, - "version": "3.2.2" -} diff --git a/node_modules/snapdragon-util/package.json b/node_modules/snapdragon-util/package.json deleted file mode 100644 index 5c34edca0..000000000 --- a/node_modules/snapdragon-util/package.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "_args": [ - [ - "snapdragon-util@3.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "snapdragon-util@3.0.1", - "_id": "snapdragon-util@3.0.1", - "_inBundle": false, - "_integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "_location": "/snapdragon-util", - "_phantomChildren": { - "is-buffer": "1.1.6" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "snapdragon-util@3.0.1", - "name": "snapdragon-util", - "escapedName": "snapdragon-util", - "rawSpec": "3.0.1", - "saveSpec": null, - "fetchSpec": "3.0.1" - }, - "_requiredBy": [ - "/snapdragon-node" - ], - "_resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "_spec": "3.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/snapdragon-util/issues" - }, - "dependencies": { - "kind-of": "^3.2.0" - }, - "description": "Utilities for the snapdragon parser/compiler.", - "devDependencies": { - "define-property": "^1.0.0", - "gulp": "^3.9.1", - "gulp-eslint": "^3.0.1", - "gulp-format-md": "^0.1.12", - "gulp-istanbul": "^1.1.1", - "gulp-mocha": "^3.0.0", - "isobject": "^3.0.0", - "mocha": "^3.3.0", - "snapdragon": "^0.11.0", - "snapdragon-node": "^1.0.6" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/snapdragon-util", - "keywords": [ - "capture", - "compile", - "compiler", - "convert", - "match", - "parse", - "parser", - "plugin", - "render", - "snapdragon", - "snapdragonplugin", - "transform", - "util" - ], - "license": "MIT", - "main": "index.js", - "name": "snapdragon-util", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/snapdragon-util.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": "collapsible", - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "3.0.1" -} diff --git a/node_modules/snapdragon/LICENSE b/node_modules/snapdragon/LICENSE deleted file mode 100644 index 1e49edf81..000000000 --- a/node_modules/snapdragon/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/snapdragon/README.md b/node_modules/snapdragon/README.md deleted file mode 100644 index 4006e10fd..000000000 --- a/node_modules/snapdragon/README.md +++ /dev/null @@ -1,321 +0,0 @@ -# snapdragon [![NPM version](https://img.shields.io/npm/v/snapdragon.svg?style=flat)](https://www.npmjs.com/package/snapdragon) [![NPM downloads](https://img.shields.io/npm/dm/snapdragon.svg?style=flat)](https://npmjs.org/package/snapdragon) [![Build Status](https://img.shields.io/travis/jonschlinkert/snapdragon.svg?style=flat)](https://travis-ci.org/jonschlinkert/snapdragon) - -> Fast, pluggable and easy-to-use parser-renderer factory. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save snapdragon -``` - -Created by [jonschlinkert](https://github.com/jonschlinkert) and [doowb](https://github.com/doowb). - -**Features** - -* Bootstrap your own parser, get sourcemap support for free -* All parsing and compiling is handled by simple, reusable middleware functions -* Inspired by the parsers in [pug](http://jade-lang.com) and [css](https://github.com/reworkcss/css). - -## History - -### v0.5.0 - -**Breaking changes** - -Substantial breaking changes were made in v0.5.0! Most of these changes are part of a larger refactor that will be finished in 0.6.0, including the introduction of a `Lexer` class. - -* Renderer was renamed to `Compiler` -* the `.render` method was renamed to `.compile` -* Many other smaller changes. A more detailed overview will be provided in 0.6.0. If you don't have to time review code, I recommend you wait for the 0.6.0 release. - -## Usage examples - -```js -var Snapdragon = require('snapdragon'); -var snapdragon = new Snapdragon(); -``` - -**Parse** - -```js -var ast = snapdragon.parser('some string', options) - // parser middleware that can be called by other middleware - .set('foo', function () {}) - // parser middleware, runs immediately in the order defined - .use(bar()) - .use(baz()) -``` - -**Render** - -```js -// pass the `ast` from the parse method -var res = snapdragon.compiler(ast) - // compiler middleware, called when the name of the middleware - // matches the `node.type` (defined in a parser middleware) - .set('bar', function () {}) - .set('baz', function () {}) - .compile() -``` - -See the [examples](./examples/). - -## Getting started - -**Parsers** - -Parsers are middleware functions used for parsing a string into an ast node. - -```js -var ast = snapdragon.parser(str, options) - .use(function() { - var pos = this.position(); - var m = this.match(/^\./); - if (!m) return; - return pos({ - // `type` specifies the compiler to use - type: 'dot', - val: m[0] - }); - }) -``` - -**AST node** - -When the parser finds a match, `pos()` is called, pushing a token for that node onto the ast that looks something like: - -```js -{ type: 'dot', - val: '.', - position: - { start: { lineno: 1, column: 1 }, - end: { lineno: 1, column: 2 } }} -``` - -**Renderers** - -Renderers are _named_ middleware functions that visit over an array of ast nodes to compile a string. - -```js -var res = snapdragon.compiler(ast) - .set('dot', function (node) { - console.log(node.val) - //=> '.' - return this.emit(node.val); - }) -``` - -**Source maps** - -If you want source map support, make sure to emit the position as well. - -```js -var res = snapdragon.compiler(ast) - .set('dot', function (node) { - return this.emit(node.val, node.position); - }) -``` - -## Docs - -### Parser middleware - -A parser middleware is a function that returns an abject called a `token`. This token is pushed onto the AST as a node. - -**Example token** - -```js -{ type: 'dot', - val: '.', - position: - { start: { lineno: 1, column: 1 }, - end: { lineno: 1, column: 2 } }} -``` - -**Example parser middleware** - -Match a single `.` in a string: - -1. Get the starting position by calling `this.position()` -2. pass a regex for matching a single dot to the `.match` method -3. if **no match** is found, return `undefined` -4. if a **match** is found, `pos()` is called, which returns a token with: - - `type`: the name of the [compiler] to use - - `val`: The actual value captured by the regex. In this case, a `.`. Note that you can capture and return whatever will be needed by the corresponding [compiler]. - - The ending position: automatically calculated by adding the length of the first capture group to the starting position. - -## Renderer middleware - -Renderers are run when the name of the compiler middleware matches the `type` defined on an ast `node` (which is defined in a parser). - -**Example** - -Exercise: Parse a dot, then compile it as an escaped dot. - -```js -var ast = snapdragon.parser('.') - .use(function () { - var pos = this.position(); - var m = this.match(/^\./); - if (!m) return; - return pos({ - // define the `type` of compiler to use - type: 'dot', - val: m[0] - }) - }) - -var result = snapdragon.compiler(ast) - .set('dot', function (node) { - return this.emit('\\' + node.val); - }) - .compile() - -console.log(result.output); -//=> '\.' -``` - -## API - -### [Parser](lib/parser.js#L19) - -Create a new `Parser` with the given `input` and `options`. - -**Params** - -* `input` **{String}** -* `options` **{Object}** - -### [.define](lib/parser.js#L103) - -Define a non-enumberable property on the `Parser` instance. - -**Example** - -```js -parser.define('foo', 'bar'); -``` - -**Params** - -* `key` **{String}**: propery name -* `val` **{any}**: property value -* `returns` **{Object}**: Returns the Parser instance for chaining. - -Set parser `name` with the given `fn` - -**Params** - -* `name` **{String}** -* `fn` **{Function}** - -Get parser `name` - -**Params** - -* `name` **{String}** - -Push a `token` onto the `type` stack. - -**Params** - -* `type` **{String}** -* `returns` **{Object}** `token` - -Pop a token off of the `type` stack - -**Params** - -* `type` **{String}** -* `returns` **{Object}**: Returns a token - -Return true if inside a `stack` node. Types are `braces`, `parens` or `brackets`. - -**Params** - -* `type` **{String}** -* `returns` **{Boolean}** - -**Example** - -```js -parser.isType(node, 'brace'); -``` - -**Params** - -* `node` **{Object}** -* `type` **{String}** -* `returns` **{Boolean}** - -### [.define](lib/compiler.js#L71) - -Define a non-enumberable property on the `Compiler` instance. - -**Example** - -```js -compiler.define('foo', 'bar'); -``` - -**Params** - -* `key` **{String}**: propery name -* `val` **{any}**: property value -* `returns` **{Object}**: Returns the Compiler instance for chaining. - -## About - -### Related projects - -* [braces](https://www.npmjs.com/package/braces): Fastest brace expansion for node.js, with the most complete support for the Bash 4.3 braces… [more](https://github.com/jonschlinkert/braces) | [homepage](https://github.com/jonschlinkert/braces "Fastest brace expansion for node.js, with the most complete support for the Bash 4.3 braces specification.") -* [expand-brackets](https://www.npmjs.com/package/expand-brackets): Expand POSIX bracket expressions (character classes) in glob patterns. | [homepage](https://github.com/jonschlinkert/expand-brackets "Expand POSIX bracket expressions (character classes) in glob patterns.") -* [extglob](https://www.npmjs.com/package/extglob): Convert extended globs to regex-compatible strings. Add (almost) the expressive power of regular expressions to… [more](https://github.com/jonschlinkert/extglob) | [homepage](https://github.com/jonschlinkert/extglob "Convert extended globs to regex-compatible strings. Add (almost) the expressive power of regular expressions to glob patterns.") -* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor**
          | -| --- | --- | -| 106 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [doowb](https://github.com/doowb) | - -### Building docs - -_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ - -To generate the readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install -g verb verb-generate-readme && verb -``` - -### Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -### License - -Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/snapdragon/blob/master/LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.1.31, on October 10, 2016._ \ No newline at end of file diff --git a/node_modules/snapdragon/index.js b/node_modules/snapdragon/index.js deleted file mode 100644 index 235b464ba..000000000 --- a/node_modules/snapdragon/index.js +++ /dev/null @@ -1,174 +0,0 @@ -'use strict'; - -var Base = require('base'); -var define = require('define-property'); -var Compiler = require('./lib/compiler'); -var Parser = require('./lib/parser'); -var utils = require('./lib/utils'); -var regexCache = {}; -var cache = {}; - -/** - * Create a new instance of `Snapdragon` with the given `options`. - * - * ```js - * var snapdragon = new Snapdragon(); - * ``` - * - * @param {Object} `options` - * @api public - */ - -function Snapdragon(options) { - Base.call(this, null, options); - this.options = utils.extend({source: 'string'}, this.options); - this.compiler = new Compiler(this.options); - this.parser = new Parser(this.options); - - Object.defineProperty(this, 'compilers', { - get: function() { - return this.compiler.compilers; - } - }); - - Object.defineProperty(this, 'parsers', { - get: function() { - return this.parser.parsers; - } - }); - - Object.defineProperty(this, 'regex', { - get: function() { - return this.parser.regex; - } - }); -} - -/** - * Inherit Base - */ - -Base.extend(Snapdragon); - -/** - * Add a parser to `snapdragon.parsers` for capturing the given `type` using - * the specified regex or parser function. A function is useful if you need - * to customize how the token is created and/or have access to the parser - * instance to check options, etc. - * - * ```js - * snapdragon - * .capture('slash', /^\//) - * .capture('dot', function() { - * var pos = this.position(); - * var m = this.match(/^\./); - * if (!m) return; - * return pos({ - * type: 'dot', - * val: m[0] - * }); - * }); - * ``` - * @param {String} `type` - * @param {RegExp|Function} `regex` - * @return {Object} Returns the parser instance for chaining - * @api public - */ - -Snapdragon.prototype.capture = function() { - return this.parser.capture.apply(this.parser, arguments); -}; - -/** - * Register a plugin `fn`. - * - * ```js - * var snapdragon = new Snapdgragon([options]); - * snapdragon.use(function() { - * console.log(this); //<= snapdragon instance - * console.log(this.parser); //<= parser instance - * console.log(this.compiler); //<= compiler instance - * }); - * ``` - * @param {Object} `fn` - * @api public - */ - -Snapdragon.prototype.use = function(fn) { - fn.call(this, this); - return this; -}; - -/** - * Parse the given `str`. - * - * ```js - * var snapdragon = new Snapdgragon([options]); - * // register parsers - * snapdragon.parser.use(function() {}); - * - * // parse - * var ast = snapdragon.parse('foo/bar'); - * console.log(ast); - * ``` - * @param {String} `str` - * @param {Object} `options` Set `options.sourcemap` to true to enable source maps. - * @return {Object} Returns an AST. - * @api public - */ - -Snapdragon.prototype.parse = function(str, options) { - this.options = utils.extend({}, this.options, options); - var parsed = this.parser.parse(str, this.options); - - // add non-enumerable parser reference - define(parsed, 'parser', this.parser); - return parsed; -}; - -/** - * Compile the given `AST`. - * - * ```js - * var snapdragon = new Snapdgragon([options]); - * // register plugins - * snapdragon.use(function() {}); - * // register parser plugins - * snapdragon.parser.use(function() {}); - * // register compiler plugins - * snapdragon.compiler.use(function() {}); - * - * // parse - * var ast = snapdragon.parse('foo/bar'); - * - * // compile - * var res = snapdragon.compile(ast); - * console.log(res.output); - * ``` - * @param {Object} `ast` - * @param {Object} `options` - * @return {Object} Returns an object with an `output` property with the rendered string. - * @api public - */ - -Snapdragon.prototype.compile = function(ast, options) { - this.options = utils.extend({}, this.options, options); - var compiled = this.compiler.compile(ast, this.options); - - // add non-enumerable compiler reference - define(compiled, 'compiler', this.compiler); - return compiled; -}; - -/** - * Expose `Snapdragon` - */ - -module.exports = Snapdragon; - -/** - * Expose `Parser` and `Compiler` - */ - -module.exports.Compiler = Compiler; -module.exports.Parser = Parser; diff --git a/node_modules/snapdragon/lib/compiler.js b/node_modules/snapdragon/lib/compiler.js deleted file mode 100644 index 0ce9d2178..000000000 --- a/node_modules/snapdragon/lib/compiler.js +++ /dev/null @@ -1,177 +0,0 @@ -'use strict'; - -var use = require('use'); -var define = require('define-property'); -var debug = require('debug')('snapdragon:compiler'); -var utils = require('./utils'); - -/** - * Create a new `Compiler` with the given `options`. - * @param {Object} `options` - */ - -function Compiler(options, state) { - debug('initializing', __filename); - this.options = utils.extend({source: 'string'}, options); - this.state = state || {}; - this.compilers = {}; - this.output = ''; - this.set('eos', function(node) { - return this.emit(node.val, node); - }); - this.set('noop', function(node) { - return this.emit(node.val, node); - }); - this.set('bos', function(node) { - return this.emit(node.val, node); - }); - use(this); -} - -/** - * Prototype methods - */ - -Compiler.prototype = { - - /** - * Throw an error message with details including the cursor position. - * @param {String} `msg` Message to use in the Error. - */ - - error: function(msg, node) { - var pos = node.position || {start: {column: 0}}; - var message = this.options.source + ' column:' + pos.start.column + ': ' + msg; - - var err = new Error(message); - err.reason = msg; - err.column = pos.start.column; - err.source = this.pattern; - - if (this.options.silent) { - this.errors.push(err); - } else { - throw err; - } - }, - - /** - * Define a non-enumberable property on the `Compiler` instance. - * - * ```js - * compiler.define('foo', 'bar'); - * ``` - * @name .define - * @param {String} `key` propery name - * @param {any} `val` property value - * @return {Object} Returns the Compiler instance for chaining. - * @api public - */ - - define: function(key, val) { - define(this, key, val); - return this; - }, - - /** - * Emit `node.val` - */ - - emit: function(str, node) { - this.output += str; - return str; - }, - - /** - * Add a compiler `fn` with the given `name` - */ - - set: function(name, fn) { - this.compilers[name] = fn; - return this; - }, - - /** - * Get compiler `name`. - */ - - get: function(name) { - return this.compilers[name]; - }, - - /** - * Get the previous AST node. - */ - - prev: function(n) { - return this.ast.nodes[this.idx - (n || 1)] || { type: 'bos', val: '' }; - }, - - /** - * Get the next AST node. - */ - - next: function(n) { - return this.ast.nodes[this.idx + (n || 1)] || { type: 'eos', val: '' }; - }, - - /** - * Visit `node`. - */ - - visit: function(node, nodes, i) { - var fn = this.compilers[node.type]; - this.idx = i; - - if (typeof fn !== 'function') { - throw this.error('compiler "' + node.type + '" is not registered', node); - } - return fn.call(this, node, nodes, i); - }, - - /** - * Map visit over array of `nodes`. - */ - - mapVisit: function(nodes) { - if (!Array.isArray(nodes)) { - throw new TypeError('expected an array'); - } - var len = nodes.length; - var idx = -1; - while (++idx < len) { - this.visit(nodes[idx], nodes, idx); - } - return this; - }, - - /** - * Compile `ast`. - */ - - compile: function(ast, options) { - var opts = utils.extend({}, this.options, options); - this.ast = ast; - this.parsingErrors = this.ast.errors; - this.output = ''; - - // source map support - if (opts.sourcemap) { - var sourcemaps = require('./source-maps'); - sourcemaps(this); - this.mapVisit(this.ast.nodes); - this.applySourceMaps(); - this.map = opts.sourcemap === 'generator' ? this.map : this.map.toJSON(); - return this; - } - - this.mapVisit(this.ast.nodes); - return this; - } -}; - -/** - * Expose `Compiler` - */ - -module.exports = Compiler; diff --git a/node_modules/snapdragon/lib/parser.js b/node_modules/snapdragon/lib/parser.js deleted file mode 100644 index a5a9b31ca..000000000 --- a/node_modules/snapdragon/lib/parser.js +++ /dev/null @@ -1,533 +0,0 @@ -'use strict'; - -var use = require('use'); -var util = require('util'); -var Cache = require('map-cache'); -var define = require('define-property'); -var debug = require('debug')('snapdragon:parser'); -var Position = require('./position'); -var utils = require('./utils'); - -/** - * Create a new `Parser` with the given `input` and `options`. - * @param {String} `input` - * @param {Object} `options` - * @api public - */ - -function Parser(options) { - debug('initializing', __filename); - this.options = utils.extend({source: 'string'}, options); - this.init(this.options); - use(this); -} - -/** - * Prototype methods - */ - -Parser.prototype = { - constructor: Parser, - - init: function(options) { - this.orig = ''; - this.input = ''; - this.parsed = ''; - - this.column = 1; - this.line = 1; - - this.regex = new Cache(); - this.errors = this.errors || []; - this.parsers = this.parsers || {}; - this.types = this.types || []; - this.sets = this.sets || {}; - this.fns = this.fns || []; - this.currentType = 'root'; - - var pos = this.position(); - this.bos = pos({type: 'bos', val: ''}); - - this.ast = { - type: 'root', - errors: this.errors, - nodes: [this.bos] - }; - - define(this.bos, 'parent', this.ast); - this.nodes = [this.ast]; - - this.count = 0; - this.setCount = 0; - this.stack = []; - }, - - /** - * Throw a formatted error with the cursor column and `msg`. - * @param {String} `msg` Message to use in the Error. - */ - - error: function(msg, node) { - var pos = node.position || {start: {column: 0, line: 0}}; - var line = pos.start.line; - var column = pos.start.column; - var source = this.options.source; - - var message = source + ' : ' + msg; - var err = new Error(message); - err.source = source; - err.reason = msg; - err.pos = pos; - - if (this.options.silent) { - this.errors.push(err); - } else { - throw err; - } - }, - - /** - * Define a non-enumberable property on the `Parser` instance. - * - * ```js - * parser.define('foo', 'bar'); - * ``` - * @name .define - * @param {String} `key` propery name - * @param {any} `val` property value - * @return {Object} Returns the Parser instance for chaining. - * @api public - */ - - define: function(key, val) { - define(this, key, val); - return this; - }, - - /** - * Mark position and patch `node.position`. - */ - - position: function() { - var start = { line: this.line, column: this.column }; - var self = this; - - return function(node) { - define(node, 'position', new Position(start, self)); - return node; - }; - }, - - /** - * Set parser `name` with the given `fn` - * @param {String} `name` - * @param {Function} `fn` - * @api public - */ - - set: function(type, fn) { - if (this.types.indexOf(type) === -1) { - this.types.push(type); - } - this.parsers[type] = fn.bind(this); - return this; - }, - - /** - * Get parser `name` - * @param {String} `name` - * @api public - */ - - get: function(name) { - return this.parsers[name]; - }, - - /** - * Push a `token` onto the `type` stack. - * - * @param {String} `type` - * @return {Object} `token` - * @api public - */ - - push: function(type, token) { - this.sets[type] = this.sets[type] || []; - this.count++; - this.stack.push(token); - return this.sets[type].push(token); - }, - - /** - * Pop a token off of the `type` stack - * @param {String} `type` - * @returns {Object} Returns a token - * @api public - */ - - pop: function(type) { - this.sets[type] = this.sets[type] || []; - this.count--; - this.stack.pop(); - return this.sets[type].pop(); - }, - - /** - * Return true if inside a `stack` node. Types are `braces`, `parens` or `brackets`. - * - * @param {String} `type` - * @return {Boolean} - * @api public - */ - - isInside: function(type) { - this.sets[type] = this.sets[type] || []; - return this.sets[type].length > 0; - }, - - /** - * Return true if `node` is the given `type`. - * - * ```js - * parser.isType(node, 'brace'); - * ``` - * @param {Object} `node` - * @param {String} `type` - * @return {Boolean} - * @api public - */ - - isType: function(node, type) { - return node && node.type === type; - }, - - /** - * Get the previous AST node - * @return {Object} - */ - - prev: function(n) { - return this.stack.length > 0 - ? utils.last(this.stack, n) - : utils.last(this.nodes, n); - }, - - /** - * Update line and column based on `str`. - */ - - consume: function(len) { - this.input = this.input.substr(len); - }, - - /** - * Update column based on `str`. - */ - - updatePosition: function(str, len) { - var lines = str.match(/\n/g); - if (lines) this.line += lines.length; - var i = str.lastIndexOf('\n'); - this.column = ~i ? len - i : this.column + len; - this.parsed += str; - this.consume(len); - }, - - /** - * Match `regex`, return captures, and update the cursor position by `match[0]` length. - * @param {RegExp} `regex` - * @return {Object} - */ - - match: function(regex) { - var m = regex.exec(this.input); - if (m) { - this.updatePosition(m[0], m[0].length); - return m; - } - }, - - /** - * Capture `type` with the given regex. - * @param {String} `type` - * @param {RegExp} `regex` - * @return {Function} - */ - - capture: function(type, regex) { - if (typeof regex === 'function') { - return this.set.apply(this, arguments); - } - - this.regex.set(type, regex); - this.set(type, function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(regex); - if (!m || !m[0]) return; - - var prev = this.prev(); - var node = pos({ - type: type, - val: m[0], - parsed: parsed, - rest: this.input - }); - - if (m[1]) { - node.inner = m[1]; - } - - define(node, 'inside', this.stack.length > 0); - define(node, 'parent', prev); - prev.nodes.push(node); - }.bind(this)); - return this; - }, - - /** - * Create a parser with open and close for parens, - * brackets or braces - */ - - capturePair: function(type, openRegex, closeRegex, fn) { - this.sets[type] = this.sets[type] || []; - - /** - * Open - */ - - this.set(type + '.open', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(openRegex); - if (!m || !m[0]) return; - - var val = m[0]; - this.setCount++; - this.specialChars = true; - var open = pos({ - type: type + '.open', - val: val, - rest: this.input - }); - - if (typeof m[1] !== 'undefined') { - open.inner = m[1]; - } - - var prev = this.prev(); - var node = pos({ - type: type, - nodes: [open] - }); - - define(node, 'rest', this.input); - define(node, 'parsed', parsed); - define(node, 'prefix', m[1]); - define(node, 'parent', prev); - define(open, 'parent', node); - - if (typeof fn === 'function') { - fn.call(this, open, node); - } - - this.push(type, node); - prev.nodes.push(node); - }); - - /** - * Close - */ - - this.set(type + '.close', function() { - var pos = this.position(); - var m = this.match(closeRegex); - if (!m || !m[0]) return; - - var parent = this.pop(type); - var node = pos({ - type: type + '.close', - rest: this.input, - suffix: m[1], - val: m[0] - }); - - if (!this.isType(parent, type)) { - if (this.options.strict) { - throw new Error('missing opening "' + type + '"'); - } - - this.setCount--; - node.escaped = true; - return node; - } - - if (node.suffix === '\\') { - parent.escaped = true; - node.escaped = true; - } - - parent.nodes.push(node); - define(node, 'parent', parent); - }); - - return this; - }, - - /** - * Capture end-of-string - */ - - eos: function() { - var pos = this.position(); - if (this.input) return; - var prev = this.prev(); - - while (prev.type !== 'root' && !prev.visited) { - if (this.options.strict === true) { - throw new SyntaxError('invalid syntax:' + util.inspect(prev, null, 2)); - } - - if (!hasDelims(prev)) { - prev.parent.escaped = true; - prev.escaped = true; - } - - visit(prev, function(node) { - if (!hasDelims(node.parent)) { - node.parent.escaped = true; - node.escaped = true; - } - }); - - prev = prev.parent; - } - - var tok = pos({ - type: 'eos', - val: this.append || '' - }); - - define(tok, 'parent', this.ast); - return tok; - }, - - /** - * Run parsers to advance the cursor position - */ - - next: function() { - var parsed = this.parsed; - var len = this.types.length; - var idx = -1; - var tok; - - while (++idx < len) { - if ((tok = this.parsers[this.types[idx]].call(this))) { - define(tok, 'rest', this.input); - define(tok, 'parsed', parsed); - this.last = tok; - return tok; - } - } - }, - - /** - * Parse the given string. - * @return {Array} - */ - - parse: function(input) { - if (typeof input !== 'string') { - throw new TypeError('expected a string'); - } - - this.init(this.options); - this.orig = input; - this.input = input; - var self = this; - - function parse() { - // check input before calling `.next()` - input = self.input; - - // get the next AST ndoe - var node = self.next(); - if (node) { - var prev = self.prev(); - if (prev) { - define(node, 'parent', prev); - if (prev.nodes) { - prev.nodes.push(node); - } - } - - if (self.sets.hasOwnProperty(prev.type)) { - self.currentType = prev.type; - } - } - - // if we got here but input is not changed, throw an error - if (self.input && input === self.input) { - throw new Error('no parsers registered for: "' + self.input.slice(0, 5) + '"'); - } - } - - while (this.input) parse(); - if (this.stack.length && this.options.strict) { - var node = this.stack.pop(); - throw this.error('missing opening ' + node.type + ': "' + this.orig + '"'); - } - - var eos = this.eos(); - var tok = this.prev(); - if (tok.type !== 'eos') { - this.ast.nodes.push(eos); - } - - return this.ast; - } -}; - -/** - * Visit `node` with the given `fn` - */ - -function visit(node, fn) { - if (!node.visited) { - define(node, 'visited', true); - return node.nodes ? mapVisit(node.nodes, fn) : fn(node); - } - return node; -} - -/** - * Map visit over array of `nodes`. - */ - -function mapVisit(nodes, fn) { - var len = nodes.length; - var idx = -1; - while (++idx < len) { - visit(nodes[idx], fn); - } -} - -function hasOpen(node) { - return node.nodes && node.nodes[0].type === (node.type + '.open'); -} - -function hasClose(node) { - return node.nodes && utils.last(node.nodes).type === (node.type + '.close'); -} - -function hasDelims(node) { - return hasOpen(node) && hasClose(node); -} - -/** - * Expose `Parser` - */ - -module.exports = Parser; diff --git a/node_modules/snapdragon/lib/position.js b/node_modules/snapdragon/lib/position.js deleted file mode 100644 index c859696ad..000000000 --- a/node_modules/snapdragon/lib/position.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -var define = require('define-property'); - -/** - * Store position for a node - */ - -module.exports = function Position(start, parser) { - this.start = start; - this.end = { line: parser.line, column: parser.column }; - define(this, 'content', parser.orig); - define(this, 'source', parser.options.source); -}; diff --git a/node_modules/snapdragon/lib/source-maps.js b/node_modules/snapdragon/lib/source-maps.js deleted file mode 100644 index d8e638b48..000000000 --- a/node_modules/snapdragon/lib/source-maps.js +++ /dev/null @@ -1,145 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var path = require('path'); -var define = require('define-property'); -var utils = require('./utils'); - -/** - * Expose `mixin()`. - * This code is based on `source-maps-support.js` in reworkcss/css - * https://github.com/reworkcss/css/blob/master/lib/stringify/source-map-support.js - * Copyright (c) 2012 TJ Holowaychuk - */ - -module.exports = mixin; - -/** - * Mixin source map support into `compiler`. - * - * @param {Object} `compiler` - * @api public - */ - -function mixin(compiler) { - define(compiler, '_comment', compiler.comment); - compiler.map = new utils.SourceMap.SourceMapGenerator(); - compiler.position = { line: 1, column: 1 }; - compiler.content = {}; - compiler.files = {}; - - for (var key in exports) { - define(compiler, key, exports[key]); - } -} - -/** - * Update position. - * - * @param {String} str - */ - -exports.updatePosition = function(str) { - var lines = str.match(/\n/g); - if (lines) this.position.line += lines.length; - var i = str.lastIndexOf('\n'); - this.position.column = ~i ? str.length - i : this.position.column + str.length; -}; - -/** - * Emit `str` with `position`. - * - * @param {String} str - * @param {Object} [pos] - * @return {String} - */ - -exports.emit = function(str, node) { - var position = node.position || {}; - var source = position.source; - if (source) { - if (position.filepath) { - source = utils.unixify(position.filepath); - } - - this.map.addMapping({ - source: source, - generated: { - line: this.position.line, - column: Math.max(this.position.column - 1, 0) - }, - original: { - line: position.start.line, - column: position.start.column - 1 - } - }); - - if (position.content) { - this.addContent(source, position); - } - if (position.filepath) { - this.addFile(source, position); - } - - this.updatePosition(str); - this.output += str; - } - return str; -}; - -/** - * Adds a file to the source map output if it has not already been added - * @param {String} `file` - * @param {Object} `pos` - */ - -exports.addFile = function(file, position) { - if (typeof position.content !== 'string') return; - if (Object.prototype.hasOwnProperty.call(this.files, file)) return; - this.files[file] = position.content; -}; - -/** - * Adds a content source to the source map output if it has not already been added - * @param {String} `source` - * @param {Object} `position` - */ - -exports.addContent = function(source, position) { - if (typeof position.content !== 'string') return; - if (Object.prototype.hasOwnProperty.call(this.content, source)) return; - this.map.setSourceContent(source, position.content); -}; - -/** - * Applies any original source maps to the output and embeds the source file - * contents in the source map. - */ - -exports.applySourceMaps = function() { - Object.keys(this.files).forEach(function(file) { - var content = this.files[file]; - this.map.setSourceContent(file, content); - - if (this.options.inputSourcemaps === true) { - var originalMap = utils.sourceMapResolve.resolveSync(content, file, fs.readFileSync); - if (originalMap) { - var map = new utils.SourceMap.SourceMapConsumer(originalMap.map); - var relativeTo = originalMap.sourcesRelativeTo; - this.map.applySourceMap(map, file, utils.unixify(path.dirname(relativeTo))); - } - } - }, this); -}; - -/** - * Process comments, drops sourceMap comments. - * @param {Object} node - */ - -exports.comment = function(node) { - if (/^# sourceMappingURL=/.test(node.comment)) { - return this.emit('', node.position); - } - return this._comment(node); -}; diff --git a/node_modules/snapdragon/lib/utils.js b/node_modules/snapdragon/lib/utils.js deleted file mode 100644 index 33f07e16f..000000000 --- a/node_modules/snapdragon/lib/utils.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -/** - * Module dependencies - */ - -exports.extend = require('extend-shallow'); -exports.SourceMap = require('source-map'); -exports.sourceMapResolve = require('source-map-resolve'); - -/** - * Convert backslash in the given string to forward slashes - */ - -exports.unixify = function(fp) { - return fp.split(/\\+/).join('/'); -}; - -/** - * Return true if `val` is a non-empty string - * - * @param {String} `str` - * @return {Boolean} - */ - -exports.isString = function(str) { - return str && typeof str === 'string'; -}; - -/** - * Cast `val` to an array - * @return {Array} - */ - -exports.arrayify = function(val) { - if (typeof val === 'string') return [val]; - return val ? (Array.isArray(val) ? val : [val]) : []; -}; - -/** - * Get the last `n` element from the given `array` - * @param {Array} `array` - * @return {*} - */ - -exports.last = function(arr, n) { - return arr[arr.length - (n || 1)]; -}; diff --git a/node_modules/snapdragon/node_modules/debug/.coveralls.yml b/node_modules/snapdragon/node_modules/debug/.coveralls.yml deleted file mode 100644 index 20a706858..000000000 --- a/node_modules/snapdragon/node_modules/debug/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve diff --git a/node_modules/snapdragon/node_modules/debug/.eslintrc b/node_modules/snapdragon/node_modules/debug/.eslintrc deleted file mode 100644 index 8a37ae2c2..000000000 --- a/node_modules/snapdragon/node_modules/debug/.eslintrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "env": { - "browser": true, - "node": true - }, - "rules": { - "no-console": 0, - "no-empty": [1, { "allowEmptyCatch": true }] - }, - "extends": "eslint:recommended" -} diff --git a/node_modules/snapdragon/node_modules/debug/.npmignore b/node_modules/snapdragon/node_modules/debug/.npmignore deleted file mode 100644 index 5f60eecc8..000000000 --- a/node_modules/snapdragon/node_modules/debug/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -support -test -examples -example -*.sock -dist -yarn.lock -coverage -bower.json diff --git a/node_modules/snapdragon/node_modules/debug/.travis.yml b/node_modules/snapdragon/node_modules/debug/.travis.yml deleted file mode 100644 index 6c6090c3b..000000000 --- a/node_modules/snapdragon/node_modules/debug/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ - -language: node_js -node_js: - - "6" - - "5" - - "4" - -install: - - make node_modules - -script: - - make lint - - make test - - make coveralls diff --git a/node_modules/snapdragon/node_modules/debug/CHANGELOG.md b/node_modules/snapdragon/node_modules/debug/CHANGELOG.md deleted file mode 100644 index eadaa1895..000000000 --- a/node_modules/snapdragon/node_modules/debug/CHANGELOG.md +++ /dev/null @@ -1,362 +0,0 @@ - -2.6.9 / 2017-09-22 -================== - - * remove ReDoS regexp in %o formatter (#504) - -2.6.8 / 2017-05-18 -================== - - * Fix: Check for undefined on browser globals (#462, @marbemac) - -2.6.7 / 2017-05-16 -================== - - * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom) - * Fix: Inline extend function in node implementation (#452, @dougwilson) - * Docs: Fix typo (#455, @msasad) - -2.6.5 / 2017-04-27 -================== - - * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek) - * Misc: clean up browser reference checks (#447, @thebigredgeek) - * Misc: add npm-debug.log to .gitignore (@thebigredgeek) - - -2.6.4 / 2017-04-20 -================== - - * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo) - * Chore: ignore bower.json in npm installations. (#437, @joaovieira) - * Misc: update "ms" to v0.7.3 (@tootallnate) - -2.6.3 / 2017-03-13 -================== - - * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts) - * Docs: Changelog fix (@thebigredgeek) - -2.6.2 / 2017-03-10 -================== - - * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin) - * Docs: Add backers and sponsors from Open Collective (#422, @piamancini) - * Docs: Add Slackin invite badge (@tootallnate) - -2.6.1 / 2017-02-10 -================== - - * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error - * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0) - * Fix: IE8 "Expected identifier" error (#414, @vgoma) - * Fix: Namespaces would not disable once enabled (#409, @musikov) - -2.6.0 / 2016-12-28 -================== - - * Fix: added better null pointer checks for browser useColors (@thebigredgeek) - * Improvement: removed explicit `window.debug` export (#404, @tootallnate) - * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate) - -2.5.2 / 2016-12-25 -================== - - * Fix: reference error on window within webworkers (#393, @KlausTrainer) - * Docs: fixed README typo (#391, @lurch) - * Docs: added notice about v3 api discussion (@thebigredgeek) - -2.5.1 / 2016-12-20 -================== - - * Fix: babel-core compatibility - -2.5.0 / 2016-12-20 -================== - - * Fix: wrong reference in bower file (@thebigredgeek) - * Fix: webworker compatibility (@thebigredgeek) - * Fix: output formatting issue (#388, @kribblo) - * Fix: babel-loader compatibility (#383, @escwald) - * Misc: removed built asset from repo and publications (@thebigredgeek) - * Misc: moved source files to /src (#378, @yamikuronue) - * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue) - * Test: coveralls integration (#378, @yamikuronue) - * Docs: simplified language in the opening paragraph (#373, @yamikuronue) - -2.4.5 / 2016-12-17 -================== - - * Fix: `navigator` undefined in Rhino (#376, @jochenberger) - * Fix: custom log function (#379, @hsiliev) - * Improvement: bit of cleanup + linting fixes (@thebigredgeek) - * Improvement: rm non-maintainted `dist/` dir (#375, @freewil) - * Docs: simplified language in the opening paragraph. (#373, @yamikuronue) - -2.4.4 / 2016-12-14 -================== - - * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts) - -2.4.3 / 2016-12-14 -================== - - * Fix: navigation.userAgent error for react native (#364, @escwald) - -2.4.2 / 2016-12-14 -================== - - * Fix: browser colors (#367, @tootallnate) - * Misc: travis ci integration (@thebigredgeek) - * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek) - -2.4.1 / 2016-12-13 -================== - - * Fix: typo that broke the package (#356) - -2.4.0 / 2016-12-13 -================== - - * Fix: bower.json references unbuilt src entry point (#342, @justmatt) - * Fix: revert "handle regex special characters" (@tootallnate) - * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate) - * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate) - * Improvement: allow colors in workers (#335, @botverse) - * Improvement: use same color for same namespace. (#338, @lchenay) - -2.3.3 / 2016-11-09 -================== - - * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne) - * Fix: Returning `localStorage` saved values (#331, Levi Thomason) - * Improvement: Don't create an empty object when no `process` (Nathan Rajlich) - -2.3.2 / 2016-11-09 -================== - - * Fix: be super-safe in index.js as well (@TooTallNate) - * Fix: should check whether process exists (Tom Newby) - -2.3.1 / 2016-11-09 -================== - - * Fix: Added electron compatibility (#324, @paulcbetts) - * Improvement: Added performance optimizations (@tootallnate) - * Readme: Corrected PowerShell environment variable example (#252, @gimre) - * Misc: Removed yarn lock file from source control (#321, @fengmk2) - -2.3.0 / 2016-11-07 -================== - - * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic) - * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos) - * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15) - * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran) - * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom) - * Package: Update "ms" to 0.7.2 (#315, @DevSide) - * Package: removed superfluous version property from bower.json (#207 @kkirsche) - * Readme: fix USE_COLORS to DEBUG_COLORS - * Readme: Doc fixes for format string sugar (#269, @mlucool) - * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0) - * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable) - * Readme: better docs for browser support (#224, @matthewmueller) - * Tooling: Added yarn integration for development (#317, @thebigredgeek) - * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek) - * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman) - * Misc: Updated contributors (@thebigredgeek) - -2.2.0 / 2015-05-09 -================== - - * package: update "ms" to v0.7.1 (#202, @dougwilson) - * README: add logging to file example (#193, @DanielOchoa) - * README: fixed a typo (#191, @amir-s) - * browser: expose `storage` (#190, @stephenmathieson) - * Makefile: add a `distclean` target (#189, @stephenmathieson) - -2.1.3 / 2015-03-13 -================== - - * Updated stdout/stderr example (#186) - * Updated example/stdout.js to match debug current behaviour - * Renamed example/stderr.js to stdout.js - * Update Readme.md (#184) - * replace high intensity foreground color for bold (#182, #183) - -2.1.2 / 2015-03-01 -================== - - * dist: recompile - * update "ms" to v0.7.0 - * package: update "browserify" to v9.0.3 - * component: fix "ms.js" repo location - * changed bower package name - * updated documentation about using debug in a browser - * fix: security error on safari (#167, #168, @yields) - -2.1.1 / 2014-12-29 -================== - - * browser: use `typeof` to check for `console` existence - * browser: check for `console.log` truthiness (fix IE 8/9) - * browser: add support for Chrome apps - * Readme: added Windows usage remarks - * Add `bower.json` to properly support bower install - -2.1.0 / 2014-10-15 -================== - - * node: implement `DEBUG_FD` env variable support - * package: update "browserify" to v6.1.0 - * package: add "license" field to package.json (#135, @panuhorsmalahti) - -2.0.0 / 2014-09-01 -================== - - * package: update "browserify" to v5.11.0 - * node: use stderr rather than stdout for logging (#29, @stephenmathieson) - -1.0.4 / 2014-07-15 -================== - - * dist: recompile - * example: remove `console.info()` log usage - * example: add "Content-Type" UTF-8 header to browser example - * browser: place %c marker after the space character - * browser: reset the "content" color via `color: inherit` - * browser: add colors support for Firefox >= v31 - * debug: prefer an instance `log()` function over the global one (#119) - * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) - -1.0.3 / 2014-07-09 -================== - - * Add support for multiple wildcards in namespaces (#122, @seegno) - * browser: fix lint - -1.0.2 / 2014-06-10 -================== - - * browser: update color palette (#113, @gscottolson) - * common: make console logging function configurable (#108, @timoxley) - * node: fix %o colors on old node <= 0.8.x - * Makefile: find node path using shell/which (#109, @timoxley) - -1.0.1 / 2014-06-06 -================== - - * browser: use `removeItem()` to clear localStorage - * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) - * package: add "contributors" section - * node: fix comment typo - * README: list authors - -1.0.0 / 2014-06-04 -================== - - * make ms diff be global, not be scope - * debug: ignore empty strings in enable() - * node: make DEBUG_COLORS able to disable coloring - * *: export the `colors` array - * npmignore: don't publish the `dist` dir - * Makefile: refactor to use browserify - * package: add "browserify" as a dev dependency - * Readme: add Web Inspector Colors section - * node: reset terminal color for the debug content - * node: map "%o" to `util.inspect()` - * browser: map "%j" to `JSON.stringify()` - * debug: add custom "formatters" - * debug: use "ms" module for humanizing the diff - * Readme: add "bash" syntax highlighting - * browser: add Firebug color support - * browser: add colors for WebKit browsers - * node: apply log to `console` - * rewrite: abstract common logic for Node & browsers - * add .jshintrc file - -0.8.1 / 2014-04-14 -================== - - * package: re-add the "component" section - -0.8.0 / 2014-03-30 -================== - - * add `enable()` method for nodejs. Closes #27 - * change from stderr to stdout - * remove unnecessary index.js file - -0.7.4 / 2013-11-13 -================== - - * remove "browserify" key from package.json (fixes something in browserify) - -0.7.3 / 2013-10-30 -================== - - * fix: catch localStorage security error when cookies are blocked (Chrome) - * add debug(err) support. Closes #46 - * add .browser prop to package.json. Closes #42 - -0.7.2 / 2013-02-06 -================== - - * fix package.json - * fix: Mobile Safari (private mode) is broken with debug - * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript - -0.7.1 / 2013-02-05 -================== - - * add repository URL to package.json - * add DEBUG_COLORED to force colored output - * add browserify support - * fix component. Closes #24 - -0.7.0 / 2012-05-04 -================== - - * Added .component to package.json - * Added debug.component.js build - -0.6.0 / 2012-03-16 -================== - - * Added support for "-" prefix in DEBUG [Vinay Pulim] - * Added `.enabled` flag to the node version [TooTallNate] - -0.5.0 / 2012-02-02 -================== - - * Added: humanize diffs. Closes #8 - * Added `debug.disable()` to the CS variant - * Removed padding. Closes #10 - * Fixed: persist client-side variant again. Closes #9 - -0.4.0 / 2012-02-01 -================== - - * Added browser variant support for older browsers [TooTallNate] - * Added `debug.enable('project:*')` to browser variant [TooTallNate] - * Added padding to diff (moved it to the right) - -0.3.0 / 2012-01-26 -================== - - * Added millisecond diff when isatty, otherwise UTC string - -0.2.0 / 2012-01-22 -================== - - * Added wildcard support - -0.1.0 / 2011-12-02 -================== - - * Added: remove colors unless stderr isatty [TooTallNate] - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/snapdragon/node_modules/debug/LICENSE b/node_modules/snapdragon/node_modules/debug/LICENSE deleted file mode 100644 index 658c933d2..000000000 --- a/node_modules/snapdragon/node_modules/debug/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 TJ Holowaychuk - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the 'Software'), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/node_modules/snapdragon/node_modules/debug/Makefile b/node_modules/snapdragon/node_modules/debug/Makefile deleted file mode 100644 index 584da8bf9..000000000 --- a/node_modules/snapdragon/node_modules/debug/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 -THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) -THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) - -# BIN directory -BIN := $(THIS_DIR)/node_modules/.bin - -# Path -PATH := node_modules/.bin:$(PATH) -SHELL := /bin/bash - -# applications -NODE ?= $(shell which node) -YARN ?= $(shell which yarn) -PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) -BROWSERIFY ?= $(NODE) $(BIN)/browserify - -.FORCE: - -install: node_modules - -node_modules: package.json - @NODE_ENV= $(PKG) install - @touch node_modules - -lint: .FORCE - eslint browser.js debug.js index.js node.js - -test-node: .FORCE - istanbul cover node_modules/mocha/bin/_mocha -- test/**.js - -test-browser: .FORCE - mkdir -p dist - - @$(BROWSERIFY) \ - --standalone debug \ - . > dist/debug.js - - karma start --single-run - rimraf dist - -test: .FORCE - concurrently \ - "make test-node" \ - "make test-browser" - -coveralls: - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js - -.PHONY: all install clean distclean diff --git a/node_modules/snapdragon/node_modules/debug/README.md b/node_modules/snapdragon/node_modules/debug/README.md deleted file mode 100644 index f67be6b31..000000000 --- a/node_modules/snapdragon/node_modules/debug/README.md +++ /dev/null @@ -1,312 +0,0 @@ -# debug -[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) - - - -A tiny node.js debugging utility modelled after node core's debugging technique. - -**Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)** - -## Installation - -```bash -$ npm install debug -``` - -## Usage - -`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. - -Example _app.js_: - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %s', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example _worker.js_: - -```js -var debug = require('debug')('worker'); - -setInterval(function(){ - debug('doing some work'); -}, 1000); -``` - - The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: - - ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) - - ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) - -#### Windows note - - On Windows the environment variable is set using the `set` command. - - ```cmd - set DEBUG=*,-not_this - ``` - - Note that PowerShell uses different syntax to set environment variables. - - ```cmd - $env:DEBUG = "*,-not_this" - ``` - -Then, run the program to be debugged as usual. - -## Millisecond diff - - When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) - - When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: - - ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) - -## Conventions - - If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". - -## Wildcards - - The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - - You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". - -## Environment Variables - - When running through Node.js, you can set a few environment variables that will - change the behavior of the debug logging: - -| Name | Purpose | -|-----------|-------------------------------------------------| -| `DEBUG` | Enables/disables specific debugging namespaces. | -| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | -| `DEBUG_DEPTH` | Object inspection depth. | -| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | - - - __Note:__ The environment variables beginning with `DEBUG_` end up being - converted into an Options object that gets used with `%o`/`%O` formatters. - See the Node.js documentation for - [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) - for the complete list. - -## Formatters - - - Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters: - -| Formatter | Representation | -|-----------|----------------| -| `%O` | Pretty-print an Object on multiple lines. | -| `%o` | Pretty-print an Object all on a single line. | -| `%s` | String. | -| `%d` | Number (both integer and float). | -| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | -| `%%` | Single percent sign ('%'). This does not consume an argument. | - -### Custom formatters - - You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like: - -```js -const createDebug = require('debug') -createDebug.formatters.h = (v) => { - return v.toString('hex') -} - -// …elsewhere -const debug = createDebug('foo') -debug('this is hex: %h', new Buffer('hello world')) -// foo this is hex: 68656c6c6f20776f726c6421 +0ms -``` - -## Browser support - You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), - or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), - if you don't want to build it yourself. - - Debug's enable state is currently persisted by `localStorage`. - Consider the situation shown below where you have `worker:a` and `worker:b`, - and wish to debug both. You can enable this using `localStorage.debug`: - -```js -localStorage.debug = 'worker:*' -``` - -And then refresh the page. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -#### Web Inspector Colors - - Colors are also enabled on "Web Inspectors" that understand the `%c` formatting - option. These are WebKit web inspectors, Firefox ([since version - 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) - and the Firebug plugin for Firefox (any version). - - Colored output looks something like: - - ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png) - - -## Output streams - - By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: - -Example _stdout.js_: - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - - Andrew Rhyne - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] - -
          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## License - -(The MIT License) - -Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/snapdragon/node_modules/debug/component.json b/node_modules/snapdragon/node_modules/debug/component.json deleted file mode 100644 index 9de26410f..000000000 --- a/node_modules/snapdragon/node_modules/debug/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "debug", - "repo": "visionmedia/debug", - "description": "small debugging utility", - "version": "2.6.9", - "keywords": [ - "debug", - "log", - "debugger" - ], - "main": "src/browser.js", - "scripts": [ - "src/browser.js", - "src/debug.js" - ], - "dependencies": { - "rauchg/ms.js": "0.7.1" - } -} diff --git a/node_modules/snapdragon/node_modules/debug/karma.conf.js b/node_modules/snapdragon/node_modules/debug/karma.conf.js deleted file mode 100644 index 103a82d15..000000000 --- a/node_modules/snapdragon/node_modules/debug/karma.conf.js +++ /dev/null @@ -1,70 +0,0 @@ -// Karma configuration -// Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC) - -module.exports = function(config) { - config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['mocha', 'chai', 'sinon'], - - - // list of files / patterns to load in the browser - files: [ - 'dist/debug.js', - 'test/*spec.js' - ], - - - // list of files to exclude - exclude: [ - 'src/node.js' - ], - - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - }, - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - - - // web server port - port: 9876, - - - // enable / disable colors in the output (reporters and logs) - colors: true, - - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['PhantomJS'], - - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity - }) -} diff --git a/node_modules/snapdragon/node_modules/debug/node.js b/node_modules/snapdragon/node_modules/debug/node.js deleted file mode 100644 index 7fc36fe6d..000000000 --- a/node_modules/snapdragon/node_modules/debug/node.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./src/node'); diff --git a/node_modules/snapdragon/node_modules/debug/package.json b/node_modules/snapdragon/node_modules/debug/package.json deleted file mode 100644 index fafa53acc..000000000 --- a/node_modules/snapdragon/node_modules/debug/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_args": [ - [ - "debug@2.6.9", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "debug@2.6.9", - "_id": "debug@2.6.9", - "_inBundle": false, - "_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "_location": "/snapdragon/debug", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "debug@2.6.9", - "name": "debug", - "escapedName": "debug", - "rawSpec": "2.6.9", - "saveSpec": null, - "fetchSpec": "2.6.9" - }, - "_requiredBy": [ - "/snapdragon" - ], - "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "_spec": "2.6.9", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "browser": "./src/browser.js", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, - "component": { - "scripts": { - "debug/index.js": "browser.js", - "debug/debug.js": "debug.js" - } - }, - "contributors": [ - { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "http://n8.io" - }, - { - "name": "Andrew Rhyne", - "email": "rhyneandrew@gmail.com" - } - ], - "dependencies": { - "ms": "2.0.0" - }, - "description": "small debugging utility", - "devDependencies": { - "browserify": "9.0.3", - "chai": "^3.5.0", - "concurrently": "^3.1.0", - "coveralls": "^2.11.15", - "eslint": "^3.12.1", - "istanbul": "^0.4.5", - "karma": "^1.3.0", - "karma-chai": "^0.1.0", - "karma-mocha": "^1.3.0", - "karma-phantomjs-launcher": "^1.0.2", - "karma-sinon": "^1.0.5", - "mocha": "^3.2.0", - "mocha-lcov-reporter": "^1.2.0", - "rimraf": "^2.5.4", - "sinon": "^1.17.6", - "sinon-chai": "^2.8.0" - }, - "homepage": "https://github.com/visionmedia/debug#readme", - "keywords": [ - "debug", - "log", - "debugger" - ], - "license": "MIT", - "main": "./src/index.js", - "name": "debug", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "version": "2.6.9" -} diff --git a/node_modules/snapdragon/node_modules/debug/src/browser.js b/node_modules/snapdragon/node_modules/debug/src/browser.js deleted file mode 100644 index 710692493..000000000 --- a/node_modules/snapdragon/node_modules/debug/src/browser.js +++ /dev/null @@ -1,185 +0,0 @@ -/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - 'lightseagreen', - 'forestgreen', - 'goldenrod', - 'dodgerblue', - 'darkorchid', - 'crimson' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { - return true; - } - - // is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - try { - return JSON.stringify(v); - } catch (err) { - return '[UnexpectedJSONParseError]: ' + err.message; - } -}; - - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - var useColors = this.useColors; - - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); - - if (!useColors) return; - - var c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit') - - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ - -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - return window.localStorage; - } catch (e) {} -} diff --git a/node_modules/snapdragon/node_modules/debug/src/debug.js b/node_modules/snapdragon/node_modules/debug/src/debug.js deleted file mode 100644 index 6a5e3fc94..000000000 --- a/node_modules/snapdragon/node_modules/debug/src/debug.js +++ /dev/null @@ -1,202 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = require('ms'); - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - -exports.formatters = {}; - -/** - * Previous log timestamp. - */ - -var prevTime; - -/** - * Select a color. - * @param {String} namespace - * @return {Number} - * @api private - */ - -function selectColor(namespace) { - var hash = 0, i; - - for (i in namespace) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return exports.colors[Math.abs(hash) % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function createDebug(namespace) { - - function debug() { - // disabled? - if (!debug.enabled) return; - - var self = debug; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // turn the `arguments` into a proper Array - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %O - args.unshift('%O'); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // apply env-specific formatting (colors, etc.) - exports.formatArgs.call(self, args); - - var logFn = debug.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = exports.enabled(namespace); - debug.useColors = exports.useColors(); - debug.color = selectColor(namespace); - - // env-specific initialization logic for debug instances - if ('function' === typeof exports.init) { - exports.init(debug); - } - - return debug; -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - exports.names = []; - exports.skips = []; - - var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - var len = split.length; - - for (var i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} diff --git a/node_modules/snapdragon/node_modules/debug/src/index.js b/node_modules/snapdragon/node_modules/debug/src/index.js deleted file mode 100644 index e12cf4d58..000000000 --- a/node_modules/snapdragon/node_modules/debug/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Detect Electron renderer process, which is node, but we should - * treat as a browser. - */ - -if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = require('./browser.js'); -} else { - module.exports = require('./node.js'); -} diff --git a/node_modules/snapdragon/node_modules/debug/src/inspector-log.js b/node_modules/snapdragon/node_modules/debug/src/inspector-log.js deleted file mode 100644 index 60ea6c04a..000000000 --- a/node_modules/snapdragon/node_modules/debug/src/inspector-log.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = inspectorLog; - -// black hole -const nullStream = new (require('stream').Writable)(); -nullStream._write = () => {}; - -/** - * Outputs a `console.log()` to the Node.js Inspector console *only*. - */ -function inspectorLog() { - const stdout = console._stdout; - console._stdout = nullStream; - console.log.apply(console, arguments); - console._stdout = stdout; -} diff --git a/node_modules/snapdragon/node_modules/debug/src/node.js b/node_modules/snapdragon/node_modules/debug/src/node.js deleted file mode 100644 index b15109c90..000000000 --- a/node_modules/snapdragon/node_modules/debug/src/node.js +++ /dev/null @@ -1,248 +0,0 @@ -/** - * Module dependencies. - */ - -var tty = require('tty'); -var util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ - -exports.inspectOpts = Object.keys(process.env).filter(function (key) { - return /^debug_/i.test(key); -}).reduce(function (obj, key) { - // camel-case - var prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); - - // coerce string value into JS value - var val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) val = true; - else if (/^(no|off|false|disabled)$/i.test(val)) val = false; - else if (val === 'null') val = null; - else val = Number(val); - - obj[prop] = val; - return obj; -}, {}); - -/** - * The file descriptor to write the `debug()` calls to. - * Set the `DEBUG_FD` env variable to override with another value. i.e.: - * - * $ DEBUG_FD=3 node script.js 3>debug.log - */ - -var fd = parseInt(process.env.DEBUG_FD, 10) || 2; - -if (1 !== fd && 2 !== fd) { - util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() -} - -var stream = 1 === fd ? process.stdout : - 2 === fd ? process.stderr : - createWritableStdioStream(fd); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - return 'colors' in exports.inspectOpts - ? Boolean(exports.inspectOpts.colors) - : tty.isatty(fd); -} - -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -exports.formatters.o = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n').map(function(str) { - return str.trim() - }).join(' '); -}; - -/** - * Map %o to `util.inspect()`, allowing multiple lines if needed. - */ - -exports.formatters.O = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - var name = this.namespace; - var useColors = this.useColors; - - if (useColors) { - var c = this.color; - var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); - } else { - args[0] = new Date().toUTCString() - + ' ' + name + ' ' + args[0]; - } -} - -/** - * Invokes `util.format()` with the specified arguments and writes to `stream`. - */ - -function log() { - return stream.write(util.format.apply(util, arguments) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - if (null == namespaces) { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } else { - process.env.DEBUG = namespaces; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Copied from `node/src/node.js`. - * - * XXX: It's lame that node doesn't expose this API out-of-the-box. It also - * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. - */ - -function createWritableStdioStream (fd) { - var stream; - var tty_wrap = process.binding('tty_wrap'); - - // Note stream._type is used for test-module-load-list.js - - switch (tty_wrap.guessHandleType(fd)) { - case 'TTY': - stream = new tty.WriteStream(fd); - stream._type = 'tty'; - - // Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - case 'FILE': - var fs = require('fs'); - stream = new fs.SyncWriteStream(fd, { autoClose: false }); - stream._type = 'fs'; - break; - - case 'PIPE': - case 'TCP': - var net = require('net'); - stream = new net.Socket({ - fd: fd, - readable: false, - writable: true - }); - - // FIXME Should probably have an option in net.Socket to create a - // stream from an existing fd which is writable only. But for now - // we'll just add this hack and set the `readable` member to false. - // Test: ./node test/fixtures/echo.js < /etc/passwd - stream.readable = false; - stream.read = null; - stream._type = 'pipe'; - - // FIXME Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - default: - // Probably an error on in uv_guess_handle() - throw new Error('Implement me. Unknown stream file type!'); - } - - // For supporting legacy API we put the FD here. - stream.fd = fd; - - stream._isStdio = true; - - return stream; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init (debug) { - debug.inspectOpts = {}; - - var keys = Object.keys(exports.inspectOpts); - for (var i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -/** - * Enable namespaces listed in `process.env.DEBUG` initially. - */ - -exports.enable(load()); diff --git a/node_modules/snapdragon/node_modules/define-property/LICENSE b/node_modules/snapdragon/node_modules/define-property/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/snapdragon/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/snapdragon/node_modules/define-property/README.md b/node_modules/snapdragon/node_modules/define-property/README.md deleted file mode 100644 index 8cac698ad..000000000 --- a/node_modules/snapdragon/node_modules/define-property/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# define-property [![NPM version](https://badge.fury.io/js/define-property.svg)](http://badge.fury.io/js/define-property) - -> Define a non-enumerable property on an object. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i define-property --save -``` - -## Usage - -**Params** - -* `obj`: The object on which to define the property. -* `prop`: The name of the property to be defined or modified. -* `descriptor`: The descriptor for the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**get/set** - -```js -define(obj, 'foo', { - get: function() {}, - set: function() {} -}); -``` - -## Related projects - -* [delegate-object](https://www.npmjs.com/package/delegate-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/delegate-object) | [homepage](https://github.com/doowb/delegate-object) -* [forward-object](https://www.npmjs.com/package/forward-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/forward-object) | [homepage](https://github.com/doowb/forward-object) -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep) -* [mixin-object](https://www.npmjs.com/package/mixin-object): Mixin the own and inherited properties of other objects onto the first object. Pass an… [more](https://www.npmjs.com/package/mixin-object) | [homepage](https://github.com/jonschlinkert/mixin-object) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/define-property/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 31, 2015._ diff --git a/node_modules/snapdragon/node_modules/define-property/index.js b/node_modules/snapdragon/node_modules/define-property/index.js deleted file mode 100644 index 3e0e5e133..000000000 --- a/node_modules/snapdragon/node_modules/define-property/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var isDescriptor = require('is-descriptor'); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; diff --git a/node_modules/snapdragon/node_modules/define-property/package.json b/node_modules/snapdragon/node_modules/define-property/package.json deleted file mode 100644 index 8be01d175..000000000 --- a/node_modules/snapdragon/node_modules/define-property/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_args": [ - [ - "define-property@0.2.5", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "define-property@0.2.5", - "_id": "define-property@0.2.5", - "_inBundle": false, - "_integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "_location": "/snapdragon/define-property", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "define-property@0.2.5", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "0.2.5", - "saveSpec": null, - "fetchSpec": "0.2.5" - }, - "_requiredBy": [ - "/snapdragon" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "_spec": "0.2.5", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "description": "Define a non-enumerable property on an object.", - "devDependencies": { - "mocha": "*", - "should": "^7.0.4" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "mixin-deep", - "mixin-object", - "delegate-object", - "forward-object" - ] - } - }, - "version": "0.2.5" -} diff --git a/node_modules/snapdragon/node_modules/extend-shallow/LICENSE b/node_modules/snapdragon/node_modules/extend-shallow/LICENSE deleted file mode 100644 index fa30c4cb3..000000000 --- a/node_modules/snapdragon/node_modules/extend-shallow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/snapdragon/node_modules/extend-shallow/README.md b/node_modules/snapdragon/node_modules/extend-shallow/README.md deleted file mode 100644 index cdc45d4ff..000000000 --- a/node_modules/snapdragon/node_modules/extend-shallow/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# extend-shallow [![NPM version](https://badge.fury.io/js/extend-shallow.svg)](http://badge.fury.io/js/extend-shallow) [![Build Status](https://travis-ci.org/jonschlinkert/extend-shallow.svg)](https://travis-ci.org/jonschlinkert/extend-shallow) - -> Extend an object with the properties of additional objects. node.js/javascript util. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i extend-shallow --save -``` - -## Usage - -```js -var extend = require('extend-shallow'); - -extend({a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -Pass an empty object to shallow clone: - -```js -var obj = {}; -extend(obj, {a: 'b'}, {c: 'd'}) -//=> {a: 'b', c: 'd'} -``` - -## Related - -* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. -* [for-own](https://github.com/jonschlinkert/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) -* [for-in](https://github.com/jonschlinkert/for-in): Iterate over the own and inherited enumerable properties of an objecte, and return an object… [more](https://github.com/jonschlinkert/for-in) -* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. -* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. -* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 29, 2015._ \ No newline at end of file diff --git a/node_modules/snapdragon/node_modules/extend-shallow/index.js b/node_modules/snapdragon/node_modules/extend-shallow/index.js deleted file mode 100644 index 92a067fcc..000000000 --- a/node_modules/snapdragon/node_modules/extend-shallow/index.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var isObject = require('is-extendable'); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} diff --git a/node_modules/snapdragon/node_modules/extend-shallow/package.json b/node_modules/snapdragon/node_modules/extend-shallow/package.json deleted file mode 100644 index 159e67975..000000000 --- a/node_modules/snapdragon/node_modules/extend-shallow/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "extend-shallow@2.0.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "extend-shallow@2.0.1", - "_id": "extend-shallow@2.0.1", - "_inBundle": false, - "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "_location": "/snapdragon/extend-shallow", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "extend-shallow@2.0.1", - "name": "extend-shallow", - "escapedName": "extend-shallow", - "rawSpec": "2.0.1", - "saveSpec": null, - "fetchSpec": "2.0.1" - }, - "_requiredBy": [ - "/snapdragon" - ], - "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "_spec": "2.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/extend-shallow/issues" - }, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "description": "Extend an object with the properties of additional objects. node.js/javascript util.", - "devDependencies": { - "array-slice": "^0.2.3", - "benchmarked": "^0.1.4", - "chalk": "^1.0.0", - "for-own": "^0.1.3", - "glob": "^5.0.12", - "is-plain-object": "^2.0.1", - "kind-of": "^2.0.0", - "minimist": "^1.1.1", - "mocha": "^2.2.5", - "should": "^7.0.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/extend-shallow", - "keywords": [ - "assign", - "extend", - "javascript", - "js", - "keys", - "merge", - "obj", - "object", - "prop", - "properties", - "property", - "props", - "shallow", - "util", - "utility", - "utils", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "extend-shallow", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/extend-shallow.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.1" -} diff --git a/node_modules/snapdragon/node_modules/ms/index.js b/node_modules/snapdragon/node_modules/ms/index.js deleted file mode 100644 index 6a522b16b..000000000 --- a/node_modules/snapdragon/node_modules/ms/index.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isNaN(val) === false) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - if (ms >= d) { - return Math.round(ms / d) + 'd'; - } - if (ms >= h) { - return Math.round(ms / h) + 'h'; - } - if (ms >= m) { - return Math.round(ms / m) + 'm'; - } - if (ms >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - return plural(ms, d, 'day') || - plural(ms, h, 'hour') || - plural(ms, m, 'minute') || - plural(ms, s, 'second') || - ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; -} diff --git a/node_modules/snapdragon/node_modules/ms/license.md b/node_modules/snapdragon/node_modules/ms/license.md deleted file mode 100644 index 69b61253a..000000000 --- a/node_modules/snapdragon/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Zeit, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/snapdragon/node_modules/ms/package.json b/node_modules/snapdragon/node_modules/ms/package.json deleted file mode 100644 index 440421167..000000000 --- a/node_modules/snapdragon/node_modules/ms/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "_args": [ - [ - "ms@2.0.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "ms@2.0.0", - "_id": "ms@2.0.0", - "_inBundle": false, - "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "_location": "/snapdragon/ms", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "ms@2.0.0", - "name": "ms", - "escapedName": "ms", - "rawSpec": "2.0.0", - "saveSpec": null, - "fetchSpec": "2.0.0" - }, - "_requiredBy": [ - "/snapdragon/debug" - ], - "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "_spec": "2.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "bugs": { - "url": "https://github.com/zeit/ms/issues" - }, - "description": "Tiny milisecond conversion utility", - "devDependencies": { - "eslint": "3.19.0", - "expect.js": "0.3.1", - "husky": "0.13.3", - "lint-staged": "3.4.1", - "mocha": "3.4.1" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/zeit/ms#readme", - "license": "MIT", - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "main": "./index", - "name": "ms", - "repository": { - "type": "git", - "url": "git+https://github.com/zeit/ms.git" - }, - "scripts": { - "lint": "eslint lib/* bin/*", - "precommit": "lint-staged", - "test": "mocha tests.js" - }, - "version": "2.0.0" -} diff --git a/node_modules/snapdragon/node_modules/ms/readme.md b/node_modules/snapdragon/node_modules/ms/readme.md deleted file mode 100644 index 84a9974cc..000000000 --- a/node_modules/snapdragon/node_modules/ms/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# ms - -[![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms) -[![Slack Channel](http://zeit-slackin.now.sh/badge.svg)](https://zeit.chat/) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -``` - -### Convert from milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(ms('10 hours')) // "10h" -``` - -### Time format written-out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [node](https://nodejs.org) and in the browser. -- If a number is supplied to `ms`, a string with a unit is returned. -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`). -- If you pass a string with a number and a valid unit, the number of equivalent ms is returned. - -## Caught a bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, node will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/node_modules/snapdragon/package.json b/node_modules/snapdragon/package.json deleted file mode 100644 index 0cf600168..000000000 --- a/node_modules/snapdragon/package.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_args": [ - [ - "snapdragon@0.8.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "snapdragon@0.8.2", - "_id": "snapdragon@0.8.2", - "_inBundle": false, - "_integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "_location": "/snapdragon", - "_phantomChildren": { - "is-descriptor": "0.1.6", - "is-extendable": "0.1.1" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "snapdragon@0.8.2", - "name": "snapdragon", - "escapedName": "snapdragon", - "rawSpec": "0.8.2", - "saveSpec": null, - "fetchSpec": "0.8.2" - }, - "_requiredBy": [ - "/braces", - "/expand-brackets", - "/extglob", - "/micromatch", - "/nanomatch" - ], - "_resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "_spec": "0.8.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/snapdragon/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Edward Betts", - "url": "http://edwardbetts.com" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - } - ], - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "description": "Fast, pluggable and easy-to-use parser-renderer factory.", - "devDependencies": { - "gulp": "^3.9.1", - "gulp-eslint": "^3.0.1", - "gulp-format-md": "^0.1.10", - "gulp-istanbul": "^1.1.1", - "gulp-mocha": "^3.0.1", - "gulp-unused": "^0.2.0", - "mocha": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "lib" - ], - "homepage": "https://github.com/jonschlinkert/snapdragon", - "keywords": [ - "lexer", - "snapdragon" - ], - "license": "MIT", - "main": "index.js", - "name": "snapdragon", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/snapdragon.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "description": "These libraries use snapdragon:", - "list": [ - "braces", - "expand-brackets", - "extglob", - "micromatch" - ] - }, - "reflinks": [ - "css", - "pug", - "verb", - "verb-generate-readme" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.8.2" -} diff --git a/node_modules/source-map-resolve/.jshintrc b/node_modules/source-map-resolve/.jshintrc deleted file mode 100644 index 4a29289ee..000000000 --- a/node_modules/source-map-resolve/.jshintrc +++ /dev/null @@ -1,46 +0,0 @@ -{ - "bitwise": true, - "camelcase": true, - "curly": false, - "eqeqeq": true, - "es3": true, - "forin": true, - "immed": false, - "indent": false, - "latedef": "nofunc", - "newcap": false, - "noarg": true, - "noempty": true, - "nonew": false, - "plusplus": false, - "quotmark": false, - "undef": true, - "unused": "vars", - "strict": false, - "trailing": true, - "maxparams": 5, - "maxdepth": false, - "maxstatements": false, - "maxcomplexity": false, - "maxlen": 100, - - "asi": true, - "expr": true, - "globalstrict": true, - "smarttabs": true, - "sub": true, - - "node": true, - "globals": { - "describe": false, - "it": false, - "before": false, - "beforeEach": false, - "after": false, - "afterEach": false, - "define": false, - "window": false, - "atob": true, - "JSON": false - } -} diff --git a/node_modules/source-map-resolve/.travis.yml b/node_modules/source-map-resolve/.travis.yml deleted file mode 100644 index 2197832ec..000000000 --- a/node_modules/source-map-resolve/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "node" diff --git a/node_modules/source-map-resolve/LICENSE b/node_modules/source-map-resolve/LICENSE deleted file mode 100644 index 748f42e87..000000000 --- a/node_modules/source-map-resolve/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014, 2015, 2016, 2017 Simon Lydell - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/source-map-resolve/bower.json b/node_modules/source-map-resolve/bower.json deleted file mode 100644 index e95acf31a..000000000 --- a/node_modules/source-map-resolve/bower.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "source-map-resolve", - "version": "0.5.2", - "author": "Simon Lydell", - "license": "MIT", - "description": "Resolve the source map and/or sources for a generated file.", - "keywords": [ - "source map", - "sourcemap", - "source", - "map", - "sourceMappingURL", - "resolve", - "resolver", - "locate", - "locator", - "find", - "finder" - ], - "authors": [ - "Simon Lydell" - ], - "ignore": [ - ".*" - ], - "dependencies": { - "source-map-url": "^0.4.0", - "resolve-url": "^0.2.1" - } -} \ No newline at end of file diff --git a/node_modules/source-map-resolve/changelog.md b/node_modules/source-map-resolve/changelog.md deleted file mode 100644 index b35771b82..000000000 --- a/node_modules/source-map-resolve/changelog.md +++ /dev/null @@ -1,100 +0,0 @@ -### Version 0.5.2 (2018-05-10) ### - -- Improved: Updated the version range of `atob` to disallow depending on `2.0.3` - which as a [security - vulnerability](https://snyk.io/test/npm/atob/2.0.3?severity=high&severity=medium&severity=low). - -### Version 0.5.1 (2017-10-21) ### - -- Fixed: URLs are now decoded before being passed to `read` in Node.js. This - allows reading files with spaces, for example. -- Fixed: Missing or empty `sources` fields (such as `sources: []`) in source - maps are now handled. Previously, such source maps would cause crashes or - callbacks never bing called. Now, an empty result is produced: - - ```js - sourcesResolved: [], - sourcesContent: [] - ``` - -### Version 0.5.0 (2016-02-28) ### - -- Improved: Errors now have a `sourceMapData` property that contain as much as - possible of the intended result of the function up until the error occurred. -- Changed: `resolveSources` and `resolve`, as well as their `*Sync` - alternatives, no longer fail when one single source fails to be fetched. - Instead, the `sourcesContent` array in the result object will contain error - objects for all failed sources, and strings otherwise. (Backwards-incompatible - change.) - -### Version 0.4.0 (2015-08-29) ### - -- Removed: The `ignoreSourceRoot` option of `resolveSources`. It has been - replaced with `sourceRoot: false`. (Backwards-incompatible change.) -- Added: The `sourceRoot` option of `resolveSources`. It not only allows to - ignore the source root, it also lets you replace it. -- Added: The `parseMapToJSON` method. -- Added: The `resolve` method now accepts `null, mapUrl, ...` as arguments, in - addition to the existing signature, which will read `mapUrl` instead of - looking for a sourceMappingURL in the code. - -### Version 0.3.1 (2014-08-16) ### - -- Improved: Updated the source-map-url dependency to 0.3.0. - - -### Version 0.3.0 (2014-07-02) ### - -- Removed: Argument checking. It’s not worth it. (Possibly - backwards-incompatible change.) -- Added: The `sourceRoot` property of source maps may now be ignored, which can - be useful when resolving sources outside of the browser. -- Added: It is now possible to resolve only the URLs of sources, without - reading them. - - -### Version 0.2.0 (2014-06-22) ### - -- Changed: The result of `resolveSources` is now an object, not an array. The - old result array is available in the `sourcesContent` property. - (Backwards-incompatible change.) -- Changed: `sources` has been renamed to `sourcesContent` in the result object - of `resolve`. (Backwards-incompatible change.) -- Added: `resolveSources` now also returns all sources fully resolved, in the - `sourcesResolved` property. -- Added: The result object of `resolve` now contains the `sourcesResolved` - property from `resolveSources`. - - -### Version 0.1.4 (2014-06-16) ### - -- Fixed: `sourcesContent` was mis-typed as `sourceContents`, which meant that - the `sourcesContent` property of source maps never was used when resolving - sources. - - -### Version 0.1.3 (2014-05-06) ### - -- Only documentation and meta-data changes. - - -### Version 0.1.2 (2014-03-23) ### - -- Improved: Source maps starting with `)]}'` are now parsed correctly. The spec - allows source maps to start with that character sequence to prevent XSSI - attacks. - - -### Version 0.1.1 (2014-03-06) ### - -- Improved: Make sourceRoot resolving more sensible. - - A source root such as `/scripts/subdir` is now treated as `/scripts/subdir/` - — that is, as a directory called “subdir”, not a file called “subdir”. - Pointing to a file as source root does not makes sense. - - - -### Version 0.1.0 (2014-03-03) ### - -- Initial release. diff --git a/node_modules/source-map-resolve/component.json b/node_modules/source-map-resolve/component.json deleted file mode 100644 index 7af17d41e..000000000 --- a/node_modules/source-map-resolve/component.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "source-map-resolve", - "version": "0.5.2", - "author": "Simon Lydell", - "license": "MIT", - "description": "Resolve the source map and/or sources for a generated file.", - "keywords": [ - "source map", - "sourcemap", - "source", - "map", - "sourceMappingURL", - "resolve", - "resolver", - "locate", - "locator", - "find", - "finder" - ], - "repo": "lydell/source-map-resolve", - "main": "source-map-resolve.js", - "scripts": [ - "source-map-resolve.js" - ], - "dependencies": { - "lydell/source-map-url": "~0.4.0", - "lydell/resolve-url": "~0.2.1" - } -} \ No newline at end of file diff --git a/node_modules/source-map-resolve/generate-source-map-resolve.js b/node_modules/source-map-resolve/generate-source-map-resolve.js deleted file mode 100644 index a37e393aa..000000000 --- a/node_modules/source-map-resolve/generate-source-map-resolve.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2014, 2017 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var fs = require("fs") - -var template = fs.readFileSync("source-map-resolve.js.template").toString() -var nodeCode = fs.readFileSync("lib/source-map-resolve-node.js").toString() - -nodeCode = nodeCode - - // Remove leading comments and `require`s. - .replace(/^\s*(?:\/\/.+\s+|var\s+\w+\s*=\s*require\([^)]+\).*\s+)*/, "") - - // Remove `urix`. - .replace(/(\w+)\s*=\s*urix\(\1\)\s*/g, "") - - // Remove `decode-uri-component`. - .replace(/(var readUrl = )decodeUriComponent\(([\w.]+)\)/g, "$1$2") - - // Change `module.exports = {...}` to `return {...}`. - .replace(/module\.exports = (\{[^}]+\})\s*$/, "return $1") - - // Indent. - .replace(/^(?!$)/gm, " ") - -var code = template.replace(/[ \t]*\{\{source-map-resolve-node.js\}\}/, nodeCode) - -fs.writeFileSync("source-map-resolve.js", code) diff --git a/node_modules/source-map-resolve/lib/decode-uri-component.js b/node_modules/source-map-resolve/lib/decode-uri-component.js deleted file mode 100644 index c7064ff4d..000000000 --- a/node_modules/source-map-resolve/lib/decode-uri-component.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var decodeUriComponent = require("decode-uri-component") - -function customDecodeUriComponent(string) { - // `decodeUriComponent` turns `+` into ` `, but that's not wanted. - return decodeUriComponent(string.replace(/\+/g, "%2B")) -} - -module.exports = customDecodeUriComponent diff --git a/node_modules/source-map-resolve/lib/resolve-url.js b/node_modules/source-map-resolve/lib/resolve-url.js deleted file mode 100644 index 2ca8fa9a9..000000000 --- a/node_modules/source-map-resolve/lib/resolve-url.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var url = require("url") - -function resolveUrl(/* ...urls */) { - return Array.prototype.reduce.call(arguments, function(resolved, nextUrl) { - return url.resolve(resolved, nextUrl) - }) -} - -module.exports = resolveUrl diff --git a/node_modules/source-map-resolve/lib/source-map-resolve-node.js b/node_modules/source-map-resolve/lib/source-map-resolve-node.js deleted file mode 100644 index f80953d5d..000000000 --- a/node_modules/source-map-resolve/lib/source-map-resolve-node.js +++ /dev/null @@ -1,302 +0,0 @@ -// Copyright 2014, 2015, 2016, 2017 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var sourceMappingURL = require("source-map-url") -var resolveUrl = require("./resolve-url") -var decodeUriComponent = require("./decode-uri-component") -var urix = require("urix") -var atob = require("atob") - - - -function callbackAsync(callback, error, result) { - setImmediate(function() { callback(error, result) }) -} - -function parseMapToJSON(string, data) { - try { - return JSON.parse(string.replace(/^\)\]\}'/, "")) - } catch (error) { - error.sourceMapData = data - throw error - } -} - -function readSync(read, url, data) { - var readUrl = decodeUriComponent(url) - try { - return String(read(readUrl)) - } catch (error) { - error.sourceMapData = data - throw error - } -} - - - -function resolveSourceMap(code, codeUrl, read, callback) { - var mapData - try { - mapData = resolveSourceMapHelper(code, codeUrl) - } catch (error) { - return callbackAsync(callback, error) - } - if (!mapData || mapData.map) { - return callbackAsync(callback, null, mapData) - } - var readUrl = decodeUriComponent(mapData.url) - read(readUrl, function(error, result) { - if (error) { - error.sourceMapData = mapData - return callback(error) - } - mapData.map = String(result) - try { - mapData.map = parseMapToJSON(mapData.map, mapData) - } catch (error) { - return callback(error) - } - callback(null, mapData) - }) -} - -function resolveSourceMapSync(code, codeUrl, read) { - var mapData = resolveSourceMapHelper(code, codeUrl) - if (!mapData || mapData.map) { - return mapData - } - mapData.map = readSync(read, mapData.url, mapData) - mapData.map = parseMapToJSON(mapData.map, mapData) - return mapData -} - -var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/ -var jsonMimeTypeRegex = /^(?:application|text)\/json$/ - -function resolveSourceMapHelper(code, codeUrl) { - codeUrl = urix(codeUrl) - - var url = sourceMappingURL.getFrom(code) - if (!url) { - return null - } - - var dataUri = url.match(dataUriRegex) - if (dataUri) { - var mimeType = dataUri[1] - var lastParameter = dataUri[2] || "" - var encoded = dataUri[3] || "" - var data = { - sourceMappingURL: url, - url: null, - sourcesRelativeTo: codeUrl, - map: encoded - } - if (!jsonMimeTypeRegex.test(mimeType)) { - var error = new Error("Unuseful data uri mime type: " + (mimeType || "text/plain")) - error.sourceMapData = data - throw error - } - data.map = parseMapToJSON( - lastParameter === ";base64" ? atob(encoded) : decodeURIComponent(encoded), - data - ) - return data - } - - var mapUrl = resolveUrl(codeUrl, url) - return { - sourceMappingURL: url, - url: mapUrl, - sourcesRelativeTo: mapUrl, - map: null - } -} - - - -function resolveSources(map, mapUrl, read, options, callback) { - if (typeof options === "function") { - callback = options - options = {} - } - var pending = map.sources ? map.sources.length : 0 - var result = { - sourcesResolved: [], - sourcesContent: [] - } - - if (pending === 0) { - callbackAsync(callback, null, result) - return - } - - var done = function() { - pending-- - if (pending === 0) { - callback(null, result) - } - } - - resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) { - result.sourcesResolved[index] = fullUrl - if (typeof sourceContent === "string") { - result.sourcesContent[index] = sourceContent - callbackAsync(done, null) - } else { - var readUrl = decodeUriComponent(fullUrl) - read(readUrl, function(error, source) { - result.sourcesContent[index] = error ? error : String(source) - done() - }) - } - }) -} - -function resolveSourcesSync(map, mapUrl, read, options) { - var result = { - sourcesResolved: [], - sourcesContent: [] - } - - if (!map.sources || map.sources.length === 0) { - return result - } - - resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) { - result.sourcesResolved[index] = fullUrl - if (read !== null) { - if (typeof sourceContent === "string") { - result.sourcesContent[index] = sourceContent - } else { - var readUrl = decodeUriComponent(fullUrl) - try { - result.sourcesContent[index] = String(read(readUrl)) - } catch (error) { - result.sourcesContent[index] = error - } - } - } - }) - - return result -} - -var endingSlash = /\/?$/ - -function resolveSourcesHelper(map, mapUrl, options, fn) { - options = options || {} - mapUrl = urix(mapUrl) - var fullUrl - var sourceContent - var sourceRoot - for (var index = 0, len = map.sources.length; index < len; index++) { - sourceRoot = null - if (typeof options.sourceRoot === "string") { - sourceRoot = options.sourceRoot - } else if (typeof map.sourceRoot === "string" && options.sourceRoot !== false) { - sourceRoot = map.sourceRoot - } - // If the sourceRoot is the empty string, it is equivalent to not setting - // the property at all. - if (sourceRoot === null || sourceRoot === '') { - fullUrl = resolveUrl(mapUrl, map.sources[index]) - } else { - // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes - // `/scripts/subdir/`, not `/scripts/`. Pointing to a file as source root - // does not make sense. - fullUrl = resolveUrl(mapUrl, sourceRoot.replace(endingSlash, "/"), map.sources[index]) - } - sourceContent = (map.sourcesContent || [])[index] - fn(fullUrl, sourceContent, index) - } -} - - - -function resolve(code, codeUrl, read, options, callback) { - if (typeof options === "function") { - callback = options - options = {} - } - if (code === null) { - var mapUrl = codeUrl - var data = { - sourceMappingURL: null, - url: mapUrl, - sourcesRelativeTo: mapUrl, - map: null - } - var readUrl = decodeUriComponent(mapUrl) - read(readUrl, function(error, result) { - if (error) { - error.sourceMapData = data - return callback(error) - } - data.map = String(result) - try { - data.map = parseMapToJSON(data.map, data) - } catch (error) { - return callback(error) - } - _resolveSources(data) - }) - } else { - resolveSourceMap(code, codeUrl, read, function(error, mapData) { - if (error) { - return callback(error) - } - if (!mapData) { - return callback(null, null) - } - _resolveSources(mapData) - }) - } - - function _resolveSources(mapData) { - resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function(error, result) { - if (error) { - return callback(error) - } - mapData.sourcesResolved = result.sourcesResolved - mapData.sourcesContent = result.sourcesContent - callback(null, mapData) - }) - } -} - -function resolveSync(code, codeUrl, read, options) { - var mapData - if (code === null) { - var mapUrl = codeUrl - mapData = { - sourceMappingURL: null, - url: mapUrl, - sourcesRelativeTo: mapUrl, - map: null - } - mapData.map = readSync(read, mapUrl, mapData) - mapData.map = parseMapToJSON(mapData.map, mapData) - } else { - mapData = resolveSourceMapSync(code, codeUrl, read) - if (!mapData) { - return null - } - } - var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options) - mapData.sourcesResolved = result.sourcesResolved - mapData.sourcesContent = result.sourcesContent - return mapData -} - - - -module.exports = { - resolveSourceMap: resolveSourceMap, - resolveSourceMapSync: resolveSourceMapSync, - resolveSources: resolveSources, - resolveSourcesSync: resolveSourcesSync, - resolve: resolve, - resolveSync: resolveSync, - parseMapToJSON: parseMapToJSON -} diff --git a/node_modules/source-map-resolve/package.json b/node_modules/source-map-resolve/package.json deleted file mode 100644 index b39e07042..000000000 --- a/node_modules/source-map-resolve/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "_args": [ - [ - "source-map-resolve@0.5.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "source-map-resolve@0.5.2", - "_id": "source-map-resolve@0.5.2", - "_inBundle": false, - "_integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "_location": "/source-map-resolve", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "source-map-resolve@0.5.2", - "name": "source-map-resolve", - "escapedName": "source-map-resolve", - "rawSpec": "0.5.2", - "saveSpec": null, - "fetchSpec": "0.5.2" - }, - "_requiredBy": [ - "/snapdragon" - ], - "_resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "_spec": "0.5.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Simon Lydell" - }, - "browser": "source-map-resolve.js", - "bugs": { - "url": "https://github.com/lydell/source-map-resolve/issues" - }, - "dependencies": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - }, - "description": "Resolve the source map and/or sources for a generated file.", - "devDependencies": { - "Base64": "1.0.1", - "jshint": "2.9.5", - "setimmediate": "1.0.5", - "simple-asyncify": "1.0.0", - "tape": "4.9.0" - }, - "homepage": "https://github.com/lydell/source-map-resolve#readme", - "keywords": [ - "source map", - "sourcemap", - "source", - "map", - "sourceMappingURL", - "resolve", - "resolver", - "locate", - "locator", - "find", - "finder" - ], - "license": "MIT", - "main": "lib/source-map-resolve-node.js", - "name": "source-map-resolve", - "repository": { - "type": "git", - "url": "git+https://github.com/lydell/source-map-resolve.git" - }, - "scripts": { - "build": "node generate-source-map-resolve.js", - "lint": "jshint lib/ test/", - "test": "npm run lint && npm run unit", - "unit": "node test/source-map-resolve.js && node test/windows.js" - }, - "version": "0.5.2" -} diff --git a/node_modules/source-map-resolve/readme.md b/node_modules/source-map-resolve/readme.md deleted file mode 100644 index c70bcca14..000000000 --- a/node_modules/source-map-resolve/readme.md +++ /dev/null @@ -1,231 +0,0 @@ -Overview [![Build Status](https://travis-ci.org/lydell/source-map-resolve.svg?branch=master)](https://travis-ci.org/lydell/source-map-resolve) -======== - -Resolve the source map and/or sources for a generated file. - -```js -var sourceMapResolve = require("source-map-resolve") -var sourceMap = require("source-map") - -var code = [ - "!function(){...}();", - "/*# sourceMappingURL=foo.js.map */" -].join("\n") - -sourceMapResolve.resolveSourceMap(code, "/js/foo.js", fs.readFile, function(error, result) { - if (error) { - return notifyFailure(error) - } - result - // { - // map: {file: "foo.js", mappings: "...", sources: ["/coffee/foo.coffee"], names: []}, - // url: "/js/foo.js.map", - // sourcesRelativeTo: "/js/foo.js.map", - // sourceMappingURL: "foo.js.map" - // } - - sourceMapResolve.resolveSources(result.map, result.sourcesRelativeTo, fs.readFile, function(error, result) { - if (error) { - return notifyFailure(error) - } - result - // { - // sourcesResolved: ["/coffee/foo.coffee"], - // sourcesContent: [""] - // } - }) -}) - -sourceMapResolve.resolve(code, "/js/foo.js", fs.readFile, function(error, result) { - if (error) { - return notifyFailure(error) - } - result - // { - // map: {file: "foo.js", mappings: "...", sources: ["/coffee/foo.coffee"], names: []}, - // url: "/js/foo.js.map", - // sourcesRelativeTo: "/js/foo.js.map", - // sourceMappingURL: "foo.js.map", - // sourcesResolved: ["/coffee/foo.coffee"], - // sourcesContent: [""] - // } - result.map.sourcesContent = result.sourcesContent - var map = new sourceMap.sourceMapConsumer(result.map) - map.sourceContentFor("/coffee/foo.coffee") - // "" -}) -``` - - -Installation -============ - -- `npm install source-map-resolve` -- `bower install source-map-resolve` -- `component install lydell/source-map-resolve` - -Works with CommonJS, AMD and browser globals, through UMD. - -Note: This module requires `setImmediate` and `atob`. -Use polyfills if needed, such as: - -- -- - - -Usage -===== - -### `sourceMapResolve.resolveSourceMap(code, codeUrl, read, callback)` ### - -- `code` is a string of code that may or may not contain a sourceMappingURL - comment. Such a comment is used to resolve the source map. -- `codeUrl` is the url to the file containing `code`. If the sourceMappingURL - is relative, it is resolved against `codeUrl`. -- `read(url, callback)` is a function that reads `url` and responds using - `callback(error, content)`. In Node.js you might want to use `fs.readFile`, - while in the browser you might want to use an asynchronus `XMLHttpRequest`. -- `callback(error, result)` is a function that is invoked with either an error - or `null` and the result. - -The result is an object with the following properties: - -- `map`: The source map for `code`, as an object (not a string). -- `url`: The url to the source map. If the source map came from a data uri, - this property is `null`, since then there is no url to it. -- `sourcesRelativeTo`: The url that the sources of the source map are relative - to. Since the sources are relative to the source map, and the url to the - source map is provided as the `url` property, this property might seem - superfluos. However, remember that the `url` property can be `null` if the - source map came from a data uri. If so, the sources are relative to the file - containing the data uri—`codeUrl`. This property will be identical to the - `url` property or `codeUrl`, whichever is appropriate. This way you can - conveniently resolve the sources without having to think about where the - source map came from. -- `sourceMappingURL`: The url of the sourceMappingURL comment in `code`. - -If `code` contains no sourceMappingURL, the result is `null`. - -### `sourceMapResolve.resolveSources(map, mapUrl, read, [options], callback)` ### - -- `map` is a source map, as an object (not a string). -- `mapUrl` is the url to the file containing `map`. Relative sources in the - source map, if any, are resolved against `mapUrl`. -- `read(url, callback)` is a function that reads `url` and responds using - `callback(error, content)`. In Node.js you might want to use `fs.readFile`, - while in the browser you might want to use an asynchronus `XMLHttpRequest`. -- `options` is an optional object with any of the following properties: - - `sourceRoot`: Override the `sourceRoot` property of the source map, which - might only be relevant when resolving sources in the browser. This lets you - bypass it when using the module outside of a browser, if needed. Pass a - string to replace the `sourceRoot` property with, or `false` to ignore it. - Defaults to `undefined`. -- `callback(error, result)` is a function that is invoked with either an error - or `null` and the result. - -The result is an object with the following properties: - -- `sourcesResolved`: The same as `map.sources`, except all the sources are - fully resolved. -- `sourcesContent`: An array with the contents of all sources in `map.sources`, - in the same order as `map.sources`. If getting the contents of a source fails, - an error object is put into the array instead. - -### `sourceMapResolve.resolve(code, codeUrl, read, [options], callback)` ### - -The arguments are identical to `sourceMapResolve.resolveSourceMap`, except that -you may also provide the same `options` as in `sourceMapResolve.resolveSources`. - -This is a convenience method that first resolves the source map and then its -sources. You could also do this by first calling -`sourceMapResolve.resolveSourceMap` and then `sourceMapResolve.resolveSources`. - -The result is identical to `sourceMapResolve.resolveSourceMap`, with the -properties from `sourceMapResolve.resolveSources` merged into it. - -There is one extra feature available, though. If `code` is `null`, `codeUrl` is -treated as a url to the source map instead of to `code`, and will be read. This -is handy if you _sometimes_ get the source map url from the `SourceMap: ` -header (see the [Notes] section). In this case, the `sourceMappingURL` property -of the result is `null`. - - -[Notes]: #notes - -### `sourceMapResolve.*Sync()` ### - -There are also sync versions of the three previous functions. They are identical -to the async versions, except: - -- They expect a sync reading function. In Node.js you might want to use - `fs.readFileSync`, while in the browser you might want to use a synchronus - `XMLHttpRequest`. -- They throw errors and return the result instead of using a callback. - -`sourceMapResolve.resolveSourcesSync` also accepts `null` as the `read` -parameter. The result is the same as when passing a function as the `read -parameter`, except that the `sourcesContent` property of the result will be an -empty array. In other words, the sources aren’t read. You only get the -`sourcesResolved` property. (This only supported in the synchronus version, since -there is no point doing it asynchronusly.) - -### `sourceMapResolve.parseMapToJSON(string, [data])` ### - -The spec says that if a source map (as a string) starts with `)]}'`, it should -be stripped off. This is to prevent XSSI attacks. This function does that and -returns the result of `JSON.parse`ing what’s left. - -If this function throws `error`, `error.sourceMapData === data`. - -### Errors - -All errors passed to callbacks or thrown by this module have a `sourceMapData` -property that contain as much as possible of the intended result of the function -up until the error occurred. - -Note that while the `map` property of result objects always is an object, -`error.sourceMapData.map` will be a string if parsing that string fails. - - -Note -==== - -This module resolves the source map for a given generated file by looking for a -sourceMappingURL comment. The spec defines yet a way to provide the URL to the -source map: By sending the `SourceMap: ` header along with the generated -file. Since this module doesn’t retrive the generated code for you (instead -_you_ give the generated code to the module), it’s up to you to look for such a -header when you retrieve the file (should the need arise). - - -Development -=========== - -Tests ------ - -First off, run `npm install` to install testing modules and browser polyfills. - -`npm test` lints the code and runs the test suite in Node.js. - -x-package.json5 ---------------- - -package.json, component.json and bower.json are all generated from -x-package.json5 by using [`xpkg`]. Only edit x-package.json5, and remember to -run `xpkg` before commiting! - -[`xpkg`]: https://github.com/kof/node-xpkg - -Generating the browser version ------------------------------- - -source-map-resolve.js is generated from source-map-resolve-node.js and -source-map-resolve-template.js. Only edit the two latter files, _not_ -source-map-resolve.js! To generate it, run `npm run build`. - - -License -======= - -[The X11 (“MIT”) License](LICENSE). diff --git a/node_modules/source-map-resolve/source-map-resolve.js b/node_modules/source-map-resolve/source-map-resolve.js deleted file mode 100644 index 387fc1970..000000000 --- a/node_modules/source-map-resolve/source-map-resolve.js +++ /dev/null @@ -1,309 +0,0 @@ -// Copyright 2014, 2015, 2016, 2017 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -// Note: source-map-resolve.js is generated from source-map-resolve-node.js and -// source-map-resolve-template.js. Only edit the two latter files, _not_ -// source-map-resolve.js! - -void (function(root, factory) { - if (typeof define === "function" && define.amd) { - define(["source-map-url", "resolve-url"], factory) - } else if (typeof exports === "object") { - var sourceMappingURL = require("source-map-url") - var resolveUrl = require("resolve-url") - module.exports = factory(sourceMappingURL, resolveUrl) - } else { - root.sourceMapResolve = factory(root.sourceMappingURL, root.resolveUrl) - } -}(this, function(sourceMappingURL, resolveUrl) { - - function callbackAsync(callback, error, result) { - setImmediate(function() { callback(error, result) }) - } - - function parseMapToJSON(string, data) { - try { - return JSON.parse(string.replace(/^\)\]\}'/, "")) - } catch (error) { - error.sourceMapData = data - throw error - } - } - - function readSync(read, url, data) { - var readUrl = url - try { - return String(read(readUrl)) - } catch (error) { - error.sourceMapData = data - throw error - } - } - - - - function resolveSourceMap(code, codeUrl, read, callback) { - var mapData - try { - mapData = resolveSourceMapHelper(code, codeUrl) - } catch (error) { - return callbackAsync(callback, error) - } - if (!mapData || mapData.map) { - return callbackAsync(callback, null, mapData) - } - var readUrl = mapData.url - read(readUrl, function(error, result) { - if (error) { - error.sourceMapData = mapData - return callback(error) - } - mapData.map = String(result) - try { - mapData.map = parseMapToJSON(mapData.map, mapData) - } catch (error) { - return callback(error) - } - callback(null, mapData) - }) - } - - function resolveSourceMapSync(code, codeUrl, read) { - var mapData = resolveSourceMapHelper(code, codeUrl) - if (!mapData || mapData.map) { - return mapData - } - mapData.map = readSync(read, mapData.url, mapData) - mapData.map = parseMapToJSON(mapData.map, mapData) - return mapData - } - - var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/ - var jsonMimeTypeRegex = /^(?:application|text)\/json$/ - - function resolveSourceMapHelper(code, codeUrl) { - var url = sourceMappingURL.getFrom(code) - if (!url) { - return null - } - - var dataUri = url.match(dataUriRegex) - if (dataUri) { - var mimeType = dataUri[1] - var lastParameter = dataUri[2] || "" - var encoded = dataUri[3] || "" - var data = { - sourceMappingURL: url, - url: null, - sourcesRelativeTo: codeUrl, - map: encoded - } - if (!jsonMimeTypeRegex.test(mimeType)) { - var error = new Error("Unuseful data uri mime type: " + (mimeType || "text/plain")) - error.sourceMapData = data - throw error - } - data.map = parseMapToJSON( - lastParameter === ";base64" ? atob(encoded) : decodeURIComponent(encoded), - data - ) - return data - } - - var mapUrl = resolveUrl(codeUrl, url) - return { - sourceMappingURL: url, - url: mapUrl, - sourcesRelativeTo: mapUrl, - map: null - } - } - - - - function resolveSources(map, mapUrl, read, options, callback) { - if (typeof options === "function") { - callback = options - options = {} - } - var pending = map.sources ? map.sources.length : 0 - var result = { - sourcesResolved: [], - sourcesContent: [] - } - - if (pending === 0) { - callbackAsync(callback, null, result) - return - } - - var done = function() { - pending-- - if (pending === 0) { - callback(null, result) - } - } - - resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) { - result.sourcesResolved[index] = fullUrl - if (typeof sourceContent === "string") { - result.sourcesContent[index] = sourceContent - callbackAsync(done, null) - } else { - var readUrl = fullUrl - read(readUrl, function(error, source) { - result.sourcesContent[index] = error ? error : String(source) - done() - }) - } - }) - } - - function resolveSourcesSync(map, mapUrl, read, options) { - var result = { - sourcesResolved: [], - sourcesContent: [] - } - - if (!map.sources || map.sources.length === 0) { - return result - } - - resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) { - result.sourcesResolved[index] = fullUrl - if (read !== null) { - if (typeof sourceContent === "string") { - result.sourcesContent[index] = sourceContent - } else { - var readUrl = fullUrl - try { - result.sourcesContent[index] = String(read(readUrl)) - } catch (error) { - result.sourcesContent[index] = error - } - } - } - }) - - return result - } - - var endingSlash = /\/?$/ - - function resolveSourcesHelper(map, mapUrl, options, fn) { - options = options || {} - var fullUrl - var sourceContent - var sourceRoot - for (var index = 0, len = map.sources.length; index < len; index++) { - sourceRoot = null - if (typeof options.sourceRoot === "string") { - sourceRoot = options.sourceRoot - } else if (typeof map.sourceRoot === "string" && options.sourceRoot !== false) { - sourceRoot = map.sourceRoot - } - // If the sourceRoot is the empty string, it is equivalent to not setting - // the property at all. - if (sourceRoot === null || sourceRoot === '') { - fullUrl = resolveUrl(mapUrl, map.sources[index]) - } else { - // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes - // `/scripts/subdir/`, not `/scripts/`. Pointing to a file as source root - // does not make sense. - fullUrl = resolveUrl(mapUrl, sourceRoot.replace(endingSlash, "/"), map.sources[index]) - } - sourceContent = (map.sourcesContent || [])[index] - fn(fullUrl, sourceContent, index) - } - } - - - - function resolve(code, codeUrl, read, options, callback) { - if (typeof options === "function") { - callback = options - options = {} - } - if (code === null) { - var mapUrl = codeUrl - var data = { - sourceMappingURL: null, - url: mapUrl, - sourcesRelativeTo: mapUrl, - map: null - } - var readUrl = mapUrl - read(readUrl, function(error, result) { - if (error) { - error.sourceMapData = data - return callback(error) - } - data.map = String(result) - try { - data.map = parseMapToJSON(data.map, data) - } catch (error) { - return callback(error) - } - _resolveSources(data) - }) - } else { - resolveSourceMap(code, codeUrl, read, function(error, mapData) { - if (error) { - return callback(error) - } - if (!mapData) { - return callback(null, null) - } - _resolveSources(mapData) - }) - } - - function _resolveSources(mapData) { - resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function(error, result) { - if (error) { - return callback(error) - } - mapData.sourcesResolved = result.sourcesResolved - mapData.sourcesContent = result.sourcesContent - callback(null, mapData) - }) - } - } - - function resolveSync(code, codeUrl, read, options) { - var mapData - if (code === null) { - var mapUrl = codeUrl - mapData = { - sourceMappingURL: null, - url: mapUrl, - sourcesRelativeTo: mapUrl, - map: null - } - mapData.map = readSync(read, mapUrl, mapData) - mapData.map = parseMapToJSON(mapData.map, mapData) - } else { - mapData = resolveSourceMapSync(code, codeUrl, read) - if (!mapData) { - return null - } - } - var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options) - mapData.sourcesResolved = result.sourcesResolved - mapData.sourcesContent = result.sourcesContent - return mapData - } - - - - return { - resolveSourceMap: resolveSourceMap, - resolveSourceMapSync: resolveSourceMapSync, - resolveSources: resolveSources, - resolveSourcesSync: resolveSourcesSync, - resolve: resolve, - resolveSync: resolveSync, - parseMapToJSON: parseMapToJSON - } - -})); diff --git a/node_modules/source-map-resolve/source-map-resolve.js.template b/node_modules/source-map-resolve/source-map-resolve.js.template deleted file mode 100644 index 813198a1d..000000000 --- a/node_modules/source-map-resolve/source-map-resolve.js.template +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014, 2015, 2016, 2017 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -// Note: source-map-resolve.js is generated from source-map-resolve-node.js and -// source-map-resolve-template.js. Only edit the two latter files, _not_ -// source-map-resolve.js! - -void (function(root, factory) { - if (typeof define === "function" && define.amd) { - define(["source-map-url", "resolve-url"], factory) - } else if (typeof exports === "object") { - var sourceMappingURL = require("source-map-url") - var resolveUrl = require("resolve-url") - module.exports = factory(sourceMappingURL, resolveUrl) - } else { - root.sourceMapResolve = factory(root.sourceMappingURL, root.resolveUrl) - } -}(this, function(sourceMappingURL, resolveUrl) { - - {{source-map-resolve-node.js}} - -})); diff --git a/node_modules/source-map-resolve/test/common.js b/node_modules/source-map-resolve/test/common.js deleted file mode 100644 index 8616c171d..000000000 --- a/node_modules/source-map-resolve/test/common.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -function u(url) { - return "code\n/*# sourceMappingURL=" + url + " */" -} - -function read(x) { - return function() { - return x - } -} - -function Throws(x) { - throw new Error(x) -} - -function identity(x) { - return x -} - -module.exports = { - u: u, - read: read, - Throws: Throws, - identity: identity -} diff --git a/node_modules/source-map-resolve/test/read.js b/node_modules/source-map-resolve/test/read.js deleted file mode 100644 index 6bf2dadf5..000000000 --- a/node_modules/source-map-resolve/test/read.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var test = require("tape") -var asyncify = require("simple-asyncify") -var common = require("./common") -var u = common.u - -var sourceMapResolve = require("../") - -var mapUrl = "operators%20map.json" -var codeUrl = "./built files/operators:+-<>%25.js" -var sourceUrl = "../source files/operators:+-<>%25.coffee" - -function readTest(t, files) { - return function(file, callback) { - var fileData = files[file] - t.ok(fileData, "decoded file name") - if (callback) { - callback(null, fileData) - } else { - return fileData - } - } -} - - - -function testResolveSourceMap(method, sync) { - return function(t) { - t.plan(2) - - if (sync) { - method = asyncify(method) - } - - var read = readTest(t, { - "built files/operators map.json": "{}" - }) - - method(u(mapUrl), codeUrl, read, function(error) { - t.error(error) - }) - - } -} - -test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false)) - -test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true)) - - -function testResolveSources(method, sync) { - return function(t) { - t.plan(2) - - if (sync) { - method = asyncify(method) - } - - var map = { - sources: [sourceUrl] - } - var read = readTest(t, { - "../source files/operators:+-<>%.coffee": "source code" - }) - - method(map, mapUrl, read, function(error) { - t.error(error) - }) - - } -} - -test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false)) - -test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true)) - - -function testResolve(method, sync) { - return function(t) { - t.plan(3) - - if (sync) { - method = asyncify(method) - } - - var map = { - sources: [sourceUrl] - } - var read = readTest(t, { - "built files/operators map.json": JSON.stringify(map), - "source files/operators:+-<>%.coffee": "source code" - }) - - method(u(mapUrl), codeUrl, read, function(error) { - t.error(error) - }) - - } -} - -test(".resolve", testResolve(sourceMapResolve.resolve, false)) - -test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true)) diff --git a/node_modules/source-map-resolve/test/source-map-resolve.js b/node_modules/source-map-resolve/test/source-map-resolve.js deleted file mode 100644 index f61c0060f..000000000 --- a/node_modules/source-map-resolve/test/source-map-resolve.js +++ /dev/null @@ -1,1162 +0,0 @@ -// Copyright 2014, 2015, 2016, 2017 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var test = require("tape") -var asyncify = require("simple-asyncify") -var common = require("./common") -var u = common.u -var read = common.read -var Throws = common.Throws -var identity = common.identity - -var sourceMapResolve = require("../") - -// Polyfills. -require("setimmediate") -if (typeof window !== "undefined" && !window.atob) { - window.atob = require("Base64").atob -} - -"use strict" - -var map = { - simple: { - mappings: "AAAA", - sources: ["foo.js"], - names: [] - }, - sourceRoot: { - mappings: "AAAA", - sourceRoot: "/static/js/app/", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - names: [] - }, - sourceRootNoSlash: { - mappings: "AAAA", - sourceRoot: "/static/js/app", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - names: [] - }, - sourceRootEmpty: { - mappings: "AAAA", - sourceRoot: "", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - names: [] - }, - sourcesContent: { - mappings: "AAAA", - sourceRoot: "/static/js/app/", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - sourcesContent: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - names: [] - }, - mixed: { - mappings: "AAAA", - sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"], - sourcesContent: ["foo.js", null , null , "/version.js", "//foo.org/baz.js"], - names: [] - }, - noSources: { - mappings: "", - sources: [], - names: [] - }, - empty: {} -} -map.simpleString = JSON.stringify(map.simple) -map.XSSIsafe = ")]}'" + map.simpleString - -var code = { - fileRelative: u("foo.js.map"), - domainRelative: u("/foo.js.map"), - schemeRelative: u("//foo.org/foo.js.map"), - absolute: u("https://foo.org/foo.js.map"), - dataUri: u("data:application/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"), - base64: u("data:application/json;base64," + - "eyJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W119"), - dataUriText: u("data:text/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"), - dataUriParameter: u("data:application/json;charset=UTF-8;foo=bar," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"), - dataUriNoMime: u("data:,foo"), - dataUriInvalidMime: u("data:text/html,foo"), - dataUriInvalidJSON: u("data:application/json,foo"), - dataUriXSSIsafe: u("data:application/json," + ")%5D%7D%27" + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"), - dataUriEmpty: u("data:"), - noMap: "" -} - - -function testResolveSourceMap(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - - var codeUrl = "http://example.com/a/b/c/foo.js" - - t.plan(1 + 12*3 + 6*4) - - t.equal(typeof method, "function", "is a function") - - if (sync) { - method = asyncify(method) - } - - var next = false - function isAsync() { t.ok(next, "is async") } - - method(code.fileRelative, codeUrl, wrap(read(map.simpleString)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "foo.js.map", - url: "http://example.com/a/b/c/foo.js.map", - sourcesRelativeTo: "http://example.com/a/b/c/foo.js.map", - map: map.simple - }, "fileRelative") - isAsync() - }) - - method(code.domainRelative, codeUrl, wrap(read(map.simpleString)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "/foo.js.map", - url: "http://example.com/foo.js.map", - sourcesRelativeTo: "http://example.com/foo.js.map", - map: map.simple - }, "domainRelative") - isAsync() - }) - - method(code.schemeRelative, codeUrl, wrap(read(map.simpleString)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "//foo.org/foo.js.map", - url: "http://foo.org/foo.js.map", - sourcesRelativeTo: "http://foo.org/foo.js.map", - map: map.simple - }, "schemeRelative") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read(map.simpleString)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple - }, "absolute") - isAsync() - }) - - method(code.dataUri, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "dataUri") - isAsync() - }) - - method(code.base64, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json;base64," + - "eyJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W119", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "base64") - isAsync() - }) - - method(code.dataUriText, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:text/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "dataUriText") - isAsync() - }) - - method(code.dataUriParameter, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json;charset=UTF-8;foo=bar," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "dataUriParameter") - isAsync() - }) - - method(code.dataUriNoMime, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriNoMime .sourceMapData") - t.ok(error.message.match(/mime type.+text\/plain/), "dataUriNoMime") - t.notOk(result) - isAsync() - }) - - method(code.dataUriInvalidMime, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:text/html,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriInvalidMime .sourceMapData") - t.ok(error.message.match(/mime type.+text\/html/), "dataUriInvalidMime") - t.notOk(result) - isAsync() - }) - - method(code.dataUriInvalidJSON, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:application/json,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriInvalidJSON .sourceMapData") - t.ok(error instanceof SyntaxError && error.message !== "data:application/json,foo", - "dataUriInvalidJSON") - t.notOk(result) - isAsync() - }) - - method(code.dataUriXSSIsafe, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json," + ")%5D%7D%27" + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple - }, "dataUriXSSIsafe") - isAsync() - }) - - method(code.dataUriEmpty, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:", - url: null, - sourcesRelativeTo: codeUrl, - map: "" - }, "dataUriEmpty .sourceMapData") - t.ok(error.message.match(/mime type.+text\/plain/), "dataUriEmpty") - t.notOk(result) - isAsync() - }) - - method(code.noMap, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.equal(result, null, "noMap") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read([map.simpleString])), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple - }, "read non-string") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read("invalid JSON")), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: "invalid JSON" - }, "read invalid JSON .sourceMapData") - t.ok(error instanceof SyntaxError, "read invalid JSON") - t.notOk(result) - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read(map.XSSIsafe)), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple - }, "XSSIsafe map") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: null - }, "read throws .sourceMapData") - t.equal(error.message, "https://foo.org/foo.js.map", "read throws") - t.notOk(result) - isAsync() - }) - - next = true - } -} - -test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false)) - -test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true)) - - -function testResolveSources(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - - var mapUrl = "http://example.com/a/b/c/foo.js.map" - - t.plan(1 + 11*3 + 4) - - t.equal(typeof method, "function", "is a function") - - if (sync) { - method = asyncify(method) - } - - var next = false - function isAsync() { t.ok(next, "is async") } - - var options - - method(map.simple, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "simple") - isAsync() - }) - - method(map.sourceRoot, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "sourceRoot") - isAsync() - }) - - options = {sourceRoot: false} - method(map.sourceRoot, mapUrl, wrap(identity), options, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "ignore sourceRoot") - isAsync() - }) - - options = {sourceRoot: "/static/js/"} - method(map.sourceRoot, mapUrl, wrap(identity), options, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "custom sourceRoot") - isAsync() - }) - - method(map.sourceRootNoSlash, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "sourceRootNoSlash") - isAsync() - }) - - method(map.sourceRootEmpty, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ] - }, "sourceRootEmpty") - isAsync() - }) - - method(map.sourcesContent, mapUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "foo.js", - "lib/bar.js", - "../vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ] - }, "sourcesContent") - isAsync() - }) - - method(map.mixed, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [ - "foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ] - }, "mixed") - isAsync() - }) - - method(map.noSources, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [], - sourcesContent: [] - }, "noSources") - isAsync() - }) - - method(map.empty, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: [], - sourcesContent: [] - }, "empty") - isAsync() - }) - - method(map.simple, mapUrl, wrap(read(["non", "string"])), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["non,string"] - }, "read non-string") - isAsync() - }) - - method(map.mixed, mapUrl, wrap(Throws), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "read throws .sourcesResolved") - var sourcesContent = result.sourcesContent - for (var index = 0, len = sourcesContent.length; index < len; index++) { - var item = sourcesContent[index] - if (item instanceof Error) { - sourcesContent[index] = null - } - } - t.deepEqual(sourcesContent, [ - "foo.js", - null, - null, - "/version.js", - "//foo.org/baz.js" - ], "read throws .sourcesContent") - isAsync() - }) - - next = true - } -} - -test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false)) - -test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true)) - -test(".resolveSourcesSync no read", function(t) { - t.plan(1) - - var mapUrl = "http://example.com/a/b/c/foo.js.map" - var result = sourceMapResolve.resolveSourcesSync(map.mixed, mapUrl, null) - - t.deepEqual(result, { - sourcesResolved: [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], - sourcesContent: [] - }) -}) - - -function testResolve(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - var wrapMap = function(mapFn, fn) { - return wrap(function(url) { - if (/\.map$/.test(url)) { - return mapFn(url) - } - return fn(url) - }) - } - - var codeUrl = "http://example.com/a/b/c/foo.js" - - t.plan(1 + 15*3 + 21*4 + 4) - - t.equal(typeof method, "function", "is a function") - - if (sync) { - method = asyncify(method) - } - - var next = false - function isAsync() { t.ok(next, "is async") } - - var readSimple = wrapMap(read(map.simpleString), identity) - - method(code.fileRelative, codeUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "foo.js.map", - url: "http://example.com/a/b/c/foo.js.map", - sourcesRelativeTo: "http://example.com/a/b/c/foo.js.map", - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "fileRelative") - isAsync() - }) - - method(code.domainRelative, codeUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "/foo.js.map", - url: "http://example.com/foo.js.map", - sourcesRelativeTo: "http://example.com/foo.js.map", - map: map.simple, - sourcesResolved: ["http://example.com/foo.js"], - sourcesContent: ["http://example.com/foo.js"] - }, "domainRelative") - isAsync() - }) - - method(code.schemeRelative, codeUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "//foo.org/foo.js.map", - url: "http://foo.org/foo.js.map", - sourcesRelativeTo: "http://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["http://foo.org/foo.js"], - sourcesContent: ["http://foo.org/foo.js"] - }, "schemeRelative") - isAsync() - }) - - method(code.absolute, codeUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: ["https://foo.org/foo.js"] - }, "absolute") - isAsync() - }) - - method(code.dataUri, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "dataUri") - isAsync() - }) - - method(code.base64, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json;base64," + - "eyJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W119", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "base64") - isAsync() - }) - - method(code.dataUriText, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:text/json," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "dataUriText") - isAsync() - }) - - method(code.dataUriParameter, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json;charset=UTF-8;foo=bar," + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "dataUriParameter") - isAsync() - }) - - method(code.dataUriNoMime, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriNoMime .sourceMapData") - t.ok(error.message.match(/mime type.+text\/plain/), "dataUriNoMime") - t.notOk(result) - isAsync() - }) - - method(code.dataUriInvalidMime, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:text/html,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriInvalidMime .sourceMapData") - t.ok(error.message.match(/mime type.+text\/html/), "dataUriInvalidMime") - t.notOk(result) - isAsync() - }) - - method(code.dataUriInvalidJSON, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:application/json,foo", - url: null, - sourcesRelativeTo: codeUrl, - map: "foo" - }, "dataUriInvalidJSON .sourceMapData") - t.ok(error instanceof SyntaxError && error.message !== "data:application/json,foo", - "dataUriInvalidJSON") - t.notOk(result) - isAsync() - }) - - method(code.dataUriXSSIsafe, codeUrl, wrapMap(Throws, identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "data:application/json," + ")%5D%7D%27" + - "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" + - "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D", - url: null, - sourcesRelativeTo: codeUrl, - map: map.simple, - sourcesResolved: ["http://example.com/a/b/c/foo.js"], - sourcesContent: ["http://example.com/a/b/c/foo.js"] - }, "dataUriXSSIsafe") - isAsync() - }) - - method(code.dataUriEmpty, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "data:", - url: null, - sourcesRelativeTo: codeUrl, - map: "" - }, "dataUriEmpty .sourceMapData") - t.ok(error.message.match(/mime type.+text\/plain/), "dataUriEmpty") - t.notOk(result) - isAsync() - }) - - method(code.noMap, codeUrl, wrap(Throws), function(error, result) { - t.error(error) - t.equal(result, null, "noMap") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read([map.simpleString])), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: [map.simpleString] - }, "read non-string") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(read("invalid JSON")), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: "invalid JSON" - }, "read invalid JSON .sourceMapData") - t.ok(error instanceof SyntaxError, "read invalid JSON") - t.notOk(result) - isAsync() - }) - - method(code.absolute, codeUrl, wrapMap(read(map.XSSIsafe), identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: ["https://foo.org/foo.js"] - }, "XSSIsafe map") - isAsync() - }) - - method(code.absolute, codeUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: "https://foo.org/foo.js.map", - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: null - }, "read throws .sourceMapData") - t.equal(error.message, "https://foo.org/foo.js.map", "read throws") - t.notOk(result) - isAsync() - }) - - function readMap(what) { - return wrapMap(read(JSON.stringify(what)), identity) - } - - var options - - method(code.fileRelative, codeUrl, readMap(map.simple), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, ["http://example.com/a/b/c/foo.js"], "simple") - t.deepEqual(result.sourcesContent, ["http://example.com/a/b/c/foo.js"], "simple") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.sourceRoot), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRoot") - t.deepEqual(result.sourcesContent, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRoot") - isAsync() - }) - - options = {sourceRoot: false} - method(code.fileRelative, codeUrl, readMap(map.sourceRoot), options, function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "ignore sourceRoot") - t.deepEqual(result.sourcesContent, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "ignore sourceRoot") - isAsync() - }) - - options = {sourceRoot: "/static/js/"} - method(code.fileRelative, codeUrl, readMap(map.sourceRoot), options, function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "custom sourceRoot") - t.deepEqual(result.sourcesContent, [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "custom sourceRoot") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.sourceRootNoSlash), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRootNoSlash") - t.deepEqual(result.sourcesContent, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRootNoSlash") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.sourceRootEmpty), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRootEmpty") - t.deepEqual(result.sourcesContent, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourceRootEmpty") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.sourcesContent), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/app/foo.js", - "http://example.com/static/js/app/lib/bar.js", - "http://example.com/static/js/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "sourcesContent") - t.deepEqual(result.sourcesContent, [ - "foo.js", - "lib/bar.js", - "../vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ], "sourcesContent") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.mixed), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "mixed") - t.deepEqual(result.sourcesContent, [ - "foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ], "mixed") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.noSources), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [], "noSources") - t.deepEqual(result.sourcesContent, [], "noSources") - isAsync() - }) - - method(code.fileRelative, codeUrl, readMap(map.empty), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [], "noSources") - t.deepEqual(result.sourcesContent, [], "noSources") - isAsync() - }) - - method(code.fileRelative, codeUrl, wrap(read([map.simpleString])), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, ["http://example.com/a/b/c/foo.js"], "read non-string") - t.deepEqual(result.sourcesContent, [map.simpleString], "read non-string") - isAsync() - }) - - function ThrowsMap(what) { - return wrapMap(read(JSON.stringify(what)), Throws) - } - - method(code.fileRelative, codeUrl, ThrowsMap(map.mixed), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "read throws .sourcesResolved") - var sourcesContent = result.sourcesContent - for (var index = 0, len = sourcesContent.length; index < len; index++) { - var item = sourcesContent[index] - if (item instanceof Error) { - sourcesContent[index] = null - } - } - t.deepEqual(sourcesContent, [ - "foo.js", - null, - null, - "/version.js", - "//foo.org/baz.js" - ], "read throws .sourcesContent") - isAsync() - }) - - var mapUrl = "https://foo.org/foo.js.map" - - method(null, mapUrl, readSimple, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: ["https://foo.org/foo.js"] - }, "mapUrl simple") - isAsync() - }) - - method(null, mapUrl, wrap(read([map.simpleString])), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: [map.simpleString] - }, "mapUrl read non-string") - isAsync() - }) - - method(null, mapUrl, wrap(read("invalid JSON")), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: "invalid JSON" - }, "mapUrl read invalid JSON .sourceMapData") - t.ok(error instanceof SyntaxError, "mapUrl read invalid JSON") - t.notOk(result) - isAsync() - }) - - method(null, mapUrl, wrapMap(read(map.XSSIsafe), identity), function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: map.simple, - sourcesResolved: ["https://foo.org/foo.js"], - sourcesContent: ["https://foo.org/foo.js"] - }, "mapUrl XSSIsafe map") - isAsync() - }) - - method(null, mapUrl, wrap(Throws), function(error, result) { - t.deepEqual(error.sourceMapData, { - sourceMappingURL: null, - url: "https://foo.org/foo.js.map", - sourcesRelativeTo: "https://foo.org/foo.js.map", - map: null - }, "mapUrl read throws .sourceMapData") - t.equal(error.message, "https://foo.org/foo.js.map", "mapUrl read throws") - t.notOk(result) - isAsync() - }) - - mapUrl = "http://example.com/a/b/c/foo.js.map" - - options = {sourceRoot: "/static/js/"} - method(null, mapUrl, readMap(map.sourceRoot), options, function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "mapUrl custom sourceRoot") - t.deepEqual(result.sourcesContent, [ - "http://example.com/static/js/foo.js", - "http://example.com/static/js/lib/bar.js", - "http://example.com/static/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "mapUrl custom sourceRoot") - isAsync() - }) - - method(null, mapUrl, readMap(map.mixed), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, [ - "http://example.com/a/b/c/foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "http://example.com/version.js", - "http://foo.org/baz.js" - ], "mapUrl mixed") - t.deepEqual(result.sourcesContent, [ - "foo.js", - "http://example.com/a/b/c/lib/bar.js", - "http://example.com/a/b/vendor/dom.js", - "/version.js", - "//foo.org/baz.js" - ], "mapUrl mixed") - isAsync() - }) - - next = true - } -} - -test(".resolve", testResolve(sourceMapResolve.resolve, false)) - -test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true)) - -test(".parseMapToJSON", function(t) { - t.plan(1) - t.deepEqual(sourceMapResolve.parseMapToJSON(map.XSSIsafe), map.simple) -}) diff --git a/node_modules/source-map-resolve/test/windows.js b/node_modules/source-map-resolve/test/windows.js deleted file mode 100644 index 611ec7dcd..000000000 --- a/node_modules/source-map-resolve/test/windows.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var path = require("path") -var test = require("tape") -var asyncify = require("simple-asyncify") -var common = require("./common") -var u = common.u -var read = common.read -var identity = common.identity - -var sourceMapResolve = require("../") - -path.sep = "\\" - - -function testResolveSourceMap(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - - var codeUrl = "c:\\a\\b\\c\\foo.js" - - t.plan(3 * 2) - - if (sync) { - method = asyncify(method) - } - - var map = {} - var readMap = wrap(read(JSON.stringify(map))) - - method(u("foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "foo.js.map", - url: "/a/b/c/foo.js.map", - sourcesRelativeTo: "/a/b/c/foo.js.map", - map: map - }) - }) - - method(u("/foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "/foo.js.map", - url: "/foo.js.map", - sourcesRelativeTo: "/foo.js.map", - map: map - }) - }) - - method(u("../foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "../foo.js.map", - url: "/a/b/foo.js.map", - sourcesRelativeTo: "/a/b/foo.js.map", - map: map - }) - }) - - } -} - -test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false)) - -test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true)) - - -function testResolveSources(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - - var mapUrl = "c:\\a\\b\\c\\foo.js.map" - - t.plan(1 * 3) - - if (sync) { - method = asyncify(method) - } - - var map = { - sources: ["foo.js", "/foo.js", "../foo.js"] - } - - method(map, mapUrl, wrap(identity), function(error, result) { - t.error(error) - t.deepEqual(result.sourcesResolved, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]) - t.deepEqual(result.sourcesContent, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]) - }) - - } -} - -test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false)) - -test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true)) - - -function testResolve(method, sync) { - return function(t) { - var wrap = (sync ? identity : asyncify) - var wrapMap = function(mapFn, fn) { - return wrap(function(url) { - if (/\.map$/.test(url)) { - return mapFn(url) - } - return fn(url) - }) - } - - var codeUrl = "c:\\a\\b\\c\\foo.js" - - t.plan(3 * 2) - - if (sync) { - method = asyncify(method) - } - - var map = { - sources: ["foo.js", "/foo.js", "../foo.js"] - } - var readMap = wrapMap(read(JSON.stringify(map)), identity) - - method(u("foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "foo.js.map", - url: "/a/b/c/foo.js.map", - sourcesRelativeTo: "/a/b/c/foo.js.map", - map: map, - sourcesResolved: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"], - sourcesContent: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"] - }) - }) - - method(u("/foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "/foo.js.map", - url: "/foo.js.map", - sourcesRelativeTo: "/foo.js.map", - map: map, - sourcesResolved: ["/foo.js", "/foo.js", "/foo.js"], - sourcesContent: ["/foo.js", "/foo.js", "/foo.js"] - }) - }) - - method(u("../foo.js.map"), codeUrl, readMap, function(error, result) { - t.error(error) - t.deepEqual(result, { - sourceMappingURL: "../foo.js.map", - url: "/a/b/foo.js.map", - sourcesRelativeTo: "/a/b/foo.js.map", - map: map, - sourcesResolved: ["/a/b/foo.js", "/foo.js", "/a/foo.js"], - sourcesContent: ["/a/b/foo.js", "/foo.js", "/a/foo.js"] - }) - }) - - } -} - -test(".resolve", testResolve(sourceMapResolve.resolve, false)) - -test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true)) diff --git a/node_modules/source-map-resolve/x-package.json5 b/node_modules/source-map-resolve/x-package.json5 deleted file mode 100644 index 5bc9e294e..000000000 --- a/node_modules/source-map-resolve/x-package.json5 +++ /dev/null @@ -1,68 +0,0 @@ -{ - name: "source-map-resolve", - version: "0.5.2", - author: "Simon Lydell", - license: "MIT", - description: "Resolve the source map and/or sources for a generated file.", - keywords: [ - "source map", - "sourcemap", - "source", - "map", - "sourceMappingURL", - "resolve", - "resolver", - "locate", - "locator", - "find", - "finder" - ], - overlay: { - npm: { - repository: "lydell/source-map-resolve", - main: "lib/source-map-resolve-node.js", - browser: "source-map-resolve.js", - scripts: { - lint: "jshint lib/ test/", - unit: "node test/source-map-resolve.js && node test/windows.js", - test: "npm run lint && npm run unit", - build: "node generate-source-map-resolve.js" - }, - dependencies: { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - }, - devDependencies: { - "Base64": "1.0.1", - "jshint": "2.9.5", - "setimmediate": "1.0.5", - "simple-asyncify": "1.0.0", - "tape": "4.9.0" - } - }, - component: { - repo: "lydell/source-map-resolve", - main: "source-map-resolve.js", - scripts: [ - "source-map-resolve.js" - ], - dependencies: { - "lydell/source-map-url": "~0.4.0", - "lydell/resolve-url": "~0.2.1" - } - }, - bower: { - authors: ["Simon Lydell"], - ignore: [ - ".*" - ], - dependencies: { - "source-map-url": "^0.4.0", - "resolve-url": "^0.2.1" - } - } - } -} diff --git a/node_modules/source-map-url/.jshintrc b/node_modules/source-map-url/.jshintrc deleted file mode 100644 index 8f33293c6..000000000 --- a/node_modules/source-map-url/.jshintrc +++ /dev/null @@ -1,43 +0,0 @@ -{ - "bitwise": true, - "camelcase": true, - "curly": false, - "eqeqeq": true, - "es3": true, - "forin": true, - "immed": false, - "indent": false, - "latedef": "nofunc", - "newcap": false, - "noarg": true, - "noempty": true, - "nonew": false, - "plusplus": false, - "quotmark": false, - "undef": true, - "unused": "vars", - "strict": false, - "trailing": true, - "maxparams": 5, - "maxdepth": false, - "maxstatements": false, - "maxcomplexity": false, - "maxlen": 100, - - "asi": true, - "expr": true, - "globalstrict": true, - "smarttabs": true, - "sub": true, - - "node": true, - "globals": { - "describe": false, - "it": false, - "before": false, - "beforeEach": false, - "after": false, - "afterEach": false, - "define": false - } -} diff --git a/node_modules/source-map-url/LICENSE b/node_modules/source-map-url/LICENSE deleted file mode 100644 index 10052a95c..000000000 --- a/node_modules/source-map-url/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Simon Lydell - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/source-map-url/bower.json b/node_modules/source-map-url/bower.json deleted file mode 100644 index 9831b7cd4..000000000 --- a/node_modules/source-map-url/bower.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "source-map-url", - "version": "0.4.0", - "author": "Simon Lydell", - "license": "MIT", - "description": "Tools for working with sourceMappingURL comments.", - "keywords": [ - "source map", - "sourceMappingURL", - "comment", - "annotation" - ], - "main": "source-map-url.js", - "authors": [ - "Simon Lydell" - ], - "ignore": [ - ".*" - ] -} \ No newline at end of file diff --git a/node_modules/source-map-url/changelog.md b/node_modules/source-map-url/changelog.md deleted file mode 100644 index e291a7f77..000000000 --- a/node_modules/source-map-url/changelog.md +++ /dev/null @@ -1,52 +0,0 @@ -### Version 0.4.0 (2015-11-12) ### - -- Changed: sourceMappingURL comments used to be matched only when placed at - the end of the script. However, since several commonly used JavaScript - libraries do not follow this convention and all popular web browsers accept - non-trailing comments, this has been revised. - - So now non-trailing SourceMappingURL comments are matched as well. - - -### Version 0.3.0 (2014-08-16) ### - -- Changed: sourceMappingURL comments used to be matched only if they appeared - on their own line. However, the spec only says: - - > The generated code may include a line at the end of the source, with the following form: - > - > //# sourceMappingURL= - - So now they are matched also when they appear on the same line as code. - -- Removed: The `.set()` method. I couldn’t decide how it should work - considering the above change. Moreover, it was unnecessarily complex (and - would have gotten worse) for very little gain. It is much easier to run - `.remove()` if needed, and then simply `code += "\n//# sourceMappingURL=" + - url` (using the appropriate comment syntax and newline). KISS. - -- Changed: The `.insertBefore()` method now always inserts the string exactly - before the sourceMappingURL comment; not before the newline before the - comment (if any). Moreover, it does not ensure that the comment will be on a - new line anymore. This is up to the caller. KISS. - -- Changed: The `.remove()` method no longer removes the newline before the - sourceMappingURL (if any). - -- Changed: Renamed `.get()` to `.getFrom()`. -- Changed: Renamed `.remove()` to `.removeFrom()`. - -- Added: The `.existsIn()` method. - - -### Version 0.2.0 (2014-02-23) ### - -- Changed: A space is no longer inserted before the closing comment syntax. If - such a space is desired, it needs to be put in the closing comment syntax - itself (such as `["/*", " */"]` instead of `["/*", "*/"]`). (Backwards - incompatible change.) - - -### Version 0.1.0 (2014-02-22) ### - -- Initial release. diff --git a/node_modules/source-map-url/component.json b/node_modules/source-map-url/component.json deleted file mode 100644 index 11d569c99..000000000 --- a/node_modules/source-map-url/component.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "source-map-url", - "version": "0.4.0", - "author": "Simon Lydell", - "license": "MIT", - "description": "Tools for working with sourceMappingURL comments.", - "keywords": [ - "source map", - "sourceMappingURL", - "comment", - "annotation" - ], - "main": "source-map-url.js", - "repo": "lydell/source-map-url", - "scripts": [ - "source-map-url.js" - ] -} diff --git a/node_modules/source-map-url/package.json b/node_modules/source-map-url/package.json deleted file mode 100644 index 46fb1cf2f..000000000 --- a/node_modules/source-map-url/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_args": [ - [ - "source-map-url@0.4.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "source-map-url@0.4.0", - "_id": "source-map-url@0.4.0", - "_inBundle": false, - "_integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "_location": "/source-map-url", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "source-map-url@0.4.0", - "name": "source-map-url", - "escapedName": "source-map-url", - "rawSpec": "0.4.0", - "saveSpec": null, - "fetchSpec": "0.4.0" - }, - "_requiredBy": [ - "/source-map-resolve" - ], - "_resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "_spec": "0.4.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Simon Lydell" - }, - "bugs": { - "url": "https://github.com/lydell/source-map-url/issues" - }, - "description": "Tools for working with sourceMappingURL comments.", - "devDependencies": { - "expect.js": "~0.3.1", - "jshint": "~2.4.3", - "mocha": "~1.17.1" - }, - "homepage": "https://github.com/lydell/source-map-url#readme", - "keywords": [ - "source map", - "sourceMappingURL", - "comment", - "annotation" - ], - "license": "MIT", - "main": "source-map-url.js", - "name": "source-map-url", - "repository": { - "type": "git", - "url": "git+https://github.com/lydell/source-map-url.git" - }, - "scripts": { - "lint": "jshint source-map-url.js test/ ", - "test": "npm run lint && npm run unit", - "unit": "mocha" - }, - "testling": { - "harness": "mocha", - "files": "test/*.js", - "browsers": [ - "ie/8..latest", - "chrome/latest", - "firefox/latest", - "opera/12", - "opera/latest", - "safari/5", - "iphone/6", - "android-browser/4" - ] - }, - "version": "0.4.0" -} diff --git a/node_modules/source-map-url/readme.md b/node_modules/source-map-url/readme.md deleted file mode 100644 index 216de5e52..000000000 --- a/node_modules/source-map-url/readme.md +++ /dev/null @@ -1,97 +0,0 @@ -Overview [![Build Status](https://travis-ci.org/lydell/source-map-url.png?branch=master)](https://travis-ci.org/lydell/source-map-url) -======== - -[![browser support](https://ci.testling.com/lydell/source-map-url.png)](https://ci.testling.com/lydell/source-map-url) - -Tools for working with sourceMappingURL comments. - -```js -var sourceMappingURL = require("source-map-url") - -var code = [ - "!function(){...}();", - "/*# sourceMappingURL=foo.js.map */" -].join("\n") - -sourceMappingURL.existsIn(code) -// true - -sourceMappingURL.getFrom(code) -// foo.js.map - -code = sourceMappingURL.insertBefore(code, "// License: MIT\n") -// !function(){...}(); -// // License: MIT -// /*# sourceMappingURL=foo.js.map */ - -code = sourceMappingURL.removeFrom(code) -// !function(){...}(); -// // License: MIT - -sourceMappingURL.existsIn(code) -// false - -sourceMappingURL.getFrom(code) -// null - -code += "//# sourceMappingURL=/other/file.js.map" -// !function(){...}(); -// // License: MIT -// //# sourceMappingURL=/other/file.js.map -``` - - -Installation -============ - -- `npm install source-map-url` -- `bower install source-map-url` -- `component install lydell/source-map-url` - -Works with CommonJS, AMD and browser globals, through UMD. - - -Usage -===== - -### `sourceMappingURL.getFrom(code)` ### - -Returns the url of the sourceMappingURL comment in `code`. Returns `null` if -there is no such comment. - -### `sourceMappingURL.existsIn(code)` ### - -Returns `true` if there is a sourceMappingURL comment in `code`, or `false` -otherwise. - -### `sourceMappingURL.removeFrom(code)` ### - -Removes the sourceMappingURL comment in `code`. Does nothing if there is no -such comment. Returns the updated `code`. - -### `sourceMappingURL.insertBefore(code, string)` ### - -Inserts `string` before the sourceMappingURL comment in `code`. Appends -`string` to `code` if there is no such comment. - -Lets you append something to a file without worrying about burying the -sourceMappingURL comment (by keeping it at the end of the file). - -### `sourceMappingURL.regex` ### - -The regex that is used to match sourceMappingURL comments. It matches both `//` -and `/**/` comments, thus supporting both JavaScript and CSS. - - -Tests -===== - -Start by running `npm test`, which lints the code and runs the test suite in Node.js. - -To run the tests in a browser, run `testling` (`npm install -g testling`) or `testling -u`. - - -License -======= - -[The X11 (“MIT”) License](LICENSE). diff --git a/node_modules/source-map-url/source-map-url.js b/node_modules/source-map-url/source-map-url.js deleted file mode 100644 index 1724cb7c0..000000000 --- a/node_modules/source-map-url/source-map-url.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -void (function(root, factory) { - if (typeof define === "function" && define.amd) { - define(factory) - } else if (typeof exports === "object") { - module.exports = factory() - } else { - root.sourceMappingURL = factory() - } -}(this, function() { - - var innerRegex = /[#@] sourceMappingURL=([^\s'"]*)/ - - var regex = RegExp( - "(?:" + - "/\\*" + - "(?:\\s*\r?\n(?://)?)?" + - "(?:" + innerRegex.source + ")" + - "\\s*" + - "\\*/" + - "|" + - "//(?:" + innerRegex.source + ")" + - ")" + - "\\s*" - ) - - return { - - regex: regex, - _innerRegex: innerRegex, - - getFrom: function(code) { - var match = code.match(regex) - return (match ? match[1] || match[2] || "" : null) - }, - - existsIn: function(code) { - return regex.test(code) - }, - - removeFrom: function(code) { - return code.replace(regex, "") - }, - - insertBefore: function(code, string) { - var match = code.match(regex) - if (match) { - return code.slice(0, match.index) + string + code.slice(match.index) - } else { - return code + string - } - } - } - -})); diff --git a/node_modules/source-map-url/test/source-map-url.js b/node_modules/source-map-url/test/source-map-url.js deleted file mode 100644 index 630bc86f2..000000000 --- a/node_modules/source-map-url/test/source-map-url.js +++ /dev/null @@ -1,402 +0,0 @@ -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var expect = require("expect.js") - -var sourceMappingURL = require("../") - -var comments = { - - universal: [ - "/*# sourceMappingURL=foo.js.map */" - ], - - js: [ - "//# sourceMappingURL=foo.js.map" - ], - - block: [ - "/*", - "# sourceMappingURL=foo.js.map", - "*/" - ], - - mix: [ - "/*", - "//# sourceMappingURL=foo.js.map", - "*/" - ] - -} - -var nonTrailingComments = { - - jsLeading: { - contents: [ - "//# sourceMappingURL=foo.js.map", - "(function(){})" - ], - solution: [ - "(function(){})" - ] - }, - - mixEmbedded: { - contents: [ - "/*! Library Name v1.0.0", - "//# sourceMappingURL=foo.js.map", - "*/", - "(function(){})" - ], - solution: [ - "/*! Library Name v1.0.0", - "*/", - "(function(){})" - ] - } - -} - -function forEachComment(fn) { - forOf(comments, function(name, comment) { - var description = "the '" + name + "' syntax with " - fn(comment.join("\n"), description + "regular newlines") - fn(comment.join("\r\n"), description + "Windows newlines") - }) -} - -function forEachNonTrailingComment(fn) { - forOf(nonTrailingComments, function(name, comment) { - - var description = "the '" + name + "' syntax with " - - fn({ - contents: comment.contents.join("\n"), - solution: comment.solution.join("\n") - }, description + "regular newlines") - - fn({ - contents: comment.contents.join("\r\n"), - solution: comment.solution.join("\r\n") - }, description + "Windows newlines") - }) -} - -function forOf(obj, fn) { - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - fn(key, obj[key]) - } - } -} - - -describe("sourceMappingURL", function() { - - describe(".getFrom", function() { - - forEachComment(function(comment, description) { - - it("gets the url from " + description, function() { - expect(sourceMappingURL.getFrom("code\n" + comment)) - .to.equal("foo.js.map") - - expect(sourceMappingURL.getFrom("code" + comment)) - .to.equal("foo.js.map") - - expect(sourceMappingURL.getFrom(comment)) - .to.equal("foo.js.map") - }) - - }) - - forEachNonTrailingComment(function(comment, description) { - - it("gets the url from " + description, function() { - expect(sourceMappingURL.getFrom("code\n" + comment.contents)) - .to.equal("foo.js.map") - - expect(sourceMappingURL.getFrom("code" + comment.contents)) - .to.equal("foo.js.map") - - expect(sourceMappingURL.getFrom(comment.contents)) - .to.equal("foo.js.map") - }) - - }) - - - it("returns null if no comment", function() { - expect(sourceMappingURL.getFrom("code")) - .to.equal(null) - }) - - - it("can return an empty string as url", function() { - expect(sourceMappingURL.getFrom("/*# sourceMappingURL= */")) - .to.equal("") - }) - - - it("is detachable", function() { - var get = sourceMappingURL.getFrom - expect(get("/*# sourceMappingURL=foo */")) - .to.equal("foo") - }) - - }) - - - describe(".existsIn", function() { - - forEachComment(function(comment, description) { - - it("returns true for " + description, function() { - expect(sourceMappingURL.existsIn("code\n" + comment)) - .to.equal(true) - - expect(sourceMappingURL.existsIn("code" + comment)) - .to.equal(true) - - expect(sourceMappingURL.existsIn(comment)) - .to.equal(true) - }) - - }) - - forEachNonTrailingComment(function(comment, description) { - - it("returns true for " + description, function() { - expect(sourceMappingURL.existsIn("code\n" + comment.contents)) - .to.equal(true) - - expect(sourceMappingURL.existsIn("code" + comment.contents)) - .to.equal(true) - - expect(sourceMappingURL.existsIn(comment.contents)) - .to.equal(true) - }) - - }) - - - it("returns false if no comment", function() { - expect(sourceMappingURL.existsIn("code")) - .to.equal(false) - }) - - - it("is detachable", function() { - var has = sourceMappingURL.existsIn - expect(has("/*# sourceMappingURL=foo */")) - .to.equal(true) - }) - - }) - - - describe(".removeFrom", function() { - - forEachComment(function(comment, description) { - - it("removes the comment for " + description, function() { - expect(sourceMappingURL.removeFrom("code\n" + comment)) - .to.equal("code\n") - - expect(sourceMappingURL.removeFrom("code" + comment)) - .to.equal("code") - - expect(sourceMappingURL.removeFrom(comment)) - .to.equal("") - }) - - }) - - forEachNonTrailingComment(function(comment, description) { - - it("removes the comment for " + description, function() { - expect(sourceMappingURL.removeFrom("code\n" + comment.contents)) - .to.equal("code\n" + comment.solution) - - expect(sourceMappingURL.removeFrom("code" + comment.contents)) - .to.equal("code" + comment.solution) - - expect(sourceMappingURL.removeFrom(comment.contents)) - .to.equal(comment.solution) - }) - - }) - - - it("does nothing if no comment", function() { - expect(sourceMappingURL.removeFrom("code\n")) - .to.equal("code\n") - }) - - - it("is detachable", function() { - var remove = sourceMappingURL.removeFrom - expect(remove("/*# sourceMappingURL=foo */")) - .to.equal("") - }) - - }) - - - describe(".insertBefore", function() { - - forEachComment(function(comment, description) { - - it("inserts a string before the comment for " + description, function() { - expect(sourceMappingURL.insertBefore("code\n" + comment, "more code\n")) - .to.equal("code\nmore code\n" + comment) - - expect(sourceMappingURL.insertBefore("code" + comment, "\nmore code")) - .to.equal("code\nmore code" + comment) - - expect(sourceMappingURL.insertBefore(comment, "some code")) - .to.equal("some code" + comment) - }) - - }) - - - it("inserts a string before an embedded comment", function() { - expect(sourceMappingURL.insertBefore("/*! Library Name v1.0.0\n" + - "//# sourceMappingURL=foo.js.map\n*/\n(function(){})", "code\n")) - .to.equal("/*! Library Name v1.0.0\ncode\n" + - "//# sourceMappingURL=foo.js.map\n*/\n(function(){})") - }) - - - it("inserts a string before a leading comment", function() { - expect(sourceMappingURL.insertBefore("//# sourceMappingURL=foo.js.map\n" + - "(function(){})", "code\n")) - .to.equal("code\n//# sourceMappingURL=foo.js.map\n" + - "(function(){})") - }) - - - it("appends if no comment", function() { - expect(sourceMappingURL.insertBefore("code", "\nmore code")) - .to.equal("code\nmore code") - }) - - - it("is detachable", function() { - var insertBefore = sourceMappingURL.insertBefore - expect(insertBefore("/*# sourceMappingURL=foo */", "bar")) - .to.equal("bar/*# sourceMappingURL=foo */") - }) - - }) - - - describe(".regex", function() { - - it("includes ._innerRegex", function() { - expect(sourceMappingURL.regex.source) - .to.contain(sourceMappingURL._innerRegex.source) - }) - - - var match = function(code) { - expect(code) - .to.match(sourceMappingURL.regex) - } - - var noMatch = function(code) { - expect(code) - .not.to.match(sourceMappingURL.regex) - } - - - forEachComment(function(comment, description) { - - it("matches " + description, function() { - match("code\n" + comment) - match("code" + comment) - match(comment) - }) - - - it("matches " + description + ", with trailing whitespace", function() { - match(comment + " ") - match(comment + "\n") - match(comment + "\n\n\t\n \t ") - }) - - }) - - - it("does not match some cases that are easy to mess up", function() { - noMatch( - "/* # sourceMappingURL=foo */" - ) - - noMatch( - "// # sourceMappingURL=foo" - ) - }) - - - it("is liberal regarding inner whitespace", function() { - match( - "/*# sourceMappingURL=foo*/" - ) - - match( - "/*# sourceMappingURL=foo */" - ) - - match( - "/*# sourceMappingURL=foo \t\n" + - "*/" - ) - - match( - "/* \n" + - "# sourceMappingURL=foo\n" + - "*/" - ) - - match( - "/*\n" + - "# sourceMappingURL=foo\n" + - " */" - ) - - match( - "/*\n" + - "# sourceMappingURL=foo\n" + - "\n" + - "\t\n" + - "*/" - ) - }) - - }) - - - describe("._innerRegex", function() { - - it("matches the contents of sourceMappingURL comments", function() { - expect("# sourceMappingURL=http://www.example.com/foo/bar.js.map") - .to.match(sourceMappingURL._innerRegex) - }) - - - it("captures the url in the first capture group", function() { - expect(sourceMappingURL._innerRegex.exec("# sourceMappingURL=foo")[1]) - .to.equal("foo") - }) - - - it("supports the legacy syntax", function() { - expect("@ sourceMappingURL=http://www.example.com/foo/bar.js.map") - .to.match(sourceMappingURL._innerRegex) - }) - - }) - -}) diff --git a/node_modules/source-map-url/x-package.json5 b/node_modules/source-map-url/x-package.json5 deleted file mode 100644 index bdcd6ae13..000000000 --- a/node_modules/source-map-url/x-package.json5 +++ /dev/null @@ -1,55 +0,0 @@ -{ - name: "source-map-url", - version: "0.4.0", - author: "Simon Lydell", - license: "MIT", - description: "Tools for working with sourceMappingURL comments.", - keywords: [ - "source map", - "sourceMappingURL", - "comment", - "annotation" - ], - main: "source-map-url.js", - overlay: { - npm: { - repository: "lydell/source-map-url", - scripts: { - lint: "jshint source-map-url.js test/ ", - unit: "mocha", - test: "npm run lint && npm run unit" - }, - devDependencies: { - "mocha": "~1.17.1", - "expect.js": "~0.3.1", - "jshint": "~2.4.3" - }, - testling: { - harness: "mocha", - files: "test/*.js", - browsers: [ - "ie/8..latest", - "chrome/latest", - "firefox/latest", - "opera/12", - "opera/latest", - "safari/5", - "iphone/6", - "android-browser/4" - ] - } - }, - component: { - repo: "lydell/source-map-url", - scripts: [ - "source-map-url.js" - ] - }, - bower: { - authors: ["Simon Lydell"], - ignore: [ - ".*" - ] - } - } -} diff --git a/node_modules/source-map/CHANGELOG.md b/node_modules/source-map/CHANGELOG.md deleted file mode 100644 index 3a8c066c6..000000000 --- a/node_modules/source-map/CHANGELOG.md +++ /dev/null @@ -1,301 +0,0 @@ -# Change Log - -## 0.5.6 - -* Fix for regression when people were using numbers as names in source maps. See - #236. - -## 0.5.5 - -* Fix "regression" of unsupported, implementation behavior that half the world - happens to have come to depend on. See #235. - -* Fix regression involving function hoisting in SpiderMonkey. See #233. - -## 0.5.4 - -* Large performance improvements to source-map serialization. See #228 and #229. - -## 0.5.3 - -* Do not include unnecessary distribution files. See - commit ef7006f8d1647e0a83fdc60f04f5a7ca54886f86. - -## 0.5.2 - -* Include browser distributions of the library in package.json's `files`. See - issue #212. - -## 0.5.1 - -* Fix latent bugs in IndexedSourceMapConsumer.prototype._parseMappings. See - ff05274becc9e6e1295ed60f3ea090d31d843379. - -## 0.5.0 - -* Node 0.8 is no longer supported. - -* Use webpack instead of dryice for bundling. - -* Big speedups serializing source maps. See pull request #203. - -* Fix a bug with `SourceMapConsumer.prototype.sourceContentFor` and sources that - explicitly start with the source root. See issue #199. - -## 0.4.4 - -* Fix an issue where using a `SourceMapGenerator` after having created a - `SourceMapConsumer` from it via `SourceMapConsumer.fromSourceMap` failed. See - issue #191. - -* Fix an issue with where `SourceMapGenerator` would mistakenly consider - different mappings as duplicates of each other and avoid generating them. See - issue #192. - -## 0.4.3 - -* A very large number of performance improvements, particularly when parsing - source maps. Collectively about 75% of time shaved off of the source map - parsing benchmark! - -* Fix a bug in `SourceMapConsumer.prototype.allGeneratedPositionsFor` and fuzzy - searching in the presence of a column option. See issue #177. - -* Fix a bug with joining a source and its source root when the source is above - the root. See issue #182. - -* Add the `SourceMapConsumer.prototype.hasContentsOfAllSources` method to - determine when all sources' contents are inlined into the source map. See - issue #190. - -## 0.4.2 - -* Add an `.npmignore` file so that the benchmarks aren't pulled down by - dependent projects. Issue #169. - -* Add an optional `column` argument to - `SourceMapConsumer.prototype.allGeneratedPositionsFor` and better handle lines - with no mappings. Issues #172 and #173. - -## 0.4.1 - -* Fix accidentally defining a global variable. #170. - -## 0.4.0 - -* The default direction for fuzzy searching was changed back to its original - direction. See #164. - -* There is now a `bias` option you can supply to `SourceMapConsumer` to control - the fuzzy searching direction. See #167. - -* About an 8% speed up in parsing source maps. See #159. - -* Added a benchmark for parsing and generating source maps. - -## 0.3.0 - -* Change the default direction that searching for positions fuzzes when there is - not an exact match. See #154. - -* Support for environments using json2.js for JSON serialization. See #156. - -## 0.2.0 - -* Support for consuming "indexed" source maps which do not have any remote - sections. See pull request #127. This introduces a minor backwards - incompatibility if you are monkey patching `SourceMapConsumer.prototype` - methods. - -## 0.1.43 - -* Performance improvements for `SourceMapGenerator` and `SourceNode`. See issue - #148 for some discussion and issues #150, #151, and #152 for implementations. - -## 0.1.42 - -* Fix an issue where `SourceNode`s from different versions of the source-map - library couldn't be used in conjunction with each other. See issue #142. - -## 0.1.41 - -* Fix a bug with getting the source content of relative sources with a "./" - prefix. See issue #145 and [Bug 1090768](bugzil.la/1090768). - -* Add the `SourceMapConsumer.prototype.computeColumnSpans` method to compute the - column span of each mapping. - -* Add the `SourceMapConsumer.prototype.allGeneratedPositionsFor` method to find - all generated positions associated with a given original source and line. - -## 0.1.40 - -* Performance improvements for parsing source maps in SourceMapConsumer. - -## 0.1.39 - -* Fix a bug where setting a source's contents to null before any source content - had been set before threw a TypeError. See issue #131. - -## 0.1.38 - -* Fix a bug where finding relative paths from an empty path were creating - absolute paths. See issue #129. - -## 0.1.37 - -* Fix a bug where if the source root was an empty string, relative source paths - would turn into absolute source paths. Issue #124. - -## 0.1.36 - -* Allow the `names` mapping property to be an empty string. Issue #121. - -## 0.1.35 - -* A third optional parameter was added to `SourceNode.fromStringWithSourceMap` - to specify a path that relative sources in the second parameter should be - relative to. Issue #105. - -* If no file property is given to a `SourceMapGenerator`, then the resulting - source map will no longer have a `null` file property. The property will - simply not exist. Issue #104. - -* Fixed a bug where consecutive newlines were ignored in `SourceNode`s. - Issue #116. - -## 0.1.34 - -* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103. - -* Fix bug involving source contents and the - `SourceMapGenerator.prototype.applySourceMap`. Issue #100. - -## 0.1.33 - -* Fix some edge cases surrounding path joining and URL resolution. - -* Add a third parameter for relative path to - `SourceMapGenerator.prototype.applySourceMap`. - -* Fix issues with mappings and EOLs. - -## 0.1.32 - -* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns - (issue 92). - -* Fixed test runner to actually report number of failed tests as its process - exit code. - -* Fixed a typo when reporting bad mappings (issue 87). - -## 0.1.31 - -* Delay parsing the mappings in SourceMapConsumer until queried for a source - location. - -* Support Sass source maps (which at the time of writing deviate from the spec - in small ways) in SourceMapConsumer. - -## 0.1.30 - -* Do not join source root with a source, when the source is a data URI. - -* Extend the test runner to allow running single specific test files at a time. - -* Performance improvements in `SourceNode.prototype.walk` and - `SourceMapConsumer.prototype.eachMapping`. - -* Source map browser builds will now work inside Workers. - -* Better error messages when attempting to add an invalid mapping to a - `SourceMapGenerator`. - -## 0.1.29 - -* Allow duplicate entries in the `names` and `sources` arrays of source maps - (usually from TypeScript) we are parsing. Fixes github issue 72. - -## 0.1.28 - -* Skip duplicate mappings when creating source maps from SourceNode; github - issue 75. - -## 0.1.27 - -* Don't throw an error when the `file` property is missing in SourceMapConsumer, - we don't use it anyway. - -## 0.1.26 - -* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70. - -## 0.1.25 - -* Make compatible with browserify - -## 0.1.24 - -* Fix issue with absolute paths and `file://` URIs. See - https://bugzilla.mozilla.org/show_bug.cgi?id=885597 - -## 0.1.23 - -* Fix issue with absolute paths and sourcesContent, github issue 64. - -## 0.1.22 - -* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. - -## 0.1.21 - -* Fixed handling of sources that start with a slash so that they are relative to - the source root's host. - -## 0.1.20 - -* Fixed github issue #43: absolute URLs aren't joined with the source root - anymore. - -## 0.1.19 - -* Using Travis CI to run tests. - -## 0.1.18 - -* Fixed a bug in the handling of sourceRoot. - -## 0.1.17 - -* Added SourceNode.fromStringWithSourceMap. - -## 0.1.16 - -* Added missing documentation. - -* Fixed the generating of empty mappings in SourceNode. - -## 0.1.15 - -* Added SourceMapGenerator.applySourceMap. - -## 0.1.14 - -* The sourceRoot is now handled consistently. - -## 0.1.13 - -* Added SourceMapGenerator.fromSourceMap. - -## 0.1.12 - -* SourceNode now generates empty mappings too. - -## 0.1.11 - -* Added name support to SourceNode. - -## 0.1.10 - -* Added sourcesContent support to the customer and generator. diff --git a/node_modules/source-map/LICENSE b/node_modules/source-map/LICENSE deleted file mode 100644 index ed1b7cf27..000000000 --- a/node_modules/source-map/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/source-map/README.md b/node_modules/source-map/README.md deleted file mode 100644 index 32813394a..000000000 --- a/node_modules/source-map/README.md +++ /dev/null @@ -1,729 +0,0 @@ -# Source Map - -[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) - -[![NPM](https://nodei.co/npm/source-map.png?downloads=true&downloadRank=true)](https://www.npmjs.com/package/source-map) - -This is a library to generate and consume the source map format -[described here][format]. - -[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit - -## Use with Node - - $ npm install source-map - -## Use on the Web - - - --------------------------------------------------------------------------------- - - - - - -## Table of Contents - -- [Examples](#examples) - - [Consuming a source map](#consuming-a-source-map) - - [Generating a source map](#generating-a-source-map) - - [With SourceNode (high level API)](#with-sourcenode-high-level-api) - - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api) -- [API](#api) - - [SourceMapConsumer](#sourcemapconsumer) - - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap) - - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans) - - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition) - - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition) - - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition) - - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources) - - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing) - - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order) - - [SourceMapGenerator](#sourcemapgenerator) - - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap) - - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer) - - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping) - - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent) - - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath) - - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring) - - [SourceNode](#sourcenode) - - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name) - - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath) - - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk) - - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk) - - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent) - - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn) - - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn) - - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep) - - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement) - - [SourceNode.prototype.toString()](#sourcenodeprototypetostring) - - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap) - - - -## Examples - -### Consuming a source map - -```js -var rawSourceMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: 'http://example.com/www/js/', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' -}; - -var smc = new SourceMapConsumer(rawSourceMap); - -console.log(smc.sources); -// [ 'http://example.com/www/js/one.js', -// 'http://example.com/www/js/two.js' ] - -console.log(smc.originalPositionFor({ - line: 2, - column: 28 -})); -// { source: 'http://example.com/www/js/two.js', -// line: 2, -// column: 10, -// name: 'n' } - -console.log(smc.generatedPositionFor({ - source: 'http://example.com/www/js/two.js', - line: 2, - column: 10 -})); -// { line: 2, column: 28 } - -smc.eachMapping(function (m) { - // ... -}); -``` - -### Generating a source map - -In depth guide: -[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) - -#### With SourceNode (high level API) - -```js -function compile(ast) { - switch (ast.type) { - case 'BinaryExpression': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - [compile(ast.left), " + ", compile(ast.right)] - ); - case 'Literal': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - String(ast.value) - ); - // ... - default: - throw new Error("Bad AST"); - } -} - -var ast = parse("40 + 2", "add.js"); -console.log(compile(ast).toStringWithSourceMap({ - file: 'add.js' -})); -// { code: '40 + 2', -// map: [object SourceMapGenerator] } -``` - -#### With SourceMapGenerator (low level API) - -```js -var map = new SourceMapGenerator({ - file: "source-mapped.js" -}); - -map.addMapping({ - generated: { - line: 10, - column: 35 - }, - source: "foo.js", - original: { - line: 33, - column: 2 - }, - name: "christopher" -}); - -console.log(map.toString()); -// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' -``` - -## API - -Get a reference to the module: - -```js -// Node.js -var sourceMap = require('source-map'); - -// Browser builds -var sourceMap = window.sourceMap; - -// Inside Firefox -const sourceMap = require("devtools/toolkit/sourcemap/source-map.js"); -``` - -### SourceMapConsumer - -A SourceMapConsumer instance represents a parsed source map which we can query -for information about the original file positions by giving it a file position -in the generated source. - -#### new SourceMapConsumer(rawSourceMap) - -The only parameter is the raw source map (either as a string which can be -`JSON.parse`'d, or an object). According to the spec, source maps have the -following attributes: - -* `version`: Which version of the source map spec this map is following. - -* `sources`: An array of URLs to the original source files. - -* `names`: An array of identifiers which can be referenced by individual - mappings. - -* `sourceRoot`: Optional. The URL root from which all sources are relative. - -* `sourcesContent`: Optional. An array of contents of the original source files. - -* `mappings`: A string of base64 VLQs which contain the actual mappings. - -* `file`: Optional. The generated filename this source map is associated with. - -```js -var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData); -``` - -#### SourceMapConsumer.prototype.computeColumnSpans() - -Compute the last column for each generated mapping. The last column is -inclusive. - -```js -// Before: -consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1 }, -// { line: 2, -// column: 10 }, -// { line: 2, -// column: 20 } ] - -consumer.computeColumnSpans(); - -// After: -consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1, -// lastColumn: 9 }, -// { line: 2, -// column: 10, -// lastColumn: 19 }, -// { line: 2, -// column: 20, -// lastColumn: Infinity } ] - -``` - -#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) - -Returns the original source, line, and column information for the generated -source's line and column positions provided. The only argument is an object with -the following properties: - -* `line`: The line number in the generated source. - -* `column`: The column number in the generated source. - -* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or - `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest - element that is smaller than or greater than the one we are searching for, - respectively, if the exact element cannot be found. Defaults to - `SourceMapConsumer.GREATEST_LOWER_BOUND`. - -and an object is returned with the following properties: - -* `source`: The original source file, or null if this information is not - available. - -* `line`: The line number in the original source, or null if this information is - not available. - -* `column`: The column number in the original source, or null if this - information is not available. - -* `name`: The original identifier, or null if this information is not available. - -```js -consumer.originalPositionFor({ line: 2, column: 10 }) -// { source: 'foo.coffee', -// line: 2, -// column: 2, -// name: null } - -consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 }) -// { source: null, -// line: null, -// column: null, -// name: null } -``` - -#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) - -Returns the generated line and column information for the original source, -line, and column positions provided. The only argument is an object with -the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. - -* `column`: The column number in the original source. - -and an object is returned with the following properties: - -* `line`: The line number in the generated source, or null. - -* `column`: The column number in the generated source, or null. - -```js -consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 }) -// { line: 1, -// column: 56 } -``` - -#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition) - -Returns all generated line and column information for the original source, line, -and column provided. If no column is provided, returns all mappings -corresponding to a either the line we are searching for or the next closest line -that has any mappings. Otherwise, returns all mappings corresponding to the -given line and either the column we are searching for or the next closest column -that has any offsets. - -The only argument is an object with the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. - -* `column`: Optional. The column number in the original source. - -and an array of objects is returned, each with the following properties: - -* `line`: The line number in the generated source, or null. - -* `column`: The column number in the generated source, or null. - -```js -consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1 }, -// { line: 2, -// column: 10 }, -// { line: 2, -// column: 20 } ] -``` - -#### SourceMapConsumer.prototype.hasContentsOfAllSources() - -Return true if we have the embedded source content for every source listed in -the source map, false otherwise. - -In other words, if this method returns `true`, then -`consumer.sourceContentFor(s)` will succeed for every source `s` in -`consumer.sources`. - -```js -// ... -if (consumer.hasContentsOfAllSources()) { - consumerReadyCallback(consumer); -} else { - fetchSources(consumer, consumerReadyCallback); -} -// ... -``` - -#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing]) - -Returns the original source content for the source provided. The only -argument is the URL of the original source file. - -If the source content for the given source is not found, then an error is -thrown. Optionally, pass `true` as the second param to have `null` returned -instead. - -```js -consumer.sources -// [ "my-cool-lib.clj" ] - -consumer.sourceContentFor("my-cool-lib.clj") -// "..." - -consumer.sourceContentFor("this is not in the source map"); -// Error: "this is not in the source map" is not in the source map - -consumer.sourceContentFor("this is not in the source map", true); -// null -``` - -#### SourceMapConsumer.prototype.eachMapping(callback, context, order) - -Iterate over each mapping between an original source/line/column and a -generated line/column in this source map. - -* `callback`: The function that is called with each mapping. Mappings have the - form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, - name }` - -* `context`: Optional. If specified, this object will be the value of `this` - every time that `callback` is called. - -* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or - `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over - the mappings sorted by the generated file's line/column order or the - original's source/line/column order, respectively. Defaults to - `SourceMapConsumer.GENERATED_ORDER`. - -```js -consumer.eachMapping(function (m) { console.log(m); }) -// ... -// { source: 'illmatic.js', -// generatedLine: 1, -// generatedColumn: 0, -// originalLine: 1, -// originalColumn: 0, -// name: null } -// { source: 'illmatic.js', -// generatedLine: 2, -// generatedColumn: 0, -// originalLine: 2, -// originalColumn: 0, -// name: null } -// ... -``` -### SourceMapGenerator - -An instance of the SourceMapGenerator represents a source map which is being -built incrementally. - -#### new SourceMapGenerator([startOfSourceMap]) - -You may pass an object with the following properties: - -* `file`: The filename of the generated source that this source map is - associated with. - -* `sourceRoot`: A root for all relative URLs in this source map. - -* `skipValidation`: Optional. When `true`, disables validation of mappings as - they are added. This can improve performance but should be used with - discretion, as a last resort. Even then, one should avoid using this flag when - running tests, if possible. - -```js -var generator = new sourceMap.SourceMapGenerator({ - file: "my-generated-javascript-file.js", - sourceRoot: "http://example.com/app/js/" -}); -``` - -#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) - -Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance. - -* `sourceMapConsumer` The SourceMap. - -```js -var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer); -``` - -#### SourceMapGenerator.prototype.addMapping(mapping) - -Add a single mapping from original source line and column to the generated -source's line and column for this source map being created. The mapping object -should have the following properties: - -* `generated`: An object with the generated line and column positions. - -* `original`: An object with the original line and column positions. - -* `source`: The original source file (relative to the sourceRoot). - -* `name`: An optional original token name for this mapping. - -```js -generator.addMapping({ - source: "module-one.scm", - original: { line: 128, column: 0 }, - generated: { line: 3, column: 456 } -}) -``` - -#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for an original source file. - -* `sourceFile` the URL of the original source file. - -* `sourceContent` the content of the source file. - -```js -generator.setSourceContent("module-one.scm", - fs.readFileSync("path/to/module-one.scm")) -``` - -#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]]) - -Applies a SourceMap for a source file to the SourceMap. -Each mapping to the supplied source file is rewritten using the -supplied SourceMap. Note: The resolution for the resulting mappings -is the minimum of this map and the supplied map. - -* `sourceMapConsumer`: The SourceMap to be applied. - -* `sourceFile`: Optional. The filename of the source file. - If omitted, sourceMapConsumer.file will be used, if it exists. - Otherwise an error will be thrown. - -* `sourceMapPath`: Optional. The dirname of the path to the SourceMap - to be applied. If relative, it is relative to the SourceMap. - - This parameter is needed when the two SourceMaps aren't in the same - directory, and the SourceMap to be applied contains relative source - paths. If so, those relative source paths need to be rewritten - relative to the SourceMap. - - If omitted, it is assumed that both SourceMaps are in the same directory, - thus not needing any rewriting. (Supplying `'.'` has the same effect.) - -#### SourceMapGenerator.prototype.toString() - -Renders the source map being generated to a string. - -```js -generator.toString() -// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}' -``` - -### SourceNode - -SourceNodes provide a way to abstract over interpolating and/or concatenating -snippets of generated JavaScript source code, while maintaining the line and -column information associated between those snippets and the original source -code. This is useful as the final intermediate representation a compiler might -use before outputting the generated JS and source map. - -#### new SourceNode([line, column, source[, chunk[, name]]]) - -* `line`: The original line number associated with this source node, or null if - it isn't associated with an original line. - -* `column`: The original column number associated with this source node, or null - if it isn't associated with an original column. - -* `source`: The original source's filename; null if no filename is provided. - -* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see - below. - -* `name`: Optional. The original identifier. - -```js -var node = new SourceNode(1, 2, "a.cpp", [ - new SourceNode(3, 4, "b.cpp", "extern int status;\n"), - new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"), - new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"), -]); -``` - -#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath]) - -Creates a SourceNode from generated code and a SourceMapConsumer. - -* `code`: The generated code - -* `sourceMapConsumer` The SourceMap for the generated code - -* `relativePath` The optional path that relative sources in `sourceMapConsumer` - should be relative to. - -```js -var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8")); -var node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"), - consumer); -``` - -#### SourceNode.prototype.add(chunk) - -Add a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -```js -node.add(" + "); -node.add(otherNode); -node.add([leftHandOperandNode, " + ", rightHandOperandNode]); -``` - -#### SourceNode.prototype.prepend(chunk) - -Prepend a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -```js -node.prepend("/** Build Id: f783haef86324gf **/\n\n"); -``` - -#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for a source file. This will be added to the -`SourceMap` in the `sourcesContent` field. - -* `sourceFile`: The filename of the source file - -* `sourceContent`: The content of the source file - -```js -node.setSourceContent("module-one.scm", - fs.readFileSync("path/to/module-one.scm")) -``` - -#### SourceNode.prototype.walk(fn) - -Walk over the tree of JS snippets in this node and its children. The walking -function is called once for each snippet of JS and is passed that snippet and -the its original associated source's line/column location. - -* `fn`: The traversal function. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.walk(function (code, loc) { console.log("WALK:", code, loc); }) -// WALK: uno { source: 'b.js', line: 3, column: 4, name: null } -// WALK: dos { source: 'a.js', line: 1, column: 2, name: null } -// WALK: tres { source: 'a.js', line: 1, column: 2, name: null } -// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null } -``` - -#### SourceNode.prototype.walkSourceContents(fn) - -Walk over the tree of SourceNodes. The walking function is called for each -source file content and is passed the filename and source content. - -* `fn`: The traversal function. - -```js -var a = new SourceNode(1, 2, "a.js", "generated from a"); -a.setSourceContent("a.js", "original a"); -var b = new SourceNode(1, 2, "b.js", "generated from b"); -b.setSourceContent("b.js", "original b"); -var c = new SourceNode(1, 2, "c.js", "generated from c"); -c.setSourceContent("c.js", "original c"); - -var node = new SourceNode(null, null, null, [a, b, c]); -node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); }) -// WALK: a.js : original a -// WALK: b.js : original b -// WALK: c.js : original c -``` - -#### SourceNode.prototype.join(sep) - -Like `Array.prototype.join` except for SourceNodes. Inserts the separator -between each of this source node's children. - -* `sep`: The separator. - -```js -var lhs = new SourceNode(1, 2, "a.rs", "my_copy"); -var operand = new SourceNode(3, 4, "a.rs", "="); -var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()"); - -var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]); -var joinedNode = node.join(" "); -``` - -#### SourceNode.prototype.replaceRight(pattern, replacement) - -Call `String.prototype.replace` on the very right-most source snippet. Useful -for trimming white space from the end of a source node, etc. - -* `pattern`: The pattern to replace. - -* `replacement`: The thing to replace the pattern with. - -```js -// Trim trailing white space. -node.replaceRight(/\s*$/, ""); -``` - -#### SourceNode.prototype.toString() - -Return the string representation of this source node. Walks over the tree and -concatenates all the various snippets together to one string. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.toString() -// 'unodostresquatro' -``` - -#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) - -Returns the string representation of this tree of source nodes, plus a -SourceMapGenerator which contains all the mappings between the generated and -original sources. - -The arguments are the same as those to `new SourceMapGenerator`. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.toStringWithSourceMap({ file: "my-output-file.js" }) -// { code: 'unodostresquatro', -// map: [object SourceMapGenerator] } -``` diff --git a/node_modules/source-map/dist/source-map.debug.js b/node_modules/source-map/dist/source-map.debug.js deleted file mode 100644 index b5ab6382a..000000000 --- a/node_modules/source-map/dist/source-map.debug.js +++ /dev/null @@ -1,3091 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["sourceMap"] = factory(); - else - root["sourceMap"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - /* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ - exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; - exports.SourceNode = __webpack_require__(10).SourceNode; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var base64VLQ = __webpack_require__(2); - var util = __webpack_require__(4); - var ArraySet = __webpack_require__(5).ArraySet; - var MappingList = __webpack_require__(6).MappingList; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - var base64 = __webpack_require__(3); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - - /** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ - exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; - }; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); - }; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - - var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); - }()); - - function identity (s) { - return s; - } - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - - function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; - } - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; - } - - /** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - - /** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ - function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - - /** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ - function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; - } - - /** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ - MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - - /** - * Add the given source mapping. - * - * @param Object aMapping - */ - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - - /** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - - exports.MappingList = MappingList; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var binarySearch = __webpack_require__(8); - var ArraySet = __webpack_require__(5).ArraySet; - var base64VLQ = __webpack_require__(2); - var quickSort = __webpack_require__(9).quickSort; - - function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap) - : new BasicSourceMapConsumer(sourceMap); - } - - SourceMapConsumer.fromSourceMap = function(aSourceMap) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - - /** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: Optional. the column number in the original source. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - if (!this._sources.has(needle.source)) { - return []; - } - needle.source = this._sources.indexOf(needle.source); - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - - exports.SourceMapConsumer = SourceMapConsumer; - - /** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function BasicSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; - } - - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - - /** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns BasicSourceMapConsumer - */ - BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - BasicSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); - } - }); - - /** - * Provide the JIT with a nice shape / hidden class. - */ - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - - /** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ - BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - if (this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - if (this.sourceRoot != null) { - source = util.relative(this.sourceRoot, source); - } - if (!this._sources.has(source)) { - return { - line: null, - column: null, - lastColumn: null - }; - } - source = this._sources.indexOf(source); - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - - /** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The only parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ - function IndexedSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map')) - } - }); - } - - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - - /** - * The version of the source mapping spec that we are consuming. - */ - IndexedSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - if (section.consumer.sourceRoot !== null) { - source = util.join(section.consumer.sourceRoot, source); - } - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - - /** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; - }; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - // It turns out that some (most?) JavaScript engines don't self-host - // `Array.prototype.sort`. This makes sense because C++ will likely remain - // faster than JS when doing raw CPU-intensive sorting. However, when using a - // custom comparator function, calling back and forth between the VM's C++ and - // JIT'd JS is rather slow *and* loses JIT type information, resulting in - // worse generated code for the comparator function than would be optimal. In - // fact, when sorting with a comparator, these costs outweigh the benefits of - // sorting in C++. By using our own JS-implemented Quick Sort (below), we get - // a ~3500ms mean speed-up in `bench/bench.html`. - - /** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - - /** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ - function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); - } - - /** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ - function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - - /** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ - exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - var util = __webpack_require__(4); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Newline character code for charCodeAt() comparisons - var NEWLINE_CODE = 10; - - // Private symbol for identifying `SourceNode`s when multiple versions of - // the source-map library are loaded. This MUST NOT CHANGE across - // versions! - var isSourceNode = "$$$isSourceNode$$$"; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - - -/***/ }) -/******/ ]) -}); -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCBlNDczOGZjNzJhN2IyMzAzOTg4OSIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTBDLFNBQVM7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDL1pBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUEyRDtBQUMzRCxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7Ozs7Ozs7QUMzSUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsb0JBQW1CO0FBQ25CLHFCQUFvQjs7QUFFcEIsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsaUJBQWdCO0FBQ2hCLGtCQUFpQjs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNsRUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0NBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUEyQixRQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNoYUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXNDLFNBQVM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3hIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzlFQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxvQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7O0FBRVg7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLE1BQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVEQUFzRCxZQUFZO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHdDQUF3QztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQStDLG1CQUFtQixFQUFFO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE2QixNQUFNO0FBQ25DO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXNEO0FBQ3REOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBLElBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUMsc0JBQXFCLCtDQUErQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsMkJBQTJCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBLHNCQUFxQiw0QkFBNEI7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDempDQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQzlHQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVcsTUFBTTtBQUNqQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ2pIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsU0FBUztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBLHVDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBK0MsU0FBUztBQUN4RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSw2Q0FBNEMsY0FBYztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBLFlBQVc7QUFDWDtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBLElBQUc7O0FBRUgsV0FBVTtBQUNWOztBQUVBIiwiZmlsZSI6InNvdXJjZS1tYXAuZGVidWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJzb3VyY2VNYXBcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRpZDogbW9kdWxlSWQsXG4gXHRcdFx0bG9hZGVkOiBmYWxzZVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGU0NzM4ZmM3MmE3YjIzMDM5ODg5IiwiLypcbiAqIENvcHlyaWdodCAyMDA5LTIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLnR4dCBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbmV4cG9ydHMuU291cmNlTWFwQ29uc3VtZXIgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWNvbnN1bWVyJykuU291cmNlTWFwQ29uc3VtZXI7XG5leHBvcnRzLlNvdXJjZU5vZGUgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2Utbm9kZScpLlNvdXJjZU5vZGU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NvdXJjZS1tYXAuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAqIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBzb3VyY2VSb290OiBBIHJvb3QgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGluIHRoaXMgc291cmNlIG1hcC5cbiAqL1xuZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gIGlmICghYUFyZ3MpIHtcbiAgICBhQXJncyA9IHt9O1xuICB9XG4gIHRoaXMuX2ZpbGUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2ZpbGUnLCBudWxsKTtcbiAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbn1cblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIpIHtcbiAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgIGZpbGU6IGFTb3VyY2VNYXBDb25zdW1lci5maWxlLFxuICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAqIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIG9yaWdpbmFsOiBBbiBvYmplY3Qgd2l0aCB0aGUgb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdnZW5lcmF0ZWQnKTtcbiAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhhQXJncywgJ25hbWUnLCBudWxsKTtcblxuICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gU3RyaW5nKHNvdXJjZSk7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSAhPSBudWxsKSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKCF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21hcHBpbmdzLmFkZCh7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgIG9yaWdpbmFsTGluZTogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5saW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBuYW1lOiBuYW1lXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYVNvdXJjZUNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICogcmV3cml0dGVuIHVzaW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgbWFwLiBOb3RlOiBUaGUgcmVzb2x1dGlvbiBmb3IgdGhlXG4gKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIGFTb3VyY2VNYXBQYXRoIE9wdGlvbmFsLiBUaGUgZGlybmFtZSBvZiB0aGUgcGF0aCB0byB0aGUgc291cmNlIG1hcFxuICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAqICAgICAgICBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkIGNvbnRhaW5zIHJlbGF0aXZlIHNvdXJjZVxuICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgIHZhciBzb3VyY2VGaWxlID0gYVNvdXJjZUZpbGU7XG4gICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICBpZiAoYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAnb3IgdGhlIHNvdXJjZSBtYXBcXCdzIFwiZmlsZVwiIHByb3BlcnR5LiBCb3RoIHdlcmUgb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzb3VyY2VGaWxlID0gYVNvdXJjZU1hcENvbnN1bWVyLmZpbGU7XG4gICAgfVxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAvLyBNYWtlIFwic291cmNlRmlsZVwiIHJlbGF0aXZlIGlmIGFuIGFic29sdXRlIFVybCBpcyBwYXNzZWQuXG4gICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgfVxuICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgIHZhciBuZXdTb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICB0aGlzLl9tYXBwaW5ncy51bnNvcnRlZEZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICB2YXIgb3JpZ2luYWwgPSBhU291cmNlTWFwQ29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICBpZiAob3JpZ2luYWwubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIW5ld1NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXdOYW1lcztcblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAqXG4gKiAgIDEuIEp1c3QgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAqICAgICAgdG9rZW4uXG4gKlxuICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gKiBpbiB0byBvbmUgb2YgdGhlc2UgY2F0ZWdvcmllcy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3ZhbGlkYXRlTWFwcGluZyhhR2VuZXJhdGVkLCBhT3JpZ2luYWwsIGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAvLyBXaGVuIGFPcmlnaW5hbCBpcyB0cnV0aHkgYnV0IGhhcyBlbXB0eSB2YWx1ZXMgZm9yIC5saW5lIGFuZCAuY29sdW1uLFxuICAgIC8vIGl0IGlzIG1vc3QgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvci4gSW4gdGhpcyBjYXNlIHdlIHRocm93IGEgdmVyeVxuICAgIC8vIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgdG8gdHJ5IHRvIGd1aWRlIHRoZW0gdGhlIHJpZ2h0IHdheS5cbiAgICAvLyBGb3IgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci1idW5kbGVyL3B1bGwvNTE5XG4gICAgaWYgKGFPcmlnaW5hbCAmJiB0eXBlb2YgYU9yaWdpbmFsLmxpbmUgIT09ICdudW1iZXInICYmIHR5cGVvZiBhT3JpZ2luYWwuY29sdW1uICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnb3JpZ2luYWwubGluZSBhbmQgb3JpZ2luYWwuY29sdW1uIGFyZSBub3QgbnVtYmVycyAtLSB5b3UgcHJvYmFibHkgbWVhbnQgdG8gb21pdCAnICtcbiAgICAgICAgICAgICd0aGUgb3JpZ2luYWwgbWFwcGluZyBlbnRpcmVseSBhbmQgb25seSBtYXAgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi4gSWYgc28sIHBhc3MgJyArXG4gICAgICAgICAgICAnbnVsbCBmb3IgdGhlIG9yaWdpbmFsIG1hcHBpbmcgaW5zdGVhZCBvZiBhbiBvYmplY3Qgd2l0aCBlbXB0eSBvciBudWxsIHZhbHVlcy4nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgIC8vIENhc2UgMS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsLmxpbmUgPiAwICYmIGFPcmlnaW5hbC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcHBpbmc6ICcgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICBvcmlnaW5hbDogYU9yaWdpbmFsLFxuICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIHRvIHRoZSBzdHJlYW0gb2YgYmFzZSA2NCBWTFFzXG4gKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9zZXJpYWxpemVNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBuZXh0O1xuICAgIHZhciBtYXBwaW5nO1xuICAgIHZhciBuYW1lSWR4O1xuICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9tYXBwaW5ncy50b0FycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG4gICAgICBuZXh0ID0gJydcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbmV4dCArPSAnOyc7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBpZiAoIXV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZywgbWFwcGluZ3NbaSAtIDFdKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbik7XG4gICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VJZHggPSB0aGlzLl9zb3VyY2VzLmluZGV4T2YobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICBwcmV2aW91c1NvdXJjZSA9IHNvdXJjZUlkeDtcblxuICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYVNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHV0aWwudG9TZXRTdHJpbmcoc291cmNlKTtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLCBrZXkpXG4gICAgICAgID8gdGhpcy5fc291cmNlc0NvbnRlbnRzW2tleV1cbiAgICAgICAgOiBudWxsO1xuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgdmFyIG1hcCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCksXG4gICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpbGUgIT0gbnVsbCkge1xuICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9O1xuXG4vKipcbiAqIFJlbmRlciB0aGUgc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQgdG8gYSBzdHJpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IFNvdXJjZU1hcEdlbmVyYXRvcjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbi8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuLy8gbGVuZ3RoIHF1YW50aXRpZXMgd2UgdXNlIGluIHRoZSBzb3VyY2UgbWFwIHNwZWMsIHRoZSBmaXJzdCBiaXQgaXMgdGhlIHNpZ24sXG4vLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbi8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbi8vIGRpZ2l0cyBpbiB0aGlzIHZhbHVlIGZvbGxvd2luZyB0aGlzIGRpZ2l0LlxuLy9cbi8vICAgQ29udGludWF0aW9uXG4vLyAgIHwgICAgU2lnblxuLy8gICB8ICAgIHxcbi8vICAgViAgICBWXG4vLyAgIDEwMTAxMVxuXG52YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9CQVNFID0gMSA8PCBWTFFfQkFTRV9TSElGVDtcblxuLy8gYmluYXJ5OiAwMTExMTFcbnZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbi8qKlxuICogQ29udmVydHMgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICogICAyIGJlY29tZXMgNCAoMTAwIGJpbmFyeSksIC0yIGJlY29tZXMgNSAoMTAxIGJpbmFyeSlcbiAqL1xuZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHJldHVybiBhVmFsdWUgPCAwXG4gICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG59XG5cbi8qKlxuICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAqL1xuZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gIHZhciBzaGlmdGVkID0gYVZhbHVlID4+IDE7XG4gIHJldHVybiBpc05lZ2F0aXZlXG4gICAgPyAtc2hpZnRlZFxuICAgIDogc2hpZnRlZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIDY0IFZMUSBlbmNvZGVkIHZhbHVlLlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gIHZhciBlbmNvZGVkID0gXCJcIjtcbiAgdmFyIGRpZ2l0O1xuXG4gIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gIGRvIHtcbiAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgaWYgKHZscSA+IDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7XG4gICAgfVxuICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gIH0gd2hpbGUgKHZscSA+IDApO1xuXG4gIHJldHVybiBlbmNvZGVkO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IDA7XG4gIHZhciBzaGlmdCA9IDA7XG4gIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gIGRvIHtcbiAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgIH1cblxuICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBkaWdpdDogXCIgKyBhU3RyLmNoYXJBdChhSW5kZXggLSAxKSk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgZGlnaXQgJj0gVkxRX0JBU0VfTUFTSztcbiAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICB9IHdoaWxlIChjb250aW51YXRpb24pO1xuXG4gIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LXZscS5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBpbnRUb0NoYXJNYXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycuc3BsaXQoJycpO1xuXG4vKipcbiAqIEVuY29kZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBvZiAwIHRvIDYzIHRvIGEgc2luZ2xlIGJhc2UgNjQgZGlnaXQuXG4gKi9cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gKG51bWJlcikge1xuICBpZiAoMCA8PSBudW1iZXIgJiYgbnVtYmVyIDwgaW50VG9DaGFyTWFwLmxlbmd0aCkge1xuICAgIHJldHVybiBpbnRUb0NoYXJNYXBbbnVtYmVyXTtcbiAgfVxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzOiBcIiArIG51bWJlcik7XG59O1xuXG4vKipcbiAqIERlY29kZSBhIHNpbmdsZSBiYXNlIDY0IGNoYXJhY3RlciBjb2RlIGRpZ2l0IHRvIGFuIGludGVnZXIuIFJldHVybnMgLTEgb25cbiAqIGZhaWx1cmUuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gKGNoYXJDb2RlKSB7XG4gIHZhciBiaWdBID0gNjU7ICAgICAvLyAnQSdcbiAgdmFyIGJpZ1ogPSA5MDsgICAgIC8vICdaJ1xuXG4gIHZhciBsaXR0bGVBID0gOTc7ICAvLyAnYSdcbiAgdmFyIGxpdHRsZVogPSAxMjI7IC8vICd6J1xuXG4gIHZhciB6ZXJvID0gNDg7ICAgICAvLyAnMCdcbiAgdmFyIG5pbmUgPSA1NzsgICAgIC8vICc5J1xuXG4gIHZhciBwbHVzID0gNDM7ICAgICAvLyAnKydcbiAgdmFyIHNsYXNoID0gNDc7ICAgIC8vICcvJ1xuXG4gIHZhciBsaXR0bGVPZmZzZXQgPSAyNjtcbiAgdmFyIG51bWJlck9mZnNldCA9IDUyO1xuXG4gIC8vIDAgLSAyNTogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcbiAgaWYgKGJpZ0EgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gYmlnWikge1xuICAgIHJldHVybiAoY2hhckNvZGUgLSBiaWdBKTtcbiAgfVxuXG4gIC8vIDI2IC0gNTE6IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XG4gIGlmIChsaXR0bGVBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGxpdHRsZVopIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gbGl0dGxlQSArIGxpdHRsZU9mZnNldCk7XG4gIH1cblxuICAvLyA1MiAtIDYxOiAwMTIzNDU2Nzg5XG4gIGlmICh6ZXJvIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IG5pbmUpIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gemVybyArIG51bWJlck9mZnNldCk7XG4gIH1cblxuICAvLyA2MjogK1xuICBpZiAoY2hhckNvZGUgPT0gcGx1cykge1xuICAgIHJldHVybiA2MjtcbiAgfVxuXG4gIC8vIDYzOiAvXG4gIGlmIChjaGFyQ29kZSA9PSBzbGFzaCkge1xuICAgIHJldHVybiA2MztcbiAgfVxuXG4gIC8vIEludmFsaWQgYmFzZTY0IGRpZ2l0LlxuICByZXR1cm4gLTE7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHZhbHVlcyBmcm9tIHBhcmFtZXRlci9vcHRpb25zXG4gKiBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBhcmdzIFRoZSBvYmplY3Qgd2UgYXJlIGV4dHJhY3RpbmcgdmFsdWVzIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSBhcmUgZ2V0dGluZy5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgQW4gb3B0aW9uYWwgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nXG4gKiBmcm9tIHRoZSBvYmplY3QuIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmcsIGFuXG4gKiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAqL1xuZnVuY3Rpb24gZ2V0QXJnKGFBcmdzLCBhTmFtZSwgYURlZmF1bHRWYWx1ZSkge1xuICBpZiAoYU5hbWUgaW4gYUFyZ3MpIHtcbiAgICByZXR1cm4gYUFyZ3NbYU5hbWVdO1xuICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gYURlZmF1bHRWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFOYW1lICsgJ1wiIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQuJyk7XG4gIH1cbn1cbmV4cG9ydHMuZ2V0QXJnID0gZ2V0QXJnO1xuXG52YXIgdXJsUmVnZXhwID0gL14oPzooW1xcdytcXC0uXSspOik/XFwvXFwvKD86KFxcdys6XFx3KylAKT8oW1xcdy5dKikoPzo6KFxcZCspKT8oXFxTKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgISFhUGF0aC5tYXRjaCh1cmxSZWdleHApO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDAgfHwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyA9IGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zO1xuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBkZWZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgaW5kaWNlcyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiwgYnV0IGRpZmZlcmVudFxuICogc291cmNlL25hbWUvb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGFcbiAqIG1hcHBpbmcgd2l0aCBhIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCA9IGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkO1xuXG5mdW5jdGlvbiBzdHJjbXAoYVN0cjEsIGFTdHIyKSB7XG4gIGlmIChhU3RyMSA9PT0gYVN0cjIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2FycmF5LXNldC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9tYXBwaW5nLWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXApIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSBKU09OLnBhcnNlKGFTb3VyY2VNYXAucmVwbGFjZSgvXlxcKVxcXVxcfScvLCAnJykpO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZU1hcC5zZWN0aW9ucyAhPSBudWxsXG4gICAgPyBuZXcgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcClcbiAgICA6IG5ldyBCYXNpY1NvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcCk7XG59XG5cblNvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPSBmdW5jdGlvbihhU291cmNlTWFwKSB7XG4gIHJldHVybiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcCk7XG59XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vLyBgX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kIGBfX29yaWdpbmFsTWFwcGluZ3NgIGFyZSBhcnJheXMgdGhhdCBob2xkIHRoZVxuLy8gcGFyc2VkIG1hcHBpbmcgY29vcmRpbmF0ZXMgZnJvbSB0aGUgc291cmNlIG1hcCdzIFwibWFwcGluZ3NcIiBhdHRyaWJ1dGUuIFRoZXlcbi8vIGFyZSBsYXppbHkgaW5zdGFudGlhdGVkLCBhY2Nlc3NlZCB2aWEgdGhlIGBfZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuLy8gYF9vcmlnaW5hbE1hcHBpbmdzYCBnZXR0ZXJzIHJlc3BlY3RpdmVseSwgYW5kIHdlIG9ubHkgcGFyc2UgdGhlIG1hcHBpbmdzXG4vLyBhbmQgY3JlYXRlIHRoZXNlIGFycmF5cyBvbmNlIHF1ZXJpZWQgZm9yIGEgc291cmNlIGxvY2F0aW9uLiBXZSBqdW1wIHRocm91Z2hcbi8vIHRoZXNlIGhvb3BzIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG1hbnkgdGhvdXNhbmRzIG9mIG1hcHBpbmdzLCBhbmQgcGFyc2luZ1xuLy8gdGhlbSBpcyBleHBlbnNpdmUsIHNvIHdlIG9ubHkgd2FudCB0byBkbyBpdCBpZiB3ZSBtdXN0LlxuLy9cbi8vIEVhY2ggb2JqZWN0IGluIHRoZSBhcnJheXMgaXMgb2YgdGhlIGZvcm06XG4vL1xuLy8gICAgIHtcbi8vICAgICAgIGdlbmVyYXRlZExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBnZW5lcmF0ZWRDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIHNvdXJjZTogVGhlIHBhdGggdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoYXQgZ2VuZXJhdGVkIHRoaXNcbi8vICAgICAgICAgICAgICAgY2h1bmsgb2YgY29kZSxcbi8vICAgICAgIG9yaWdpbmFsTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBuYW1lOiBUaGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgc3ltYm9sIHdoaWNoIGdlbmVyYXRlZCB0aGlzIGNodW5rIG9mXG4vLyAgICAgICAgICAgICBjb2RlLlxuLy8gICAgIH1cbi8vXG4vLyBBbGwgcHJvcGVydGllcyBleGNlcHQgZm9yIGBnZW5lcmF0ZWRMaW5lYCBhbmQgYGdlbmVyYXRlZENvbHVtbmAgY2FuIGJlXG4vLyBgbnVsbGAuXG4vL1xuLy8gYF9nZW5lcmF0ZWRNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucy5cbi8vXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGlzIG9yZGVyZWQgYnkgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucy5cblxuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19nZW5lcmF0ZWRNYXBwaW5ncycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MpIHtcbiAgICAgIHRoaXMuX3BhcnNlTWFwcGluZ3ModGhpcy5fbWFwcGluZ3MsIHRoaXMuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fX29yaWdpbmFsTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19vcmlnaW5hbE1hcHBpbmdzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmIHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4oc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBPcHRpb25hbC4gdGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IoYUFyZ3MpIHtcbiAgICB2YXIgbGluZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpO1xuXG4gICAgLy8gV2hlbiB0aGVyZSBpcyBubyBleGFjdCBtYXRjaCwgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRNYXBwaW5nXG4gICAgLy8gcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgbWFwcGluZyBsZXNzIHRoYW4gdGhlIG5lZWRsZS4gQnlcbiAgICAvLyBzZXR0aW5nIG5lZWRsZS5vcmlnaW5hbENvbHVtbiB0byAwLCB3ZSB0aHVzIGZpbmQgdGhlIGxhc3QgbWFwcGluZyBmb3JcbiAgICAvLyB0aGUgZ2l2ZW4gbGluZSwgcHJvdmlkZWQgc3VjaCBhIG1hcHBpbmcgZXhpc3RzLlxuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBzb3VyY2U6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyksXG4gICAgICBvcmlnaW5hbExpbmU6IGxpbmUsXG4gICAgICBvcmlnaW5hbENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nLCAwKVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIG5lZWRsZS5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgbmVlZGxlLnNvdXJjZSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc291cmNlcy5oYXMobmVlZGxlLnNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihuZWVkbGUuc291cmNlKTtcblxuICAgIHZhciBtYXBwaW5ncyA9IFtdO1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcobmVlZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAoYUFyZ3MuY29sdW1uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2UgZm91bmQuIFNpbmNlXG4gICAgICAgIC8vIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBmaW5kIGFsbCBtYXBwaW5ncyBmb3JcbiAgICAgICAgLy8gdGhlIGxpbmUgd2UgZm91bmQuXG4gICAgICAgIHdoaWxlIChtYXBwaW5nICYmIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBvcmlnaW5hbExpbmUpIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgb3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2Ugd2VyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICAvLyBTaW5jZSBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJlxuICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09IGxpbmUgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPT0gb3JpZ2luYWxDb2x1bW4pIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBpbmdzO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaCB3ZSBjYW5cbiAqIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgZmlsZSBwb3NpdGlvbnMgYnkgZ2l2aW5nIGl0IGEgZmlsZVxuICogcG9zaXRpb24gaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKlxuICogVGhlIG9ubHkgcGFyYW1ldGVyIGlzIHRoZSByYXcgc291cmNlIG1hcCAoZWl0aGVyIGFzIGEgSlNPTiBzdHJpbmcsIG9yXG4gKiBhbHJlYWR5IHBhcnNlZCB0byBhbiBvYmplY3QpLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHNvdXJjZSBtYXBzIGhhdmUgdGhlXG4gKiBmb2xsb3dpbmcgYXR0cmlidXRlczpcbiAqXG4gKiAgIC0gdmVyc2lvbjogV2hpY2ggdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcCBzcGVjIHRoaXMgbWFwIGlzIGZvbGxvd2luZy5cbiAqICAgLSBzb3VyY2VzOiBBbiBhcnJheSBvZiBVUkxzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbmFtZXM6IEFuIGFycmF5IG9mIGlkZW50aWZpZXJzIHdoaWNoIGNhbiBiZSByZWZlcnJlbmNlZCBieSBpbmRpdmlkdWFsIG1hcHBpbmdzLlxuICogICAtIHNvdXJjZVJvb3Q6IE9wdGlvbmFsLiBUaGUgVVJMIHJvb3QgZnJvbSB3aGljaCBhbGwgc291cmNlcyBhcmUgcmVsYXRpdmUuXG4gKiAgIC0gc291cmNlc0NvbnRlbnQ6IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBjb250ZW50cyBvZiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogICAtIG1hcHBpbmdzOiBBIHN0cmluZyBvZiBiYXNlNjQgVkxRcyB3aGljaCBjb250YWluIHRoZSBhY3R1YWwgbWFwcGluZ3MuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICpcbiAqIEhlcmUgaXMgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF06XG4gKlxuICogICAgIHtcbiAqICAgICAgIHZlcnNpb24gOiAzLFxuICogICAgICAgZmlsZTogXCJvdXQuanNcIixcbiAqICAgICAgIHNvdXJjZVJvb3QgOiBcIlwiLFxuICogICAgICAgc291cmNlczogW1wiZm9vLmpzXCIsIFwiYmFyLmpzXCJdLFxuICogICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICBtYXBwaW5nczogXCJBQSxBQjs7QUJDREU7XCJcbiAqICAgICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNvdXJjZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzJyk7XG4gIC8vIFNhc3MgMy4zIGxlYXZlcyBvdXQgdGhlICduYW1lcycgYXJyYXksIHNvIHdlIGRldmlhdGUgZnJvbSB0aGUgc3BlYyAod2hpY2hcbiAgLy8gcmVxdWlyZXMgdGhlIGFycmF5KSB0byBwbGF5IG5pY2UgaGVyZS5cbiAgdmFyIG5hbWVzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnbmFtZXMnLCBbXSk7XG4gIHZhciBzb3VyY2VSb290ID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB2YXIgc291cmNlc0NvbnRlbnQgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzQ29udGVudCcsIG51bGwpO1xuICB2YXIgbWFwcGluZ3MgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdtYXBwaW5ncycpO1xuICB2YXIgZmlsZSA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ2ZpbGUnLCBudWxsKTtcblxuICAvLyBPbmNlIGFnYWluLCBTYXNzIGRldmlhdGVzIGZyb20gdGhlIHNwZWMgYW5kIHN1cHBsaWVzIHRoZSB2ZXJzaW9uIGFzIGFcbiAgLy8gc3RyaW5nIHJhdGhlciB0aGFuIGEgbnVtYmVyLCBzbyB3ZSB1c2UgbG9vc2UgZXF1YWxpdHkgY2hlY2tpbmcgaGVyZS5cbiAgaWYgKHZlcnNpb24gIT0gdGhpcy5fdmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdmVyc2lvbjogJyArIHZlcnNpb24pO1xuICB9XG5cbiAgc291cmNlcyA9IHNvdXJjZXNcbiAgICAubWFwKFN0cmluZylcbiAgICAvLyBTb21lIHNvdXJjZSBtYXBzIHByb2R1Y2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIGxpa2UgXCIuL2Zvby5qc1wiIGluc3RlYWQgb2ZcbiAgICAvLyBcImZvby5qc1wiLiAgTm9ybWFsaXplIHRoZXNlIGZpcnN0IHNvIHRoYXQgZnV0dXJlIGNvbXBhcmlzb25zIHdpbGwgc3VjY2VlZC5cbiAgICAvLyBTZWUgYnVnemlsLmxhLzEwOTA3NjguXG4gICAgLm1hcCh1dGlsLm5vcm1hbGl6ZSlcbiAgICAvLyBBbHdheXMgZW5zdXJlIHRoYXQgYWJzb2x1dGUgc291cmNlcyBhcmUgaW50ZXJuYWxseSBzdG9yZWQgcmVsYXRpdmUgdG9cbiAgICAvLyB0aGUgc291cmNlIHJvb3QsIGlmIHRoZSBzb3VyY2Ugcm9vdCBpcyBhYnNvbHV0ZS4gTm90IGRvaW5nIHRoaXMgd291bGRcbiAgICAvLyBiZSBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMgd2hlbiB0aGUgc291cmNlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlXG4gICAgLy8gc291cmNlICh2YWxpZCwgYnV0IHdoeT8/KS4gU2VlIGdpdGh1YiBpc3N1ZSAjMTk5IGFuZCBidWd6aWwubGEvMTE4ODk4Mi5cbiAgICAubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBzb3VyY2VSb290ICYmIHV0aWwuaXNBYnNvbHV0ZShzb3VyY2VSb290KSAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlKVxuICAgICAgICA/IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlKVxuICAgICAgICA6IHNvdXJjZTtcbiAgICB9KTtcblxuICAvLyBQYXNzIGB0cnVlYCBiZWxvdyB0byBhbGxvdyBkdXBsaWNhdGUgbmFtZXMgYW5kIHNvdXJjZXMuIFdoaWxlIHNvdXJjZSBtYXBzXG4gIC8vIGFyZSBpbnRlbmRlZCB0byBiZSBjb21wcmVzc2VkIGFuZCBkZWR1cGxpY2F0ZWQsIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyXG4gIC8vIHNvbWV0aW1lcyBnZW5lcmF0ZXMgc291cmNlIG1hcHMgd2l0aCBkdXBsaWNhdGVzIGluIHRoZW0uIFNlZSBHaXRodWIgaXNzdWVcbiAgLy8gIzcyIGFuZCBidWd6aWwubGEvODg5NDkyLlxuICB0aGlzLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShuYW1lcy5tYXAoU3RyaW5nKSwgdHJ1ZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoc291cmNlcywgdHJ1ZSk7XG5cbiAgdGhpcy5zb3VyY2VSb290ID0gc291cmNlUm9vdDtcbiAgdGhpcy5zb3VyY2VzQ29udGVudCA9IHNvdXJjZXNDb250ZW50O1xuICB0aGlzLl9tYXBwaW5ncyA9IG1hcHBpbmdzO1xuICB0aGlzLmZpbGUgPSBmaWxlO1xufVxuXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQ3JlYXRlIGEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBmcm9tIGEgU291cmNlTWFwR2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSBTb3VyY2VNYXBHZW5lcmF0b3IgYVNvdXJjZU1hcFxuICogICAgICAgIFRoZSBzb3VyY2UgbWFwIHRoYXQgd2lsbCBiZSBjb25zdW1lZC5cbiAqIEByZXR1cm5zIEJhc2ljU291cmNlTWFwQ29uc3VtZXJcbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwKSB7XG4gICAgdmFyIHNtYyA9IE9iamVjdC5jcmVhdGUoQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuXG4gICAgdmFyIG5hbWVzID0gc21jLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShhU291cmNlTWFwLl9uYW1lcy50b0FycmF5KCksIHRydWUpO1xuICAgIHZhciBzb3VyY2VzID0gc21jLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX3NvdXJjZXMudG9BcnJheSgpLCB0cnVlKTtcbiAgICBzbWMuc291cmNlUm9vdCA9IGFTb3VyY2VNYXAuX3NvdXJjZVJvb3Q7XG4gICAgc21jLnNvdXJjZXNDb250ZW50ID0gYVNvdXJjZU1hcC5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudChzbWMuX3NvdXJjZXMudG9BcnJheSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21jLnNvdXJjZVJvb3QpO1xuICAgIHNtYy5maWxlID0gYVNvdXJjZU1hcC5fZmlsZTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlUm9vdCAhPSBudWxsID8gdXRpbC5qb2luKHRoaXMuc291cmNlUm9vdCwgcykgOiBzO1xuICAgIH0sIHRoaXMpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gYmlhczogRWl0aGVyICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gKlxuICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9yIG51bGwuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kTWFwcGluZyhcbiAgICAgIG5lZWRsZSxcbiAgICAgIHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLFxuICAgICAgXCJnZW5lcmF0ZWRMaW5lXCIsXG4gICAgICBcImdlbmVyYXRlZENvbHVtblwiLFxuICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCxcbiAgICAgIHV0aWwuZ2V0QXJnKGFBcmdzLCAnYmlhcycsIFNvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EKVxuICAgICk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnc291cmNlJywgbnVsbCk7XG4gICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2UgPSB0aGlzLl9zb3VyY2VzLmF0KHNvdXJjZSk7XG4gICAgICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4odGhpcy5zb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgbmFtZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICduYW1lJywgbnVsbCk7XG4gICAgICAgIGlmIChuYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgbmFtZSA9IHRoaXMuX25hbWVzLmF0KG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbmFtZTogbnVsbFxuICAgIH07XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMgPVxuICBmdW5jdGlvbiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudC5sZW5ndGggPj0gdGhpcy5fc291cmNlcy5zaXplKCkgJiZcbiAgICAgICF0aGlzLnNvdXJjZXNDb250ZW50LnNvbWUoZnVuY3Rpb24gKHNjKSB7IHJldHVybiBzYyA9PSBudWxsOyB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBhU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIGFTb3VyY2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhhU291cmNlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKGFTb3VyY2UpXTtcbiAgICB9XG5cbiAgICB2YXIgdXJsO1xuICAgIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbFxuICAgICAgICAmJiAodXJsID0gdXRpbC51cmxQYXJzZSh0aGlzLnNvdXJjZVJvb3QpKSkge1xuICAgICAgLy8gWFhYOiBmaWxlOi8vIFVSSXMgYW5kIGFic29sdXRlIHBhdGhzIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBmb3JcbiAgICAgIC8vIG1hbnkgdXNlcnMuIFdlIGNhbiBoZWxwIHRoZW0gb3V0IHdoZW4gdGhleSBleHBlY3QgZmlsZTovLyBVUklzIHRvXG4gICAgICAvLyBiZWhhdmUgbGlrZSBpdCB3b3VsZCBpZiB0aGV5IHdlcmUgcnVubmluZyBhIGxvY2FsIEhUVFAgc2VydmVyLiBTZWVcbiAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTU5Ny5cbiAgICAgIHZhciBmaWxlVXJpQWJzUGF0aCA9IGFTb3VyY2UucmVwbGFjZSgvXmZpbGU6XFwvXFwvLywgXCJcIik7XG4gICAgICBpZiAodXJsLnNjaGVtZSA9PSBcImZpbGVcIlxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKGZpbGVVcmlBYnNQYXRoKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFt0aGlzLl9zb3VyY2VzLmluZGV4T2YoZmlsZVVyaUFic1BhdGgpXVxuICAgICAgfVxuXG4gICAgICBpZiAoKCF1cmwucGF0aCB8fCB1cmwucGF0aCA9PSBcIi9cIilcbiAgICAgICAgICAmJiB0aGlzLl9zb3VyY2VzLmhhcyhcIi9cIiArIGFTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIGFTb3VyY2UpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgcmVjdXJzaXZlbHkgZnJvbVxuICAgIC8vIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvci4gSW4gdGhhdCBjYXNlLCB3ZVxuICAgIC8vIGRvbid0IHdhbnQgdG8gdGhyb3cgaWYgd2UgY2FuJ3QgZmluZCB0aGUgc291cmNlIC0gd2UganVzdCB3YW50IHRvXG4gICAgLy8gcmV0dXJuIG51bGwsIHNvIHdlIHByb3ZpZGUgYSBmbGFnIHRvIGV4aXQgZ3JhY2VmdWxseS5cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICAgIH07XG4gICAgfVxuICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgb3JpZ2luYWxMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncyxcbiAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IG5lZWRsZS5zb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG5leHBvcnRzLkJhc2ljU291cmNlTWFwQ29uc3VtZXIgPSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEFuIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2hcbiAqIHdlIGNhbiBxdWVyeSBmb3IgaW5mb3JtYXRpb24uIEl0IGRpZmZlcnMgZnJvbSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluXG4gKiB0aGF0IGl0IHRha2VzIFwiaW5kZXhlZFwiIHNvdXJjZSBtYXBzIChpLmUuIG9uZXMgd2l0aCBhIFwic2VjdGlvbnNcIiBmaWVsZCkgYXNcbiAqIGlucHV0LlxuICpcbiAqIFRoZSBvbmx5IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjaGVhZGluZz1oLjUzNWVzM3hlcHJndFxuICovXG5mdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSlcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmllciwgb3IgbnVsbC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX29yaWdpbmFsUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgZ2VuZXJhdGVkTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgLy8gRmluZCB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24gd2UncmUgdHJ5aW5nIHRvIG1hcFxuICAgIC8vIHRvIGFuIG9yaWdpbmFsIHBvc2l0aW9uLlxuICAgIHZhciBzZWN0aW9uSW5kZXggPSBiaW5hcnlTZWFyY2guc2VhcmNoKG5lZWRsZSwgdGhpcy5fc2VjdGlvbnMsXG4gICAgICBmdW5jdGlvbihuZWVkbGUsIHNlY3Rpb24pIHtcbiAgICAgICAgdmFyIGNtcCA9IG5lZWRsZS5nZW5lcmF0ZWRMaW5lIC0gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZTtcbiAgICAgICAgaWYgKGNtcCkge1xuICAgICAgICAgIHJldHVybiBjbXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgIHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbik7XG4gICAgICB9KTtcbiAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW3NlY3Rpb25JbmRleF07XG5cbiAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgICBuYW1lOiBudWxsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzZWN0aW9uLmNvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgbGluZTogbmVlZGxlLmdlbmVyYXRlZExpbmUgLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgY29sdW1uOiBuZWVkbGUuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgIDogMCksXG4gICAgICBiaWFzOiBhQXJncy5iaWFzXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5oYXNDb250ZW50c09mQWxsU291cmNlcyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMuZXZlcnkoZnVuY3Rpb24gKHMpIHtcbiAgICAgIHJldHVybiBzLmNvbnN1bWVyLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCk7XG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuXG4gICAgICB2YXIgY29udGVudCA9IHNlY3Rpb24uY29uc3VtZXIuc291cmNlQ29udGVudEZvcihhU291cmNlLCB0cnVlKTtcbiAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmdlbmVyYXRlZFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcblxuICAgICAgLy8gT25seSBjb25zaWRlciB0aGlzIHNlY3Rpb24gaWYgdGhlIHJlcXVlc3RlZCBzb3VyY2UgaXMgaW4gdGhlIGxpc3Qgb2ZcbiAgICAgIC8vIHNvdXJjZXMgb2YgdGhlIGNvbnN1bWVyLlxuICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlcy5pbmRleE9mKHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJykpID09PSAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBnZW5lcmF0ZWRQb3NpdGlvbiA9IHNlY3Rpb24uY29uc3VtZXIuZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpO1xuICAgICAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uKSB7XG4gICAgICAgIHZhciByZXQgPSB7XG4gICAgICAgICAgbGluZTogZ2VuZXJhdGVkUG9zaXRpb24ubGluZSArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkUG9zaXRpb24uY29sdW1uICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lXG4gICAgICAgICAgICAgPyBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4gLSAxXG4gICAgICAgICAgICAgOiAwKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsXG4gICAgfTtcbiAgfTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcbiAgICAgIHZhciBzZWN0aW9uTWFwcGluZ3MgPSBzZWN0aW9uLmNvbnN1bWVyLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbk1hcHBpbmdzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gc2VjdGlvbk1hcHBpbmdzW2pdO1xuXG4gICAgICAgIHZhciBzb3VyY2UgPSBzZWN0aW9uLmNvbnN1bWVyLl9zb3VyY2VzLmF0KG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHV0aWwuam9pbihzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5pbmRleE9mKHNvdXJjZSk7XG5cbiAgICAgICAgdmFyIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICB0aGlzLl9uYW1lcy5hZGQobmFtZSk7XG4gICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvcXVpY2stc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF07XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW5vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/node_modules/source-map/dist/source-map.js b/node_modules/source-map/dist/source-map.js deleted file mode 100644 index 4e630e294..000000000 --- a/node_modules/source-map/dist/source-map.js +++ /dev/null @@ -1,3090 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["sourceMap"] = factory(); - else - root["sourceMap"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - /* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ - exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; - exports.SourceNode = __webpack_require__(10).SourceNode; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var base64VLQ = __webpack_require__(2); - var util = __webpack_require__(4); - var ArraySet = __webpack_require__(5).ArraySet; - var MappingList = __webpack_require__(6).MappingList; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - var base64 = __webpack_require__(3); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - - /** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ - exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; - }; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); - }; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - - var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); - }()); - - function identity (s) { - return s; - } - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - - function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; - } - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; - } - - /** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - - /** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ - function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - - /** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ - function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; - } - - /** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ - MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - - /** - * Add the given source mapping. - * - * @param Object aMapping - */ - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - - /** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - - exports.MappingList = MappingList; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var binarySearch = __webpack_require__(8); - var ArraySet = __webpack_require__(5).ArraySet; - var base64VLQ = __webpack_require__(2); - var quickSort = __webpack_require__(9).quickSort; - - function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap) - : new BasicSourceMapConsumer(sourceMap); - } - - SourceMapConsumer.fromSourceMap = function(aSourceMap) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - - /** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: Optional. the column number in the original source. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - if (!this._sources.has(needle.source)) { - return []; - } - needle.source = this._sources.indexOf(needle.source); - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - - exports.SourceMapConsumer = SourceMapConsumer; - - /** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function BasicSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; - } - - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - - /** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns BasicSourceMapConsumer - */ - BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - BasicSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); - } - }); - - /** - * Provide the JIT with a nice shape / hidden class. - */ - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - - /** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ - BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - if (this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - if (this.sourceRoot != null) { - source = util.relative(this.sourceRoot, source); - } - if (!this._sources.has(source)) { - return { - line: null, - column: null, - lastColumn: null - }; - } - source = this._sources.indexOf(source); - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - - /** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The only parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ - function IndexedSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map')) - } - }); - } - - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - - /** - * The version of the source mapping spec that we are consuming. - */ - IndexedSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - if (section.consumer.sourceRoot !== null) { - source = util.join(section.consumer.sourceRoot, source); - } - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - - /** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; - }; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - // It turns out that some (most?) JavaScript engines don't self-host - // `Array.prototype.sort`. This makes sense because C++ will likely remain - // faster than JS when doing raw CPU-intensive sorting. However, when using a - // custom comparator function, calling back and forth between the VM's C++ and - // JIT'd JS is rather slow *and* loses JIT type information, resulting in - // worse generated code for the comparator function than would be optimal. In - // fact, when sorting with a comparator, these costs outweigh the benefits of - // sorting in C++. By using our own JS-implemented Quick Sort (below), we get - // a ~3500ms mean speed-up in `bench/bench.html`. - - /** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - - /** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ - function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); - } - - /** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ - function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - - /** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ - exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - var util = __webpack_require__(4); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Newline character code for charCodeAt() comparisons - var NEWLINE_CODE = 10; - - // Private symbol for identifying `SourceNode`s when multiple versions of - // the source-map library are loaded. This MUST NOT CHANGE across - // versions! - var isSourceNode = "$$$isSourceNode$$$"; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - - -/***/ }) -/******/ ]) -}); -; \ No newline at end of file diff --git a/node_modules/source-map/dist/source-map.min.js b/node_modules/source-map/dist/source-map.min.js deleted file mode 100644 index f2a46bd02..000000000 --- a/node_modules/source-map/dist/source-map.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sourceMap=n():e.sourceMap=n()}(this,function(){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){n.SourceMapGenerator=r(1).SourceMapGenerator,n.SourceMapConsumer=r(7).SourceMapConsumer,n.SourceNode=r(10).SourceNode},function(e,n,r){function t(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new s,this._names=new s,this._mappings=new a,this._sourcesContents=null}var o=r(2),i=r(4),s=r(5).ArraySet,a=r(6).MappingList;t.prototype._version=3,t.fromSourceMap=function(e){var n=e.sourceRoot,r=new t({file:e.file,sourceRoot:n});return e.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=n&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),r.addMapping(t)}),e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&r.setSourceContent(n,t)}),r},t.prototype.addMapping=function(e){var n=i.getArg(e,"generated"),r=i.getArg(e,"original",null),t=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,r,t,o),null!=t&&(t=String(t),this._sources.has(t)||this._sources.add(t)),null!=o&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:o})},t.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},t.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var o=this._sourceRoot;null!=o&&(t=i.relative(o,t));var a=new s,u=new s;this._mappings.unsortedForEach(function(n){if(n.source===t&&null!=n.originalLine){var s=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=s.source&&(n.source=s.source,null!=r&&(n.source=i.join(r,n.source)),null!=o&&(n.source=i.relative(o,n.source)),n.originalLine=s.line,n.originalColumn=s.column,null!=s.name&&(n.name=s.name))}var l=n.source;null==l||a.has(l)||a.add(l);var c=n.name;null==c||u.has(c)||u.add(c)},this),this._sources=a,this._names=u,e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=i.join(r,n)),null!=o&&(n=i.relative(o,n)),this.setSourceContent(n,t))},this)},t.prototype._validateMapping=function(e,n,r,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}))},t.prototype._serializeMappings=function(){for(var e,n,r,t,s=0,a=1,u=0,l=0,c=0,g=0,p="",h=this._mappings.toArray(),f=0,d=h.length;f0){if(!i.compareByGeneratedPositionsInflated(n,h[f-1]))continue;e+=","}e+=o.encode(n.generatedColumn-s),s=n.generatedColumn,null!=n.source&&(t=this._sources.indexOf(n.source),e+=o.encode(t-g),g=t,e+=o.encode(n.originalLine-1-l),l=n.originalLine-1,e+=o.encode(n.originalColumn-u),u=n.originalColumn,null!=n.name&&(r=this._names.indexOf(n.name),e+=o.encode(r-c),c=r)),p+=e}return p},t.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=i.relative(n,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},t.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},t.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=t},function(e,n,r){function t(e){return e<0?(-e<<1)+1:(e<<1)+0}function o(e){var n=1===(1&e),r=e>>1;return n?-r:r}var i=r(3),s=5,a=1<>>=s,o>0&&(n|=l),r+=i.encode(n);while(o>0);return r},n.decode=function(e,n,r){var t,a,c=e.length,g=0,p=0;do{if(n>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(a=i.decode(e.charCodeAt(n++)),a===-1)throw new Error("Invalid base64 digit: "+e.charAt(n-1));t=!!(a&l),a&=u,g+=a<=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return r=u.join("/"),""===r&&(r=a?"/":"."),i?(i.path=r,o(i)):r}function s(e,n){""===e&&(e="."),""===n&&(n=".");var r=t(n),s=t(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),o(r);if(r||n.match(_))return n;if(s&&!s.host&&!s.path)return s.host=n,o(s);var a="/"===n.charAt(0)?n:i(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,o(s)):a}function a(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return n;if(e=e.slice(0,t),e.match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)}function u(e){return e}function l(e){return g(e)?"$"+e:e}function c(e){return g(e)?e.slice(1):e}function g(e){if(!e)return!1;var n=e.length;if(n<9)return!1;if(95!==e.charCodeAt(n-1)||95!==e.charCodeAt(n-2)||111!==e.charCodeAt(n-3)||116!==e.charCodeAt(n-4)||111!==e.charCodeAt(n-5)||114!==e.charCodeAt(n-6)||112!==e.charCodeAt(n-7)||95!==e.charCodeAt(n-8)||95!==e.charCodeAt(n-9))return!1;for(var r=n-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function p(e,n,r){var t=e.source-n.source;return 0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t||r?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=e.generatedLine-n.generatedLine,0!==t?t:e.name-n.name))))}function h(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t||r?t:(t=e.source-n.source,0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:e.name-n.name))))}function f(e,n){return e===n?0:e>n?1:-1}function d(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=f(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:f(e.name,n.name)))))}n.getArg=r;var m=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,_=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(m)},n.relative=a;var v=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=v?u:l,n.fromSetString=v?u:c,n.compareByOriginalPositions=p,n.compareByGeneratedPositionsDeflated=h,n.compareByGeneratedPositionsInflated=d},function(e,n,r){function t(){this._array=[],this._set=s?new Map:Object.create(null)}var o=r(4),i=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;t.fromArray=function(e,n){for(var r=new t,o=0,i=e.length;o=0)return n}else{var r=o.toSetString(e);if(i.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},t.prototype.at=function(e){if(e>=0&&er||t==r&&s>=o||i.compareByGeneratedPositionsInflated(e,n)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=r(4);o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){t(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=o},function(e,n,r){function t(e){var n=e;return"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=n.sections?new s(n):new o(n)}function o(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),t=a.getArg(n,"sources"),o=a.getArg(n,"names",[]),i=a.getArg(n,"sourceRoot",null),s=a.getArg(n,"sourcesContent",null),u=a.getArg(n,"mappings"),c=a.getArg(n,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);t=t.map(String).map(a.normalize).map(function(e){return i&&a.isAbsolute(i)&&a.isAbsolute(e)?a.relative(i,e):e}),this._names=l.fromArray(o.map(String),!0),this._sources=l.fromArray(t,!0),this.sourceRoot=i,this.sourcesContent=s,this._mappings=u,this.file=c}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),o=a.getArg(n,"sections");if(r!=this._version)throw new Error("Unsupported version: "+r);this._sources=new l,this._names=new l;var i={line:-1,column:0};this._sections=o.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var n=a.getArg(e,"offset"),r=a.getArg(n,"line"),o=a.getArg(n,"column");if(r=0){var i=this._originalMappings[o];if(void 0===e.column)for(var s=i.originalLine;i&&i.originalLine===s;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o];else for(var l=i.originalColumn;i&&i.originalLine===n&&i.originalColumn==l;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o]}return t},n.SourceMapConsumer=t,o.prototype=Object.create(t.prototype),o.prototype.consumer=t,o.fromSourceMap=function(e){var n=Object.create(o.prototype),r=n._names=l.fromArray(e._names.toArray(),!0),t=n._sources=l.fromArray(e._sources.toArray(),!0);n.sourceRoot=e._sourceRoot,n.sourcesContent=e._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=e._file;for(var s=e._mappings.toArray().slice(),u=n.__generatedMappings=[],c=n.__originalMappings=[],p=0,h=s.length;p1&&(r.source=d+o[1],d+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=f+o[3],f=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),S.push(r),"number"==typeof r.originalLine&&A.push(r)}g(S,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=S,g(A,a.compareByOriginalPositions),this.__originalMappings=A},o.prototype._findMapping=function(e,n,r,t,o,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return u.search(e,n,o,i)},o.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=a.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),null!=this.sourceRoot&&(i=a.join(this.sourceRoot,i)));var s=a.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:a.getArg(o,"originalLine",null),column:a.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},o.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},o.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var r;if(null!=this.sourceRoot&&(r=a.urlParse(this.sourceRoot))){var t=e.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(t))return this.sourcesContent[this._sources.indexOf(t)];if((!r.path||"/"==r.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(n)return null;throw new Error('"'+e+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),!this._sources.has(n))return{line:null,column:null,lastColumn:null};n=this._sources.indexOf(n);var r={source:n,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=o,s.prototype=Object.create(t.prototype),s.prototype.constructor=t,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],n=0;n0?t-u>1?r(u,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,o,i,s,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},function(e,n){function r(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}function t(e,n){return Math.round(e+Math.random()*(n-e))}function o(e,n,i,s){if(i=0;n--)this.prepend(e[n]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},t.prototype.walk=function(e){for(var n,r=0,t=this.children.length;r0){for(n=[],r=0;r 0 && aGenerated.column >= 0\n\t && !aOriginal && !aSource && !aName) {\n\t // Case 1.\n\t return;\n\t }\n\t else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && aOriginal.line > 0 && aOriginal.column >= 0\n\t && aSource) {\n\t // Cases 2 and 3.\n\t return;\n\t }\n\t else {\n\t throw new Error('Invalid mapping: ' + JSON.stringify({\n\t generated: aGenerated,\n\t source: aSource,\n\t original: aOriginal,\n\t name: aName\n\t }));\n\t }\n\t };\n\t\n\t/**\n\t * Serialize the accumulated mappings in to the stream of base 64 VLQs\n\t * specified by the source map format.\n\t */\n\tSourceMapGenerator.prototype._serializeMappings =\n\t function SourceMapGenerator_serializeMappings() {\n\t var previousGeneratedColumn = 0;\n\t var previousGeneratedLine = 1;\n\t var previousOriginalColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousName = 0;\n\t var previousSource = 0;\n\t var result = '';\n\t var next;\n\t var mapping;\n\t var nameIdx;\n\t var sourceIdx;\n\t\n\t var mappings = this._mappings.toArray();\n\t for (var i = 0, len = mappings.length; i < len; i++) {\n\t mapping = mappings[i];\n\t next = ''\n\t\n\t if (mapping.generatedLine !== previousGeneratedLine) {\n\t previousGeneratedColumn = 0;\n\t while (mapping.generatedLine !== previousGeneratedLine) {\n\t next += ';';\n\t previousGeneratedLine++;\n\t }\n\t }\n\t else {\n\t if (i > 0) {\n\t if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n\t continue;\n\t }\n\t next += ',';\n\t }\n\t }\n\t\n\t next += base64VLQ.encode(mapping.generatedColumn\n\t - previousGeneratedColumn);\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (mapping.source != null) {\n\t sourceIdx = this._sources.indexOf(mapping.source);\n\t next += base64VLQ.encode(sourceIdx - previousSource);\n\t previousSource = sourceIdx;\n\t\n\t // lines are stored 0-based in SourceMap spec version 3\n\t next += base64VLQ.encode(mapping.originalLine - 1\n\t - previousOriginalLine);\n\t previousOriginalLine = mapping.originalLine - 1;\n\t\n\t next += base64VLQ.encode(mapping.originalColumn\n\t - previousOriginalColumn);\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (mapping.name != null) {\n\t nameIdx = this._names.indexOf(mapping.name);\n\t next += base64VLQ.encode(nameIdx - previousName);\n\t previousName = nameIdx;\n\t }\n\t }\n\t\n\t result += next;\n\t }\n\t\n\t return result;\n\t };\n\t\n\tSourceMapGenerator.prototype._generateSourcesContent =\n\t function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n\t return aSources.map(function (source) {\n\t if (!this._sourcesContents) {\n\t return null;\n\t }\n\t if (aSourceRoot != null) {\n\t source = util.relative(aSourceRoot, source);\n\t }\n\t var key = util.toSetString(source);\n\t return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n\t ? this._sourcesContents[key]\n\t : null;\n\t }, this);\n\t };\n\t\n\t/**\n\t * Externalize the source map.\n\t */\n\tSourceMapGenerator.prototype.toJSON =\n\t function SourceMapGenerator_toJSON() {\n\t var map = {\n\t version: this._version,\n\t sources: this._sources.toArray(),\n\t names: this._names.toArray(),\n\t mappings: this._serializeMappings()\n\t };\n\t if (this._file != null) {\n\t map.file = this._file;\n\t }\n\t if (this._sourceRoot != null) {\n\t map.sourceRoot = this._sourceRoot;\n\t }\n\t if (this._sourcesContents) {\n\t map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n\t }\n\t\n\t return map;\n\t };\n\t\n\t/**\n\t * Render the source map being generated to a string.\n\t */\n\tSourceMapGenerator.prototype.toString =\n\t function SourceMapGenerator_toString() {\n\t return JSON.stringify(this.toJSON());\n\t };\n\t\n\texports.SourceMapGenerator = SourceMapGenerator;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\t\n\tvar base64 = __webpack_require__(3);\n\t\n\t// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t// length quantities we use in the source map spec, the first bit is the sign,\n\t// the next four bits are the actual value, and the 6th bit is the\n\t// continuation bit. The continuation bit tells us whether there are more\n\t// digits in this value following this digit.\n\t//\n\t// Continuation\n\t// | Sign\n\t// | |\n\t// V V\n\t// 101011\n\t\n\tvar VLQ_BASE_SHIFT = 5;\n\t\n\t// binary: 100000\n\tvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\t\n\t// binary: 011111\n\tvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\t\n\t// binary: 100000\n\tvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\t\n\t/**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\tfunction toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t}\n\t\n\t/**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\tfunction fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t}\n\t\n\t/**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\texports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\t\n\t var vlq = toVLQSigned(aValue);\n\t\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\t\n\t return encoded;\n\t};\n\t\n\t/**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\texports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\t\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\t\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\t\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\t\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\t\n\t/**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\texports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t};\n\t\n\t/**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\texports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\t\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\t\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\t\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\t\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\t\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\t\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\t\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\t\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\t\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\t\n\t // Invalid base64 digit.\n\t return -1;\n\t};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t/**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\tfunction getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t}\n\texports.getArg = getArg;\n\t\n\tvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\n\tvar dataUrlRegexp = /^data:.+\\,.+$/;\n\t\n\tfunction urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t}\n\texports.urlParse = urlParse;\n\t\n\tfunction urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t}\n\texports.urlGenerate = urlGenerate;\n\t\n\t/**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consecutive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\tfunction normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\t\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\t\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\t\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t}\n\texports.normalize = normalize;\n\t\n\t/**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\tfunction join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\t\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\t\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\t\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\t\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\t\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t}\n\texports.join = join;\n\t\n\texports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n\t};\n\t\n\t/**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\tfunction relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t\n\t aRoot = aRoot.replace(/\\/$/, '');\n\t\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\t\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\t\n\t ++level;\n\t }\n\t\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t}\n\texports.relative = relative;\n\t\n\tvar supportsNullProto = (function () {\n\t var obj = Object.create(null);\n\t return !('__proto__' in obj);\n\t}());\n\t\n\tfunction identity (s) {\n\t return s;\n\t}\n\t\n\t/**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\tfunction toSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return '$' + aStr;\n\t }\n\t\n\t return aStr;\n\t}\n\texports.toSetString = supportsNullProto ? identity : toSetString;\n\t\n\tfunction fromSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return aStr.slice(1);\n\t }\n\t\n\t return aStr;\n\t}\n\texports.fromSetString = supportsNullProto ? identity : fromSetString;\n\t\n\tfunction isProtoString(s) {\n\t if (!s) {\n\t return false;\n\t }\n\t\n\t var length = s.length;\n\t\n\t if (length < 9 /* \"__proto__\".length */) {\n\t return false;\n\t }\n\t\n\t if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n\t s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n\t s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n\t s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 9) !== 95 /* '_' */) {\n\t return false;\n\t }\n\t\n\t for (var i = length - 10; i >= 0; i--) {\n\t if (s.charCodeAt(i) !== 36 /* '$' */) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\tfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t}\n\texports.compareByOriginalPositions = compareByOriginalPositions;\n\t\n\t/**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\tfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t}\n\texports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\t\n\tfunction strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\t\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\t\n\t return -1;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\tfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar hasNativeMap = typeof Map !== \"undefined\";\n\t\n\t/**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\tfunction ArraySet() {\n\t this._array = [];\n\t this._set = hasNativeMap ? new Map() : Object.create(null);\n\t}\n\t\n\t/**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\tArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t};\n\t\n\t/**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\tArraySet.prototype.size = function ArraySet_size() {\n\t return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n\t};\n\t\n\t/**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n\t var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t if (hasNativeMap) {\n\t this._set.set(aStr, idx);\n\t } else {\n\t this._set[sStr] = idx;\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.has = function ArraySet_has(aStr) {\n\t if (hasNativeMap) {\n\t return this._set.has(aStr);\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t return has.call(this._set, sStr);\n\t }\n\t};\n\t\n\t/**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t if (hasNativeMap) {\n\t var idx = this._set.get(aStr);\n\t if (idx >= 0) {\n\t return idx;\n\t }\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t if (has.call(this._set, sStr)) {\n\t return this._set[sStr];\n\t }\n\t }\n\t\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t};\n\t\n\t/**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\tArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t};\n\t\n\t/**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\tArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t};\n\t\n\texports.ArraySet = ArraySet;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2014 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\t\n\t/**\n\t * Determine whether mappingB is after mappingA with respect to generated\n\t * position.\n\t */\n\tfunction generatedPositionAfter(mappingA, mappingB) {\n\t // Optimized for most common case\n\t var lineA = mappingA.generatedLine;\n\t var lineB = mappingB.generatedLine;\n\t var columnA = mappingA.generatedColumn;\n\t var columnB = mappingB.generatedColumn;\n\t return lineB > lineA || lineB == lineA && columnB >= columnA ||\n\t util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n\t}\n\t\n\t/**\n\t * A data structure to provide a sorted view of accumulated mappings in a\n\t * performance conscious manner. It trades a neglibable overhead in general\n\t * case for a large speedup in case of mappings being added in order.\n\t */\n\tfunction MappingList() {\n\t this._array = [];\n\t this._sorted = true;\n\t // Serves as infimum\n\t this._last = {generatedLine: -1, generatedColumn: 0};\n\t}\n\t\n\t/**\n\t * Iterate through internal items. This method takes the same arguments that\n\t * `Array.prototype.forEach` takes.\n\t *\n\t * NOTE: The order of the mappings is NOT guaranteed.\n\t */\n\tMappingList.prototype.unsortedForEach =\n\t function MappingList_forEach(aCallback, aThisArg) {\n\t this._array.forEach(aCallback, aThisArg);\n\t };\n\t\n\t/**\n\t * Add the given source mapping.\n\t *\n\t * @param Object aMapping\n\t */\n\tMappingList.prototype.add = function MappingList_add(aMapping) {\n\t if (generatedPositionAfter(this._last, aMapping)) {\n\t this._last = aMapping;\n\t this._array.push(aMapping);\n\t } else {\n\t this._sorted = false;\n\t this._array.push(aMapping);\n\t }\n\t};\n\t\n\t/**\n\t * Returns the flat, sorted array of mappings. The mappings are sorted by\n\t * generated position.\n\t *\n\t * WARNING: This method returns internal data without copying, for\n\t * performance. The return value must NOT be mutated, and should be treated as\n\t * an immutable borrow. If you want to take ownership, you must make your own\n\t * copy.\n\t */\n\tMappingList.prototype.toArray = function MappingList_toArray() {\n\t if (!this._sorted) {\n\t this._array.sort(util.compareByGeneratedPositionsInflated);\n\t this._sorted = true;\n\t }\n\t return this._array;\n\t};\n\t\n\texports.MappingList = MappingList;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar binarySearch = __webpack_require__(8);\n\tvar ArraySet = __webpack_require__(5).ArraySet;\n\tvar base64VLQ = __webpack_require__(2);\n\tvar quickSort = __webpack_require__(9).quickSort;\n\t\n\tfunction SourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t return sourceMap.sections != null\n\t ? new IndexedSourceMapConsumer(sourceMap)\n\t : new BasicSourceMapConsumer(sourceMap);\n\t}\n\t\n\tSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n\t return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n\t}\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tSourceMapConsumer.prototype._version = 3;\n\t\n\t// `__generatedMappings` and `__originalMappings` are arrays that hold the\n\t// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n\t// are lazily instantiated, accessed via the `_generatedMappings` and\n\t// `_originalMappings` getters respectively, and we only parse the mappings\n\t// and create these arrays once queried for a source location. We jump through\n\t// these hoops because there can be many thousands of mappings, and parsing\n\t// them is expensive, so we only want to do it if we must.\n\t//\n\t// Each object in the arrays is of the form:\n\t//\n\t// {\n\t// generatedLine: The line number in the generated code,\n\t// generatedColumn: The column number in the generated code,\n\t// source: The path to the original source file that generated this\n\t// chunk of code,\n\t// originalLine: The line number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// originalColumn: The column number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// name: The name of the original symbol which generated this chunk of\n\t// code.\n\t// }\n\t//\n\t// All properties except for `generatedLine` and `generatedColumn` can be\n\t// `null`.\n\t//\n\t// `_generatedMappings` is ordered by the generated positions.\n\t//\n\t// `_originalMappings` is ordered by the original positions.\n\t\n\tSourceMapConsumer.prototype.__generatedMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n\t get: function () {\n\t if (!this.__generatedMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__generatedMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype.__originalMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n\t get: function () {\n\t if (!this.__originalMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__originalMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype._charIsMappingSeparator =\n\t function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n\t var c = aStr.charAt(index);\n\t return c === \";\" || c === \",\";\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t throw new Error(\"Subclasses must implement _parseMappings\");\n\t };\n\t\n\tSourceMapConsumer.GENERATED_ORDER = 1;\n\tSourceMapConsumer.ORIGINAL_ORDER = 2;\n\t\n\tSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n\tSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Iterate over each mapping between an original source/line/column and a\n\t * generated line/column in this source map.\n\t *\n\t * @param Function aCallback\n\t * The function that is called with each mapping.\n\t * @param Object aContext\n\t * Optional. If specified, this object will be the value of `this` every\n\t * time that `aCallback` is called.\n\t * @param aOrder\n\t * Either `SourceMapConsumer.GENERATED_ORDER` or\n\t * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n\t * iterate over the mappings sorted by the generated file's line/column\n\t * order or the original's source/line/column order, respectively. Defaults to\n\t * `SourceMapConsumer.GENERATED_ORDER`.\n\t */\n\tSourceMapConsumer.prototype.eachMapping =\n\t function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n\t var context = aContext || null;\n\t var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\t\n\t var mappings;\n\t switch (order) {\n\t case SourceMapConsumer.GENERATED_ORDER:\n\t mappings = this._generatedMappings;\n\t break;\n\t case SourceMapConsumer.ORIGINAL_ORDER:\n\t mappings = this._originalMappings;\n\t break;\n\t default:\n\t throw new Error(\"Unknown order of iteration.\");\n\t }\n\t\n\t var sourceRoot = this.sourceRoot;\n\t mappings.map(function (mapping) {\n\t var source = mapping.source === null ? null : this._sources.at(mapping.source);\n\t if (source != null && sourceRoot != null) {\n\t source = util.join(sourceRoot, source);\n\t }\n\t return {\n\t source: source,\n\t generatedLine: mapping.generatedLine,\n\t generatedColumn: mapping.generatedColumn,\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: mapping.name === null ? null : this._names.at(mapping.name)\n\t };\n\t }, this).forEach(aCallback, context);\n\t };\n\t\n\t/**\n\t * Returns all generated line and column information for the original source,\n\t * line, and column provided. If no column is provided, returns all mappings\n\t * corresponding to a either the line we are searching for or the next\n\t * closest line that has any mappings. Otherwise, returns all mappings\n\t * corresponding to the given line and either the column we are searching for\n\t * or the next closest column that has any offsets.\n\t *\n\t * The only argument is an object with the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: Optional. the column number in the original source.\n\t *\n\t * and an array of objects is returned, each with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tSourceMapConsumer.prototype.allGeneratedPositionsFor =\n\t function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n\t var line = util.getArg(aArgs, 'line');\n\t\n\t // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n\t // returns the index of the closest mapping less than the needle. By\n\t // setting needle.originalColumn to 0, we thus find the last mapping for\n\t // the given line, provided such a mapping exists.\n\t var needle = {\n\t source: util.getArg(aArgs, 'source'),\n\t originalLine: line,\n\t originalColumn: util.getArg(aArgs, 'column', 0)\n\t };\n\t\n\t if (this.sourceRoot != null) {\n\t needle.source = util.relative(this.sourceRoot, needle.source);\n\t }\n\t if (!this._sources.has(needle.source)) {\n\t return [];\n\t }\n\t needle.source = this._sources.indexOf(needle.source);\n\t\n\t var mappings = [];\n\t\n\t var index = this._findMapping(needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t binarySearch.LEAST_UPPER_BOUND);\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\t\n\t return mappings;\n\t };\n\t\n\texports.SourceMapConsumer = SourceMapConsumer;\n\t\n\t/**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The only parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\tfunction BasicSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\t\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t sources = sources\n\t .map(String)\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\t\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names.map(String), true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\t\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this.file = file;\n\t}\n\t\n\tBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\t\n\t/**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @returns BasicSourceMapConsumer\n\t */\n\tBasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\t\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\t\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\t\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\t\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\t\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\t\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\t\n\t destOriginalMappings.push(destMapping);\n\t }\n\t\n\t destGeneratedMappings.push(destMapping);\n\t }\n\t\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\t\n\t return smc;\n\t };\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tBasicSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._sources.toArray().map(function (s) {\n\t return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n\t }, this);\n\t }\n\t});\n\t\n\t/**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\tfunction Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t}\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tBasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\t\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\t\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\t\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\t\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\t\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\t\n\t cachedSegments[str] = segment;\n\t }\n\t\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\t\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\t\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\t\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\t\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\t\n\t/**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\tBasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\t\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\t\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\t\n\t/**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\tBasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\t\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\t\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t if (this.sourceRoot != null) {\n\t source = util.join(this.sourceRoot, source);\n\t }\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\t\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tBasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\t\n\t if (this.sourceRoot != null) {\n\t aSource = util.relative(this.sourceRoot, aSource);\n\t }\n\t\n\t if (this._sources.has(aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(aSource)];\n\t }\n\t\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\t\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n\t }\n\t }\n\t\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t if (this.sourceRoot != null) {\n\t source = util.relative(this.sourceRoot, source);\n\t }\n\t if (!this._sources.has(source)) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t source = this._sources.indexOf(source);\n\t\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\t\n\texports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\t\n\t/**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The only parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\tfunction IndexedSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\t\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\t\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\t\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n\t }\n\t });\n\t}\n\t\n\tIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tIndexedSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t});\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\t\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\t\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\t\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tIndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tIndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\t\n\t var source = section.consumer._sources.at(mapping.source);\n\t if (section.consumer.sourceRoot !== null) {\n\t source = util.join(section.consumer.sourceRoot, source);\n\t }\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\t\n\t var name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\t\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\t\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\t\n\texports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\texports.GREATEST_LOWER_BOUND = 1;\n\texports.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\tfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\texports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\t\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\t\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\t\n\t return index;\n\t};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t// It turns out that some (most?) JavaScript engines don't self-host\n\t// `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t// faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t// custom comparator function, calling back and forth between the VM's C++ and\n\t// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t// worse generated code for the comparator function than would be optimal. In\n\t// fact, when sorting with a comparator, these costs outweigh the benefits of\n\t// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t// a ~3500ms mean speed-up in `bench/bench.html`.\n\t\n\t/**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\tfunction swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t}\n\t\n\t/**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\tfunction randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t}\n\t\n\t/**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\tfunction doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\t\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\t\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\t\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\t\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\t\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\t\n\t // (2) Recurse on each half.\n\t\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t}\n\t\n\t/**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\texports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\tvar util = __webpack_require__(4);\n\t\n\t// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n\t// operating systems these days (capturing the result).\n\tvar REGEX_NEWLINE = /(\\r?\\n)/;\n\t\n\t// Newline character code for charCodeAt() comparisons\n\tvar NEWLINE_CODE = 10;\n\t\n\t// Private symbol for identifying `SourceNode`s when multiple versions of\n\t// the source-map library are loaded. This MUST NOT CHANGE across\n\t// versions!\n\tvar isSourceNode = \"$$$isSourceNode$$$\";\n\t\n\t/**\n\t * SourceNodes provide a way to abstract over interpolating/concatenating\n\t * snippets of generated JavaScript source code while maintaining the line and\n\t * column information associated with the original source code.\n\t *\n\t * @param aLine The original line number.\n\t * @param aColumn The original column number.\n\t * @param aSource The original source's filename.\n\t * @param aChunks Optional. An array of strings which are snippets of\n\t * generated JS, or other SourceNodes.\n\t * @param aName The original identifier.\n\t */\n\tfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n\t this.children = [];\n\t this.sourceContents = {};\n\t this.line = aLine == null ? null : aLine;\n\t this.column = aColumn == null ? null : aColumn;\n\t this.source = aSource == null ? null : aSource;\n\t this.name = aName == null ? null : aName;\n\t this[isSourceNode] = true;\n\t if (aChunks != null) this.add(aChunks);\n\t}\n\t\n\t/**\n\t * Creates a SourceNode from generated code and a SourceMapConsumer.\n\t *\n\t * @param aGeneratedCode The generated code\n\t * @param aSourceMapConsumer The SourceMap for the generated code\n\t * @param aRelativePath Optional. The path that relative sources in the\n\t * SourceMapConsumer should be relative to.\n\t */\n\tSourceNode.fromStringWithSourceMap =\n\t function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n\t // The SourceNode we want to fill with the generated code\n\t // and the SourceMap\n\t var node = new SourceNode();\n\t\n\t // All even indices of this array are one line of the generated code,\n\t // while all odd indices are the newlines between two adjacent lines\n\t // (since `REGEX_NEWLINE` captures its match).\n\t // Processed fragments are accessed by calling `shiftNextLine`.\n\t var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n\t var remainingLinesIndex = 0;\n\t var shiftNextLine = function() {\n\t var lineContents = getNextLine();\n\t // The last line of a file might not have a newline.\n\t var newLine = getNextLine() || \"\";\n\t return lineContents + newLine;\n\t\n\t function getNextLine() {\n\t return remainingLinesIndex < remainingLines.length ?\n\t remainingLines[remainingLinesIndex++] : undefined;\n\t }\n\t };\n\t\n\t // We need to remember the position of \"remainingLines\"\n\t var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\t\n\t // The generate SourceNodes we need a code range.\n\t // To extract it current and last mapping is used.\n\t // Here we store the last mapping.\n\t var lastMapping = null;\n\t\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t if (lastMapping !== null) {\n\t // We add the code from \"lastMapping\" to \"mapping\":\n\t // First check if there is a new line in between.\n\t if (lastGeneratedLine < mapping.generatedLine) {\n\t // Associate first line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t lastGeneratedLine++;\n\t lastGeneratedColumn = 0;\n\t // The remaining code is added without mapping\n\t } else {\n\t // There is no new line in between.\n\t // Associate the code between \"lastGeneratedColumn\" and\n\t // \"mapping.generatedColumn\" with \"lastMapping\"\n\t var nextLine = remainingLines[remainingLinesIndex];\n\t var code = nextLine.substr(0, mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t addMappingWithCode(lastMapping, code);\n\t // No more remaining code, continue\n\t lastMapping = mapping;\n\t return;\n\t }\n\t }\n\t // We add the generated code until the first mapping\n\t // to the SourceNode without any mapping.\n\t // Each line is added as separate string.\n\t while (lastGeneratedLine < mapping.generatedLine) {\n\t node.add(shiftNextLine());\n\t lastGeneratedLine++;\n\t }\n\t if (lastGeneratedColumn < mapping.generatedColumn) {\n\t var nextLine = remainingLines[remainingLinesIndex];\n\t node.add(nextLine.substr(0, mapping.generatedColumn));\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t }\n\t lastMapping = mapping;\n\t }, this);\n\t // We have processed all mappings.\n\t if (remainingLinesIndex < remainingLines.length) {\n\t if (lastMapping) {\n\t // Associate the remaining code in the current line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t }\n\t // and add the remaining lines without any mapping\n\t node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n\t }\n\t\n\t // Copy sourcesContent into SourceNode\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aRelativePath != null) {\n\t sourceFile = util.join(aRelativePath, sourceFile);\n\t }\n\t node.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t\n\t return node;\n\t\n\t function addMappingWithCode(mapping, code) {\n\t if (mapping === null || mapping.source === undefined) {\n\t node.add(code);\n\t } else {\n\t var source = aRelativePath\n\t ? util.join(aRelativePath, mapping.source)\n\t : mapping.source;\n\t node.add(new SourceNode(mapping.originalLine,\n\t mapping.originalColumn,\n\t source,\n\t code,\n\t mapping.name));\n\t }\n\t }\n\t };\n\t\n\t/**\n\t * Add a chunk of generated JS to this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.add = function SourceNode_add(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t aChunk.forEach(function (chunk) {\n\t this.add(chunk);\n\t }, this);\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t if (aChunk) {\n\t this.children.push(aChunk);\n\t }\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Add a chunk of generated JS to the beginning of this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t for (var i = aChunk.length-1; i >= 0; i--) {\n\t this.prepend(aChunk[i]);\n\t }\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t this.children.unshift(aChunk);\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Walk over the tree of JS snippets in this node and its children. The\n\t * walking function is called once for each snippet of JS and is passed that\n\t * snippet and the its original associated source's line/column location.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n\t var chunk;\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t chunk = this.children[i];\n\t if (chunk[isSourceNode]) {\n\t chunk.walk(aFn);\n\t }\n\t else {\n\t if (chunk !== '') {\n\t aFn(chunk, { source: this.source,\n\t line: this.line,\n\t column: this.column,\n\t name: this.name });\n\t }\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n\t * each of `this.children`.\n\t *\n\t * @param aSep The separator.\n\t */\n\tSourceNode.prototype.join = function SourceNode_join(aSep) {\n\t var newChildren;\n\t var i;\n\t var len = this.children.length;\n\t if (len > 0) {\n\t newChildren = [];\n\t for (i = 0; i < len-1; i++) {\n\t newChildren.push(this.children[i]);\n\t newChildren.push(aSep);\n\t }\n\t newChildren.push(this.children[i]);\n\t this.children = newChildren;\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Call String.prototype.replace on the very right-most source snippet. Useful\n\t * for trimming whitespace from the end of a source node, etc.\n\t *\n\t * @param aPattern The pattern to replace.\n\t * @param aReplacement The thing to replace the pattern with.\n\t */\n\tSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n\t var lastChild = this.children[this.children.length - 1];\n\t if (lastChild[isSourceNode]) {\n\t lastChild.replaceRight(aPattern, aReplacement);\n\t }\n\t else if (typeof lastChild === 'string') {\n\t this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n\t }\n\t else {\n\t this.children.push(''.replace(aPattern, aReplacement));\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Set the source content for a source file. This will be added to the SourceMapGenerator\n\t * in the sourcesContent field.\n\t *\n\t * @param aSourceFile The filename of the source file\n\t * @param aSourceContent The content of the source file\n\t */\n\tSourceNode.prototype.setSourceContent =\n\t function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n\t this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n\t };\n\t\n\t/**\n\t * Walk over the tree of SourceNodes. The walking function is called for each\n\t * source file content and is passed the filename and source content.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walkSourceContents =\n\t function SourceNode_walkSourceContents(aFn) {\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t if (this.children[i][isSourceNode]) {\n\t this.children[i].walkSourceContents(aFn);\n\t }\n\t }\n\t\n\t var sources = Object.keys(this.sourceContents);\n\t for (var i = 0, len = sources.length; i < len; i++) {\n\t aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n\t }\n\t };\n\t\n\t/**\n\t * Return the string representation of this source node. Walks over the tree\n\t * and concatenates all the various snippets together to one string.\n\t */\n\tSourceNode.prototype.toString = function SourceNode_toString() {\n\t var str = \"\";\n\t this.walk(function (chunk) {\n\t str += chunk;\n\t });\n\t return str;\n\t};\n\t\n\t/**\n\t * Returns the string representation of this source node along with a source\n\t * map.\n\t */\n\tSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n\t var generated = {\n\t code: \"\",\n\t line: 1,\n\t column: 0\n\t };\n\t var map = new SourceMapGenerator(aArgs);\n\t var sourceMappingActive = false;\n\t var lastOriginalSource = null;\n\t var lastOriginalLine = null;\n\t var lastOriginalColumn = null;\n\t var lastOriginalName = null;\n\t this.walk(function (chunk, original) {\n\t generated.code += chunk;\n\t if (original.source !== null\n\t && original.line !== null\n\t && original.column !== null) {\n\t if(lastOriginalSource !== original.source\n\t || lastOriginalLine !== original.line\n\t || lastOriginalColumn !== original.column\n\t || lastOriginalName !== original.name) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t lastOriginalSource = original.source;\n\t lastOriginalLine = original.line;\n\t lastOriginalColumn = original.column;\n\t lastOriginalName = original.name;\n\t sourceMappingActive = true;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t }\n\t });\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t }\n\t for (var idx = 0, length = chunk.length; idx < length; idx++) {\n\t if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n\t generated.line++;\n\t generated.column = 0;\n\t // Mappings end at eol\n\t if (idx + 1 === length) {\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t } else {\n\t generated.column++;\n\t }\n\t }\n\t });\n\t this.walkSourceContents(function (sourceFile, sourceContent) {\n\t map.setSourceContent(sourceFile, sourceContent);\n\t });\n\t\n\t return { code: generated.code, map: map };\n\t};\n\t\n\texports.SourceNode = SourceNode;\n\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// source-map.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 42c329f865e32e011afb","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./source-map.js\n// module id = 0\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-generator.js\n// module id = 1\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64-vlq.js\n// module id = 2\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64.js\n// module id = 3\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/util.js\n// module id = 4\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/array-set.js\n// module id = 5\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/mapping-list.js\n// module id = 6\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-consumer.js\n// module id = 7\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/binary-search.js\n// module id = 8\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/quick-sort.js\n// module id = 9\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-node.js\n// module id = 10\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/node_modules/source-map/lib/array-set.js b/node_modules/source-map/lib/array-set.js deleted file mode 100644 index fbd5c81ca..000000000 --- a/node_modules/source-map/lib/array-set.js +++ /dev/null @@ -1,121 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); -var has = Object.prototype.hasOwnProperty; -var hasNativeMap = typeof Map !== "undefined"; - -/** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ -function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); -} - -/** - * Static method for creating ArraySet instances from an existing array. - */ -ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; -}; - -/** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ -ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; -}; - -/** - * Add the given string to this set. - * - * @param String aStr - */ -ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } -}; - -/** - * Is the given string a member of this set? - * - * @param String aStr - */ -ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } -}; - -/** - * What is the index of the given string in the array? - * - * @param String aStr - */ -ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); -}; - -/** - * What is the element at the given index? - * - * @param Number aIdx - */ -ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); -}; - -/** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ -ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); -}; - -exports.ArraySet = ArraySet; diff --git a/node_modules/source-map/lib/base64-vlq.js b/node_modules/source-map/lib/base64-vlq.js deleted file mode 100644 index 612b40401..000000000 --- a/node_modules/source-map/lib/base64-vlq.js +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -var base64 = require('./base64'); - -// A single base 64 digit can contain 6 bits of data. For the base 64 variable -// length quantities we use in the source map spec, the first bit is the sign, -// the next four bits are the actual value, and the 6th bit is the -// continuation bit. The continuation bit tells us whether there are more -// digits in this value following this digit. -// -// Continuation -// | Sign -// | | -// V V -// 101011 - -var VLQ_BASE_SHIFT = 5; - -// binary: 100000 -var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - -// binary: 011111 -var VLQ_BASE_MASK = VLQ_BASE - 1; - -// binary: 100000 -var VLQ_CONTINUATION_BIT = VLQ_BASE; - -/** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ -function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; -} - -/** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ -function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; -} - -/** - * Returns the base 64 VLQ encoded value. - */ -exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; -}; - -/** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ -exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; -}; diff --git a/node_modules/source-map/lib/base64.js b/node_modules/source-map/lib/base64.js deleted file mode 100644 index 8aa86b302..000000000 --- a/node_modules/source-map/lib/base64.js +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - -/** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ -exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); -}; - -/** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ -exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; -}; diff --git a/node_modules/source-map/lib/binary-search.js b/node_modules/source-map/lib/binary-search.js deleted file mode 100644 index 010ac941e..000000000 --- a/node_modules/source-map/lib/binary-search.js +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -exports.GREATEST_LOWER_BOUND = 1; -exports.LEAST_UPPER_BOUND = 2; - -/** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ -function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } -} - -/** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ -exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; -}; diff --git a/node_modules/source-map/lib/mapping-list.js b/node_modules/source-map/lib/mapping-list.js deleted file mode 100644 index 06d1274a0..000000000 --- a/node_modules/source-map/lib/mapping-list.js +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); - -/** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ -function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; -} - -/** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ -function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; -} - -/** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ -MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - -/** - * Add the given source mapping. - * - * @param Object aMapping - */ -MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } -}; - -/** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ -MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; -}; - -exports.MappingList = MappingList; diff --git a/node_modules/source-map/lib/quick-sort.js b/node_modules/source-map/lib/quick-sort.js deleted file mode 100644 index 6a7caadbb..000000000 --- a/node_modules/source-map/lib/quick-sort.js +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -// It turns out that some (most?) JavaScript engines don't self-host -// `Array.prototype.sort`. This makes sense because C++ will likely remain -// faster than JS when doing raw CPU-intensive sorting. However, when using a -// custom comparator function, calling back and forth between the VM's C++ and -// JIT'd JS is rather slow *and* loses JIT type information, resulting in -// worse generated code for the comparator function than would be optimal. In -// fact, when sorting with a comparator, these costs outweigh the benefits of -// sorting in C++. By using our own JS-implemented Quick Sort (below), we get -// a ~3500ms mean speed-up in `bench/bench.html`. - -/** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ -function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; -} - -/** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ -function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); -} - -/** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ -function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } -} - -/** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ -exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); -}; diff --git a/node_modules/source-map/lib/source-map-consumer.js b/node_modules/source-map/lib/source-map-consumer.js deleted file mode 100644 index 6abcc280e..000000000 --- a/node_modules/source-map/lib/source-map-consumer.js +++ /dev/null @@ -1,1082 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); -var binarySearch = require('./binary-search'); -var ArraySet = require('./array-set').ArraySet; -var base64VLQ = require('./base64-vlq'); -var quickSort = require('./quick-sort').quickSort; - -function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap) - : new BasicSourceMapConsumer(sourceMap); -} - -SourceMapConsumer.fromSourceMap = function(aSourceMap) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap); -} - -/** - * The version of the source mapping spec that we are consuming. - */ -SourceMapConsumer.prototype._version = 3; - -// `__generatedMappings` and `__originalMappings` are arrays that hold the -// parsed mapping coordinates from the source map's "mappings" attribute. They -// are lazily instantiated, accessed via the `_generatedMappings` and -// `_originalMappings` getters respectively, and we only parse the mappings -// and create these arrays once queried for a source location. We jump through -// these hoops because there can be many thousands of mappings, and parsing -// them is expensive, so we only want to do it if we must. -// -// Each object in the arrays is of the form: -// -// { -// generatedLine: The line number in the generated code, -// generatedColumn: The column number in the generated code, -// source: The path to the original source file that generated this -// chunk of code, -// originalLine: The line number in the original source that -// corresponds to this chunk of generated code, -// originalColumn: The column number in the original source that -// corresponds to this chunk of generated code, -// name: The name of the original symbol which generated this chunk of -// code. -// } -// -// All properties except for `generatedLine` and `generatedColumn` can be -// `null`. -// -// `_generatedMappings` is ordered by the generated positions. -// -// `_originalMappings` is ordered by the original positions. - -SourceMapConsumer.prototype.__generatedMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } -}); - -SourceMapConsumer.prototype.__originalMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } -}); - -SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - -SourceMapConsumer.GENERATED_ORDER = 1; -SourceMapConsumer.ORIGINAL_ORDER = 2; - -SourceMapConsumer.GREATEST_LOWER_BOUND = 1; -SourceMapConsumer.LEAST_UPPER_BOUND = 2; - -/** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ -SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - -/** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: Optional. the column number in the original source. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - if (!this._sources.has(needle.source)) { - return []; - } - needle.source = this._sources.indexOf(needle.source); - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - -exports.SourceMapConsumer = SourceMapConsumer; - -/** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ -function BasicSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; -} - -BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - -/** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns BasicSourceMapConsumer - */ -BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - -/** - * The version of the source mapping spec that we are consuming. - */ -BasicSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); - } -}); - -/** - * Provide the JIT with a nice shape / hidden class. - */ -function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; -} - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - -/** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ -BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - -/** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ -BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ -BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - if (this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - if (this.sourceRoot != null) { - source = util.relative(this.sourceRoot, source); - } - if (!this._sources.has(source)) { - return { - line: null, - column: null, - lastColumn: null - }; - } - source = this._sources.indexOf(source); - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - -exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - -/** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The only parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ -function IndexedSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map')) - } - }); -} - -IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - -/** - * The version of the source mapping spec that we are consuming. - */ -IndexedSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } -}); - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ -IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - if (section.consumer.sourceRoot !== null) { - source = util.join(section.consumer.sourceRoot, source); - } - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - -exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; diff --git a/node_modules/source-map/lib/source-map-generator.js b/node_modules/source-map/lib/source-map-generator.js deleted file mode 100644 index aff1e7fb2..000000000 --- a/node_modules/source-map/lib/source-map-generator.js +++ /dev/null @@ -1,416 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var base64VLQ = require('./base64-vlq'); -var util = require('./util'); -var ArraySet = require('./array-set').ArraySet; -var MappingList = require('./mapping-list').MappingList; - -/** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ -function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; -} - -SourceMapGenerator.prototype._version = 3; - -/** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ -SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - -/** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ -SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - -/** - * Set the source content for a source file. - */ -SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - -/** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ -SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - -/** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ -SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - -/** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ -SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - -SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - -/** - * Externalize the source map. - */ -SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - -/** - * Render the source map being generated to a string. - */ -SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - -exports.SourceMapGenerator = SourceMapGenerator; diff --git a/node_modules/source-map/lib/source-node.js b/node_modules/source-map/lib/source-node.js deleted file mode 100644 index d196a53f8..000000000 --- a/node_modules/source-map/lib/source-node.js +++ /dev/null @@ -1,413 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; -var util = require('./util'); - -// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other -// operating systems these days (capturing the result). -var REGEX_NEWLINE = /(\r?\n)/; - -// Newline character code for charCodeAt() comparisons -var NEWLINE_CODE = 10; - -// Private symbol for identifying `SourceNode`s when multiple versions of -// the source-map library are loaded. This MUST NOT CHANGE across -// versions! -var isSourceNode = "$$$isSourceNode$$$"; - -/** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ -function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); -} - -/** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ -SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - -/** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } -}; - -/** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ -SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; -}; - -/** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ -SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; -}; - -/** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ -SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - -/** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - -/** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ -SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; -}; - -/** - * Returns the string representation of this source node along with a source - * map. - */ -SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; -}; - -exports.SourceNode = SourceNode; diff --git a/node_modules/source-map/lib/util.js b/node_modules/source-map/lib/util.js deleted file mode 100644 index 44e0e4520..000000000 --- a/node_modules/source-map/lib/util.js +++ /dev/null @@ -1,417 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ -function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } -} -exports.getArg = getArg; - -var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; -var dataUrlRegexp = /^data:.+\,.+$/; - -function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; -} -exports.urlParse = urlParse; - -function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; -} -exports.urlGenerate = urlGenerate; - -/** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ -function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; -} -exports.normalize = normalize; - -/** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ -function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; -} -exports.join = join; - -exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); -}; - -/** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ -function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); -} -exports.relative = relative; - -var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); -}()); - -function identity (s) { - return s; -} - -/** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ -function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; -} -exports.toSetString = supportsNullProto ? identity : toSetString; - -function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; -} -exports.fromSetString = supportsNullProto ? identity : fromSetString; - -function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; -} - -/** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ -function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; -} -exports.compareByOriginalPositions = compareByOriginalPositions; - -/** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ -function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; -} -exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - -function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; -} - -/** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ -function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; diff --git a/node_modules/source-map/package.json b/node_modules/source-map/package.json deleted file mode 100644 index 6f733baba..000000000 --- a/node_modules/source-map/package.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "_args": [ - [ - "source-map@0.5.7", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "source-map@0.5.7", - "_id": "source-map@0.5.7", - "_inBundle": false, - "_integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "_location": "/source-map", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "source-map@0.5.7", - "name": "source-map", - "escapedName": "source-map", - "rawSpec": "0.5.7", - "saveSpec": null, - "fetchSpec": "0.5.7" - }, - "_requiredBy": [ - "/@babel/core", - "/@babel/generator", - "/@babel/helper-module-transforms/@babel/generator", - "/@babel/helper-replace-supers/@babel/generator", - "/snapdragon" - ], - "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "_spec": "0.5.7", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Nick Fitzgerald", - "email": "nfitzgerald@mozilla.com" - }, - "bugs": { - "url": "https://github.com/mozilla/source-map/issues" - }, - "contributors": [ - { - "name": "Tobias Koppers", - "email": "tobias.koppers@googlemail.com" - }, - { - "name": "Duncan Beevers", - "email": "duncan@dweebd.com" - }, - { - "name": "Stephen Crane", - "email": "scrane@mozilla.com" - }, - { - "name": "Ryan Seddon", - "email": "seddon.ryan@gmail.com" - }, - { - "name": "Miles Elam", - "email": "miles.elam@deem.com" - }, - { - "name": "Mihai Bazon", - "email": "mihai.bazon@gmail.com" - }, - { - "name": "Michael Ficarra", - "email": "github.public.email@michael.ficarra.me" - }, - { - "name": "Todd Wolfson", - "email": "todd@twolfson.com" - }, - { - "name": "Alexander Solovyov", - "email": "alexander@solovyov.net" - }, - { - "name": "Felix Gnass", - "email": "fgnass@gmail.com" - }, - { - "name": "Conrad Irwin", - "email": "conrad.irwin@gmail.com" - }, - { - "name": "usrbincc", - "email": "usrbincc@yahoo.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Chase Douglas", - "email": "chase@newrelic.com" - }, - { - "name": "Evan Wallace", - "email": "evan.exe@gmail.com" - }, - { - "name": "Heather Arthur", - "email": "fayearthur@gmail.com" - }, - { - "name": "Hugh Kennedy", - "email": "hughskennedy@gmail.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Simon Lydell", - "email": "simon.lydell@gmail.com" - }, - { - "name": "Jmeas Smith", - "email": "jellyes2@gmail.com" - }, - { - "name": "Michael Z Goddard", - "email": "mzgoddard@gmail.com" - }, - { - "name": "azu", - "email": "azu@users.noreply.github.com" - }, - { - "name": "John Gozde", - "email": "john@gozde.ca" - }, - { - "name": "Adam Kirkton", - "email": "akirkton@truefitinnovation.com" - }, - { - "name": "Chris Montgomery", - "email": "christopher.montgomery@dowjones.com" - }, - { - "name": "J. Ryan Stinnett", - "email": "jryans@gmail.com" - }, - { - "name": "Jack Herrington", - "email": "jherrington@walmartlabs.com" - }, - { - "name": "Chris Truter", - "email": "jeffpalentine@gmail.com" - }, - { - "name": "Daniel Espeset", - "email": "daniel@danielespeset.com" - }, - { - "name": "Jamie Wong", - "email": "jamie.lf.wong@gmail.com" - }, - { - "name": "Eddy Bruël", - "email": "ejpbruel@mozilla.com" - }, - { - "name": "Hawken Rives", - "email": "hawkrives@gmail.com" - }, - { - "name": "Gilad Peleg", - "email": "giladp007@gmail.com" - }, - { - "name": "djchie", - "email": "djchie.dev@gmail.com" - }, - { - "name": "Gary Ye", - "email": "garysye@gmail.com" - }, - { - "name": "Nicolas Lalevée", - "email": "nicolas.lalevee@hibnet.org" - } - ], - "description": "Generates and consumes source maps", - "devDependencies": { - "doctoc": "^0.15.0", - "webpack": "^1.12.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "source-map.js", - "lib/", - "dist/source-map.debug.js", - "dist/source-map.js", - "dist/source-map.min.js", - "dist/source-map.min.js.map" - ], - "homepage": "https://github.com/mozilla/source-map", - "license": "BSD-3-Clause", - "main": "./source-map.js", - "name": "source-map", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/mozilla/source-map.git" - }, - "scripts": { - "build": "webpack --color", - "test": "npm run build && node test/run-tests.js", - "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" - }, - "typings": "source-map", - "version": "0.5.7" -} diff --git a/node_modules/source-map/source-map.js b/node_modules/source-map/source-map.js deleted file mode 100644 index bc88fe820..000000000 --- a/node_modules/source-map/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./lib/source-node').SourceNode; diff --git a/node_modules/split-string/LICENSE b/node_modules/split-string/LICENSE deleted file mode 100644 index e33d14b75..000000000 --- a/node_modules/split-string/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/split-string/README.md b/node_modules/split-string/README.md deleted file mode 100644 index d622e44d9..000000000 --- a/node_modules/split-string/README.md +++ /dev/null @@ -1,321 +0,0 @@ -# split-string [![NPM version](https://img.shields.io/npm/v/split-string.svg?style=flat)](https://www.npmjs.com/package/split-string) [![NPM monthly downloads](https://img.shields.io/npm/dm/split-string.svg?style=flat)](https://npmjs.org/package/split-string) [![NPM total downloads](https://img.shields.io/npm/dt/split-string.svg?style=flat)](https://npmjs.org/package/split-string) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/split-string.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/split-string) - -> Split a string on a character except when the character is escaped. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save split-string -``` - - - -
          -Why use this? - -
          - -Although it's easy to split on a string: - -```js -console.log('a.b.c'.split('.')); -//=> ['a', 'b', 'c'] -``` - -It's more challenging to split a string whilst respecting escaped or quoted characters. - -**Bad** - -```js -console.log('a\\.b.c'.split('.')); -//=> ['a\\', 'b', 'c'] - -console.log('"a.b.c".d'.split('.')); -//=> ['"a', 'b', 'c"', 'd'] -``` - -**Good** - -```js -var split = require('split-string'); -console.log(split('a\\.b.c')); -//=> ['a.b', 'c'] - -console.log(split('"a.b.c".d')); -//=> ['a.b.c', 'd'] -``` - -See the [options](#options) to learn how to choose the separator or retain quotes or escaping. - -
          - -
          - -## Usage - -```js -var split = require('split-string'); - -split('a.b.c'); -//=> ['a', 'b', 'c'] - -// respects escaped characters -split('a.b.c\\.d'); -//=> ['a', 'b', 'c.d'] - -// respects double-quoted strings -split('a."b.c.d".e'); -//=> ['a', 'b.c.d', 'e'] -``` - -**Brackets** - -Also respects brackets [unless disabled](#optionsbrackets): - -```js -split('a (b c d) e', ' '); -//=> ['a', '(b c d)', 'e'] -``` - -## Options - -### options.brackets - -**Type**: `object|boolean` - -**Default**: `undefined` - -**Description** - -If enabled, split-string will not split inside brackets. The following brackets types are supported when `options.brackets` is `true`, - -```js -{ - '<': '>', - '(': ')', - '[': ']', - '{': '}' -} -``` - -Or, if object of brackets must be passed, each property on the object must be a bracket type, where the property key is the opening delimiter and property value is the closing delimiter. - -**Examples** - -```js -// no bracket support by default -split('a.{b.c}'); -//=> [ 'a', '{b', 'c}' ] - -// support all basic bracket types: "<>{}[]()" -split('a.{b.c}', {brackets: true}); -//=> [ 'a', '{b.c}' ] - -// also supports nested brackets -split('a.{b.{c.d}.e}.f', {brackets: true}); -//=> [ 'a', '{b.{c.d}.e}', 'f' ] - -// support only the specified brackets -split('[a.b].(c.d)', {brackets: {'[': ']'}}); -//=> [ '[a.b]', '(c', 'd)' ] -``` - -### options.sep - -**Type**: `string` - -**Default**: `.` - -The separator/character to split on. - -**Example** - -```js -split('a.b,c', {sep: ','}); -//=> ['a.b', 'c'] - -// you can also pass the separator as string as the last argument -split('a.b,c', ','); -//=> ['a.b', 'c'] -``` - -### options.keepEscaping - -**Type**: `boolean` - -**Default**: `undefined` - -Keep backslashes in the result. - -**Example** - -```js -split('a.b\\.c'); -//=> ['a', 'b.c'] - -split('a.b.\\c', {keepEscaping: true}); -//=> ['a', 'b\.c'] -``` - -### options.keepQuotes - -**Type**: `boolean` - -**Default**: `undefined` - -Keep single- or double-quotes in the result. - -**Example** - -```js -split('a."b.c.d".e'); -//=> ['a', 'b.c.d', 'e'] - -split('a."b.c.d".e', {keepQuotes: true}); -//=> ['a', '"b.c.d"', 'e'] - -split('a.\'b.c.d\'.e', {keepQuotes: true}); -//=> ['a', '\'b.c.d\'', 'e'] -``` - -### options.keepDoubleQuotes - -**Type**: `boolean` - -**Default**: `undefined` - -Keep double-quotes in the result. - -**Example** - -```js -split('a."b.c.d".e'); -//=> ['a', 'b.c.d', 'e'] - -split('a."b.c.d".e', {keepDoubleQuotes: true}); -//=> ['a', '"b.c.d"', 'e'] -``` - -### options.keepSingleQuotes - -**Type**: `boolean` - -**Default**: `undefined` - -Keep single-quotes in the result. - -**Example** - -```js -split('a.\'b.c.d\'.e'); -//=> ['a', 'b.c.d', 'e'] - -split('a.\'b.c.d\'.e', {keepSingleQuotes: true}); -//=> ['a', '\'b.c.d\'', 'e'] -``` - -## Customizer - -**Type**: `function` - -**Default**: `undefined` - -Pass a function as the last argument to customize how tokens are added to the array. - -**Example** - -```js -var arr = split('a.b', function(tok) { - if (tok.arr[tok.arr.length - 1] === 'a') { - tok.split = false; - } -}); -console.log(arr); -//=> ['a.b'] -``` - -**Properties** - -The `tok` object has the following properties: - -* `tok.val` (string) The current value about to be pushed onto the result array -* `tok.idx` (number) the current index in the string -* `tok.str` (string) the entire string -* `tok.arr` (array) the result array - -## Release history - -### v3.0.0 - 2017-06-17 - -**Added** - -* adds support for brackets - -## About - -
          -Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
          - -
          -Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
          - -
          -Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
          - -### Related projects - -You might also be interested in these projects: - -* [deromanize](https://www.npmjs.com/package/deromanize): Convert roman numerals to arabic numbers (useful for books, outlines, documentation, slide decks, etc) | [homepage](https://github.com/jonschlinkert/deromanize "Convert roman numerals to arabic numbers (useful for books, outlines, documentation, slide decks, etc)") -* [randomatic](https://www.npmjs.com/package/randomatic): Generate randomized strings of a specified length using simple character sequences. The original generate-password. | [homepage](https://github.com/jonschlinkert/randomatic "Generate randomized strings of a specified length using simple character sequences. The original generate-password.") -* [repeat-string](https://www.npmjs.com/package/repeat-string): Repeat the given string n times. Fastest implementation for repeating a string. | [homepage](https://github.com/jonschlinkert/repeat-string "Repeat the given string n times. Fastest implementation for repeating a string.") -* [romanize](https://www.npmjs.com/package/romanize): Convert numbers to roman numerals (useful for books, outlines, documentation, slide decks, etc) | [homepage](https://github.com/jonschlinkert/romanize "Convert numbers to roman numerals (useful for books, outlines, documentation, slide decks, etc)") - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 28 | [jonschlinkert](https://github.com/jonschlinkert) | -| 9 | [doowb](https://github.com/doowb) | - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 19, 2017._ \ No newline at end of file diff --git a/node_modules/split-string/index.js b/node_modules/split-string/index.js deleted file mode 100644 index 7bc0ea91b..000000000 --- a/node_modules/split-string/index.js +++ /dev/null @@ -1,171 +0,0 @@ -/*! - * split-string - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var extend = require('extend-shallow'); - -module.exports = function(str, options, fn) { - if (typeof str !== 'string') { - throw new TypeError('expected a string'); - } - - if (typeof options === 'function') { - fn = options; - options = null; - } - - // allow separator to be defined as a string - if (typeof options === 'string') { - options = { sep: options }; - } - - var opts = extend({sep: '.'}, options); - var quotes = opts.quotes || ['"', "'", '`']; - var brackets; - - if (opts.brackets === true) { - brackets = { - '<': '>', - '(': ')', - '[': ']', - '{': '}' - }; - } else if (opts.brackets) { - brackets = opts.brackets; - } - - var tokens = []; - var stack = []; - var arr = ['']; - var sep = opts.sep; - var len = str.length; - var idx = -1; - var closeIdx; - - function expected() { - if (brackets && stack.length) { - return brackets[stack[stack.length - 1]]; - } - } - - while (++idx < len) { - var ch = str[idx]; - var next = str[idx + 1]; - var tok = { val: ch, idx: idx, arr: arr, str: str }; - tokens.push(tok); - - if (ch === '\\') { - tok.val = keepEscaping(opts, str, idx) === true ? (ch + next) : next; - tok.escaped = true; - if (typeof fn === 'function') { - fn(tok); - } - arr[arr.length - 1] += tok.val; - idx++; - continue; - } - - if (brackets && brackets[ch]) { - stack.push(ch); - var e = expected(); - var i = idx + 1; - - if (str.indexOf(e, i + 1) !== -1) { - while (stack.length && i < len) { - var s = str[++i]; - if (s === '\\') { - s++; - continue; - } - - if (quotes.indexOf(s) !== -1) { - i = getClosingQuote(str, s, i + 1); - continue; - } - - e = expected(); - if (stack.length && str.indexOf(e, i + 1) === -1) { - break; - } - - if (brackets[s]) { - stack.push(s); - continue; - } - - if (e === s) { - stack.pop(); - } - } - } - - closeIdx = i; - if (closeIdx === -1) { - arr[arr.length - 1] += ch; - continue; - } - - ch = str.slice(idx, closeIdx + 1); - tok.val = ch; - tok.idx = idx = closeIdx; - } - - if (quotes.indexOf(ch) !== -1) { - closeIdx = getClosingQuote(str, ch, idx + 1); - if (closeIdx === -1) { - arr[arr.length - 1] += ch; - continue; - } - - if (keepQuotes(ch, opts) === true) { - ch = str.slice(idx, closeIdx + 1); - } else { - ch = str.slice(idx + 1, closeIdx); - } - - tok.val = ch; - tok.idx = idx = closeIdx; - } - - if (typeof fn === 'function') { - fn(tok, tokens); - ch = tok.val; - idx = tok.idx; - } - - if (tok.val === sep && tok.split !== false) { - arr.push(''); - continue; - } - - arr[arr.length - 1] += tok.val; - } - - return arr; -}; - -function getClosingQuote(str, ch, i, brackets) { - var idx = str.indexOf(ch, i); - if (str.charAt(idx - 1) === '\\') { - return getClosingQuote(str, ch, idx + 1); - } - return idx; -} - -function keepQuotes(ch, opts) { - if (opts.keepDoubleQuotes === true && ch === '"') return true; - if (opts.keepSingleQuotes === true && ch === "'") return true; - return opts.keepQuotes; -} - -function keepEscaping(opts, str, idx) { - if (typeof opts.keepEscaping === 'function') { - return opts.keepEscaping(str, idx); - } - return opts.keepEscaping === true || str[idx + 1] === '\\'; -} diff --git a/node_modules/split-string/package.json b/node_modules/split-string/package.json deleted file mode 100644 index 7c297ac11..000000000 --- a/node_modules/split-string/package.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "_args": [ - [ - "split-string@3.1.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "split-string@3.1.0", - "_id": "split-string@3.1.0", - "_inBundle": false, - "_integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "_location": "/split-string", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "split-string@3.1.0", - "name": "split-string", - "escapedName": "split-string", - "rawSpec": "3.1.0", - "saveSpec": null, - "fetchSpec": "3.1.0" - }, - "_requiredBy": [ - "/braces", - "/set-value" - ], - "_resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "_spec": "3.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/split-string/issues" - }, - "contributors": [ - { - "name": "Brian Woodward", - "url": "https://twitter.com/doowb" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - } - ], - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "description": "Split a string on a character except when the character is escaped.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/split-string", - "keywords": [ - "character", - "escape", - "split", - "string" - ], - "license": "MIT", - "main": "index.js", - "name": "split-string", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/split-string.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": false, - "layout": "default", - "titles": [ - ".", - "install", - "Why use this?" - ], - "related": { - "list": [ - "deromanize", - "randomatic", - "repeat-string", - "romanize" - ] - }, - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - } - }, - "version": "3.1.0" -} diff --git a/node_modules/sprintf-js/.npmignore b/node_modules/sprintf-js/.npmignore deleted file mode 100644 index 096746c14..000000000 --- a/node_modules/sprintf-js/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules/ \ No newline at end of file diff --git a/node_modules/sprintf-js/LICENSE b/node_modules/sprintf-js/LICENSE deleted file mode 100644 index 663ac52e4..000000000 --- a/node_modules/sprintf-js/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2007-2014, Alexandru Marasteanu -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of this software nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sprintf-js/README.md b/node_modules/sprintf-js/README.md deleted file mode 100644 index 83863561b..000000000 --- a/node_modules/sprintf-js/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# sprintf.js -**sprintf.js** is a complete open source JavaScript sprintf implementation for the *browser* and *node.js*. - -Its prototype is simple: - - string sprintf(string format , [mixed arg1 [, mixed arg2 [ ,...]]]) - -The placeholders in the format string are marked by `%` and are followed by one or more of these elements, in this order: - -* An optional number followed by a `$` sign that selects which argument index to use for the value. If not specified, arguments will be placed in the same order as the placeholders in the input string. -* An optional `+` sign that forces to preceed the result with a plus or minus sign on numeric values. By default, only the `-` sign is used on negative numbers. -* An optional padding specifier that says what character to use for padding (if specified). Possible values are `0` or any other character precedeed by a `'` (single quote). The default is to pad with *spaces*. -* An optional `-` sign, that causes sprintf to left-align the result of this placeholder. The default is to right-align the result. -* An optional number, that says how many characters the result should have. If the value to be returned is shorter than this number, the result will be padded. When used with the `j` (JSON) type specifier, the padding length specifies the tab size used for indentation. -* An optional precision modifier, consisting of a `.` (dot) followed by a number, that says how many digits should be displayed for floating point numbers. When used with the `g` type specifier, it specifies the number of significant digits. When used on a string, it causes the result to be truncated. -* A type specifier that can be any of: - * `%` — yields a literal `%` character - * `b` — yields an integer as a binary number - * `c` — yields an integer as the character with that ASCII value - * `d` or `i` — yields an integer as a signed decimal number - * `e` — yields a float using scientific notation - * `u` — yields an integer as an unsigned decimal number - * `f` — yields a float as is; see notes on precision above - * `g` — yields a float as is; see notes on precision above - * `o` — yields an integer as an octal number - * `s` — yields a string as is - * `x` — yields an integer as a hexadecimal number (lower-case) - * `X` — yields an integer as a hexadecimal number (upper-case) - * `j` — yields a JavaScript object or array as a JSON encoded string - -## JavaScript `vsprintf` -`vsprintf` is the same as `sprintf` except that it accepts an array of arguments, rather than a variable number of arguments: - - vsprintf("The first 4 letters of the english alphabet are: %s, %s, %s and %s", ["a", "b", "c", "d"]) - -## Argument swapping -You can also swap the arguments. That is, the order of the placeholders doesn't have to match the order of the arguments. You can do that by simply indicating in the format string which arguments the placeholders refer to: - - sprintf("%2$s %3$s a %1$s", "cracker", "Polly", "wants") -And, of course, you can repeat the placeholders without having to increase the number of arguments. - -## Named arguments -Format strings may contain replacement fields rather than positional placeholders. Instead of referring to a certain argument, you can now refer to a certain key within an object. Replacement fields are surrounded by rounded parentheses - `(` and `)` - and begin with a keyword that refers to a key: - - var user = { - name: "Dolly" - } - sprintf("Hello %(name)s", user) // Hello Dolly -Keywords in replacement fields can be optionally followed by any number of keywords or indexes: - - var users = [ - {name: "Dolly"}, - {name: "Molly"}, - {name: "Polly"} - ] - sprintf("Hello %(users[0].name)s, %(users[1].name)s and %(users[2].name)s", {users: users}) // Hello Dolly, Molly and Polly -Note: mixing positional and named placeholders is not (yet) supported - -## Computed values -You can pass in a function as a dynamic value and it will be invoked (with no arguments) in order to compute the value on-the-fly. - - sprintf("Current timestamp: %d", Date.now) // Current timestamp: 1398005382890 - sprintf("Current date and time: %s", function() { return new Date().toString() }) - -# AngularJS -You can now use `sprintf` and `vsprintf` (also aliased as `fmt` and `vfmt` respectively) in your AngularJS projects. See `demo/`. - -# Installation - -## Via Bower - - bower install sprintf - -## Or as a node.js module - - npm install sprintf-js - -### Usage - - var sprintf = require("sprintf-js").sprintf, - vsprintf = require("sprintf-js").vsprintf - - sprintf("%2$s %3$s a %1$s", "cracker", "Polly", "wants") - vsprintf("The first 4 letters of the english alphabet are: %s, %s, %s and %s", ["a", "b", "c", "d"]) - -# License - -**sprintf.js** is licensed under the terms of the 3-clause BSD license. diff --git a/node_modules/sprintf-js/bower.json b/node_modules/sprintf-js/bower.json deleted file mode 100644 index d90a75989..000000000 --- a/node_modules/sprintf-js/bower.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "sprintf", - "description": "JavaScript sprintf implementation", - "version": "1.0.3", - "main": "src/sprintf.js", - "license": "BSD-3-Clause-Clear", - "keywords": ["sprintf", "string", "formatting"], - "authors": ["Alexandru Marasteanu (http://alexei.ro/)"], - "homepage": "https://github.com/alexei/sprintf.js", - "repository": { - "type": "git", - "url": "git://github.com/alexei/sprintf.js.git" - } -} diff --git a/node_modules/sprintf-js/demo/angular.html b/node_modules/sprintf-js/demo/angular.html deleted file mode 100644 index 3559efd76..000000000 --- a/node_modules/sprintf-js/demo/angular.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - -
          {{ "%+010d"|sprintf:-123 }}
          -
          {{ "%+010d"|vsprintf:[-123] }}
          -
          {{ "%+010d"|fmt:-123 }}
          -
          {{ "%+010d"|vfmt:[-123] }}
          -
          {{ "I've got %2$d apples and %1$d oranges."|fmt:4:2 }}
          -
          {{ "I've got %(apples)d apples and %(oranges)d oranges."|fmt:{apples: 2, oranges: 4} }}
          - - - - diff --git a/node_modules/sprintf-js/dist/angular-sprintf.min.js b/node_modules/sprintf-js/dist/angular-sprintf.min.js deleted file mode 100644 index dbaf744d8..000000000 --- a/node_modules/sprintf-js/dist/angular-sprintf.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! sprintf-js | Alexandru Marasteanu (http://alexei.ro/) | BSD-3-Clause */ - -angular.module("sprintf",[]).filter("sprintf",function(){return function(){return sprintf.apply(null,arguments)}}).filter("fmt",["$filter",function(a){return a("sprintf")}]).filter("vsprintf",function(){return function(a,b){return vsprintf(a,b)}}).filter("vfmt",["$filter",function(a){return a("vsprintf")}]); -//# sourceMappingURL=angular-sprintf.min.map \ No newline at end of file diff --git a/node_modules/sprintf-js/dist/angular-sprintf.min.js.map b/node_modules/sprintf-js/dist/angular-sprintf.min.js.map deleted file mode 100644 index 055964c62..000000000 --- a/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"angular-sprintf.min.js","sources":["../src/angular-sprintf.js"],"names":["angular","module","filter","sprintf","apply","arguments","$filter","format","argv","vsprintf"],"mappings":";;AAAAA,QACIC,OAAO,cACPC,OAAO,UAAW,WACd,MAAO,YACH,MAAOC,SAAQC,MAAM,KAAMC,cAGnCH,OAAO,OAAQ,UAAW,SAASI,GAC/B,MAAOA,GAAQ,cAEnBJ,OAAO,WAAY,WACf,MAAO,UAASK,EAAQC,GACpB,MAAOC,UAASF,EAAQC,MAGhCN,OAAO,QAAS,UAAW,SAASI,GAChC,MAAOA,GAAQ"} \ No newline at end of file diff --git a/node_modules/sprintf-js/dist/angular-sprintf.min.map b/node_modules/sprintf-js/dist/angular-sprintf.min.map deleted file mode 100644 index 055964c62..000000000 --- a/node_modules/sprintf-js/dist/angular-sprintf.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"angular-sprintf.min.js","sources":["../src/angular-sprintf.js"],"names":["angular","module","filter","sprintf","apply","arguments","$filter","format","argv","vsprintf"],"mappings":";;AAAAA,QACIC,OAAO,cACPC,OAAO,UAAW,WACd,MAAO,YACH,MAAOC,SAAQC,MAAM,KAAMC,cAGnCH,OAAO,OAAQ,UAAW,SAASI,GAC/B,MAAOA,GAAQ,cAEnBJ,OAAO,WAAY,WACf,MAAO,UAASK,EAAQC,GACpB,MAAOC,UAASF,EAAQC,MAGhCN,OAAO,QAAS,UAAW,SAASI,GAChC,MAAOA,GAAQ"} \ No newline at end of file diff --git a/node_modules/sprintf-js/dist/sprintf.min.js b/node_modules/sprintf-js/dist/sprintf.min.js deleted file mode 100644 index dc61e51ad..000000000 --- a/node_modules/sprintf-js/dist/sprintf.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! sprintf-js | Alexandru Marasteanu (http://alexei.ro/) | BSD-3-Clause */ - -!function(a){function b(){var a=arguments[0],c=b.cache;return c[a]&&c.hasOwnProperty(a)||(c[a]=b.parse(a)),b.format.call(null,c[a],arguments)}function c(a){return Object.prototype.toString.call(a).slice(8,-1).toLowerCase()}function d(a,b){return Array(b+1).join(a)}var e={not_string:/[^s]/,number:/[diefg]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijosuxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[\+\-]/};b.format=function(a,f){var g,h,i,j,k,l,m,n=1,o=a.length,p="",q=[],r=!0,s="";for(h=0;o>h;h++)if(p=c(a[h]),"string"===p)q[q.length]=a[h];else if("array"===p){if(j=a[h],j[2])for(g=f[n],i=0;i=0),j[8]){case"b":g=g.toString(2);break;case"c":g=String.fromCharCode(g);break;case"d":case"i":g=parseInt(g,10);break;case"j":g=JSON.stringify(g,null,j[6]?parseInt(j[6]):0);break;case"e":g=j[7]?g.toExponential(j[7]):g.toExponential();break;case"f":g=j[7]?parseFloat(g).toFixed(j[7]):parseFloat(g);break;case"g":g=j[7]?parseFloat(g).toPrecision(j[7]):parseFloat(g);break;case"o":g=g.toString(8);break;case"s":g=(g=String(g))&&j[7]?g.substring(0,j[7]):g;break;case"u":g>>>=0;break;case"x":g=g.toString(16);break;case"X":g=g.toString(16).toUpperCase()}e.json.test(j[8])?q[q.length]=g:(!e.number.test(j[8])||r&&!j[3]?s="":(s=r?"+":"-",g=g.toString().replace(e.sign,"")),l=j[4]?"0"===j[4]?"0":j[4].charAt(1):" ",m=j[6]-(s+g).length,k=j[6]&&m>0?d(l,m):"",q[q.length]=j[5]?s+g+k:"0"===l?s+k+g:k+s+g)}return q.join("")},b.cache={},b.parse=function(a){for(var b=a,c=[],d=[],f=0;b;){if(null!==(c=e.text.exec(b)))d[d.length]=c[0];else if(null!==(c=e.modulo.exec(b)))d[d.length]="%";else{if(null===(c=e.placeholder.exec(b)))throw new SyntaxError("[sprintf] unexpected placeholder");if(c[2]){f|=1;var g=[],h=c[2],i=[];if(null===(i=e.key.exec(h)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(g[g.length]=i[1];""!==(h=h.substring(i[0].length));)if(null!==(i=e.key_access.exec(h)))g[g.length]=i[1];else{if(null===(i=e.index_access.exec(h)))throw new SyntaxError("[sprintf] failed to parse named argument key");g[g.length]=i[1]}c[2]=g}else f|=2;if(3===f)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");d[d.length]=c}b=b.substring(c[0].length)}return d};var f=function(a,c,d){return d=(c||[]).slice(0),d.splice(0,0,a),b.apply(null,d)};"undefined"!=typeof exports?(exports.sprintf=b,exports.vsprintf=f):(a.sprintf=b,a.vsprintf=f,"function"==typeof define&&define.amd&&define(function(){return{sprintf:b,vsprintf:f}}))}("undefined"==typeof window?this:window); -//# sourceMappingURL=sprintf.min.map \ No newline at end of file diff --git a/node_modules/sprintf-js/dist/sprintf.min.js.map b/node_modules/sprintf-js/dist/sprintf.min.js.map deleted file mode 100644 index 369dbafab..000000000 --- a/node_modules/sprintf-js/dist/sprintf.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sprintf.min.js","sources":["../src/sprintf.js"],"names":["window","sprintf","key","arguments","cache","hasOwnProperty","parse","format","call","get_type","variable","Object","prototype","toString","slice","toLowerCase","str_repeat","input","multiplier","Array","join","re","not_string","number","json","not_json","text","modulo","placeholder","key_access","index_access","sign","parse_tree","argv","arg","i","k","match","pad","pad_character","pad_length","cursor","tree_length","length","node_type","output","is_positive","Error","test","isNaN","TypeError","String","fromCharCode","parseInt","JSON","stringify","toExponential","parseFloat","toFixed","substring","toUpperCase","replace","charAt","fmt","_fmt","arg_names","exec","SyntaxError","field_list","replacement_field","field_match","vsprintf","_argv","splice","apply","exports","define","amd","this"],"mappings":";;CAAA,SAAUA,GAeN,QAASC,KACL,GAAIC,GAAMC,UAAU,GAAIC,EAAQH,EAAQG,KAIxC,OAHMA,GAAMF,IAAQE,EAAMC,eAAeH,KACrCE,EAAMF,GAAOD,EAAQK,MAAMJ,IAExBD,EAAQM,OAAOC,KAAK,KAAMJ,EAAMF,GAAMC,WA4JjD,QAASM,GAASC,GACd,MAAOC,QAAOC,UAAUC,SAASL,KAAKE,GAAUI,MAAM,EAAG,IAAIC,cAGjE,QAASC,GAAWC,EAAOC,GACvB,MAAOC,OAAMD,EAAa,GAAGE,KAAKH,GApLtC,GAAII,IACAC,WAAY,OACZC,OAAQ,SACRC,KAAM,MACNC,SAAU,OACVC,KAAM,YACNC,OAAQ,WACRC,YAAa,yFACb1B,IAAK,sBACL2B,WAAY,wBACZC,aAAc,aACdC,KAAM,UAWV9B,GAAQM,OAAS,SAASyB,EAAYC,GAClC,GAAiEC,GAAkBC,EAAGC,EAAGC,EAAOC,EAAKC,EAAeC,EAAhHC,EAAS,EAAGC,EAAcV,EAAWW,OAAQC,EAAY,GAASC,KAA0DC,GAAc,EAAMf,EAAO,EAC3J,KAAKI,EAAI,EAAOO,EAAJP,EAAiBA,IAEzB,GADAS,EAAYnC,EAASuB,EAAWG,IACd,WAAdS,EACAC,EAAOA,EAAOF,QAAUX,EAAWG,OAElC,IAAkB,UAAdS,EAAuB,CAE5B,GADAP,EAAQL,EAAWG,GACfE,EAAM,GAEN,IADAH,EAAMD,EAAKQ,GACNL,EAAI,EAAGA,EAAIC,EAAM,GAAGM,OAAQP,IAAK,CAClC,IAAKF,EAAI7B,eAAegC,EAAM,GAAGD,IAC7B,KAAM,IAAIW,OAAM9C,EAAQ,yCAA0CoC,EAAM,GAAGD,IAE/EF,GAAMA,EAAIG,EAAM,GAAGD,QAIvBF,GADKG,EAAM,GACLJ,EAAKI,EAAM,IAGXJ,EAAKQ,IAOf,IAJqB,YAAjBhC,EAASyB,KACTA,EAAMA,KAGNb,EAAGC,WAAW0B,KAAKX,EAAM,KAAOhB,EAAGI,SAASuB,KAAKX,EAAM,KAAyB,UAAjB5B,EAASyB,IAAoBe,MAAMf,GAClG,KAAM,IAAIgB,WAAUjD,EAAQ,0CAA2CQ,EAASyB,IAOpF,QAJIb,EAAGE,OAAOyB,KAAKX,EAAM,MACrBS,EAAcZ,GAAO,GAGjBG,EAAM,IACV,IAAK,IACDH,EAAMA,EAAIrB,SAAS,EACvB,MACA,KAAK,IACDqB,EAAMiB,OAAOC,aAAalB,EAC9B,MACA,KAAK,IACL,IAAK,IACDA,EAAMmB,SAASnB,EAAK,GACxB,MACA,KAAK,IACDA,EAAMoB,KAAKC,UAAUrB,EAAK,KAAMG,EAAM,GAAKgB,SAAShB,EAAM,IAAM,EACpE,MACA,KAAK,IACDH,EAAMG,EAAM,GAAKH,EAAIsB,cAAcnB,EAAM,IAAMH,EAAIsB,eACvD,MACA,KAAK,IACDtB,EAAMG,EAAM,GAAKoB,WAAWvB,GAAKwB,QAAQrB,EAAM,IAAMoB,WAAWvB,EACpE,MACA,KAAK,IACDA,EAAMA,EAAIrB,SAAS,EACvB,MACA,KAAK,IACDqB,GAAQA,EAAMiB,OAAOjB,KAASG,EAAM,GAAKH,EAAIyB,UAAU,EAAGtB,EAAM,IAAMH,CAC1E,MACA,KAAK,IACDA,KAAc,CAClB,MACA,KAAK,IACDA,EAAMA,EAAIrB,SAAS,GACvB,MACA,KAAK,IACDqB,EAAMA,EAAIrB,SAAS,IAAI+C,cAG3BvC,EAAGG,KAAKwB,KAAKX,EAAM,IACnBQ,EAAOA,EAAOF,QAAUT,IAGpBb,EAAGE,OAAOyB,KAAKX,EAAM,KAASS,IAAeT,EAAM,GAKnDN,EAAO,IAJPA,EAAOe,EAAc,IAAM,IAC3BZ,EAAMA,EAAIrB,WAAWgD,QAAQxC,EAAGU,KAAM,KAK1CQ,EAAgBF,EAAM,GAAkB,MAAbA,EAAM,GAAa,IAAMA,EAAM,GAAGyB,OAAO,GAAK,IACzEtB,EAAaH,EAAM,IAAMN,EAAOG,GAAKS,OACrCL,EAAMD,EAAM,IAAMG,EAAa,EAAIxB,EAAWuB,EAAeC,GAAoB,GACjFK,EAAOA,EAAOF,QAAUN,EAAM,GAAKN,EAAOG,EAAMI,EAAyB,MAAlBC,EAAwBR,EAAOO,EAAMJ,EAAMI,EAAMP,EAAOG,GAI3H,MAAOW,GAAOzB,KAAK,KAGvBnB,EAAQG,SAERH,EAAQK,MAAQ,SAASyD,GAErB,IADA,GAAIC,GAAOD,EAAK1B,KAAYL,KAAiBiC,EAAY,EAClDD,GAAM,CACT,GAAqC,QAAhC3B,EAAQhB,EAAGK,KAAKwC,KAAKF,IACtBhC,EAAWA,EAAWW,QAAUN,EAAM,OAErC,IAAuC,QAAlCA,EAAQhB,EAAGM,OAAOuC,KAAKF,IAC7BhC,EAAWA,EAAWW,QAAU,QAE/B,CAAA,GAA4C,QAAvCN,EAAQhB,EAAGO,YAAYsC,KAAKF,IAgClC,KAAM,IAAIG,aAAY,mCA/BtB,IAAI9B,EAAM,GAAI,CACV4B,GAAa,CACb,IAAIG,MAAiBC,EAAoBhC,EAAM,GAAIiC,IACnD,IAAuD,QAAlDA,EAAcjD,EAAGnB,IAAIgE,KAAKG,IAe3B,KAAM,IAAIF,aAAY,+CAbtB,KADAC,EAAWA,EAAWzB,QAAU2B,EAAY,GACwC,MAA5ED,EAAoBA,EAAkBV,UAAUW,EAAY,GAAG3B,UACnE,GAA8D,QAAzD2B,EAAcjD,EAAGQ,WAAWqC,KAAKG,IAClCD,EAAWA,EAAWzB,QAAU2B,EAAY,OAE3C,CAAA,GAAgE,QAA3DA,EAAcjD,EAAGS,aAAaoC,KAAKG,IAIzC,KAAM,IAAIF,aAAY,+CAHtBC,GAAWA,EAAWzB,QAAU2B,EAAY,GAUxDjC,EAAM,GAAK+B,MAGXH,IAAa,CAEjB,IAAkB,IAAdA,EACA,KAAM,IAAIlB,OAAM,4EAEpBf,GAAWA,EAAWW,QAAUN,EAKpC2B,EAAOA,EAAKL,UAAUtB,EAAM,GAAGM,QAEnC,MAAOX,GAGX,IAAIuC,GAAW,SAASR,EAAK9B,EAAMuC,GAG/B,MAFAA,IAASvC,OAAYnB,MAAM,GAC3B0D,EAAMC,OAAO,EAAG,EAAGV,GACZ9D,EAAQyE,MAAM,KAAMF,GAiBR,oBAAZG,UACPA,QAAQ1E,QAAUA,EAClB0E,QAAQJ,SAAWA,IAGnBvE,EAAOC,QAAUA,EACjBD,EAAOuE,SAAWA,EAEI,kBAAXK,SAAyBA,OAAOC,KACvCD,OAAO,WACH,OACI3E,QAASA,EACTsE,SAAUA,OAKT,mBAAXvE,QAAyB8E,KAAO9E"} \ No newline at end of file diff --git a/node_modules/sprintf-js/dist/sprintf.min.map b/node_modules/sprintf-js/dist/sprintf.min.map deleted file mode 100644 index ee011aaa5..000000000 --- a/node_modules/sprintf-js/dist/sprintf.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sprintf.min.js","sources":["../src/sprintf.js"],"names":["window","sprintf","key","arguments","cache","hasOwnProperty","parse","format","call","get_type","variable","Object","prototype","toString","slice","toLowerCase","str_repeat","input","multiplier","Array","join","re","not_string","number","json","not_json","text","modulo","placeholder","key_access","index_access","sign","parse_tree","argv","arg","i","k","match","pad","pad_character","pad_length","cursor","tree_length","length","node_type","output","is_positive","Error","test","isNaN","TypeError","String","fromCharCode","parseInt","JSON","stringify","toExponential","parseFloat","toFixed","toPrecision","substring","toUpperCase","replace","charAt","fmt","_fmt","arg_names","exec","SyntaxError","field_list","replacement_field","field_match","vsprintf","_argv","splice","apply","exports","define","amd","this"],"mappings":";;CAAA,SAAUA,GAeN,QAASC,KACL,GAAIC,GAAMC,UAAU,GAAIC,EAAQH,EAAQG,KAIxC,OAHMA,GAAMF,IAAQE,EAAMC,eAAeH,KACrCE,EAAMF,GAAOD,EAAQK,MAAMJ,IAExBD,EAAQM,OAAOC,KAAK,KAAMJ,EAAMF,GAAMC,WA+JjD,QAASM,GAASC,GACd,MAAOC,QAAOC,UAAUC,SAASL,KAAKE,GAAUI,MAAM,EAAG,IAAIC,cAGjE,QAASC,GAAWC,EAAOC,GACvB,MAAOC,OAAMD,EAAa,GAAGE,KAAKH,GAvLtC,GAAII,IACAC,WAAY,OACZC,OAAQ,UACRC,KAAM,MACNC,SAAU,OACVC,KAAM,YACNC,OAAQ,WACRC,YAAa,yFACb1B,IAAK,sBACL2B,WAAY,wBACZC,aAAc,aACdC,KAAM,UAWV9B,GAAQM,OAAS,SAASyB,EAAYC,GAClC,GAAiEC,GAAkBC,EAAGC,EAAGC,EAAOC,EAAKC,EAAeC,EAAhHC,EAAS,EAAGC,EAAcV,EAAWW,OAAQC,EAAY,GAASC,KAA0DC,GAAc,EAAMf,EAAO,EAC3J,KAAKI,EAAI,EAAOO,EAAJP,EAAiBA,IAEzB,GADAS,EAAYnC,EAASuB,EAAWG,IACd,WAAdS,EACAC,EAAOA,EAAOF,QAAUX,EAAWG,OAElC,IAAkB,UAAdS,EAAuB,CAE5B,GADAP,EAAQL,EAAWG,GACfE,EAAM,GAEN,IADAH,EAAMD,EAAKQ,GACNL,EAAI,EAAGA,EAAIC,EAAM,GAAGM,OAAQP,IAAK,CAClC,IAAKF,EAAI7B,eAAegC,EAAM,GAAGD,IAC7B,KAAM,IAAIW,OAAM9C,EAAQ,yCAA0CoC,EAAM,GAAGD,IAE/EF,GAAMA,EAAIG,EAAM,GAAGD,QAIvBF,GADKG,EAAM,GACLJ,EAAKI,EAAM,IAGXJ,EAAKQ,IAOf,IAJqB,YAAjBhC,EAASyB,KACTA,EAAMA,KAGNb,EAAGC,WAAW0B,KAAKX,EAAM,KAAOhB,EAAGI,SAASuB,KAAKX,EAAM,KAAyB,UAAjB5B,EAASyB,IAAoBe,MAAMf,GAClG,KAAM,IAAIgB,WAAUjD,EAAQ,0CAA2CQ,EAASyB,IAOpF,QAJIb,EAAGE,OAAOyB,KAAKX,EAAM,MACrBS,EAAcZ,GAAO,GAGjBG,EAAM,IACV,IAAK,IACDH,EAAMA,EAAIrB,SAAS,EACvB,MACA,KAAK,IACDqB,EAAMiB,OAAOC,aAAalB,EAC9B,MACA,KAAK,IACL,IAAK,IACDA,EAAMmB,SAASnB,EAAK,GACxB,MACA,KAAK,IACDA,EAAMoB,KAAKC,UAAUrB,EAAK,KAAMG,EAAM,GAAKgB,SAAShB,EAAM,IAAM,EACpE,MACA,KAAK,IACDH,EAAMG,EAAM,GAAKH,EAAIsB,cAAcnB,EAAM,IAAMH,EAAIsB,eACvD,MACA,KAAK,IACDtB,EAAMG,EAAM,GAAKoB,WAAWvB,GAAKwB,QAAQrB,EAAM,IAAMoB,WAAWvB,EACpE,MACA,KAAK,IACDA,EAAMG,EAAM,GAAKoB,WAAWvB,GAAKyB,YAAYtB,EAAM,IAAMoB,WAAWvB,EACxE,MACA,KAAK,IACDA,EAAMA,EAAIrB,SAAS,EACvB,MACA,KAAK,IACDqB,GAAQA,EAAMiB,OAAOjB,KAASG,EAAM,GAAKH,EAAI0B,UAAU,EAAGvB,EAAM,IAAMH,CAC1E,MACA,KAAK,IACDA,KAAc,CAClB,MACA,KAAK,IACDA,EAAMA,EAAIrB,SAAS,GACvB,MACA,KAAK,IACDqB,EAAMA,EAAIrB,SAAS,IAAIgD,cAG3BxC,EAAGG,KAAKwB,KAAKX,EAAM,IACnBQ,EAAOA,EAAOF,QAAUT,IAGpBb,EAAGE,OAAOyB,KAAKX,EAAM,KAASS,IAAeT,EAAM,GAKnDN,EAAO,IAJPA,EAAOe,EAAc,IAAM,IAC3BZ,EAAMA,EAAIrB,WAAWiD,QAAQzC,EAAGU,KAAM,KAK1CQ,EAAgBF,EAAM,GAAkB,MAAbA,EAAM,GAAa,IAAMA,EAAM,GAAG0B,OAAO,GAAK,IACzEvB,EAAaH,EAAM,IAAMN,EAAOG,GAAKS,OACrCL,EAAMD,EAAM,IAAMG,EAAa,EAAIxB,EAAWuB,EAAeC,GAAoB,GACjFK,EAAOA,EAAOF,QAAUN,EAAM,GAAKN,EAAOG,EAAMI,EAAyB,MAAlBC,EAAwBR,EAAOO,EAAMJ,EAAMI,EAAMP,EAAOG,GAI3H,MAAOW,GAAOzB,KAAK,KAGvBnB,EAAQG,SAERH,EAAQK,MAAQ,SAAS0D,GAErB,IADA,GAAIC,GAAOD,EAAK3B,KAAYL,KAAiBkC,EAAY,EAClDD,GAAM,CACT,GAAqC,QAAhC5B,EAAQhB,EAAGK,KAAKyC,KAAKF,IACtBjC,EAAWA,EAAWW,QAAUN,EAAM,OAErC,IAAuC,QAAlCA,EAAQhB,EAAGM,OAAOwC,KAAKF,IAC7BjC,EAAWA,EAAWW,QAAU,QAE/B,CAAA,GAA4C,QAAvCN,EAAQhB,EAAGO,YAAYuC,KAAKF,IAgClC,KAAM,IAAIG,aAAY,mCA/BtB,IAAI/B,EAAM,GAAI,CACV6B,GAAa,CACb,IAAIG,MAAiBC,EAAoBjC,EAAM,GAAIkC,IACnD,IAAuD,QAAlDA,EAAclD,EAAGnB,IAAIiE,KAAKG,IAe3B,KAAM,IAAIF,aAAY,+CAbtB,KADAC,EAAWA,EAAW1B,QAAU4B,EAAY,GACwC,MAA5ED,EAAoBA,EAAkBV,UAAUW,EAAY,GAAG5B,UACnE,GAA8D,QAAzD4B,EAAclD,EAAGQ,WAAWsC,KAAKG,IAClCD,EAAWA,EAAW1B,QAAU4B,EAAY,OAE3C,CAAA,GAAgE,QAA3DA,EAAclD,EAAGS,aAAaqC,KAAKG,IAIzC,KAAM,IAAIF,aAAY,+CAHtBC,GAAWA,EAAW1B,QAAU4B,EAAY,GAUxDlC,EAAM,GAAKgC,MAGXH,IAAa,CAEjB,IAAkB,IAAdA,EACA,KAAM,IAAInB,OAAM,4EAEpBf,GAAWA,EAAWW,QAAUN,EAKpC4B,EAAOA,EAAKL,UAAUvB,EAAM,GAAGM,QAEnC,MAAOX,GAGX,IAAIwC,GAAW,SAASR,EAAK/B,EAAMwC,GAG/B,MAFAA,IAASxC,OAAYnB,MAAM,GAC3B2D,EAAMC,OAAO,EAAG,EAAGV,GACZ/D,EAAQ0E,MAAM,KAAMF,GAiBR,oBAAZG,UACPA,QAAQ3E,QAAUA,EAClB2E,QAAQJ,SAAWA,IAGnBxE,EAAOC,QAAUA,EACjBD,EAAOwE,SAAWA,EAEI,kBAAXK,SAAyBA,OAAOC,KACvCD,OAAO,WACH,OACI5E,QAASA,EACTuE,SAAUA,OAKT,mBAAXxE,QAAyB+E,KAAO/E"} \ No newline at end of file diff --git a/node_modules/sprintf-js/gruntfile.js b/node_modules/sprintf-js/gruntfile.js deleted file mode 100644 index 246e1c3b9..000000000 --- a/node_modules/sprintf-js/gruntfile.js +++ /dev/null @@ -1,36 +0,0 @@ -module.exports = function(grunt) { - grunt.initConfig({ - pkg: grunt.file.readJSON("package.json"), - - uglify: { - options: { - banner: "/*! <%= pkg.name %> | <%= pkg.author %> | <%= pkg.license %> */\n", - sourceMap: true - }, - build: { - files: [ - { - src: "src/sprintf.js", - dest: "dist/sprintf.min.js" - }, - { - src: "src/angular-sprintf.js", - dest: "dist/angular-sprintf.min.js" - } - ] - } - }, - - watch: { - js: { - files: "src/*.js", - tasks: ["uglify"] - } - } - }) - - grunt.loadNpmTasks("grunt-contrib-uglify") - grunt.loadNpmTasks("grunt-contrib-watch") - - grunt.registerTask("default", ["uglify", "watch"]) -} diff --git a/node_modules/sprintf-js/package.json b/node_modules/sprintf-js/package.json deleted file mode 100644 index f1dfd0e43..000000000 --- a/node_modules/sprintf-js/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "_args": [ - [ - "sprintf-js@1.0.3", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "sprintf-js@1.0.3", - "_id": "sprintf-js@1.0.3", - "_inBundle": false, - "_integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "_location": "/sprintf-js", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "sprintf-js@1.0.3", - "name": "sprintf-js", - "escapedName": "sprintf-js", - "rawSpec": "1.0.3", - "saveSpec": null, - "fetchSpec": "1.0.3" - }, - "_requiredBy": [ - "/argparse" - ], - "_resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "_spec": "1.0.3", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Alexandru Marasteanu", - "email": "hello@alexei.ro", - "url": "http://alexei.ro/" - }, - "bugs": { - "url": "https://github.com/alexei/sprintf.js/issues" - }, - "description": "JavaScript sprintf implementation", - "devDependencies": { - "grunt": "*", - "grunt-contrib-uglify": "*", - "grunt-contrib-watch": "*", - "mocha": "*" - }, - "homepage": "https://github.com/alexei/sprintf.js#readme", - "license": "BSD-3-Clause", - "main": "src/sprintf.js", - "name": "sprintf-js", - "repository": { - "type": "git", - "url": "git+https://github.com/alexei/sprintf.js.git" - }, - "scripts": { - "test": "mocha test/test.js" - }, - "version": "1.0.3" -} diff --git a/node_modules/sprintf-js/src/angular-sprintf.js b/node_modules/sprintf-js/src/angular-sprintf.js deleted file mode 100644 index 9c69123be..000000000 --- a/node_modules/sprintf-js/src/angular-sprintf.js +++ /dev/null @@ -1,18 +0,0 @@ -angular. - module("sprintf", []). - filter("sprintf", function() { - return function() { - return sprintf.apply(null, arguments) - } - }). - filter("fmt", ["$filter", function($filter) { - return $filter("sprintf") - }]). - filter("vsprintf", function() { - return function(format, argv) { - return vsprintf(format, argv) - } - }). - filter("vfmt", ["$filter", function($filter) { - return $filter("vsprintf") - }]) diff --git a/node_modules/sprintf-js/src/sprintf.js b/node_modules/sprintf-js/src/sprintf.js deleted file mode 100644 index c0fc7c08b..000000000 --- a/node_modules/sprintf-js/src/sprintf.js +++ /dev/null @@ -1,208 +0,0 @@ -(function(window) { - var re = { - not_string: /[^s]/, - number: /[diefg]/, - json: /[j]/, - not_json: /[^j]/, - text: /^[^\x25]+/, - modulo: /^\x25{2}/, - placeholder: /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijosuxX])/, - key: /^([a-z_][a-z_\d]*)/i, - key_access: /^\.([a-z_][a-z_\d]*)/i, - index_access: /^\[(\d+)\]/, - sign: /^[\+\-]/ - } - - function sprintf() { - var key = arguments[0], cache = sprintf.cache - if (!(cache[key] && cache.hasOwnProperty(key))) { - cache[key] = sprintf.parse(key) - } - return sprintf.format.call(null, cache[key], arguments) - } - - sprintf.format = function(parse_tree, argv) { - var cursor = 1, tree_length = parse_tree.length, node_type = "", arg, output = [], i, k, match, pad, pad_character, pad_length, is_positive = true, sign = "" - for (i = 0; i < tree_length; i++) { - node_type = get_type(parse_tree[i]) - if (node_type === "string") { - output[output.length] = parse_tree[i] - } - else if (node_type === "array") { - match = parse_tree[i] // convenience purposes only - if (match[2]) { // keyword argument - arg = argv[cursor] - for (k = 0; k < match[2].length; k++) { - if (!arg.hasOwnProperty(match[2][k])) { - throw new Error(sprintf("[sprintf] property '%s' does not exist", match[2][k])) - } - arg = arg[match[2][k]] - } - } - else if (match[1]) { // positional argument (explicit) - arg = argv[match[1]] - } - else { // positional argument (implicit) - arg = argv[cursor++] - } - - if (get_type(arg) == "function") { - arg = arg() - } - - if (re.not_string.test(match[8]) && re.not_json.test(match[8]) && (get_type(arg) != "number" && isNaN(arg))) { - throw new TypeError(sprintf("[sprintf] expecting number but found %s", get_type(arg))) - } - - if (re.number.test(match[8])) { - is_positive = arg >= 0 - } - - switch (match[8]) { - case "b": - arg = arg.toString(2) - break - case "c": - arg = String.fromCharCode(arg) - break - case "d": - case "i": - arg = parseInt(arg, 10) - break - case "j": - arg = JSON.stringify(arg, null, match[6] ? parseInt(match[6]) : 0) - break - case "e": - arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential() - break - case "f": - arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg) - break - case "g": - arg = match[7] ? parseFloat(arg).toPrecision(match[7]) : parseFloat(arg) - break - case "o": - arg = arg.toString(8) - break - case "s": - arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg) - break - case "u": - arg = arg >>> 0 - break - case "x": - arg = arg.toString(16) - break - case "X": - arg = arg.toString(16).toUpperCase() - break - } - if (re.json.test(match[8])) { - output[output.length] = arg - } - else { - if (re.number.test(match[8]) && (!is_positive || match[3])) { - sign = is_positive ? "+" : "-" - arg = arg.toString().replace(re.sign, "") - } - else { - sign = "" - } - pad_character = match[4] ? match[4] === "0" ? "0" : match[4].charAt(1) : " " - pad_length = match[6] - (sign + arg).length - pad = match[6] ? (pad_length > 0 ? str_repeat(pad_character, pad_length) : "") : "" - output[output.length] = match[5] ? sign + arg + pad : (pad_character === "0" ? sign + pad + arg : pad + sign + arg) - } - } - } - return output.join("") - } - - sprintf.cache = {} - - sprintf.parse = function(fmt) { - var _fmt = fmt, match = [], parse_tree = [], arg_names = 0 - while (_fmt) { - if ((match = re.text.exec(_fmt)) !== null) { - parse_tree[parse_tree.length] = match[0] - } - else if ((match = re.modulo.exec(_fmt)) !== null) { - parse_tree[parse_tree.length] = "%" - } - else if ((match = re.placeholder.exec(_fmt)) !== null) { - if (match[2]) { - arg_names |= 1 - var field_list = [], replacement_field = match[2], field_match = [] - if ((field_match = re.key.exec(replacement_field)) !== null) { - field_list[field_list.length] = field_match[1] - while ((replacement_field = replacement_field.substring(field_match[0].length)) !== "") { - if ((field_match = re.key_access.exec(replacement_field)) !== null) { - field_list[field_list.length] = field_match[1] - } - else if ((field_match = re.index_access.exec(replacement_field)) !== null) { - field_list[field_list.length] = field_match[1] - } - else { - throw new SyntaxError("[sprintf] failed to parse named argument key") - } - } - } - else { - throw new SyntaxError("[sprintf] failed to parse named argument key") - } - match[2] = field_list - } - else { - arg_names |= 2 - } - if (arg_names === 3) { - throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported") - } - parse_tree[parse_tree.length] = match - } - else { - throw new SyntaxError("[sprintf] unexpected placeholder") - } - _fmt = _fmt.substring(match[0].length) - } - return parse_tree - } - - var vsprintf = function(fmt, argv, _argv) { - _argv = (argv || []).slice(0) - _argv.splice(0, 0, fmt) - return sprintf.apply(null, _argv) - } - - /** - * helpers - */ - function get_type(variable) { - return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase() - } - - function str_repeat(input, multiplier) { - return Array(multiplier + 1).join(input) - } - - /** - * export to either browser or node.js - */ - if (typeof exports !== "undefined") { - exports.sprintf = sprintf - exports.vsprintf = vsprintf - } - else { - window.sprintf = sprintf - window.vsprintf = vsprintf - - if (typeof define === "function" && define.amd) { - define(function() { - return { - sprintf: sprintf, - vsprintf: vsprintf - } - }) - } - } -})(typeof window === "undefined" ? this : window); diff --git a/node_modules/sprintf-js/test/test.js b/node_modules/sprintf-js/test/test.js deleted file mode 100644 index 6f57b2538..000000000 --- a/node_modules/sprintf-js/test/test.js +++ /dev/null @@ -1,82 +0,0 @@ -var assert = require("assert"), - sprintfjs = require("../src/sprintf.js"), - sprintf = sprintfjs.sprintf, - vsprintf = sprintfjs.vsprintf - -describe("sprintfjs", function() { - var pi = 3.141592653589793 - - it("should return formated strings for simple placeholders", function() { - assert.equal("%", sprintf("%%")) - assert.equal("10", sprintf("%b", 2)) - assert.equal("A", sprintf("%c", 65)) - assert.equal("2", sprintf("%d", 2)) - assert.equal("2", sprintf("%i", 2)) - assert.equal("2", sprintf("%d", "2")) - assert.equal("2", sprintf("%i", "2")) - assert.equal('{"foo":"bar"}', sprintf("%j", {foo: "bar"})) - assert.equal('["foo","bar"]', sprintf("%j", ["foo", "bar"])) - assert.equal("2e+0", sprintf("%e", 2)) - assert.equal("2", sprintf("%u", 2)) - assert.equal("4294967294", sprintf("%u", -2)) - assert.equal("2.2", sprintf("%f", 2.2)) - assert.equal("3.141592653589793", sprintf("%g", pi)) - assert.equal("10", sprintf("%o", 8)) - assert.equal("%s", sprintf("%s", "%s")) - assert.equal("ff", sprintf("%x", 255)) - assert.equal("FF", sprintf("%X", 255)) - assert.equal("Polly wants a cracker", sprintf("%2$s %3$s a %1$s", "cracker", "Polly", "wants")) - assert.equal("Hello world!", sprintf("Hello %(who)s!", {"who": "world"})) - }) - - it("should return formated strings for complex placeholders", function() { - // sign - assert.equal("2", sprintf("%d", 2)) - assert.equal("-2", sprintf("%d", -2)) - assert.equal("+2", sprintf("%+d", 2)) - assert.equal("-2", sprintf("%+d", -2)) - assert.equal("2", sprintf("%i", 2)) - assert.equal("-2", sprintf("%i", -2)) - assert.equal("+2", sprintf("%+i", 2)) - assert.equal("-2", sprintf("%+i", -2)) - assert.equal("2.2", sprintf("%f", 2.2)) - assert.equal("-2.2", sprintf("%f", -2.2)) - assert.equal("+2.2", sprintf("%+f", 2.2)) - assert.equal("-2.2", sprintf("%+f", -2.2)) - assert.equal("-2.3", sprintf("%+.1f", -2.34)) - assert.equal("-0.0", sprintf("%+.1f", -0.01)) - assert.equal("3.14159", sprintf("%.6g", pi)) - assert.equal("3.14", sprintf("%.3g", pi)) - assert.equal("3", sprintf("%.1g", pi)) - assert.equal("-000000123", sprintf("%+010d", -123)) - assert.equal("______-123", sprintf("%+'_10d", -123)) - assert.equal("-234.34 123.2", sprintf("%f %f", -234.34, 123.2)) - - // padding - assert.equal("-0002", sprintf("%05d", -2)) - assert.equal("-0002", sprintf("%05i", -2)) - assert.equal(" <", sprintf("%5s", "<")) - assert.equal("0000<", sprintf("%05s", "<")) - assert.equal("____<", sprintf("%'_5s", "<")) - assert.equal("> ", sprintf("%-5s", ">")) - assert.equal(">0000", sprintf("%0-5s", ">")) - assert.equal(">____", sprintf("%'_-5s", ">")) - assert.equal("xxxxxx", sprintf("%5s", "xxxxxx")) - assert.equal("1234", sprintf("%02u", 1234)) - assert.equal(" -10.235", sprintf("%8.3f", -10.23456)) - assert.equal("-12.34 xxx", sprintf("%f %s", -12.34, "xxx")) - assert.equal('{\n "foo": "bar"\n}', sprintf("%2j", {foo: "bar"})) - assert.equal('[\n "foo",\n "bar"\n]', sprintf("%2j", ["foo", "bar"])) - - // precision - assert.equal("2.3", sprintf("%.1f", 2.345)) - assert.equal("xxxxx", sprintf("%5.5s", "xxxxxx")) - assert.equal(" x", sprintf("%5.1s", "xxxxxx")) - - }) - - it("should return formated strings for callbacks", function() { - assert.equal("foobar", sprintf("%s", function() { return "foobar" })) - assert.equal(Date.now(), sprintf("%s", Date.now)) // should pass... - }) -}) diff --git a/node_modules/static-extend/LICENSE b/node_modules/static-extend/LICENSE deleted file mode 100644 index e28e60323..000000000 --- a/node_modules/static-extend/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/static-extend/index.js b/node_modules/static-extend/index.js deleted file mode 100644 index f4124b2aa..000000000 --- a/node_modules/static-extend/index.js +++ /dev/null @@ -1,90 +0,0 @@ -/*! - * static-extend - * - * Copyright (c) 2016, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var copy = require('object-copy'); -var define = require('define-property'); -var util = require('util'); - -/** - * Returns a function for extending the static properties, - * prototype properties, and descriptors from the `Parent` - * constructor onto `Child` constructors. - * - * ```js - * var extend = require('static-extend'); - * Parent.extend = extend(Parent); - * - * // optionally pass a custom merge function as the second arg - * Parent.extend = extend(Parent, function(Child) { - * Child.prototype.mixin = function(key, val) { - * Child.prototype[key] = val; - * }; - * }); - * - * // extend "child" constructors - * Parent.extend(Child); - * - * // optionally define prototype methods as the second arg - * Parent.extend(Child, { - * foo: function() {}, - * bar: function() {} - * }); - * ``` - * @param {Function} `Parent` Parent ctor - * @param {Function} `extendFn` Optional extend function for handling any necessary custom merging. Useful when updating methods that require a specific prototype. - * @param {Function} `Child` Child ctor - * @param {Object} `proto` Optionally pass additional prototype properties to inherit. - * @return {Object} - * @api public - */ - -function extend(Parent, extendFn) { - if (typeof Parent !== 'function') { - throw new TypeError('expected Parent to be a function.'); - } - - return function(Ctor, proto) { - if (typeof Ctor !== 'function') { - throw new TypeError('expected Ctor to be a function.'); - } - - util.inherits(Ctor, Parent); - copy(Ctor, Parent); - - // proto can be null or a plain object - if (typeof proto === 'object') { - var obj = Object.create(proto); - - for (var k in obj) { - Ctor.prototype[k] = obj[k]; - } - } - - // keep a reference to the parent prototype - define(Ctor.prototype, '_parent_', { - configurable: true, - set: function() {}, - get: function() { - return Parent.prototype; - } - }); - - if (typeof extendFn === 'function') { - extendFn(Ctor, Parent); - } - - Ctor.extend = extend(Ctor, extendFn); - }; -}; - -/** - * Expose `extend` - */ - -module.exports = extend; diff --git a/node_modules/static-extend/node_modules/define-property/LICENSE b/node_modules/static-extend/node_modules/define-property/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/static-extend/node_modules/define-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/static-extend/node_modules/define-property/README.md b/node_modules/static-extend/node_modules/define-property/README.md deleted file mode 100644 index 8cac698ad..000000000 --- a/node_modules/static-extend/node_modules/define-property/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# define-property [![NPM version](https://badge.fury.io/js/define-property.svg)](http://badge.fury.io/js/define-property) - -> Define a non-enumerable property on an object. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i define-property --save -``` - -## Usage - -**Params** - -* `obj`: The object on which to define the property. -* `prop`: The name of the property to be defined or modified. -* `descriptor`: The descriptor for the property being defined or modified. - -```js -var define = require('define-property'); -var obj = {}; -define(obj, 'foo', function(val) { - return val.toUpperCase(); -}); - -console.log(obj); -//=> {} - -console.log(obj.foo('bar')); -//=> 'BAR' -``` - -**get/set** - -```js -define(obj, 'foo', { - get: function() {}, - set: function() {} -}); -``` - -## Related projects - -* [delegate-object](https://www.npmjs.com/package/delegate-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/delegate-object) | [homepage](https://github.com/doowb/delegate-object) -* [forward-object](https://www.npmjs.com/package/forward-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/forward-object) | [homepage](https://github.com/doowb/forward-object) -* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep) -* [mixin-object](https://www.npmjs.com/package/mixin-object): Mixin the own and inherited properties of other objects onto the first object. Pass an… [more](https://www.npmjs.com/package/mixin-object) | [homepage](https://github.com/jonschlinkert/mixin-object) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/define-property/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 31, 2015._ diff --git a/node_modules/static-extend/node_modules/define-property/index.js b/node_modules/static-extend/node_modules/define-property/index.js deleted file mode 100644 index 3e0e5e133..000000000 --- a/node_modules/static-extend/node_modules/define-property/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * define-property - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var isDescriptor = require('is-descriptor'); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; diff --git a/node_modules/static-extend/node_modules/define-property/package.json b/node_modules/static-extend/node_modules/define-property/package.json deleted file mode 100644 index 216328b4c..000000000 --- a/node_modules/static-extend/node_modules/define-property/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_args": [ - [ - "define-property@0.2.5", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "define-property@0.2.5", - "_id": "define-property@0.2.5", - "_inBundle": false, - "_integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "_location": "/static-extend/define-property", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "define-property@0.2.5", - "name": "define-property", - "escapedName": "define-property", - "rawSpec": "0.2.5", - "saveSpec": null, - "fetchSpec": "0.2.5" - }, - "_requiredBy": [ - "/static-extend" - ], - "_resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "_spec": "0.2.5", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/define-property/issues" - }, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "description": "Define a non-enumerable property on an object.", - "devDependencies": { - "mocha": "*", - "should": "^7.0.4" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/define-property", - "keywords": [ - "define", - "define-property", - "enumerable", - "key", - "non", - "non-enumerable", - "object", - "prop", - "property", - "value" - ], - "license": "MIT", - "main": "index.js", - "name": "define-property", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/define-property.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "mixin-deep", - "mixin-object", - "delegate-object", - "forward-object" - ] - } - }, - "version": "0.2.5" -} diff --git a/node_modules/static-extend/package.json b/node_modules/static-extend/package.json deleted file mode 100644 index 8b8ce7a5e..000000000 --- a/node_modules/static-extend/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_args": [ - [ - "static-extend@0.1.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "static-extend@0.1.2", - "_id": "static-extend@0.1.2", - "_inBundle": false, - "_integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "_location": "/static-extend", - "_phantomChildren": { - "is-descriptor": "0.1.6" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "static-extend@0.1.2", - "name": "static-extend", - "escapedName": "static-extend", - "rawSpec": "0.1.2", - "saveSpec": null, - "fetchSpec": "0.1.2" - }, - "_requiredBy": [ - "/class-utils" - ], - "_resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "_spec": "0.1.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/static-extend/issues" - }, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "description": "Adds a static `extend` method to a class, to simplify inheritance. Extends the static properties, prototype properties, and descriptors from a `Parent` constructor onto `Child` constructors.", - "devDependencies": { - "gulp-format-md": "^0.1.9", - "mocha": "^2.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/static-extend", - "keywords": [ - "class", - "ctor", - "descriptor", - "extend", - "extends", - "inherit", - "inheritance", - "merge", - "method", - "prop", - "properties", - "property", - "prototype" - ], - "license": "MIT", - "main": "index.js", - "name": "static-extend", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/static-extend.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "reflinks": [ - "verb", - "verb-readme-generator" - ], - "lint": { - "reflinks": true - } - }, - "version": "0.1.2" -} diff --git a/node_modules/string_decoder/.travis.yml b/node_modules/string_decoder/.travis.yml deleted file mode 100644 index 3347a7254..000000000 --- a/node_modules/string_decoder/.travis.yml +++ /dev/null @@ -1,50 +0,0 @@ -sudo: false -language: node_js -before_install: - - npm install -g npm@2 - - test $NPM_LEGACY && npm install -g npm@latest-3 || npm install npm -g -notifications: - email: false -matrix: - fast_finish: true - include: - - node_js: '0.8' - env: - - TASK=test - - NPM_LEGACY=true - - node_js: '0.10' - env: - - TASK=test - - NPM_LEGACY=true - - node_js: '0.11' - env: - - TASK=test - - NPM_LEGACY=true - - node_js: '0.12' - env: - - TASK=test - - NPM_LEGACY=true - - node_js: 1 - env: - - TASK=test - - NPM_LEGACY=true - - node_js: 2 - env: - - TASK=test - - NPM_LEGACY=true - - node_js: 3 - env: - - TASK=test - - NPM_LEGACY=true - - node_js: 4 - env: TASK=test - - node_js: 5 - env: TASK=test - - node_js: 6 - env: TASK=test - - node_js: 7 - env: TASK=test - - node_js: 8 - env: TASK=test - - node_js: 9 - env: TASK=test diff --git a/node_modules/string_decoder/LICENSE b/node_modules/string_decoder/LICENSE deleted file mode 100644 index 778edb207..000000000 --- a/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,48 +0,0 @@ -Node.js is licensed for use as follows: - -""" -Copyright Node.js contributors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - -This license applies to parts of Node.js originating from the -https://github.com/joyent/node repository: - -""" -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - diff --git a/node_modules/string_decoder/README.md b/node_modules/string_decoder/README.md deleted file mode 100644 index 5fd58315e..000000000 --- a/node_modules/string_decoder/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# string_decoder - -***Node-core v8.9.4 string_decoder for userland*** - - -[![NPM](https://nodei.co/npm/string_decoder.png?downloads=true&downloadRank=true)](https://nodei.co/npm/string_decoder/) -[![NPM](https://nodei.co/npm-dl/string_decoder.png?&months=6&height=3)](https://nodei.co/npm/string_decoder/) - - -```bash -npm install --save string_decoder -``` - -***Node-core string_decoder for userland*** - -This package is a mirror of the string_decoder implementation in Node-core. - -Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.9.4/docs/api/). - -As of version 1.0.0 **string_decoder** uses semantic versioning. - -## Previous versions - -Previous version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. - -## Update - -The *build/* directory contains a build script that will scrape the source from the [nodejs/node](https://github.com/nodejs/node) repo given a specific Node version. - -## Streams Working Group - -`string_decoder` is maintained by the Streams Working Group, which -oversees the development and maintenance of the Streams API within -Node.js. The responsibilities of the Streams Working Group include: - -* Addressing stream issues on the Node.js issue tracker. -* Authoring and editing stream documentation within the Node.js project. -* Reviewing changes to stream subclasses within the Node.js project. -* Redirecting changes to streams from the Node.js project to this - project. -* Assisting in the implementation of stream providers within Node.js. -* Recommending versions of `readable-stream` to be included in Node.js. -* Messaging about the future of streams to give the community advance - notice of changes. - -See [readable-stream](https://github.com/nodejs/readable-stream) for -more details. diff --git a/node_modules/string_decoder/lib/string_decoder.js b/node_modules/string_decoder/lib/string_decoder.js deleted file mode 100644 index 2e89e63f7..000000000 --- a/node_modules/string_decoder/lib/string_decoder.js +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -/**/ - -var Buffer = require('safe-buffer').Buffer; -/**/ - -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': - return true; - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -}; - -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.StringDecoder = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} - -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; - -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. -function utf8CheckByte(byte) { - if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; - return byte >> 6 === 0x02 ? -1 : -2; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; -} - -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'; - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'; - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'; - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character is added when ending on a partial -// character. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'; - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} - -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} \ No newline at end of file diff --git a/node_modules/string_decoder/package.json b/node_modules/string_decoder/package.json deleted file mode 100644 index c37b3782b..000000000 --- a/node_modules/string_decoder/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "_from": "string_decoder@~1.1.1", - "_id": "string_decoder@1.1.1", - "_inBundle": false, - "_integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "_location": "/string_decoder", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "string_decoder@~1.1.1", - "name": "string_decoder", - "escapedName": "string_decoder", - "rawSpec": "~1.1.1", - "saveSpec": null, - "fetchSpec": "~1.1.1" - }, - "_requiredBy": [ - "/readable-stream" - ], - "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "_shasum": "9cf1611ba62685d7030ae9e4ba34149c3af03fc8", - "_spec": "string_decoder@~1.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\readable-stream", - "bugs": { - "url": "https://github.com/nodejs/string_decoder/issues" - }, - "bundleDependencies": false, - "dependencies": { - "safe-buffer": "~5.1.0" - }, - "deprecated": false, - "description": "The string_decoder module from Node core", - "devDependencies": { - "babel-polyfill": "^6.23.0", - "core-util-is": "^1.0.2", - "inherits": "^2.0.3", - "tap": "~0.4.8" - }, - "homepage": "https://github.com/nodejs/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "main": "lib/string_decoder.js", - "name": "string_decoder", - "repository": { - "type": "git", - "url": "git://github.com/nodejs/string_decoder.git" - }, - "scripts": { - "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js", - "test": "tap test/parallel/*.js && node test/verify-dependencies" - }, - "version": "1.1.1" -} diff --git a/node_modules/striptags/.npmignore b/node_modules/striptags/.npmignore deleted file mode 100644 index 25fbf5a1c..000000000 --- a/node_modules/striptags/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -coverage/ diff --git a/node_modules/striptags/.travis.yml b/node_modules/striptags/.travis.yml deleted file mode 100644 index de77c447e..000000000 --- a/node_modules/striptags/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -node_js: - - "node" - - "4" - - "5" - - "6" -sudo: false diff --git a/node_modules/striptags/LICENSE b/node_modules/striptags/LICENSE deleted file mode 100644 index 9cfc1ceb9..000000000 --- a/node_modules/striptags/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) [2017] [Eric Norris] - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/striptags/README.md b/node_modules/striptags/README.md deleted file mode 100644 index 6fe8fbb27..000000000 --- a/node_modules/striptags/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# striptags [![Build Status](https://travis-ci.org/ericnorris/striptags.svg)](https://travis-ci.org/ericnorris/striptags) -An implementation of PHP's [strip_tags](http://www.php.net/manual/en/function.strip-tags.php) in Node.js. - -**Note:** `v3+` targets ES6, and is therefore incompatible with the master branch of `uglifyjs`. You can either: -- use `babili`, which supports ES6 -- use the `harmony` branch of `uglifyjs` -- stick with the [2.x.x](https://github.com/ericnorris/striptags/tree/v2.x.x) branch - -## Features -- Fast -- Zero dependencies -- 100% test code coverage -- No unsafe regular expressions - -## Installing -``` -npm install striptags -``` - -## Basic Usage -```javascript -striptags(html, allowed_tags, tag_replacement); -``` - -### Example -```javascript -var striptags = require('striptags'); - -var html = - '' + - 'lorem ipsum dolor sit amet' + - ''; - -striptags(html); -striptags(html, ''); -striptags(html, ['a']); -striptags(html, [], '\n'); -``` - -Outputs: -``` -'lorem ipsum dolor sit amet' -``` - -``` -lorem ipsum dolor sit amet' -``` - -``` -'lorem ipsum dolor sit amet' -``` - -``` - -lorem ipsum -dolor - sit amet -``` - -## Streaming Mode -`striptags` can also operate in streaming mode. Simply call `init_streaming_mode` to get back a function that accepts HTML and outputs stripped HTML. State is saved between calls so that partial HTML can be safely passed in. - -```javascript -let stream_function = striptags.init_streaming_mode( - allowed_tags, - tag_replacement -); - -let partial_text = stream_function(partial_html); -let more_text = stream_function(more_html); -``` - -Check out [test/striptags-test.js](test/striptags-test.js) for a concrete example. - -## Tests -You can run tests (powered by [mocha](http://mochajs.org/)) locally via: -``` -npm test -``` - -Generate test coverage (powered by [istanbul](https://github.com/gotwarlost/istanbul)) via : -``` -npm run coverage -``` - - -## Doesn't use regular expressions -`striptags` does not use any regular expressions for stripping HTML tags. - -Regular expressions are not capable of preventing all possible scripting attacks (see [this](http://stackoverflow.com/a/535022)). Here is a [great StackOverflow answer](http://stackoverflow.com/a/5793453) regarding how strip_tags (**when used without specifying allowableTags**) is not vulnerable to scripting attacks. diff --git a/node_modules/striptags/bower.json b/node_modules/striptags/bower.json deleted file mode 100644 index 8a3fc3edb..000000000 --- a/node_modules/striptags/bower.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "striptags", - "description": "PHP strip_tags in Node.js", - "main": "striptags.js", - "authors": [ - "Eric Norris (https://github.com/ericnorris)" - ], - "license": "MIT", - "keywords": [ - "striptags", - "strip_tags", - "html", - "strip", - "tags" - ], - "homepage": "https://github.com/ericnorris/striptags", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/node_modules/striptags/index.d.ts b/node_modules/striptags/index.d.ts deleted file mode 100644 index d5dc3a69a..000000000 --- a/node_modules/striptags/index.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -export as namespace striptags - -export = striptags - -/** - * Creates an array of elements split into groups the length of size. If collection can’t be split evenly, the - * final chunk will be the remaining elements. - * - * @param html The text to process. - * @param allowedTags Tags which aren't removed - * @param tagReplacement Removed tags are replaced with this - * @return Returns the input string, sans any html tags that weren't allowed - */ -declare function striptags( - html: string, - allowedTags?: string | string[], - tagReplacement?: string -): string - -declare namespace striptags { - export const init_streaming_mode: ( - allowedTags?: string | string[], - tagReplacement?: string - ) => (html: string) => string -} diff --git a/node_modules/striptags/package.json b/node_modules/striptags/package.json deleted file mode 100644 index f65e4f105..000000000 --- a/node_modules/striptags/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "_from": "striptags@^3.1.0", - "_id": "striptags@3.1.1", - "_inBundle": false, - "_integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=", - "_location": "/striptags", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "striptags@^3.1.0", - "name": "striptags", - "escapedName": "striptags", - "rawSpec": "^3.1.0", - "saveSpec": null, - "fetchSpec": "^3.1.0" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz", - "_shasum": "c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd", - "_spec": "striptags@^3.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Eric Norris", - "url": "https://github.com/ericnorris" - }, - "bugs": { - "url": "https://github.com/ericnorris/striptags/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "PHP strip_tags in Node.js", - "devDependencies": { - "istanbul": "^0.4.5", - "mocha": "^3.2.0" - }, - "homepage": "https://github.com/ericnorris/striptags", - "keywords": [ - "striptags", - "strip_tags", - "html", - "strip", - "tags" - ], - "license": "MIT", - "main": "src/striptags.js", - "name": "striptags", - "repository": { - "type": "git", - "url": "git+https://github.com/ericnorris/striptags.git" - }, - "scripts": { - "coverage": "istanbul cover _mocha -- -R spec", - "test": "mocha" - }, - "typings": "index.d.ts", - "version": "3.1.1" -} diff --git a/node_modules/striptags/src/striptags.js b/node_modules/striptags/src/striptags.js deleted file mode 100644 index 9d39698d4..000000000 --- a/node_modules/striptags/src/striptags.js +++ /dev/null @@ -1,235 +0,0 @@ -'use strict'; - -(function (global) { - - // minimal symbol polyfill for IE11 and others - if (typeof Symbol !== 'function') { - var Symbol = function(name) { - return name; - } - - Symbol.nonNative = true; - } - - const STATE_PLAINTEXT = Symbol('plaintext'); - const STATE_HTML = Symbol('html'); - const STATE_COMMENT = Symbol('comment'); - - const ALLOWED_TAGS_REGEX = /<(\w*)>/g; - const NORMALIZE_TAG_REGEX = /<\/?([^\s\/>]+)/; - - function striptags(html, allowable_tags, tag_replacement) { - html = html || ''; - allowable_tags = allowable_tags || []; - tag_replacement = tag_replacement || ''; - - let context = init_context(allowable_tags, tag_replacement); - - return striptags_internal(html, context); - } - - function init_striptags_stream(allowable_tags, tag_replacement) { - allowable_tags = allowable_tags || []; - tag_replacement = tag_replacement || ''; - - let context = init_context(allowable_tags, tag_replacement); - - return function striptags_stream(html) { - return striptags_internal(html || '', context); - }; - } - - striptags.init_streaming_mode = init_striptags_stream; - - function init_context(allowable_tags, tag_replacement) { - allowable_tags = parse_allowable_tags(allowable_tags); - - return { - allowable_tags : allowable_tags, - tag_replacement: tag_replacement, - - state : STATE_PLAINTEXT, - tag_buffer : '', - depth : 0, - in_quote_char : '' - }; - } - - function striptags_internal(html, context) { - let allowable_tags = context.allowable_tags; - let tag_replacement = context.tag_replacement; - - let state = context.state; - let tag_buffer = context.tag_buffer; - let depth = context.depth; - let in_quote_char = context.in_quote_char; - let output = ''; - - for (let idx = 0, length = html.length; idx < length; idx++) { - let char = html[idx]; - - if (state === STATE_PLAINTEXT) { - switch (char) { - case '<': - state = STATE_HTML; - tag_buffer += char; - break; - - default: - output += char; - break; - } - } - - else if (state === STATE_HTML) { - switch (char) { - case '<': - // ignore '<' if inside a quote - if (in_quote_char) { - break; - } - - // we're seeing a nested '<' - depth++; - break; - - case '>': - // ignore '>' if inside a quote - if (in_quote_char) { - break; - } - - // something like this is happening: '<<>>' - if (depth) { - depth--; - - break; - } - - // this is closing the tag in tag_buffer - in_quote_char = ''; - state = STATE_PLAINTEXT; - tag_buffer += '>'; - - if (allowable_tags.has(normalize_tag(tag_buffer))) { - output += tag_buffer; - } else { - output += tag_replacement; - } - - tag_buffer = ''; - break; - - case '"': - case '\'': - // catch both single and double quotes - - if (char === in_quote_char) { - in_quote_char = ''; - } else { - in_quote_char = in_quote_char || char; - } - - tag_buffer += char; - break; - - case '-': - if (tag_buffer === '': - if (tag_buffer.slice(-2) == '--') { - // close the comment - state = STATE_PLAINTEXT; - } - - tag_buffer = ''; - break; - - default: - tag_buffer += char; - break; - } - } - } - - // save the context for future iterations - context.state = state; - context.tag_buffer = tag_buffer; - context.depth = depth; - context.in_quote_char = in_quote_char; - - return output; - } - - function parse_allowable_tags(allowable_tags) { - let tag_set = new Set(); - - if (typeof allowable_tags === 'string') { - let match; - - while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) { - tag_set.add(match[1]); - } - } - - else if (!Symbol.nonNative && - typeof allowable_tags[Symbol.iterator] === 'function') { - - tag_set = new Set(allowable_tags); - } - - else if (typeof allowable_tags.forEach === 'function') { - // IE11 compatible - allowable_tags.forEach(tag_set.add, tag_set); - } - - return tag_set; - } - - function normalize_tag(tag_buffer) { - let match = NORMALIZE_TAG_REGEX.exec(tag_buffer); - - return match ? match[1].toLowerCase() : null; - } - - if (typeof define === 'function' && define.amd) { - // AMD - define(function module_factory() { return striptags; }); - } - - else if (typeof module === 'object' && module.exports) { - // Node - module.exports = striptags; - } - - else { - // Browser - global.striptags = striptags; - } -}(this)); diff --git a/node_modules/striptags/test/striptags-test.js b/node_modules/striptags/test/striptags-test.js deleted file mode 100644 index ebe8bce77..000000000 --- a/node_modules/striptags/test/striptags-test.js +++ /dev/null @@ -1,160 +0,0 @@ -'use strict'; -/* global describe, it */ - -let assert = require('assert'); -let fs = require('fs'); -let vm = require('vm'); -let striptags = require('../'); - - -describe('striptags', function() { - describe('#module', function() { - let path = require.resolve('../'); - let src = fs.readFileSync(path); - let script = new vm.Script(src); - - it('should define a Node module', function() { - let module = { exports: {} }; - - script.runInNewContext({module}); - - assert.equal(module.exports.toString(), striptags.toString()); - }); - - it('should define an AMD module', function() { - let module = null; - let define = function(module_factory) { - module = module_factory(); - }; - - define.amd = true; - - script.runInNewContext({define}); - - assert.equal(module.toString(), striptags.toString()); - }); - - it('should define a browser global', function() { - let global = {}; - - script.runInNewContext(global); - - assert.notEqual(global.striptags, null); - }); - }); - - describe('with no optional parameters', function() { - it('should not strip invalid tags', function() { - let text = 'lorem ipsum < a> < div>'; - - assert.equal(striptags(text), text); - }); - - it('should remove simple HTML tags', function() { - let html = 'lorem ipsum', - text = 'lorem ipsum'; - - assert.equal(striptags(html), text); - }); - - it('should remove comments', function() { - let html = ' dolor sit amet', - text = ' dolor sit amet'; - - assert.equal(striptags(html), text); - }); - - it('should strip tags within comments', function() { - let html = ' dolor sit', - text = ' dolor sit'; - - assert.equal(striptags(html), text); - }); - - - it('should not fail with nested quotes', function() { - let html = '
          lorem
          ipsum', - text = 'lorem ipsum'; - - assert.equal(striptags(html), text); - }); - }); - - describe('#allowed_tags', function() { - it('should parse a string', function() { - let html = 'lorem ipsum', - allowed_tags = ''; - - assert.equal(striptags(html, allowed_tags), html); - }); - - it('should take an array', function() { - let html = 'lorem ipsum', - allowed_tags = ['strong', 'em']; - - assert.equal(striptags(html, allowed_tags), html); - }); - }); - - describe('with allowable_tags parameter', function() { - it('should leave attributes when allowing HTML', function() { - let html = 'lorem ipsum', - allowed_tags = ''; - - assert.equal(striptags(html, allowed_tags), html); - }); - - it('should strip extra < within tags', function() { - let html = '>lorem ipsum', - text = '
          lorem ipsum
          ', - allowed_tags = '
          '; - - assert.equal(striptags(html, allowed_tags), text); - }); - - it('should strip <> within quotes', function() { - let html = 'lorem ipsum', - text = 'lorem ipsum', - allowed_tags = ''; - - assert.equal(striptags(html, allowed_tags), text); - }); - }); - - describe('with tag_replacement parameter', function() { - it('should replace tags with that parameter', function() { - var html = 'Line One
          Line Two', - allowed_tags = [], - tag_replacement = '\n', - text = 'Line One\nLine Two'; - - assert.equal(striptags(html, allowed_tags, tag_replacement), text); - }); - }); - - describe('#streaming_mode', function() { - it('should strip streamed HTML', function() { - let striptags_stream = striptags.init_streaming_mode(); - - let part_one = striptags_stream('lorem ipsum dolor sit <'); - let part_three = striptags_stream(' amet'); - - assert.equal(part_one, 'lorem ipsum '); - assert.equal(part_two, 'dolor sit '); - assert.equal(part_three, '< amet'); - }); - - it('should work with allowable_tags', function() { - let striptags_stream = striptags.init_streaming_mode(['strong']); - - let part_one = striptags_stream('lorem ipsum dolor sit <'); - let part_three = striptags_stream(' amet'); - - assert.equal(part_one, 'lorem ipsum '); - assert.equal(part_two, 'dolor sit '); - assert.equal(part_three, '< amet'); - }); - }); -}); diff --git a/node_modules/success-symbol/LICENSE b/node_modules/success-symbol/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/success-symbol/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/success-symbol/README.md b/node_modules/success-symbol/README.md deleted file mode 100644 index fbc558c46..000000000 --- a/node_modules/success-symbol/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# success-symbol [![NPM version](https://badge.fury.io/js/success-symbol.svg)](http://badge.fury.io/js/success-symbol) - -> Cross-platform success symbol. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i success-symbol --save -``` - -## Usage - -```js -var success = require('success-symbol'); -``` - -## Related projects - -* [success-symbol](https://github.com/jonschlinkert/success-symbol) -* [warning-symbol](https://github.com/jonschlinkert/warning-symbol) -* [error-symbol](https://github.com/jonschlinkert/error-symbol) -* [info-symbol](https://github.com/jonschlinkert/info-symbol) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/success-symbol/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 27, 2015._ \ No newline at end of file diff --git a/node_modules/success-symbol/index.js b/node_modules/success-symbol/index.js deleted file mode 100644 index 49e89d5a4..000000000 --- a/node_modules/success-symbol/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = process.platform === 'win32' ? '√' : '✔'; diff --git a/node_modules/success-symbol/package.json b/node_modules/success-symbol/package.json deleted file mode 100644 index 72bcae2cf..000000000 --- a/node_modules/success-symbol/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_from": "success-symbol@^0.1.0", - "_id": "success-symbol@0.1.0", - "_inBundle": false, - "_integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc=", - "_location": "/success-symbol", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "success-symbol@^0.1.0", - "name": "success-symbol", - "escapedName": "success-symbol", - "rawSpec": "^0.1.0", - "saveSpec": null, - "fetchSpec": "^0.1.0" - }, - "_requiredBy": [ - "/log-ok", - "/log-utils" - ], - "_resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", - "_shasum": "24022e486f3bf1cdca094283b769c472d3b72897", - "_spec": "success-symbol@^0.1.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/success-symbol/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Cross-platform success symbol.", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/success-symbol", - "keywords": [ - "success", - "256", - "ansi", - "cli", - "symbol", - "symbols", - "colour", - "command", - "command-line", - "console", - "format", - "formatting", - "iterm", - "log", - "logging", - "rgb", - "shell", - "string", - "style", - "styles", - "styling", - "terminal", - "text", - "tty", - "xterm" - ], - "license": "MIT", - "main": "index.js", - "name": "success-symbol", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/success-symbol.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.0" -} diff --git a/node_modules/through2/LICENSE.md b/node_modules/through2/LICENSE.md deleted file mode 100644 index a2429b638..000000000 --- a/node_modules/through2/LICENSE.md +++ /dev/null @@ -1,9 +0,0 @@ -# The MIT License (MIT) - -**Copyright (c) Rod Vagg (the "Original Author") and additional contributors** - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/through2/README.md b/node_modules/through2/README.md deleted file mode 100644 index b5e44c7b1..000000000 --- a/node_modules/through2/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# through2 - -[![NPM](https://nodei.co/npm/through2.png?downloads&downloadRank)](https://nodei.co/npm/through2/) - -**A tiny wrapper around Node streams.Transform (Streams2/3) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -Note: As 2.x.x this module starts using **Streams3** instead of Stream2. To continue using a Streams2 version use `npm install through2@0` to fetch the latest version of 0.x.x. More information about Streams2 vs Streams3 and recommendations see the article **[Why I don't use Node's core 'stream' module](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html)**. - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - })) - .pipe(fs.createWriteStream('out.txt')) - .on('finish', () => doSomethingSpecial()) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - this.push(data) - - callback() - })) - .on('data', (data) => { - all.push(data) - }) - .on('end', () => { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -through2([ options, ] [ transformFunction ] [, flushFunction ]) - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, - (chunk, enc, cb) => { - cb(null, 'wut?') // note we can use the second argument on the callback - // to provide data as an alternative to this.push('wut?') - } - ) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -Alternatively, you may use `callback(err, chunk)` as shorthand for emitting a single chunk or an error. - -If you **do not provide a `transformFunction`** then you will get a simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2( - (chunk, enc, cb) => cb(null, chunk), // transform is a noop - function (cb) { // flush function - this.push('tacking on an extra buffer to the end'); - cb(); - } - )) - .pipe(fs.createWriteStream('/tmp/wut.txt')); -``` - -through2.ctor([ options, ] transformFunction[, flushFunction ]) - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit == "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## See Also - - - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams. - - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams. - - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams. - - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies. - - the [mississippi stream utility collection](https://github.com/maxogden/mississippi) includes `through2` as well as many more useful stream modules similar to this one - -## License - -**through2** is Copyright (c) Rod Vagg [@rvagg](https://twitter.com/rvagg) and additional contributors and licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/node_modules/through2/package.json b/node_modules/through2/package.json deleted file mode 100644 index d08dedac7..000000000 --- a/node_modules/through2/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "_from": "through2@^2.0.0", - "_id": "through2@2.0.5", - "_inBundle": false, - "_integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "_location": "/through2", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "through2@^2.0.0", - "name": "through2", - "escapedName": "through2", - "rawSpec": "^2.0.0", - "saveSpec": null, - "fetchSpec": "^2.0.0" - }, - "_requiredBy": [ - "/gulp-header" - ], - "_resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "_shasum": "01c1e39eb31d07cb7d03a96a70823260b23132cd", - "_spec": "through2@^2.0.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\gulp-header", - "author": { - "name": "Rod Vagg", - "email": "r@va.gg", - "url": "https://github.com/rvagg" - }, - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "bundleDependencies": false, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - }, - "deprecated": false, - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "devDependencies": { - "bl": "~2.0.1", - "faucet": "0.0.1", - "nyc": "~13.1.0", - "safe-buffer": "~5.1.2", - "stream-spigot": "~3.0.6", - "tape": "~4.9.1" - }, - "homepage": "https://github.com/rvagg/through2#readme", - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "license": "MIT", - "main": "through2.js", - "name": "through2", - "repository": { - "type": "git", - "url": "git+https://github.com/rvagg/through2.git" - }, - "scripts": { - "test": "node test/test.js | faucet" - }, - "version": "2.0.5" -} diff --git a/node_modules/through2/through2.js b/node_modules/through2/through2.js deleted file mode 100644 index 6baa6a1e8..000000000 --- a/node_modules/through2/through2.js +++ /dev/null @@ -1,96 +0,0 @@ -var Transform = require('readable-stream').Transform - , inherits = require('util').inherits - , xtend = require('xtend') - -function DestroyableTransform(opts) { - Transform.call(this, opts) - this._destroyed = false -} - -inherits(DestroyableTransform, Transform) - -DestroyableTransform.prototype.destroy = function(err) { - if (this._destroyed) return - this._destroyed = true - - var self = this - process.nextTick(function() { - if (err) - self.emit('error', err) - self.emit('close') - }) -} - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - DestroyableTransform.call(this, this.options) - } - - inherits(Through2, DestroyableTransform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/node_modules/time-stamp/LICENSE b/node_modules/time-stamp/LICENSE deleted file mode 100644 index 83b56e709..000000000 --- a/node_modules/time-stamp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/time-stamp/README.md b/node_modules/time-stamp/README.md deleted file mode 100644 index a12d3e15b..000000000 --- a/node_modules/time-stamp/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# time-stamp [![NPM version](https://img.shields.io/npm/v/time-stamp.svg?style=flat)](https://www.npmjs.com/package/time-stamp) [![NPM monthly downloads](https://img.shields.io/npm/dm/time-stamp.svg?style=flat)](https://npmjs.org/package/time-stamp) [![NPM total downloads](https://img.shields.io/npm/dt/time-stamp.svg?style=flat)](https://npmjs.org/package/time-stamp) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/time-stamp.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/time-stamp) - -> Get a formatted timestamp. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save time-stamp -``` - -## Usage - -```js -var timestamp = require('time-stamp'); - -timestamp(); -//=> 2017:05:14 - -timestamp('YYYYMMDD'); -//=> 20170514 - -timestamp('YYYYMMDD:ss'); -//=> 20170514:26 - -timestamp('YYYY/MM/DD:mm:ss'); -//=> 2017/05/14:52:26 - -timestamp('YYYY:MM:DD'); -//=> 2017:05:14 - -timestamp('[YYYY:MM:DD]'); -//=> [2017:05:14] - -timestamp('YYYY/MM/DD'); -//=> 2017/05/14 - -timestamp('YYYY:MM'); -//=> 2017:05 - -timestamp('YYYY'); -//=> 2017 - -timestamp('MM'); -//=> 05 - -timestamp('DD'); -//=> 14 - -timestamp('HH'); -//=> 20 - -timestamp('mm'); -//=> 52 - -timestamp('ss'); -//=> 26 - -timestamp('ms'); -//=> 481 -``` - -**Valid patterns** - -* `YYYY`: full year (ex: **2017**) -* `MM`: month (ex: **04**) -* `DD`: day (ex: **01**) -* `HH`: hours (ex: **12**) -* `mm`: minutes (ex: **59**) -* `ss`: seconds (ex: **09**) -* `ms`: milliseconds (ex: **532**) - -## About - -### Related projects - -* [days](https://www.npmjs.com/package/days): Days of the week. | [homepage](https://github.com/jonschlinkert/days "Days of the week.") -* [iso-week](https://www.npmjs.com/package/iso-week): Get the ISO week of the year. | [homepage](https://github.com/jonschlinkert/iso-week "Get the ISO week of the year.") -* [month](https://www.npmjs.com/package/month): Get the name or number of the current month or any month of the year. | [homepage](https://github.com/datetime/month "Get the name or number of the current month or any month of the year.") -* [months](https://www.npmjs.com/package/months): Months of the year. | [homepage](https://github.com/jonschlinkert/months "Months of the year.") -* [o-clock](https://www.npmjs.com/package/o-clock): Simple javascript utility for displaying the time in 12-hour clock format. | [homepage](https://github.com/jonschlinkert/o-clock "Simple javascript utility for displaying the time in 12-hour clock format.") -* [seconds](https://www.npmjs.com/package/seconds): Get the number of seconds for a minute, hour, day and week. | [homepage](https://github.com/jonschlinkert/seconds "Get the number of seconds for a minute, hour, day and week.") -* [week](https://www.npmjs.com/package/week): Get the current week number. | [homepage](https://github.com/datetime/week "Get the current week number.") -* [weekday](https://www.npmjs.com/package/weekday): Get the name and number of the current weekday. Or get the name of the… [more](https://github.com/datetime/weekday) | [homepage](https://github.com/datetime/weekday "Get the name and number of the current weekday. Or get the name of the weekday for a given number.") -* [year](https://www.npmjs.com/package/year): Simple utility to get the current year with 2 or 4 digits. | [homepage](https://github.com/jonschlinkert/year "Simple utility to get the current year with 2 or 4 digits.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 21 | [jonschlinkert](https://github.com/jonschlinkert) | -| 1 | [evocateur](https://github.com/evocateur) | -| 1 | [mendenhallmagic](https://github.com/mendenhallmagic) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 14, 2017._ \ No newline at end of file diff --git a/node_modules/time-stamp/index.js b/node_modules/time-stamp/index.js deleted file mode 100644 index 0c9304825..000000000 --- a/node_modules/time-stamp/index.js +++ /dev/null @@ -1,56 +0,0 @@ -/*! - * time-stamp - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -/** - * Parse the given pattern and return a formatted - * timestamp. - * - * @param {String} `pattern` Date pattern. - * @param {Date} `date` Date object. - * @return {String} - */ - -module.exports = function(pattern, date) { - if (typeof pattern !== 'string') { - date = pattern; - pattern = 'YYYY:MM:DD'; - } - - if (!date) date = new Date(); - - function timestamp() { - var regex = /(?=(YYYY|YY|MM|DD|HH|mm|ss|ms))\1([:\/]*)/; - var match = regex.exec(pattern); - - if (match) { - var increment = method(match[1]); - var val = '00' + String(date[increment[0]]() + (increment[2] || 0)); - var res = val.slice(-increment[1]) + (match[2] || ''); - pattern = pattern.replace(match[0], res); - timestamp(); - } - } - - timestamp(pattern); - return pattern; -}; - -function method(key) { - return ({ - YYYY: ['getFullYear', 4], - YY: ['getFullYear', 2], - // getMonth is zero-based, thus the extra increment field - MM: ['getMonth', 2, 1], - DD: ['getDate', 2], - HH: ['getHours', 2], - mm: ['getMinutes', 2], - ss: ['getSeconds', 2], - ms: ['getMilliseconds', 3] - })[key]; -} diff --git a/node_modules/time-stamp/package.json b/node_modules/time-stamp/package.json deleted file mode 100644 index d077e19f4..000000000 --- a/node_modules/time-stamp/package.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "_from": "time-stamp@^1.0.1", - "_id": "time-stamp@1.1.0", - "_inBundle": false, - "_integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "_location": "/time-stamp", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "time-stamp@^1.0.1", - "name": "time-stamp", - "escapedName": "time-stamp", - "rawSpec": "^1.0.1", - "saveSpec": null, - "fetchSpec": "^1.0.1" - }, - "_requiredBy": [ - "/log-utils" - ], - "_resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "_shasum": "764a5a11af50561921b133f3b44e618687e0f5c3", - "_spec": "time-stamp@^1.0.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\log-utils", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/time-stamp/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Daniel Stockman", - "url": "http://evocateur.org" - }, - { - "name": "Drew", - "url": "https://github.com/mendenhallmagic" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - } - ], - "deprecated": false, - "description": "Get a formatted timestamp.", - "devDependencies": { - "gulp-format-md": "^0.1.12", - "mocha": "^3.4.1", - "pad-left": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/time-stamp", - "keywords": [ - "console", - "date", - "format", - "formatting", - "log", - "pretty", - "stamp", - "terminal", - "time", - "time-stamp" - ], - "license": "MIT", - "main": "index.js", - "name": "time-stamp", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/time-stamp.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "run": true, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "helpers": { - "timestamp": "./index.js" - }, - "related": { - "list": [ - "days", - "iso-week", - "month", - "months", - "o-clock", - "seconds", - "week", - "weekday", - "year" - ] - }, - "reflinks": [ - "verb" - ], - "lint": { - "reflinks": true - } - }, - "version": "1.1.0" -} diff --git a/node_modules/to-gfm-code-block/LICENSE b/node_modules/to-gfm-code-block/LICENSE deleted file mode 100644 index 65f90aca8..000000000 --- a/node_modules/to-gfm-code-block/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/to-gfm-code-block/README.md b/node_modules/to-gfm-code-block/README.md deleted file mode 100644 index e427498e2..000000000 --- a/node_modules/to-gfm-code-block/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# to-gfm-code-block [![NPM version](https://badge.fury.io/js/to-gfm-code-block.svg)](http://badge.fury.io/js/to-gfm-code-block) [![Build Status](https://travis-ci.org/jonschlinkert/to-gfm-code-block.svg)](https://travis-ci.org/jonschlinkert/to-gfm-code-block) - -> Generate a github-flavored-markdown fenced-code-block snippet. - -Install with [npm](https://www.npmjs.com/) - -```bash -npm i to-gfm-code-block --save -``` - -## Usage - -```js -var mdpre = require('to-gfm-code-block'); -mdpre('var foo = bar;', 'js'); -``` - -Results in: - -
          -
          -```js
          -var foo = bar;
          -```
          -
          -
          - -## Related projects - -* [markdown-utils](https://github.com/jonschlinkert/markdown-utils): Micro-utils for creating markdown snippets. -* [remarkable](https://github.com/jonschlinkert/remarkable): Markdown parser, done right. 100% Commonmark support, extensions, syntax plugins, high speed - all in… [more](https://github.com/jonschlinkert/remarkable) - -## Running tests - -Install dev dependencies: - -```bash -npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/to-gfm-code-block/issues/new) - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright (c) 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 14, 2015._ - - \ No newline at end of file diff --git a/node_modules/to-gfm-code-block/index.js b/node_modules/to-gfm-code-block/index.js deleted file mode 100644 index 9216bb322..000000000 --- a/node_modules/to-gfm-code-block/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * to-gfm-code-block - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -module.exports = function pre(str, lang) { - if (typeof str !== 'string') { - throw new TypeError('markdown-pre expects a string.'); - } - - var code = ''; - code += '```' + (typeof lang === 'string' ? lang : ''); - code += '\n'; - code += str; - code += '\n'; - code += '```'; - return code; -}; diff --git a/node_modules/to-gfm-code-block/package.json b/node_modules/to-gfm-code-block/package.json deleted file mode 100644 index 9b7bd927f..000000000 --- a/node_modules/to-gfm-code-block/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "_from": "to-gfm-code-block@^0.1.1", - "_id": "to-gfm-code-block@0.1.1", - "_inBundle": false, - "_integrity": "sha1-JdBFpfrlUxielje1kJANpzLYqoI=", - "_location": "/to-gfm-code-block", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "to-gfm-code-block@^0.1.1", - "name": "to-gfm-code-block", - "escapedName": "to-gfm-code-block", - "rawSpec": "^0.1.1", - "saveSpec": null, - "fetchSpec": "^0.1.1" - }, - "_requiredBy": [ - "/handlebars-helpers" - ], - "_resolved": "https://registry.npmjs.org/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz", - "_shasum": "25d045a5fae553189e9637b590900da732d8aa82", - "_spec": "to-gfm-code-block@^0.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction\\node_modules\\handlebars-helpers", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/to-gfm-code-block/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Generate a github-flavored-markdown fenced-code-block snippet.", - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/to-gfm-code-block", - "keywords": [ - "block", - "code", - "fence", - "fences", - "formatted", - "gfm", - "markdown", - "md", - "pre", - "pre-formatted", - "text" - ], - "license": { - "type": "MIT", - "url": "https://github.com/jonschlinkert/to-gfm-code-block/blob/master/LICENSE" - }, - "main": "index.js", - "name": "to-gfm-code-block", - "repository": { - "type": "git", - "url": "git://github.com/jonschlinkert/to-gfm-code-block.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.1" -} diff --git a/node_modules/to-object-path/LICENSE b/node_modules/to-object-path/LICENSE deleted file mode 100644 index 1e49edf81..000000000 --- a/node_modules/to-object-path/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2016, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/to-object-path/README.md b/node_modules/to-object-path/README.md deleted file mode 100644 index 7f3cfb163..000000000 --- a/node_modules/to-object-path/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# to-object-path [![NPM version](https://badge.fury.io/js/to-object-path.svg)](http://badge.fury.io/js/to-object-path) - -> Create an object path from a list or array of strings. - -## Install - -Install with [npm](https://www.npmjs.com/) - -```sh -$ npm i to-object-path --save -``` - -## Usage - -```js -var toPath = require('to-object-path'); - -toPath('foo', 'bar', 'baz'); -toPath('foo', ['bar', 'baz']); -//=> 'foo.bar.baz' -``` - -Also supports passing an arguments object (without having to slice args): - -```js -function foo() - return toPath(arguments); -} - -foo('foo', 'bar', 'baz'); -foo('foo', ['bar', 'baz']); -//=> 'foo.bar.baz' -``` - -Visit the [example](./example.js) to see how this could be used in an application. - -## Related projects - -* [get-value](https://www.npmjs.com/package/get-value): Use property paths (` a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value) -* [has-value](https://www.npmjs.com/package/has-value): Returns true if a value exists, false if empty. Works with deeply nested values using… [more](https://www.npmjs.com/package/has-value) | [homepage](https://github.com/jonschlinkert/has-value) -* [omit-value](https://www.npmjs.com/package/omit-value): Omit properties from an object or deeply nested property of an object using object path… [more](https://www.npmjs.com/package/omit-value) | [homepage](https://github.com/jonschlinkert/omit-value) -* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value) -* [unset-value](https://www.npmjs.com/package/unset-value): Delete nested properties from an object using dot notation. | [homepage](https://github.com/jonschlinkert/unset-value) - -## Running tests - -Install dev dependencies: - -```sh -$ npm i -d && npm test -``` - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/to-object-path/issues/new). - -## Author - -**Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2015 Jon Schlinkert -Released under the MIT license. - -*** - -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on October 28, 2015._ \ No newline at end of file diff --git a/node_modules/to-object-path/index.js b/node_modules/to-object-path/index.js deleted file mode 100644 index 489f8f684..000000000 --- a/node_modules/to-object-path/index.js +++ /dev/null @@ -1,33 +0,0 @@ -/*! - * to-object-path - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -var typeOf = require('kind-of'); - -module.exports = function toPath(args) { - if (typeOf(args) !== 'arguments') { - args = arguments; - } - return filter(args).join('.'); -}; - -function filter(arr) { - var len = arr.length; - var idx = -1; - var res = []; - - while (++idx < len) { - var ele = arr[idx]; - if (typeOf(ele) === 'arguments' || Array.isArray(ele)) { - res.push.apply(res, filter(ele)); - } else if (typeof ele === 'string') { - res.push(ele); - } - } - return res; -} diff --git a/node_modules/to-object-path/node_modules/kind-of/LICENSE b/node_modules/to-object-path/node_modules/kind-of/LICENSE deleted file mode 100644 index d734237bd..000000000 --- a/node_modules/to-object-path/node_modules/kind-of/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/to-object-path/node_modules/kind-of/README.md b/node_modules/to-object-path/node_modules/kind-of/README.md deleted file mode 100644 index 6a9df36d3..000000000 --- a/node_modules/to-object-path/node_modules/kind-of/README.md +++ /dev/null @@ -1,261 +0,0 @@ -# kind-of [![NPM version](https://img.shields.io/npm/v/kind-of.svg?style=flat)](https://www.npmjs.com/package/kind-of) [![NPM monthly downloads](https://img.shields.io/npm/dm/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![NPM total downloads](https://img.shields.io/npm/dt/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/kind-of.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/kind-of) - -> Get the native type of a value. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save kind-of -``` - -## Install - -Install with [bower](https://bower.io/) - -```sh -$ bower install kind-of --save -``` - -## Usage - -> es5, browser and es6 ready - -```js -var kindOf = require('kind-of'); - -kindOf(undefined); -//=> 'undefined' - -kindOf(null); -//=> 'null' - -kindOf(true); -//=> 'boolean' - -kindOf(false); -//=> 'boolean' - -kindOf(new Boolean(true)); -//=> 'boolean' - -kindOf(new Buffer('')); -//=> 'buffer' - -kindOf(42); -//=> 'number' - -kindOf(new Number(42)); -//=> 'number' - -kindOf('str'); -//=> 'string' - -kindOf(new String('str')); -//=> 'string' - -kindOf(arguments); -//=> 'arguments' - -kindOf({}); -//=> 'object' - -kindOf(Object.create(null)); -//=> 'object' - -kindOf(new Test()); -//=> 'object' - -kindOf(new Date()); -//=> 'date' - -kindOf([]); -//=> 'array' - -kindOf([1, 2, 3]); -//=> 'array' - -kindOf(new Array()); -//=> 'array' - -kindOf(/foo/); -//=> 'regexp' - -kindOf(new RegExp('foo')); -//=> 'regexp' - -kindOf(function () {}); -//=> 'function' - -kindOf(function * () {}); -//=> 'function' - -kindOf(new Function()); -//=> 'function' - -kindOf(new Map()); -//=> 'map' - -kindOf(new WeakMap()); -//=> 'weakmap' - -kindOf(new Set()); -//=> 'set' - -kindOf(new WeakSet()); -//=> 'weakset' - -kindOf(Symbol('str')); -//=> 'symbol' - -kindOf(new Int8Array()); -//=> 'int8array' - -kindOf(new Uint8Array()); -//=> 'uint8array' - -kindOf(new Uint8ClampedArray()); -//=> 'uint8clampedarray' - -kindOf(new Int16Array()); -//=> 'int16array' - -kindOf(new Uint16Array()); -//=> 'uint16array' - -kindOf(new Int32Array()); -//=> 'int32array' - -kindOf(new Uint32Array()); -//=> 'uint32array' - -kindOf(new Float32Array()); -//=> 'float32array' - -kindOf(new Float64Array()); -//=> 'float64array' -``` - -## Benchmarks - -Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of). -Note that performaces is slower for es6 features `Map`, `WeakMap`, `Set` and `WeakSet`. - -```bash -#1: array - current x 23,329,397 ops/sec ±0.82% (94 runs sampled) - lib-type-of x 4,170,273 ops/sec ±0.55% (94 runs sampled) - lib-typeof x 9,686,935 ops/sec ±0.59% (98 runs sampled) - -#2: boolean - current x 27,197,115 ops/sec ±0.85% (94 runs sampled) - lib-type-of x 3,145,791 ops/sec ±0.73% (97 runs sampled) - lib-typeof x 9,199,562 ops/sec ±0.44% (99 runs sampled) - -#3: date - current x 20,190,117 ops/sec ±0.86% (92 runs sampled) - lib-type-of x 5,166,970 ops/sec ±0.74% (94 runs sampled) - lib-typeof x 9,610,821 ops/sec ±0.50% (96 runs sampled) - -#4: function - current x 23,855,460 ops/sec ±0.60% (97 runs sampled) - lib-type-of x 5,667,740 ops/sec ±0.54% (100 runs sampled) - lib-typeof x 10,010,644 ops/sec ±0.44% (100 runs sampled) - -#5: null - current x 27,061,047 ops/sec ±0.97% (96 runs sampled) - lib-type-of x 13,965,573 ops/sec ±0.62% (97 runs sampled) - lib-typeof x 8,460,194 ops/sec ±0.61% (97 runs sampled) - -#6: number - current x 25,075,682 ops/sec ±0.53% (99 runs sampled) - lib-type-of x 2,266,405 ops/sec ±0.41% (98 runs sampled) - lib-typeof x 9,821,481 ops/sec ±0.45% (99 runs sampled) - -#7: object - current x 3,348,980 ops/sec ±0.49% (99 runs sampled) - lib-type-of x 3,245,138 ops/sec ±0.60% (94 runs sampled) - lib-typeof x 9,262,952 ops/sec ±0.59% (99 runs sampled) - -#8: regex - current x 21,284,827 ops/sec ±0.72% (96 runs sampled) - lib-type-of x 4,689,241 ops/sec ±0.43% (100 runs sampled) - lib-typeof x 8,957,593 ops/sec ±0.62% (98 runs sampled) - -#9: string - current x 25,379,234 ops/sec ±0.58% (96 runs sampled) - lib-type-of x 3,635,148 ops/sec ±0.76% (93 runs sampled) - lib-typeof x 9,494,134 ops/sec ±0.49% (98 runs sampled) - -#10: undef - current x 27,459,221 ops/sec ±1.01% (93 runs sampled) - lib-type-of x 14,360,433 ops/sec ±0.52% (99 runs sampled) - lib-typeof x 23,202,868 ops/sec ±0.59% (94 runs sampled) - -``` - -## Optimizations - -In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library: - -1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot. -2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it. -3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'` - -## About - -### Related projects - -* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") -* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.") -* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Contributors - -| **Commits** | **Contributor** | -| --- | --- | -| 59 | [jonschlinkert](https://github.com/jonschlinkert) | -| 2 | [miguelmota](https://github.com/miguelmota) | -| 1 | [dtothefp](https://github.com/dtothefp) | -| 1 | [ksheedlo](https://github.com/ksheedlo) | -| 1 | [pdehaan](https://github.com/pdehaan) | -| 1 | [laggingreflex](https://github.com/laggingreflex) | - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 16, 2017._ \ No newline at end of file diff --git a/node_modules/to-object-path/node_modules/kind-of/index.js b/node_modules/to-object-path/node_modules/kind-of/index.js deleted file mode 100644 index b52c2917f..000000000 --- a/node_modules/to-object-path/node_modules/kind-of/index.js +++ /dev/null @@ -1,116 +0,0 @@ -var isBuffer = require('is-buffer'); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; diff --git a/node_modules/to-object-path/node_modules/kind-of/package.json b/node_modules/to-object-path/node_modules/kind-of/package.json deleted file mode 100644 index 683cf979c..000000000 --- a/node_modules/to-object-path/node_modules/kind-of/package.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "_args": [ - [ - "kind-of@3.2.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "kind-of@3.2.2", - "_id": "kind-of@3.2.2", - "_inBundle": false, - "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "_location": "/to-object-path/kind-of", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "kind-of@3.2.2", - "name": "kind-of", - "escapedName": "kind-of", - "rawSpec": "3.2.2", - "saveSpec": null, - "fetchSpec": "3.2.2" - }, - "_requiredBy": [ - "/to-object-path" - ], - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "_spec": "3.2.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/kind-of/issues" - }, - "contributors": [ - { - "name": "David Fox-Powell", - "url": "https://dtothefp.github.io/me" - }, - { - "name": "Jon Schlinkert", - "url": "http://twitter.com/jonschlinkert" - }, - { - "name": "Ken Sheedlo", - "url": "kensheedlo.com" - }, - { - "name": "laggingreflex", - "url": "https://github.com/laggingreflex" - }, - { - "name": "Miguel Mota", - "url": "https://miguelmota.com" - }, - { - "name": "Peter deHaan", - "url": "http://about.me/peterdehaan" - } - ], - "dependencies": { - "is-buffer": "^1.1.5" - }, - "description": "Get the native type of a value.", - "devDependencies": { - "ansi-bold": "^0.1.1", - "benchmarked": "^1.0.0", - "browserify": "^14.3.0", - "glob": "^7.1.1", - "gulp-format-md": "^0.1.12", - "mocha": "^3.3.0", - "type-of": "^2.0.1", - "typeof": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/kind-of", - "keywords": [ - "arguments", - "array", - "boolean", - "check", - "date", - "function", - "is", - "is-type", - "is-type-of", - "kind", - "kind-of", - "number", - "object", - "of", - "regexp", - "string", - "test", - "type", - "type-of", - "typeof", - "types" - ], - "license": "MIT", - "main": "index.js", - "name": "kind-of", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/kind-of.git" - }, - "scripts": { - "prepublish": "browserify -o browser.js -e index.js -s index --bare", - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "is-glob", - "is-number", - "is-primitive" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "reflinks": [ - "verb" - ] - }, - "version": "3.2.2" -} diff --git a/node_modules/to-object-path/package.json b/node_modules/to-object-path/package.json deleted file mode 100644 index 59c215dae..000000000 --- a/node_modules/to-object-path/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_args": [ - [ - "to-object-path@0.3.0", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "to-object-path@0.3.0", - "_id": "to-object-path@0.3.0", - "_inBundle": false, - "_integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "_location": "/to-object-path", - "_phantomChildren": { - "is-buffer": "1.1.6" - }, - "_requested": { - "type": "version", - "registry": true, - "raw": "to-object-path@0.3.0", - "name": "to-object-path", - "escapedName": "to-object-path", - "rawSpec": "0.3.0", - "saveSpec": null, - "fetchSpec": "0.3.0" - }, - "_requiredBy": [ - "/cache-base" - ], - "_resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "_spec": "0.3.0", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/to-object-path/issues" - }, - "dependencies": { - "kind-of": "^3.0.2" - }, - "description": "Create an object path from a list or array of strings.", - "devDependencies": { - "base": "^0.6.7", - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/to-object-path", - "keywords": [ - "dot", - "nested", - "notation", - "object", - "path", - "stringify" - ], - "license": "MIT", - "main": "index.js", - "name": "to-object-path", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/to-object-path.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "get-value", - "set-value", - "has-value", - "omit-value", - "unset-value" - ] - } - }, - "version": "0.3.0" -} diff --git a/node_modules/to-regex-range/LICENSE b/node_modules/to-regex-range/LICENSE deleted file mode 100644 index 83b56e709..000000000 --- a/node_modules/to-regex-range/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/to-regex-range/README.md b/node_modules/to-regex-range/README.md deleted file mode 100644 index 2763c5aef..000000000 --- a/node_modules/to-regex-range/README.md +++ /dev/null @@ -1,281 +0,0 @@ -# to-regex-range [![NPM version](https://img.shields.io/npm/v/to-regex-range.svg?style=flat)](https://www.npmjs.com/package/to-regex-range) [![NPM monthly downloads](https://img.shields.io/npm/dm/to-regex-range.svg?style=flat)](https://npmjs.org/package/to-regex-range) [![NPM total downloads](https://img.shields.io/npm/dt/to-regex-range.svg?style=flat)](https://npmjs.org/package/to-regex-range) [![Linux Build Status](https://img.shields.io/travis/micromatch/to-regex-range.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/to-regex-range) - -> Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save to-regex-range -``` - -Install with [yarn](https://yarnpkg.com): - -```sh -$ yarn add to-regex-range -``` - -
          -What does this do? - -
          - -This libary generates the `source` string to be passed to `new RegExp()` for matching a range of numbers. - -**Example** - -```js -var toRegexRange = require('to-regex-range'); -var regex = new RegExp(toRegexRange('15', '95')); -``` - -A string is returned so that you can do whatever you need with it before passing it to `new RegExp()` (like adding `^` or `$` boundaries, defining flags, or combining it another string). - -
          - -
          - -
          -Why use this library? - -
          - -### Convenience - -Creating regular expressions for matching numbers gets deceptively complicated pretty fast. - -For example, let's say you need a validation regex for matching part of a user-id, postal code, social security number, tax id, etc: - -* regex for matching `1` => `/1/` (easy enough) -* regex for matching `1` through `5` => `/[1-5]/` (not bad...) -* regex for matching `1` or `5` => `/(1|5)/` (still easy...) -* regex for matching `1` through `50` => `/([1-9]|[1-4][0-9]|50)/` (uh-oh...) -* regex for matching `1` through `55` => `/([1-9]|[1-4][0-9]|5[0-5])/` (no prob, I can do this...) -* regex for matching `1` through `555` => `/([1-9]|[1-9][0-9]|[1-4][0-9]{2}|5[0-4][0-9]|55[0-5])/` (maybe not...) -* regex for matching `0001` through `5555` => `/(0{3}[1-9]|0{2}[1-9][0-9]|0[1-9][0-9]{2}|[1-4][0-9]{3}|5[0-4][0-9]{2}|55[0-4][0-9]|555[0-5])/` (okay, I get the point!) - -The numbers are contrived, but they're also really basic. In the real world you might need to generate a regex on-the-fly for validation. - -**Learn more** - -If you're interested in learning more about [character classes](http://www.regular-expressions.info/charclass.html) and other regex features, I personally have always found [regular-expressions.info](http://www.regular-expressions.info/charclass.html) to be pretty useful. - -### Heavily tested - -As of April 27, 2017, this library runs [2,783,483 test assertions](./test/test.js) against generated regex-ranges to provide brute-force verification that results are indeed correct. - -Tests run in ~870ms on my MacBook Pro, 2.5 GHz Intel Core i7. - -### Highly optimized - -Generated regular expressions are highly optimized: - -* duplicate sequences and character classes are reduced using quantifiers -* smart enough to use `?` conditionals when number(s) or range(s) can be positive or negative -* uses fragment caching to avoid processing the same exact string more than once - -
          - -
          - -## Usage - -Add this library to your javascript application with the following line of code - -```js -var toRegexRange = require('to-regex-range'); -``` - -The main export is a function that takes two integers: the `min` value and `max` value (formatted as strings or numbers). - -```js -var source = toRegexRange('15', '95'); -//=> 1[5-9]|[2-8][0-9]|9[0-5] - -var re = new RegExp('^' + source + '$'); -console.log(re.test('14')); //=> false -console.log(re.test('50')); //=> true -console.log(re.test('94')); //=> true -console.log(re.test('96')); //=> false -``` - -## Options - -### options.capture - -**Type**: `boolean` - -**Deafault**: `undefined` - -Wrap the returned value in parentheses when there is more than one regex condition. Useful when you're dynamically generating ranges. - -```js -console.log(toRegexRange('-10', '10')); -//=> -[1-9]|-?10|[0-9] - -console.log(toRegexRange('-10', '10', {capture: true})); -//=> (-[1-9]|-?10|[0-9]) -``` - -### options.shorthand - -**Type**: `boolean` - -**Deafault**: `undefined` - -Use the regex shorthand for `[0-9]`: - -```js -console.log(toRegexRange('0', '999999')); -//=> [0-9]|[1-9][0-9]{1,5} - -console.log(toRegexRange('0', '999999', {shorthand: true})); -//=> \d|[1-9]\d{1,5} -``` - -### options.relaxZeros - -**Type**: `boolean` - -**Default**: `true` - -This option only applies to **negative zero-padded ranges**. By default, when a negative zero-padded range is defined, the number of leading zeros is relaxed using `-0*`. - -```js -console.log(toRegexRange('-001', '100')); -//=> -0*1|0{2}[0-9]|0[1-9][0-9]|100 - -console.log(toRegexRange('-001', '100', {relaxZeros: false})); -//=> -0{2}1|0{2}[0-9]|0[1-9][0-9]|100 -``` - -
          -Why are zeros relaxed for negative zero-padded ranges by default? - -Consider the following. - -```js -var regex = toRegexRange('-001', '100'); -``` - -_Note that `-001` and `100` are both three digits long_. - -In most zero-padding implementations, only a single leading zero is enough to indicate that zero-padding should be applied. Thus, the leading zeros would be "corrected" on the negative range in the example to `-01`, instead of `-001`, to make total length of each string no greater than the length of the largest number in the range (in other words, `-001` is 4 digits, but `100` is only three digits). - -If zeros were not relaxed by default, you might expect the resulting regex of the above pattern to match `-001` - given that it's defined that way in the arguments - _but it wouldn't_. It would, however, match `-01`. This gets even more ambiguous with large ranges, like `-01` to `1000000`. - -Thus, we relax zeros by default to provide a more predictable experience for users. - -
          - -## Examples - -| **Range** | **Result** | **Compile time** | -| --- | --- | --- | -| `toRegexRange('5, 5')` | `5` | _33μs_ | -| `toRegexRange('5, 6')` | `5\|6` | _53μs_ | -| `toRegexRange('29, 51')` | `29\|[34][0-9]\|5[01]` | _699μs_ | -| `toRegexRange('31, 877')` | `3[1-9]\|[4-9][0-9]\|[1-7][0-9]{2}\|8[0-6][0-9]\|87[0-7]` | _711μs_ | -| `toRegexRange('111, 555')` | `11[1-9]\|1[2-9][0-9]\|[2-4][0-9]{2}\|5[0-4][0-9]\|55[0-5]` | _62μs_ | -| `toRegexRange('-10, 10')` | `-[1-9]\|-?10\|[0-9]` | _74μs_ | -| `toRegexRange('-100, -10')` | `-1[0-9]\|-[2-9][0-9]\|-100` | _49μs_ | -| `toRegexRange('-100, 100')` | `-[1-9]\|-?[1-9][0-9]\|-?100\|[0-9]` | _45μs_ | -| `toRegexRange('001, 100')` | `0{2}[1-9]\|0[1-9][0-9]\|100` | _158μs_ | -| `toRegexRange('0010, 1000')` | `0{2}1[0-9]\|0{2}[2-9][0-9]\|0[1-9][0-9]{2}\|1000` | _61μs_ | -| `toRegexRange('1, 2')` | `1\|2` | _10μs_ | -| `toRegexRange('1, 5')` | `[1-5]` | _24μs_ | -| `toRegexRange('1, 10')` | `[1-9]\|10` | _23μs_ | -| `toRegexRange('1, 100')` | `[1-9]\|[1-9][0-9]\|100` | _30μs_ | -| `toRegexRange('1, 1000')` | `[1-9]\|[1-9][0-9]{1,2}\|1000` | _52μs_ | -| `toRegexRange('1, 10000')` | `[1-9]\|[1-9][0-9]{1,3}\|10000` | _47μs_ | -| `toRegexRange('1, 100000')` | `[1-9]\|[1-9][0-9]{1,4}\|100000` | _44μs_ | -| `toRegexRange('1, 1000000')` | `[1-9]\|[1-9][0-9]{1,5}\|1000000` | _49μs_ | -| `toRegexRange('1, 10000000')` | `[1-9]\|[1-9][0-9]{1,6}\|10000000` | _63μs_ | - -## Heads up! - -**Order of arguments** - -When the `min` is larger than the `max`, values will be flipped to create a valid range: - -```js -toRegexRange('51', '29'); -``` - -Is effectively flipped to: - -```js -toRegexRange('29', '51'); -//=> 29|[3-4][0-9]|5[0-1] -``` - -**Steps / increments** - -This library does not support steps (increments). A pr to add support would be welcome. - -## History - -### v2.0.0 - 2017-04-21 - -**New features** - -Adds support for zero-padding! - -### v1.0.0 - -**Optimizations** - -Repeating ranges are now grouped using quantifiers. rocessing time is roughly the same, but the generated regex is much smaller, which should result in faster matching. - -## Attribution - -Inspired by the python library [range-regex](https://github.com/dimka665/range-regex). - -## About - -### Related projects - -* [expand-range](https://www.npmjs.com/package/expand-range): Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See… [more](https://github.com/jonschlinkert/expand-range) | [homepage](https://github.com/jonschlinkert/expand-range "Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See the benchmarks. Used by micromatch.") -* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`") -* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") -* [repeat-element](https://www.npmjs.com/package/repeat-element): Create an array by repeating the given value n times. | [homepage](https://github.com/jonschlinkert/repeat-element "Create an array by repeating the given value n times.") -* [repeat-string](https://www.npmjs.com/package/repeat-string): Repeat the given string n times. Fastest implementation for repeating a string. | [homepage](https://github.com/jonschlinkert/repeat-string "Repeat the given string n times. Fastest implementation for repeating a string.") - -### Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -### Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -### Running tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -### Author - -**Jon Schlinkert** - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on April 27, 2017._ \ No newline at end of file diff --git a/node_modules/to-regex-range/index.js b/node_modules/to-regex-range/index.js deleted file mode 100644 index 7bb5a743e..000000000 --- a/node_modules/to-regex-range/index.js +++ /dev/null @@ -1,294 +0,0 @@ -/*! - * to-regex-range - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -var repeat = require('repeat-string'); -var isNumber = require('is-number'); -var cache = {}; - -function toRegexRange(min, max, options) { - if (isNumber(min) === false) { - throw new RangeError('toRegexRange: first argument is invalid.'); - } - - if (typeof max === 'undefined' || min === max) { - return String(min); - } - - if (isNumber(max) === false) { - throw new RangeError('toRegexRange: second argument is invalid.'); - } - - options = options || {}; - var relax = String(options.relaxZeros); - var shorthand = String(options.shorthand); - var capture = String(options.capture); - var key = min + ':' + max + '=' + relax + shorthand + capture; - if (cache.hasOwnProperty(key)) { - return cache[key].result; - } - - var a = Math.min(min, max); - var b = Math.max(min, max); - - if (Math.abs(a - b) === 1) { - var result = min + '|' + max; - if (options.capture) { - return '(' + result + ')'; - } - return result; - } - - var isPadded = padding(min) || padding(max); - var positives = []; - var negatives = []; - - var tok = {min: min, max: max, a: a, b: b}; - if (isPadded) { - tok.isPadded = isPadded; - tok.maxLen = String(tok.max).length; - } - - if (a < 0) { - var newMin = b < 0 ? Math.abs(b) : 1; - var newMax = Math.abs(a); - negatives = splitToPatterns(newMin, newMax, tok, options); - a = tok.a = 0; - } - - if (b >= 0) { - positives = splitToPatterns(a, b, tok, options); - } - - tok.negatives = negatives; - tok.positives = positives; - tok.result = siftPatterns(negatives, positives, options); - - if (options.capture && (positives.length + negatives.length) > 1) { - tok.result = '(' + tok.result + ')'; - } - - cache[key] = tok; - return tok.result; -} - -function siftPatterns(neg, pos, options) { - var onlyNegative = filterPatterns(neg, pos, '-', false, options) || []; - var onlyPositive = filterPatterns(pos, neg, '', false, options) || []; - var intersected = filterPatterns(neg, pos, '-?', true, options) || []; - var subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); - return subpatterns.join('|'); -} - -function splitToRanges(min, max) { - min = Number(min); - max = Number(max); - - var nines = 1; - var stops = [max]; - var stop = +countNines(min, nines); - - while (min <= stop && stop <= max) { - stops = push(stops, stop); - nines += 1; - stop = +countNines(min, nines); - } - - var zeros = 1; - stop = countZeros(max + 1, zeros) - 1; - - while (min < stop && stop <= max) { - stops = push(stops, stop); - zeros += 1; - stop = countZeros(max + 1, zeros) - 1; - } - - stops.sort(compare); - return stops; -} - -/** - * Convert a range to a regex pattern - * @param {Number} `start` - * @param {Number} `stop` - * @return {String} - */ - -function rangeToPattern(start, stop, options) { - if (start === stop) { - return {pattern: String(start), digits: []}; - } - - var zipped = zip(String(start), String(stop)); - var len = zipped.length, i = -1; - - var pattern = ''; - var digits = 0; - - while (++i < len) { - var numbers = zipped[i]; - var startDigit = numbers[0]; - var stopDigit = numbers[1]; - - if (startDigit === stopDigit) { - pattern += startDigit; - - } else if (startDigit !== '0' || stopDigit !== '9') { - pattern += toCharacterClass(startDigit, stopDigit); - - } else { - digits += 1; - } - } - - if (digits) { - pattern += options.shorthand ? '\\d' : '[0-9]'; - } - - return { pattern: pattern, digits: [digits] }; -} - -function splitToPatterns(min, max, tok, options) { - var ranges = splitToRanges(min, max); - var len = ranges.length; - var idx = -1; - - var tokens = []; - var start = min; - var prev; - - while (++idx < len) { - var range = ranges[idx]; - var obj = rangeToPattern(start, range, options); - var zeros = ''; - - if (!tok.isPadded && prev && prev.pattern === obj.pattern) { - if (prev.digits.length > 1) { - prev.digits.pop(); - } - prev.digits.push(obj.digits[0]); - prev.string = prev.pattern + toQuantifier(prev.digits); - start = range + 1; - continue; - } - - if (tok.isPadded) { - zeros = padZeros(range, tok); - } - - obj.string = zeros + obj.pattern + toQuantifier(obj.digits); - tokens.push(obj); - start = range + 1; - prev = obj; - } - - return tokens; -} - -function filterPatterns(arr, comparison, prefix, intersection, options) { - var res = []; - - for (var i = 0; i < arr.length; i++) { - var tok = arr[i]; - var ele = tok.string; - - if (options.relaxZeros !== false) { - if (prefix === '-' && ele.charAt(0) === '0') { - if (ele.charAt(1) === '{') { - ele = '0*' + ele.replace(/^0\{\d+\}/, ''); - } else { - ele = '0*' + ele.slice(1); - } - } - } - - if (!intersection && !contains(comparison, 'string', ele)) { - res.push(prefix + ele); - } - - if (intersection && contains(comparison, 'string', ele)) { - res.push(prefix + ele); - } - } - return res; -} - -/** - * Zip strings (`for in` can be used on string characters) - */ - -function zip(a, b) { - var arr = []; - for (var ch in a) arr.push([a[ch], b[ch]]); - return arr; -} - -function compare(a, b) { - return a > b ? 1 : b > a ? -1 : 0; -} - -function push(arr, ele) { - if (arr.indexOf(ele) === -1) arr.push(ele); - return arr; -} - -function contains(arr, key, val) { - for (var i = 0; i < arr.length; i++) { - if (arr[i][key] === val) { - return true; - } - } - return false; -} - -function countNines(min, len) { - return String(min).slice(0, -len) + repeat('9', len); -} - -function countZeros(integer, zeros) { - return integer - (integer % Math.pow(10, zeros)); -} - -function toQuantifier(digits) { - var start = digits[0]; - var stop = digits[1] ? (',' + digits[1]) : ''; - if (!stop && (!start || start === 1)) { - return ''; - } - return '{' + start + stop + '}'; -} - -function toCharacterClass(a, b) { - return '[' + a + ((b - a === 1) ? '' : '-') + b + ']'; -} - -function padding(str) { - return /^-?(0+)\d/.exec(str); -} - -function padZeros(val, tok) { - if (tok.isPadded) { - var diff = Math.abs(tok.maxLen - String(val).length); - switch (diff) { - case 0: - return ''; - case 1: - return '0'; - default: { - return '0{' + diff + '}'; - } - } - } - return val; -} - -/** - * Expose `toRegexRange` - */ - -module.exports = toRegexRange; diff --git a/node_modules/to-regex-range/package.json b/node_modules/to-regex-range/package.json deleted file mode 100644 index c39ebd6fc..000000000 --- a/node_modules/to-regex-range/package.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "_args": [ - [ - "to-regex-range@2.1.1", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "to-regex-range@2.1.1", - "_id": "to-regex-range@2.1.1", - "_inBundle": false, - "_integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "_location": "/to-regex-range", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "to-regex-range@2.1.1", - "name": "to-regex-range", - "escapedName": "to-regex-range", - "rawSpec": "2.1.1", - "saveSpec": null, - "fetchSpec": "2.1.1" - }, - "_requiredBy": [ - "/fill-range" - ], - "_resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "_spec": "2.1.1", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/micromatch/to-regex-range/issues" - }, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "description": "Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions.", - "devDependencies": { - "fill-range": "^3.1.1", - "gulp-format-md": "^0.1.12", - "mocha": "^3.2.0", - "text-table": "^0.2.0", - "time-diff": "^0.3.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/micromatch/to-regex-range", - "keywords": [ - "alpha", - "alphabetical", - "bash", - "brace", - "date", - "expand", - "expansion", - "glob", - "match", - "matches", - "matching", - "number", - "numerical", - "range", - "ranges", - "regex", - "sequence", - "sh", - "to", - "year" - ], - "license": "MIT", - "main": "index.js", - "name": "to-regex-range", - "repository": { - "type": "git", - "url": "git+https://github.com/micromatch/to-regex-range.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "related": { - "list": [ - "expand-range", - "fill-range", - "micromatch", - "repeat-element", - "repeat-string" - ] - }, - "toc": false, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "lint": { - "reflinks": true - }, - "helpers": [ - "./examples.js" - ], - "reflinks": [ - "0-5", - "0-9", - "1-5", - "1-9" - ] - }, - "version": "2.1.1" -} diff --git a/node_modules/to-regex/LICENSE b/node_modules/to-regex/LICENSE deleted file mode 100644 index 7c9987bc6..000000000 --- a/node_modules/to-regex/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016-2018, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/to-regex/README.md b/node_modules/to-regex/README.md deleted file mode 100644 index 5a28fc33b..000000000 --- a/node_modules/to-regex/README.md +++ /dev/null @@ -1,205 +0,0 @@ -# to-regex [![NPM version](https://img.shields.io/npm/v/to-regex.svg?style=flat)](https://www.npmjs.com/package/to-regex) [![NPM monthly downloads](https://img.shields.io/npm/dm/to-regex.svg?style=flat)](https://npmjs.org/package/to-regex) [![NPM total downloads](https://img.shields.io/npm/dt/to-regex.svg?style=flat)](https://npmjs.org/package/to-regex) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/to-regex.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/to-regex) - -> Generate a regex from a string or array of strings. - -Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. - -- [Install](#install) -- [Usage](#usage) -- [Options](#options) - * [options.contains](#optionscontains) - * [options.negate](#optionsnegate) - * [options.nocase](#optionsnocase) - * [options.flags](#optionsflags) - * [options.cache](#optionscache) - * [options.safe](#optionssafe) -- [About](#about) - * [Related projects](#related-projects) - * [Author](#author) - * [License](#license) - -_(TOC generated by [verb](https://github.com/verbose/verb) using [markdown-toc](https://github.com/jonschlinkert/markdown-toc))_ - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save to-regex -``` - -## Usage - -```js -var toRegex = require('to-regex'); - -console.log(toRegex('foo')); -//=> /^(?:foo)$/ - -console.log(toRegex('foo', {negate: true})); -//=> /^(?:(?:(?!^(?:foo)$).)*)$/ - -console.log(toRegex('foo', {contains: true})); -//=> /(?:foo)/ - -console.log(toRegex(['foo', 'bar'], {negate: true})); -//=> /^(?:(?:(?!^(?:(?:foo)|(?:bar))$).)*)$/ - -console.log(toRegex(['foo', 'bar'], {negate: true, contains: true})); -//=> /^(?:(?:(?!(?:(?:foo)|(?:bar))).)*)$/ -``` - -## Options - -### options.contains - -**Type**: `Boolean` - -**Default**: `undefined` - -Generate a regex that will match any string that _contains_ the given pattern. By default, regex is strict will only return true for exact matches. - -```js -var toRegex = require('to-regex'); -console.log(toRegex('foo', {contains: true})); -//=> /(?:foo)/ -``` - -### options.negate - -**Type**: `Boolean` - -**Default**: `undefined` - -Create a regex that will match everything except the given pattern. - -```js -var toRegex = require('to-regex'); -console.log(toRegex('foo', {negate: true})); -//=> /^(?:(?:(?!^(?:foo)$).)*)$/ -``` - -### options.nocase - -**Type**: `Boolean` - -**Default**: `undefined` - -Adds the `i` flag, to enable case-insensitive matching. - -```js -var toRegex = require('to-regex'); -console.log(toRegex('foo', {nocase: true})); -//=> /^(?:foo)$/i -``` - -Alternatively you can pass the flags you want directly on [options.flags](#options.flags). - -### options.flags - -**Type**: `String` - -**Default**: `undefined` - -Define the flags you want to use on the generated regex. - -```js -var toRegex = require('to-regex'); -console.log(toRegex('foo', {flags: 'gm'})); -//=> /^(?:foo)$/gm -console.log(toRegex('foo', {flags: 'gmi', nocase: true})); //<= handles redundancy -//=> /^(?:foo)$/gmi -``` - -### options.cache - -**Type**: `Boolean` - -**Default**: `true` - -Generated regex is cached based on the provided string and options. As a result, runtime compilation only happens once per pattern (as long as options are also the same), which can result in dramatic speed improvements. - -This also helps with debugging, since adding options and pattern are added to the generated regex. - -**Disable caching** - -```js -toRegex('foo', {cache: false}); -``` - -### options.safe - -**Type**: `Boolean` - -**Default**: `undefined` - -Check the generated regular expression with [safe-regex](https://github.com/substack/safe-regex) and throw an error if the regex is potentially unsafe. - -**Examples** - -```js -console.log(toRegex('(x+x+)+y')); -//=> /^(?:(x+x+)+y)$/ - -// The following would throw an error -toRegex('(x+x+)+y', {safe: true}); -``` - -## About - -
          -Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). - -
          - -
          -Running Tests - -Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: - -```sh -$ npm install && npm test -``` - -
          - -
          -Building docs - -_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ - -To generate the readme, run the following command: - -```sh -$ npm install -g verbose/verb#dev verb-generate-readme && verb -``` - -
          - -### Related projects - -You might also be interested in these projects: - -* [has-glob](https://www.npmjs.com/package/has-glob): Returns `true` if an array has a glob pattern. | [homepage](https://github.com/jonschlinkert/has-glob "Returns `true` if an array has a glob pattern.") -* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") -* [path-regex](https://www.npmjs.com/package/path-regex): Regular expression for matching the parts of a file path. | [homepage](https://github.com/regexps/path-regex "Regular expression for matching the parts of a file path.") -* [to-regex-range](https://www.npmjs.com/package/to-regex-range): Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than… [more](https://github.com/micromatch/to-regex-range) | [homepage](https://github.com/micromatch/to-regex-range "Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions.") - -### Author - -**Jon Schlinkert** - -* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert) -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) - -### License - -Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT License](LICENSE). - -*** - -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on February 24, 2018._ \ No newline at end of file diff --git a/node_modules/to-regex/index.js b/node_modules/to-regex/index.js deleted file mode 100644 index a87d01591..000000000 --- a/node_modules/to-regex/index.js +++ /dev/null @@ -1,155 +0,0 @@ -'use strict'; - -var safe = require('safe-regex'); -var define = require('define-property'); -var extend = require('extend-shallow'); -var not = require('regex-not'); -var MAX_LENGTH = 1024 * 64; - -/** - * Session cache - */ - -var cache = {}; - -/** - * Create a regular expression from the given `pattern` string. - * - * @param {String|RegExp} `pattern` Pattern can be a string or regular expression. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ - -module.exports = function(patterns, options) { - if (!Array.isArray(patterns)) { - return makeRe(patterns, options); - } - return makeRe(patterns.join('|'), options); -}; - -/** - * Create a regular expression from the given `pattern` string. - * - * @param {String|RegExp} `pattern` Pattern can be a string or regular expression. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ - -function makeRe(pattern, options) { - if (pattern instanceof RegExp) { - return pattern; - } - - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } - - if (pattern.length > MAX_LENGTH) { - throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); - } - - var key = pattern; - // do this before shallow cloning options, it's a lot faster - if (!options || (options && options.cache !== false)) { - key = createKey(pattern, options); - - if (cache.hasOwnProperty(key)) { - return cache[key]; - } - } - - var opts = extend({}, options); - if (opts.contains === true) { - if (opts.negate === true) { - opts.strictNegate = false; - } else { - opts.strict = false; - } - } - - if (opts.strict === false) { - opts.strictOpen = false; - opts.strictClose = false; - } - - var open = opts.strictOpen !== false ? '^' : ''; - var close = opts.strictClose !== false ? '$' : ''; - var flags = opts.flags || ''; - var regex; - - if (opts.nocase === true && !/i/.test(flags)) { - flags += 'i'; - } - - try { - if (opts.negate || typeof opts.strictNegate === 'boolean') { - pattern = not.create(pattern, opts); - } - - var str = open + '(?:' + pattern + ')' + close; - regex = new RegExp(str, flags); - - if (opts.safe === true && safe(regex) === false) { - throw new Error('potentially unsafe regular expression: ' + regex.source); - } - - } catch (err) { - if (opts.strictErrors === true || opts.safe === true) { - err.key = key; - err.pattern = pattern; - err.originalOptions = options; - err.createdOptions = opts; - throw err; - } - - try { - regex = new RegExp('^' + pattern.replace(/(\W)/g, '\\$1') + '$'); - } catch (err) { - regex = /.^/; //<= match nothing - } - } - - if (opts.cache !== false) { - memoize(regex, key, pattern, opts); - } - return regex; -} - -/** - * Memoize generated regex. This can result in dramatic speed improvements - * and simplify debugging by adding options and pattern to the regex. It can be - * disabled by passing setting `options.cache` to false. - */ - -function memoize(regex, key, pattern, options) { - define(regex, 'cached', true); - define(regex, 'pattern', pattern); - define(regex, 'options', options); - define(regex, 'key', key); - cache[key] = regex; -} - -/** - * Create the key to use for memoization. The key is generated - * by iterating over the options and concatenating key-value pairs - * to the pattern string. - */ - -function createKey(pattern, options) { - if (!options) return pattern; - var key = pattern; - for (var prop in options) { - if (options.hasOwnProperty(prop)) { - key += ';' + prop + '=' + String(options[prop]); - } - } - return key; -} - -/** - * Expose `makeRe` - */ - -module.exports.makeRe = makeRe; diff --git a/node_modules/to-regex/package.json b/node_modules/to-regex/package.json deleted file mode 100644 index f2fb3bdb1..000000000 --- a/node_modules/to-regex/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "to-regex@3.0.2", - "C:\\projects\\github\\ReleaseNotesAction" - ] - ], - "_development": true, - "_from": "to-regex@3.0.2", - "_id": "to-regex@3.0.2", - "_inBundle": false, - "_integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "_location": "/to-regex", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "to-regex@3.0.2", - "name": "to-regex", - "escapedName": "to-regex", - "rawSpec": "3.0.2", - "saveSpec": null, - "fetchSpec": "3.0.2" - }, - "_requiredBy": [ - "/braces", - "/expand-brackets", - "/extglob", - "/micromatch", - "/nanomatch" - ], - "_resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "_spec": "3.0.2", - "_where": "C:\\projects\\github\\ReleaseNotesAction", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/to-regex/issues" - }, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "description": "Generate a regex from a string or array of strings.", - "devDependencies": { - "gulp-format-md": "^1.0.0", - "mocha": "^3.5.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/jonschlinkert/to-regex", - "keywords": [ - "match", - "regex", - "regular expression", - "test", - "to" - ], - "license": "MIT", - "main": "index.js", - "name": "to-regex", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/to-regex.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "toc": { - "method": "preWrite" - }, - "layout": "default", - "tasks": [ - "readme" - ], - "plugins": [ - "gulp-format-md" - ], - "related": { - "list": [ - "has-glob", - "is-glob", - "path-regex", - "to-regex-range" - ] - }, - "lint": { - "reflinks": true - } - }, - "version": "3.0.2" -} diff --git a/node_modules/tunnel/.idea/encodings.xml b/node_modules/tunnel/.idea/encodings.xml deleted file mode 100644 index 97626ba45..000000000 --- a/node_modules/tunnel/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/node_modules/tunnel/.idea/modules.xml b/node_modules/tunnel/.idea/modules.xml deleted file mode 100644 index 27bf88822..000000000 --- a/node_modules/tunnel/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/node_modules/tunnel/.idea/node-tunnel.iml b/node_modules/tunnel/.idea/node-tunnel.iml deleted file mode 100644 index 24643cc37..000000000 --- a/node_modules/tunnel/.idea/node-tunnel.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/tunnel/.idea/vcs.xml b/node_modules/tunnel/.idea/vcs.xml deleted file mode 100644 index 94a25f7f4..000000000 --- a/node_modules/tunnel/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/node_modules/tunnel/.idea/workspace.xml b/node_modules/tunnel/.idea/workspace.xml deleted file mode 100644 index 1a318c8f4..000000000 --- a/node_modules/tunnel/.idea/workspace.xml +++ /dev/null @@ -1,797 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - max - onconne - - - - - - - - - - - - - false - - false - false - true - - - true - DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // - DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // - DATE: 'YYYY-MM-DD', // - TIME: 'HH:mm', // - TIME_SECONDS: 'HH:mm:ss', // - TIME_MS: 'HH:mm:ss.SSS', // - WEEK: 'GGGG-[W]WW', // - MONTH: 'YYYY-MM', // - }; - - return hooks; - -}))); - - -/***/ }), - -/***/ 467: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var Stream = _interopDefault(__webpack_require__(2413)); -var http = _interopDefault(__webpack_require__(8605)); -var Url = _interopDefault(__webpack_require__(8835)); -var https = _interopDefault(__webpack_require__(7211)); -var zlib = _interopDefault(__webpack_require__(8761)); - -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js - -// fix for "Readable" isn't a named export issue -const Readable = Stream.Readable; - -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); - -class Blob { - constructor() { - this[TYPE] = ''; - - const blobParts = arguments[0]; - const options = arguments[1]; - - const buffers = []; - let size = 0; - - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } - - this[BUFFER] = Buffer.concat(buffers); - - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); - - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } -} - -Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); - -Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * fetch-error.js - * - * FetchError interface for operational errors - */ - -/** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError - */ -function FetchError(message, type, systemError) { - Error.call(this, message); - - this.message = message; - this.type = type; - - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = __webpack_require__(2877).convert; -} catch (e) {} - -const INTERNALS = Symbol('Body internals'); - -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream.PassThrough; - -/** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -function Body(body) { - var _this = this; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; - - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; - - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - - if (body instanceof Stream) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } -} - -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, - - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; - - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, - - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, - - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; - - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } -}; - -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); - -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } -}; - -/** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise - */ -function consumeBody() { - var _this4 = this; - - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - - this[INTERNALS].disturbed = true; - - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - - let body = this.body; - - // body is null - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is blob - if (isBlob(body)) { - body = body.stream(); - } - - // body is buffer - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } - - // istanbul ignore if: should never happen - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body.Promise(function (resolve, reject) { - let resTimeout; - - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } - - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } - - accumBytes += chunk.length; - accum.push(chunk); - }); - - body.on('end', function () { - if (abort) { - return; - } - - clearTimeout(resTimeout); - - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); -} - -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } - - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); - - // html5 - if (!res && str) { - res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; - - this[MAP] = Object.create(null); - - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } - - return; - } - - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } - - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } - - return this[MAP][key].join(', '); - } - - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } - - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } - - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } - - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; - } - - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } - - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } - - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } - - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } - - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } -} -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; - -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } -}); - -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; - - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} - -const INTERNAL = Symbol('internal'); - -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} - -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } - - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } - - this[INTERNAL].index = index + 1; - - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); - -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } - - return obj; -} - -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; -} - -const INTERNALS$1 = Symbol('Response internals'); - -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http.STATUS_CODES; - -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - Body.call(this, body, opts); - - const status = opts.status || 200; - const headers = new Headers(opts.headers); - - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } - - get url() { - return this[INTERNALS$1].url || ''; - } - - get status() { - return this[INTERNALS$1].status; - } - - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } - - get redirected() { - return this[INTERNALS$1].counter > 0; - } - - get statusText() { - return this[INTERNALS$1].statusText; - } - - get headers() { - return this[INTERNALS$1].headers; - } - - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } -} - -Body.mixIn(Response.prototype); - -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); - -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); - -const INTERNALS$2 = Symbol('Request internals'); - -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; - -const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; - -/** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} - -function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); -} - -/** - * Request class - * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void - */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parse_url(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parse_url(`${input}`); - } - input = {}; - } else { - parsedURL = parse_url(input.url); - } - - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } - - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; - - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); - - const headers = new Headers(init.headers || input.headers || {}); - - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } - - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; - - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - - get method() { - return this[INTERNALS$2].method; - } - - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } - - get headers() { - return this[INTERNALS$2].headers; - } - - get redirect() { - return this[INTERNALS$2].redirect; - } - - get signal() { - return this[INTERNALS$2].signal; - } - - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} - -Body.mixIn(Request.prototype); - -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); - -/** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request - */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - - // HTTP-network-or-cache fetch step 2.15 - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } - - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); - } - - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js - - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); -} - -/** - * abort-error.js - * - * AbortError interface for cancelled requests - */ - -/** - * Create AbortError instance - * - * @param String message Error message for human - * @return AbortError - */ -function AbortError(message) { - Error.call(this, message); - - this.type = 'aborted'; - this.message = message; - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -AbortError.prototype = Object.create(Error.prototype); -AbortError.prototype.constructor = AbortError; -AbortError.prototype.name = 'AbortError'; - -// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream.PassThrough; -const resolve_url = Url.resolve; - -/** - * Fetch function - * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise - */ -function fetch(url, opts) { - - // allow custom promise - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - - Body.Promise = fetch.Promise; - - // wrap http.request into fetch - return new fetch.Promise(function (resolve, reject) { - // build request object - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); - - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; - - let response = null; - - const abort = function abort() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; - - if (signal && signal.aborted) { - abort(); - return; - } - - const abortAndFinalize = function abortAndFinalize() { - abort(); - finalize(); - }; - - // send request - const req = send(options); - let reqTimeout; - - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } - - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } - - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); - - req.on('response', function (res) { - clearTimeout(reqTimeout); - - const headers = createHeadersLenient(res.headers); - - // HTTP fetch step 5 - if (fetch.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); - - // HTTP fetch step 5.3 - const locationURL = location === null ? null : resolve_url(request.url, location); - - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - // handle corrupted header - try { - headers.set('Location', locationURL); - } catch (err) { - // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request - reject(err); - } - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } - - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } - - // HTTP-redirect fetch step 15 - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } - - // prepare response - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); - - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; - - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); - - // HTTP-network fetch step 12.1.1.4: handle content codings - - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - response = new Response(body, response_options); - resolve(response); - return; - } - - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body, response_options); - resolve(response); - return; - } - - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response(body, response_options); - resolve(response); - }); - return; - } - - // for br - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response(body, response_options); - resolve(response); - return; - } - - // otherwise, use response as-is - response = new Response(body, response_options); - resolve(response); - }); - - writeToStream(req, request); - }); -} -/** - * Redirect code matching - * - * @param Number code Status code - * @return Boolean - */ -fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; - -// expose Promise -fetch.Promise = global.Promise; - -module.exports = exports = fetch; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.default = exports; -exports.Headers = Headers; -exports.Request = Request; -exports.Response = Response; -exports.FetchError = FetchError; - - -/***/ }), - -/***/ 1223: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var wrappy = __webpack_require__(2940) -module.exports = wrappy(once) -module.exports.strict = wrappy(onceStrict) - -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) - - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this) - }, - configurable: true - }) -}) - -function once (fn) { - var f = function () { - if (f.called) return f.value - f.called = true - return f.value = fn.apply(this, arguments) - } - f.called = false - return f -} - -function onceStrict (fn) { - var f = function () { - if (f.called) - throw new Error(f.onceError) - f.called = true - return f.value = fn.apply(this, arguments) - } - var name = fn.name || 'Function wrapped with `once`' - f.onceError = name + " shouldn't be called more than once" - f.called = false - return f -} - - -/***/ }), - -/***/ 9308: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var isObject = __webpack_require__(4001); -var path = __webpack_require__(5622); -var fs = __webpack_require__(5747); - -/** - * Expose `relative` - */ - -module.exports = relative; - -/** - * Get the relative path from `a` to `b`. - */ - -function relative(a, b, stat) { - if (typeof a !== 'string') { - throw new TypeError('relative expects a string.'); - } - - if (a == '' && !b) return a; - - var len = arguments.length; - if (len === 1) { - b = a; a = process.cwd(); stat = null; - } - - if (len === 2 && typeof b === 'boolean') { - b = a; a = process.cwd(); stat = true; - } - - if (len === 2 && typeof b === 'object') { - stat = b; b = a; a = process.cwd(); - } - - var origB = b; - - // see if a slash exists before normalizing - var slashA = endsWith(a, '/'); - var slashB = endsWith(b, '/'); - - a = unixify(a); - b = unixify(b); - - // if `a` had a slash, add it back - if (slashA) { a = a + '/'; } - - if (isFile(a, stat)) { - a = path.dirname(a); - } - - var res = path.relative(a, b); - if (res === '') { - return '.'; - } - - // if `b` originally had a slash, and the path ends - // with `b` missing a slash, then re-add the slash. - var noslash = trimEnd(origB, '/'); - if (slashB && (res === noslash || endsWith(res, noslash))) { - res = res + '/'; - } - return res; -} - -/** - * Get the path relative to the given base path. - */ - -relative.toBase = function toBase(base, fp) { - base = unixify(base); - fp = unixify(fp); - - var res = fp.slice(base.length); - if (res.charAt(0) === '/') { - res = res.slice(1); - } - return res; -}; - -/** - * Normalize slashes in paths to unix slashes. This is necessary since - * paths are not calculated the same by node.js when - * windows paths are used. - */ - -function unixify(str) { - return str.replace(/[\\\/]+/g, '/'); -} - -/** - * Remove the given character from the path. - */ - -function trimEnd(fp, ch) { - return fp.slice(0, fp.length - ch.length); -} - -/** - * Does the path end with the given `ch`aracter? - */ - -function endsWith(fp, ch) { - return fp.slice(-ch.length)[0] === ch; -} - -/** - * If `fp` exists, return a `stat` object, - * otherwise return `null`. - */ - -function tryStats(fp) { - try { - return fs.statSync(fp); - } catch(err) {} - return null; -} - -/** - * Returns true if `fp` is a directory. To use a `fs` - * stat object to actually check the file system, - * either pass `true` as the second arg, or pass your - * own stat object as the second arg. - * - * @param {String} `fp` - * @param {Boolean|Object} `stat` - * @return {Boolean} - */ - -function isDir(fp, stat) { - if (endsWith(fp, '/')) { - return true; - } - - if (stat === null) { - // try to get the directory info if it hasn't been done yet - // to ensure directories containing dots are well handle - stat = tryStats(fp); - } - - if (isObject(stat) && typeof stat.isDirectory === 'function') { - return stat.isDirectory(); - } - - var segs = fp.split('/'); - var last = segs[segs.length - 1]; - if (last && last.indexOf('.') !== -1) { - return false; - } - return true; -} - -/** - * Return true if `fp` looks like a file, or - * actually is a file if fs.stat is used. - */ - -function isFile(fp, stat) { - if (stat === true) { - stat = tryStats(fp); - } - return !isDir(fp, stat); -} - - -/***/ }), - -/***/ 4001: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * isobject - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -var isArray = __webpack_require__(893); - -module.exports = function isObject(val) { - return val != null && typeof val === 'object' && isArray(val) === false; -}; - - -/***/ }), - -/***/ 641: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -module.exports = __webpack_require__(6288); - - -/***/ }), - -/***/ 4184: -/***/ ((module) => { - -"use strict"; -// List of valid entities -// -// Generate with ./support/entities.js script -// - - -/*eslint quotes:0*/ -module.exports = { - "Aacute":"\u00C1", - "aacute":"\u00E1", - "Abreve":"\u0102", - "abreve":"\u0103", - "ac":"\u223E", - "acd":"\u223F", - "acE":"\u223E\u0333", - "Acirc":"\u00C2", - "acirc":"\u00E2", - "acute":"\u00B4", - "Acy":"\u0410", - "acy":"\u0430", - "AElig":"\u00C6", - "aelig":"\u00E6", - "af":"\u2061", - "Afr":"\uD835\uDD04", - "afr":"\uD835\uDD1E", - "Agrave":"\u00C0", - "agrave":"\u00E0", - "alefsym":"\u2135", - "aleph":"\u2135", - "Alpha":"\u0391", - "alpha":"\u03B1", - "Amacr":"\u0100", - "amacr":"\u0101", - "amalg":"\u2A3F", - "AMP":"\u0026", - "amp":"\u0026", - "And":"\u2A53", - "and":"\u2227", - "andand":"\u2A55", - "andd":"\u2A5C", - "andslope":"\u2A58", - "andv":"\u2A5A", - "ang":"\u2220", - "ange":"\u29A4", - "angle":"\u2220", - "angmsd":"\u2221", - "angmsdaa":"\u29A8", - "angmsdab":"\u29A9", - "angmsdac":"\u29AA", - "angmsdad":"\u29AB", - "angmsdae":"\u29AC", - "angmsdaf":"\u29AD", - "angmsdag":"\u29AE", - "angmsdah":"\u29AF", - "angrt":"\u221F", - "angrtvb":"\u22BE", - "angrtvbd":"\u299D", - "angsph":"\u2222", - "angst":"\u00C5", - "angzarr":"\u237C", - "Aogon":"\u0104", - "aogon":"\u0105", - "Aopf":"\uD835\uDD38", - "aopf":"\uD835\uDD52", - "ap":"\u2248", - "apacir":"\u2A6F", - "apE":"\u2A70", - "ape":"\u224A", - "apid":"\u224B", - "apos":"\u0027", - "ApplyFunction":"\u2061", - "approx":"\u2248", - "approxeq":"\u224A", - "Aring":"\u00C5", - "aring":"\u00E5", - "Ascr":"\uD835\uDC9C", - "ascr":"\uD835\uDCB6", - "Assign":"\u2254", - "ast":"\u002A", - "asymp":"\u2248", - "asympeq":"\u224D", - "Atilde":"\u00C3", - "atilde":"\u00E3", - "Auml":"\u00C4", - "auml":"\u00E4", - "awconint":"\u2233", - "awint":"\u2A11", - "backcong":"\u224C", - "backepsilon":"\u03F6", - "backprime":"\u2035", - "backsim":"\u223D", - "backsimeq":"\u22CD", - "Backslash":"\u2216", - "Barv":"\u2AE7", - "barvee":"\u22BD", - "Barwed":"\u2306", - "barwed":"\u2305", - "barwedge":"\u2305", - "bbrk":"\u23B5", - "bbrktbrk":"\u23B6", - "bcong":"\u224C", - "Bcy":"\u0411", - "bcy":"\u0431", - "bdquo":"\u201E", - "becaus":"\u2235", - "Because":"\u2235", - "because":"\u2235", - "bemptyv":"\u29B0", - "bepsi":"\u03F6", - "bernou":"\u212C", - "Bernoullis":"\u212C", - "Beta":"\u0392", - "beta":"\u03B2", - "beth":"\u2136", - "between":"\u226C", - "Bfr":"\uD835\uDD05", - "bfr":"\uD835\uDD1F", - "bigcap":"\u22C2", - "bigcirc":"\u25EF", - "bigcup":"\u22C3", - "bigodot":"\u2A00", - "bigoplus":"\u2A01", - "bigotimes":"\u2A02", - "bigsqcup":"\u2A06", - "bigstar":"\u2605", - "bigtriangledown":"\u25BD", - "bigtriangleup":"\u25B3", - "biguplus":"\u2A04", - "bigvee":"\u22C1", - "bigwedge":"\u22C0", - "bkarow":"\u290D", - "blacklozenge":"\u29EB", - "blacksquare":"\u25AA", - "blacktriangle":"\u25B4", - "blacktriangledown":"\u25BE", - "blacktriangleleft":"\u25C2", - "blacktriangleright":"\u25B8", - "blank":"\u2423", - "blk12":"\u2592", - "blk14":"\u2591", - "blk34":"\u2593", - "block":"\u2588", - "bne":"\u003D\u20E5", - "bnequiv":"\u2261\u20E5", - "bNot":"\u2AED", - "bnot":"\u2310", - "Bopf":"\uD835\uDD39", - "bopf":"\uD835\uDD53", - "bot":"\u22A5", - "bottom":"\u22A5", - "bowtie":"\u22C8", - "boxbox":"\u29C9", - "boxDL":"\u2557", - "boxDl":"\u2556", - "boxdL":"\u2555", - "boxdl":"\u2510", - "boxDR":"\u2554", - "boxDr":"\u2553", - "boxdR":"\u2552", - "boxdr":"\u250C", - "boxH":"\u2550", - "boxh":"\u2500", - "boxHD":"\u2566", - "boxHd":"\u2564", - "boxhD":"\u2565", - "boxhd":"\u252C", - "boxHU":"\u2569", - "boxHu":"\u2567", - "boxhU":"\u2568", - "boxhu":"\u2534", - "boxminus":"\u229F", - "boxplus":"\u229E", - "boxtimes":"\u22A0", - "boxUL":"\u255D", - "boxUl":"\u255C", - "boxuL":"\u255B", - "boxul":"\u2518", - "boxUR":"\u255A", - "boxUr":"\u2559", - "boxuR":"\u2558", - "boxur":"\u2514", - "boxV":"\u2551", - "boxv":"\u2502", - "boxVH":"\u256C", - "boxVh":"\u256B", - "boxvH":"\u256A", - "boxvh":"\u253C", - "boxVL":"\u2563", - "boxVl":"\u2562", - "boxvL":"\u2561", - "boxvl":"\u2524", - "boxVR":"\u2560", - "boxVr":"\u255F", - "boxvR":"\u255E", - "boxvr":"\u251C", - "bprime":"\u2035", - "Breve":"\u02D8", - "breve":"\u02D8", - "brvbar":"\u00A6", - "Bscr":"\u212C", - "bscr":"\uD835\uDCB7", - "bsemi":"\u204F", - "bsim":"\u223D", - "bsime":"\u22CD", - "bsol":"\u005C", - "bsolb":"\u29C5", - "bsolhsub":"\u27C8", - "bull":"\u2022", - "bullet":"\u2022", - "bump":"\u224E", - "bumpE":"\u2AAE", - "bumpe":"\u224F", - "Bumpeq":"\u224E", - "bumpeq":"\u224F", - "Cacute":"\u0106", - "cacute":"\u0107", - "Cap":"\u22D2", - "cap":"\u2229", - "capand":"\u2A44", - "capbrcup":"\u2A49", - "capcap":"\u2A4B", - "capcup":"\u2A47", - "capdot":"\u2A40", - "CapitalDifferentialD":"\u2145", - "caps":"\u2229\uFE00", - "caret":"\u2041", - "caron":"\u02C7", - "Cayleys":"\u212D", - "ccaps":"\u2A4D", - "Ccaron":"\u010C", - "ccaron":"\u010D", - "Ccedil":"\u00C7", - "ccedil":"\u00E7", - "Ccirc":"\u0108", - "ccirc":"\u0109", - "Cconint":"\u2230", - "ccups":"\u2A4C", - "ccupssm":"\u2A50", - "Cdot":"\u010A", - "cdot":"\u010B", - "cedil":"\u00B8", - "Cedilla":"\u00B8", - "cemptyv":"\u29B2", - "cent":"\u00A2", - "CenterDot":"\u00B7", - "centerdot":"\u00B7", - "Cfr":"\u212D", - "cfr":"\uD835\uDD20", - "CHcy":"\u0427", - "chcy":"\u0447", - "check":"\u2713", - "checkmark":"\u2713", - "Chi":"\u03A7", - "chi":"\u03C7", - "cir":"\u25CB", - "circ":"\u02C6", - "circeq":"\u2257", - "circlearrowleft":"\u21BA", - "circlearrowright":"\u21BB", - "circledast":"\u229B", - "circledcirc":"\u229A", - "circleddash":"\u229D", - "CircleDot":"\u2299", - "circledR":"\u00AE", - "circledS":"\u24C8", - "CircleMinus":"\u2296", - "CirclePlus":"\u2295", - "CircleTimes":"\u2297", - "cirE":"\u29C3", - "cire":"\u2257", - "cirfnint":"\u2A10", - "cirmid":"\u2AEF", - "cirscir":"\u29C2", - "ClockwiseContourIntegral":"\u2232", - "CloseCurlyDoubleQuote":"\u201D", - "CloseCurlyQuote":"\u2019", - "clubs":"\u2663", - "clubsuit":"\u2663", - "Colon":"\u2237", - "colon":"\u003A", - "Colone":"\u2A74", - "colone":"\u2254", - "coloneq":"\u2254", - "comma":"\u002C", - "commat":"\u0040", - "comp":"\u2201", - "compfn":"\u2218", - "complement":"\u2201", - "complexes":"\u2102", - "cong":"\u2245", - "congdot":"\u2A6D", - "Congruent":"\u2261", - "Conint":"\u222F", - "conint":"\u222E", - "ContourIntegral":"\u222E", - "Copf":"\u2102", - "copf":"\uD835\uDD54", - "coprod":"\u2210", - "Coproduct":"\u2210", - "COPY":"\u00A9", - "copy":"\u00A9", - "copysr":"\u2117", - "CounterClockwiseContourIntegral":"\u2233", - "crarr":"\u21B5", - "Cross":"\u2A2F", - "cross":"\u2717", - "Cscr":"\uD835\uDC9E", - "cscr":"\uD835\uDCB8", - "csub":"\u2ACF", - "csube":"\u2AD1", - "csup":"\u2AD0", - "csupe":"\u2AD2", - "ctdot":"\u22EF", - "cudarrl":"\u2938", - "cudarrr":"\u2935", - "cuepr":"\u22DE", - "cuesc":"\u22DF", - "cularr":"\u21B6", - "cularrp":"\u293D", - "Cup":"\u22D3", - "cup":"\u222A", - "cupbrcap":"\u2A48", - "CupCap":"\u224D", - "cupcap":"\u2A46", - "cupcup":"\u2A4A", - "cupdot":"\u228D", - "cupor":"\u2A45", - "cups":"\u222A\uFE00", - "curarr":"\u21B7", - "curarrm":"\u293C", - "curlyeqprec":"\u22DE", - "curlyeqsucc":"\u22DF", - "curlyvee":"\u22CE", - "curlywedge":"\u22CF", - "curren":"\u00A4", - "curvearrowleft":"\u21B6", - "curvearrowright":"\u21B7", - "cuvee":"\u22CE", - "cuwed":"\u22CF", - "cwconint":"\u2232", - "cwint":"\u2231", - "cylcty":"\u232D", - "Dagger":"\u2021", - "dagger":"\u2020", - "daleth":"\u2138", - "Darr":"\u21A1", - "dArr":"\u21D3", - "darr":"\u2193", - "dash":"\u2010", - "Dashv":"\u2AE4", - "dashv":"\u22A3", - "dbkarow":"\u290F", - "dblac":"\u02DD", - "Dcaron":"\u010E", - "dcaron":"\u010F", - "Dcy":"\u0414", - "dcy":"\u0434", - "DD":"\u2145", - "dd":"\u2146", - "ddagger":"\u2021", - "ddarr":"\u21CA", - "DDotrahd":"\u2911", - "ddotseq":"\u2A77", - "deg":"\u00B0", - "Del":"\u2207", - "Delta":"\u0394", - "delta":"\u03B4", - "demptyv":"\u29B1", - "dfisht":"\u297F", - "Dfr":"\uD835\uDD07", - "dfr":"\uD835\uDD21", - "dHar":"\u2965", - "dharl":"\u21C3", - "dharr":"\u21C2", - "DiacriticalAcute":"\u00B4", - "DiacriticalDot":"\u02D9", - "DiacriticalDoubleAcute":"\u02DD", - "DiacriticalGrave":"\u0060", - "DiacriticalTilde":"\u02DC", - "diam":"\u22C4", - "Diamond":"\u22C4", - "diamond":"\u22C4", - "diamondsuit":"\u2666", - "diams":"\u2666", - "die":"\u00A8", - "DifferentialD":"\u2146", - "digamma":"\u03DD", - "disin":"\u22F2", - "div":"\u00F7", - "divide":"\u00F7", - "divideontimes":"\u22C7", - "divonx":"\u22C7", - "DJcy":"\u0402", - "djcy":"\u0452", - "dlcorn":"\u231E", - "dlcrop":"\u230D", - "dollar":"\u0024", - "Dopf":"\uD835\uDD3B", - "dopf":"\uD835\uDD55", - "Dot":"\u00A8", - "dot":"\u02D9", - "DotDot":"\u20DC", - "doteq":"\u2250", - "doteqdot":"\u2251", - "DotEqual":"\u2250", - "dotminus":"\u2238", - "dotplus":"\u2214", - "dotsquare":"\u22A1", - "doublebarwedge":"\u2306", - "DoubleContourIntegral":"\u222F", - "DoubleDot":"\u00A8", - "DoubleDownArrow":"\u21D3", - "DoubleLeftArrow":"\u21D0", - "DoubleLeftRightArrow":"\u21D4", - "DoubleLeftTee":"\u2AE4", - "DoubleLongLeftArrow":"\u27F8", - "DoubleLongLeftRightArrow":"\u27FA", - "DoubleLongRightArrow":"\u27F9", - "DoubleRightArrow":"\u21D2", - "DoubleRightTee":"\u22A8", - "DoubleUpArrow":"\u21D1", - "DoubleUpDownArrow":"\u21D5", - "DoubleVerticalBar":"\u2225", - "DownArrow":"\u2193", - "Downarrow":"\u21D3", - "downarrow":"\u2193", - "DownArrowBar":"\u2913", - "DownArrowUpArrow":"\u21F5", - "DownBreve":"\u0311", - "downdownarrows":"\u21CA", - "downharpoonleft":"\u21C3", - "downharpoonright":"\u21C2", - "DownLeftRightVector":"\u2950", - "DownLeftTeeVector":"\u295E", - "DownLeftVector":"\u21BD", - "DownLeftVectorBar":"\u2956", - "DownRightTeeVector":"\u295F", - "DownRightVector":"\u21C1", - "DownRightVectorBar":"\u2957", - "DownTee":"\u22A4", - "DownTeeArrow":"\u21A7", - "drbkarow":"\u2910", - "drcorn":"\u231F", - "drcrop":"\u230C", - "Dscr":"\uD835\uDC9F", - "dscr":"\uD835\uDCB9", - "DScy":"\u0405", - "dscy":"\u0455", - "dsol":"\u29F6", - "Dstrok":"\u0110", - "dstrok":"\u0111", - "dtdot":"\u22F1", - "dtri":"\u25BF", - "dtrif":"\u25BE", - "duarr":"\u21F5", - "duhar":"\u296F", - "dwangle":"\u29A6", - "DZcy":"\u040F", - "dzcy":"\u045F", - "dzigrarr":"\u27FF", - "Eacute":"\u00C9", - "eacute":"\u00E9", - "easter":"\u2A6E", - "Ecaron":"\u011A", - "ecaron":"\u011B", - "ecir":"\u2256", - "Ecirc":"\u00CA", - "ecirc":"\u00EA", - "ecolon":"\u2255", - "Ecy":"\u042D", - "ecy":"\u044D", - "eDDot":"\u2A77", - "Edot":"\u0116", - "eDot":"\u2251", - "edot":"\u0117", - "ee":"\u2147", - "efDot":"\u2252", - "Efr":"\uD835\uDD08", - "efr":"\uD835\uDD22", - "eg":"\u2A9A", - "Egrave":"\u00C8", - "egrave":"\u00E8", - "egs":"\u2A96", - "egsdot":"\u2A98", - "el":"\u2A99", - "Element":"\u2208", - "elinters":"\u23E7", - "ell":"\u2113", - "els":"\u2A95", - "elsdot":"\u2A97", - "Emacr":"\u0112", - "emacr":"\u0113", - "empty":"\u2205", - "emptyset":"\u2205", - "EmptySmallSquare":"\u25FB", - "emptyv":"\u2205", - "EmptyVerySmallSquare":"\u25AB", - "emsp":"\u2003", - "emsp13":"\u2004", - "emsp14":"\u2005", - "ENG":"\u014A", - "eng":"\u014B", - "ensp":"\u2002", - "Eogon":"\u0118", - "eogon":"\u0119", - "Eopf":"\uD835\uDD3C", - "eopf":"\uD835\uDD56", - "epar":"\u22D5", - "eparsl":"\u29E3", - "eplus":"\u2A71", - "epsi":"\u03B5", - "Epsilon":"\u0395", - "epsilon":"\u03B5", - "epsiv":"\u03F5", - "eqcirc":"\u2256", - "eqcolon":"\u2255", - "eqsim":"\u2242", - "eqslantgtr":"\u2A96", - "eqslantless":"\u2A95", - "Equal":"\u2A75", - "equals":"\u003D", - "EqualTilde":"\u2242", - "equest":"\u225F", - "Equilibrium":"\u21CC", - "equiv":"\u2261", - "equivDD":"\u2A78", - "eqvparsl":"\u29E5", - "erarr":"\u2971", - "erDot":"\u2253", - "Escr":"\u2130", - "escr":"\u212F", - "esdot":"\u2250", - "Esim":"\u2A73", - "esim":"\u2242", - "Eta":"\u0397", - "eta":"\u03B7", - "ETH":"\u00D0", - "eth":"\u00F0", - "Euml":"\u00CB", - "euml":"\u00EB", - "euro":"\u20AC", - "excl":"\u0021", - "exist":"\u2203", - "Exists":"\u2203", - "expectation":"\u2130", - "ExponentialE":"\u2147", - "exponentiale":"\u2147", - "fallingdotseq":"\u2252", - "Fcy":"\u0424", - "fcy":"\u0444", - "female":"\u2640", - "ffilig":"\uFB03", - "fflig":"\uFB00", - "ffllig":"\uFB04", - "Ffr":"\uD835\uDD09", - "ffr":"\uD835\uDD23", - "filig":"\uFB01", - "FilledSmallSquare":"\u25FC", - "FilledVerySmallSquare":"\u25AA", - "fjlig":"\u0066\u006A", - "flat":"\u266D", - "fllig":"\uFB02", - "fltns":"\u25B1", - "fnof":"\u0192", - "Fopf":"\uD835\uDD3D", - "fopf":"\uD835\uDD57", - "ForAll":"\u2200", - "forall":"\u2200", - "fork":"\u22D4", - "forkv":"\u2AD9", - "Fouriertrf":"\u2131", - "fpartint":"\u2A0D", - "frac12":"\u00BD", - "frac13":"\u2153", - "frac14":"\u00BC", - "frac15":"\u2155", - "frac16":"\u2159", - "frac18":"\u215B", - "frac23":"\u2154", - "frac25":"\u2156", - "frac34":"\u00BE", - "frac35":"\u2157", - "frac38":"\u215C", - "frac45":"\u2158", - "frac56":"\u215A", - "frac58":"\u215D", - "frac78":"\u215E", - "frasl":"\u2044", - "frown":"\u2322", - "Fscr":"\u2131", - "fscr":"\uD835\uDCBB", - "gacute":"\u01F5", - "Gamma":"\u0393", - "gamma":"\u03B3", - "Gammad":"\u03DC", - "gammad":"\u03DD", - "gap":"\u2A86", - "Gbreve":"\u011E", - "gbreve":"\u011F", - "Gcedil":"\u0122", - "Gcirc":"\u011C", - "gcirc":"\u011D", - "Gcy":"\u0413", - "gcy":"\u0433", - "Gdot":"\u0120", - "gdot":"\u0121", - "gE":"\u2267", - "ge":"\u2265", - "gEl":"\u2A8C", - "gel":"\u22DB", - "geq":"\u2265", - "geqq":"\u2267", - "geqslant":"\u2A7E", - "ges":"\u2A7E", - "gescc":"\u2AA9", - "gesdot":"\u2A80", - "gesdoto":"\u2A82", - "gesdotol":"\u2A84", - "gesl":"\u22DB\uFE00", - "gesles":"\u2A94", - "Gfr":"\uD835\uDD0A", - "gfr":"\uD835\uDD24", - "Gg":"\u22D9", - "gg":"\u226B", - "ggg":"\u22D9", - "gimel":"\u2137", - "GJcy":"\u0403", - "gjcy":"\u0453", - "gl":"\u2277", - "gla":"\u2AA5", - "glE":"\u2A92", - "glj":"\u2AA4", - "gnap":"\u2A8A", - "gnapprox":"\u2A8A", - "gnE":"\u2269", - "gne":"\u2A88", - "gneq":"\u2A88", - "gneqq":"\u2269", - "gnsim":"\u22E7", - "Gopf":"\uD835\uDD3E", - "gopf":"\uD835\uDD58", - "grave":"\u0060", - "GreaterEqual":"\u2265", - "GreaterEqualLess":"\u22DB", - "GreaterFullEqual":"\u2267", - "GreaterGreater":"\u2AA2", - "GreaterLess":"\u2277", - "GreaterSlantEqual":"\u2A7E", - "GreaterTilde":"\u2273", - "Gscr":"\uD835\uDCA2", - "gscr":"\u210A", - "gsim":"\u2273", - "gsime":"\u2A8E", - "gsiml":"\u2A90", - "GT":"\u003E", - "Gt":"\u226B", - "gt":"\u003E", - "gtcc":"\u2AA7", - "gtcir":"\u2A7A", - "gtdot":"\u22D7", - "gtlPar":"\u2995", - "gtquest":"\u2A7C", - "gtrapprox":"\u2A86", - "gtrarr":"\u2978", - "gtrdot":"\u22D7", - "gtreqless":"\u22DB", - "gtreqqless":"\u2A8C", - "gtrless":"\u2277", - "gtrsim":"\u2273", - "gvertneqq":"\u2269\uFE00", - "gvnE":"\u2269\uFE00", - "Hacek":"\u02C7", - "hairsp":"\u200A", - "half":"\u00BD", - "hamilt":"\u210B", - "HARDcy":"\u042A", - "hardcy":"\u044A", - "hArr":"\u21D4", - "harr":"\u2194", - "harrcir":"\u2948", - "harrw":"\u21AD", - "Hat":"\u005E", - "hbar":"\u210F", - "Hcirc":"\u0124", - "hcirc":"\u0125", - "hearts":"\u2665", - "heartsuit":"\u2665", - "hellip":"\u2026", - "hercon":"\u22B9", - "Hfr":"\u210C", - "hfr":"\uD835\uDD25", - "HilbertSpace":"\u210B", - "hksearow":"\u2925", - "hkswarow":"\u2926", - "hoarr":"\u21FF", - "homtht":"\u223B", - "hookleftarrow":"\u21A9", - "hookrightarrow":"\u21AA", - "Hopf":"\u210D", - "hopf":"\uD835\uDD59", - "horbar":"\u2015", - "HorizontalLine":"\u2500", - "Hscr":"\u210B", - "hscr":"\uD835\uDCBD", - "hslash":"\u210F", - "Hstrok":"\u0126", - "hstrok":"\u0127", - "HumpDownHump":"\u224E", - "HumpEqual":"\u224F", - "hybull":"\u2043", - "hyphen":"\u2010", - "Iacute":"\u00CD", - "iacute":"\u00ED", - "ic":"\u2063", - "Icirc":"\u00CE", - "icirc":"\u00EE", - "Icy":"\u0418", - "icy":"\u0438", - "Idot":"\u0130", - "IEcy":"\u0415", - "iecy":"\u0435", - "iexcl":"\u00A1", - "iff":"\u21D4", - "Ifr":"\u2111", - "ifr":"\uD835\uDD26", - "Igrave":"\u00CC", - "igrave":"\u00EC", - "ii":"\u2148", - "iiiint":"\u2A0C", - "iiint":"\u222D", - "iinfin":"\u29DC", - "iiota":"\u2129", - "IJlig":"\u0132", - "ijlig":"\u0133", - "Im":"\u2111", - "Imacr":"\u012A", - "imacr":"\u012B", - "image":"\u2111", - "ImaginaryI":"\u2148", - "imagline":"\u2110", - "imagpart":"\u2111", - "imath":"\u0131", - "imof":"\u22B7", - "imped":"\u01B5", - "Implies":"\u21D2", - "in":"\u2208", - "incare":"\u2105", - "infin":"\u221E", - "infintie":"\u29DD", - "inodot":"\u0131", - "Int":"\u222C", - "int":"\u222B", - "intcal":"\u22BA", - "integers":"\u2124", - "Integral":"\u222B", - "intercal":"\u22BA", - "Intersection":"\u22C2", - "intlarhk":"\u2A17", - "intprod":"\u2A3C", - "InvisibleComma":"\u2063", - "InvisibleTimes":"\u2062", - "IOcy":"\u0401", - "iocy":"\u0451", - "Iogon":"\u012E", - "iogon":"\u012F", - "Iopf":"\uD835\uDD40", - "iopf":"\uD835\uDD5A", - "Iota":"\u0399", - "iota":"\u03B9", - "iprod":"\u2A3C", - "iquest":"\u00BF", - "Iscr":"\u2110", - "iscr":"\uD835\uDCBE", - "isin":"\u2208", - "isindot":"\u22F5", - "isinE":"\u22F9", - "isins":"\u22F4", - "isinsv":"\u22F3", - "isinv":"\u2208", - "it":"\u2062", - "Itilde":"\u0128", - "itilde":"\u0129", - "Iukcy":"\u0406", - "iukcy":"\u0456", - "Iuml":"\u00CF", - "iuml":"\u00EF", - "Jcirc":"\u0134", - "jcirc":"\u0135", - "Jcy":"\u0419", - "jcy":"\u0439", - "Jfr":"\uD835\uDD0D", - "jfr":"\uD835\uDD27", - "jmath":"\u0237", - "Jopf":"\uD835\uDD41", - "jopf":"\uD835\uDD5B", - "Jscr":"\uD835\uDCA5", - "jscr":"\uD835\uDCBF", - "Jsercy":"\u0408", - "jsercy":"\u0458", - "Jukcy":"\u0404", - "jukcy":"\u0454", - "Kappa":"\u039A", - "kappa":"\u03BA", - "kappav":"\u03F0", - "Kcedil":"\u0136", - "kcedil":"\u0137", - "Kcy":"\u041A", - "kcy":"\u043A", - "Kfr":"\uD835\uDD0E", - "kfr":"\uD835\uDD28", - "kgreen":"\u0138", - "KHcy":"\u0425", - "khcy":"\u0445", - "KJcy":"\u040C", - "kjcy":"\u045C", - "Kopf":"\uD835\uDD42", - "kopf":"\uD835\uDD5C", - "Kscr":"\uD835\uDCA6", - "kscr":"\uD835\uDCC0", - "lAarr":"\u21DA", - "Lacute":"\u0139", - "lacute":"\u013A", - "laemptyv":"\u29B4", - "lagran":"\u2112", - "Lambda":"\u039B", - "lambda":"\u03BB", - "Lang":"\u27EA", - "lang":"\u27E8", - "langd":"\u2991", - "langle":"\u27E8", - "lap":"\u2A85", - "Laplacetrf":"\u2112", - "laquo":"\u00AB", - "Larr":"\u219E", - "lArr":"\u21D0", - "larr":"\u2190", - "larrb":"\u21E4", - "larrbfs":"\u291F", - "larrfs":"\u291D", - "larrhk":"\u21A9", - "larrlp":"\u21AB", - "larrpl":"\u2939", - "larrsim":"\u2973", - "larrtl":"\u21A2", - "lat":"\u2AAB", - "lAtail":"\u291B", - "latail":"\u2919", - "late":"\u2AAD", - "lates":"\u2AAD\uFE00", - "lBarr":"\u290E", - "lbarr":"\u290C", - "lbbrk":"\u2772", - "lbrace":"\u007B", - "lbrack":"\u005B", - "lbrke":"\u298B", - "lbrksld":"\u298F", - "lbrkslu":"\u298D", - "Lcaron":"\u013D", - "lcaron":"\u013E", - "Lcedil":"\u013B", - "lcedil":"\u013C", - "lceil":"\u2308", - "lcub":"\u007B", - "Lcy":"\u041B", - "lcy":"\u043B", - "ldca":"\u2936", - "ldquo":"\u201C", - "ldquor":"\u201E", - "ldrdhar":"\u2967", - "ldrushar":"\u294B", - "ldsh":"\u21B2", - "lE":"\u2266", - "le":"\u2264", - "LeftAngleBracket":"\u27E8", - "LeftArrow":"\u2190", - "Leftarrow":"\u21D0", - "leftarrow":"\u2190", - "LeftArrowBar":"\u21E4", - "LeftArrowRightArrow":"\u21C6", - "leftarrowtail":"\u21A2", - "LeftCeiling":"\u2308", - "LeftDoubleBracket":"\u27E6", - "LeftDownTeeVector":"\u2961", - "LeftDownVector":"\u21C3", - "LeftDownVectorBar":"\u2959", - "LeftFloor":"\u230A", - "leftharpoondown":"\u21BD", - "leftharpoonup":"\u21BC", - "leftleftarrows":"\u21C7", - "LeftRightArrow":"\u2194", - "Leftrightarrow":"\u21D4", - "leftrightarrow":"\u2194", - "leftrightarrows":"\u21C6", - "leftrightharpoons":"\u21CB", - "leftrightsquigarrow":"\u21AD", - "LeftRightVector":"\u294E", - "LeftTee":"\u22A3", - "LeftTeeArrow":"\u21A4", - "LeftTeeVector":"\u295A", - "leftthreetimes":"\u22CB", - "LeftTriangle":"\u22B2", - "LeftTriangleBar":"\u29CF", - "LeftTriangleEqual":"\u22B4", - "LeftUpDownVector":"\u2951", - "LeftUpTeeVector":"\u2960", - "LeftUpVector":"\u21BF", - "LeftUpVectorBar":"\u2958", - "LeftVector":"\u21BC", - "LeftVectorBar":"\u2952", - "lEg":"\u2A8B", - "leg":"\u22DA", - "leq":"\u2264", - "leqq":"\u2266", - "leqslant":"\u2A7D", - "les":"\u2A7D", - "lescc":"\u2AA8", - "lesdot":"\u2A7F", - "lesdoto":"\u2A81", - "lesdotor":"\u2A83", - "lesg":"\u22DA\uFE00", - "lesges":"\u2A93", - "lessapprox":"\u2A85", - "lessdot":"\u22D6", - "lesseqgtr":"\u22DA", - "lesseqqgtr":"\u2A8B", - "LessEqualGreater":"\u22DA", - "LessFullEqual":"\u2266", - "LessGreater":"\u2276", - "lessgtr":"\u2276", - "LessLess":"\u2AA1", - "lesssim":"\u2272", - "LessSlantEqual":"\u2A7D", - "LessTilde":"\u2272", - "lfisht":"\u297C", - "lfloor":"\u230A", - "Lfr":"\uD835\uDD0F", - "lfr":"\uD835\uDD29", - "lg":"\u2276", - "lgE":"\u2A91", - "lHar":"\u2962", - "lhard":"\u21BD", - "lharu":"\u21BC", - "lharul":"\u296A", - "lhblk":"\u2584", - "LJcy":"\u0409", - "ljcy":"\u0459", - "Ll":"\u22D8", - "ll":"\u226A", - "llarr":"\u21C7", - "llcorner":"\u231E", - "Lleftarrow":"\u21DA", - "llhard":"\u296B", - "lltri":"\u25FA", - "Lmidot":"\u013F", - "lmidot":"\u0140", - "lmoust":"\u23B0", - "lmoustache":"\u23B0", - "lnap":"\u2A89", - "lnapprox":"\u2A89", - "lnE":"\u2268", - "lne":"\u2A87", - "lneq":"\u2A87", - "lneqq":"\u2268", - "lnsim":"\u22E6", - "loang":"\u27EC", - "loarr":"\u21FD", - "lobrk":"\u27E6", - "LongLeftArrow":"\u27F5", - "Longleftarrow":"\u27F8", - "longleftarrow":"\u27F5", - "LongLeftRightArrow":"\u27F7", - "Longleftrightarrow":"\u27FA", - "longleftrightarrow":"\u27F7", - "longmapsto":"\u27FC", - "LongRightArrow":"\u27F6", - "Longrightarrow":"\u27F9", - "longrightarrow":"\u27F6", - "looparrowleft":"\u21AB", - "looparrowright":"\u21AC", - "lopar":"\u2985", - "Lopf":"\uD835\uDD43", - "lopf":"\uD835\uDD5D", - "loplus":"\u2A2D", - "lotimes":"\u2A34", - "lowast":"\u2217", - "lowbar":"\u005F", - "LowerLeftArrow":"\u2199", - "LowerRightArrow":"\u2198", - "loz":"\u25CA", - "lozenge":"\u25CA", - "lozf":"\u29EB", - "lpar":"\u0028", - "lparlt":"\u2993", - "lrarr":"\u21C6", - "lrcorner":"\u231F", - "lrhar":"\u21CB", - "lrhard":"\u296D", - "lrm":"\u200E", - "lrtri":"\u22BF", - "lsaquo":"\u2039", - "Lscr":"\u2112", - "lscr":"\uD835\uDCC1", - "Lsh":"\u21B0", - "lsh":"\u21B0", - "lsim":"\u2272", - "lsime":"\u2A8D", - "lsimg":"\u2A8F", - "lsqb":"\u005B", - "lsquo":"\u2018", - "lsquor":"\u201A", - "Lstrok":"\u0141", - "lstrok":"\u0142", - "LT":"\u003C", - "Lt":"\u226A", - "lt":"\u003C", - "ltcc":"\u2AA6", - "ltcir":"\u2A79", - "ltdot":"\u22D6", - "lthree":"\u22CB", - "ltimes":"\u22C9", - "ltlarr":"\u2976", - "ltquest":"\u2A7B", - "ltri":"\u25C3", - "ltrie":"\u22B4", - "ltrif":"\u25C2", - "ltrPar":"\u2996", - "lurdshar":"\u294A", - "luruhar":"\u2966", - "lvertneqq":"\u2268\uFE00", - "lvnE":"\u2268\uFE00", - "macr":"\u00AF", - "male":"\u2642", - "malt":"\u2720", - "maltese":"\u2720", - "Map":"\u2905", - "map":"\u21A6", - "mapsto":"\u21A6", - "mapstodown":"\u21A7", - "mapstoleft":"\u21A4", - "mapstoup":"\u21A5", - "marker":"\u25AE", - "mcomma":"\u2A29", - "Mcy":"\u041C", - "mcy":"\u043C", - "mdash":"\u2014", - "mDDot":"\u223A", - "measuredangle":"\u2221", - "MediumSpace":"\u205F", - "Mellintrf":"\u2133", - "Mfr":"\uD835\uDD10", - "mfr":"\uD835\uDD2A", - "mho":"\u2127", - "micro":"\u00B5", - "mid":"\u2223", - "midast":"\u002A", - "midcir":"\u2AF0", - "middot":"\u00B7", - "minus":"\u2212", - "minusb":"\u229F", - "minusd":"\u2238", - "minusdu":"\u2A2A", - "MinusPlus":"\u2213", - "mlcp":"\u2ADB", - "mldr":"\u2026", - "mnplus":"\u2213", - "models":"\u22A7", - "Mopf":"\uD835\uDD44", - "mopf":"\uD835\uDD5E", - "mp":"\u2213", - "Mscr":"\u2133", - "mscr":"\uD835\uDCC2", - "mstpos":"\u223E", - "Mu":"\u039C", - "mu":"\u03BC", - "multimap":"\u22B8", - "mumap":"\u22B8", - "nabla":"\u2207", - "Nacute":"\u0143", - "nacute":"\u0144", - "nang":"\u2220\u20D2", - "nap":"\u2249", - "napE":"\u2A70\u0338", - "napid":"\u224B\u0338", - "napos":"\u0149", - "napprox":"\u2249", - "natur":"\u266E", - "natural":"\u266E", - "naturals":"\u2115", - "nbsp":"\u00A0", - "nbump":"\u224E\u0338", - "nbumpe":"\u224F\u0338", - "ncap":"\u2A43", - "Ncaron":"\u0147", - "ncaron":"\u0148", - "Ncedil":"\u0145", - "ncedil":"\u0146", - "ncong":"\u2247", - "ncongdot":"\u2A6D\u0338", - "ncup":"\u2A42", - "Ncy":"\u041D", - "ncy":"\u043D", - "ndash":"\u2013", - "ne":"\u2260", - "nearhk":"\u2924", - "neArr":"\u21D7", - "nearr":"\u2197", - "nearrow":"\u2197", - "nedot":"\u2250\u0338", - "NegativeMediumSpace":"\u200B", - "NegativeThickSpace":"\u200B", - "NegativeThinSpace":"\u200B", - "NegativeVeryThinSpace":"\u200B", - "nequiv":"\u2262", - "nesear":"\u2928", - "nesim":"\u2242\u0338", - "NestedGreaterGreater":"\u226B", - "NestedLessLess":"\u226A", - "NewLine":"\u000A", - "nexist":"\u2204", - "nexists":"\u2204", - "Nfr":"\uD835\uDD11", - "nfr":"\uD835\uDD2B", - "ngE":"\u2267\u0338", - "nge":"\u2271", - "ngeq":"\u2271", - "ngeqq":"\u2267\u0338", - "ngeqslant":"\u2A7E\u0338", - "nges":"\u2A7E\u0338", - "nGg":"\u22D9\u0338", - "ngsim":"\u2275", - "nGt":"\u226B\u20D2", - "ngt":"\u226F", - "ngtr":"\u226F", - "nGtv":"\u226B\u0338", - "nhArr":"\u21CE", - "nharr":"\u21AE", - "nhpar":"\u2AF2", - "ni":"\u220B", - "nis":"\u22FC", - "nisd":"\u22FA", - "niv":"\u220B", - "NJcy":"\u040A", - "njcy":"\u045A", - "nlArr":"\u21CD", - "nlarr":"\u219A", - "nldr":"\u2025", - "nlE":"\u2266\u0338", - "nle":"\u2270", - "nLeftarrow":"\u21CD", - "nleftarrow":"\u219A", - "nLeftrightarrow":"\u21CE", - "nleftrightarrow":"\u21AE", - "nleq":"\u2270", - "nleqq":"\u2266\u0338", - "nleqslant":"\u2A7D\u0338", - "nles":"\u2A7D\u0338", - "nless":"\u226E", - "nLl":"\u22D8\u0338", - "nlsim":"\u2274", - "nLt":"\u226A\u20D2", - "nlt":"\u226E", - "nltri":"\u22EA", - "nltrie":"\u22EC", - "nLtv":"\u226A\u0338", - "nmid":"\u2224", - "NoBreak":"\u2060", - "NonBreakingSpace":"\u00A0", - "Nopf":"\u2115", - "nopf":"\uD835\uDD5F", - "Not":"\u2AEC", - "not":"\u00AC", - "NotCongruent":"\u2262", - "NotCupCap":"\u226D", - "NotDoubleVerticalBar":"\u2226", - "NotElement":"\u2209", - "NotEqual":"\u2260", - "NotEqualTilde":"\u2242\u0338", - "NotExists":"\u2204", - "NotGreater":"\u226F", - "NotGreaterEqual":"\u2271", - "NotGreaterFullEqual":"\u2267\u0338", - "NotGreaterGreater":"\u226B\u0338", - "NotGreaterLess":"\u2279", - "NotGreaterSlantEqual":"\u2A7E\u0338", - "NotGreaterTilde":"\u2275", - "NotHumpDownHump":"\u224E\u0338", - "NotHumpEqual":"\u224F\u0338", - "notin":"\u2209", - "notindot":"\u22F5\u0338", - "notinE":"\u22F9\u0338", - "notinva":"\u2209", - "notinvb":"\u22F7", - "notinvc":"\u22F6", - "NotLeftTriangle":"\u22EA", - "NotLeftTriangleBar":"\u29CF\u0338", - "NotLeftTriangleEqual":"\u22EC", - "NotLess":"\u226E", - "NotLessEqual":"\u2270", - "NotLessGreater":"\u2278", - "NotLessLess":"\u226A\u0338", - "NotLessSlantEqual":"\u2A7D\u0338", - "NotLessTilde":"\u2274", - "NotNestedGreaterGreater":"\u2AA2\u0338", - "NotNestedLessLess":"\u2AA1\u0338", - "notni":"\u220C", - "notniva":"\u220C", - "notnivb":"\u22FE", - "notnivc":"\u22FD", - "NotPrecedes":"\u2280", - "NotPrecedesEqual":"\u2AAF\u0338", - "NotPrecedesSlantEqual":"\u22E0", - "NotReverseElement":"\u220C", - "NotRightTriangle":"\u22EB", - "NotRightTriangleBar":"\u29D0\u0338", - "NotRightTriangleEqual":"\u22ED", - "NotSquareSubset":"\u228F\u0338", - "NotSquareSubsetEqual":"\u22E2", - "NotSquareSuperset":"\u2290\u0338", - "NotSquareSupersetEqual":"\u22E3", - "NotSubset":"\u2282\u20D2", - "NotSubsetEqual":"\u2288", - "NotSucceeds":"\u2281", - "NotSucceedsEqual":"\u2AB0\u0338", - "NotSucceedsSlantEqual":"\u22E1", - "NotSucceedsTilde":"\u227F\u0338", - "NotSuperset":"\u2283\u20D2", - "NotSupersetEqual":"\u2289", - "NotTilde":"\u2241", - "NotTildeEqual":"\u2244", - "NotTildeFullEqual":"\u2247", - "NotTildeTilde":"\u2249", - "NotVerticalBar":"\u2224", - "npar":"\u2226", - "nparallel":"\u2226", - "nparsl":"\u2AFD\u20E5", - "npart":"\u2202\u0338", - "npolint":"\u2A14", - "npr":"\u2280", - "nprcue":"\u22E0", - "npre":"\u2AAF\u0338", - "nprec":"\u2280", - "npreceq":"\u2AAF\u0338", - "nrArr":"\u21CF", - "nrarr":"\u219B", - "nrarrc":"\u2933\u0338", - "nrarrw":"\u219D\u0338", - "nRightarrow":"\u21CF", - "nrightarrow":"\u219B", - "nrtri":"\u22EB", - "nrtrie":"\u22ED", - "nsc":"\u2281", - "nsccue":"\u22E1", - "nsce":"\u2AB0\u0338", - "Nscr":"\uD835\uDCA9", - "nscr":"\uD835\uDCC3", - "nshortmid":"\u2224", - "nshortparallel":"\u2226", - "nsim":"\u2241", - "nsime":"\u2244", - "nsimeq":"\u2244", - "nsmid":"\u2224", - "nspar":"\u2226", - "nsqsube":"\u22E2", - "nsqsupe":"\u22E3", - "nsub":"\u2284", - "nsubE":"\u2AC5\u0338", - "nsube":"\u2288", - "nsubset":"\u2282\u20D2", - "nsubseteq":"\u2288", - "nsubseteqq":"\u2AC5\u0338", - "nsucc":"\u2281", - "nsucceq":"\u2AB0\u0338", - "nsup":"\u2285", - "nsupE":"\u2AC6\u0338", - "nsupe":"\u2289", - "nsupset":"\u2283\u20D2", - "nsupseteq":"\u2289", - "nsupseteqq":"\u2AC6\u0338", - "ntgl":"\u2279", - "Ntilde":"\u00D1", - "ntilde":"\u00F1", - "ntlg":"\u2278", - "ntriangleleft":"\u22EA", - "ntrianglelefteq":"\u22EC", - "ntriangleright":"\u22EB", - "ntrianglerighteq":"\u22ED", - "Nu":"\u039D", - "nu":"\u03BD", - "num":"\u0023", - "numero":"\u2116", - "numsp":"\u2007", - "nvap":"\u224D\u20D2", - "nVDash":"\u22AF", - "nVdash":"\u22AE", - "nvDash":"\u22AD", - "nvdash":"\u22AC", - "nvge":"\u2265\u20D2", - "nvgt":"\u003E\u20D2", - "nvHarr":"\u2904", - "nvinfin":"\u29DE", - "nvlArr":"\u2902", - "nvle":"\u2264\u20D2", - "nvlt":"\u003C\u20D2", - "nvltrie":"\u22B4\u20D2", - "nvrArr":"\u2903", - "nvrtrie":"\u22B5\u20D2", - "nvsim":"\u223C\u20D2", - "nwarhk":"\u2923", - "nwArr":"\u21D6", - "nwarr":"\u2196", - "nwarrow":"\u2196", - "nwnear":"\u2927", - "Oacute":"\u00D3", - "oacute":"\u00F3", - "oast":"\u229B", - "ocir":"\u229A", - "Ocirc":"\u00D4", - "ocirc":"\u00F4", - "Ocy":"\u041E", - "ocy":"\u043E", - "odash":"\u229D", - "Odblac":"\u0150", - "odblac":"\u0151", - "odiv":"\u2A38", - "odot":"\u2299", - "odsold":"\u29BC", - "OElig":"\u0152", - "oelig":"\u0153", - "ofcir":"\u29BF", - "Ofr":"\uD835\uDD12", - "ofr":"\uD835\uDD2C", - "ogon":"\u02DB", - "Ograve":"\u00D2", - "ograve":"\u00F2", - "ogt":"\u29C1", - "ohbar":"\u29B5", - "ohm":"\u03A9", - "oint":"\u222E", - "olarr":"\u21BA", - "olcir":"\u29BE", - "olcross":"\u29BB", - "oline":"\u203E", - "olt":"\u29C0", - "Omacr":"\u014C", - "omacr":"\u014D", - "Omega":"\u03A9", - "omega":"\u03C9", - "Omicron":"\u039F", - "omicron":"\u03BF", - "omid":"\u29B6", - "ominus":"\u2296", - "Oopf":"\uD835\uDD46", - "oopf":"\uD835\uDD60", - "opar":"\u29B7", - "OpenCurlyDoubleQuote":"\u201C", - "OpenCurlyQuote":"\u2018", - "operp":"\u29B9", - "oplus":"\u2295", - "Or":"\u2A54", - "or":"\u2228", - "orarr":"\u21BB", - "ord":"\u2A5D", - "order":"\u2134", - "orderof":"\u2134", - "ordf":"\u00AA", - "ordm":"\u00BA", - "origof":"\u22B6", - "oror":"\u2A56", - "orslope":"\u2A57", - "orv":"\u2A5B", - "oS":"\u24C8", - "Oscr":"\uD835\uDCAA", - "oscr":"\u2134", - "Oslash":"\u00D8", - "oslash":"\u00F8", - "osol":"\u2298", - "Otilde":"\u00D5", - "otilde":"\u00F5", - "Otimes":"\u2A37", - "otimes":"\u2297", - "otimesas":"\u2A36", - "Ouml":"\u00D6", - "ouml":"\u00F6", - "ovbar":"\u233D", - "OverBar":"\u203E", - "OverBrace":"\u23DE", - "OverBracket":"\u23B4", - "OverParenthesis":"\u23DC", - "par":"\u2225", - "para":"\u00B6", - "parallel":"\u2225", - "parsim":"\u2AF3", - "parsl":"\u2AFD", - "part":"\u2202", - "PartialD":"\u2202", - "Pcy":"\u041F", - "pcy":"\u043F", - "percnt":"\u0025", - "period":"\u002E", - "permil":"\u2030", - "perp":"\u22A5", - "pertenk":"\u2031", - "Pfr":"\uD835\uDD13", - "pfr":"\uD835\uDD2D", - "Phi":"\u03A6", - "phi":"\u03C6", - "phiv":"\u03D5", - "phmmat":"\u2133", - "phone":"\u260E", - "Pi":"\u03A0", - "pi":"\u03C0", - "pitchfork":"\u22D4", - "piv":"\u03D6", - "planck":"\u210F", - "planckh":"\u210E", - "plankv":"\u210F", - "plus":"\u002B", - "plusacir":"\u2A23", - "plusb":"\u229E", - "pluscir":"\u2A22", - "plusdo":"\u2214", - "plusdu":"\u2A25", - "pluse":"\u2A72", - "PlusMinus":"\u00B1", - "plusmn":"\u00B1", - "plussim":"\u2A26", - "plustwo":"\u2A27", - "pm":"\u00B1", - "Poincareplane":"\u210C", - "pointint":"\u2A15", - "Popf":"\u2119", - "popf":"\uD835\uDD61", - "pound":"\u00A3", - "Pr":"\u2ABB", - "pr":"\u227A", - "prap":"\u2AB7", - "prcue":"\u227C", - "prE":"\u2AB3", - "pre":"\u2AAF", - "prec":"\u227A", - "precapprox":"\u2AB7", - "preccurlyeq":"\u227C", - "Precedes":"\u227A", - "PrecedesEqual":"\u2AAF", - "PrecedesSlantEqual":"\u227C", - "PrecedesTilde":"\u227E", - "preceq":"\u2AAF", - "precnapprox":"\u2AB9", - "precneqq":"\u2AB5", - "precnsim":"\u22E8", - "precsim":"\u227E", - "Prime":"\u2033", - "prime":"\u2032", - "primes":"\u2119", - "prnap":"\u2AB9", - "prnE":"\u2AB5", - "prnsim":"\u22E8", - "prod":"\u220F", - "Product":"\u220F", - "profalar":"\u232E", - "profline":"\u2312", - "profsurf":"\u2313", - "prop":"\u221D", - "Proportion":"\u2237", - "Proportional":"\u221D", - "propto":"\u221D", - "prsim":"\u227E", - "prurel":"\u22B0", - "Pscr":"\uD835\uDCAB", - "pscr":"\uD835\uDCC5", - "Psi":"\u03A8", - "psi":"\u03C8", - "puncsp":"\u2008", - "Qfr":"\uD835\uDD14", - "qfr":"\uD835\uDD2E", - "qint":"\u2A0C", - "Qopf":"\u211A", - "qopf":"\uD835\uDD62", - "qprime":"\u2057", - "Qscr":"\uD835\uDCAC", - "qscr":"\uD835\uDCC6", - "quaternions":"\u210D", - "quatint":"\u2A16", - "quest":"\u003F", - "questeq":"\u225F", - "QUOT":"\u0022", - "quot":"\u0022", - "rAarr":"\u21DB", - "race":"\u223D\u0331", - "Racute":"\u0154", - "racute":"\u0155", - "radic":"\u221A", - "raemptyv":"\u29B3", - "Rang":"\u27EB", - "rang":"\u27E9", - "rangd":"\u2992", - "range":"\u29A5", - "rangle":"\u27E9", - "raquo":"\u00BB", - "Rarr":"\u21A0", - "rArr":"\u21D2", - "rarr":"\u2192", - "rarrap":"\u2975", - "rarrb":"\u21E5", - "rarrbfs":"\u2920", - "rarrc":"\u2933", - "rarrfs":"\u291E", - "rarrhk":"\u21AA", - "rarrlp":"\u21AC", - "rarrpl":"\u2945", - "rarrsim":"\u2974", - "Rarrtl":"\u2916", - "rarrtl":"\u21A3", - "rarrw":"\u219D", - "rAtail":"\u291C", - "ratail":"\u291A", - "ratio":"\u2236", - "rationals":"\u211A", - "RBarr":"\u2910", - "rBarr":"\u290F", - "rbarr":"\u290D", - "rbbrk":"\u2773", - "rbrace":"\u007D", - "rbrack":"\u005D", - "rbrke":"\u298C", - "rbrksld":"\u298E", - "rbrkslu":"\u2990", - "Rcaron":"\u0158", - "rcaron":"\u0159", - "Rcedil":"\u0156", - "rcedil":"\u0157", - "rceil":"\u2309", - "rcub":"\u007D", - "Rcy":"\u0420", - "rcy":"\u0440", - "rdca":"\u2937", - "rdldhar":"\u2969", - "rdquo":"\u201D", - "rdquor":"\u201D", - "rdsh":"\u21B3", - "Re":"\u211C", - "real":"\u211C", - "realine":"\u211B", - "realpart":"\u211C", - "reals":"\u211D", - "rect":"\u25AD", - "REG":"\u00AE", - "reg":"\u00AE", - "ReverseElement":"\u220B", - "ReverseEquilibrium":"\u21CB", - "ReverseUpEquilibrium":"\u296F", - "rfisht":"\u297D", - "rfloor":"\u230B", - "Rfr":"\u211C", - "rfr":"\uD835\uDD2F", - "rHar":"\u2964", - "rhard":"\u21C1", - "rharu":"\u21C0", - "rharul":"\u296C", - "Rho":"\u03A1", - "rho":"\u03C1", - "rhov":"\u03F1", - "RightAngleBracket":"\u27E9", - "RightArrow":"\u2192", - "Rightarrow":"\u21D2", - "rightarrow":"\u2192", - "RightArrowBar":"\u21E5", - "RightArrowLeftArrow":"\u21C4", - "rightarrowtail":"\u21A3", - "RightCeiling":"\u2309", - "RightDoubleBracket":"\u27E7", - "RightDownTeeVector":"\u295D", - "RightDownVector":"\u21C2", - "RightDownVectorBar":"\u2955", - "RightFloor":"\u230B", - "rightharpoondown":"\u21C1", - "rightharpoonup":"\u21C0", - "rightleftarrows":"\u21C4", - "rightleftharpoons":"\u21CC", - "rightrightarrows":"\u21C9", - "rightsquigarrow":"\u219D", - "RightTee":"\u22A2", - "RightTeeArrow":"\u21A6", - "RightTeeVector":"\u295B", - "rightthreetimes":"\u22CC", - "RightTriangle":"\u22B3", - "RightTriangleBar":"\u29D0", - "RightTriangleEqual":"\u22B5", - "RightUpDownVector":"\u294F", - "RightUpTeeVector":"\u295C", - "RightUpVector":"\u21BE", - "RightUpVectorBar":"\u2954", - "RightVector":"\u21C0", - "RightVectorBar":"\u2953", - "ring":"\u02DA", - "risingdotseq":"\u2253", - "rlarr":"\u21C4", - "rlhar":"\u21CC", - "rlm":"\u200F", - "rmoust":"\u23B1", - "rmoustache":"\u23B1", - "rnmid":"\u2AEE", - "roang":"\u27ED", - "roarr":"\u21FE", - "robrk":"\u27E7", - "ropar":"\u2986", - "Ropf":"\u211D", - "ropf":"\uD835\uDD63", - "roplus":"\u2A2E", - "rotimes":"\u2A35", - "RoundImplies":"\u2970", - "rpar":"\u0029", - "rpargt":"\u2994", - "rppolint":"\u2A12", - "rrarr":"\u21C9", - "Rrightarrow":"\u21DB", - "rsaquo":"\u203A", - "Rscr":"\u211B", - "rscr":"\uD835\uDCC7", - "Rsh":"\u21B1", - "rsh":"\u21B1", - "rsqb":"\u005D", - "rsquo":"\u2019", - "rsquor":"\u2019", - "rthree":"\u22CC", - "rtimes":"\u22CA", - "rtri":"\u25B9", - "rtrie":"\u22B5", - "rtrif":"\u25B8", - "rtriltri":"\u29CE", - "RuleDelayed":"\u29F4", - "ruluhar":"\u2968", - "rx":"\u211E", - "Sacute":"\u015A", - "sacute":"\u015B", - "sbquo":"\u201A", - "Sc":"\u2ABC", - "sc":"\u227B", - "scap":"\u2AB8", - "Scaron":"\u0160", - "scaron":"\u0161", - "sccue":"\u227D", - "scE":"\u2AB4", - "sce":"\u2AB0", - "Scedil":"\u015E", - "scedil":"\u015F", - "Scirc":"\u015C", - "scirc":"\u015D", - "scnap":"\u2ABA", - "scnE":"\u2AB6", - "scnsim":"\u22E9", - "scpolint":"\u2A13", - "scsim":"\u227F", - "Scy":"\u0421", - "scy":"\u0441", - "sdot":"\u22C5", - "sdotb":"\u22A1", - "sdote":"\u2A66", - "searhk":"\u2925", - "seArr":"\u21D8", - "searr":"\u2198", - "searrow":"\u2198", - "sect":"\u00A7", - "semi":"\u003B", - "seswar":"\u2929", - "setminus":"\u2216", - "setmn":"\u2216", - "sext":"\u2736", - "Sfr":"\uD835\uDD16", - "sfr":"\uD835\uDD30", - "sfrown":"\u2322", - "sharp":"\u266F", - "SHCHcy":"\u0429", - "shchcy":"\u0449", - "SHcy":"\u0428", - "shcy":"\u0448", - "ShortDownArrow":"\u2193", - "ShortLeftArrow":"\u2190", - "shortmid":"\u2223", - "shortparallel":"\u2225", - "ShortRightArrow":"\u2192", - "ShortUpArrow":"\u2191", - "shy":"\u00AD", - "Sigma":"\u03A3", - "sigma":"\u03C3", - "sigmaf":"\u03C2", - "sigmav":"\u03C2", - "sim":"\u223C", - "simdot":"\u2A6A", - "sime":"\u2243", - "simeq":"\u2243", - "simg":"\u2A9E", - "simgE":"\u2AA0", - "siml":"\u2A9D", - "simlE":"\u2A9F", - "simne":"\u2246", - "simplus":"\u2A24", - "simrarr":"\u2972", - "slarr":"\u2190", - "SmallCircle":"\u2218", - "smallsetminus":"\u2216", - "smashp":"\u2A33", - "smeparsl":"\u29E4", - "smid":"\u2223", - "smile":"\u2323", - "smt":"\u2AAA", - "smte":"\u2AAC", - "smtes":"\u2AAC\uFE00", - "SOFTcy":"\u042C", - "softcy":"\u044C", - "sol":"\u002F", - "solb":"\u29C4", - "solbar":"\u233F", - "Sopf":"\uD835\uDD4A", - "sopf":"\uD835\uDD64", - "spades":"\u2660", - "spadesuit":"\u2660", - "spar":"\u2225", - "sqcap":"\u2293", - "sqcaps":"\u2293\uFE00", - "sqcup":"\u2294", - "sqcups":"\u2294\uFE00", - "Sqrt":"\u221A", - "sqsub":"\u228F", - "sqsube":"\u2291", - "sqsubset":"\u228F", - "sqsubseteq":"\u2291", - "sqsup":"\u2290", - "sqsupe":"\u2292", - "sqsupset":"\u2290", - "sqsupseteq":"\u2292", - "squ":"\u25A1", - "Square":"\u25A1", - "square":"\u25A1", - "SquareIntersection":"\u2293", - "SquareSubset":"\u228F", - "SquareSubsetEqual":"\u2291", - "SquareSuperset":"\u2290", - "SquareSupersetEqual":"\u2292", - "SquareUnion":"\u2294", - "squarf":"\u25AA", - "squf":"\u25AA", - "srarr":"\u2192", - "Sscr":"\uD835\uDCAE", - "sscr":"\uD835\uDCC8", - "ssetmn":"\u2216", - "ssmile":"\u2323", - "sstarf":"\u22C6", - "Star":"\u22C6", - "star":"\u2606", - "starf":"\u2605", - "straightepsilon":"\u03F5", - "straightphi":"\u03D5", - "strns":"\u00AF", - "Sub":"\u22D0", - "sub":"\u2282", - "subdot":"\u2ABD", - "subE":"\u2AC5", - "sube":"\u2286", - "subedot":"\u2AC3", - "submult":"\u2AC1", - "subnE":"\u2ACB", - "subne":"\u228A", - "subplus":"\u2ABF", - "subrarr":"\u2979", - "Subset":"\u22D0", - "subset":"\u2282", - "subseteq":"\u2286", - "subseteqq":"\u2AC5", - "SubsetEqual":"\u2286", - "subsetneq":"\u228A", - "subsetneqq":"\u2ACB", - "subsim":"\u2AC7", - "subsub":"\u2AD5", - "subsup":"\u2AD3", - "succ":"\u227B", - "succapprox":"\u2AB8", - "succcurlyeq":"\u227D", - "Succeeds":"\u227B", - "SucceedsEqual":"\u2AB0", - "SucceedsSlantEqual":"\u227D", - "SucceedsTilde":"\u227F", - "succeq":"\u2AB0", - "succnapprox":"\u2ABA", - "succneqq":"\u2AB6", - "succnsim":"\u22E9", - "succsim":"\u227F", - "SuchThat":"\u220B", - "Sum":"\u2211", - "sum":"\u2211", - "sung":"\u266A", - "Sup":"\u22D1", - "sup":"\u2283", - "sup1":"\u00B9", - "sup2":"\u00B2", - "sup3":"\u00B3", - "supdot":"\u2ABE", - "supdsub":"\u2AD8", - "supE":"\u2AC6", - "supe":"\u2287", - "supedot":"\u2AC4", - "Superset":"\u2283", - "SupersetEqual":"\u2287", - "suphsol":"\u27C9", - "suphsub":"\u2AD7", - "suplarr":"\u297B", - "supmult":"\u2AC2", - "supnE":"\u2ACC", - "supne":"\u228B", - "supplus":"\u2AC0", - "Supset":"\u22D1", - "supset":"\u2283", - "supseteq":"\u2287", - "supseteqq":"\u2AC6", - "supsetneq":"\u228B", - "supsetneqq":"\u2ACC", - "supsim":"\u2AC8", - "supsub":"\u2AD4", - "supsup":"\u2AD6", - "swarhk":"\u2926", - "swArr":"\u21D9", - "swarr":"\u2199", - "swarrow":"\u2199", - "swnwar":"\u292A", - "szlig":"\u00DF", - "Tab":"\u0009", - "target":"\u2316", - "Tau":"\u03A4", - "tau":"\u03C4", - "tbrk":"\u23B4", - "Tcaron":"\u0164", - "tcaron":"\u0165", - "Tcedil":"\u0162", - "tcedil":"\u0163", - "Tcy":"\u0422", - "tcy":"\u0442", - "tdot":"\u20DB", - "telrec":"\u2315", - "Tfr":"\uD835\uDD17", - "tfr":"\uD835\uDD31", - "there4":"\u2234", - "Therefore":"\u2234", - "therefore":"\u2234", - "Theta":"\u0398", - "theta":"\u03B8", - "thetasym":"\u03D1", - "thetav":"\u03D1", - "thickapprox":"\u2248", - "thicksim":"\u223C", - "ThickSpace":"\u205F\u200A", - "thinsp":"\u2009", - "ThinSpace":"\u2009", - "thkap":"\u2248", - "thksim":"\u223C", - "THORN":"\u00DE", - "thorn":"\u00FE", - "Tilde":"\u223C", - "tilde":"\u02DC", - "TildeEqual":"\u2243", - "TildeFullEqual":"\u2245", - "TildeTilde":"\u2248", - "times":"\u00D7", - "timesb":"\u22A0", - "timesbar":"\u2A31", - "timesd":"\u2A30", - "tint":"\u222D", - "toea":"\u2928", - "top":"\u22A4", - "topbot":"\u2336", - "topcir":"\u2AF1", - "Topf":"\uD835\uDD4B", - "topf":"\uD835\uDD65", - "topfork":"\u2ADA", - "tosa":"\u2929", - "tprime":"\u2034", - "TRADE":"\u2122", - "trade":"\u2122", - "triangle":"\u25B5", - "triangledown":"\u25BF", - "triangleleft":"\u25C3", - "trianglelefteq":"\u22B4", - "triangleq":"\u225C", - "triangleright":"\u25B9", - "trianglerighteq":"\u22B5", - "tridot":"\u25EC", - "trie":"\u225C", - "triminus":"\u2A3A", - "TripleDot":"\u20DB", - "triplus":"\u2A39", - "trisb":"\u29CD", - "tritime":"\u2A3B", - "trpezium":"\u23E2", - "Tscr":"\uD835\uDCAF", - "tscr":"\uD835\uDCC9", - "TScy":"\u0426", - "tscy":"\u0446", - "TSHcy":"\u040B", - "tshcy":"\u045B", - "Tstrok":"\u0166", - "tstrok":"\u0167", - "twixt":"\u226C", - "twoheadleftarrow":"\u219E", - "twoheadrightarrow":"\u21A0", - "Uacute":"\u00DA", - "uacute":"\u00FA", - "Uarr":"\u219F", - "uArr":"\u21D1", - "uarr":"\u2191", - "Uarrocir":"\u2949", - "Ubrcy":"\u040E", - "ubrcy":"\u045E", - "Ubreve":"\u016C", - "ubreve":"\u016D", - "Ucirc":"\u00DB", - "ucirc":"\u00FB", - "Ucy":"\u0423", - "ucy":"\u0443", - "udarr":"\u21C5", - "Udblac":"\u0170", - "udblac":"\u0171", - "udhar":"\u296E", - "ufisht":"\u297E", - "Ufr":"\uD835\uDD18", - "ufr":"\uD835\uDD32", - "Ugrave":"\u00D9", - "ugrave":"\u00F9", - "uHar":"\u2963", - "uharl":"\u21BF", - "uharr":"\u21BE", - "uhblk":"\u2580", - "ulcorn":"\u231C", - "ulcorner":"\u231C", - "ulcrop":"\u230F", - "ultri":"\u25F8", - "Umacr":"\u016A", - "umacr":"\u016B", - "uml":"\u00A8", - "UnderBar":"\u005F", - "UnderBrace":"\u23DF", - "UnderBracket":"\u23B5", - "UnderParenthesis":"\u23DD", - "Union":"\u22C3", - "UnionPlus":"\u228E", - "Uogon":"\u0172", - "uogon":"\u0173", - "Uopf":"\uD835\uDD4C", - "uopf":"\uD835\uDD66", - "UpArrow":"\u2191", - "Uparrow":"\u21D1", - "uparrow":"\u2191", - "UpArrowBar":"\u2912", - "UpArrowDownArrow":"\u21C5", - "UpDownArrow":"\u2195", - "Updownarrow":"\u21D5", - "updownarrow":"\u2195", - "UpEquilibrium":"\u296E", - "upharpoonleft":"\u21BF", - "upharpoonright":"\u21BE", - "uplus":"\u228E", - "UpperLeftArrow":"\u2196", - "UpperRightArrow":"\u2197", - "Upsi":"\u03D2", - "upsi":"\u03C5", - "upsih":"\u03D2", - "Upsilon":"\u03A5", - "upsilon":"\u03C5", - "UpTee":"\u22A5", - "UpTeeArrow":"\u21A5", - "upuparrows":"\u21C8", - "urcorn":"\u231D", - "urcorner":"\u231D", - "urcrop":"\u230E", - "Uring":"\u016E", - "uring":"\u016F", - "urtri":"\u25F9", - "Uscr":"\uD835\uDCB0", - "uscr":"\uD835\uDCCA", - "utdot":"\u22F0", - "Utilde":"\u0168", - "utilde":"\u0169", - "utri":"\u25B5", - "utrif":"\u25B4", - "uuarr":"\u21C8", - "Uuml":"\u00DC", - "uuml":"\u00FC", - "uwangle":"\u29A7", - "vangrt":"\u299C", - "varepsilon":"\u03F5", - "varkappa":"\u03F0", - "varnothing":"\u2205", - "varphi":"\u03D5", - "varpi":"\u03D6", - "varpropto":"\u221D", - "vArr":"\u21D5", - "varr":"\u2195", - "varrho":"\u03F1", - "varsigma":"\u03C2", - "varsubsetneq":"\u228A\uFE00", - "varsubsetneqq":"\u2ACB\uFE00", - "varsupsetneq":"\u228B\uFE00", - "varsupsetneqq":"\u2ACC\uFE00", - "vartheta":"\u03D1", - "vartriangleleft":"\u22B2", - "vartriangleright":"\u22B3", - "Vbar":"\u2AEB", - "vBar":"\u2AE8", - "vBarv":"\u2AE9", - "Vcy":"\u0412", - "vcy":"\u0432", - "VDash":"\u22AB", - "Vdash":"\u22A9", - "vDash":"\u22A8", - "vdash":"\u22A2", - "Vdashl":"\u2AE6", - "Vee":"\u22C1", - "vee":"\u2228", - "veebar":"\u22BB", - "veeeq":"\u225A", - "vellip":"\u22EE", - "Verbar":"\u2016", - "verbar":"\u007C", - "Vert":"\u2016", - "vert":"\u007C", - "VerticalBar":"\u2223", - "VerticalLine":"\u007C", - "VerticalSeparator":"\u2758", - "VerticalTilde":"\u2240", - "VeryThinSpace":"\u200A", - "Vfr":"\uD835\uDD19", - "vfr":"\uD835\uDD33", - "vltri":"\u22B2", - "vnsub":"\u2282\u20D2", - "vnsup":"\u2283\u20D2", - "Vopf":"\uD835\uDD4D", - "vopf":"\uD835\uDD67", - "vprop":"\u221D", - "vrtri":"\u22B3", - "Vscr":"\uD835\uDCB1", - "vscr":"\uD835\uDCCB", - "vsubnE":"\u2ACB\uFE00", - "vsubne":"\u228A\uFE00", - "vsupnE":"\u2ACC\uFE00", - "vsupne":"\u228B\uFE00", - "Vvdash":"\u22AA", - "vzigzag":"\u299A", - "Wcirc":"\u0174", - "wcirc":"\u0175", - "wedbar":"\u2A5F", - "Wedge":"\u22C0", - "wedge":"\u2227", - "wedgeq":"\u2259", - "weierp":"\u2118", - "Wfr":"\uD835\uDD1A", - "wfr":"\uD835\uDD34", - "Wopf":"\uD835\uDD4E", - "wopf":"\uD835\uDD68", - "wp":"\u2118", - "wr":"\u2240", - "wreath":"\u2240", - "Wscr":"\uD835\uDCB2", - "wscr":"\uD835\uDCCC", - "xcap":"\u22C2", - "xcirc":"\u25EF", - "xcup":"\u22C3", - "xdtri":"\u25BD", - "Xfr":"\uD835\uDD1B", - "xfr":"\uD835\uDD35", - "xhArr":"\u27FA", - "xharr":"\u27F7", - "Xi":"\u039E", - "xi":"\u03BE", - "xlArr":"\u27F8", - "xlarr":"\u27F5", - "xmap":"\u27FC", - "xnis":"\u22FB", - "xodot":"\u2A00", - "Xopf":"\uD835\uDD4F", - "xopf":"\uD835\uDD69", - "xoplus":"\u2A01", - "xotime":"\u2A02", - "xrArr":"\u27F9", - "xrarr":"\u27F6", - "Xscr":"\uD835\uDCB3", - "xscr":"\uD835\uDCCD", - "xsqcup":"\u2A06", - "xuplus":"\u2A04", - "xutri":"\u25B3", - "xvee":"\u22C1", - "xwedge":"\u22C0", - "Yacute":"\u00DD", - "yacute":"\u00FD", - "YAcy":"\u042F", - "yacy":"\u044F", - "Ycirc":"\u0176", - "ycirc":"\u0177", - "Ycy":"\u042B", - "ycy":"\u044B", - "yen":"\u00A5", - "Yfr":"\uD835\uDD1C", - "yfr":"\uD835\uDD36", - "YIcy":"\u0407", - "yicy":"\u0457", - "Yopf":"\uD835\uDD50", - "yopf":"\uD835\uDD6A", - "Yscr":"\uD835\uDCB4", - "yscr":"\uD835\uDCCE", - "YUcy":"\u042E", - "yucy":"\u044E", - "Yuml":"\u0178", - "yuml":"\u00FF", - "Zacute":"\u0179", - "zacute":"\u017A", - "Zcaron":"\u017D", - "zcaron":"\u017E", - "Zcy":"\u0417", - "zcy":"\u0437", - "Zdot":"\u017B", - "zdot":"\u017C", - "zeetrf":"\u2128", - "ZeroWidthSpace":"\u200B", - "Zeta":"\u0396", - "zeta":"\u03B6", - "Zfr":"\u2128", - "zfr":"\uD835\uDD37", - "ZHcy":"\u0416", - "zhcy":"\u0436", - "zigrarr":"\u21DD", - "Zopf":"\u2124", - "zopf":"\uD835\uDD6B", - "Zscr":"\uD835\uDCB5", - "zscr":"\uD835\uDCCF", - "zwj":"\u200D", - "zwnj":"\u200C" -}; - - -/***/ }), - -/***/ 177: -/***/ ((module) => { - -"use strict"; -// List of valid html blocks names, accorting to commonmark spec -// http://jgm.github.io/CommonMark/spec.html#html-blocks - - - -var html_blocks = {}; - -[ - 'article', - 'aside', - 'button', - 'blockquote', - 'body', - 'canvas', - 'caption', - 'col', - 'colgroup', - 'dd', - 'div', - 'dl', - 'dt', - 'embed', - 'fieldset', - 'figcaption', - 'figure', - 'footer', - 'form', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'header', - 'hgroup', - 'hr', - 'iframe', - 'li', - 'map', - 'object', - 'ol', - 'output', - 'p', - 'pre', - 'progress', - 'script', - 'section', - 'style', - 'table', - 'tbody', - 'td', - 'textarea', - 'tfoot', - 'th', - 'tr', - 'thead', - 'ul', - 'video' -].forEach(function (name) { html_blocks[name] = true; }); - - -module.exports = html_blocks; - - -/***/ }), - -/***/ 6220: -/***/ ((module) => { - -"use strict"; -// Regexps to match html elements - - - - -function replace(regex, options) { - regex = regex.source; - options = options || ''; - - return function self(name, val) { - if (!name) { - return new RegExp(regex, options); - } - val = val.source || val; - regex = regex.replace(name, val); - return self; - }; -} - - -var attr_name = /[a-zA-Z_:][a-zA-Z0-9:._-]*/; - -var unquoted = /[^"'=<>`\x00-\x20]+/; -var single_quoted = /'[^']*'/; -var double_quoted = /"[^"]*"/; - -/*eslint no-spaced-func:0*/ -var attr_value = replace(/(?:unquoted|single_quoted|double_quoted)/) - ('unquoted', unquoted) - ('single_quoted', single_quoted) - ('double_quoted', double_quoted) - (); - -var attribute = replace(/(?:\s+attr_name(?:\s*=\s*attr_value)?)/) - ('attr_name', attr_name) - ('attr_value', attr_value) - (); - -var open_tag = replace(/<[A-Za-z][A-Za-z0-9]*attribute*\s*\/?>/) - ('attribute', attribute) - (); - -var close_tag = /<\/[A-Za-z][A-Za-z0-9]*\s*>/; -var comment = /|/; -var processing = /<[?].*?[?]>/; -var declaration = /]*>/; -var cdata = //; - -var HTML_TAG_RE = replace(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/) - ('open_tag', open_tag) - ('close_tag', close_tag) - ('comment', comment) - ('processing', processing) - ('declaration', declaration) - ('cdata', cdata) - (); - - -module.exports.n = HTML_TAG_RE; - - -/***/ }), - -/***/ 9754: -/***/ ((module) => { - -"use strict"; -// List of valid url schemas, accorting to commonmark spec -// http://jgm.github.io/CommonMark/spec.html#autolinks - - - - -module.exports = [ - 'coap', - 'doi', - 'javascript', - 'aaa', - 'aaas', - 'about', - 'acap', - 'cap', - 'cid', - 'crid', - 'data', - 'dav', - 'dict', - 'dns', - 'file', - 'ftp', - 'geo', - 'go', - 'gopher', - 'h323', - 'http', - 'https', - 'iax', - 'icap', - 'im', - 'imap', - 'info', - 'ipp', - 'iris', - 'iris.beep', - 'iris.xpc', - 'iris.xpcs', - 'iris.lwz', - 'ldap', - 'mailto', - 'mid', - 'msrp', - 'msrps', - 'mtqp', - 'mupdate', - 'news', - 'nfs', - 'ni', - 'nih', - 'nntp', - 'opaquelocktoken', - 'pop', - 'pres', - 'rtsp', - 'service', - 'session', - 'shttp', - 'sieve', - 'sip', - 'sips', - 'sms', - 'snmp', - 'soap.beep', - 'soap.beeps', - 'tag', - 'tel', - 'telnet', - 'tftp', - 'thismessage', - 'tn3270', - 'tip', - 'tv', - 'urn', - 'vemmi', - 'ws', - 'wss', - 'xcon', - 'xcon-userid', - 'xmlrpc.beep', - 'xmlrpc.beeps', - 'xmpp', - 'z39.50r', - 'z39.50s', - 'adiumxtra', - 'afp', - 'afs', - 'aim', - 'apt', - 'attachment', - 'aw', - 'beshare', - 'bitcoin', - 'bolo', - 'callto', - 'chrome', - 'chrome-extension', - 'com-eventbrite-attendee', - 'content', - 'cvs', - 'dlna-playsingle', - 'dlna-playcontainer', - 'dtn', - 'dvb', - 'ed2k', - 'facetime', - 'feed', - 'finger', - 'fish', - 'gg', - 'git', - 'gizmoproject', - 'gtalk', - 'hcp', - 'icon', - 'ipn', - 'irc', - 'irc6', - 'ircs', - 'itms', - 'jar', - 'jms', - 'keyparc', - 'lastfm', - 'ldaps', - 'magnet', - 'maps', - 'market', - 'message', - 'mms', - 'ms-help', - 'msnim', - 'mumble', - 'mvn', - 'notes', - 'oid', - 'palm', - 'paparazzi', - 'platform', - 'proxy', - 'psyc', - 'query', - 'res', - 'resource', - 'rmi', - 'rsync', - 'rtmp', - 'secondlife', - 'sftp', - 'sgn', - 'skype', - 'smb', - 'soldat', - 'spotify', - 'ssh', - 'steam', - 'svn', - 'teamspeak', - 'things', - 'udp', - 'unreal', - 'ut2004', - 'ventrilo', - 'view-source', - 'webcal', - 'wtai', - 'wyciwyg', - 'xfire', - 'xri', - 'ymsgr' -]; - - -/***/ }), - -/***/ 3972: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -/** - * Utility functions - */ - -function typeOf(obj) { - return Object.prototype.toString.call(obj); -} - -function isString(obj) { - return typeOf(obj) === '[object String]'; -} - -var hasOwn = Object.prototype.hasOwnProperty; - -function has(object, key) { - return object - ? hasOwn.call(object, key) - : false; -} - -// Extend objects -// -function assign(obj /*from1, from2, from3, ...*/) { - var sources = [].slice.call(arguments, 1); - - sources.forEach(function (source) { - if (!source) { return; } - - if (typeof source !== 'object') { - throw new TypeError(source + 'must be object'); - } - - Object.keys(source).forEach(function (key) { - obj[key] = source[key]; - }); - }); - - return obj; -} - -//////////////////////////////////////////////////////////////////////////////// - -var UNESCAPE_MD_RE = /\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; - -function unescapeMd(str) { - if (str.indexOf('\\') < 0) { return str; } - return str.replace(UNESCAPE_MD_RE, '$1'); -} - -//////////////////////////////////////////////////////////////////////////////// - -function isValidEntityCode(c) { - /*eslint no-bitwise:0*/ - // broken sequence - if (c >= 0xD800 && c <= 0xDFFF) { return false; } - // never used - if (c >= 0xFDD0 && c <= 0xFDEF) { return false; } - if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; } - // control codes - if (c >= 0x00 && c <= 0x08) { return false; } - if (c === 0x0B) { return false; } - if (c >= 0x0E && c <= 0x1F) { return false; } - if (c >= 0x7F && c <= 0x9F) { return false; } - // out of range - if (c > 0x10FFFF) { return false; } - return true; -} - -function fromCodePoint(c) { - /*eslint no-bitwise:0*/ - if (c > 0xffff) { - c -= 0x10000; - var surrogate1 = 0xd800 + (c >> 10), - surrogate2 = 0xdc00 + (c & 0x3ff); - - return String.fromCharCode(surrogate1, surrogate2); - } - return String.fromCharCode(c); -} - -var NAMED_ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi; -var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i; -var entities = __webpack_require__(4184); - -function replaceEntityPattern(match, name) { - var code = 0; - - if (has(entities, name)) { - return entities[name]; - } else if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) { - code = name[1].toLowerCase() === 'x' ? - parseInt(name.slice(2), 16) - : - parseInt(name.slice(1), 10); - if (isValidEntityCode(code)) { - return fromCodePoint(code); - } - } - return match; -} - -function replaceEntities(str) { - if (str.indexOf('&') < 0) { return str; } - - return str.replace(NAMED_ENTITY_RE, replaceEntityPattern); -} - -//////////////////////////////////////////////////////////////////////////////// - -var HTML_ESCAPE_TEST_RE = /[&<>"]/; -var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; -var HTML_REPLACEMENTS = { - '&': '&', - '<': '<', - '>': '>', - '"': '"' -}; - -function replaceUnsafeChar(ch) { - return HTML_REPLACEMENTS[ch]; -} - -function escapeHtml(str) { - if (HTML_ESCAPE_TEST_RE.test(str)) { - return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar); - } - return str; -} - -//////////////////////////////////////////////////////////////////////////////// - -exports.assign = assign; -exports.isString = isString; -exports.has = has; -exports.unescapeMd = unescapeMd; -exports.isValidEntityCode = isValidEntityCode; -exports.fromCodePoint = fromCodePoint; -exports.replaceEntities = replaceEntities; -exports.escapeHtml = escapeHtml; - - -/***/ }), - -/***/ 2584: -/***/ ((module) => { - -"use strict"; -// Commonmark default options - - - - -module.exports = { - options: { - html: true, // Enable HTML tags in source - xhtmlOut: true, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - linkTarget: '', // set target to open link in - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if input not changed - // - // function (/*str, lang*/) { return ''; } - // - highlight: null, - - maxNesting: 20 // Internal protection, recursion limit - }, - - components: { - - core: { - rules: [ - 'block', - 'inline', - 'references', - 'abbr2' - ] - }, - - block: { - rules: [ - 'blockquote', - 'code', - 'fences', - 'heading', - 'hr', - 'htmlblock', - 'lheading', - 'list', - 'paragraph' - ] - }, - - inline: { - rules: [ - 'autolink', - 'backticks', - 'emphasis', - 'entity', - 'escape', - 'htmltag', - 'links', - 'newline', - 'text' - ] - } - } -}; - - -/***/ }), - -/***/ 7081: -/***/ ((module) => { - -"use strict"; -// Remarkable default options - - - - -module.exports = { - options: { - html: false, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - linkTarget: '', // set target to open link in - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if input not changed - // - // function (/*str, lang*/) { return ''; } - // - highlight: null, - - maxNesting: 20 // Internal protection, recursion limit - }, - - components: { - - core: { - rules: [ - 'block', - 'inline', - 'references', - 'replacements', - 'linkify', - 'smartquotes', - 'references', - 'abbr2', - 'footnote_tail' - ] - }, - - block: { - rules: [ - 'blockquote', - 'code', - 'fences', - 'footnote', - 'heading', - 'hr', - 'htmlblock', - 'lheading', - 'list', - 'paragraph', - 'table' - ] - }, - - inline: { - rules: [ - 'autolink', - 'backticks', - 'del', - 'emphasis', - 'entity', - 'escape', - 'footnote_ref', - 'htmltag', - 'links', - 'newline', - 'text' - ] - } - } -}; - - -/***/ }), - -/***/ 3065: -/***/ ((module) => { - -"use strict"; -// Remarkable default options - - - - -module.exports = { - options: { - html: false, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
          ) - breaks: false, // Convert '\n' in paragraphs into
          - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - linkTarget: '', // set target to open link in - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. - quotes: '“”‘’', - - // Highlighter function. Should return escaped HTML, - // or '' if input not changed - // - // function (/*str, lang*/) { return ''; } - // - highlight: null, - - maxNesting: 20 // Internal protection, recursion limit - }, - - components: { - // Don't restrict core/block/inline rules - core: {}, - block: {}, - inline: {} - } -}; - - -/***/ }), - -/***/ 4738: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var replaceEntities = __webpack_require__(3972).replaceEntities; - -module.exports = function normalizeLink(url) { - var normalized = replaceEntities(url); - // We shouldn't care about the result of malformed URIs, - // and should not throw an exception. - try { - normalized = decodeURI(normalized); - } catch (err) {} - return encodeURI(normalized); -}; - - -/***/ }), - -/***/ 5578: -/***/ ((module) => { - -"use strict"; - - -module.exports = function normalizeReference(str) { - // use .toUpperCase() instead of .toLowerCase() - // here to avoid a conflict with Object.prototype - // members (most notably, `__proto__`) - return str.trim().replace(/\s+/g, ' ').toUpperCase(); -}; - - -/***/ }), - -/***/ 6513: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - - -var normalizeLink = __webpack_require__(4738); -var unescapeMd = __webpack_require__(3972).unescapeMd; - -/** - * Parse link destination - * - * - on success it returns a string and updates state.pos; - * - on failure it returns null - * - * @param {Object} state - * @param {Number} pos - * @api private - */ - -module.exports = function parseLinkDestination(state, pos) { - var code, level, link, - start = pos, - max = state.posMax; - - if (state.src.charCodeAt(pos) === 0x3C /* < */) { - pos++; - while (pos < max) { - code = state.src.charCodeAt(pos); - if (code === 0x0A /* \n */) { return false; } - if (code === 0x3E /* > */) { - link = normalizeLink(unescapeMd(state.src.slice(start + 1, pos))); - if (!state.parser.validateLink(link)) { return false; } - state.pos = pos + 1; - state.linkContent = link; - return true; - } - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - pos++; - } - - // no closing '>' - return false; - } - - // this should be ... } else { ... branch - - level = 0; - while (pos < max) { - code = state.src.charCodeAt(pos); - - if (code === 0x20) { break; } - - // ascii control chars - if (code < 0x20 || code === 0x7F) { break; } - - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - if (code === 0x28 /* ( */) { - level++; - if (level > 1) { break; } - } - - if (code === 0x29 /* ) */) { - level--; - if (level < 0) { break; } - } - - pos++; - } - - if (start === pos) { return false; } - - link = unescapeMd(state.src.slice(start, pos)); - if (!state.parser.validateLink(link)) { return false; } - - state.linkContent = link; - state.pos = pos; - return true; -}; - - -/***/ }), - -/***/ 5453: -/***/ ((module) => { - -"use strict"; - - -/** - * Parse link labels - * - * This function assumes that first character (`[`) already matches; - * returns the end of the label. - * - * @param {Object} state - * @param {Number} start - * @api private - */ - -module.exports = function parseLinkLabel(state, start) { - var level, found, marker, - labelEnd = -1, - max = state.posMax, - oldPos = state.pos, - oldFlag = state.isInLabel; - - if (state.isInLabel) { return -1; } - - if (state.labelUnmatchedScopes) { - state.labelUnmatchedScopes--; - return -1; - } - - state.pos = start + 1; - state.isInLabel = true; - level = 1; - - while (state.pos < max) { - marker = state.src.charCodeAt(state.pos); - if (marker === 0x5B /* [ */) { - level++; - } else if (marker === 0x5D /* ] */) { - level--; - if (level === 0) { - found = true; - break; - } - } - - state.parser.skipToken(state); - } - - if (found) { - labelEnd = state.pos; - state.labelUnmatchedScopes = 0; - } else { - state.labelUnmatchedScopes = level - 1; - } - - // restore old state - state.pos = oldPos; - state.isInLabel = oldFlag; - - return labelEnd; -}; - - -/***/ }), - -/***/ 3509: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - - -var unescapeMd = __webpack_require__(3972).unescapeMd; - -/** - * Parse link title - * - * - on success it returns a string and updates state.pos; - * - on failure it returns null - * - * @param {Object} state - * @param {Number} pos - * @api private - */ - -module.exports = function parseLinkTitle(state, pos) { - var code, - start = pos, - max = state.posMax, - marker = state.src.charCodeAt(pos); - - if (marker !== 0x22 /* " */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return false; } - - pos++; - - // if opening marker is "(", switch it to closing marker ")" - if (marker === 0x28) { marker = 0x29; } - - while (pos < max) { - code = state.src.charCodeAt(pos); - if (code === marker) { - state.pos = pos + 1; - state.linkContent = unescapeMd(state.src.slice(start + 1, pos)); - return true; - } - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - pos++; - } - - return false; -}; - - -/***/ }), - -/***/ 6288: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -/** - * Local dependencies - */ - -var assign = __webpack_require__(3972).assign; -var Renderer = __webpack_require__(8326); -var ParserCore = __webpack_require__(2814); -var ParserBlock = __webpack_require__(7638); -var ParserInline = __webpack_require__(9168); -var Ruler = __webpack_require__(9678); - -/** - * Preset configs - */ - -var config = { - 'default': __webpack_require__(7081), - 'full': __webpack_require__(3065), - 'commonmark': __webpack_require__(2584) -}; - -/** - * The `StateCore` class manages state. - * - * @param {Object} `instance` Remarkable instance - * @param {String} `str` Markdown string - * @param {Object} `env` - */ - -function StateCore(instance, str, env) { - this.src = str; - this.env = env; - this.options = instance.options; - this.tokens = []; - this.inlineMode = false; - - this.inline = instance.inline; - this.block = instance.block; - this.renderer = instance.renderer; - this.typographer = instance.typographer; -} - -/** - * The main `Remarkable` class. Create an instance of - * `Remarkable` with a `preset` and/or `options`. - * - * @param {String} `preset` If no preset is given, `default` is used. - * @param {Object} `options` - */ - -function Remarkable(preset, options) { - if (typeof preset !== 'string') { - options = preset; - preset = 'default'; - } - - this.inline = new ParserInline(); - this.block = new ParserBlock(); - this.core = new ParserCore(); - this.renderer = new Renderer(); - this.ruler = new Ruler(); - - this.options = {}; - this.configure(config[preset]); - this.set(options || {}); -} - -/** - * Set options as an alternative to passing them - * to the constructor. - * - * ```js - * md.set({typographer: true}); - * ``` - * @param {Object} `options` - * @api public - */ - -Remarkable.prototype.set = function (options) { - assign(this.options, options); -}; - -/** - * Batch loader for components rules states, and options - * - * @param {Object} `presets` - */ - -Remarkable.prototype.configure = function (presets) { - var self = this; - - if (!presets) { throw new Error('Wrong `remarkable` preset, check name/content'); } - if (presets.options) { self.set(presets.options); } - if (presets.components) { - Object.keys(presets.components).forEach(function (name) { - if (presets.components[name].rules) { - self[name].ruler.enable(presets.components[name].rules, true); - } - }); - } -}; - -/** - * Use a plugin. - * - * ```js - * var md = new Remarkable(); - * - * md.use(plugin1) - * .use(plugin2, opts) - * .use(plugin3); - * ``` - * - * @param {Function} `plugin` - * @param {Object} `options` - * @return {Object} `Remarkable` for chaining - */ - -Remarkable.prototype.use = function (plugin, options) { - plugin(this, options); - return this; -}; - - -/** - * Parse the input `string` and return a tokens array. - * Modifies `env` with definitions data. - * - * @param {String} `string` - * @param {Object} `env` - * @return {Array} Array of tokens - */ - -Remarkable.prototype.parse = function (str, env) { - var state = new StateCore(this, str, env); - this.core.process(state); - return state.tokens; -}; - -/** - * The main `.render()` method that does all the magic :) - * - * @param {String} `string` - * @param {Object} `env` - * @return {String} Rendered HTML. - */ - -Remarkable.prototype.render = function (str, env) { - env = env || {}; - return this.renderer.render(this.parse(str, env), this.options, env); -}; - -/** - * Parse the given content `string` as a single string. - * - * @param {String} `string` - * @param {Object} `env` - * @return {Array} Array of tokens - */ - -Remarkable.prototype.parseInline = function (str, env) { - var state = new StateCore(this, str, env); - state.inlineMode = true; - this.core.process(state); - return state.tokens; -}; - -/** - * Render a single content `string`, without wrapping it - * to paragraphs - * - * @param {String} `str` - * @param {Object} `env` - * @return {String} - */ - -Remarkable.prototype.renderInline = function (str, env) { - env = env || {}; - return this.renderer.render(this.parseInline(str, env), this.options, env); -}; - -/** - * Expose `Remarkable` - */ - -module.exports = Remarkable; - -/** - * Expose `utils`, Useful helper functions for custom - * rendering. - */ - -module.exports.utils = __webpack_require__(3972); - - -/***/ }), - -/***/ 7638: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -/** - * Local dependencies - */ - -var Ruler = __webpack_require__(9678); -var StateBlock = __webpack_require__(2300); - -/** - * Parser rules - */ - -var _rules = [ - [ 'code', __webpack_require__(5169) ], - [ 'fences', __webpack_require__(1200), [ 'paragraph', 'blockquote', 'list' ] ], - [ 'blockquote', __webpack_require__(2064), [ 'paragraph', 'blockquote', 'list' ] ], - [ 'hr', __webpack_require__(353), [ 'paragraph', 'blockquote', 'list' ] ], - [ 'list', __webpack_require__(7322), [ 'paragraph', 'blockquote' ] ], - [ 'footnote', __webpack_require__(2597), [ 'paragraph' ] ], - [ 'heading', __webpack_require__(7271), [ 'paragraph', 'blockquote' ] ], - [ 'lheading', __webpack_require__(7378) ], - [ 'htmlblock', __webpack_require__(4131), [ 'paragraph', 'blockquote' ] ], - [ 'table', __webpack_require__(785), [ 'paragraph' ] ], - [ 'deflist', __webpack_require__(4899), [ 'paragraph' ] ], - [ 'paragraph', __webpack_require__(5240) ] -]; - -/** - * Block Parser class - * - * @api private - */ - -function ParserBlock() { - this.ruler = new Ruler(); - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1], { - alt: (_rules[i][2] || []).slice() - }); - } -} - -/** - * Generate tokens for the given input range. - * - * @param {Object} `state` Has properties like `src`, `parser`, `options` etc - * @param {Number} `startLine` - * @param {Number} `endLine` - * @api private - */ - -ParserBlock.prototype.tokenize = function (state, startLine, endLine) { - var rules = this.ruler.getRules(''); - var len = rules.length; - var line = startLine; - var hasEmptyLines = false; - var ok, i; - - while (line < endLine) { - state.line = line = state.skipEmptyLines(line); - if (line >= endLine) { - break; - } - - // Termination condition for nested calls. - // Nested calls currently used for blockquotes & lists - if (state.tShift[line] < state.blkIndent) { - break; - } - - // Try all possible rules. - // On success, rule should: - // - // - update `state.line` - // - update `state.tokens` - // - return true - - for (i = 0; i < len; i++) { - ok = rules[i](state, line, endLine, false); - if (ok) { - break; - } - } - - // set state.tight iff we had an empty line before current tag - // i.e. latest empty line should not count - state.tight = !hasEmptyLines; - - // paragraph might "eat" one newline after it in nested lists - if (state.isEmpty(state.line - 1)) { - hasEmptyLines = true; - } - - line = state.line; - - if (line < endLine && state.isEmpty(line)) { - hasEmptyLines = true; - line++; - - // two empty lines should stop the parser in list mode - if (line < endLine && state.parentType === 'list' && state.isEmpty(line)) { break; } - state.line = line; - } - } -}; - -var TABS_SCAN_RE = /[\n\t]/g; -var NEWLINES_RE = /\r[\n\u0085]|[\u2424\u2028\u0085]/g; -var SPACES_RE = /\u00a0/g; - -/** - * Tokenize the given `str`. - * - * @param {String} `str` Source string - * @param {Object} `options` - * @param {Object} `env` - * @param {Array} `outTokens` - * @api private - */ - -ParserBlock.prototype.parse = function (str, options, env, outTokens) { - var state, lineStart = 0, lastTabPos = 0; - if (!str) { return []; } - - // Normalize spaces - str = str.replace(SPACES_RE, ' '); - - // Normalize newlines - str = str.replace(NEWLINES_RE, '\n'); - - // Replace tabs with proper number of spaces (1..4) - if (str.indexOf('\t') >= 0) { - str = str.replace(TABS_SCAN_RE, function (match, offset) { - var result; - if (str.charCodeAt(offset) === 0x0A) { - lineStart = offset + 1; - lastTabPos = 0; - return match; - } - result = ' '.slice((offset - lineStart - lastTabPos) % 4); - lastTabPos = offset - lineStart + 1; - return result; - }); - } - - state = new StateBlock(str, this, options, env, outTokens); - this.tokenize(state, state.line, state.lineMax); -}; - -/** - * Expose `ParserBlock` - */ - -module.exports = ParserBlock; - - -/***/ }), - -/***/ 2814: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -/** - * Local dependencies - */ - -var Ruler = __webpack_require__(9678); - -/** - * Core parser `rules` - */ - -var _rules = [ - [ 'block', __webpack_require__(3400) ], - [ 'abbr', __webpack_require__(9927) ], - [ 'references', __webpack_require__(4753) ], - [ 'inline', __webpack_require__(2133) ], - [ 'footnote_tail', __webpack_require__(149) ], - [ 'abbr2', __webpack_require__(3056) ], - [ 'replacements', __webpack_require__(8167) ], - [ 'smartquotes', __webpack_require__(7849) ], - [ 'linkify', __webpack_require__(6945) ] -]; - -/** - * Class for top level (`core`) parser rules - * - * @api private - */ - -function Core() { - this.options = {}; - this.ruler = new Ruler(); - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1]); - } -} - -/** - * Process rules with the given `state` - * - * @param {Object} `state` - * @api private - */ - -Core.prototype.process = function (state) { - var i, l, rules; - rules = this.ruler.getRules(''); - for (i = 0, l = rules.length; i < l; i++) { - rules[i](state); - } -}; - -/** - * Expose `Core` - */ - -module.exports = Core; - - -/***/ }), - -/***/ 9168: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -/** - * Local dependencies - */ - -var Ruler = __webpack_require__(9678); -var StateInline = __webpack_require__(3770); -var utils = __webpack_require__(3972); - -/** - * Inline Parser `rules` - */ - -var _rules = [ - [ 'text', __webpack_require__(104) ], - [ 'newline', __webpack_require__(4178) ], - [ 'escape', __webpack_require__(8279) ], - [ 'backticks', __webpack_require__(8050) ], - [ 'del', __webpack_require__(897) ], - [ 'ins', __webpack_require__(2531) ], - [ 'mark', __webpack_require__(6211) ], - [ 'emphasis', __webpack_require__(6083) ], - [ 'sub', __webpack_require__(4946) ], - [ 'sup', __webpack_require__(4536) ], - [ 'links', __webpack_require__(5398) ], - [ 'footnote_inline', __webpack_require__(3304) ], - [ 'footnote_ref', __webpack_require__(410) ], - [ 'autolink', __webpack_require__(5667) ], - [ 'htmltag', __webpack_require__(5378) ], - [ 'entity', __webpack_require__(6356) ] -]; - -/** - * Inline Parser class. Note that link validation is stricter - * in Remarkable than what is specified by CommonMark. If you - * want to change this you can use a custom validator. - * - * @api private - */ - -function ParserInline() { - this.ruler = new Ruler(); - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1]); - } - - // Can be overridden with a custom validator - this.validateLink = validateLink; -} - -/** - * Skip a single token by running all rules in validation mode. - * Returns `true` if any rule reports success. - * - * @param {Object} `state` - * @api privage - */ - -ParserInline.prototype.skipToken = function (state) { - var rules = this.ruler.getRules(''); - var len = rules.length; - var pos = state.pos; - var i, cached_pos; - - if ((cached_pos = state.cacheGet(pos)) > 0) { - state.pos = cached_pos; - return; - } - - for (i = 0; i < len; i++) { - if (rules[i](state, true)) { - state.cacheSet(pos, state.pos); - return; - } - } - - state.pos++; - state.cacheSet(pos, state.pos); -}; - -/** - * Generate tokens for the given input range. - * - * @param {Object} `state` - * @api private - */ - -ParserInline.prototype.tokenize = function (state) { - var rules = this.ruler.getRules(''); - var len = rules.length; - var end = state.posMax; - var ok, i; - - while (state.pos < end) { - - // Try all possible rules. - // On success, the rule should: - // - // - update `state.pos` - // - update `state.tokens` - // - return true - for (i = 0; i < len; i++) { - ok = rules[i](state, false); - - if (ok) { - break; - } - } - - if (ok) { - if (state.pos >= end) { break; } - continue; - } - - state.pending += state.src[state.pos++]; - } - - if (state.pending) { - state.pushPending(); - } -}; - -/** - * Parse the given input string. - * - * @param {String} `str` - * @param {Object} `options` - * @param {Object} `env` - * @param {Array} `outTokens` - * @api private - */ - -ParserInline.prototype.parse = function (str, options, env, outTokens) { - var state = new StateInline(str, this, options, env, outTokens); - this.tokenize(state); -}; - -/** - * Validate the given `url` by checking for bad protocols. - * - * @param {String} `url` - * @return {Boolean} - */ - -function validateLink(url) { - var BAD_PROTOCOLS = [ 'vbscript', 'javascript', 'file', 'data' ]; - var str = url.trim().toLowerCase(); - // Care about digital entities "javascript:alert(1)" - str = utils.replaceEntities(str); - if (str.indexOf(':') !== -1 && BAD_PROTOCOLS.indexOf(str.split(':')[0]) !== -1) { - return false; - } - return true; -} - -/** - * Expose `ParserInline` - */ - -module.exports = ParserInline; - - -/***/ }), - -/***/ 8326: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -/** - * Local dependencies - */ - -var utils = __webpack_require__(3972); -var rules = __webpack_require__(8520); - -/** - * Expose `Renderer` - */ - -module.exports = Renderer; - -/** - * Renderer class. Renders HTML and exposes `rules` to allow - * local modifications. - */ - -function Renderer() { - this.rules = utils.assign({}, rules); - - // exported helper, for custom rules only - this.getBreak = rules.getBreak; -} - -/** - * Render a string of inline HTML with the given `tokens` and - * `options`. - * - * @param {Array} `tokens` - * @param {Object} `options` - * @param {Object} `env` - * @return {String} - * @api public - */ - -Renderer.prototype.renderInline = function (tokens, options, env) { - var _rules = this.rules; - var len = tokens.length, i = 0; - var result = ''; - - while (len--) { - result += _rules[tokens[i].type](tokens, i++, options, env, this); - } - - return result; -}; - -/** - * Render a string of HTML with the given `tokens` and - * `options`. - * - * @param {Array} `tokens` - * @param {Object} `options` - * @param {Object} `env` - * @return {String} - * @api public - */ - -Renderer.prototype.render = function (tokens, options, env) { - var _rules = this.rules; - var len = tokens.length, i = -1; - var result = ''; - - while (++i < len) { - if (tokens[i].type === 'inline') { - result += this.renderInline(tokens[i].children, options, env); - } else { - result += _rules[tokens[i].type](tokens, i, options, env, this); - } - } - return result; -}; - - -/***/ }), - -/***/ 9678: -/***/ ((module) => { - -"use strict"; - - -/** - * Ruler is a helper class for building responsibility chains from - * parse rules. It allows: - * - * - easy stack rules chains - * - getting main chain and named chains content (as arrays of functions) - * - * Helper methods, should not be used directly. - * @api private - */ - -function Ruler() { - // List of added rules. Each element is: - // - // { name: XXX, - // enabled: Boolean, - // fn: Function(), - // alt: [ name2, name3 ] } - // - this.__rules__ = []; - - // Cached rule chains. - // - // First level - chain name, '' for default. - // Second level - digital anchor for fast filtering by charcodes. - // - this.__cache__ = null; -} - -/** - * Find the index of a rule by `name`. - * - * @param {String} `name` - * @return {Number} Index of the given `name` - * @api private - */ - -Ruler.prototype.__find__ = function (name) { - var len = this.__rules__.length; - var i = -1; - - while (len--) { - if (this.__rules__[++i].name === name) { - return i; - } - } - return -1; -}; - -/** - * Build the rules lookup cache - * - * @api private - */ - -Ruler.prototype.__compile__ = function () { - var self = this; - var chains = [ '' ]; - - // collect unique names - self.__rules__.forEach(function (rule) { - if (!rule.enabled) { - return; - } - - rule.alt.forEach(function (altName) { - if (chains.indexOf(altName) < 0) { - chains.push(altName); - } - }); - }); - - self.__cache__ = {}; - - chains.forEach(function (chain) { - self.__cache__[chain] = []; - self.__rules__.forEach(function (rule) { - if (!rule.enabled) { - return; - } - - if (chain && rule.alt.indexOf(chain) < 0) { - return; - } - self.__cache__[chain].push(rule.fn); - }); - }); -}; - -/** - * Ruler public methods - * ------------------------------------------------ - */ - -/** - * Replace rule function - * - * @param {String} `name` Rule name - * @param {Function `fn` - * @param {Object} `options` - * @api private - */ - -Ruler.prototype.at = function (name, fn, options) { - var idx = this.__find__(name); - var opt = options || {}; - - if (idx === -1) { - throw new Error('Parser rule not found: ' + name); - } - - this.__rules__[idx].fn = fn; - this.__rules__[idx].alt = opt.alt || []; - this.__cache__ = null; -}; - -/** - * Add a rule to the chain before given the `ruleName`. - * - * @param {String} `beforeName` - * @param {String} `ruleName` - * @param {Function} `fn` - * @param {Object} `options` - * @api private - */ - -Ruler.prototype.before = function (beforeName, ruleName, fn, options) { - var idx = this.__find__(beforeName); - var opt = options || {}; - - if (idx === -1) { - throw new Error('Parser rule not found: ' + beforeName); - } - - this.__rules__.splice(idx, 0, { - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Add a rule to the chain after the given `ruleName`. - * - * @param {String} `afterName` - * @param {String} `ruleName` - * @param {Function} `fn` - * @param {Object} `options` - * @api private - */ - -Ruler.prototype.after = function (afterName, ruleName, fn, options) { - var idx = this.__find__(afterName); - var opt = options || {}; - - if (idx === -1) { - throw new Error('Parser rule not found: ' + afterName); - } - - this.__rules__.splice(idx + 1, 0, { - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Add a rule to the end of chain. - * - * @param {String} `ruleName` - * @param {Function} `fn` - * @param {Object} `options` - * @return {String} - */ - -Ruler.prototype.push = function (ruleName, fn, options) { - var opt = options || {}; - - this.__rules__.push({ - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Enable a rule or list of rules. - * - * @param {String|Array} `list` Name or array of rule names to enable - * @param {Boolean} `strict` If `true`, all non listed rules will be disabled. - * @api private - */ - -Ruler.prototype.enable = function (list, strict) { - list = !Array.isArray(list) - ? [ list ] - : list; - - // In strict mode disable all existing rules first - if (strict) { - this.__rules__.forEach(function (rule) { - rule.enabled = false; - }); - } - - // Search by name and enable - list.forEach(function (name) { - var idx = this.__find__(name); - if (idx < 0) { - throw new Error('Rules manager: invalid rule name ' + name); - } - this.__rules__[idx].enabled = true; - }, this); - - this.__cache__ = null; -}; - - -/** - * Disable a rule or list of rules. - * - * @param {String|Array} `list` Name or array of rule names to disable - * @api private - */ - -Ruler.prototype.disable = function (list) { - list = !Array.isArray(list) - ? [ list ] - : list; - - // Search by name and disable - list.forEach(function (name) { - var idx = this.__find__(name); - if (idx < 0) { - throw new Error('Rules manager: invalid rule name ' + name); - } - this.__rules__[idx].enabled = false; - }, this); - - this.__cache__ = null; -}; - -/** - * Get a rules list as an array of functions. - * - * @param {String} `chainName` - * @return {Object} - * @api private - */ - -Ruler.prototype.getRules = function (chainName) { - if (this.__cache__ === null) { - this.__compile__(); - } - return this.__cache__[chainName] || []; -}; - -/** - * Expose `Ruler` - */ - -module.exports = Ruler; - - -/***/ }), - -/***/ 8520: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -/** - * Local dependencies - */ - -var has = __webpack_require__(3972).has; -var unescapeMd = __webpack_require__(3972).unescapeMd; -var replaceEntities = __webpack_require__(3972).replaceEntities; -var escapeHtml = __webpack_require__(3972).escapeHtml; - -/** - * Renderer rules cache - */ - -var rules = {}; - -/** - * Blockquotes - */ - -rules.blockquote_open = function(/* tokens, idx, options, env */) { - return '
          \n'; -}; - -rules.blockquote_close = function(tokens, idx /*, options, env */) { - return '
          ' + getBreak(tokens, idx); -}; - -/** - * Code - */ - -rules.code = function(tokens, idx /*, options, env */) { - if (tokens[idx].block) { - return '
          ' + escapeHtml(tokens[idx].content) + '
          ' + getBreak(tokens, idx); - } - return '' + escapeHtml(tokens[idx].content) + ''; -}; - -/** - * Fenced code blocks - */ - -rules.fence = function(tokens, idx, options, env, instance) { - var token = tokens[idx]; - var langClass = ''; - var langPrefix = options.langPrefix; - var langName = '', fences, fenceName; - var highlighted; - - if (token.params) { - - // - // ```foo bar - // - // Try custom renderer "foo" first. That will simplify overwrite - // for diagrams, latex, and any other fenced block with custom look - // - - fences = token.params.split(/\s+/g); - fenceName = fences.join(' '); - - if (has(instance.rules.fence_custom, fences[0])) { - return instance.rules.fence_custom[fences[0]](tokens, idx, options, env, instance); - } - - langName = escapeHtml(replaceEntities(unescapeMd(fenceName))); - langClass = ' class="' + langPrefix + langName + '"'; - } - - if (options.highlight) { - highlighted = options.highlight.apply(options.highlight, [ token.content ].concat(fences)) - || escapeHtml(token.content); - } else { - highlighted = escapeHtml(token.content); - } - - return '
          '
          -        + highlighted
          -        + '
          ' - + getBreak(tokens, idx); -}; - -rules.fence_custom = {}; - -/** - * Headings - */ - -rules.heading_open = function(tokens, idx /*, options, env */) { - return ''; -}; -rules.heading_close = function(tokens, idx /*, options, env */) { - return '\n'; -}; - -/** - * Horizontal rules - */ - -rules.hr = function(tokens, idx, options /*, env */) { - return (options.xhtmlOut ? '
          ' : '
          ') + getBreak(tokens, idx); -}; - -/** - * Bullets - */ - -rules.bullet_list_open = function(/* tokens, idx, options, env */) { - return '
            \n'; -}; -rules.bullet_list_close = function(tokens, idx /*, options, env */) { - return '
          ' + getBreak(tokens, idx); -}; - -/** - * List items - */ - -rules.list_item_open = function(/* tokens, idx, options, env */) { - return '
        13. '; -}; -rules.list_item_close = function(/* tokens, idx, options, env */) { - return '
        14. \n'; -}; - -/** - * Ordered list items - */ - -rules.ordered_list_open = function(tokens, idx /*, options, env */) { - var token = tokens[idx]; - var order = token.order > 1 ? ' start="' + token.order + '"' : ''; - return '\n'; -}; -rules.ordered_list_close = function(tokens, idx /*, options, env */) { - return '' + getBreak(tokens, idx); -}; - -/** - * Paragraphs - */ - -rules.paragraph_open = function(tokens, idx /*, options, env */) { - return tokens[idx].tight ? '' : '

          '; -}; -rules.paragraph_close = function(tokens, idx /*, options, env */) { - var addBreak = !(tokens[idx].tight && idx && tokens[idx - 1].type === 'inline' && !tokens[idx - 1].content); - return (tokens[idx].tight ? '' : '

          ') + (addBreak ? getBreak(tokens, idx) : ''); -}; - -/** - * Links - */ - -rules.link_open = function(tokens, idx, options /* env */) { - var title = tokens[idx].title ? (' title="' + escapeHtml(replaceEntities(tokens[idx].title)) + '"') : ''; - var target = options.linkTarget ? (' target="' + options.linkTarget + '"') : ''; - return '
          '; -}; -rules.link_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Images - */ - -rules.image = function(tokens, idx, options /*, env */) { - var src = ' src="' + escapeHtml(tokens[idx].src) + '"'; - var title = tokens[idx].title ? (' title="' + escapeHtml(replaceEntities(tokens[idx].title)) + '"') : ''; - var alt = ' alt="' + (tokens[idx].alt ? escapeHtml(replaceEntities(unescapeMd(tokens[idx].alt))) : '') + '"'; - var suffix = options.xhtmlOut ? ' /' : ''; - return ''; -}; - -/** - * Tables - */ - -rules.table_open = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.table_close = function(/* tokens, idx, options, env */) { - return '
          \n'; -}; -rules.thead_open = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.thead_close = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.tbody_open = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.tbody_close = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.tr_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.tr_close = function(/* tokens, idx, options, env */) { - return '\n'; -}; -rules.th_open = function(tokens, idx /*, options, env */) { - var token = tokens[idx]; - return ''; -}; -rules.th_close = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.td_open = function(tokens, idx /*, options, env */) { - var token = tokens[idx]; - return ''; -}; -rules.td_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Bold - */ - -rules.strong_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.strong_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Italicize - */ - -rules.em_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.em_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Strikethrough - */ - -rules.del_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.del_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Insert - */ - -rules.ins_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.ins_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Highlight - */ - -rules.mark_open = function(/* tokens, idx, options, env */) { - return ''; -}; -rules.mark_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Super- and sub-script - */ - -rules.sub = function(tokens, idx /*, options, env */) { - return '' + escapeHtml(tokens[idx].content) + ''; -}; -rules.sup = function(tokens, idx /*, options, env */) { - return '' + escapeHtml(tokens[idx].content) + ''; -}; - -/** - * Breaks - */ - -rules.hardbreak = function(tokens, idx, options /*, env */) { - return options.xhtmlOut ? '
          \n' : '
          \n'; -}; -rules.softbreak = function(tokens, idx, options /*, env */) { - return options.breaks ? (options.xhtmlOut ? '
          \n' : '
          \n') : '\n'; -}; - -/** - * Text - */ - -rules.text = function(tokens, idx /*, options, env */) { - return escapeHtml(tokens[idx].content); -}; - -/** - * Content - */ - -rules.htmlblock = function(tokens, idx /*, options, env */) { - return tokens[idx].content; -}; -rules.htmltag = function(tokens, idx /*, options, env */) { - return tokens[idx].content; -}; - -/** - * Abbreviations, initialism - */ - -rules.abbr_open = function(tokens, idx /*, options, env */) { - return ''; -}; -rules.abbr_close = function(/* tokens, idx, options, env */) { - return ''; -}; - -/** - * Footnotes - */ - -rules.footnote_ref = function(tokens, idx) { - var n = Number(tokens[idx].id + 1).toString(); - var id = 'fnref' + n; - if (tokens[idx].subId > 0) { - id += ':' + tokens[idx].subId; - } - return '[' + n + ']'; -}; -rules.footnote_block_open = function(tokens, idx, options) { - var hr = options.xhtmlOut - ? '
          \n' - : '
          \n'; - return hr + '
          \n
            \n'; -}; -rules.footnote_block_close = function() { - return '
          \n
          \n'; -}; -rules.footnote_open = function(tokens, idx) { - var id = Number(tokens[idx].id + 1).toString(); - return '
        15. '; -}; -rules.footnote_close = function() { - return '
        16. \n'; -}; -rules.footnote_anchor = function(tokens, idx) { - var n = Number(tokens[idx].id + 1).toString(); - var id = 'fnref' + n; - if (tokens[idx].subId > 0) { - id += ':' + tokens[idx].subId; - } - return ' '; -}; - -/** - * Definition lists - */ - -rules.dl_open = function() { - return '
          \n'; -}; -rules.dt_open = function() { - return '
          '; -}; -rules.dd_open = function() { - return '
          '; -}; -rules.dl_close = function() { - return '
          \n'; -}; -rules.dt_close = function() { - return '\n'; -}; -rules.dd_close = function() { - return '\n'; -}; - -/** - * Helper functions - */ - -function nextToken(tokens, idx) { - if (++idx >= tokens.length - 2) { - return idx; - } - if ((tokens[idx].type === 'paragraph_open' && tokens[idx].tight) && - (tokens[idx + 1].type === 'inline' && tokens[idx + 1].content.length === 0) && - (tokens[idx + 2].type === 'paragraph_close' && tokens[idx + 2].tight)) { - return nextToken(tokens, idx + 2); - } - return idx; -} - -/** - * Check to see if `\n` is needed before the next token. - * - * @param {Array} `tokens` - * @param {Number} `idx` - * @return {String} Empty string or newline - * @api private - */ - -var getBreak = rules.getBreak = function getBreak(tokens, idx) { - idx = nextToken(tokens, idx); - if (idx < tokens.length && tokens[idx].type === 'list_item_close') { - return ''; - } - return '\n'; -}; - -/** - * Expose `rules` - */ - -module.exports = rules; - - -/***/ }), - -/***/ 2064: -/***/ ((module) => { - -"use strict"; -// Block quotes - - - - -module.exports = function blockquote(state, startLine, endLine, silent) { - var nextLine, lastLineEmpty, oldTShift, oldBMarks, oldIndent, oldParentType, lines, - terminatorRules, - i, l, terminate, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos > max) { return false; } - - // check the block quote marker - if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; } - - if (state.level >= state.options.maxNesting) { return false; } - - // we know that it's going to be a valid blockquote, - // so no point trying to find the end of it in silent mode - if (silent) { return true; } - - // skip one optional space after '>' - if (state.src.charCodeAt(pos) === 0x20) { pos++; } - - oldIndent = state.blkIndent; - state.blkIndent = 0; - - oldBMarks = [ state.bMarks[startLine] ]; - state.bMarks[startLine] = pos; - - // check if we have an empty blockquote - pos = pos < max ? state.skipSpaces(pos) : pos; - lastLineEmpty = pos >= max; - - oldTShift = [ state.tShift[startLine] ]; - state.tShift[startLine] = pos - state.bMarks[startLine]; - - terminatorRules = state.parser.ruler.getRules('blockquote'); - - // Search the end of the block - // - // Block ends with either: - // 1. an empty line outside: - // ``` - // > test - // - // ``` - // 2. an empty line inside: - // ``` - // > - // test - // ``` - // 3. another tag - // ``` - // > test - // - - - - // ``` - for (nextLine = startLine + 1; nextLine < endLine; nextLine++) { - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (pos >= max) { - // Case 1: line is not inside the blockquote, and this line is empty. - break; - } - - if (state.src.charCodeAt(pos++) === 0x3E/* > */) { - // This line is inside the blockquote. - - // skip one optional space after '>' - if (state.src.charCodeAt(pos) === 0x20) { pos++; } - - oldBMarks.push(state.bMarks[nextLine]); - state.bMarks[nextLine] = pos; - - pos = pos < max ? state.skipSpaces(pos) : pos; - lastLineEmpty = pos >= max; - - oldTShift.push(state.tShift[nextLine]); - state.tShift[nextLine] = pos - state.bMarks[nextLine]; - continue; - } - - // Case 2: line is not inside the blockquote, and the last line was empty. - if (lastLineEmpty) { break; } - - // Case 3: another tag found. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - - oldBMarks.push(state.bMarks[nextLine]); - oldTShift.push(state.tShift[nextLine]); - - // A negative number means that this is a paragraph continuation; - // - // Any negative number will do the job here, but it's better for it - // to be large enough to make any bugs obvious. - state.tShift[nextLine] = -1337; - } - - oldParentType = state.parentType; - state.parentType = 'blockquote'; - state.tokens.push({ - type: 'blockquote_open', - lines: lines = [ startLine, 0 ], - level: state.level++ - }); - state.parser.tokenize(state, startLine, nextLine); - state.tokens.push({ - type: 'blockquote_close', - level: --state.level - }); - state.parentType = oldParentType; - lines[1] = state.line; - - // Restore original tShift; this might not be necessary since the parser - // has already been here, but just to make sure we can do that. - for (i = 0; i < oldTShift.length; i++) { - state.bMarks[i + startLine] = oldBMarks[i]; - state.tShift[i + startLine] = oldTShift[i]; - } - state.blkIndent = oldIndent; - - return true; -}; - - -/***/ }), - -/***/ 5169: -/***/ ((module) => { - -"use strict"; -// Code block (4 spaces padded) - - - - -module.exports = function code(state, startLine, endLine/*, silent*/) { - var nextLine, last; - - if (state.tShift[startLine] - state.blkIndent < 4) { return false; } - - last = nextLine = startLine + 1; - - while (nextLine < endLine) { - if (state.isEmpty(nextLine)) { - nextLine++; - continue; - } - if (state.tShift[nextLine] - state.blkIndent >= 4) { - nextLine++; - last = nextLine; - continue; - } - break; - } - - state.line = nextLine; - state.tokens.push({ - type: 'code', - content: state.getLines(startLine, last, 4 + state.blkIndent, true), - block: true, - lines: [ startLine, state.line ], - level: state.level - }); - - return true; -}; - - -/***/ }), - -/***/ 4899: -/***/ ((module) => { - -"use strict"; -// Definition lists - - - - -// Search `[:~][\n ]`, returns next pos after marker on success -// or -1 on fail. -function skipMarker(state, line) { - var pos, marker, - start = state.bMarks[line] + state.tShift[line], - max = state.eMarks[line]; - - if (start >= max) { return -1; } - - // Check bullet - marker = state.src.charCodeAt(start++); - if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1; } - - pos = state.skipSpaces(start); - - // require space after ":" - if (start === pos) { return -1; } - - // no empty definitions, e.g. " : " - if (pos >= max) { return -1; } - - return pos; -} - -function markTightParagraphs(state, idx) { - var i, l, - level = state.level + 2; - - for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) { - if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { - state.tokens[i + 2].tight = true; - state.tokens[i].tight = true; - i += 2; - } - } -} - -module.exports = function deflist(state, startLine, endLine, silent) { - var contentStart, - ddLine, - dtLine, - itemLines, - listLines, - listTokIdx, - nextLine, - oldIndent, - oldDDIndent, - oldParentType, - oldTShift, - oldTight, - prevEmptyEnd, - tight; - - if (silent) { - // quirk: validation mode validates a dd block only, not a whole deflist - if (state.ddIndent < 0) { return false; } - return skipMarker(state, startLine) >= 0; - } - - nextLine = startLine + 1; - if (state.isEmpty(nextLine)) { - if (++nextLine > endLine) { return false; } - } - - if (state.tShift[nextLine] < state.blkIndent) { return false; } - contentStart = skipMarker(state, nextLine); - if (contentStart < 0) { return false; } - - if (state.level >= state.options.maxNesting) { return false; } - - // Start list - listTokIdx = state.tokens.length; - - state.tokens.push({ - type: 'dl_open', - lines: listLines = [ startLine, 0 ], - level: state.level++ - }); - - // - // Iterate list items - // - - dtLine = startLine; - ddLine = nextLine; - - // One definition list can contain multiple DTs, - // and one DT can be followed by multiple DDs. - // - // Thus, there is two loops here, and label is - // needed to break out of the second one - // - /*eslint no-labels:0,block-scoped-var:0*/ - OUTER: - for (;;) { - tight = true; - prevEmptyEnd = false; - - state.tokens.push({ - type: 'dt_open', - lines: [ dtLine, dtLine ], - level: state.level++ - }); - state.tokens.push({ - type: 'inline', - content: state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim(), - level: state.level + 1, - lines: [ dtLine, dtLine ], - children: [] - }); - state.tokens.push({ - type: 'dt_close', - level: --state.level - }); - - for (;;) { - state.tokens.push({ - type: 'dd_open', - lines: itemLines = [ nextLine, 0 ], - level: state.level++ - }); - - oldTight = state.tight; - oldDDIndent = state.ddIndent; - oldIndent = state.blkIndent; - oldTShift = state.tShift[ddLine]; - oldParentType = state.parentType; - state.blkIndent = state.ddIndent = state.tShift[ddLine] + 2; - state.tShift[ddLine] = contentStart - state.bMarks[ddLine]; - state.tight = true; - state.parentType = 'deflist'; - - state.parser.tokenize(state, ddLine, endLine, true); - - // If any of list item is tight, mark list as tight - if (!state.tight || prevEmptyEnd) { - tight = false; - } - // Item become loose if finish with empty line, - // but we should filter last element, because it means list finish - prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1); - - state.tShift[ddLine] = oldTShift; - state.tight = oldTight; - state.parentType = oldParentType; - state.blkIndent = oldIndent; - state.ddIndent = oldDDIndent; - - state.tokens.push({ - type: 'dd_close', - level: --state.level - }); - - itemLines[1] = nextLine = state.line; - - if (nextLine >= endLine) { break OUTER; } - - if (state.tShift[nextLine] < state.blkIndent) { break OUTER; } - contentStart = skipMarker(state, nextLine); - if (contentStart < 0) { break; } - - ddLine = nextLine; - - // go to the next loop iteration: - // insert DD tag and repeat checking - } - - if (nextLine >= endLine) { break; } - dtLine = nextLine; - - if (state.isEmpty(dtLine)) { break; } - if (state.tShift[dtLine] < state.blkIndent) { break; } - - ddLine = dtLine + 1; - if (ddLine >= endLine) { break; } - if (state.isEmpty(ddLine)) { ddLine++; } - if (ddLine >= endLine) { break; } - - if (state.tShift[ddLine] < state.blkIndent) { break; } - contentStart = skipMarker(state, ddLine); - if (contentStart < 0) { break; } - - // go to the next loop iteration: - // insert DT and DD tags and repeat checking - } - - // Finilize list - state.tokens.push({ - type: 'dl_close', - level: --state.level - }); - listLines[1] = nextLine; - - state.line = nextLine; - - // mark paragraphs tight if needed - if (tight) { - markTightParagraphs(state, listTokIdx); - } - - return true; -}; - - -/***/ }), - -/***/ 1200: -/***/ ((module) => { - -"use strict"; -// fences (``` lang, ~~~ lang) - - - - -module.exports = function fences(state, startLine, endLine, silent) { - var marker, len, params, nextLine, mem, - haveEndMarker = false, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos + 3 > max) { return false; } - - marker = state.src.charCodeAt(pos); - - if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) { - return false; - } - - // scan marker length - mem = pos; - pos = state.skipChars(pos, marker); - - len = pos - mem; - - if (len < 3) { return false; } - - params = state.src.slice(pos, max).trim(); - - if (params.indexOf('`') >= 0) { return false; } - - // Since start is found, we can report success here in validation mode - if (silent) { return true; } - - // search end of block - nextLine = startLine; - - for (;;) { - nextLine++; - if (nextLine >= endLine) { - // unclosed block should be autoclosed by end of document. - // also block seems to be autoclosed by end of parent - break; - } - - pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (pos < max && state.tShift[nextLine] < state.blkIndent) { - // non-empty line with negative indent should stop the list: - // - ``` - // test - break; - } - - if (state.src.charCodeAt(pos) !== marker) { continue; } - - if (state.tShift[nextLine] - state.blkIndent >= 4) { - // closing fence should be indented less than 4 spaces - continue; - } - - pos = state.skipChars(pos, marker); - - // closing code fence must be at least as long as the opening one - if (pos - mem < len) { continue; } - - // make sure tail has spaces only - pos = state.skipSpaces(pos); - - if (pos < max) { continue; } - - haveEndMarker = true; - // found! - break; - } - - // If a fence has heading spaces, they should be removed from its inner block - len = state.tShift[startLine]; - - state.line = nextLine + (haveEndMarker ? 1 : 0); - state.tokens.push({ - type: 'fence', - params: params, - content: state.getLines(startLine + 1, nextLine, len, true), - lines: [ startLine, state.line ], - level: state.level - }); - - return true; -}; - - -/***/ }), - -/***/ 2597: -/***/ ((module) => { - -"use strict"; -// Process footnote reference list - - - - -module.exports = function footnote(state, startLine, endLine, silent) { - var oldBMark, oldTShift, oldParentType, pos, label, - start = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - // line should be at least 5 chars - "[^x]:" - if (start + 4 > max) { return false; } - - if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - for (pos = start + 2; pos < max; pos++) { - if (state.src.charCodeAt(pos) === 0x20) { return false; } - if (state.src.charCodeAt(pos) === 0x5D /* ] */) { - break; - } - } - - if (pos === start + 2) { return false; } // no empty footnote labels - if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) { return false; } - if (silent) { return true; } - pos++; - - if (!state.env.footnotes) { state.env.footnotes = {}; } - if (!state.env.footnotes.refs) { state.env.footnotes.refs = {}; } - label = state.src.slice(start + 2, pos - 2); - state.env.footnotes.refs[':' + label] = -1; - - state.tokens.push({ - type: 'footnote_reference_open', - label: label, - level: state.level++ - }); - - oldBMark = state.bMarks[startLine]; - oldTShift = state.tShift[startLine]; - oldParentType = state.parentType; - state.tShift[startLine] = state.skipSpaces(pos) - pos; - state.bMarks[startLine] = pos; - state.blkIndent += 4; - state.parentType = 'footnote'; - - if (state.tShift[startLine] < state.blkIndent) { - state.tShift[startLine] += state.blkIndent; - state.bMarks[startLine] -= state.blkIndent; - } - - state.parser.tokenize(state, startLine, endLine, true); - - state.parentType = oldParentType; - state.blkIndent -= 4; - state.tShift[startLine] = oldTShift; - state.bMarks[startLine] = oldBMark; - - state.tokens.push({ - type: 'footnote_reference_close', - level: --state.level - }); - - return true; -}; - - -/***/ }), - -/***/ 7271: -/***/ ((module) => { - -"use strict"; -// heading (#, ##, ...) - - - - -module.exports = function heading(state, startLine, endLine, silent) { - var ch, level, tmp, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos >= max) { return false; } - - ch = state.src.charCodeAt(pos); - - if (ch !== 0x23/* # */ || pos >= max) { return false; } - - // count heading level - level = 1; - ch = state.src.charCodeAt(++pos); - while (ch === 0x23/* # */ && pos < max && level <= 6) { - level++; - ch = state.src.charCodeAt(++pos); - } - - if (level > 6 || (pos < max && ch !== 0x20/* space */)) { return false; } - - if (silent) { return true; } - - // Let's cut tails like ' ### ' from the end of string - - max = state.skipCharsBack(max, 0x20, pos); // space - tmp = state.skipCharsBack(max, 0x23, pos); // # - if (tmp > pos && state.src.charCodeAt(tmp - 1) === 0x20/* space */) { - max = tmp; - } - - state.line = startLine + 1; - - state.tokens.push({ type: 'heading_open', - hLevel: level, - lines: [ startLine, state.line ], - level: state.level - }); - - // only if header is not empty - if (pos < max) { - state.tokens.push({ - type: 'inline', - content: state.src.slice(pos, max).trim(), - level: state.level + 1, - lines: [ startLine, state.line ], - children: [] - }); - } - state.tokens.push({ type: 'heading_close', hLevel: level, level: state.level }); - - return true; -}; - - -/***/ }), - -/***/ 353: -/***/ ((module) => { - -"use strict"; -// Horizontal rule - - - - -module.exports = function hr(state, startLine, endLine, silent) { - var marker, cnt, ch, - pos = state.bMarks[startLine], - max = state.eMarks[startLine]; - - pos += state.tShift[startLine]; - - if (pos > max) { return false; } - - marker = state.src.charCodeAt(pos++); - - // Check hr marker - if (marker !== 0x2A/* * */ && - marker !== 0x2D/* - */ && - marker !== 0x5F/* _ */) { - return false; - } - - // markers can be mixed with spaces, but there should be at least 3 one - - cnt = 1; - while (pos < max) { - ch = state.src.charCodeAt(pos++); - if (ch !== marker && ch !== 0x20/* space */) { return false; } - if (ch === marker) { cnt++; } - } - - if (cnt < 3) { return false; } - - if (silent) { return true; } - - state.line = startLine + 1; - state.tokens.push({ - type: 'hr', - lines: [ startLine, state.line ], - level: state.level - }); - - return true; -}; - - -/***/ }), - -/***/ 4131: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// HTML block - - - - -var block_names = __webpack_require__(177); - - -var HTML_TAG_OPEN_RE = /^<([a-zA-Z]{1,15})[\s\/>]/; -var HTML_TAG_CLOSE_RE = /^<\/([a-zA-Z]{1,15})[\s>]/; - -function isLetter(ch) { - /*eslint no-bitwise:0*/ - var lc = ch | 0x20; // to lower case - return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); -} - -module.exports = function htmlblock(state, startLine, endLine, silent) { - var ch, match, nextLine, - pos = state.bMarks[startLine], - max = state.eMarks[startLine], - shift = state.tShift[startLine]; - - pos += shift; - - if (!state.options.html) { return false; } - - if (shift > 3 || pos + 2 >= max) { return false; } - - if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } - - ch = state.src.charCodeAt(pos + 1); - - if (ch === 0x21/* ! */ || ch === 0x3F/* ? */) { - // Directive start / comment start / processing instruction start - if (silent) { return true; } - - } else if (ch === 0x2F/* / */ || isLetter(ch)) { - - // Probably start or end of tag - if (ch === 0x2F/* \ */) { - // closing tag - match = state.src.slice(pos, max).match(HTML_TAG_CLOSE_RE); - if (!match) { return false; } - } else { - // opening tag - match = state.src.slice(pos, max).match(HTML_TAG_OPEN_RE); - if (!match) { return false; } - } - // Make sure tag name is valid - if (block_names[match[1].toLowerCase()] !== true) { return false; } - if (silent) { return true; } - - } else { - return false; - } - - // If we are here - we detected HTML block. - // Let's roll down till empty line (block end). - nextLine = startLine + 1; - while (nextLine < state.lineMax && !state.isEmpty(nextLine)) { - nextLine++; - } - - state.line = nextLine; - state.tokens.push({ - type: 'htmlblock', - level: state.level, - lines: [ startLine, state.line ], - content: state.getLines(startLine, nextLine, 0, true) - }); - - return true; -}; - - -/***/ }), - -/***/ 7378: -/***/ ((module) => { - -"use strict"; -// lheading (---, ===) - - - - -module.exports = function lheading(state, startLine, endLine/*, silent*/) { - var marker, pos, max, - next = startLine + 1; - - if (next >= endLine) { return false; } - if (state.tShift[next] < state.blkIndent) { return false; } - - // Scan next line - - if (state.tShift[next] - state.blkIndent > 3) { return false; } - - pos = state.bMarks[next] + state.tShift[next]; - max = state.eMarks[next]; - - if (pos >= max) { return false; } - - marker = state.src.charCodeAt(pos); - - if (marker !== 0x2D/* - */ && marker !== 0x3D/* = */) { return false; } - - pos = state.skipChars(pos, marker); - - pos = state.skipSpaces(pos); - - if (pos < max) { return false; } - - pos = state.bMarks[startLine] + state.tShift[startLine]; - - state.line = next + 1; - state.tokens.push({ - type: 'heading_open', - hLevel: marker === 0x3D/* = */ ? 1 : 2, - lines: [ startLine, state.line ], - level: state.level - }); - state.tokens.push({ - type: 'inline', - content: state.src.slice(pos, state.eMarks[startLine]).trim(), - level: state.level + 1, - lines: [ startLine, state.line - 1 ], - children: [] - }); - state.tokens.push({ - type: 'heading_close', - hLevel: marker === 0x3D/* = */ ? 1 : 2, - level: state.level - }); - - return true; -}; - - -/***/ }), - -/***/ 7322: -/***/ ((module) => { - -"use strict"; -// Lists - - - - -// Search `[-+*][\n ]`, returns next pos arter marker on success -// or -1 on fail. -function skipBulletListMarker(state, startLine) { - var marker, pos, max; - - pos = state.bMarks[startLine] + state.tShift[startLine]; - max = state.eMarks[startLine]; - - if (pos >= max) { return -1; } - - marker = state.src.charCodeAt(pos++); - // Check bullet - if (marker !== 0x2A/* * */ && - marker !== 0x2D/* - */ && - marker !== 0x2B/* + */) { - return -1; - } - - if (pos < max && state.src.charCodeAt(pos) !== 0x20) { - // " 1.test " - is not a list item - return -1; - } - - return pos; -} - -// Search `\d+[.)][\n ]`, returns next pos arter marker on success -// or -1 on fail. -function skipOrderedListMarker(state, startLine) { - var ch, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - if (pos + 1 >= max) { return -1; } - - ch = state.src.charCodeAt(pos++); - - if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; } - - for (;;) { - // EOL -> fail - if (pos >= max) { return -1; } - - ch = state.src.charCodeAt(pos++); - - if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) { - continue; - } - - // found valid marker - if (ch === 0x29/* ) */ || ch === 0x2e/* . */) { - break; - } - - return -1; - } - - - if (pos < max && state.src.charCodeAt(pos) !== 0x20/* space */) { - // " 1.test " - is not a list item - return -1; - } - return pos; -} - -function markTightParagraphs(state, idx) { - var i, l, - level = state.level + 2; - - for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) { - if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { - state.tokens[i + 2].tight = true; - state.tokens[i].tight = true; - i += 2; - } - } -} - - -module.exports = function list(state, startLine, endLine, silent) { - var nextLine, - indent, - oldTShift, - oldIndent, - oldTight, - oldParentType, - start, - posAfterMarker, - max, - indentAfterMarker, - markerValue, - markerCharCode, - isOrdered, - contentStart, - listTokIdx, - prevEmptyEnd, - listLines, - itemLines, - tight = true, - terminatorRules, - i, l, terminate; - - // Detect list type and position after marker - if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) { - isOrdered = true; - } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) { - isOrdered = false; - } else { - return false; - } - - if (state.level >= state.options.maxNesting) { return false; } - - // We should terminate list on style change. Remember first one to compare. - markerCharCode = state.src.charCodeAt(posAfterMarker - 1); - - // For validation mode we can terminate immediately - if (silent) { return true; } - - // Start list - listTokIdx = state.tokens.length; - - if (isOrdered) { - start = state.bMarks[startLine] + state.tShift[startLine]; - markerValue = Number(state.src.substr(start, posAfterMarker - start - 1)); - - state.tokens.push({ - type: 'ordered_list_open', - order: markerValue, - lines: listLines = [ startLine, 0 ], - level: state.level++ - }); - - } else { - state.tokens.push({ - type: 'bullet_list_open', - lines: listLines = [ startLine, 0 ], - level: state.level++ - }); - } - - // - // Iterate list items - // - - nextLine = startLine; - prevEmptyEnd = false; - terminatorRules = state.parser.ruler.getRules('list'); - - while (nextLine < endLine) { - contentStart = state.skipSpaces(posAfterMarker); - max = state.eMarks[nextLine]; - - if (contentStart >= max) { - // trimming space in "- \n 3" case, indent is 1 here - indentAfterMarker = 1; - } else { - indentAfterMarker = contentStart - posAfterMarker; - } - - // If we have more than 4 spaces, the indent is 1 - // (the rest is just indented code block) - if (indentAfterMarker > 4) { indentAfterMarker = 1; } - - // If indent is less than 1, assume that it's one, example: - // "-\n test" - if (indentAfterMarker < 1) { indentAfterMarker = 1; } - - // " - test" - // ^^^^^ - calculating total length of this thing - indent = (posAfterMarker - state.bMarks[nextLine]) + indentAfterMarker; - - // Run subparser & write tokens - state.tokens.push({ - type: 'list_item_open', - lines: itemLines = [ startLine, 0 ], - level: state.level++ - }); - - oldIndent = state.blkIndent; - oldTight = state.tight; - oldTShift = state.tShift[startLine]; - oldParentType = state.parentType; - state.tShift[startLine] = contentStart - state.bMarks[startLine]; - state.blkIndent = indent; - state.tight = true; - state.parentType = 'list'; - - state.parser.tokenize(state, startLine, endLine, true); - - // If any of list item is tight, mark list as tight - if (!state.tight || prevEmptyEnd) { - tight = false; - } - // Item become loose if finish with empty line, - // but we should filter last element, because it means list finish - prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1); - - state.blkIndent = oldIndent; - state.tShift[startLine] = oldTShift; - state.tight = oldTight; - state.parentType = oldParentType; - - state.tokens.push({ - type: 'list_item_close', - level: --state.level - }); - - nextLine = startLine = state.line; - itemLines[1] = nextLine; - contentStart = state.bMarks[startLine]; - - if (nextLine >= endLine) { break; } - - if (state.isEmpty(nextLine)) { - break; - } - - // - // Try to check if list is terminated or continued. - // - if (state.tShift[nextLine] < state.blkIndent) { break; } - - // fail if terminating block found - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - - // fail if list has another type - if (isOrdered) { - posAfterMarker = skipOrderedListMarker(state, nextLine); - if (posAfterMarker < 0) { break; } - } else { - posAfterMarker = skipBulletListMarker(state, nextLine); - if (posAfterMarker < 0) { break; } - } - - if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; } - } - - // Finilize list - state.tokens.push({ - type: isOrdered ? 'ordered_list_close' : 'bullet_list_close', - level: --state.level - }); - listLines[1] = nextLine; - - state.line = nextLine; - - // mark paragraphs tight if needed - if (tight) { - markTightParagraphs(state, listTokIdx); - } - - return true; -}; - - -/***/ }), - -/***/ 5240: -/***/ ((module) => { - -"use strict"; -// Paragraph - - - - -module.exports = function paragraph(state, startLine/*, endLine*/) { - var endLine, content, terminate, i, l, - nextLine = startLine + 1, - terminatorRules; - - endLine = state.lineMax; - - // jump line-by-line until empty one or EOF - if (nextLine < endLine && !state.isEmpty(nextLine)) { - terminatorRules = state.parser.ruler.getRules('paragraph'); - - for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { - // this would be a code block normally, but after paragraph - // it's considered a lazy continuation regardless of what's there - if (state.tShift[nextLine] - state.blkIndent > 3) { continue; } - - // Some tags can terminate paragraph without empty line. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - } - } - - content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); - - state.line = nextLine; - if (content.length) { - state.tokens.push({ - type: 'paragraph_open', - tight: false, - lines: [ startLine, state.line ], - level: state.level - }); - state.tokens.push({ - type: 'inline', - content: content, - level: state.level + 1, - lines: [ startLine, state.line ], - children: [] - }); - state.tokens.push({ - type: 'paragraph_close', - tight: false, - level: state.level - }); - } - - return true; -}; - - -/***/ }), - -/***/ 2300: -/***/ ((module) => { - -"use strict"; -// Parser state class - - - - -function StateBlock(src, parser, options, env, tokens) { - var ch, s, start, pos, len, indent, indent_found; - - this.src = src; - - // Shortcuts to simplify nested calls - this.parser = parser; - - this.options = options; - - this.env = env; - - // - // Internal state vartiables - // - - this.tokens = tokens; - - this.bMarks = []; // line begin offsets for fast jumps - this.eMarks = []; // line end offsets for fast jumps - this.tShift = []; // indent for each line - - // block parser variables - this.blkIndent = 0; // required block content indent - // (for example, if we are in list) - this.line = 0; // line index in src - this.lineMax = 0; // lines count - this.tight = false; // loose/tight mode for lists - this.parentType = 'root'; // if `list`, block parser stops on two newlines - this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any) - - this.level = 0; - - // renderer - this.result = ''; - - // Create caches - // Generate markers. - s = this.src; - indent = 0; - indent_found = false; - - for (start = pos = indent = 0, len = s.length; pos < len; pos++) { - ch = s.charCodeAt(pos); - - if (!indent_found) { - if (ch === 0x20/* space */) { - indent++; - continue; - } else { - indent_found = true; - } - } - - if (ch === 0x0A || pos === len - 1) { - if (ch !== 0x0A) { pos++; } - this.bMarks.push(start); - this.eMarks.push(pos); - this.tShift.push(indent); - - indent_found = false; - indent = 0; - start = pos + 1; - } - } - - // Push fake entry to simplify cache bounds checks - this.bMarks.push(s.length); - this.eMarks.push(s.length); - this.tShift.push(0); - - this.lineMax = this.bMarks.length - 1; // don't count last fake line -} - -StateBlock.prototype.isEmpty = function isEmpty(line) { - return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]; -}; - -StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) { - for (var max = this.lineMax; from < max; from++) { - if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) { - break; - } - } - return from; -}; - -// Skip spaces from given position. -StateBlock.prototype.skipSpaces = function skipSpaces(pos) { - for (var max = this.src.length; pos < max; pos++) { - if (this.src.charCodeAt(pos) !== 0x20/* space */) { break; } - } - return pos; -}; - -// Skip char codes from given position -StateBlock.prototype.skipChars = function skipChars(pos, code) { - for (var max = this.src.length; pos < max; pos++) { - if (this.src.charCodeAt(pos) !== code) { break; } - } - return pos; -}; - -// Skip char codes reverse from given position - 1 -StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) { - if (pos <= min) { return pos; } - - while (pos > min) { - if (code !== this.src.charCodeAt(--pos)) { return pos + 1; } - } - return pos; -}; - -// cut lines range from source. -StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) { - var i, first, last, queue, shift, - line = begin; - - if (begin >= end) { - return ''; - } - - // Opt: don't use push queue for single line; - if (line + 1 === end) { - first = this.bMarks[line] + Math.min(this.tShift[line], indent); - last = keepLastLF ? this.eMarks[line] + 1 : this.eMarks[line]; - return this.src.slice(first, last); - } - - queue = new Array(end - begin); - - for (i = 0; line < end; line++, i++) { - shift = this.tShift[line]; - if (shift > indent) { shift = indent; } - if (shift < 0) { shift = 0; } - - first = this.bMarks[line] + shift; - - if (line + 1 < end || keepLastLF) { - // No need for bounds check because we have fake entry on tail. - last = this.eMarks[line] + 1; - } else { - last = this.eMarks[line]; - } - - queue[i] = this.src.slice(first, last); - } - - return queue.join(''); -}; - - -module.exports = StateBlock; - - -/***/ }), - -/***/ 785: -/***/ ((module) => { - -"use strict"; -// GFM table, non-standard - - - - -function getLine(state, line) { - var pos = state.bMarks[line] + state.blkIndent, - max = state.eMarks[line]; - - return state.src.substr(pos, max - pos); -} - -module.exports = function table(state, startLine, endLine, silent) { - var ch, lineText, pos, i, nextLine, rows, cell, - aligns, t, tableLines, tbodyLines; - - // should have at least three lines - if (startLine + 2 > endLine) { return false; } - - nextLine = startLine + 1; - - if (state.tShift[nextLine] < state.blkIndent) { return false; } - - // first character of the second line should be '|' or '-' - - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - if (pos >= state.eMarks[nextLine]) { return false; } - - ch = state.src.charCodeAt(pos); - if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */) { return false; } - - lineText = getLine(state, startLine + 1); - if (!/^[-:| ]+$/.test(lineText)) { return false; } - - rows = lineText.split('|'); - if (rows <= 2) { return false; } - aligns = []; - for (i = 0; i < rows.length; i++) { - t = rows[i].trim(); - if (!t) { - // allow empty columns before and after table, but not in between columns; - // e.g. allow ` |---| `, disallow ` ---||--- ` - if (i === 0 || i === rows.length - 1) { - continue; - } else { - return false; - } - } - - if (!/^:?-+:?$/.test(t)) { return false; } - if (t.charCodeAt(t.length - 1) === 0x3A/* : */) { - aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right'); - } else if (t.charCodeAt(0) === 0x3A/* : */) { - aligns.push('left'); - } else { - aligns.push(''); - } - } - - lineText = getLine(state, startLine).trim(); - if (lineText.indexOf('|') === -1) { return false; } - rows = lineText.replace(/^\||\|$/g, '').split('|'); - if (aligns.length !== rows.length) { return false; } - if (silent) { return true; } - - state.tokens.push({ - type: 'table_open', - lines: tableLines = [ startLine, 0 ], - level: state.level++ - }); - state.tokens.push({ - type: 'thead_open', - lines: [ startLine, startLine + 1 ], - level: state.level++ - }); - - state.tokens.push({ - type: 'tr_open', - lines: [ startLine, startLine + 1 ], - level: state.level++ - }); - for (i = 0; i < rows.length; i++) { - state.tokens.push({ - type: 'th_open', - align: aligns[i], - lines: [ startLine, startLine + 1 ], - level: state.level++ - }); - state.tokens.push({ - type: 'inline', - content: rows[i].trim(), - lines: [ startLine, startLine + 1 ], - level: state.level, - children: [] - }); - state.tokens.push({ type: 'th_close', level: --state.level }); - } - state.tokens.push({ type: 'tr_close', level: --state.level }); - state.tokens.push({ type: 'thead_close', level: --state.level }); - - state.tokens.push({ - type: 'tbody_open', - lines: tbodyLines = [ startLine + 2, 0 ], - level: state.level++ - }); - - for (nextLine = startLine + 2; nextLine < endLine; nextLine++) { - if (state.tShift[nextLine] < state.blkIndent) { break; } - - lineText = getLine(state, nextLine).trim(); - if (lineText.indexOf('|') === -1) { break; } - rows = lineText.replace(/^\||\|$/g, '').split('|'); - - state.tokens.push({ type: 'tr_open', level: state.level++ }); - for (i = 0; i < rows.length; i++) { - state.tokens.push({ type: 'td_open', align: aligns[i], level: state.level++ }); - // 0x7c === '|' - cell = rows[i].substring( - rows[i].charCodeAt(0) === 0x7c ? 1 : 0, - rows[i].charCodeAt(rows[i].length - 1) === 0x7c ? rows[i].length - 1 : rows[i].length - ).trim(); - state.tokens.push({ - type: 'inline', - content: cell, - level: state.level, - children: [] - }); - state.tokens.push({ type: 'td_close', level: --state.level }); - } - state.tokens.push({ type: 'tr_close', level: --state.level }); - } - state.tokens.push({ type: 'tbody_close', level: --state.level }); - state.tokens.push({ type: 'table_close', level: --state.level }); - - tableLines[1] = tbodyLines[1] = nextLine; - state.line = nextLine; - return true; -}; - - -/***/ }), - -/***/ 9927: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Parse abbreviation definitions, i.e. `*[abbr]: description` -// - - - - -var StateInline = __webpack_require__(3770); -var parseLinkLabel = __webpack_require__(5453); - - -function parseAbbr(str, parserInline, options, env) { - var state, labelEnd, pos, max, label, title; - - if (str.charCodeAt(0) !== 0x2A/* * */) { return -1; } - if (str.charCodeAt(1) !== 0x5B/* [ */) { return -1; } - - if (str.indexOf(']:') === -1) { return -1; } - - state = new StateInline(str, parserInline, options, env, []); - labelEnd = parseLinkLabel(state, 1); - - if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; } - - max = state.posMax; - - // abbr title is always one line, so looking for ending "\n" here - for (pos = labelEnd + 2; pos < max; pos++) { - if (state.src.charCodeAt(pos) === 0x0A) { break; } - } - - label = str.slice(2, labelEnd); - title = str.slice(labelEnd + 2, pos).trim(); - if (title.length === 0) { return -1; } - if (!env.abbreviations) { env.abbreviations = {}; } - // prepend ':' to avoid conflict with Object.prototype members - if (typeof env.abbreviations[':' + label] === 'undefined') { - env.abbreviations[':' + label] = title; - } - - return pos; -} - -module.exports = function abbr(state) { - var tokens = state.tokens, i, l, content, pos; - - if (state.inlineMode) { - return; - } - - // Parse inlines - for (i = 1, l = tokens.length - 1; i < l; i++) { - if (tokens[i - 1].type === 'paragraph_open' && - tokens[i].type === 'inline' && - tokens[i + 1].type === 'paragraph_close') { - - content = tokens[i].content; - while (content.length) { - pos = parseAbbr(content, state.inline, state.options, state.env); - if (pos < 0) { break; } - content = content.slice(pos).trim(); - } - - tokens[i].content = content; - if (!content.length) { - tokens[i - 1].tight = true; - tokens[i + 1].tight = true; - } - } - } -}; - - -/***/ }), - -/***/ 3056: -/***/ ((module) => { - -"use strict"; -// Enclose abbreviations in tags -// - - - -var PUNCT_CHARS = ' \n()[]\'".,!?-'; - - -// from Google closure library -// http://closure-library.googlecode.com/git-history/docs/local_closure_goog_string_string.js.source.html#line1021 -function regEscape(s) { - return s.replace(/([-()\[\]{}+?*.$\^|,:#= 0; i--) { - token = tokens[i]; - if (token.type !== 'text') { continue; } - - pos = 0; - text = token.content; - reg.lastIndex = 0; - level = token.level; - nodes = []; - - while ((m = reg.exec(text))) { - if (reg.lastIndex > pos) { - nodes.push({ - type: 'text', - content: text.slice(pos, m.index + m[1].length), - level: level - }); - } - - nodes.push({ - type: 'abbr_open', - title: state.env.abbreviations[':' + m[2]], - level: level++ - }); - nodes.push({ - type: 'text', - content: m[2], - level: level - }); - nodes.push({ - type: 'abbr_close', - level: --level - }); - pos = reg.lastIndex - m[3].length; - } - - if (!nodes.length) { continue; } - - if (pos < text.length) { - nodes.push({ - type: 'text', - content: text.slice(pos), - level: level - }); - } - - // replace current node - blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1)); - } - } -}; - - -/***/ }), - -/***/ 3400: -/***/ ((module) => { - -"use strict"; - - -module.exports = function block(state) { - - if (state.inlineMode) { - state.tokens.push({ - type: 'inline', - content: state.src.replace(/\n/g, ' ').trim(), - level: 0, - lines: [ 0, 1 ], - children: [] - }); - - } else { - state.block.parse(state.src, state.options, state.env, state.tokens); - } -}; - - -/***/ }), - -/***/ 149: -/***/ ((module) => { - -"use strict"; - - - -module.exports = function footnote_block(state) { - var i, l, j, t, lastParagraph, list, tokens, current, currentLabel, - level = 0, - insideRef = false, - refTokens = {}; - - if (!state.env.footnotes) { return; } - - state.tokens = state.tokens.filter(function(tok) { - if (tok.type === 'footnote_reference_open') { - insideRef = true; - current = []; - currentLabel = tok.label; - return false; - } - if (tok.type === 'footnote_reference_close') { - insideRef = false; - // prepend ':' to avoid conflict with Object.prototype members - refTokens[':' + currentLabel] = current; - return false; - } - if (insideRef) { current.push(tok); } - return !insideRef; - }); - - if (!state.env.footnotes.list) { return; } - list = state.env.footnotes.list; - - state.tokens.push({ - type: 'footnote_block_open', - level: level++ - }); - for (i = 0, l = list.length; i < l; i++) { - state.tokens.push({ - type: 'footnote_open', - id: i, - level: level++ - }); - - if (list[i].tokens) { - tokens = []; - tokens.push({ - type: 'paragraph_open', - tight: false, - level: level++ - }); - tokens.push({ - type: 'inline', - content: '', - level: level, - children: list[i].tokens - }); - tokens.push({ - type: 'paragraph_close', - tight: false, - level: --level - }); - } else if (list[i].label) { - tokens = refTokens[':' + list[i].label]; - } - - state.tokens = state.tokens.concat(tokens); - if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') { - lastParagraph = state.tokens.pop(); - } else { - lastParagraph = null; - } - - t = list[i].count > 0 ? list[i].count : 1; - for (j = 0; j < t; j++) { - state.tokens.push({ - type: 'footnote_anchor', - id: i, - subId: j, - level: level - }); - } - - if (lastParagraph) { - state.tokens.push(lastParagraph); - } - - state.tokens.push({ - type: 'footnote_close', - level: --level - }); - } - state.tokens.push({ - type: 'footnote_block_close', - level: --level - }); -}; - - -/***/ }), - -/***/ 2133: -/***/ ((module) => { - -"use strict"; - - -module.exports = function inline(state) { - var tokens = state.tokens, tok, i, l; - - // Parse inlines - for (i = 0, l = tokens.length; i < l; i++) { - tok = tokens[i]; - if (tok.type === 'inline') { - state.inline.parse(tok.content, state.options, state.env, tok.children); - } - } -}; - - -/***/ }), - -/***/ 6945: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Replace link-like texts with link nodes. -// -// Currently restricted by `inline.validateLink()` to http/https/ftp -// - - - -var Autolinker = __webpack_require__(6505); - - -var LINK_SCAN_RE = /www|@|\:\/\//; - - -function isLinkOpen(str) { - return /^\s]/i.test(str); -} -function isLinkClose(str) { - return /^<\/a\s*>/i.test(str); -} - -// Stupid fabric to avoid singletons, for thread safety. -// Required for engines like Nashorn. -// -function createLinkifier() { - var links = []; - var autolinker = new Autolinker({ - stripPrefix: false, - url: true, - email: true, - twitter: false, - replaceFn: function (linker, match) { - // Only collect matched strings but don't change anything. - switch (match.getType()) { - /*eslint default-case:0*/ - case 'url': - links.push({ - text: match.matchedText, - url: match.getUrl() - }); - break; - case 'email': - links.push({ - text: match.matchedText, - // normalize email protocol - url: 'mailto:' + match.getEmail().replace(/^mailto:/i, '') - }); - break; - } - return false; - } - }); - - return { - links: links, - autolinker: autolinker - }; -} - - -module.exports = function linkify(state) { - var i, j, l, tokens, token, text, nodes, ln, pos, level, htmlLinkLevel, - blockTokens = state.tokens, - linkifier = null, links, autolinker; - - if (!state.options.linkify) { return; } - - for (j = 0, l = blockTokens.length; j < l; j++) { - if (blockTokens[j].type !== 'inline') { continue; } - tokens = blockTokens[j].children; - - htmlLinkLevel = 0; - - // We scan from the end, to keep position when new tags added. - // Use reversed logic in links start/end match - for (i = tokens.length - 1; i >= 0; i--) { - token = tokens[i]; - - // Skip content of markdown links - if (token.type === 'link_close') { - i--; - while (tokens[i].level !== token.level && tokens[i].type !== 'link_open') { - i--; - } - continue; - } - - // Skip content of html tag links - if (token.type === 'htmltag') { - if (isLinkOpen(token.content) && htmlLinkLevel > 0) { - htmlLinkLevel--; - } - if (isLinkClose(token.content)) { - htmlLinkLevel++; - } - } - if (htmlLinkLevel > 0) { continue; } - - if (token.type === 'text' && LINK_SCAN_RE.test(token.content)) { - - // Init linkifier in lazy manner, only if required. - if (!linkifier) { - linkifier = createLinkifier(); - links = linkifier.links; - autolinker = linkifier.autolinker; - } - - text = token.content; - links.length = 0; - autolinker.link(text); - - if (!links.length) { continue; } - - // Now split string to nodes - nodes = []; - level = token.level; - - for (ln = 0; ln < links.length; ln++) { - - if (!state.inline.validateLink(links[ln].url)) { continue; } - - pos = text.indexOf(links[ln].text); - - if (pos) { - level = level; - nodes.push({ - type: 'text', - content: text.slice(0, pos), - level: level - }); - } - nodes.push({ - type: 'link_open', - href: links[ln].url, - title: '', - level: level++ - }); - nodes.push({ - type: 'text', - content: links[ln].text, - level: level - }); - nodes.push({ - type: 'link_close', - level: --level - }); - text = text.slice(pos + links[ln].text.length); - } - if (text.length) { - nodes.push({ - type: 'text', - content: text, - level: level - }); - } - - // replace current node - blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1)); - } - } - } -}; - - -/***/ }), - -/***/ 4753: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - - -var StateInline = __webpack_require__(3770); -var parseLinkLabel = __webpack_require__(5453); -var parseLinkDestination = __webpack_require__(6513); -var parseLinkTitle = __webpack_require__(3509); -var normalizeReference = __webpack_require__(5578); - - -function parseReference(str, parser, options, env) { - var state, labelEnd, pos, max, code, start, href, title, label; - - if (str.charCodeAt(0) !== 0x5B/* [ */) { return -1; } - - if (str.indexOf(']:') === -1) { return -1; } - - state = new StateInline(str, parser, options, env, []); - labelEnd = parseLinkLabel(state, 0); - - if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; } - - max = state.posMax; - - // [label]: destination 'title' - // ^^^ skip optional whitespace here - for (pos = labelEnd + 2; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - // [label]: destination 'title' - // ^^^^^^^^^^^ parse this - if (!parseLinkDestination(state, pos)) { return -1; } - href = state.linkContent; - pos = state.pos; - - // [label]: destination 'title' - // ^^^ skipping those spaces - start = pos; - for (pos = pos + 1; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - // [label]: destination 'title' - // ^^^^^^^ parse this - if (pos < max && start !== pos && parseLinkTitle(state, pos)) { - title = state.linkContent; - pos = state.pos; - } else { - title = ''; - pos = start; - } - - // ensure that the end of the line is empty - while (pos < max && state.src.charCodeAt(pos) === 0x20/* space */) { pos++; } - if (pos < max && state.src.charCodeAt(pos) !== 0x0A) { return -1; } - - label = normalizeReference(str.slice(1, labelEnd)); - if (typeof env.references[label] === 'undefined') { - env.references[label] = { title: title, href: href }; - } - - return pos; -} - - -module.exports = function references(state) { - var tokens = state.tokens, i, l, content, pos; - - state.env.references = state.env.references || {}; - - if (state.inlineMode) { - return; - } - - // Scan definitions in paragraph inlines - for (i = 1, l = tokens.length - 1; i < l; i++) { - if (tokens[i].type === 'inline' && - tokens[i - 1].type === 'paragraph_open' && - tokens[i + 1].type === 'paragraph_close') { - - content = tokens[i].content; - while (content.length) { - pos = parseReference(content, state.inline, state.options, state.env); - if (pos < 0) { break; } - content = content.slice(pos).trim(); - } - - tokens[i].content = content; - if (!content.length) { - tokens[i - 1].tight = true; - tokens[i + 1].tight = true; - } - } - } -}; - - -/***/ }), - -/***/ 8167: -/***/ ((module) => { - -"use strict"; -// Simple typographical replacements -// - - -// TODO: -// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾ -// - miltiplication 2 x 4 -> 2 × 4 - -var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/; - -var SCOPED_ABBR_RE = /\((c|tm|r|p)\)/ig; -var SCOPED_ABBR = { - 'c': '©', - 'r': '®', - 'p': '§', - 'tm': '™' -}; - -function replaceScopedAbbr(str) { - if (str.indexOf('(') < 0) { return str; } - - return str.replace(SCOPED_ABBR_RE, function(match, name) { - return SCOPED_ABBR[name.toLowerCase()]; - }); -} - - -module.exports = function replace(state) { - var i, token, text, inlineTokens, blkIdx; - - if (!state.options.typographer) { return; } - - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - - if (state.tokens[blkIdx].type !== 'inline') { continue; } - - inlineTokens = state.tokens[blkIdx].children; - - for (i = inlineTokens.length - 1; i >= 0; i--) { - token = inlineTokens[i]; - if (token.type === 'text') { - text = token.content; - - text = replaceScopedAbbr(text); - - if (RARE_RE.test(text)) { - text = text - .replace(/\+-/g, '±') - // .., ..., ....... -> … - // but ?..... & !..... -> ?.. & !.. - .replace(/\.{2,}/g, '…').replace(/([?!])…/g, '$1..') - .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') - // em-dash - .replace(/(^|[^-])---([^-]|$)/mg, '$1\u2014$2') - // en-dash - .replace(/(^|\s)--(\s|$)/mg, '$1\u2013$2') - .replace(/(^|[^-\s])--([^-\s]|$)/mg, '$1\u2013$2'); - } - - token.content = text; - } - } - } -}; - - -/***/ }), - -/***/ 7849: -/***/ ((module) => { - -"use strict"; -// Convert straight quotation marks to typographic ones -// - - - -var QUOTE_TEST_RE = /['"]/; -var QUOTE_RE = /['"]/g; -var PUNCT_RE = /[-\s()\[\]]/; -var APOSTROPHE = '’'; - -// This function returns true if the character at `pos` -// could be inside a word. -function isLetter(str, pos) { - if (pos < 0 || pos >= str.length) { return false; } - return !PUNCT_RE.test(str[pos]); -} - - -function replaceAt(str, index, ch) { - return str.substr(0, index) + ch + str.substr(index + 1); -} - - -module.exports = function smartquotes(state) { - /*eslint max-depth:0*/ - var i, token, text, t, pos, max, thisLevel, lastSpace, nextSpace, item, - canOpen, canClose, j, isSingle, blkIdx, tokens, - stack; - - if (!state.options.typographer) { return; } - - stack = []; - - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - - if (state.tokens[blkIdx].type !== 'inline') { continue; } - - tokens = state.tokens[blkIdx].children; - stack.length = 0; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - - if (token.type !== 'text' || QUOTE_TEST_RE.test(token.text)) { continue; } - - thisLevel = tokens[i].level; - - for (j = stack.length - 1; j >= 0; j--) { - if (stack[j].level <= thisLevel) { break; } - } - stack.length = j + 1; - - text = token.content; - pos = 0; - max = text.length; - - /*eslint no-labels:0,block-scoped-var:0*/ - OUTER: - while (pos < max) { - QUOTE_RE.lastIndex = pos; - t = QUOTE_RE.exec(text); - if (!t) { break; } - - lastSpace = !isLetter(text, t.index - 1); - pos = t.index + 1; - isSingle = (t[0] === "'"); - nextSpace = !isLetter(text, pos); - - if (!nextSpace && !lastSpace) { - // middle of word - if (isSingle) { - token.content = replaceAt(token.content, t.index, APOSTROPHE); - } - continue; - } - - canOpen = !nextSpace; - canClose = !lastSpace; - - if (canClose) { - // this could be a closing quote, rewind the stack to get a match - for (j = stack.length - 1; j >= 0; j--) { - item = stack[j]; - if (stack[j].level < thisLevel) { break; } - if (item.single === isSingle && stack[j].level === thisLevel) { - item = stack[j]; - if (isSingle) { - tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[2]); - token.content = replaceAt(token.content, t.index, state.options.quotes[3]); - } else { - tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[0]); - token.content = replaceAt(token.content, t.index, state.options.quotes[1]); - } - stack.length = j; - continue OUTER; - } - } - } - - if (canOpen) { - stack.push({ - token: i, - pos: t.index, - single: isSingle, - level: thisLevel - }); - } else if (canClose && isSingle) { - token.content = replaceAt(token.content, t.index, APOSTROPHE); - } - } - } - } -}; - - -/***/ }), - -/***/ 5667: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process autolinks '' - - - -var url_schemas = __webpack_require__(9754); -var normalizeLink = __webpack_require__(4738); - - -/*eslint max-len:0*/ -var EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/; -var AUTOLINK_RE = /^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/; - - -module.exports = function autolink(state, silent) { - var tail, linkMatch, emailMatch, url, fullUrl, pos = state.pos; - - if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } - - tail = state.src.slice(pos); - - if (tail.indexOf('>') < 0) { return false; } - - linkMatch = tail.match(AUTOLINK_RE); - - if (linkMatch) { - if (url_schemas.indexOf(linkMatch[1].toLowerCase()) < 0) { return false; } - - url = linkMatch[0].slice(1, -1); - fullUrl = normalizeLink(url); - if (!state.parser.validateLink(url)) { return false; } - - if (!silent) { - state.push({ - type: 'link_open', - href: fullUrl, - level: state.level - }); - state.push({ - type: 'text', - content: url, - level: state.level + 1 - }); - state.push({ type: 'link_close', level: state.level }); - } - - state.pos += linkMatch[0].length; - return true; - } - - emailMatch = tail.match(EMAIL_RE); - - if (emailMatch) { - - url = emailMatch[0].slice(1, -1); - - fullUrl = normalizeLink('mailto:' + url); - if (!state.parser.validateLink(fullUrl)) { return false; } - - if (!silent) { - state.push({ - type: 'link_open', - href: fullUrl, - level: state.level - }); - state.push({ - type: 'text', - content: url, - level: state.level + 1 - }); - state.push({ type: 'link_close', level: state.level }); - } - - state.pos += emailMatch[0].length; - return true; - } - - return false; -}; - - -/***/ }), - -/***/ 8050: -/***/ ((module) => { - -"use strict"; -// Parse backticks - - - -module.exports = function backticks(state, silent) { - var start, max, marker, matchStart, matchEnd, - pos = state.pos, - ch = state.src.charCodeAt(pos); - - if (ch !== 0x60/* ` */) { return false; } - - start = pos; - pos++; - max = state.posMax; - - while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; } - - marker = state.src.slice(start, pos); - - matchStart = matchEnd = pos; - - while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) { - matchEnd = matchStart + 1; - - while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; } - - if (matchEnd - matchStart === marker.length) { - if (!silent) { - state.push({ - type: 'code', - content: state.src.slice(pos, matchStart) - .replace(/[ \n]+/g, ' ') - .trim(), - block: false, - level: state.level - }); - } - state.pos = matchEnd; - return true; - } - } - - if (!silent) { state.pending += marker; } - state.pos += marker.length; - return true; -}; - - -/***/ }), - -/***/ 897: -/***/ ((module) => { - -"use strict"; -// Process ~~deleted text~~ - - - -module.exports = function del(state, silent) { - var found, - pos, - stack, - max = state.posMax, - start = state.pos, - lastChar, - nextChar; - - if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 4 >= max) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x7E/* ~ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - nextChar = state.src.charCodeAt(start + 2); - - if (lastChar === 0x7E/* ~ */) { return false; } - if (nextChar === 0x7E/* ~ */) { return false; } - if (nextChar === 0x20 || nextChar === 0x0A) { return false; } - - pos = start + 2; - while (pos < max && state.src.charCodeAt(pos) === 0x7E/* ~ */) { pos++; } - if (pos > start + 3) { - // sequence of 4+ markers taking as literal, same as in a emphasis - state.pos += pos - start; - if (!silent) { state.pending += state.src.slice(start, pos); } - return true; - } - - state.pos = start + 2; - stack = 1; - - while (state.pos + 1 < max) { - if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) { - if (state.src.charCodeAt(state.pos + 1) === 0x7E/* ~ */) { - lastChar = state.src.charCodeAt(state.pos - 1); - nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; - if (nextChar !== 0x7E/* ~ */ && lastChar !== 0x7E/* ~ */) { - if (lastChar !== 0x20 && lastChar !== 0x0A) { - // closing '~~' - stack--; - } else if (nextChar !== 0x20 && nextChar !== 0x0A) { - // opening '~~' - stack++; - } // else { - // // standalone ' ~~ ' indented with spaces - // } - if (stack <= 0) { - found = true; - break; - } - } - } - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 2; - - if (!silent) { - state.push({ type: 'del_open', level: state.level++ }); - state.parser.tokenize(state); - state.push({ type: 'del_close', level: --state.level }); - } - - state.pos = state.posMax + 2; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 6083: -/***/ ((module) => { - -"use strict"; -// Process *this* and _that_ - - - - -function isAlphaNum(code) { - return (code >= 0x30 /* 0 */ && code <= 0x39 /* 9 */) || - (code >= 0x41 /* A */ && code <= 0x5A /* Z */) || - (code >= 0x61 /* a */ && code <= 0x7A /* z */); -} - -// parse sequence of emphasis markers, -// "start" should point at a valid marker -function scanDelims(state, start) { - var pos = start, lastChar, nextChar, count, - can_open = true, - can_close = true, - max = state.posMax, - marker = state.src.charCodeAt(start); - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - - while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; } - if (pos >= max) { can_open = false; } - count = pos - start; - - if (count >= 4) { - // sequence of four or more unescaped markers can't start/end an emphasis - can_open = can_close = false; - } else { - nextChar = pos < max ? state.src.charCodeAt(pos) : -1; - - // check whitespace conditions - if (nextChar === 0x20 || nextChar === 0x0A) { can_open = false; } - if (lastChar === 0x20 || lastChar === 0x0A) { can_close = false; } - - if (marker === 0x5F /* _ */) { - // check if we aren't inside the word - if (isAlphaNum(lastChar)) { can_open = false; } - if (isAlphaNum(nextChar)) { can_close = false; } - } - } - - return { - can_open: can_open, - can_close: can_close, - delims: count - }; -} - -module.exports = function emphasis(state, silent) { - var startCount, - count, - found, - oldCount, - newCount, - stack, - res, - max = state.posMax, - start = state.pos, - marker = state.src.charCodeAt(start); - - if (marker !== 0x5F/* _ */ && marker !== 0x2A /* * */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - - res = scanDelims(state, start); - startCount = res.delims; - if (!res.can_open) { - state.pos += startCount; - if (!silent) { state.pending += state.src.slice(start, state.pos); } - return true; - } - - if (state.level >= state.options.maxNesting) { return false; } - - state.pos = start + startCount; - stack = [ startCount ]; - - while (state.pos < max) { - if (state.src.charCodeAt(state.pos) === marker) { - res = scanDelims(state, state.pos); - count = res.delims; - if (res.can_close) { - oldCount = stack.pop(); - newCount = count; - - while (oldCount !== newCount) { - if (newCount < oldCount) { - stack.push(oldCount - newCount); - break; - } - - // assert(newCount > oldCount) - newCount -= oldCount; - - if (stack.length === 0) { break; } - state.pos += oldCount; - oldCount = stack.pop(); - } - - if (stack.length === 0) { - startCount = oldCount; - found = true; - break; - } - state.pos += count; - continue; - } - - if (res.can_open) { stack.push(count); } - state.pos += count; - continue; - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + startCount; - - if (!silent) { - if (startCount === 2 || startCount === 3) { - state.push({ type: 'strong_open', level: state.level++ }); - } - if (startCount === 1 || startCount === 3) { - state.push({ type: 'em_open', level: state.level++ }); - } - - state.parser.tokenize(state); - - if (startCount === 1 || startCount === 3) { - state.push({ type: 'em_close', level: --state.level }); - } - if (startCount === 2 || startCount === 3) { - state.push({ type: 'strong_close', level: --state.level }); - } - } - - state.pos = state.posMax + startCount; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 6356: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process html entity - {, ¯, ", ... - - - -var entities = __webpack_require__(4184); -var has = __webpack_require__(3972).has; -var isValidEntityCode = __webpack_require__(3972).isValidEntityCode; -var fromCodePoint = __webpack_require__(3972).fromCodePoint; - - -var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i; -var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i; - - -module.exports = function entity(state, silent) { - var ch, code, match, pos = state.pos, max = state.posMax; - - if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; } - - if (pos + 1 < max) { - ch = state.src.charCodeAt(pos + 1); - - if (ch === 0x23 /* # */) { - match = state.src.slice(pos).match(DIGITAL_RE); - if (match) { - if (!silent) { - code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10); - state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD); - } - state.pos += match[0].length; - return true; - } - } else { - match = state.src.slice(pos).match(NAMED_RE); - if (match) { - if (has(entities, match[1])) { - if (!silent) { state.pending += entities[match[1]]; } - state.pos += match[0].length; - return true; - } - } - } - } - - if (!silent) { state.pending += '&'; } - state.pos++; - return true; -}; - - -/***/ }), - -/***/ 8279: -/***/ ((module) => { - -"use strict"; -// Proceess escaped chars and hardbreaks - - - -var ESCAPED = []; - -for (var i = 0; i < 256; i++) { ESCAPED.push(0); } - -'\\!"#$%&\'()*+,./:;<=>?@[]^_`{|}~-' - .split('').forEach(function(ch) { ESCAPED[ch.charCodeAt(0)] = 1; }); - - -module.exports = function escape(state, silent) { - var ch, pos = state.pos, max = state.posMax; - - if (state.src.charCodeAt(pos) !== 0x5C/* \ */) { return false; } - - pos++; - - if (pos < max) { - ch = state.src.charCodeAt(pos); - - if (ch < 256 && ESCAPED[ch] !== 0) { - if (!silent) { state.pending += state.src[pos]; } - state.pos += 2; - return true; - } - - if (ch === 0x0A) { - if (!silent) { - state.push({ - type: 'hardbreak', - level: state.level - }); - } - - pos++; - // skip leading whitespaces from next line - while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } - - state.pos = pos; - return true; - } - } - - if (!silent) { state.pending += '\\'; } - state.pos++; - return true; -}; - - -/***/ }), - -/***/ 3304: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process inline footnotes (^[...]) - - - -var parseLinkLabel = __webpack_require__(5453); - - -module.exports = function footnote_inline(state, silent) { - var labelStart, - labelEnd, - footnoteId, - oldLength, - max = state.posMax, - start = state.pos; - - if (start + 2 >= max) { return false; } - if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - labelStart = start + 2; - labelEnd = parseLinkLabel(state, start + 1); - - // parser failed to find ']', so it's not a valid note - if (labelEnd < 0) { return false; } - - // We found the end of the link, and know for a fact it's a valid link; - // so all that's left to do is to call tokenizer. - // - if (!silent) { - if (!state.env.footnotes) { state.env.footnotes = {}; } - if (!state.env.footnotes.list) { state.env.footnotes.list = []; } - footnoteId = state.env.footnotes.list.length; - - state.pos = labelStart; - state.posMax = labelEnd; - - state.push({ - type: 'footnote_ref', - id: footnoteId, - level: state.level - }); - state.linkLevel++; - oldLength = state.tokens.length; - state.parser.tokenize(state); - state.env.footnotes.list[footnoteId] = { tokens: state.tokens.splice(oldLength) }; - state.linkLevel--; - } - - state.pos = labelEnd + 1; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 410: -/***/ ((module) => { - -"use strict"; -// Process footnote references ([^...]) - - - - -module.exports = function footnote_ref(state, silent) { - var label, - pos, - footnoteId, - footnoteSubId, - max = state.posMax, - start = state.pos; - - // should be at least 4 chars - "[^x]" - if (start + 3 > max) { return false; } - - if (!state.env.footnotes || !state.env.footnotes.refs) { return false; } - if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - for (pos = start + 2; pos < max; pos++) { - if (state.src.charCodeAt(pos) === 0x20) { return false; } - if (state.src.charCodeAt(pos) === 0x0A) { return false; } - if (state.src.charCodeAt(pos) === 0x5D /* ] */) { - break; - } - } - - if (pos === start + 2) { return false; } // no empty footnote labels - if (pos >= max) { return false; } - pos++; - - label = state.src.slice(start + 2, pos - 1); - if (typeof state.env.footnotes.refs[':' + label] === 'undefined') { return false; } - - if (!silent) { - if (!state.env.footnotes.list) { state.env.footnotes.list = []; } - - if (state.env.footnotes.refs[':' + label] < 0) { - footnoteId = state.env.footnotes.list.length; - state.env.footnotes.list[footnoteId] = { label: label, count: 0 }; - state.env.footnotes.refs[':' + label] = footnoteId; - } else { - footnoteId = state.env.footnotes.refs[':' + label]; - } - - footnoteSubId = state.env.footnotes.list[footnoteId].count; - state.env.footnotes.list[footnoteId].count++; - - state.push({ - type: 'footnote_ref', - id: footnoteId, - subId: footnoteSubId, - level: state.level - }); - } - - state.pos = pos; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 5378: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process html tags - - - - -var HTML_TAG_RE = __webpack_require__(6220)/* .HTML_TAG_RE */ .n; - - -function isLetter(ch) { - /*eslint no-bitwise:0*/ - var lc = ch | 0x20; // to lower case - return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); -} - - -module.exports = function htmltag(state, silent) { - var ch, match, max, pos = state.pos; - - if (!state.options.html) { return false; } - - // Check start - max = state.posMax; - if (state.src.charCodeAt(pos) !== 0x3C/* < */ || - pos + 2 >= max) { - return false; - } - - // Quick fail on second char - ch = state.src.charCodeAt(pos + 1); - if (ch !== 0x21/* ! */ && - ch !== 0x3F/* ? */ && - ch !== 0x2F/* / */ && - !isLetter(ch)) { - return false; - } - - match = state.src.slice(pos).match(HTML_TAG_RE); - if (!match) { return false; } - - if (!silent) { - state.push({ - type: 'htmltag', - content: state.src.slice(pos, pos + match[0].length), - level: state.level - }); - } - state.pos += match[0].length; - return true; -}; - - -/***/ }), - -/***/ 2531: -/***/ ((module) => { - -"use strict"; -// Process ++inserted text++ - - - -module.exports = function ins(state, silent) { - var found, - pos, - stack, - max = state.posMax, - start = state.pos, - lastChar, - nextChar; - - if (state.src.charCodeAt(start) !== 0x2B/* + */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 4 >= max) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x2B/* + */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - nextChar = state.src.charCodeAt(start + 2); - - if (lastChar === 0x2B/* + */) { return false; } - if (nextChar === 0x2B/* + */) { return false; } - if (nextChar === 0x20 || nextChar === 0x0A) { return false; } - - pos = start + 2; - while (pos < max && state.src.charCodeAt(pos) === 0x2B/* + */) { pos++; } - if (pos !== start + 2) { - // sequence of 3+ markers taking as literal, same as in a emphasis - state.pos += pos - start; - if (!silent) { state.pending += state.src.slice(start, pos); } - return true; - } - - state.pos = start + 2; - stack = 1; - - while (state.pos + 1 < max) { - if (state.src.charCodeAt(state.pos) === 0x2B/* + */) { - if (state.src.charCodeAt(state.pos + 1) === 0x2B/* + */) { - lastChar = state.src.charCodeAt(state.pos - 1); - nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; - if (nextChar !== 0x2B/* + */ && lastChar !== 0x2B/* + */) { - if (lastChar !== 0x20 && lastChar !== 0x0A) { - // closing '++' - stack--; - } else if (nextChar !== 0x20 && nextChar !== 0x0A) { - // opening '++' - stack++; - } // else { - // // standalone ' ++ ' indented with spaces - // } - if (stack <= 0) { - found = true; - break; - } - } - } - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 2; - - if (!silent) { - state.push({ type: 'ins_open', level: state.level++ }); - state.parser.tokenize(state); - state.push({ type: 'ins_close', level: --state.level }); - } - - state.pos = state.posMax + 2; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 5398: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process [links]( "stuff") - - - -var parseLinkLabel = __webpack_require__(5453); -var parseLinkDestination = __webpack_require__(6513); -var parseLinkTitle = __webpack_require__(3509); -var normalizeReference = __webpack_require__(5578); - - -module.exports = function links(state, silent) { - var labelStart, - labelEnd, - label, - href, - title, - pos, - ref, - code, - isImage = false, - oldPos = state.pos, - max = state.posMax, - start = state.pos, - marker = state.src.charCodeAt(start); - - if (marker === 0x21/* ! */) { - isImage = true; - marker = state.src.charCodeAt(++start); - } - - if (marker !== 0x5B/* [ */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - labelStart = start + 1; - labelEnd = parseLinkLabel(state, start); - - // parser failed to find ']', so it's not a valid link - if (labelEnd < 0) { return false; } - - pos = labelEnd + 1; - if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) { - // - // Inline link - // - - // [link]( "title" ) - // ^^ skipping these spaces - pos++; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - if (pos >= max) { return false; } - - // [link]( "title" ) - // ^^^^^^ parsing link destination - start = pos; - if (parseLinkDestination(state, pos)) { - href = state.linkContent; - pos = state.pos; - } else { - href = ''; - } - - // [link]( "title" ) - // ^^ skipping these spaces - start = pos; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - // [link]( "title" ) - // ^^^^^^^ parsing link title - if (pos < max && start !== pos && parseLinkTitle(state, pos)) { - title = state.linkContent; - pos = state.pos; - - // [link]( "title" ) - // ^^ skipping these spaces - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - } else { - title = ''; - } - - if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) { - state.pos = oldPos; - return false; - } - pos++; - } else { - // - // Link reference - // - - // do not allow nested reference links - if (state.linkLevel > 0) { return false; } - - // [foo] [bar] - // ^^ optional whitespace (can include newlines) - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (code !== 0x20 && code !== 0x0A) { break; } - } - - if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) { - start = pos + 1; - pos = parseLinkLabel(state, pos); - if (pos >= 0) { - label = state.src.slice(start, pos++); - } else { - pos = start - 1; - } - } - - // covers label === '' and label === undefined - // (collapsed reference link and shortcut reference link respectively) - if (!label) { - if (typeof label === 'undefined') { - pos = labelEnd + 1; - } - label = state.src.slice(labelStart, labelEnd); - } - - ref = state.env.references[normalizeReference(label)]; - if (!ref) { - state.pos = oldPos; - return false; - } - href = ref.href; - title = ref.title; - } - - // - // We found the end of the link, and know for a fact it's a valid link; - // so all that's left to do is to call tokenizer. - // - if (!silent) { - state.pos = labelStart; - state.posMax = labelEnd; - - if (isImage) { - state.push({ - type: 'image', - src: href, - title: title, - alt: state.src.substr(labelStart, labelEnd - labelStart), - level: state.level - }); - } else { - state.push({ - type: 'link_open', - href: href, - title: title, - level: state.level++ - }); - state.linkLevel++; - state.parser.tokenize(state); - state.linkLevel--; - state.push({ type: 'link_close', level: --state.level }); - } - } - - state.pos = pos; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 6211: -/***/ ((module) => { - -"use strict"; -// Process ==highlighted text== - - - -module.exports = function del(state, silent) { - var found, - pos, - stack, - max = state.posMax, - start = state.pos, - lastChar, - nextChar; - - if (state.src.charCodeAt(start) !== 0x3D/* = */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 4 >= max) { return false; } - if (state.src.charCodeAt(start + 1) !== 0x3D/* = */) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; - nextChar = state.src.charCodeAt(start + 2); - - if (lastChar === 0x3D/* = */) { return false; } - if (nextChar === 0x3D/* = */) { return false; } - if (nextChar === 0x20 || nextChar === 0x0A) { return false; } - - pos = start + 2; - while (pos < max && state.src.charCodeAt(pos) === 0x3D/* = */) { pos++; } - if (pos !== start + 2) { - // sequence of 3+ markers taking as literal, same as in a emphasis - state.pos += pos - start; - if (!silent) { state.pending += state.src.slice(start, pos); } - return true; - } - - state.pos = start + 2; - stack = 1; - - while (state.pos + 1 < max) { - if (state.src.charCodeAt(state.pos) === 0x3D/* = */) { - if (state.src.charCodeAt(state.pos + 1) === 0x3D/* = */) { - lastChar = state.src.charCodeAt(state.pos - 1); - nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; - if (nextChar !== 0x3D/* = */ && lastChar !== 0x3D/* = */) { - if (lastChar !== 0x20 && lastChar !== 0x0A) { - // closing '==' - stack--; - } else if (nextChar !== 0x20 && nextChar !== 0x0A) { - // opening '==' - stack++; - } // else { - // // standalone ' == ' indented with spaces - // } - if (stack <= 0) { - found = true; - break; - } - } - } - } - - state.parser.skipToken(state); - } - - if (!found) { - // parser failed to find ending tag, so it's not valid emphasis - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 2; - - if (!silent) { - state.push({ type: 'mark_open', level: state.level++ }); - state.parser.tokenize(state); - state.push({ type: 'mark_close', level: --state.level }); - } - - state.pos = state.posMax + 2; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 4178: -/***/ ((module) => { - -"use strict"; -// Proceess '\n' - - - -module.exports = function newline(state, silent) { - var pmax, max, pos = state.pos; - - if (state.src.charCodeAt(pos) !== 0x0A/* \n */) { return false; } - - pmax = state.pending.length - 1; - max = state.posMax; - - // ' \n' -> hardbreak - // Lookup in pending chars is bad practice! Don't copy to other rules! - // Pending string is stored in concat mode, indexed lookups will cause - // convertion to flat mode. - if (!silent) { - if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) { - if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) { - // Strip out all trailing spaces on this line. - for (var i = pmax - 2; i >= 0; i--) { - if (state.pending.charCodeAt(i) !== 0x20) { - state.pending = state.pending.substring(0, i + 1); - break; - } - } - state.push({ - type: 'hardbreak', - level: state.level - }); - } else { - state.pending = state.pending.slice(0, -1); - state.push({ - type: 'softbreak', - level: state.level - }); - } - - } else { - state.push({ - type: 'softbreak', - level: state.level - }); - } - } - - pos++; - - // skip heading spaces for next line - while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } - - state.pos = pos; - return true; -}; - - -/***/ }), - -/***/ 3770: -/***/ ((module) => { - -"use strict"; -// Inline parser state - - - -function StateInline(src, parserInline, options, env, outTokens) { - this.src = src; - this.env = env; - this.options = options; - this.parser = parserInline; - this.tokens = outTokens; - this.pos = 0; - this.posMax = this.src.length; - this.level = 0; - this.pending = ''; - this.pendingLevel = 0; - - this.cache = []; // Stores { start: end } pairs. Useful for backtrack - // optimization of pairs parse (emphasis, strikes). - - // Link parser state vars - - this.isInLabel = false; // Set true when seek link label - we should disable - // "paired" rules (emphasis, strikes) to not skip - // tailing `]` - - this.linkLevel = 0; // Increment for each nesting link. Used to prevent - // nesting in definitions - - this.linkContent = ''; // Temporary storage for link url - - this.labelUnmatchedScopes = 0; // Track unpaired `[` for link labels - // (backtrack optimization) -} - -// Flush pending text -// -StateInline.prototype.pushPending = function () { - this.tokens.push({ - type: 'text', - content: this.pending, - level: this.pendingLevel - }); - this.pending = ''; -}; - -// Push new token to "stream". -// If pending text exists - flush it as text token -// -StateInline.prototype.push = function (token) { - if (this.pending) { - this.pushPending(); - } - - this.tokens.push(token); - this.pendingLevel = this.level; -}; - -// Store value to cache. -// !!! Implementation has parser-specific optimizations -// !!! keys MUST be integer, >= 0; values MUST be integer, > 0 -// -StateInline.prototype.cacheSet = function (key, val) { - for (var i = this.cache.length; i <= key; i++) { - this.cache.push(0); - } - - this.cache[key] = val; -}; - -// Get cache value -// -StateInline.prototype.cacheGet = function (key) { - return key < this.cache.length ? this.cache[key] : 0; -}; - -module.exports = StateInline; - - -/***/ }), - -/***/ 4946: -/***/ ((module) => { - -"use strict"; -// Process ~subscript~ - - - -// same as UNESCAPE_MD_RE plus a space -var UNESCAPE_RE = /\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; - -module.exports = function sub(state, silent) { - var found, - content, - max = state.posMax, - start = state.pos; - - if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 2 >= max) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - state.pos = start + 1; - - while (state.pos < max) { - if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) { - found = true; - break; - } - - state.parser.skipToken(state); - } - - if (!found || start + 1 === state.pos) { - state.pos = start; - return false; - } - - content = state.src.slice(start + 1, state.pos); - - // don't allow unescaped spaces/newlines inside - if (content.match(/(^|[^\\])(\\\\)*\s/)) { - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 1; - - if (!silent) { - state.push({ - type: 'sub', - level: state.level, - content: content.replace(UNESCAPE_RE, '$1') - }); - } - - state.pos = state.posMax + 1; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 4536: -/***/ ((module) => { - -"use strict"; -// Process ^superscript^ - - - -// same as UNESCAPE_MD_RE plus a space -var UNESCAPE_RE = /\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; - -module.exports = function sup(state, silent) { - var found, - content, - max = state.posMax, - start = state.pos; - - if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; } - if (silent) { return false; } // don't run any pairs in validation mode - if (start + 2 >= max) { return false; } - if (state.level >= state.options.maxNesting) { return false; } - - state.pos = start + 1; - - while (state.pos < max) { - if (state.src.charCodeAt(state.pos) === 0x5E/* ^ */) { - found = true; - break; - } - - state.parser.skipToken(state); - } - - if (!found || start + 1 === state.pos) { - state.pos = start; - return false; - } - - content = state.src.slice(start + 1, state.pos); - - // don't allow unescaped spaces/newlines inside - if (content.match(/(^|[^\\])(\\\\)*\s/)) { - state.pos = start; - return false; - } - - // found! - state.posMax = state.pos; - state.pos = start + 1; - - if (!silent) { - state.push({ - type: 'sup', - level: state.level, - content: content.replace(UNESCAPE_RE, '$1') - }); - } - - state.pos = state.posMax + 1; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 104: -/***/ ((module) => { - -"use strict"; -// Skip text characters for text token, place those to pending buffer -// and increment current pos - - - -// Rule to skip pure text -// '{}$%@~+=:' reserved for extentions - -function isTerminatorChar(ch) { - switch (ch) { - case 0x0A/* \n */: - case 0x5C/* \ */: - case 0x60/* ` */: - case 0x2A/* * */: - case 0x5F/* _ */: - case 0x5E/* ^ */: - case 0x5B/* [ */: - case 0x5D/* ] */: - case 0x21/* ! */: - case 0x26/* & */: - case 0x3C/* < */: - case 0x3E/* > */: - case 0x7B/* { */: - case 0x7D/* } */: - case 0x24/* $ */: - case 0x25/* % */: - case 0x40/* @ */: - case 0x7E/* ~ */: - case 0x2B/* + */: - case 0x3D/* = */: - case 0x3A/* : */: - return true; - default: - return false; - } -} - -module.exports = function text(state, silent) { - var pos = state.pos; - - while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) { - pos++; - } - - if (pos === state.pos) { return false; } - - if (!silent) { state.pending += state.src.slice(state.pos, pos); } - - state.pos = pos; - - return true; -}; - - -/***/ }), - -/***/ 6295: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * set-getter (https://github.com/doowb/set-getter) - * - * Copyright (c) 2016, Brian Woodward. - * Licensed under the MIT License. - */ - - - -var toPath = __webpack_require__(8636); - -/** - * Defines a getter function on an object using property path notation. - * - * ```js - * var obj = {}; - * getter(obj, 'foo', function() { - * return 'bar'; - * }); - * ``` - * @param {Object} `obj` Object to add property to. - * @param {String|Array} `prop` Property string or array to add. - * @param {Function} `getter` Getter function to add as a property. - * @api public - */ - -function setGetter(obj, prop, getter) { - var key = toPath(arguments); - return define(obj, key, getter); -} - -/** - * Define getter function on object or object hierarchy using dot notation. - * - * @param {Object} `obj` Object to define getter property on. - * @param {String} `prop` Property string to define. - * @param {Function} `getter` Getter function to define. - * @return {Object} Returns original object. - */ - -function define(obj, prop, getter) { - if (!~prop.indexOf('.')) { - defineProperty(obj, prop, getter); - return obj; - } - - var keys = prop.split('.'); - var last = keys.pop(); - var target = obj; - var key; - - while ((key = keys.shift())) { - while (key.slice(-1) === '\\') { - key = key.slice(0, -1) + '.' + keys.shift(); - } - target = target[key] || (target[key] = {}); - } - - defineProperty(target, last, getter); - return obj; -} - -/** - * Define getter function on object as a configurable and enumerable property. - * - * @param {Object} `obj` Object to define property on. - * @param {String} `prop` Property to define. - * @param {Function} `getter` Getter function to define. - */ - -function defineProperty(obj, prop, getter) { - Object.defineProperty(obj, prop, { - configurable: true, - enumerable: true, - get: getter - }); -} - -/** - * Expose `setGetter` - */ - -module.exports = setGetter; - - -/***/ }), - -/***/ 273: -/***/ (function(module) { - -"use strict"; - - -(function (global) { - - // minimal symbol polyfill for IE11 and others - if (typeof Symbol !== 'function') { - var Symbol = function(name) { - return name; - } - - Symbol.nonNative = true; - } - - const STATE_PLAINTEXT = Symbol('plaintext'); - const STATE_HTML = Symbol('html'); - const STATE_COMMENT = Symbol('comment'); - - const ALLOWED_TAGS_REGEX = /<(\w*)>/g; - const NORMALIZE_TAG_REGEX = /<\/?([^\s\/>]+)/; - - function striptags(html, allowable_tags, tag_replacement) { - html = html || ''; - allowable_tags = allowable_tags || []; - tag_replacement = tag_replacement || ''; - - let context = init_context(allowable_tags, tag_replacement); - - return striptags_internal(html, context); - } - - function init_striptags_stream(allowable_tags, tag_replacement) { - allowable_tags = allowable_tags || []; - tag_replacement = tag_replacement || ''; - - let context = init_context(allowable_tags, tag_replacement); - - return function striptags_stream(html) { - return striptags_internal(html || '', context); - }; - } - - striptags.init_streaming_mode = init_striptags_stream; - - function init_context(allowable_tags, tag_replacement) { - allowable_tags = parse_allowable_tags(allowable_tags); - - return { - allowable_tags : allowable_tags, - tag_replacement: tag_replacement, - - state : STATE_PLAINTEXT, - tag_buffer : '', - depth : 0, - in_quote_char : '' - }; - } - - function striptags_internal(html, context) { - let allowable_tags = context.allowable_tags; - let tag_replacement = context.tag_replacement; - - let state = context.state; - let tag_buffer = context.tag_buffer; - let depth = context.depth; - let in_quote_char = context.in_quote_char; - let output = ''; - - for (let idx = 0, length = html.length; idx < length; idx++) { - let char = html[idx]; - - if (state === STATE_PLAINTEXT) { - switch (char) { - case '<': - state = STATE_HTML; - tag_buffer += char; - break; - - default: - output += char; - break; - } - } - - else if (state === STATE_HTML) { - switch (char) { - case '<': - // ignore '<' if inside a quote - if (in_quote_char) { - break; - } - - // we're seeing a nested '<' - depth++; - break; - - case '>': - // ignore '>' if inside a quote - if (in_quote_char) { - break; - } - - // something like this is happening: '<<>>' - if (depth) { - depth--; - - break; - } - - // this is closing the tag in tag_buffer - in_quote_char = ''; - state = STATE_PLAINTEXT; - tag_buffer += '>'; - - if (allowable_tags.has(normalize_tag(tag_buffer))) { - output += tag_buffer; - } else { - output += tag_replacement; - } - - tag_buffer = ''; - break; - - case '"': - case '\'': - // catch both single and double quotes - - if (char === in_quote_char) { - in_quote_char = ''; - } else { - in_quote_char = in_quote_char || char; - } - - tag_buffer += char; - break; - - case '-': - if (tag_buffer === '': - if (tag_buffer.slice(-2) == '--') { - // close the comment - state = STATE_PLAINTEXT; - } - - tag_buffer = ''; - break; - - default: - tag_buffer += char; - break; - } - } - } - - // save the context for future iterations - context.state = state; - context.tag_buffer = tag_buffer; - context.depth = depth; - context.in_quote_char = in_quote_char; - - return output; - } - - function parse_allowable_tags(allowable_tags) { - let tag_set = new Set(); - - if (typeof allowable_tags === 'string') { - let match; - - while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) { - tag_set.add(match[1]); - } - } - - else if (!Symbol.nonNative && - typeof allowable_tags[Symbol.iterator] === 'function') { - - tag_set = new Set(allowable_tags); - } - - else if (typeof allowable_tags.forEach === 'function') { - // IE11 compatible - allowable_tags.forEach(tag_set.add, tag_set); - } - - return tag_set; - } - - function normalize_tag(tag_buffer) { - let match = NORMALIZE_TAG_REGEX.exec(tag_buffer); - - return match ? match[1].toLowerCase() : null; - } - - if (typeof define === 'function' && define.amd) { - // AMD - define(function module_factory() { return striptags; }); - } - - else if ( true && module.exports) { - // Node - module.exports = striptags; - } - - else { - // Browser - global.striptags = striptags; - } -}(this)); - - -/***/ }), - -/***/ 909: -/***/ ((module) => { - -module.exports = process.platform === 'win32' ? '√' : '✔'; - - -/***/ }), - -/***/ 9318: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -const os = __webpack_require__(2087); -const hasFlag = __webpack_require__(1621); - -const env = process.env; - -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false')) { - forceColor = false; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = true; -} -if ('FORCE_COLOR' in env) { - forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; -} - -function translateLevel(level) { - if (level === 0) { - return false; - } - - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; -} - -function supportsColor(stream) { - if (forceColor === false) { - return 0; - } - - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } - - if (hasFlag('color=256')) { - return 2; - } - - if (stream && !stream.isTTY && forceColor !== true) { - return 0; - } - - const min = forceColor ? 1 : 0; - - if (process.platform === 'win32') { - // Node.js 7.5.0 is the first version of Node.js to include a patch to - // libuv that enables 256 color output on Windows. Anything earlier and it - // won't work. However, here we target Node.js 8 at minimum as it is an LTS - // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows - // release that supports 256 colors. Windows 10 build 14931 is the first release - // that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(process.versions.node.split('.')[0]) >= 8 && - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } - - return 1; - } - - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } - - return min; - } - - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } - - if (env.COLORTERM === 'truecolor') { - return 3; - } - - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); - - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } - - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } - - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } - - if ('COLORTERM' in env) { - return 1; - } - - if (env.TERM === 'dumb') { - return min; - } - - return min; -} - -function getSupportLevel(stream) { - const level = supportsColor(stream); - return translateLevel(level); -} - -module.exports = { - supportsColor: getSupportLevel, - stdout: getSupportLevel(process.stdout), - stderr: getSupportLevel(process.stderr) -}; - - -/***/ }), - -/***/ 2475: -/***/ ((module) => { - -"use strict"; -/*! - * time-stamp - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -/** - * Parse the given pattern and return a formatted - * timestamp. - * - * @param {String} `pattern` Date pattern. - * @param {Date} `date` Date object. - * @return {String} - */ - -module.exports = function(pattern, date) { - if (typeof pattern !== 'string') { - date = pattern; - pattern = 'YYYY:MM:DD'; - } - - if (!date) date = new Date(); - - function timestamp() { - var regex = /(?=(YYYY|YY|MM|DD|HH|mm|ss|ms))\1([:\/]*)/; - var match = regex.exec(pattern); - - if (match) { - var increment = method(match[1]); - var val = '00' + String(date[increment[0]]() + (increment[2] || 0)); - var res = val.slice(-increment[1]) + (match[2] || ''); - pattern = pattern.replace(match[0], res); - timestamp(); - } - } - - timestamp(pattern); - return pattern; -}; - -function method(key) { - return ({ - YYYY: ['getFullYear', 4], - YY: ['getFullYear', 2], - // getMonth is zero-based, thus the extra increment field - MM: ['getMonth', 2, 1], - DD: ['getDate', 2], - HH: ['getHours', 2], - mm: ['getMinutes', 2], - ss: ['getSeconds', 2], - ms: ['getMilliseconds', 3] - })[key]; -} - - -/***/ }), - -/***/ 8636: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * to-object-path - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -var typeOf = __webpack_require__(463); - -module.exports = function toPath(args) { - if (typeOf(args) !== 'arguments') { - args = arguments; - } - return filter(args).join('.'); -}; - -function filter(arr) { - var len = arr.length; - var idx = -1; - var res = []; - - while (++idx < len) { - var ele = arr[idx]; - if (typeOf(ele) === 'arguments' || Array.isArray(ele)) { - res.push.apply(res, filter(ele)); - } else if (typeof ele === 'string') { - res.push(ele); - } - } - return res; -} - - -/***/ }), - -/***/ 463: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var isBuffer = __webpack_require__(5625); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - - -/***/ }), - -/***/ 4294: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = __webpack_require__(4219); - - -/***/ }), - -/***/ 4219: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var net = __webpack_require__(1631); -var tls = __webpack_require__(4016); -var http = __webpack_require__(8605); -var https = __webpack_require__(7211); -var events = __webpack_require__(8614); -var assert = __webpack_require__(2357); -var util = __webpack_require__(1669); - - -exports.httpOverHttp = httpOverHttp; -exports.httpsOverHttp = httpsOverHttp; -exports.httpOverHttps = httpOverHttps; -exports.httpsOverHttps = httpsOverHttps; - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} - - -function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; - - self.on('free', function onFree(socket, host, port, localAddress) { - var options = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; - if (pending.host === options.host && pending.port === options.port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1); - pending.request.onSocket(socket); - return; - } - } - socket.destroy(); - self.removeSocket(socket); - }); -} -util.inherits(TunnelingAgent, events.EventEmitter); - -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push(options); - return; - } - - // If we are under maxSockets create a new one. - self.createSocket(options, function(socket) { - socket.on('free', onFree); - socket.on('close', onCloseOrRemove); - socket.on('agentRemove', onCloseOrRemove); - req.onSocket(socket); - - function onFree() { - self.emit('free', socket, options); - } - - function onCloseOrRemove(err) { - self.removeSocket(socket); - socket.removeListener('free', onFree); - socket.removeListener('close', onCloseOrRemove); - socket.removeListener('agentRemove', onCloseOrRemove); - } - }); -}; - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; - var placeholder = {}; - self.sockets.push(placeholder); - - var connectOptions = mergeOptions({}, self.proxyOptions, { - method: 'CONNECT', - path: options.host + ':' + options.port, - agent: false, - headers: { - host: options.host + ':' + options.port - } - }); - if (options.localAddress) { - connectOptions.localAddress = options.localAddress; - } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64'); - } - - debug('making CONNECT request'); - var connectReq = self.request(connectOptions); - connectReq.useChunkedEncodingByDefault = false; // for v0.6 - connectReq.once('response', onResponse); // for v0.6 - connectReq.once('upgrade', onUpgrade); // for v0.6 - connectReq.once('connect', onConnect); // for v0.7 or later - connectReq.once('error', onError); - connectReq.end(); - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true; - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head); - }); - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); - - if (res.statusCode !== 200) { - debug('tunneling socket could not be established, statusCode=%d', - res.statusCode); - socket.destroy(); - var error = new Error('tunneling socket could not be established, ' + - 'statusCode=' + res.statusCode); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - if (head.length > 0) { - debug('got illegal response body from proxy'); - socket.destroy(); - var error = new Error('got illegal response body from proxy'); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - debug('tunneling connection has established'); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); - } - - function onError(cause) { - connectReq.removeAllListeners(); - - debug('tunneling socket could not be established, cause=%s\n', - cause.message, cause.stack); - var error = new Error('tunneling socket could not be established, ' + - 'cause=' + cause.message); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - } -}; - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) { - return; - } - this.sockets.splice(pos, 1); - - var pending = this.requests.shift(); - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket); - }); - } -}; - -function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - var hostHeader = options.request.getHeader('host'); - var tlsOptions = mergeOptions({}, self.options, { - socket: socket, - servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host - }); - - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; - cb(secureSocket); - }); -} - - -function toOptions(host, port, localAddress) { - if (typeof host === 'string') { // since v0.10 - return { - host: host, - port: port, - localAddress: localAddress - }; - } - return host; // for v0.11 or later -} - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; - if (typeof overrides === 'object') { - var keys = Object.keys(overrides); - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j]; - if (overrides[k] !== undefined) { - target[k] = overrides[k]; - } - } - } - } - return target; -} - - -var debug; -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0]; - } else { - args.unshift('TUNNEL:'); - } - console.error.apply(console, args); - } -} else { - debug = function() {}; -} -exports.debug = debug; // for test - - -/***/ }), - -/***/ 6676: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var typeOf = __webpack_require__(489); -var types = { - 'arguments': 'an arguments object', - 'array': 'an array', - 'boolean': 'a boolean', - 'buffer': 'a buffer', - 'date': 'a date', - 'error': 'an error', - 'float32array': 'a float32array', - 'float64array': 'a float64array', - 'function': 'a function', - 'int16array': 'an int16array', - 'int32array': 'an int32array', - 'int8array': 'an int8array', - 'map': 'a Map', - 'null': 'null', - 'number': 'a number', - 'object': 'an object', - 'regexp': 'a regular expression', - 'set': 'a Set', - 'string': 'a string', - 'symbol': 'a symbol', - 'uint16array': 'an uint16array', - 'uint32array': 'an uint32array', - 'uint8array': 'an uint8array', - 'uint8clampedarray': 'an uint8clampedarray', - 'undefined': 'undefined', - 'weakmap': 'a WeakMap', - 'weakset': 'a WeakSet' -}; - -function type(val) { - return types[typeOf(val)]; -} - -type.types = types; -type.typeOf = typeOf; - -/** - * Expose `type` - */ - -module.exports = type; - - -/***/ }), - -/***/ 489: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var isBuffer = __webpack_require__(5625); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - - -/***/ }), - -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } - - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } - - return ""; -} - -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map - - -/***/ }), - -/***/ 4369: -/***/ ((module) => { - -module.exports = process.platform === 'win32' ? '‼' : '⚠'; - - -/***/ }), - -/***/ 2940: -/***/ ((module) => { - -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - - return wrapper - - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } -} - - -/***/ }), - -/***/ 4920: -/***/ ((module) => { - -"use strict"; -/** - * year - * - * Copyright (c) 2014 Jon Schlinkert, contributors. - * Licensed under the MIT license. - */ - - - -module.exports = function(pattern) { - var year = new Date().getUTCFullYear().toString(); - if (typeof pattern !== 'string') { - return year; - } - - if (/[Yy]{4}/.test(pattern)) { - return year; - } - - if (/[Yy]{2}/.test(pattern)) { - return year.substr(2, 2); - } -}; - -/***/ }), - -/***/ 2877: -/***/ ((module) => { - -module.exports = eval("require")("encoding"); - - -/***/ }), - -/***/ 5280: -/***/ ((module) => { - -function webpackEmptyContext(req) { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; -} -webpackEmptyContext.keys = () => []; -webpackEmptyContext.resolve = webpackEmptyContext; -webpackEmptyContext.id = 5280; -module.exports = webpackEmptyContext; - -/***/ }), - -/***/ 1160: +/***/ 396: /***/ ((module) => { -"use strict"; -module.exports = JSON.parse("{\"op\":{\"plus\":[\"and\",\"plus\",\"+\",\"add\",\"on\"],\"minus\":[\"minus\",\"subtract\"],\"times\":[\"times\",\"multiply\"],\"divide\":[\"divide\"]},\"o\":{\"plus\":[\"at\",\"in\",\"past\",\"late\",\"later\",\"after\",\"next\",\"from\",\"start\",\"starting\",\"since\",\"coming\"],\"minus\":[\"last\",\"minus\",\"subtract\",\"ago\",\"before\",\"from\"]},\"n\":{\"0\":[\"zero\"],\"1\":[\"one\",\"a\",\"an\",\"first\"],\"2\":[\"two\",\"second\"],\"3\":[\"three\",\"third\"],\"4\":[\"four\",\"fourth\"],\"5\":[\"five\",\"fifth\"],\"6\":[\"six\",\"sixth\"],\"7\":[\"seven\",\"seventh\"],\"8\":[\"eight\",\"eighth\"],\"9\":[\"nine\",\"ninth\"],\"10\":[\"ten\",\"tenth\"],\"11\":[\"eleven\",\"eleventh\"],\"12\":[\"twelve\",\"twelveth\"],\"13\":[\"thirteen\",\"thirteenth\"],\"14\":[\"fourteen\",\"fourteenth\"],\"15\":[\"fifteen\",\"fifteenth\"],\"16\":[\"sixteen\",\"sixteenth\"],\"17\":[\"seventeen\",\"seventeenth\"],\"18\":[\"eighteen\",\"eighteenth\"],\"19\":[\"nineteen\",\"nineteenth\"],\"20\":[\"twenty\",\"twentieth\"],\"30\":[\"thirty\",\"thirtieth\"],\"40\":[\"fourty\",\"fourtieth\"],\"50\":[\"fifty\",\"fiftieth\"],\"60\":[\"sixty\",\"sixtieth\"],\"70\":[\"seventy\",\"seventieth\"],\"80\":[\"eighty\",\"eightieth\"],\"90\":[\"ninety\",\"ninetieth\"],\"100\":[\"hundred\",\"hundreds\",\"hundredth\"],\"1000\":[\"thousand\",\"thousands\",\"thousandth\",\"k\",\"K\"],\"0.25\":[\"quarter\"],\"0.5\":[\"half\",\"1/2\",\"half an\"]},\"t\":{},\"dt\":{\"s\":[\"second\",\"seconds\",\"s\",\"sec\",\"secs\"],\"m\":[\"minute\",\"minutes\",\"m\",\"min\",\"mins\"],\"h\":[\"hour\",\"hours\",\"h\",\"hr\",\"hrs\"],\"d\":[\"day\",\"days\",\"d\",\"dai\"],\"w\":[\"week\",\"weeks\",\"w\",\"wk\",\"wks\"],\"M\":[\"month\",\"months\",\"monthes\",\"M\",\"mo\",\"moon\",\"moons\"],\"y\":[\"year\",\"years\",\"y\",\"yr\",\"yrs\"]},\"T\":{\"t:,dt:=3h\":[\"later\",\"soon\"],\"t:=1d,dt:\":[\"st\",\"nd\",\"rd\",\"th\",\"st day\",\"nd day\",\"rd day\",\"th day\"],\"t:,dt:1w\":[\"st week\",\"nd week\",\"rd week\",\"th week\"],\"t:,dt:14d\":[\"day\",\"fortnight\"],\"t:=0h=0m=0s1mer,dt:\":[\"pm\",\"p.m\",\"p.m.\",\"noon\"],\"t:,dt:1d\":[\"tomorrow\",\"tmr\"],\"t:,dt:-1d\":[\"yesterday\",\"ytd\"],\"t:,0dt:\":[\"today\"],\"t:=2h=0m=0s1mer,dt:\":[\"afternoon\"],\"t:=6h=0m=0s0mer,dt:\":[\"dawn\"],\"t:=7h=0m=0s0mer,dt:\":[\"am\",\"a.m\",\"a.m.\"],\"t:=7h=0m=0s1mer,dt:\":[\"evening\"],\"t:=8h=0m=0s0mer,dt:\":[\"morning\"],\"t:=9h=0m=0s1mer,dt:\":[\"tonight\",\"night\"],\"t:=0h=0m=0s0mer,dt:1d\":[\"midnight\"],\"t:,dt:=0w0wd\":[\"sunday\",\"sun\"],\"t:,dt:=0w1wd\":[\"monday\",\"mon\"],\"t:,dt:=0w2wd\":[\"tuesday\",\"tue\",\"tues\"],\"t:,dt:=0w3wd\":[\"wednesday\",\"wed\"],\"t:,dt:=0w4wd\":[\"thursday\",\"thu\",\"thur\",\"thurs\"],\"t:,dt:=0w5wd\":[\"friday\",\"fri\"],\"t:,dt:=0w6wd\":[\"saturday\",\"sat\"],\"t:1M=1d,dt:\":[\"january\",\"jan\"],\"t:2M=1d,dt:\":[\"february\",\"feb\"],\"t:3M=1d,dt:\":[\"march\",\"mar\"],\"t:4M=1d,dt:\":[\"april\",\"apr\"],\"t:5M=1d,dt:\":[\"may\"],\"t:6M=1d,dt:\":[\"june\",\"jun\"],\"t:7M=1d,dt:\":[\"july\",\"jul\"],\"t:8M=1d,dt:\":[\"august\",\"aug\"],\"t:9M=1d,dt:\":[\"september\",\"sept\",\"sep\"],\"t:10M=1d,dt:\":[\"october\",\"oct\"],\"t:11M=1d,dt:\":[\"november\",\"nov\"],\"t:12M=1d,dt:\":[\"december\",\"dec\"],\"t:12M25d,dt:\":[\"christmas\"]},\"f\":{\"1\":[\"once\"],\"2\":[\"twice\"]}}"); - -/***/ }), - -/***/ 5615: -/***/ ((module) => { +module.exports = eval("require")("@actions/core"); -"use strict"; -module.exports = JSON.parse("{\"Aacute;\":\"Á\",\"Aacute\":\"Á\",\"aacute;\":\"á\",\"aacute\":\"á\",\"Abreve;\":\"Ă\",\"abreve;\":\"ă\",\"ac;\":\"∾\",\"acd;\":\"∿\",\"acE;\":\"∾̳\",\"Acirc;\":\"Â\",\"Acirc\":\"Â\",\"acirc;\":\"â\",\"acirc\":\"â\",\"acute;\":\"´\",\"acute\":\"´\",\"Acy;\":\"А\",\"acy;\":\"а\",\"AElig;\":\"Æ\",\"AElig\":\"Æ\",\"aelig;\":\"æ\",\"aelig\":\"æ\",\"af;\":\"⁡\",\"Afr;\":\"𝔄\",\"afr;\":\"𝔞\",\"Agrave;\":\"À\",\"Agrave\":\"À\",\"agrave;\":\"à\",\"agrave\":\"à\",\"alefsym;\":\"ℵ\",\"aleph;\":\"ℵ\",\"Alpha;\":\"Α\",\"alpha;\":\"α\",\"Amacr;\":\"Ā\",\"amacr;\":\"ā\",\"amalg;\":\"⨿\",\"AMP;\":\"&\",\"AMP\":\"&\",\"amp;\":\"&\",\"amp\":\"&\",\"And;\":\"⩓\",\"and;\":\"∧\",\"andand;\":\"⩕\",\"andd;\":\"⩜\",\"andslope;\":\"⩘\",\"andv;\":\"⩚\",\"ang;\":\"∠\",\"ange;\":\"⦤\",\"angle;\":\"∠\",\"angmsd;\":\"∡\",\"angmsdaa;\":\"⦨\",\"angmsdab;\":\"⦩\",\"angmsdac;\":\"⦪\",\"angmsdad;\":\"⦫\",\"angmsdae;\":\"⦬\",\"angmsdaf;\":\"⦭\",\"angmsdag;\":\"⦮\",\"angmsdah;\":\"⦯\",\"angrt;\":\"∟\",\"angrtvb;\":\"⊾\",\"angrtvbd;\":\"⦝\",\"angsph;\":\"∢\",\"angst;\":\"Å\",\"angzarr;\":\"⍼\",\"Aogon;\":\"Ą\",\"aogon;\":\"ą\",\"Aopf;\":\"𝔸\",\"aopf;\":\"𝕒\",\"ap;\":\"≈\",\"apacir;\":\"⩯\",\"apE;\":\"⩰\",\"ape;\":\"≊\",\"apid;\":\"≋\",\"apos;\":\"'\",\"ApplyFunction;\":\"⁡\",\"approx;\":\"≈\",\"approxeq;\":\"≊\",\"Aring;\":\"Å\",\"Aring\":\"Å\",\"aring;\":\"å\",\"aring\":\"å\",\"Ascr;\":\"𝒜\",\"ascr;\":\"𝒶\",\"Assign;\":\"≔\",\"ast;\":\"*\",\"asymp;\":\"≈\",\"asympeq;\":\"≍\",\"Atilde;\":\"Ã\",\"Atilde\":\"Ã\",\"atilde;\":\"ã\",\"atilde\":\"ã\",\"Auml;\":\"Ä\",\"Auml\":\"Ä\",\"auml;\":\"ä\",\"auml\":\"ä\",\"awconint;\":\"∳\",\"awint;\":\"⨑\",\"backcong;\":\"≌\",\"backepsilon;\":\"϶\",\"backprime;\":\"‵\",\"backsim;\":\"∽\",\"backsimeq;\":\"⋍\",\"Backslash;\":\"∖\",\"Barv;\":\"⫧\",\"barvee;\":\"⊽\",\"Barwed;\":\"⌆\",\"barwed;\":\"⌅\",\"barwedge;\":\"⌅\",\"bbrk;\":\"⎵\",\"bbrktbrk;\":\"⎶\",\"bcong;\":\"≌\",\"Bcy;\":\"Б\",\"bcy;\":\"б\",\"bdquo;\":\"„\",\"becaus;\":\"∵\",\"Because;\":\"∵\",\"because;\":\"∵\",\"bemptyv;\":\"⦰\",\"bepsi;\":\"϶\",\"bernou;\":\"ℬ\",\"Bernoullis;\":\"ℬ\",\"Beta;\":\"Β\",\"beta;\":\"β\",\"beth;\":\"ℶ\",\"between;\":\"≬\",\"Bfr;\":\"𝔅\",\"bfr;\":\"𝔟\",\"bigcap;\":\"⋂\",\"bigcirc;\":\"◯\",\"bigcup;\":\"⋃\",\"bigodot;\":\"⨀\",\"bigoplus;\":\"⨁\",\"bigotimes;\":\"⨂\",\"bigsqcup;\":\"⨆\",\"bigstar;\":\"★\",\"bigtriangledown;\":\"▽\",\"bigtriangleup;\":\"△\",\"biguplus;\":\"⨄\",\"bigvee;\":\"⋁\",\"bigwedge;\":\"⋀\",\"bkarow;\":\"⤍\",\"blacklozenge;\":\"⧫\",\"blacksquare;\":\"▪\",\"blacktriangle;\":\"▴\",\"blacktriangledown;\":\"▾\",\"blacktriangleleft;\":\"◂\",\"blacktriangleright;\":\"▸\",\"blank;\":\"␣\",\"blk12;\":\"▒\",\"blk14;\":\"░\",\"blk34;\":\"▓\",\"block;\":\"█\",\"bne;\":\"=⃥\",\"bnequiv;\":\"≡⃥\",\"bNot;\":\"⫭\",\"bnot;\":\"⌐\",\"Bopf;\":\"𝔹\",\"bopf;\":\"𝕓\",\"bot;\":\"⊥\",\"bottom;\":\"⊥\",\"bowtie;\":\"⋈\",\"boxbox;\":\"⧉\",\"boxDL;\":\"╗\",\"boxDl;\":\"╖\",\"boxdL;\":\"╕\",\"boxdl;\":\"┐\",\"boxDR;\":\"╔\",\"boxDr;\":\"╓\",\"boxdR;\":\"╒\",\"boxdr;\":\"┌\",\"boxH;\":\"═\",\"boxh;\":\"─\",\"boxHD;\":\"╦\",\"boxHd;\":\"╤\",\"boxhD;\":\"╥\",\"boxhd;\":\"┬\",\"boxHU;\":\"╩\",\"boxHu;\":\"╧\",\"boxhU;\":\"╨\",\"boxhu;\":\"┴\",\"boxminus;\":\"⊟\",\"boxplus;\":\"⊞\",\"boxtimes;\":\"⊠\",\"boxUL;\":\"╝\",\"boxUl;\":\"╜\",\"boxuL;\":\"╛\",\"boxul;\":\"┘\",\"boxUR;\":\"╚\",\"boxUr;\":\"╙\",\"boxuR;\":\"╘\",\"boxur;\":\"└\",\"boxV;\":\"║\",\"boxv;\":\"│\",\"boxVH;\":\"╬\",\"boxVh;\":\"╫\",\"boxvH;\":\"╪\",\"boxvh;\":\"┼\",\"boxVL;\":\"╣\",\"boxVl;\":\"╢\",\"boxvL;\":\"╡\",\"boxvl;\":\"┤\",\"boxVR;\":\"╠\",\"boxVr;\":\"╟\",\"boxvR;\":\"╞\",\"boxvr;\":\"├\",\"bprime;\":\"‵\",\"Breve;\":\"˘\",\"breve;\":\"˘\",\"brvbar;\":\"¦\",\"brvbar\":\"¦\",\"Bscr;\":\"ℬ\",\"bscr;\":\"𝒷\",\"bsemi;\":\"⁏\",\"bsim;\":\"∽\",\"bsime;\":\"⋍\",\"bsol;\":\"\\\\\",\"bsolb;\":\"⧅\",\"bsolhsub;\":\"⟈\",\"bull;\":\"•\",\"bullet;\":\"•\",\"bump;\":\"≎\",\"bumpE;\":\"⪮\",\"bumpe;\":\"≏\",\"Bumpeq;\":\"≎\",\"bumpeq;\":\"≏\",\"Cacute;\":\"Ć\",\"cacute;\":\"ć\",\"Cap;\":\"⋒\",\"cap;\":\"∩\",\"capand;\":\"⩄\",\"capbrcup;\":\"⩉\",\"capcap;\":\"⩋\",\"capcup;\":\"⩇\",\"capdot;\":\"⩀\",\"CapitalDifferentialD;\":\"ⅅ\",\"caps;\":\"∩︀\",\"caret;\":\"⁁\",\"caron;\":\"ˇ\",\"Cayleys;\":\"ℭ\",\"ccaps;\":\"⩍\",\"Ccaron;\":\"Č\",\"ccaron;\":\"č\",\"Ccedil;\":\"Ç\",\"Ccedil\":\"Ç\",\"ccedil;\":\"ç\",\"ccedil\":\"ç\",\"Ccirc;\":\"Ĉ\",\"ccirc;\":\"ĉ\",\"Cconint;\":\"∰\",\"ccups;\":\"⩌\",\"ccupssm;\":\"⩐\",\"Cdot;\":\"Ċ\",\"cdot;\":\"ċ\",\"cedil;\":\"¸\",\"cedil\":\"¸\",\"Cedilla;\":\"¸\",\"cemptyv;\":\"⦲\",\"cent;\":\"¢\",\"cent\":\"¢\",\"CenterDot;\":\"·\",\"centerdot;\":\"·\",\"Cfr;\":\"ℭ\",\"cfr;\":\"𝔠\",\"CHcy;\":\"Ч\",\"chcy;\":\"ч\",\"check;\":\"✓\",\"checkmark;\":\"✓\",\"Chi;\":\"Χ\",\"chi;\":\"χ\",\"cir;\":\"○\",\"circ;\":\"ˆ\",\"circeq;\":\"≗\",\"circlearrowleft;\":\"↺\",\"circlearrowright;\":\"↻\",\"circledast;\":\"⊛\",\"circledcirc;\":\"⊚\",\"circleddash;\":\"⊝\",\"CircleDot;\":\"⊙\",\"circledR;\":\"®\",\"circledS;\":\"Ⓢ\",\"CircleMinus;\":\"⊖\",\"CirclePlus;\":\"⊕\",\"CircleTimes;\":\"⊗\",\"cirE;\":\"⧃\",\"cire;\":\"≗\",\"cirfnint;\":\"⨐\",\"cirmid;\":\"⫯\",\"cirscir;\":\"⧂\",\"ClockwiseContourIntegral;\":\"∲\",\"CloseCurlyDoubleQuote;\":\"”\",\"CloseCurlyQuote;\":\"’\",\"clubs;\":\"♣\",\"clubsuit;\":\"♣\",\"Colon;\":\"∷\",\"colon;\":\":\",\"Colone;\":\"⩴\",\"colone;\":\"≔\",\"coloneq;\":\"≔\",\"comma;\":\",\",\"commat;\":\"@\",\"comp;\":\"∁\",\"compfn;\":\"∘\",\"complement;\":\"∁\",\"complexes;\":\"ℂ\",\"cong;\":\"≅\",\"congdot;\":\"⩭\",\"Congruent;\":\"≡\",\"Conint;\":\"∯\",\"conint;\":\"∮\",\"ContourIntegral;\":\"∮\",\"Copf;\":\"ℂ\",\"copf;\":\"𝕔\",\"coprod;\":\"∐\",\"Coproduct;\":\"∐\",\"COPY;\":\"©\",\"COPY\":\"©\",\"copy;\":\"©\",\"copy\":\"©\",\"copysr;\":\"℗\",\"CounterClockwiseContourIntegral;\":\"∳\",\"crarr;\":\"↵\",\"Cross;\":\"⨯\",\"cross;\":\"✗\",\"Cscr;\":\"𝒞\",\"cscr;\":\"𝒸\",\"csub;\":\"⫏\",\"csube;\":\"⫑\",\"csup;\":\"⫐\",\"csupe;\":\"⫒\",\"ctdot;\":\"⋯\",\"cudarrl;\":\"⤸\",\"cudarrr;\":\"⤵\",\"cuepr;\":\"⋞\",\"cuesc;\":\"⋟\",\"cularr;\":\"↶\",\"cularrp;\":\"⤽\",\"Cup;\":\"⋓\",\"cup;\":\"∪\",\"cupbrcap;\":\"⩈\",\"CupCap;\":\"≍\",\"cupcap;\":\"⩆\",\"cupcup;\":\"⩊\",\"cupdot;\":\"⊍\",\"cupor;\":\"⩅\",\"cups;\":\"∪︀\",\"curarr;\":\"↷\",\"curarrm;\":\"⤼\",\"curlyeqprec;\":\"⋞\",\"curlyeqsucc;\":\"⋟\",\"curlyvee;\":\"⋎\",\"curlywedge;\":\"⋏\",\"curren;\":\"¤\",\"curren\":\"¤\",\"curvearrowleft;\":\"↶\",\"curvearrowright;\":\"↷\",\"cuvee;\":\"⋎\",\"cuwed;\":\"⋏\",\"cwconint;\":\"∲\",\"cwint;\":\"∱\",\"cylcty;\":\"⌭\",\"Dagger;\":\"‡\",\"dagger;\":\"†\",\"daleth;\":\"ℸ\",\"Darr;\":\"↡\",\"dArr;\":\"⇓\",\"darr;\":\"↓\",\"dash;\":\"‐\",\"Dashv;\":\"⫤\",\"dashv;\":\"⊣\",\"dbkarow;\":\"⤏\",\"dblac;\":\"˝\",\"Dcaron;\":\"Ď\",\"dcaron;\":\"ď\",\"Dcy;\":\"Д\",\"dcy;\":\"д\",\"DD;\":\"ⅅ\",\"dd;\":\"ⅆ\",\"ddagger;\":\"‡\",\"ddarr;\":\"⇊\",\"DDotrahd;\":\"⤑\",\"ddotseq;\":\"⩷\",\"deg;\":\"°\",\"deg\":\"°\",\"Del;\":\"∇\",\"Delta;\":\"Δ\",\"delta;\":\"δ\",\"demptyv;\":\"⦱\",\"dfisht;\":\"⥿\",\"Dfr;\":\"𝔇\",\"dfr;\":\"𝔡\",\"dHar;\":\"⥥\",\"dharl;\":\"⇃\",\"dharr;\":\"⇂\",\"DiacriticalAcute;\":\"´\",\"DiacriticalDot;\":\"˙\",\"DiacriticalDoubleAcute;\":\"˝\",\"DiacriticalGrave;\":\"`\",\"DiacriticalTilde;\":\"˜\",\"diam;\":\"⋄\",\"Diamond;\":\"⋄\",\"diamond;\":\"⋄\",\"diamondsuit;\":\"♦\",\"diams;\":\"♦\",\"die;\":\"¨\",\"DifferentialD;\":\"ⅆ\",\"digamma;\":\"ϝ\",\"disin;\":\"⋲\",\"div;\":\"÷\",\"divide;\":\"÷\",\"divide\":\"÷\",\"divideontimes;\":\"⋇\",\"divonx;\":\"⋇\",\"DJcy;\":\"Ђ\",\"djcy;\":\"ђ\",\"dlcorn;\":\"⌞\",\"dlcrop;\":\"⌍\",\"dollar;\":\"$\",\"Dopf;\":\"𝔻\",\"dopf;\":\"𝕕\",\"Dot;\":\"¨\",\"dot;\":\"˙\",\"DotDot;\":\"⃜\",\"doteq;\":\"≐\",\"doteqdot;\":\"≑\",\"DotEqual;\":\"≐\",\"dotminus;\":\"∸\",\"dotplus;\":\"∔\",\"dotsquare;\":\"⊡\",\"doublebarwedge;\":\"⌆\",\"DoubleContourIntegral;\":\"∯\",\"DoubleDot;\":\"¨\",\"DoubleDownArrow;\":\"⇓\",\"DoubleLeftArrow;\":\"⇐\",\"DoubleLeftRightArrow;\":\"⇔\",\"DoubleLeftTee;\":\"⫤\",\"DoubleLongLeftArrow;\":\"⟸\",\"DoubleLongLeftRightArrow;\":\"⟺\",\"DoubleLongRightArrow;\":\"⟹\",\"DoubleRightArrow;\":\"⇒\",\"DoubleRightTee;\":\"⊨\",\"DoubleUpArrow;\":\"⇑\",\"DoubleUpDownArrow;\":\"⇕\",\"DoubleVerticalBar;\":\"∥\",\"DownArrow;\":\"↓\",\"Downarrow;\":\"⇓\",\"downarrow;\":\"↓\",\"DownArrowBar;\":\"⤓\",\"DownArrowUpArrow;\":\"⇵\",\"DownBreve;\":\"̑\",\"downdownarrows;\":\"⇊\",\"downharpoonleft;\":\"⇃\",\"downharpoonright;\":\"⇂\",\"DownLeftRightVector;\":\"⥐\",\"DownLeftTeeVector;\":\"⥞\",\"DownLeftVector;\":\"↽\",\"DownLeftVectorBar;\":\"⥖\",\"DownRightTeeVector;\":\"⥟\",\"DownRightVector;\":\"⇁\",\"DownRightVectorBar;\":\"⥗\",\"DownTee;\":\"⊤\",\"DownTeeArrow;\":\"↧\",\"drbkarow;\":\"⤐\",\"drcorn;\":\"⌟\",\"drcrop;\":\"⌌\",\"Dscr;\":\"𝒟\",\"dscr;\":\"𝒹\",\"DScy;\":\"Ѕ\",\"dscy;\":\"ѕ\",\"dsol;\":\"⧶\",\"Dstrok;\":\"Đ\",\"dstrok;\":\"đ\",\"dtdot;\":\"⋱\",\"dtri;\":\"▿\",\"dtrif;\":\"▾\",\"duarr;\":\"⇵\",\"duhar;\":\"⥯\",\"dwangle;\":\"⦦\",\"DZcy;\":\"Џ\",\"dzcy;\":\"џ\",\"dzigrarr;\":\"⟿\",\"Eacute;\":\"É\",\"Eacute\":\"É\",\"eacute;\":\"é\",\"eacute\":\"é\",\"easter;\":\"⩮\",\"Ecaron;\":\"Ě\",\"ecaron;\":\"ě\",\"ecir;\":\"≖\",\"Ecirc;\":\"Ê\",\"Ecirc\":\"Ê\",\"ecirc;\":\"ê\",\"ecirc\":\"ê\",\"ecolon;\":\"≕\",\"Ecy;\":\"Э\",\"ecy;\":\"э\",\"eDDot;\":\"⩷\",\"Edot;\":\"Ė\",\"eDot;\":\"≑\",\"edot;\":\"ė\",\"ee;\":\"ⅇ\",\"efDot;\":\"≒\",\"Efr;\":\"𝔈\",\"efr;\":\"𝔢\",\"eg;\":\"⪚\",\"Egrave;\":\"È\",\"Egrave\":\"È\",\"egrave;\":\"è\",\"egrave\":\"è\",\"egs;\":\"⪖\",\"egsdot;\":\"⪘\",\"el;\":\"⪙\",\"Element;\":\"∈\",\"elinters;\":\"⏧\",\"ell;\":\"ℓ\",\"els;\":\"⪕\",\"elsdot;\":\"⪗\",\"Emacr;\":\"Ē\",\"emacr;\":\"ē\",\"empty;\":\"∅\",\"emptyset;\":\"∅\",\"EmptySmallSquare;\":\"◻\",\"emptyv;\":\"∅\",\"EmptyVerySmallSquare;\":\"▫\",\"emsp;\":\" \",\"emsp13;\":\" \",\"emsp14;\":\" \",\"ENG;\":\"Ŋ\",\"eng;\":\"ŋ\",\"ensp;\":\" \",\"Eogon;\":\"Ę\",\"eogon;\":\"ę\",\"Eopf;\":\"𝔼\",\"eopf;\":\"𝕖\",\"epar;\":\"⋕\",\"eparsl;\":\"⧣\",\"eplus;\":\"⩱\",\"epsi;\":\"ε\",\"Epsilon;\":\"Ε\",\"epsilon;\":\"ε\",\"epsiv;\":\"ϵ\",\"eqcirc;\":\"≖\",\"eqcolon;\":\"≕\",\"eqsim;\":\"≂\",\"eqslantgtr;\":\"⪖\",\"eqslantless;\":\"⪕\",\"Equal;\":\"⩵\",\"equals;\":\"=\",\"EqualTilde;\":\"≂\",\"equest;\":\"≟\",\"Equilibrium;\":\"⇌\",\"equiv;\":\"≡\",\"equivDD;\":\"⩸\",\"eqvparsl;\":\"⧥\",\"erarr;\":\"⥱\",\"erDot;\":\"≓\",\"Escr;\":\"ℰ\",\"escr;\":\"ℯ\",\"esdot;\":\"≐\",\"Esim;\":\"⩳\",\"esim;\":\"≂\",\"Eta;\":\"Η\",\"eta;\":\"η\",\"ETH;\":\"Ð\",\"ETH\":\"Ð\",\"eth;\":\"ð\",\"eth\":\"ð\",\"Euml;\":\"Ë\",\"Euml\":\"Ë\",\"euml;\":\"ë\",\"euml\":\"ë\",\"euro;\":\"€\",\"excl;\":\"!\",\"exist;\":\"∃\",\"Exists;\":\"∃\",\"expectation;\":\"ℰ\",\"ExponentialE;\":\"ⅇ\",\"exponentiale;\":\"ⅇ\",\"fallingdotseq;\":\"≒\",\"Fcy;\":\"Ф\",\"fcy;\":\"ф\",\"female;\":\"♀\",\"ffilig;\":\"ffi\",\"fflig;\":\"ff\",\"ffllig;\":\"ffl\",\"Ffr;\":\"𝔉\",\"ffr;\":\"𝔣\",\"filig;\":\"fi\",\"FilledSmallSquare;\":\"◼\",\"FilledVerySmallSquare;\":\"▪\",\"fjlig;\":\"fj\",\"flat;\":\"♭\",\"fllig;\":\"fl\",\"fltns;\":\"▱\",\"fnof;\":\"ƒ\",\"Fopf;\":\"𝔽\",\"fopf;\":\"𝕗\",\"ForAll;\":\"∀\",\"forall;\":\"∀\",\"fork;\":\"⋔\",\"forkv;\":\"⫙\",\"Fouriertrf;\":\"ℱ\",\"fpartint;\":\"⨍\",\"frac12;\":\"½\",\"frac12\":\"½\",\"frac13;\":\"⅓\",\"frac14;\":\"¼\",\"frac14\":\"¼\",\"frac15;\":\"⅕\",\"frac16;\":\"⅙\",\"frac18;\":\"⅛\",\"frac23;\":\"⅔\",\"frac25;\":\"⅖\",\"frac34;\":\"¾\",\"frac34\":\"¾\",\"frac35;\":\"⅗\",\"frac38;\":\"⅜\",\"frac45;\":\"⅘\",\"frac56;\":\"⅚\",\"frac58;\":\"⅝\",\"frac78;\":\"⅞\",\"frasl;\":\"⁄\",\"frown;\":\"⌢\",\"Fscr;\":\"ℱ\",\"fscr;\":\"𝒻\",\"gacute;\":\"ǵ\",\"Gamma;\":\"Γ\",\"gamma;\":\"γ\",\"Gammad;\":\"Ϝ\",\"gammad;\":\"ϝ\",\"gap;\":\"⪆\",\"Gbreve;\":\"Ğ\",\"gbreve;\":\"ğ\",\"Gcedil;\":\"Ģ\",\"Gcirc;\":\"Ĝ\",\"gcirc;\":\"ĝ\",\"Gcy;\":\"Г\",\"gcy;\":\"г\",\"Gdot;\":\"Ġ\",\"gdot;\":\"ġ\",\"gE;\":\"≧\",\"ge;\":\"≥\",\"gEl;\":\"⪌\",\"gel;\":\"⋛\",\"geq;\":\"≥\",\"geqq;\":\"≧\",\"geqslant;\":\"⩾\",\"ges;\":\"⩾\",\"gescc;\":\"⪩\",\"gesdot;\":\"⪀\",\"gesdoto;\":\"⪂\",\"gesdotol;\":\"⪄\",\"gesl;\":\"⋛︀\",\"gesles;\":\"⪔\",\"Gfr;\":\"𝔊\",\"gfr;\":\"𝔤\",\"Gg;\":\"⋙\",\"gg;\":\"≫\",\"ggg;\":\"⋙\",\"gimel;\":\"ℷ\",\"GJcy;\":\"Ѓ\",\"gjcy;\":\"ѓ\",\"gl;\":\"≷\",\"gla;\":\"⪥\",\"glE;\":\"⪒\",\"glj;\":\"⪤\",\"gnap;\":\"⪊\",\"gnapprox;\":\"⪊\",\"gnE;\":\"≩\",\"gne;\":\"⪈\",\"gneq;\":\"⪈\",\"gneqq;\":\"≩\",\"gnsim;\":\"⋧\",\"Gopf;\":\"𝔾\",\"gopf;\":\"𝕘\",\"grave;\":\"`\",\"GreaterEqual;\":\"≥\",\"GreaterEqualLess;\":\"⋛\",\"GreaterFullEqual;\":\"≧\",\"GreaterGreater;\":\"⪢\",\"GreaterLess;\":\"≷\",\"GreaterSlantEqual;\":\"⩾\",\"GreaterTilde;\":\"≳\",\"Gscr;\":\"𝒢\",\"gscr;\":\"ℊ\",\"gsim;\":\"≳\",\"gsime;\":\"⪎\",\"gsiml;\":\"⪐\",\"GT;\":\">\",\"GT\":\">\",\"Gt;\":\"≫\",\"gt;\":\">\",\"gt\":\">\",\"gtcc;\":\"⪧\",\"gtcir;\":\"⩺\",\"gtdot;\":\"⋗\",\"gtlPar;\":\"⦕\",\"gtquest;\":\"⩼\",\"gtrapprox;\":\"⪆\",\"gtrarr;\":\"⥸\",\"gtrdot;\":\"⋗\",\"gtreqless;\":\"⋛\",\"gtreqqless;\":\"⪌\",\"gtrless;\":\"≷\",\"gtrsim;\":\"≳\",\"gvertneqq;\":\"≩︀\",\"gvnE;\":\"≩︀\",\"Hacek;\":\"ˇ\",\"hairsp;\":\" \",\"half;\":\"½\",\"hamilt;\":\"ℋ\",\"HARDcy;\":\"Ъ\",\"hardcy;\":\"ъ\",\"hArr;\":\"⇔\",\"harr;\":\"↔\",\"harrcir;\":\"⥈\",\"harrw;\":\"↭\",\"Hat;\":\"^\",\"hbar;\":\"ℏ\",\"Hcirc;\":\"Ĥ\",\"hcirc;\":\"ĥ\",\"hearts;\":\"♥\",\"heartsuit;\":\"♥\",\"hellip;\":\"…\",\"hercon;\":\"⊹\",\"Hfr;\":\"ℌ\",\"hfr;\":\"𝔥\",\"HilbertSpace;\":\"ℋ\",\"hksearow;\":\"⤥\",\"hkswarow;\":\"⤦\",\"hoarr;\":\"⇿\",\"homtht;\":\"∻\",\"hookleftarrow;\":\"↩\",\"hookrightarrow;\":\"↪\",\"Hopf;\":\"ℍ\",\"hopf;\":\"𝕙\",\"horbar;\":\"―\",\"HorizontalLine;\":\"─\",\"Hscr;\":\"ℋ\",\"hscr;\":\"𝒽\",\"hslash;\":\"ℏ\",\"Hstrok;\":\"Ħ\",\"hstrok;\":\"ħ\",\"HumpDownHump;\":\"≎\",\"HumpEqual;\":\"≏\",\"hybull;\":\"⁃\",\"hyphen;\":\"‐\",\"Iacute;\":\"Í\",\"Iacute\":\"Í\",\"iacute;\":\"í\",\"iacute\":\"í\",\"ic;\":\"⁣\",\"Icirc;\":\"Î\",\"Icirc\":\"Î\",\"icirc;\":\"î\",\"icirc\":\"î\",\"Icy;\":\"И\",\"icy;\":\"и\",\"Idot;\":\"İ\",\"IEcy;\":\"Е\",\"iecy;\":\"е\",\"iexcl;\":\"¡\",\"iexcl\":\"¡\",\"iff;\":\"⇔\",\"Ifr;\":\"ℑ\",\"ifr;\":\"𝔦\",\"Igrave;\":\"Ì\",\"Igrave\":\"Ì\",\"igrave;\":\"ì\",\"igrave\":\"ì\",\"ii;\":\"ⅈ\",\"iiiint;\":\"⨌\",\"iiint;\":\"∭\",\"iinfin;\":\"⧜\",\"iiota;\":\"℩\",\"IJlig;\":\"IJ\",\"ijlig;\":\"ij\",\"Im;\":\"ℑ\",\"Imacr;\":\"Ī\",\"imacr;\":\"ī\",\"image;\":\"ℑ\",\"ImaginaryI;\":\"ⅈ\",\"imagline;\":\"ℐ\",\"imagpart;\":\"ℑ\",\"imath;\":\"ı\",\"imof;\":\"⊷\",\"imped;\":\"Ƶ\",\"Implies;\":\"⇒\",\"in;\":\"∈\",\"incare;\":\"℅\",\"infin;\":\"∞\",\"infintie;\":\"⧝\",\"inodot;\":\"ı\",\"Int;\":\"∬\",\"int;\":\"∫\",\"intcal;\":\"⊺\",\"integers;\":\"ℤ\",\"Integral;\":\"∫\",\"intercal;\":\"⊺\",\"Intersection;\":\"⋂\",\"intlarhk;\":\"⨗\",\"intprod;\":\"⨼\",\"InvisibleComma;\":\"⁣\",\"InvisibleTimes;\":\"⁢\",\"IOcy;\":\"Ё\",\"iocy;\":\"ё\",\"Iogon;\":\"Į\",\"iogon;\":\"į\",\"Iopf;\":\"𝕀\",\"iopf;\":\"𝕚\",\"Iota;\":\"Ι\",\"iota;\":\"ι\",\"iprod;\":\"⨼\",\"iquest;\":\"¿\",\"iquest\":\"¿\",\"Iscr;\":\"ℐ\",\"iscr;\":\"𝒾\",\"isin;\":\"∈\",\"isindot;\":\"⋵\",\"isinE;\":\"⋹\",\"isins;\":\"⋴\",\"isinsv;\":\"⋳\",\"isinv;\":\"∈\",\"it;\":\"⁢\",\"Itilde;\":\"Ĩ\",\"itilde;\":\"ĩ\",\"Iukcy;\":\"І\",\"iukcy;\":\"і\",\"Iuml;\":\"Ï\",\"Iuml\":\"Ï\",\"iuml;\":\"ï\",\"iuml\":\"ï\",\"Jcirc;\":\"Ĵ\",\"jcirc;\":\"ĵ\",\"Jcy;\":\"Й\",\"jcy;\":\"й\",\"Jfr;\":\"𝔍\",\"jfr;\":\"𝔧\",\"jmath;\":\"ȷ\",\"Jopf;\":\"𝕁\",\"jopf;\":\"𝕛\",\"Jscr;\":\"𝒥\",\"jscr;\":\"𝒿\",\"Jsercy;\":\"Ј\",\"jsercy;\":\"ј\",\"Jukcy;\":\"Є\",\"jukcy;\":\"є\",\"Kappa;\":\"Κ\",\"kappa;\":\"κ\",\"kappav;\":\"ϰ\",\"Kcedil;\":\"Ķ\",\"kcedil;\":\"ķ\",\"Kcy;\":\"К\",\"kcy;\":\"к\",\"Kfr;\":\"𝔎\",\"kfr;\":\"𝔨\",\"kgreen;\":\"ĸ\",\"KHcy;\":\"Х\",\"khcy;\":\"х\",\"KJcy;\":\"Ќ\",\"kjcy;\":\"ќ\",\"Kopf;\":\"𝕂\",\"kopf;\":\"𝕜\",\"Kscr;\":\"𝒦\",\"kscr;\":\"𝓀\",\"lAarr;\":\"⇚\",\"Lacute;\":\"Ĺ\",\"lacute;\":\"ĺ\",\"laemptyv;\":\"⦴\",\"lagran;\":\"ℒ\",\"Lambda;\":\"Λ\",\"lambda;\":\"λ\",\"Lang;\":\"⟪\",\"lang;\":\"⟨\",\"langd;\":\"⦑\",\"langle;\":\"⟨\",\"lap;\":\"⪅\",\"Laplacetrf;\":\"ℒ\",\"laquo;\":\"«\",\"laquo\":\"«\",\"Larr;\":\"↞\",\"lArr;\":\"⇐\",\"larr;\":\"←\",\"larrb;\":\"⇤\",\"larrbfs;\":\"⤟\",\"larrfs;\":\"⤝\",\"larrhk;\":\"↩\",\"larrlp;\":\"↫\",\"larrpl;\":\"⤹\",\"larrsim;\":\"⥳\",\"larrtl;\":\"↢\",\"lat;\":\"⪫\",\"lAtail;\":\"⤛\",\"latail;\":\"⤙\",\"late;\":\"⪭\",\"lates;\":\"⪭︀\",\"lBarr;\":\"⤎\",\"lbarr;\":\"⤌\",\"lbbrk;\":\"❲\",\"lbrace;\":\"{\",\"lbrack;\":\"[\",\"lbrke;\":\"⦋\",\"lbrksld;\":\"⦏\",\"lbrkslu;\":\"⦍\",\"Lcaron;\":\"Ľ\",\"lcaron;\":\"ľ\",\"Lcedil;\":\"Ļ\",\"lcedil;\":\"ļ\",\"lceil;\":\"⌈\",\"lcub;\":\"{\",\"Lcy;\":\"Л\",\"lcy;\":\"л\",\"ldca;\":\"⤶\",\"ldquo;\":\"“\",\"ldquor;\":\"„\",\"ldrdhar;\":\"⥧\",\"ldrushar;\":\"⥋\",\"ldsh;\":\"↲\",\"lE;\":\"≦\",\"le;\":\"≤\",\"LeftAngleBracket;\":\"⟨\",\"LeftArrow;\":\"←\",\"Leftarrow;\":\"⇐\",\"leftarrow;\":\"←\",\"LeftArrowBar;\":\"⇤\",\"LeftArrowRightArrow;\":\"⇆\",\"leftarrowtail;\":\"↢\",\"LeftCeiling;\":\"⌈\",\"LeftDoubleBracket;\":\"⟦\",\"LeftDownTeeVector;\":\"⥡\",\"LeftDownVector;\":\"⇃\",\"LeftDownVectorBar;\":\"⥙\",\"LeftFloor;\":\"⌊\",\"leftharpoondown;\":\"↽\",\"leftharpoonup;\":\"↼\",\"leftleftarrows;\":\"⇇\",\"LeftRightArrow;\":\"↔\",\"Leftrightarrow;\":\"⇔\",\"leftrightarrow;\":\"↔\",\"leftrightarrows;\":\"⇆\",\"leftrightharpoons;\":\"⇋\",\"leftrightsquigarrow;\":\"↭\",\"LeftRightVector;\":\"⥎\",\"LeftTee;\":\"⊣\",\"LeftTeeArrow;\":\"↤\",\"LeftTeeVector;\":\"⥚\",\"leftthreetimes;\":\"⋋\",\"LeftTriangle;\":\"⊲\",\"LeftTriangleBar;\":\"⧏\",\"LeftTriangleEqual;\":\"⊴\",\"LeftUpDownVector;\":\"⥑\",\"LeftUpTeeVector;\":\"⥠\",\"LeftUpVector;\":\"↿\",\"LeftUpVectorBar;\":\"⥘\",\"LeftVector;\":\"↼\",\"LeftVectorBar;\":\"⥒\",\"lEg;\":\"⪋\",\"leg;\":\"⋚\",\"leq;\":\"≤\",\"leqq;\":\"≦\",\"leqslant;\":\"⩽\",\"les;\":\"⩽\",\"lescc;\":\"⪨\",\"lesdot;\":\"⩿\",\"lesdoto;\":\"⪁\",\"lesdotor;\":\"⪃\",\"lesg;\":\"⋚︀\",\"lesges;\":\"⪓\",\"lessapprox;\":\"⪅\",\"lessdot;\":\"⋖\",\"lesseqgtr;\":\"⋚\",\"lesseqqgtr;\":\"⪋\",\"LessEqualGreater;\":\"⋚\",\"LessFullEqual;\":\"≦\",\"LessGreater;\":\"≶\",\"lessgtr;\":\"≶\",\"LessLess;\":\"⪡\",\"lesssim;\":\"≲\",\"LessSlantEqual;\":\"⩽\",\"LessTilde;\":\"≲\",\"lfisht;\":\"⥼\",\"lfloor;\":\"⌊\",\"Lfr;\":\"𝔏\",\"lfr;\":\"𝔩\",\"lg;\":\"≶\",\"lgE;\":\"⪑\",\"lHar;\":\"⥢\",\"lhard;\":\"↽\",\"lharu;\":\"↼\",\"lharul;\":\"⥪\",\"lhblk;\":\"▄\",\"LJcy;\":\"Љ\",\"ljcy;\":\"љ\",\"Ll;\":\"⋘\",\"ll;\":\"≪\",\"llarr;\":\"⇇\",\"llcorner;\":\"⌞\",\"Lleftarrow;\":\"⇚\",\"llhard;\":\"⥫\",\"lltri;\":\"◺\",\"Lmidot;\":\"Ŀ\",\"lmidot;\":\"ŀ\",\"lmoust;\":\"⎰\",\"lmoustache;\":\"⎰\",\"lnap;\":\"⪉\",\"lnapprox;\":\"⪉\",\"lnE;\":\"≨\",\"lne;\":\"⪇\",\"lneq;\":\"⪇\",\"lneqq;\":\"≨\",\"lnsim;\":\"⋦\",\"loang;\":\"⟬\",\"loarr;\":\"⇽\",\"lobrk;\":\"⟦\",\"LongLeftArrow;\":\"⟵\",\"Longleftarrow;\":\"⟸\",\"longleftarrow;\":\"⟵\",\"LongLeftRightArrow;\":\"⟷\",\"Longleftrightarrow;\":\"⟺\",\"longleftrightarrow;\":\"⟷\",\"longmapsto;\":\"⟼\",\"LongRightArrow;\":\"⟶\",\"Longrightarrow;\":\"⟹\",\"longrightarrow;\":\"⟶\",\"looparrowleft;\":\"↫\",\"looparrowright;\":\"↬\",\"lopar;\":\"⦅\",\"Lopf;\":\"𝕃\",\"lopf;\":\"𝕝\",\"loplus;\":\"⨭\",\"lotimes;\":\"⨴\",\"lowast;\":\"∗\",\"lowbar;\":\"_\",\"LowerLeftArrow;\":\"↙\",\"LowerRightArrow;\":\"↘\",\"loz;\":\"◊\",\"lozenge;\":\"◊\",\"lozf;\":\"⧫\",\"lpar;\":\"(\",\"lparlt;\":\"⦓\",\"lrarr;\":\"⇆\",\"lrcorner;\":\"⌟\",\"lrhar;\":\"⇋\",\"lrhard;\":\"⥭\",\"lrm;\":\"‎\",\"lrtri;\":\"⊿\",\"lsaquo;\":\"‹\",\"Lscr;\":\"ℒ\",\"lscr;\":\"𝓁\",\"Lsh;\":\"↰\",\"lsh;\":\"↰\",\"lsim;\":\"≲\",\"lsime;\":\"⪍\",\"lsimg;\":\"⪏\",\"lsqb;\":\"[\",\"lsquo;\":\"‘\",\"lsquor;\":\"‚\",\"Lstrok;\":\"Ł\",\"lstrok;\":\"ł\",\"LT;\":\"<\",\"LT\":\"<\",\"Lt;\":\"≪\",\"lt;\":\"<\",\"lt\":\"<\",\"ltcc;\":\"⪦\",\"ltcir;\":\"⩹\",\"ltdot;\":\"⋖\",\"lthree;\":\"⋋\",\"ltimes;\":\"⋉\",\"ltlarr;\":\"⥶\",\"ltquest;\":\"⩻\",\"ltri;\":\"◃\",\"ltrie;\":\"⊴\",\"ltrif;\":\"◂\",\"ltrPar;\":\"⦖\",\"lurdshar;\":\"⥊\",\"luruhar;\":\"⥦\",\"lvertneqq;\":\"≨︀\",\"lvnE;\":\"≨︀\",\"macr;\":\"¯\",\"macr\":\"¯\",\"male;\":\"♂\",\"malt;\":\"✠\",\"maltese;\":\"✠\",\"Map;\":\"⤅\",\"map;\":\"↦\",\"mapsto;\":\"↦\",\"mapstodown;\":\"↧\",\"mapstoleft;\":\"↤\",\"mapstoup;\":\"↥\",\"marker;\":\"▮\",\"mcomma;\":\"⨩\",\"Mcy;\":\"М\",\"mcy;\":\"м\",\"mdash;\":\"—\",\"mDDot;\":\"∺\",\"measuredangle;\":\"∡\",\"MediumSpace;\":\" \",\"Mellintrf;\":\"ℳ\",\"Mfr;\":\"𝔐\",\"mfr;\":\"𝔪\",\"mho;\":\"℧\",\"micro;\":\"µ\",\"micro\":\"µ\",\"mid;\":\"∣\",\"midast;\":\"*\",\"midcir;\":\"⫰\",\"middot;\":\"·\",\"middot\":\"·\",\"minus;\":\"−\",\"minusb;\":\"⊟\",\"minusd;\":\"∸\",\"minusdu;\":\"⨪\",\"MinusPlus;\":\"∓\",\"mlcp;\":\"⫛\",\"mldr;\":\"…\",\"mnplus;\":\"∓\",\"models;\":\"⊧\",\"Mopf;\":\"𝕄\",\"mopf;\":\"𝕞\",\"mp;\":\"∓\",\"Mscr;\":\"ℳ\",\"mscr;\":\"𝓂\",\"mstpos;\":\"∾\",\"Mu;\":\"Μ\",\"mu;\":\"μ\",\"multimap;\":\"⊸\",\"mumap;\":\"⊸\",\"nabla;\":\"∇\",\"Nacute;\":\"Ń\",\"nacute;\":\"ń\",\"nang;\":\"∠⃒\",\"nap;\":\"≉\",\"napE;\":\"⩰̸\",\"napid;\":\"≋̸\",\"napos;\":\"ʼn\",\"napprox;\":\"≉\",\"natur;\":\"♮\",\"natural;\":\"♮\",\"naturals;\":\"ℕ\",\"nbsp;\":\" \",\"nbsp\":\" \",\"nbump;\":\"≎̸\",\"nbumpe;\":\"≏̸\",\"ncap;\":\"⩃\",\"Ncaron;\":\"Ň\",\"ncaron;\":\"ň\",\"Ncedil;\":\"Ņ\",\"ncedil;\":\"ņ\",\"ncong;\":\"≇\",\"ncongdot;\":\"⩭̸\",\"ncup;\":\"⩂\",\"Ncy;\":\"Н\",\"ncy;\":\"н\",\"ndash;\":\"–\",\"ne;\":\"≠\",\"nearhk;\":\"⤤\",\"neArr;\":\"⇗\",\"nearr;\":\"↗\",\"nearrow;\":\"↗\",\"nedot;\":\"≐̸\",\"NegativeMediumSpace;\":\"​\",\"NegativeThickSpace;\":\"​\",\"NegativeThinSpace;\":\"​\",\"NegativeVeryThinSpace;\":\"​\",\"nequiv;\":\"≢\",\"nesear;\":\"⤨\",\"nesim;\":\"≂̸\",\"NestedGreaterGreater;\":\"≫\",\"NestedLessLess;\":\"≪\",\"NewLine;\":\"\\n\",\"nexist;\":\"∄\",\"nexists;\":\"∄\",\"Nfr;\":\"𝔑\",\"nfr;\":\"𝔫\",\"ngE;\":\"≧̸\",\"nge;\":\"≱\",\"ngeq;\":\"≱\",\"ngeqq;\":\"≧̸\",\"ngeqslant;\":\"⩾̸\",\"nges;\":\"⩾̸\",\"nGg;\":\"⋙̸\",\"ngsim;\":\"≵\",\"nGt;\":\"≫⃒\",\"ngt;\":\"≯\",\"ngtr;\":\"≯\",\"nGtv;\":\"≫̸\",\"nhArr;\":\"⇎\",\"nharr;\":\"↮\",\"nhpar;\":\"⫲\",\"ni;\":\"∋\",\"nis;\":\"⋼\",\"nisd;\":\"⋺\",\"niv;\":\"∋\",\"NJcy;\":\"Њ\",\"njcy;\":\"њ\",\"nlArr;\":\"⇍\",\"nlarr;\":\"↚\",\"nldr;\":\"‥\",\"nlE;\":\"≦̸\",\"nle;\":\"≰\",\"nLeftarrow;\":\"⇍\",\"nleftarrow;\":\"↚\",\"nLeftrightarrow;\":\"⇎\",\"nleftrightarrow;\":\"↮\",\"nleq;\":\"≰\",\"nleqq;\":\"≦̸\",\"nleqslant;\":\"⩽̸\",\"nles;\":\"⩽̸\",\"nless;\":\"≮\",\"nLl;\":\"⋘̸\",\"nlsim;\":\"≴\",\"nLt;\":\"≪⃒\",\"nlt;\":\"≮\",\"nltri;\":\"⋪\",\"nltrie;\":\"⋬\",\"nLtv;\":\"≪̸\",\"nmid;\":\"∤\",\"NoBreak;\":\"⁠\",\"NonBreakingSpace;\":\" \",\"Nopf;\":\"ℕ\",\"nopf;\":\"𝕟\",\"Not;\":\"⫬\",\"not;\":\"¬\",\"not\":\"¬\",\"NotCongruent;\":\"≢\",\"NotCupCap;\":\"≭\",\"NotDoubleVerticalBar;\":\"∦\",\"NotElement;\":\"∉\",\"NotEqual;\":\"≠\",\"NotEqualTilde;\":\"≂̸\",\"NotExists;\":\"∄\",\"NotGreater;\":\"≯\",\"NotGreaterEqual;\":\"≱\",\"NotGreaterFullEqual;\":\"≧̸\",\"NotGreaterGreater;\":\"≫̸\",\"NotGreaterLess;\":\"≹\",\"NotGreaterSlantEqual;\":\"⩾̸\",\"NotGreaterTilde;\":\"≵\",\"NotHumpDownHump;\":\"≎̸\",\"NotHumpEqual;\":\"≏̸\",\"notin;\":\"∉\",\"notindot;\":\"⋵̸\",\"notinE;\":\"⋹̸\",\"notinva;\":\"∉\",\"notinvb;\":\"⋷\",\"notinvc;\":\"⋶\",\"NotLeftTriangle;\":\"⋪\",\"NotLeftTriangleBar;\":\"⧏̸\",\"NotLeftTriangleEqual;\":\"⋬\",\"NotLess;\":\"≮\",\"NotLessEqual;\":\"≰\",\"NotLessGreater;\":\"≸\",\"NotLessLess;\":\"≪̸\",\"NotLessSlantEqual;\":\"⩽̸\",\"NotLessTilde;\":\"≴\",\"NotNestedGreaterGreater;\":\"⪢̸\",\"NotNestedLessLess;\":\"⪡̸\",\"notni;\":\"∌\",\"notniva;\":\"∌\",\"notnivb;\":\"⋾\",\"notnivc;\":\"⋽\",\"NotPrecedes;\":\"⊀\",\"NotPrecedesEqual;\":\"⪯̸\",\"NotPrecedesSlantEqual;\":\"⋠\",\"NotReverseElement;\":\"∌\",\"NotRightTriangle;\":\"⋫\",\"NotRightTriangleBar;\":\"⧐̸\",\"NotRightTriangleEqual;\":\"⋭\",\"NotSquareSubset;\":\"⊏̸\",\"NotSquareSubsetEqual;\":\"⋢\",\"NotSquareSuperset;\":\"⊐̸\",\"NotSquareSupersetEqual;\":\"⋣\",\"NotSubset;\":\"⊂⃒\",\"NotSubsetEqual;\":\"⊈\",\"NotSucceeds;\":\"⊁\",\"NotSucceedsEqual;\":\"⪰̸\",\"NotSucceedsSlantEqual;\":\"⋡\",\"NotSucceedsTilde;\":\"≿̸\",\"NotSuperset;\":\"⊃⃒\",\"NotSupersetEqual;\":\"⊉\",\"NotTilde;\":\"≁\",\"NotTildeEqual;\":\"≄\",\"NotTildeFullEqual;\":\"≇\",\"NotTildeTilde;\":\"≉\",\"NotVerticalBar;\":\"∤\",\"npar;\":\"∦\",\"nparallel;\":\"∦\",\"nparsl;\":\"⫽⃥\",\"npart;\":\"∂̸\",\"npolint;\":\"⨔\",\"npr;\":\"⊀\",\"nprcue;\":\"⋠\",\"npre;\":\"⪯̸\",\"nprec;\":\"⊀\",\"npreceq;\":\"⪯̸\",\"nrArr;\":\"⇏\",\"nrarr;\":\"↛\",\"nrarrc;\":\"⤳̸\",\"nrarrw;\":\"↝̸\",\"nRightarrow;\":\"⇏\",\"nrightarrow;\":\"↛\",\"nrtri;\":\"⋫\",\"nrtrie;\":\"⋭\",\"nsc;\":\"⊁\",\"nsccue;\":\"⋡\",\"nsce;\":\"⪰̸\",\"Nscr;\":\"𝒩\",\"nscr;\":\"𝓃\",\"nshortmid;\":\"∤\",\"nshortparallel;\":\"∦\",\"nsim;\":\"≁\",\"nsime;\":\"≄\",\"nsimeq;\":\"≄\",\"nsmid;\":\"∤\",\"nspar;\":\"∦\",\"nsqsube;\":\"⋢\",\"nsqsupe;\":\"⋣\",\"nsub;\":\"⊄\",\"nsubE;\":\"⫅̸\",\"nsube;\":\"⊈\",\"nsubset;\":\"⊂⃒\",\"nsubseteq;\":\"⊈\",\"nsubseteqq;\":\"⫅̸\",\"nsucc;\":\"⊁\",\"nsucceq;\":\"⪰̸\",\"nsup;\":\"⊅\",\"nsupE;\":\"⫆̸\",\"nsupe;\":\"⊉\",\"nsupset;\":\"⊃⃒\",\"nsupseteq;\":\"⊉\",\"nsupseteqq;\":\"⫆̸\",\"ntgl;\":\"≹\",\"Ntilde;\":\"Ñ\",\"Ntilde\":\"Ñ\",\"ntilde;\":\"ñ\",\"ntilde\":\"ñ\",\"ntlg;\":\"≸\",\"ntriangleleft;\":\"⋪\",\"ntrianglelefteq;\":\"⋬\",\"ntriangleright;\":\"⋫\",\"ntrianglerighteq;\":\"⋭\",\"Nu;\":\"Ν\",\"nu;\":\"ν\",\"num;\":\"#\",\"numero;\":\"№\",\"numsp;\":\" \",\"nvap;\":\"≍⃒\",\"nVDash;\":\"⊯\",\"nVdash;\":\"⊮\",\"nvDash;\":\"⊭\",\"nvdash;\":\"⊬\",\"nvge;\":\"≥⃒\",\"nvgt;\":\">⃒\",\"nvHarr;\":\"⤄\",\"nvinfin;\":\"⧞\",\"nvlArr;\":\"⤂\",\"nvle;\":\"≤⃒\",\"nvlt;\":\"<⃒\",\"nvltrie;\":\"⊴⃒\",\"nvrArr;\":\"⤃\",\"nvrtrie;\":\"⊵⃒\",\"nvsim;\":\"∼⃒\",\"nwarhk;\":\"⤣\",\"nwArr;\":\"⇖\",\"nwarr;\":\"↖\",\"nwarrow;\":\"↖\",\"nwnear;\":\"⤧\",\"Oacute;\":\"Ó\",\"Oacute\":\"Ó\",\"oacute;\":\"ó\",\"oacute\":\"ó\",\"oast;\":\"⊛\",\"ocir;\":\"⊚\",\"Ocirc;\":\"Ô\",\"Ocirc\":\"Ô\",\"ocirc;\":\"ô\",\"ocirc\":\"ô\",\"Ocy;\":\"О\",\"ocy;\":\"о\",\"odash;\":\"⊝\",\"Odblac;\":\"Ő\",\"odblac;\":\"ő\",\"odiv;\":\"⨸\",\"odot;\":\"⊙\",\"odsold;\":\"⦼\",\"OElig;\":\"Œ\",\"oelig;\":\"œ\",\"ofcir;\":\"⦿\",\"Ofr;\":\"𝔒\",\"ofr;\":\"𝔬\",\"ogon;\":\"˛\",\"Ograve;\":\"Ò\",\"Ograve\":\"Ò\",\"ograve;\":\"ò\",\"ograve\":\"ò\",\"ogt;\":\"⧁\",\"ohbar;\":\"⦵\",\"ohm;\":\"Ω\",\"oint;\":\"∮\",\"olarr;\":\"↺\",\"olcir;\":\"⦾\",\"olcross;\":\"⦻\",\"oline;\":\"‾\",\"olt;\":\"⧀\",\"Omacr;\":\"Ō\",\"omacr;\":\"ō\",\"Omega;\":\"Ω\",\"omega;\":\"ω\",\"Omicron;\":\"Ο\",\"omicron;\":\"ο\",\"omid;\":\"⦶\",\"ominus;\":\"⊖\",\"Oopf;\":\"𝕆\",\"oopf;\":\"𝕠\",\"opar;\":\"⦷\",\"OpenCurlyDoubleQuote;\":\"“\",\"OpenCurlyQuote;\":\"‘\",\"operp;\":\"⦹\",\"oplus;\":\"⊕\",\"Or;\":\"⩔\",\"or;\":\"∨\",\"orarr;\":\"↻\",\"ord;\":\"⩝\",\"order;\":\"ℴ\",\"orderof;\":\"ℴ\",\"ordf;\":\"ª\",\"ordf\":\"ª\",\"ordm;\":\"º\",\"ordm\":\"º\",\"origof;\":\"⊶\",\"oror;\":\"⩖\",\"orslope;\":\"⩗\",\"orv;\":\"⩛\",\"oS;\":\"Ⓢ\",\"Oscr;\":\"𝒪\",\"oscr;\":\"ℴ\",\"Oslash;\":\"Ø\",\"Oslash\":\"Ø\",\"oslash;\":\"ø\",\"oslash\":\"ø\",\"osol;\":\"⊘\",\"Otilde;\":\"Õ\",\"Otilde\":\"Õ\",\"otilde;\":\"õ\",\"otilde\":\"õ\",\"Otimes;\":\"⨷\",\"otimes;\":\"⊗\",\"otimesas;\":\"⨶\",\"Ouml;\":\"Ö\",\"Ouml\":\"Ö\",\"ouml;\":\"ö\",\"ouml\":\"ö\",\"ovbar;\":\"⌽\",\"OverBar;\":\"‾\",\"OverBrace;\":\"⏞\",\"OverBracket;\":\"⎴\",\"OverParenthesis;\":\"⏜\",\"par;\":\"∥\",\"para;\":\"¶\",\"para\":\"¶\",\"parallel;\":\"∥\",\"parsim;\":\"⫳\",\"parsl;\":\"⫽\",\"part;\":\"∂\",\"PartialD;\":\"∂\",\"Pcy;\":\"П\",\"pcy;\":\"п\",\"percnt;\":\"%\",\"period;\":\".\",\"permil;\":\"‰\",\"perp;\":\"⊥\",\"pertenk;\":\"‱\",\"Pfr;\":\"𝔓\",\"pfr;\":\"𝔭\",\"Phi;\":\"Φ\",\"phi;\":\"φ\",\"phiv;\":\"ϕ\",\"phmmat;\":\"ℳ\",\"phone;\":\"☎\",\"Pi;\":\"Π\",\"pi;\":\"π\",\"pitchfork;\":\"⋔\",\"piv;\":\"ϖ\",\"planck;\":\"ℏ\",\"planckh;\":\"ℎ\",\"plankv;\":\"ℏ\",\"plus;\":\"+\",\"plusacir;\":\"⨣\",\"plusb;\":\"⊞\",\"pluscir;\":\"⨢\",\"plusdo;\":\"∔\",\"plusdu;\":\"⨥\",\"pluse;\":\"⩲\",\"PlusMinus;\":\"±\",\"plusmn;\":\"±\",\"plusmn\":\"±\",\"plussim;\":\"⨦\",\"plustwo;\":\"⨧\",\"pm;\":\"±\",\"Poincareplane;\":\"ℌ\",\"pointint;\":\"⨕\",\"Popf;\":\"ℙ\",\"popf;\":\"𝕡\",\"pound;\":\"£\",\"pound\":\"£\",\"Pr;\":\"⪻\",\"pr;\":\"≺\",\"prap;\":\"⪷\",\"prcue;\":\"≼\",\"prE;\":\"⪳\",\"pre;\":\"⪯\",\"prec;\":\"≺\",\"precapprox;\":\"⪷\",\"preccurlyeq;\":\"≼\",\"Precedes;\":\"≺\",\"PrecedesEqual;\":\"⪯\",\"PrecedesSlantEqual;\":\"≼\",\"PrecedesTilde;\":\"≾\",\"preceq;\":\"⪯\",\"precnapprox;\":\"⪹\",\"precneqq;\":\"⪵\",\"precnsim;\":\"⋨\",\"precsim;\":\"≾\",\"Prime;\":\"″\",\"prime;\":\"′\",\"primes;\":\"ℙ\",\"prnap;\":\"⪹\",\"prnE;\":\"⪵\",\"prnsim;\":\"⋨\",\"prod;\":\"∏\",\"Product;\":\"∏\",\"profalar;\":\"⌮\",\"profline;\":\"⌒\",\"profsurf;\":\"⌓\",\"prop;\":\"∝\",\"Proportion;\":\"∷\",\"Proportional;\":\"∝\",\"propto;\":\"∝\",\"prsim;\":\"≾\",\"prurel;\":\"⊰\",\"Pscr;\":\"𝒫\",\"pscr;\":\"𝓅\",\"Psi;\":\"Ψ\",\"psi;\":\"ψ\",\"puncsp;\":\" \",\"Qfr;\":\"𝔔\",\"qfr;\":\"𝔮\",\"qint;\":\"⨌\",\"Qopf;\":\"ℚ\",\"qopf;\":\"𝕢\",\"qprime;\":\"⁗\",\"Qscr;\":\"𝒬\",\"qscr;\":\"𝓆\",\"quaternions;\":\"ℍ\",\"quatint;\":\"⨖\",\"quest;\":\"?\",\"questeq;\":\"≟\",\"QUOT;\":\"\\\"\",\"QUOT\":\"\\\"\",\"quot;\":\"\\\"\",\"quot\":\"\\\"\",\"rAarr;\":\"⇛\",\"race;\":\"∽̱\",\"Racute;\":\"Ŕ\",\"racute;\":\"ŕ\",\"radic;\":\"√\",\"raemptyv;\":\"⦳\",\"Rang;\":\"⟫\",\"rang;\":\"⟩\",\"rangd;\":\"⦒\",\"range;\":\"⦥\",\"rangle;\":\"⟩\",\"raquo;\":\"»\",\"raquo\":\"»\",\"Rarr;\":\"↠\",\"rArr;\":\"⇒\",\"rarr;\":\"→\",\"rarrap;\":\"⥵\",\"rarrb;\":\"⇥\",\"rarrbfs;\":\"⤠\",\"rarrc;\":\"⤳\",\"rarrfs;\":\"⤞\",\"rarrhk;\":\"↪\",\"rarrlp;\":\"↬\",\"rarrpl;\":\"⥅\",\"rarrsim;\":\"⥴\",\"Rarrtl;\":\"⤖\",\"rarrtl;\":\"↣\",\"rarrw;\":\"↝\",\"rAtail;\":\"⤜\",\"ratail;\":\"⤚\",\"ratio;\":\"∶\",\"rationals;\":\"ℚ\",\"RBarr;\":\"⤐\",\"rBarr;\":\"⤏\",\"rbarr;\":\"⤍\",\"rbbrk;\":\"❳\",\"rbrace;\":\"}\",\"rbrack;\":\"]\",\"rbrke;\":\"⦌\",\"rbrksld;\":\"⦎\",\"rbrkslu;\":\"⦐\",\"Rcaron;\":\"Ř\",\"rcaron;\":\"ř\",\"Rcedil;\":\"Ŗ\",\"rcedil;\":\"ŗ\",\"rceil;\":\"⌉\",\"rcub;\":\"}\",\"Rcy;\":\"Р\",\"rcy;\":\"р\",\"rdca;\":\"⤷\",\"rdldhar;\":\"⥩\",\"rdquo;\":\"”\",\"rdquor;\":\"”\",\"rdsh;\":\"↳\",\"Re;\":\"ℜ\",\"real;\":\"ℜ\",\"realine;\":\"ℛ\",\"realpart;\":\"ℜ\",\"reals;\":\"ℝ\",\"rect;\":\"▭\",\"REG;\":\"®\",\"REG\":\"®\",\"reg;\":\"®\",\"reg\":\"®\",\"ReverseElement;\":\"∋\",\"ReverseEquilibrium;\":\"⇋\",\"ReverseUpEquilibrium;\":\"⥯\",\"rfisht;\":\"⥽\",\"rfloor;\":\"⌋\",\"Rfr;\":\"ℜ\",\"rfr;\":\"𝔯\",\"rHar;\":\"⥤\",\"rhard;\":\"⇁\",\"rharu;\":\"⇀\",\"rharul;\":\"⥬\",\"Rho;\":\"Ρ\",\"rho;\":\"ρ\",\"rhov;\":\"ϱ\",\"RightAngleBracket;\":\"⟩\",\"RightArrow;\":\"→\",\"Rightarrow;\":\"⇒\",\"rightarrow;\":\"→\",\"RightArrowBar;\":\"⇥\",\"RightArrowLeftArrow;\":\"⇄\",\"rightarrowtail;\":\"↣\",\"RightCeiling;\":\"⌉\",\"RightDoubleBracket;\":\"⟧\",\"RightDownTeeVector;\":\"⥝\",\"RightDownVector;\":\"⇂\",\"RightDownVectorBar;\":\"⥕\",\"RightFloor;\":\"⌋\",\"rightharpoondown;\":\"⇁\",\"rightharpoonup;\":\"⇀\",\"rightleftarrows;\":\"⇄\",\"rightleftharpoons;\":\"⇌\",\"rightrightarrows;\":\"⇉\",\"rightsquigarrow;\":\"↝\",\"RightTee;\":\"⊢\",\"RightTeeArrow;\":\"↦\",\"RightTeeVector;\":\"⥛\",\"rightthreetimes;\":\"⋌\",\"RightTriangle;\":\"⊳\",\"RightTriangleBar;\":\"⧐\",\"RightTriangleEqual;\":\"⊵\",\"RightUpDownVector;\":\"⥏\",\"RightUpTeeVector;\":\"⥜\",\"RightUpVector;\":\"↾\",\"RightUpVectorBar;\":\"⥔\",\"RightVector;\":\"⇀\",\"RightVectorBar;\":\"⥓\",\"ring;\":\"˚\",\"risingdotseq;\":\"≓\",\"rlarr;\":\"⇄\",\"rlhar;\":\"⇌\",\"rlm;\":\"‏\",\"rmoust;\":\"⎱\",\"rmoustache;\":\"⎱\",\"rnmid;\":\"⫮\",\"roang;\":\"⟭\",\"roarr;\":\"⇾\",\"robrk;\":\"⟧\",\"ropar;\":\"⦆\",\"Ropf;\":\"ℝ\",\"ropf;\":\"𝕣\",\"roplus;\":\"⨮\",\"rotimes;\":\"⨵\",\"RoundImplies;\":\"⥰\",\"rpar;\":\")\",\"rpargt;\":\"⦔\",\"rppolint;\":\"⨒\",\"rrarr;\":\"⇉\",\"Rrightarrow;\":\"⇛\",\"rsaquo;\":\"›\",\"Rscr;\":\"ℛ\",\"rscr;\":\"𝓇\",\"Rsh;\":\"↱\",\"rsh;\":\"↱\",\"rsqb;\":\"]\",\"rsquo;\":\"’\",\"rsquor;\":\"’\",\"rthree;\":\"⋌\",\"rtimes;\":\"⋊\",\"rtri;\":\"▹\",\"rtrie;\":\"⊵\",\"rtrif;\":\"▸\",\"rtriltri;\":\"⧎\",\"RuleDelayed;\":\"⧴\",\"ruluhar;\":\"⥨\",\"rx;\":\"℞\",\"Sacute;\":\"Ś\",\"sacute;\":\"ś\",\"sbquo;\":\"‚\",\"Sc;\":\"⪼\",\"sc;\":\"≻\",\"scap;\":\"⪸\",\"Scaron;\":\"Š\",\"scaron;\":\"š\",\"sccue;\":\"≽\",\"scE;\":\"⪴\",\"sce;\":\"⪰\",\"Scedil;\":\"Ş\",\"scedil;\":\"ş\",\"Scirc;\":\"Ŝ\",\"scirc;\":\"ŝ\",\"scnap;\":\"⪺\",\"scnE;\":\"⪶\",\"scnsim;\":\"⋩\",\"scpolint;\":\"⨓\",\"scsim;\":\"≿\",\"Scy;\":\"С\",\"scy;\":\"с\",\"sdot;\":\"⋅\",\"sdotb;\":\"⊡\",\"sdote;\":\"⩦\",\"searhk;\":\"⤥\",\"seArr;\":\"⇘\",\"searr;\":\"↘\",\"searrow;\":\"↘\",\"sect;\":\"§\",\"sect\":\"§\",\"semi;\":\";\",\"seswar;\":\"⤩\",\"setminus;\":\"∖\",\"setmn;\":\"∖\",\"sext;\":\"✶\",\"Sfr;\":\"𝔖\",\"sfr;\":\"𝔰\",\"sfrown;\":\"⌢\",\"sharp;\":\"♯\",\"SHCHcy;\":\"Щ\",\"shchcy;\":\"щ\",\"SHcy;\":\"Ш\",\"shcy;\":\"ш\",\"ShortDownArrow;\":\"↓\",\"ShortLeftArrow;\":\"←\",\"shortmid;\":\"∣\",\"shortparallel;\":\"∥\",\"ShortRightArrow;\":\"→\",\"ShortUpArrow;\":\"↑\",\"shy;\":\"­\",\"shy\":\"­\",\"Sigma;\":\"Σ\",\"sigma;\":\"σ\",\"sigmaf;\":\"ς\",\"sigmav;\":\"ς\",\"sim;\":\"∼\",\"simdot;\":\"⩪\",\"sime;\":\"≃\",\"simeq;\":\"≃\",\"simg;\":\"⪞\",\"simgE;\":\"⪠\",\"siml;\":\"⪝\",\"simlE;\":\"⪟\",\"simne;\":\"≆\",\"simplus;\":\"⨤\",\"simrarr;\":\"⥲\",\"slarr;\":\"←\",\"SmallCircle;\":\"∘\",\"smallsetminus;\":\"∖\",\"smashp;\":\"⨳\",\"smeparsl;\":\"⧤\",\"smid;\":\"∣\",\"smile;\":\"⌣\",\"smt;\":\"⪪\",\"smte;\":\"⪬\",\"smtes;\":\"⪬︀\",\"SOFTcy;\":\"Ь\",\"softcy;\":\"ь\",\"sol;\":\"/\",\"solb;\":\"⧄\",\"solbar;\":\"⌿\",\"Sopf;\":\"𝕊\",\"sopf;\":\"𝕤\",\"spades;\":\"♠\",\"spadesuit;\":\"♠\",\"spar;\":\"∥\",\"sqcap;\":\"⊓\",\"sqcaps;\":\"⊓︀\",\"sqcup;\":\"⊔\",\"sqcups;\":\"⊔︀\",\"Sqrt;\":\"√\",\"sqsub;\":\"⊏\",\"sqsube;\":\"⊑\",\"sqsubset;\":\"⊏\",\"sqsubseteq;\":\"⊑\",\"sqsup;\":\"⊐\",\"sqsupe;\":\"⊒\",\"sqsupset;\":\"⊐\",\"sqsupseteq;\":\"⊒\",\"squ;\":\"□\",\"Square;\":\"□\",\"square;\":\"□\",\"SquareIntersection;\":\"⊓\",\"SquareSubset;\":\"⊏\",\"SquareSubsetEqual;\":\"⊑\",\"SquareSuperset;\":\"⊐\",\"SquareSupersetEqual;\":\"⊒\",\"SquareUnion;\":\"⊔\",\"squarf;\":\"▪\",\"squf;\":\"▪\",\"srarr;\":\"→\",\"Sscr;\":\"𝒮\",\"sscr;\":\"𝓈\",\"ssetmn;\":\"∖\",\"ssmile;\":\"⌣\",\"sstarf;\":\"⋆\",\"Star;\":\"⋆\",\"star;\":\"☆\",\"starf;\":\"★\",\"straightepsilon;\":\"ϵ\",\"straightphi;\":\"ϕ\",\"strns;\":\"¯\",\"Sub;\":\"⋐\",\"sub;\":\"⊂\",\"subdot;\":\"⪽\",\"subE;\":\"⫅\",\"sube;\":\"⊆\",\"subedot;\":\"⫃\",\"submult;\":\"⫁\",\"subnE;\":\"⫋\",\"subne;\":\"⊊\",\"subplus;\":\"⪿\",\"subrarr;\":\"⥹\",\"Subset;\":\"⋐\",\"subset;\":\"⊂\",\"subseteq;\":\"⊆\",\"subseteqq;\":\"⫅\",\"SubsetEqual;\":\"⊆\",\"subsetneq;\":\"⊊\",\"subsetneqq;\":\"⫋\",\"subsim;\":\"⫇\",\"subsub;\":\"⫕\",\"subsup;\":\"⫓\",\"succ;\":\"≻\",\"succapprox;\":\"⪸\",\"succcurlyeq;\":\"≽\",\"Succeeds;\":\"≻\",\"SucceedsEqual;\":\"⪰\",\"SucceedsSlantEqual;\":\"≽\",\"SucceedsTilde;\":\"≿\",\"succeq;\":\"⪰\",\"succnapprox;\":\"⪺\",\"succneqq;\":\"⪶\",\"succnsim;\":\"⋩\",\"succsim;\":\"≿\",\"SuchThat;\":\"∋\",\"Sum;\":\"∑\",\"sum;\":\"∑\",\"sung;\":\"♪\",\"Sup;\":\"⋑\",\"sup;\":\"⊃\",\"sup1;\":\"¹\",\"sup1\":\"¹\",\"sup2;\":\"²\",\"sup2\":\"²\",\"sup3;\":\"³\",\"sup3\":\"³\",\"supdot;\":\"⪾\",\"supdsub;\":\"⫘\",\"supE;\":\"⫆\",\"supe;\":\"⊇\",\"supedot;\":\"⫄\",\"Superset;\":\"⊃\",\"SupersetEqual;\":\"⊇\",\"suphsol;\":\"⟉\",\"suphsub;\":\"⫗\",\"suplarr;\":\"⥻\",\"supmult;\":\"⫂\",\"supnE;\":\"⫌\",\"supne;\":\"⊋\",\"supplus;\":\"⫀\",\"Supset;\":\"⋑\",\"supset;\":\"⊃\",\"supseteq;\":\"⊇\",\"supseteqq;\":\"⫆\",\"supsetneq;\":\"⊋\",\"supsetneqq;\":\"⫌\",\"supsim;\":\"⫈\",\"supsub;\":\"⫔\",\"supsup;\":\"⫖\",\"swarhk;\":\"⤦\",\"swArr;\":\"⇙\",\"swarr;\":\"↙\",\"swarrow;\":\"↙\",\"swnwar;\":\"⤪\",\"szlig;\":\"ß\",\"szlig\":\"ß\",\"Tab;\":\"\\t\",\"target;\":\"⌖\",\"Tau;\":\"Τ\",\"tau;\":\"τ\",\"tbrk;\":\"⎴\",\"Tcaron;\":\"Ť\",\"tcaron;\":\"ť\",\"Tcedil;\":\"Ţ\",\"tcedil;\":\"ţ\",\"Tcy;\":\"Т\",\"tcy;\":\"т\",\"tdot;\":\"⃛\",\"telrec;\":\"⌕\",\"Tfr;\":\"𝔗\",\"tfr;\":\"𝔱\",\"there4;\":\"∴\",\"Therefore;\":\"∴\",\"therefore;\":\"∴\",\"Theta;\":\"Θ\",\"theta;\":\"θ\",\"thetasym;\":\"ϑ\",\"thetav;\":\"ϑ\",\"thickapprox;\":\"≈\",\"thicksim;\":\"∼\",\"ThickSpace;\":\"  \",\"thinsp;\":\" \",\"ThinSpace;\":\" \",\"thkap;\":\"≈\",\"thksim;\":\"∼\",\"THORN;\":\"Þ\",\"THORN\":\"Þ\",\"thorn;\":\"þ\",\"thorn\":\"þ\",\"Tilde;\":\"∼\",\"tilde;\":\"˜\",\"TildeEqual;\":\"≃\",\"TildeFullEqual;\":\"≅\",\"TildeTilde;\":\"≈\",\"times;\":\"×\",\"times\":\"×\",\"timesb;\":\"⊠\",\"timesbar;\":\"⨱\",\"timesd;\":\"⨰\",\"tint;\":\"∭\",\"toea;\":\"⤨\",\"top;\":\"⊤\",\"topbot;\":\"⌶\",\"topcir;\":\"⫱\",\"Topf;\":\"𝕋\",\"topf;\":\"𝕥\",\"topfork;\":\"⫚\",\"tosa;\":\"⤩\",\"tprime;\":\"‴\",\"TRADE;\":\"™\",\"trade;\":\"™\",\"triangle;\":\"▵\",\"triangledown;\":\"▿\",\"triangleleft;\":\"◃\",\"trianglelefteq;\":\"⊴\",\"triangleq;\":\"≜\",\"triangleright;\":\"▹\",\"trianglerighteq;\":\"⊵\",\"tridot;\":\"◬\",\"trie;\":\"≜\",\"triminus;\":\"⨺\",\"TripleDot;\":\"⃛\",\"triplus;\":\"⨹\",\"trisb;\":\"⧍\",\"tritime;\":\"⨻\",\"trpezium;\":\"⏢\",\"Tscr;\":\"𝒯\",\"tscr;\":\"𝓉\",\"TScy;\":\"Ц\",\"tscy;\":\"ц\",\"TSHcy;\":\"Ћ\",\"tshcy;\":\"ћ\",\"Tstrok;\":\"Ŧ\",\"tstrok;\":\"ŧ\",\"twixt;\":\"≬\",\"twoheadleftarrow;\":\"↞\",\"twoheadrightarrow;\":\"↠\",\"Uacute;\":\"Ú\",\"Uacute\":\"Ú\",\"uacute;\":\"ú\",\"uacute\":\"ú\",\"Uarr;\":\"↟\",\"uArr;\":\"⇑\",\"uarr;\":\"↑\",\"Uarrocir;\":\"⥉\",\"Ubrcy;\":\"Ў\",\"ubrcy;\":\"ў\",\"Ubreve;\":\"Ŭ\",\"ubreve;\":\"ŭ\",\"Ucirc;\":\"Û\",\"Ucirc\":\"Û\",\"ucirc;\":\"û\",\"ucirc\":\"û\",\"Ucy;\":\"У\",\"ucy;\":\"у\",\"udarr;\":\"⇅\",\"Udblac;\":\"Ű\",\"udblac;\":\"ű\",\"udhar;\":\"⥮\",\"ufisht;\":\"⥾\",\"Ufr;\":\"𝔘\",\"ufr;\":\"𝔲\",\"Ugrave;\":\"Ù\",\"Ugrave\":\"Ù\",\"ugrave;\":\"ù\",\"ugrave\":\"ù\",\"uHar;\":\"⥣\",\"uharl;\":\"↿\",\"uharr;\":\"↾\",\"uhblk;\":\"▀\",\"ulcorn;\":\"⌜\",\"ulcorner;\":\"⌜\",\"ulcrop;\":\"⌏\",\"ultri;\":\"◸\",\"Umacr;\":\"Ū\",\"umacr;\":\"ū\",\"uml;\":\"¨\",\"uml\":\"¨\",\"UnderBar;\":\"_\",\"UnderBrace;\":\"⏟\",\"UnderBracket;\":\"⎵\",\"UnderParenthesis;\":\"⏝\",\"Union;\":\"⋃\",\"UnionPlus;\":\"⊎\",\"Uogon;\":\"Ų\",\"uogon;\":\"ų\",\"Uopf;\":\"𝕌\",\"uopf;\":\"𝕦\",\"UpArrow;\":\"↑\",\"Uparrow;\":\"⇑\",\"uparrow;\":\"↑\",\"UpArrowBar;\":\"⤒\",\"UpArrowDownArrow;\":\"⇅\",\"UpDownArrow;\":\"↕\",\"Updownarrow;\":\"⇕\",\"updownarrow;\":\"↕\",\"UpEquilibrium;\":\"⥮\",\"upharpoonleft;\":\"↿\",\"upharpoonright;\":\"↾\",\"uplus;\":\"⊎\",\"UpperLeftArrow;\":\"↖\",\"UpperRightArrow;\":\"↗\",\"Upsi;\":\"ϒ\",\"upsi;\":\"υ\",\"upsih;\":\"ϒ\",\"Upsilon;\":\"Υ\",\"upsilon;\":\"υ\",\"UpTee;\":\"⊥\",\"UpTeeArrow;\":\"↥\",\"upuparrows;\":\"⇈\",\"urcorn;\":\"⌝\",\"urcorner;\":\"⌝\",\"urcrop;\":\"⌎\",\"Uring;\":\"Ů\",\"uring;\":\"ů\",\"urtri;\":\"◹\",\"Uscr;\":\"𝒰\",\"uscr;\":\"𝓊\",\"utdot;\":\"⋰\",\"Utilde;\":\"Ũ\",\"utilde;\":\"ũ\",\"utri;\":\"▵\",\"utrif;\":\"▴\",\"uuarr;\":\"⇈\",\"Uuml;\":\"Ü\",\"Uuml\":\"Ü\",\"uuml;\":\"ü\",\"uuml\":\"ü\",\"uwangle;\":\"⦧\",\"vangrt;\":\"⦜\",\"varepsilon;\":\"ϵ\",\"varkappa;\":\"ϰ\",\"varnothing;\":\"∅\",\"varphi;\":\"ϕ\",\"varpi;\":\"ϖ\",\"varpropto;\":\"∝\",\"vArr;\":\"⇕\",\"varr;\":\"↕\",\"varrho;\":\"ϱ\",\"varsigma;\":\"ς\",\"varsubsetneq;\":\"⊊︀\",\"varsubsetneqq;\":\"⫋︀\",\"varsupsetneq;\":\"⊋︀\",\"varsupsetneqq;\":\"⫌︀\",\"vartheta;\":\"ϑ\",\"vartriangleleft;\":\"⊲\",\"vartriangleright;\":\"⊳\",\"Vbar;\":\"⫫\",\"vBar;\":\"⫨\",\"vBarv;\":\"⫩\",\"Vcy;\":\"В\",\"vcy;\":\"в\",\"VDash;\":\"⊫\",\"Vdash;\":\"⊩\",\"vDash;\":\"⊨\",\"vdash;\":\"⊢\",\"Vdashl;\":\"⫦\",\"Vee;\":\"⋁\",\"vee;\":\"∨\",\"veebar;\":\"⊻\",\"veeeq;\":\"≚\",\"vellip;\":\"⋮\",\"Verbar;\":\"‖\",\"verbar;\":\"|\",\"Vert;\":\"‖\",\"vert;\":\"|\",\"VerticalBar;\":\"∣\",\"VerticalLine;\":\"|\",\"VerticalSeparator;\":\"❘\",\"VerticalTilde;\":\"≀\",\"VeryThinSpace;\":\" \",\"Vfr;\":\"𝔙\",\"vfr;\":\"𝔳\",\"vltri;\":\"⊲\",\"vnsub;\":\"⊂⃒\",\"vnsup;\":\"⊃⃒\",\"Vopf;\":\"𝕍\",\"vopf;\":\"𝕧\",\"vprop;\":\"∝\",\"vrtri;\":\"⊳\",\"Vscr;\":\"𝒱\",\"vscr;\":\"𝓋\",\"vsubnE;\":\"⫋︀\",\"vsubne;\":\"⊊︀\",\"vsupnE;\":\"⫌︀\",\"vsupne;\":\"⊋︀\",\"Vvdash;\":\"⊪\",\"vzigzag;\":\"⦚\",\"Wcirc;\":\"Ŵ\",\"wcirc;\":\"ŵ\",\"wedbar;\":\"⩟\",\"Wedge;\":\"⋀\",\"wedge;\":\"∧\",\"wedgeq;\":\"≙\",\"weierp;\":\"℘\",\"Wfr;\":\"𝔚\",\"wfr;\":\"𝔴\",\"Wopf;\":\"𝕎\",\"wopf;\":\"𝕨\",\"wp;\":\"℘\",\"wr;\":\"≀\",\"wreath;\":\"≀\",\"Wscr;\":\"𝒲\",\"wscr;\":\"𝓌\",\"xcap;\":\"⋂\",\"xcirc;\":\"◯\",\"xcup;\":\"⋃\",\"xdtri;\":\"▽\",\"Xfr;\":\"𝔛\",\"xfr;\":\"𝔵\",\"xhArr;\":\"⟺\",\"xharr;\":\"⟷\",\"Xi;\":\"Ξ\",\"xi;\":\"ξ\",\"xlArr;\":\"⟸\",\"xlarr;\":\"⟵\",\"xmap;\":\"⟼\",\"xnis;\":\"⋻\",\"xodot;\":\"⨀\",\"Xopf;\":\"𝕏\",\"xopf;\":\"𝕩\",\"xoplus;\":\"⨁\",\"xotime;\":\"⨂\",\"xrArr;\":\"⟹\",\"xrarr;\":\"⟶\",\"Xscr;\":\"𝒳\",\"xscr;\":\"𝓍\",\"xsqcup;\":\"⨆\",\"xuplus;\":\"⨄\",\"xutri;\":\"△\",\"xvee;\":\"⋁\",\"xwedge;\":\"⋀\",\"Yacute;\":\"Ý\",\"Yacute\":\"Ý\",\"yacute;\":\"ý\",\"yacute\":\"ý\",\"YAcy;\":\"Я\",\"yacy;\":\"я\",\"Ycirc;\":\"Ŷ\",\"ycirc;\":\"ŷ\",\"Ycy;\":\"Ы\",\"ycy;\":\"ы\",\"yen;\":\"¥\",\"yen\":\"¥\",\"Yfr;\":\"𝔜\",\"yfr;\":\"𝔶\",\"YIcy;\":\"Ї\",\"yicy;\":\"ї\",\"Yopf;\":\"𝕐\",\"yopf;\":\"𝕪\",\"Yscr;\":\"𝒴\",\"yscr;\":\"𝓎\",\"YUcy;\":\"Ю\",\"yucy;\":\"ю\",\"Yuml;\":\"Ÿ\",\"yuml;\":\"ÿ\",\"yuml\":\"ÿ\",\"Zacute;\":\"Ź\",\"zacute;\":\"ź\",\"Zcaron;\":\"Ž\",\"zcaron;\":\"ž\",\"Zcy;\":\"З\",\"zcy;\":\"з\",\"Zdot;\":\"Ż\",\"zdot;\":\"ż\",\"zeetrf;\":\"ℨ\",\"ZeroWidthSpace;\":\"​\",\"Zeta;\":\"Ζ\",\"zeta;\":\"ζ\",\"Zfr;\":\"ℨ\",\"zfr;\":\"𝔷\",\"ZHcy;\":\"Ж\",\"zhcy;\":\"ж\",\"zigrarr;\":\"⇝\",\"Zopf;\":\"ℤ\",\"zopf;\":\"𝕫\",\"Zscr;\":\"𝒵\",\"zscr;\":\"𝓏\",\"zwj;\":\"‍\",\"zwnj;\":\"‌\"}"); /***/ }), -/***/ 8245: +/***/ 716: /***/ ((module) => { -"use strict"; -module.exports = JSON.parse("{\"9\":\"Tab;\",\"10\":\"NewLine;\",\"33\":\"excl;\",\"34\":\"quot;\",\"35\":\"num;\",\"36\":\"dollar;\",\"37\":\"percnt;\",\"38\":\"amp;\",\"39\":\"apos;\",\"40\":\"lpar;\",\"41\":\"rpar;\",\"42\":\"midast;\",\"43\":\"plus;\",\"44\":\"comma;\",\"46\":\"period;\",\"47\":\"sol;\",\"58\":\"colon;\",\"59\":\"semi;\",\"60\":\"lt;\",\"61\":\"equals;\",\"62\":\"gt;\",\"63\":\"quest;\",\"64\":\"commat;\",\"91\":\"lsqb;\",\"92\":\"bsol;\",\"93\":\"rsqb;\",\"94\":\"Hat;\",\"95\":\"UnderBar;\",\"96\":\"grave;\",\"123\":\"lcub;\",\"124\":\"VerticalLine;\",\"125\":\"rcub;\",\"160\":\"NonBreakingSpace;\",\"161\":\"iexcl;\",\"162\":\"cent;\",\"163\":\"pound;\",\"164\":\"curren;\",\"165\":\"yen;\",\"166\":\"brvbar;\",\"167\":\"sect;\",\"168\":\"uml;\",\"169\":\"copy;\",\"170\":\"ordf;\",\"171\":\"laquo;\",\"172\":\"not;\",\"173\":\"shy;\",\"174\":\"reg;\",\"175\":\"strns;\",\"176\":\"deg;\",\"177\":\"pm;\",\"178\":\"sup2;\",\"179\":\"sup3;\",\"180\":\"DiacriticalAcute;\",\"181\":\"micro;\",\"182\":\"para;\",\"183\":\"middot;\",\"184\":\"Cedilla;\",\"185\":\"sup1;\",\"186\":\"ordm;\",\"187\":\"raquo;\",\"188\":\"frac14;\",\"189\":\"half;\",\"190\":\"frac34;\",\"191\":\"iquest;\",\"192\":\"Agrave;\",\"193\":\"Aacute;\",\"194\":\"Acirc;\",\"195\":\"Atilde;\",\"196\":\"Auml;\",\"197\":\"Aring;\",\"198\":\"AElig;\",\"199\":\"Ccedil;\",\"200\":\"Egrave;\",\"201\":\"Eacute;\",\"202\":\"Ecirc;\",\"203\":\"Euml;\",\"204\":\"Igrave;\",\"205\":\"Iacute;\",\"206\":\"Icirc;\",\"207\":\"Iuml;\",\"208\":\"ETH;\",\"209\":\"Ntilde;\",\"210\":\"Ograve;\",\"211\":\"Oacute;\",\"212\":\"Ocirc;\",\"213\":\"Otilde;\",\"214\":\"Ouml;\",\"215\":\"times;\",\"216\":\"Oslash;\",\"217\":\"Ugrave;\",\"218\":\"Uacute;\",\"219\":\"Ucirc;\",\"220\":\"Uuml;\",\"221\":\"Yacute;\",\"222\":\"THORN;\",\"223\":\"szlig;\",\"224\":\"agrave;\",\"225\":\"aacute;\",\"226\":\"acirc;\",\"227\":\"atilde;\",\"228\":\"auml;\",\"229\":\"aring;\",\"230\":\"aelig;\",\"231\":\"ccedil;\",\"232\":\"egrave;\",\"233\":\"eacute;\",\"234\":\"ecirc;\",\"235\":\"euml;\",\"236\":\"igrave;\",\"237\":\"iacute;\",\"238\":\"icirc;\",\"239\":\"iuml;\",\"240\":\"eth;\",\"241\":\"ntilde;\",\"242\":\"ograve;\",\"243\":\"oacute;\",\"244\":\"ocirc;\",\"245\":\"otilde;\",\"246\":\"ouml;\",\"247\":\"divide;\",\"248\":\"oslash;\",\"249\":\"ugrave;\",\"250\":\"uacute;\",\"251\":\"ucirc;\",\"252\":\"uuml;\",\"253\":\"yacute;\",\"254\":\"thorn;\",\"255\":\"yuml;\",\"256\":\"Amacr;\",\"257\":\"amacr;\",\"258\":\"Abreve;\",\"259\":\"abreve;\",\"260\":\"Aogon;\",\"261\":\"aogon;\",\"262\":\"Cacute;\",\"263\":\"cacute;\",\"264\":\"Ccirc;\",\"265\":\"ccirc;\",\"266\":\"Cdot;\",\"267\":\"cdot;\",\"268\":\"Ccaron;\",\"269\":\"ccaron;\",\"270\":\"Dcaron;\",\"271\":\"dcaron;\",\"272\":\"Dstrok;\",\"273\":\"dstrok;\",\"274\":\"Emacr;\",\"275\":\"emacr;\",\"278\":\"Edot;\",\"279\":\"edot;\",\"280\":\"Eogon;\",\"281\":\"eogon;\",\"282\":\"Ecaron;\",\"283\":\"ecaron;\",\"284\":\"Gcirc;\",\"285\":\"gcirc;\",\"286\":\"Gbreve;\",\"287\":\"gbreve;\",\"288\":\"Gdot;\",\"289\":\"gdot;\",\"290\":\"Gcedil;\",\"292\":\"Hcirc;\",\"293\":\"hcirc;\",\"294\":\"Hstrok;\",\"295\":\"hstrok;\",\"296\":\"Itilde;\",\"297\":\"itilde;\",\"298\":\"Imacr;\",\"299\":\"imacr;\",\"302\":\"Iogon;\",\"303\":\"iogon;\",\"304\":\"Idot;\",\"305\":\"inodot;\",\"306\":\"IJlig;\",\"307\":\"ijlig;\",\"308\":\"Jcirc;\",\"309\":\"jcirc;\",\"310\":\"Kcedil;\",\"311\":\"kcedil;\",\"312\":\"kgreen;\",\"313\":\"Lacute;\",\"314\":\"lacute;\",\"315\":\"Lcedil;\",\"316\":\"lcedil;\",\"317\":\"Lcaron;\",\"318\":\"lcaron;\",\"319\":\"Lmidot;\",\"320\":\"lmidot;\",\"321\":\"Lstrok;\",\"322\":\"lstrok;\",\"323\":\"Nacute;\",\"324\":\"nacute;\",\"325\":\"Ncedil;\",\"326\":\"ncedil;\",\"327\":\"Ncaron;\",\"328\":\"ncaron;\",\"329\":\"napos;\",\"330\":\"ENG;\",\"331\":\"eng;\",\"332\":\"Omacr;\",\"333\":\"omacr;\",\"336\":\"Odblac;\",\"337\":\"odblac;\",\"338\":\"OElig;\",\"339\":\"oelig;\",\"340\":\"Racute;\",\"341\":\"racute;\",\"342\":\"Rcedil;\",\"343\":\"rcedil;\",\"344\":\"Rcaron;\",\"345\":\"rcaron;\",\"346\":\"Sacute;\",\"347\":\"sacute;\",\"348\":\"Scirc;\",\"349\":\"scirc;\",\"350\":\"Scedil;\",\"351\":\"scedil;\",\"352\":\"Scaron;\",\"353\":\"scaron;\",\"354\":\"Tcedil;\",\"355\":\"tcedil;\",\"356\":\"Tcaron;\",\"357\":\"tcaron;\",\"358\":\"Tstrok;\",\"359\":\"tstrok;\",\"360\":\"Utilde;\",\"361\":\"utilde;\",\"362\":\"Umacr;\",\"363\":\"umacr;\",\"364\":\"Ubreve;\",\"365\":\"ubreve;\",\"366\":\"Uring;\",\"367\":\"uring;\",\"368\":\"Udblac;\",\"369\":\"udblac;\",\"370\":\"Uogon;\",\"371\":\"uogon;\",\"372\":\"Wcirc;\",\"373\":\"wcirc;\",\"374\":\"Ycirc;\",\"375\":\"ycirc;\",\"376\":\"Yuml;\",\"377\":\"Zacute;\",\"378\":\"zacute;\",\"379\":\"Zdot;\",\"380\":\"zdot;\",\"381\":\"Zcaron;\",\"382\":\"zcaron;\",\"402\":\"fnof;\",\"437\":\"imped;\",\"501\":\"gacute;\",\"567\":\"jmath;\",\"710\":\"circ;\",\"711\":\"Hacek;\",\"728\":\"breve;\",\"729\":\"dot;\",\"730\":\"ring;\",\"731\":\"ogon;\",\"732\":\"tilde;\",\"733\":\"DiacriticalDoubleAcute;\",\"785\":\"DownBreve;\",\"913\":\"Alpha;\",\"914\":\"Beta;\",\"915\":\"Gamma;\",\"916\":\"Delta;\",\"917\":\"Epsilon;\",\"918\":\"Zeta;\",\"919\":\"Eta;\",\"920\":\"Theta;\",\"921\":\"Iota;\",\"922\":\"Kappa;\",\"923\":\"Lambda;\",\"924\":\"Mu;\",\"925\":\"Nu;\",\"926\":\"Xi;\",\"927\":\"Omicron;\",\"928\":\"Pi;\",\"929\":\"Rho;\",\"931\":\"Sigma;\",\"932\":\"Tau;\",\"933\":\"Upsilon;\",\"934\":\"Phi;\",\"935\":\"Chi;\",\"936\":\"Psi;\",\"937\":\"Omega;\",\"945\":\"alpha;\",\"946\":\"beta;\",\"947\":\"gamma;\",\"948\":\"delta;\",\"949\":\"epsilon;\",\"950\":\"zeta;\",\"951\":\"eta;\",\"952\":\"theta;\",\"953\":\"iota;\",\"954\":\"kappa;\",\"955\":\"lambda;\",\"956\":\"mu;\",\"957\":\"nu;\",\"958\":\"xi;\",\"959\":\"omicron;\",\"960\":\"pi;\",\"961\":\"rho;\",\"962\":\"varsigma;\",\"963\":\"sigma;\",\"964\":\"tau;\",\"965\":\"upsilon;\",\"966\":\"phi;\",\"967\":\"chi;\",\"968\":\"psi;\",\"969\":\"omega;\",\"977\":\"vartheta;\",\"978\":\"upsih;\",\"981\":\"varphi;\",\"982\":\"varpi;\",\"988\":\"Gammad;\",\"989\":\"gammad;\",\"1008\":\"varkappa;\",\"1009\":\"varrho;\",\"1013\":\"varepsilon;\",\"1014\":\"bepsi;\",\"1025\":\"IOcy;\",\"1026\":\"DJcy;\",\"1027\":\"GJcy;\",\"1028\":\"Jukcy;\",\"1029\":\"DScy;\",\"1030\":\"Iukcy;\",\"1031\":\"YIcy;\",\"1032\":\"Jsercy;\",\"1033\":\"LJcy;\",\"1034\":\"NJcy;\",\"1035\":\"TSHcy;\",\"1036\":\"KJcy;\",\"1038\":\"Ubrcy;\",\"1039\":\"DZcy;\",\"1040\":\"Acy;\",\"1041\":\"Bcy;\",\"1042\":\"Vcy;\",\"1043\":\"Gcy;\",\"1044\":\"Dcy;\",\"1045\":\"IEcy;\",\"1046\":\"ZHcy;\",\"1047\":\"Zcy;\",\"1048\":\"Icy;\",\"1049\":\"Jcy;\",\"1050\":\"Kcy;\",\"1051\":\"Lcy;\",\"1052\":\"Mcy;\",\"1053\":\"Ncy;\",\"1054\":\"Ocy;\",\"1055\":\"Pcy;\",\"1056\":\"Rcy;\",\"1057\":\"Scy;\",\"1058\":\"Tcy;\",\"1059\":\"Ucy;\",\"1060\":\"Fcy;\",\"1061\":\"KHcy;\",\"1062\":\"TScy;\",\"1063\":\"CHcy;\",\"1064\":\"SHcy;\",\"1065\":\"SHCHcy;\",\"1066\":\"HARDcy;\",\"1067\":\"Ycy;\",\"1068\":\"SOFTcy;\",\"1069\":\"Ecy;\",\"1070\":\"YUcy;\",\"1071\":\"YAcy;\",\"1072\":\"acy;\",\"1073\":\"bcy;\",\"1074\":\"vcy;\",\"1075\":\"gcy;\",\"1076\":\"dcy;\",\"1077\":\"iecy;\",\"1078\":\"zhcy;\",\"1079\":\"zcy;\",\"1080\":\"icy;\",\"1081\":\"jcy;\",\"1082\":\"kcy;\",\"1083\":\"lcy;\",\"1084\":\"mcy;\",\"1085\":\"ncy;\",\"1086\":\"ocy;\",\"1087\":\"pcy;\",\"1088\":\"rcy;\",\"1089\":\"scy;\",\"1090\":\"tcy;\",\"1091\":\"ucy;\",\"1092\":\"fcy;\",\"1093\":\"khcy;\",\"1094\":\"tscy;\",\"1095\":\"chcy;\",\"1096\":\"shcy;\",\"1097\":\"shchcy;\",\"1098\":\"hardcy;\",\"1099\":\"ycy;\",\"1100\":\"softcy;\",\"1101\":\"ecy;\",\"1102\":\"yucy;\",\"1103\":\"yacy;\",\"1105\":\"iocy;\",\"1106\":\"djcy;\",\"1107\":\"gjcy;\",\"1108\":\"jukcy;\",\"1109\":\"dscy;\",\"1110\":\"iukcy;\",\"1111\":\"yicy;\",\"1112\":\"jsercy;\",\"1113\":\"ljcy;\",\"1114\":\"njcy;\",\"1115\":\"tshcy;\",\"1116\":\"kjcy;\",\"1118\":\"ubrcy;\",\"1119\":\"dzcy;\",\"8194\":\"ensp;\",\"8195\":\"emsp;\",\"8196\":\"emsp13;\",\"8197\":\"emsp14;\",\"8199\":\"numsp;\",\"8200\":\"puncsp;\",\"8201\":\"ThinSpace;\",\"8202\":\"VeryThinSpace;\",\"8203\":\"ZeroWidthSpace;\",\"8204\":\"zwnj;\",\"8205\":\"zwj;\",\"8206\":\"lrm;\",\"8207\":\"rlm;\",\"8208\":\"hyphen;\",\"8211\":\"ndash;\",\"8212\":\"mdash;\",\"8213\":\"horbar;\",\"8214\":\"Vert;\",\"8216\":\"OpenCurlyQuote;\",\"8217\":\"rsquor;\",\"8218\":\"sbquo;\",\"8220\":\"OpenCurlyDoubleQuote;\",\"8221\":\"rdquor;\",\"8222\":\"ldquor;\",\"8224\":\"dagger;\",\"8225\":\"ddagger;\",\"8226\":\"bullet;\",\"8229\":\"nldr;\",\"8230\":\"mldr;\",\"8240\":\"permil;\",\"8241\":\"pertenk;\",\"8242\":\"prime;\",\"8243\":\"Prime;\",\"8244\":\"tprime;\",\"8245\":\"bprime;\",\"8249\":\"lsaquo;\",\"8250\":\"rsaquo;\",\"8254\":\"OverBar;\",\"8257\":\"caret;\",\"8259\":\"hybull;\",\"8260\":\"frasl;\",\"8271\":\"bsemi;\",\"8279\":\"qprime;\",\"8287\":\"MediumSpace;\",\"8288\":\"NoBreak;\",\"8289\":\"ApplyFunction;\",\"8290\":\"it;\",\"8291\":\"InvisibleComma;\",\"8364\":\"euro;\",\"8411\":\"TripleDot;\",\"8412\":\"DotDot;\",\"8450\":\"Copf;\",\"8453\":\"incare;\",\"8458\":\"gscr;\",\"8459\":\"Hscr;\",\"8460\":\"Poincareplane;\",\"8461\":\"quaternions;\",\"8462\":\"planckh;\",\"8463\":\"plankv;\",\"8464\":\"Iscr;\",\"8465\":\"imagpart;\",\"8466\":\"Lscr;\",\"8467\":\"ell;\",\"8469\":\"Nopf;\",\"8470\":\"numero;\",\"8471\":\"copysr;\",\"8472\":\"wp;\",\"8473\":\"primes;\",\"8474\":\"rationals;\",\"8475\":\"Rscr;\",\"8476\":\"Rfr;\",\"8477\":\"Ropf;\",\"8478\":\"rx;\",\"8482\":\"trade;\",\"8484\":\"Zopf;\",\"8487\":\"mho;\",\"8488\":\"Zfr;\",\"8489\":\"iiota;\",\"8492\":\"Bscr;\",\"8493\":\"Cfr;\",\"8495\":\"escr;\",\"8496\":\"expectation;\",\"8497\":\"Fscr;\",\"8499\":\"phmmat;\",\"8500\":\"oscr;\",\"8501\":\"aleph;\",\"8502\":\"beth;\",\"8503\":\"gimel;\",\"8504\":\"daleth;\",\"8517\":\"DD;\",\"8518\":\"DifferentialD;\",\"8519\":\"exponentiale;\",\"8520\":\"ImaginaryI;\",\"8531\":\"frac13;\",\"8532\":\"frac23;\",\"8533\":\"frac15;\",\"8534\":\"frac25;\",\"8535\":\"frac35;\",\"8536\":\"frac45;\",\"8537\":\"frac16;\",\"8538\":\"frac56;\",\"8539\":\"frac18;\",\"8540\":\"frac38;\",\"8541\":\"frac58;\",\"8542\":\"frac78;\",\"8592\":\"slarr;\",\"8593\":\"uparrow;\",\"8594\":\"srarr;\",\"8595\":\"ShortDownArrow;\",\"8596\":\"leftrightarrow;\",\"8597\":\"varr;\",\"8598\":\"UpperLeftArrow;\",\"8599\":\"UpperRightArrow;\",\"8600\":\"searrow;\",\"8601\":\"swarrow;\",\"8602\":\"nleftarrow;\",\"8603\":\"nrightarrow;\",\"8605\":\"rightsquigarrow;\",\"8606\":\"twoheadleftarrow;\",\"8607\":\"Uarr;\",\"8608\":\"twoheadrightarrow;\",\"8609\":\"Darr;\",\"8610\":\"leftarrowtail;\",\"8611\":\"rightarrowtail;\",\"8612\":\"mapstoleft;\",\"8613\":\"UpTeeArrow;\",\"8614\":\"RightTeeArrow;\",\"8615\":\"mapstodown;\",\"8617\":\"larrhk;\",\"8618\":\"rarrhk;\",\"8619\":\"looparrowleft;\",\"8620\":\"rarrlp;\",\"8621\":\"leftrightsquigarrow;\",\"8622\":\"nleftrightarrow;\",\"8624\":\"lsh;\",\"8625\":\"rsh;\",\"8626\":\"ldsh;\",\"8627\":\"rdsh;\",\"8629\":\"crarr;\",\"8630\":\"curvearrowleft;\",\"8631\":\"curvearrowright;\",\"8634\":\"olarr;\",\"8635\":\"orarr;\",\"8636\":\"lharu;\",\"8637\":\"lhard;\",\"8638\":\"upharpoonright;\",\"8639\":\"upharpoonleft;\",\"8640\":\"RightVector;\",\"8641\":\"rightharpoondown;\",\"8642\":\"RightDownVector;\",\"8643\":\"LeftDownVector;\",\"8644\":\"rlarr;\",\"8645\":\"UpArrowDownArrow;\",\"8646\":\"lrarr;\",\"8647\":\"llarr;\",\"8648\":\"uuarr;\",\"8649\":\"rrarr;\",\"8650\":\"downdownarrows;\",\"8651\":\"ReverseEquilibrium;\",\"8652\":\"rlhar;\",\"8653\":\"nLeftarrow;\",\"8654\":\"nLeftrightarrow;\",\"8655\":\"nRightarrow;\",\"8656\":\"Leftarrow;\",\"8657\":\"Uparrow;\",\"8658\":\"Rightarrow;\",\"8659\":\"Downarrow;\",\"8660\":\"Leftrightarrow;\",\"8661\":\"vArr;\",\"8662\":\"nwArr;\",\"8663\":\"neArr;\",\"8664\":\"seArr;\",\"8665\":\"swArr;\",\"8666\":\"Lleftarrow;\",\"8667\":\"Rrightarrow;\",\"8669\":\"zigrarr;\",\"8676\":\"LeftArrowBar;\",\"8677\":\"RightArrowBar;\",\"8693\":\"duarr;\",\"8701\":\"loarr;\",\"8702\":\"roarr;\",\"8703\":\"hoarr;\",\"8704\":\"forall;\",\"8705\":\"complement;\",\"8706\":\"PartialD;\",\"8707\":\"Exists;\",\"8708\":\"NotExists;\",\"8709\":\"varnothing;\",\"8711\":\"nabla;\",\"8712\":\"isinv;\",\"8713\":\"notinva;\",\"8715\":\"SuchThat;\",\"8716\":\"NotReverseElement;\",\"8719\":\"Product;\",\"8720\":\"Coproduct;\",\"8721\":\"sum;\",\"8722\":\"minus;\",\"8723\":\"mp;\",\"8724\":\"plusdo;\",\"8726\":\"ssetmn;\",\"8727\":\"lowast;\",\"8728\":\"SmallCircle;\",\"8730\":\"Sqrt;\",\"8733\":\"vprop;\",\"8734\":\"infin;\",\"8735\":\"angrt;\",\"8736\":\"angle;\",\"8737\":\"measuredangle;\",\"8738\":\"angsph;\",\"8739\":\"VerticalBar;\",\"8740\":\"nsmid;\",\"8741\":\"spar;\",\"8742\":\"nspar;\",\"8743\":\"wedge;\",\"8744\":\"vee;\",\"8745\":\"cap;\",\"8746\":\"cup;\",\"8747\":\"Integral;\",\"8748\":\"Int;\",\"8749\":\"tint;\",\"8750\":\"oint;\",\"8751\":\"DoubleContourIntegral;\",\"8752\":\"Cconint;\",\"8753\":\"cwint;\",\"8754\":\"cwconint;\",\"8755\":\"CounterClockwiseContourIntegral;\",\"8756\":\"therefore;\",\"8757\":\"because;\",\"8758\":\"ratio;\",\"8759\":\"Proportion;\",\"8760\":\"minusd;\",\"8762\":\"mDDot;\",\"8763\":\"homtht;\",\"8764\":\"Tilde;\",\"8765\":\"bsim;\",\"8766\":\"mstpos;\",\"8767\":\"acd;\",\"8768\":\"wreath;\",\"8769\":\"nsim;\",\"8770\":\"esim;\",\"8771\":\"TildeEqual;\",\"8772\":\"nsimeq;\",\"8773\":\"TildeFullEqual;\",\"8774\":\"simne;\",\"8775\":\"NotTildeFullEqual;\",\"8776\":\"TildeTilde;\",\"8777\":\"NotTildeTilde;\",\"8778\":\"approxeq;\",\"8779\":\"apid;\",\"8780\":\"bcong;\",\"8781\":\"CupCap;\",\"8782\":\"HumpDownHump;\",\"8783\":\"HumpEqual;\",\"8784\":\"esdot;\",\"8785\":\"eDot;\",\"8786\":\"fallingdotseq;\",\"8787\":\"risingdotseq;\",\"8788\":\"coloneq;\",\"8789\":\"eqcolon;\",\"8790\":\"eqcirc;\",\"8791\":\"cire;\",\"8793\":\"wedgeq;\",\"8794\":\"veeeq;\",\"8796\":\"trie;\",\"8799\":\"questeq;\",\"8800\":\"NotEqual;\",\"8801\":\"equiv;\",\"8802\":\"NotCongruent;\",\"8804\":\"leq;\",\"8805\":\"GreaterEqual;\",\"8806\":\"LessFullEqual;\",\"8807\":\"GreaterFullEqual;\",\"8808\":\"lneqq;\",\"8809\":\"gneqq;\",\"8810\":\"NestedLessLess;\",\"8811\":\"NestedGreaterGreater;\",\"8812\":\"twixt;\",\"8813\":\"NotCupCap;\",\"8814\":\"NotLess;\",\"8815\":\"NotGreater;\",\"8816\":\"NotLessEqual;\",\"8817\":\"NotGreaterEqual;\",\"8818\":\"lsim;\",\"8819\":\"gtrsim;\",\"8820\":\"NotLessTilde;\",\"8821\":\"NotGreaterTilde;\",\"8822\":\"lg;\",\"8823\":\"gtrless;\",\"8824\":\"ntlg;\",\"8825\":\"ntgl;\",\"8826\":\"Precedes;\",\"8827\":\"Succeeds;\",\"8828\":\"PrecedesSlantEqual;\",\"8829\":\"SucceedsSlantEqual;\",\"8830\":\"prsim;\",\"8831\":\"succsim;\",\"8832\":\"nprec;\",\"8833\":\"nsucc;\",\"8834\":\"subset;\",\"8835\":\"supset;\",\"8836\":\"nsub;\",\"8837\":\"nsup;\",\"8838\":\"SubsetEqual;\",\"8839\":\"supseteq;\",\"8840\":\"nsubseteq;\",\"8841\":\"nsupseteq;\",\"8842\":\"subsetneq;\",\"8843\":\"supsetneq;\",\"8845\":\"cupdot;\",\"8846\":\"uplus;\",\"8847\":\"SquareSubset;\",\"8848\":\"SquareSuperset;\",\"8849\":\"SquareSubsetEqual;\",\"8850\":\"SquareSupersetEqual;\",\"8851\":\"SquareIntersection;\",\"8852\":\"SquareUnion;\",\"8853\":\"oplus;\",\"8854\":\"ominus;\",\"8855\":\"otimes;\",\"8856\":\"osol;\",\"8857\":\"odot;\",\"8858\":\"ocir;\",\"8859\":\"oast;\",\"8861\":\"odash;\",\"8862\":\"plusb;\",\"8863\":\"minusb;\",\"8864\":\"timesb;\",\"8865\":\"sdotb;\",\"8866\":\"vdash;\",\"8867\":\"LeftTee;\",\"8868\":\"top;\",\"8869\":\"UpTee;\",\"8871\":\"models;\",\"8872\":\"vDash;\",\"8873\":\"Vdash;\",\"8874\":\"Vvdash;\",\"8875\":\"VDash;\",\"8876\":\"nvdash;\",\"8877\":\"nvDash;\",\"8878\":\"nVdash;\",\"8879\":\"nVDash;\",\"8880\":\"prurel;\",\"8882\":\"vltri;\",\"8883\":\"vrtri;\",\"8884\":\"trianglelefteq;\",\"8885\":\"trianglerighteq;\",\"8886\":\"origof;\",\"8887\":\"imof;\",\"8888\":\"mumap;\",\"8889\":\"hercon;\",\"8890\":\"intercal;\",\"8891\":\"veebar;\",\"8893\":\"barvee;\",\"8894\":\"angrtvb;\",\"8895\":\"lrtri;\",\"8896\":\"xwedge;\",\"8897\":\"xvee;\",\"8898\":\"xcap;\",\"8899\":\"xcup;\",\"8900\":\"diamond;\",\"8901\":\"sdot;\",\"8902\":\"Star;\",\"8903\":\"divonx;\",\"8904\":\"bowtie;\",\"8905\":\"ltimes;\",\"8906\":\"rtimes;\",\"8907\":\"lthree;\",\"8908\":\"rthree;\",\"8909\":\"bsime;\",\"8910\":\"cuvee;\",\"8911\":\"cuwed;\",\"8912\":\"Subset;\",\"8913\":\"Supset;\",\"8914\":\"Cap;\",\"8915\":\"Cup;\",\"8916\":\"pitchfork;\",\"8917\":\"epar;\",\"8918\":\"ltdot;\",\"8919\":\"gtrdot;\",\"8920\":\"Ll;\",\"8921\":\"ggg;\",\"8922\":\"LessEqualGreater;\",\"8923\":\"gtreqless;\",\"8926\":\"curlyeqprec;\",\"8927\":\"curlyeqsucc;\",\"8928\":\"nprcue;\",\"8929\":\"nsccue;\",\"8930\":\"nsqsube;\",\"8931\":\"nsqsupe;\",\"8934\":\"lnsim;\",\"8935\":\"gnsim;\",\"8936\":\"prnsim;\",\"8937\":\"succnsim;\",\"8938\":\"ntriangleleft;\",\"8939\":\"ntriangleright;\",\"8940\":\"ntrianglelefteq;\",\"8941\":\"ntrianglerighteq;\",\"8942\":\"vellip;\",\"8943\":\"ctdot;\",\"8944\":\"utdot;\",\"8945\":\"dtdot;\",\"8946\":\"disin;\",\"8947\":\"isinsv;\",\"8948\":\"isins;\",\"8949\":\"isindot;\",\"8950\":\"notinvc;\",\"8951\":\"notinvb;\",\"8953\":\"isinE;\",\"8954\":\"nisd;\",\"8955\":\"xnis;\",\"8956\":\"nis;\",\"8957\":\"notnivc;\",\"8958\":\"notnivb;\",\"8965\":\"barwedge;\",\"8966\":\"doublebarwedge;\",\"8968\":\"LeftCeiling;\",\"8969\":\"RightCeiling;\",\"8970\":\"lfloor;\",\"8971\":\"RightFloor;\",\"8972\":\"drcrop;\",\"8973\":\"dlcrop;\",\"8974\":\"urcrop;\",\"8975\":\"ulcrop;\",\"8976\":\"bnot;\",\"8978\":\"profline;\",\"8979\":\"profsurf;\",\"8981\":\"telrec;\",\"8982\":\"target;\",\"8988\":\"ulcorner;\",\"8989\":\"urcorner;\",\"8990\":\"llcorner;\",\"8991\":\"lrcorner;\",\"8994\":\"sfrown;\",\"8995\":\"ssmile;\",\"9005\":\"cylcty;\",\"9006\":\"profalar;\",\"9014\":\"topbot;\",\"9021\":\"ovbar;\",\"9023\":\"solbar;\",\"9084\":\"angzarr;\",\"9136\":\"lmoustache;\",\"9137\":\"rmoustache;\",\"9140\":\"tbrk;\",\"9141\":\"UnderBracket;\",\"9142\":\"bbrktbrk;\",\"9180\":\"OverParenthesis;\",\"9181\":\"UnderParenthesis;\",\"9182\":\"OverBrace;\",\"9183\":\"UnderBrace;\",\"9186\":\"trpezium;\",\"9191\":\"elinters;\",\"9251\":\"blank;\",\"9416\":\"oS;\",\"9472\":\"HorizontalLine;\",\"9474\":\"boxv;\",\"9484\":\"boxdr;\",\"9488\":\"boxdl;\",\"9492\":\"boxur;\",\"9496\":\"boxul;\",\"9500\":\"boxvr;\",\"9508\":\"boxvl;\",\"9516\":\"boxhd;\",\"9524\":\"boxhu;\",\"9532\":\"boxvh;\",\"9552\":\"boxH;\",\"9553\":\"boxV;\",\"9554\":\"boxdR;\",\"9555\":\"boxDr;\",\"9556\":\"boxDR;\",\"9557\":\"boxdL;\",\"9558\":\"boxDl;\",\"9559\":\"boxDL;\",\"9560\":\"boxuR;\",\"9561\":\"boxUr;\",\"9562\":\"boxUR;\",\"9563\":\"boxuL;\",\"9564\":\"boxUl;\",\"9565\":\"boxUL;\",\"9566\":\"boxvR;\",\"9567\":\"boxVr;\",\"9568\":\"boxVR;\",\"9569\":\"boxvL;\",\"9570\":\"boxVl;\",\"9571\":\"boxVL;\",\"9572\":\"boxHd;\",\"9573\":\"boxhD;\",\"9574\":\"boxHD;\",\"9575\":\"boxHu;\",\"9576\":\"boxhU;\",\"9577\":\"boxHU;\",\"9578\":\"boxvH;\",\"9579\":\"boxVh;\",\"9580\":\"boxVH;\",\"9600\":\"uhblk;\",\"9604\":\"lhblk;\",\"9608\":\"block;\",\"9617\":\"blk14;\",\"9618\":\"blk12;\",\"9619\":\"blk34;\",\"9633\":\"square;\",\"9642\":\"squf;\",\"9643\":\"EmptyVerySmallSquare;\",\"9645\":\"rect;\",\"9646\":\"marker;\",\"9649\":\"fltns;\",\"9651\":\"xutri;\",\"9652\":\"utrif;\",\"9653\":\"utri;\",\"9656\":\"rtrif;\",\"9657\":\"triangleright;\",\"9661\":\"xdtri;\",\"9662\":\"dtrif;\",\"9663\":\"triangledown;\",\"9666\":\"ltrif;\",\"9667\":\"triangleleft;\",\"9674\":\"lozenge;\",\"9675\":\"cir;\",\"9708\":\"tridot;\",\"9711\":\"xcirc;\",\"9720\":\"ultri;\",\"9721\":\"urtri;\",\"9722\":\"lltri;\",\"9723\":\"EmptySmallSquare;\",\"9724\":\"FilledSmallSquare;\",\"9733\":\"starf;\",\"9734\":\"star;\",\"9742\":\"phone;\",\"9792\":\"female;\",\"9794\":\"male;\",\"9824\":\"spadesuit;\",\"9827\":\"clubsuit;\",\"9829\":\"heartsuit;\",\"9830\":\"diams;\",\"9834\":\"sung;\",\"9837\":\"flat;\",\"9838\":\"natural;\",\"9839\":\"sharp;\",\"10003\":\"checkmark;\",\"10007\":\"cross;\",\"10016\":\"maltese;\",\"10038\":\"sext;\",\"10072\":\"VerticalSeparator;\",\"10098\":\"lbbrk;\",\"10099\":\"rbbrk;\",\"10184\":\"bsolhsub;\",\"10185\":\"suphsol;\",\"10214\":\"lobrk;\",\"10215\":\"robrk;\",\"10216\":\"LeftAngleBracket;\",\"10217\":\"RightAngleBracket;\",\"10218\":\"Lang;\",\"10219\":\"Rang;\",\"10220\":\"loang;\",\"10221\":\"roang;\",\"10229\":\"xlarr;\",\"10230\":\"xrarr;\",\"10231\":\"xharr;\",\"10232\":\"xlArr;\",\"10233\":\"xrArr;\",\"10234\":\"xhArr;\",\"10236\":\"xmap;\",\"10239\":\"dzigrarr;\",\"10498\":\"nvlArr;\",\"10499\":\"nvrArr;\",\"10500\":\"nvHarr;\",\"10501\":\"Map;\",\"10508\":\"lbarr;\",\"10509\":\"rbarr;\",\"10510\":\"lBarr;\",\"10511\":\"rBarr;\",\"10512\":\"RBarr;\",\"10513\":\"DDotrahd;\",\"10514\":\"UpArrowBar;\",\"10515\":\"DownArrowBar;\",\"10518\":\"Rarrtl;\",\"10521\":\"latail;\",\"10522\":\"ratail;\",\"10523\":\"lAtail;\",\"10524\":\"rAtail;\",\"10525\":\"larrfs;\",\"10526\":\"rarrfs;\",\"10527\":\"larrbfs;\",\"10528\":\"rarrbfs;\",\"10531\":\"nwarhk;\",\"10532\":\"nearhk;\",\"10533\":\"searhk;\",\"10534\":\"swarhk;\",\"10535\":\"nwnear;\",\"10536\":\"toea;\",\"10537\":\"tosa;\",\"10538\":\"swnwar;\",\"10547\":\"rarrc;\",\"10549\":\"cudarrr;\",\"10550\":\"ldca;\",\"10551\":\"rdca;\",\"10552\":\"cudarrl;\",\"10553\":\"larrpl;\",\"10556\":\"curarrm;\",\"10557\":\"cularrp;\",\"10565\":\"rarrpl;\",\"10568\":\"harrcir;\",\"10569\":\"Uarrocir;\",\"10570\":\"lurdshar;\",\"10571\":\"ldrushar;\",\"10574\":\"LeftRightVector;\",\"10575\":\"RightUpDownVector;\",\"10576\":\"DownLeftRightVector;\",\"10577\":\"LeftUpDownVector;\",\"10578\":\"LeftVectorBar;\",\"10579\":\"RightVectorBar;\",\"10580\":\"RightUpVectorBar;\",\"10581\":\"RightDownVectorBar;\",\"10582\":\"DownLeftVectorBar;\",\"10583\":\"DownRightVectorBar;\",\"10584\":\"LeftUpVectorBar;\",\"10585\":\"LeftDownVectorBar;\",\"10586\":\"LeftTeeVector;\",\"10587\":\"RightTeeVector;\",\"10588\":\"RightUpTeeVector;\",\"10589\":\"RightDownTeeVector;\",\"10590\":\"DownLeftTeeVector;\",\"10591\":\"DownRightTeeVector;\",\"10592\":\"LeftUpTeeVector;\",\"10593\":\"LeftDownTeeVector;\",\"10594\":\"lHar;\",\"10595\":\"uHar;\",\"10596\":\"rHar;\",\"10597\":\"dHar;\",\"10598\":\"luruhar;\",\"10599\":\"ldrdhar;\",\"10600\":\"ruluhar;\",\"10601\":\"rdldhar;\",\"10602\":\"lharul;\",\"10603\":\"llhard;\",\"10604\":\"rharul;\",\"10605\":\"lrhard;\",\"10606\":\"UpEquilibrium;\",\"10607\":\"ReverseUpEquilibrium;\",\"10608\":\"RoundImplies;\",\"10609\":\"erarr;\",\"10610\":\"simrarr;\",\"10611\":\"larrsim;\",\"10612\":\"rarrsim;\",\"10613\":\"rarrap;\",\"10614\":\"ltlarr;\",\"10616\":\"gtrarr;\",\"10617\":\"subrarr;\",\"10619\":\"suplarr;\",\"10620\":\"lfisht;\",\"10621\":\"rfisht;\",\"10622\":\"ufisht;\",\"10623\":\"dfisht;\",\"10629\":\"lopar;\",\"10630\":\"ropar;\",\"10635\":\"lbrke;\",\"10636\":\"rbrke;\",\"10637\":\"lbrkslu;\",\"10638\":\"rbrksld;\",\"10639\":\"lbrksld;\",\"10640\":\"rbrkslu;\",\"10641\":\"langd;\",\"10642\":\"rangd;\",\"10643\":\"lparlt;\",\"10644\":\"rpargt;\",\"10645\":\"gtlPar;\",\"10646\":\"ltrPar;\",\"10650\":\"vzigzag;\",\"10652\":\"vangrt;\",\"10653\":\"angrtvbd;\",\"10660\":\"ange;\",\"10661\":\"range;\",\"10662\":\"dwangle;\",\"10663\":\"uwangle;\",\"10664\":\"angmsdaa;\",\"10665\":\"angmsdab;\",\"10666\":\"angmsdac;\",\"10667\":\"angmsdad;\",\"10668\":\"angmsdae;\",\"10669\":\"angmsdaf;\",\"10670\":\"angmsdag;\",\"10671\":\"angmsdah;\",\"10672\":\"bemptyv;\",\"10673\":\"demptyv;\",\"10674\":\"cemptyv;\",\"10675\":\"raemptyv;\",\"10676\":\"laemptyv;\",\"10677\":\"ohbar;\",\"10678\":\"omid;\",\"10679\":\"opar;\",\"10681\":\"operp;\",\"10683\":\"olcross;\",\"10684\":\"odsold;\",\"10686\":\"olcir;\",\"10687\":\"ofcir;\",\"10688\":\"olt;\",\"10689\":\"ogt;\",\"10690\":\"cirscir;\",\"10691\":\"cirE;\",\"10692\":\"solb;\",\"10693\":\"bsolb;\",\"10697\":\"boxbox;\",\"10701\":\"trisb;\",\"10702\":\"rtriltri;\",\"10703\":\"LeftTriangleBar;\",\"10704\":\"RightTriangleBar;\",\"10716\":\"iinfin;\",\"10717\":\"infintie;\",\"10718\":\"nvinfin;\",\"10723\":\"eparsl;\",\"10724\":\"smeparsl;\",\"10725\":\"eqvparsl;\",\"10731\":\"lozf;\",\"10740\":\"RuleDelayed;\",\"10742\":\"dsol;\",\"10752\":\"xodot;\",\"10753\":\"xoplus;\",\"10754\":\"xotime;\",\"10756\":\"xuplus;\",\"10758\":\"xsqcup;\",\"10764\":\"qint;\",\"10765\":\"fpartint;\",\"10768\":\"cirfnint;\",\"10769\":\"awint;\",\"10770\":\"rppolint;\",\"10771\":\"scpolint;\",\"10772\":\"npolint;\",\"10773\":\"pointint;\",\"10774\":\"quatint;\",\"10775\":\"intlarhk;\",\"10786\":\"pluscir;\",\"10787\":\"plusacir;\",\"10788\":\"simplus;\",\"10789\":\"plusdu;\",\"10790\":\"plussim;\",\"10791\":\"plustwo;\",\"10793\":\"mcomma;\",\"10794\":\"minusdu;\",\"10797\":\"loplus;\",\"10798\":\"roplus;\",\"10799\":\"Cross;\",\"10800\":\"timesd;\",\"10801\":\"timesbar;\",\"10803\":\"smashp;\",\"10804\":\"lotimes;\",\"10805\":\"rotimes;\",\"10806\":\"otimesas;\",\"10807\":\"Otimes;\",\"10808\":\"odiv;\",\"10809\":\"triplus;\",\"10810\":\"triminus;\",\"10811\":\"tritime;\",\"10812\":\"iprod;\",\"10815\":\"amalg;\",\"10816\":\"capdot;\",\"10818\":\"ncup;\",\"10819\":\"ncap;\",\"10820\":\"capand;\",\"10821\":\"cupor;\",\"10822\":\"cupcap;\",\"10823\":\"capcup;\",\"10824\":\"cupbrcap;\",\"10825\":\"capbrcup;\",\"10826\":\"cupcup;\",\"10827\":\"capcap;\",\"10828\":\"ccups;\",\"10829\":\"ccaps;\",\"10832\":\"ccupssm;\",\"10835\":\"And;\",\"10836\":\"Or;\",\"10837\":\"andand;\",\"10838\":\"oror;\",\"10839\":\"orslope;\",\"10840\":\"andslope;\",\"10842\":\"andv;\",\"10843\":\"orv;\",\"10844\":\"andd;\",\"10845\":\"ord;\",\"10847\":\"wedbar;\",\"10854\":\"sdote;\",\"10858\":\"simdot;\",\"10861\":\"congdot;\",\"10862\":\"easter;\",\"10863\":\"apacir;\",\"10864\":\"apE;\",\"10865\":\"eplus;\",\"10866\":\"pluse;\",\"10867\":\"Esim;\",\"10868\":\"Colone;\",\"10869\":\"Equal;\",\"10871\":\"eDDot;\",\"10872\":\"equivDD;\",\"10873\":\"ltcir;\",\"10874\":\"gtcir;\",\"10875\":\"ltquest;\",\"10876\":\"gtquest;\",\"10877\":\"LessSlantEqual;\",\"10878\":\"GreaterSlantEqual;\",\"10879\":\"lesdot;\",\"10880\":\"gesdot;\",\"10881\":\"lesdoto;\",\"10882\":\"gesdoto;\",\"10883\":\"lesdotor;\",\"10884\":\"gesdotol;\",\"10885\":\"lessapprox;\",\"10886\":\"gtrapprox;\",\"10887\":\"lneq;\",\"10888\":\"gneq;\",\"10889\":\"lnapprox;\",\"10890\":\"gnapprox;\",\"10891\":\"lesseqqgtr;\",\"10892\":\"gtreqqless;\",\"10893\":\"lsime;\",\"10894\":\"gsime;\",\"10895\":\"lsimg;\",\"10896\":\"gsiml;\",\"10897\":\"lgE;\",\"10898\":\"glE;\",\"10899\":\"lesges;\",\"10900\":\"gesles;\",\"10901\":\"eqslantless;\",\"10902\":\"eqslantgtr;\",\"10903\":\"elsdot;\",\"10904\":\"egsdot;\",\"10905\":\"el;\",\"10906\":\"eg;\",\"10909\":\"siml;\",\"10910\":\"simg;\",\"10911\":\"simlE;\",\"10912\":\"simgE;\",\"10913\":\"LessLess;\",\"10914\":\"GreaterGreater;\",\"10916\":\"glj;\",\"10917\":\"gla;\",\"10918\":\"ltcc;\",\"10919\":\"gtcc;\",\"10920\":\"lescc;\",\"10921\":\"gescc;\",\"10922\":\"smt;\",\"10923\":\"lat;\",\"10924\":\"smte;\",\"10925\":\"late;\",\"10926\":\"bumpE;\",\"10927\":\"preceq;\",\"10928\":\"succeq;\",\"10931\":\"prE;\",\"10932\":\"scE;\",\"10933\":\"prnE;\",\"10934\":\"succneqq;\",\"10935\":\"precapprox;\",\"10936\":\"succapprox;\",\"10937\":\"prnap;\",\"10938\":\"succnapprox;\",\"10939\":\"Pr;\",\"10940\":\"Sc;\",\"10941\":\"subdot;\",\"10942\":\"supdot;\",\"10943\":\"subplus;\",\"10944\":\"supplus;\",\"10945\":\"submult;\",\"10946\":\"supmult;\",\"10947\":\"subedot;\",\"10948\":\"supedot;\",\"10949\":\"subseteqq;\",\"10950\":\"supseteqq;\",\"10951\":\"subsim;\",\"10952\":\"supsim;\",\"10955\":\"subsetneqq;\",\"10956\":\"supsetneqq;\",\"10959\":\"csub;\",\"10960\":\"csup;\",\"10961\":\"csube;\",\"10962\":\"csupe;\",\"10963\":\"subsup;\",\"10964\":\"supsub;\",\"10965\":\"subsub;\",\"10966\":\"supsup;\",\"10967\":\"suphsub;\",\"10968\":\"supdsub;\",\"10969\":\"forkv;\",\"10970\":\"topfork;\",\"10971\":\"mlcp;\",\"10980\":\"DoubleLeftTee;\",\"10982\":\"Vdashl;\",\"10983\":\"Barv;\",\"10984\":\"vBar;\",\"10985\":\"vBarv;\",\"10987\":\"Vbar;\",\"10988\":\"Not;\",\"10989\":\"bNot;\",\"10990\":\"rnmid;\",\"10991\":\"cirmid;\",\"10992\":\"midcir;\",\"10993\":\"topcir;\",\"10994\":\"nhpar;\",\"10995\":\"parsim;\",\"11005\":\"parsl;\",\"64256\":\"fflig;\",\"64257\":\"filig;\",\"64258\":\"fllig;\",\"64259\":\"ffilig;\",\"64260\":\"ffllig;\"}"); - -/***/ }), - -/***/ 5032: -/***/ ((module) => { +module.exports = eval("require")("@actions/github"); -function webpackEmptyContext(req) { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; -} -webpackEmptyContext.keys = () => []; -webpackEmptyContext.resolve = webpackEmptyContext; -webpackEmptyContext.id = 5032; -module.exports = webpackEmptyContext; /***/ }), -/***/ 7353: +/***/ 36: /***/ ((module) => { -function webpackEmptyContext(req) { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; -} -webpackEmptyContext.keys = () => []; -webpackEmptyContext.resolve = webpackEmptyContext; -webpackEmptyContext.id = 7353; -module.exports = webpackEmptyContext; - -/***/ }), - -/***/ 5020: -/***/ ((module) => { +module.exports = eval("require")("handlebars"); -function webpackEmptyContext(req) { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; -} -webpackEmptyContext.keys = () => []; -webpackEmptyContext.resolve = webpackEmptyContext; -webpackEmptyContext.id = 5020; -module.exports = webpackEmptyContext; /***/ }), -/***/ 2357: +/***/ 566: /***/ ((module) => { -"use strict"; -module.exports = require("assert");; - -/***/ }), - -/***/ 8614: -/***/ ((module) => { +module.exports = eval("require")("handlebars-helpers"); -"use strict"; -module.exports = require("events");; /***/ }), -/***/ 5747: +/***/ 747: /***/ ((module) => { "use strict"; module.exports = require("fs");; -/***/ }), - -/***/ 8605: -/***/ ((module) => { - -"use strict"; -module.exports = require("http");; - -/***/ }), - -/***/ 7211: -/***/ ((module) => { - -"use strict"; -module.exports = require("https");; - -/***/ }), - -/***/ 1631: -/***/ ((module) => { - -"use strict"; -module.exports = require("net");; - -/***/ }), - -/***/ 2087: -/***/ ((module) => { - -"use strict"; -module.exports = require("os");; - -/***/ }), - -/***/ 5622: -/***/ ((module) => { - -"use strict"; -module.exports = require("path");; - -/***/ }), - -/***/ 4213: -/***/ ((module) => { - -"use strict"; -module.exports = require("punycode");; - -/***/ }), - -/***/ 1191: -/***/ ((module) => { - -"use strict"; -module.exports = require("querystring");; - -/***/ }), - -/***/ 1058: -/***/ ((module) => { - -"use strict"; -module.exports = require("readline");; - -/***/ }), - -/***/ 2413: -/***/ ((module) => { - -"use strict"; -module.exports = require("stream");; - -/***/ }), - -/***/ 4016: -/***/ ((module) => { - -"use strict"; -module.exports = require("tls");; - -/***/ }), - -/***/ 3867: -/***/ ((module) => { - -"use strict"; -module.exports = require("tty");; - -/***/ }), - -/***/ 8835: -/***/ ((module) => { - -"use strict"; -module.exports = require("url");; - -/***/ }), - -/***/ 1669: -/***/ ((module) => { - -"use strict"; -module.exports = require("util");; - -/***/ }), - -/***/ 8761: -/***/ ((module) => { - -"use strict"; -module.exports = require("zlib");; - /***/ }) /******/ }); @@ -70073,56 +376,39 @@ module.exports = require("zlib");; /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function -/******/ function __webpack_require__(moduleId) { +/******/ function __nccwpck_require__(moduleId) { /******/ // Check if module is in cache /******/ if(__webpack_module_cache__[moduleId]) { /******/ return __webpack_module_cache__[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { -/******/ id: moduleId, -/******/ loaded: false, +/******/ // no module.id needed +/******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ var threw = true; /******/ try { -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); /******/ threw = false; /******/ } finally { /******/ if(threw) delete __webpack_module_cache__[moduleId]; /******/ } /******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) -/******/ })(); -/******/ -/******/ /* webpack/runtime/node module decorator */ -/******/ (() => { -/******/ __webpack_require__.nmd = (module) => { -/******/ module.paths = []; -/******/ if (!module.children) module.children = []; -/******/ return module; -/******/ }; -/******/ })(); -/******/ /******/ /* webpack/runtime/compat */ /******/ -/******/ __webpack_require__.ab = __dirname + "/";/************************************************************************/ +/******/ __nccwpck_require__.ab = __dirname + "/";/************************************************************************/ /******/ // module exports must be returned from runtime so entry inlining is disabled /******/ // startup /******/ // Load entry module and return exports -/******/ return __webpack_require__(3109); +/******/ return __nccwpck_require__(109); /******/ })() ; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 27436f28e..96c4abe72 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../webpack://typescript-action/./lib/generate-releasenotes.js","../webpack://typescript-action/./lib/main.js","../webpack://typescript-action/./node_modules/@actions/core/lib/command.js","../webpack://typescript-action/./node_modules/@actions/core/lib/core.js","../webpack://typescript-action/./node_modules/@actions/core/lib/file-command.js","../webpack://typescript-action/./node_modules/@actions/core/lib/utils.js","../webpack://typescript-action/./node_modules/@actions/github/lib/context.js","../webpack://typescript-action/./node_modules/@actions/github/lib/github.js","../webpack://typescript-action/./node_modules/@actions/github/lib/internal/utils.js","../webpack://typescript-action/./node_modules/@actions/github/lib/utils.js","../webpack://typescript-action/./node_modules/@actions/http-client/index.js","../webpack://typescript-action/./node_modules/@actions/http-client/proxy.js","../webpack://typescript-action/./node_modules/@octokit/auth-token/dist-node/index.js","../webpack://typescript-action/./node_modules/@octokit/core/dist-node/index.js","../webpack://typescript-action/./node_modules/@octokit/endpoint/dist-node/index.js","../webpack://typescript-action/./node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.js","../webpack://typescript-action/./node_modules/@octokit/graphql/dist-node/index.js","../webpack://typescript-action/./node_modules/@octokit/plugin-paginate-rest/dist-node/index.js","../webpack://typescript-action/./node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js","../webpack://typescript-action/./node_modules/@octokit/request-error/dist-node/index.js","../webpack://typescript-action/./node_modules/@octokit/request/dist-node/index.js","../webpack://typescript-action/./node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.js","../webpack://typescript-action/./node_modules/ansi-green/index.js","../webpack://typescript-action/./node_modules/ansi-wrap/index.js","../webpack://typescript-action/./node_modules/autolinker/dist/Autolinker.js","../webpack://typescript-action/./node_modules/before-after-hook/index.js","../webpack://typescript-action/./node_modules/before-after-hook/lib/add.js","../webpack://typescript-action/./node_modules/before-after-hook/lib/register.js","../webpack://typescript-action/./node_modules/before-after-hook/lib/remove.js","../webpack://typescript-action/./node_modules/create-frame/index.js","../webpack://typescript-action/./node_modules/create-frame/utils.js","../webpack://typescript-action/./node_modules/date.js/index.js","../webpack://typescript-action/./node_modules/date.js/lib/date.js","../webpack://typescript-action/./node_modules/date.js/lib/norm.js","../webpack://typescript-action/./node_modules/date.js/lib/parser.js","../webpack://typescript-action/./node_modules/date.js/lib/subdash.js","../webpack://typescript-action/./node_modules/date.js/lib/symbol.js","../webpack://typescript-action/./node_modules/date.js/lib/tokenize.js","../webpack://typescript-action/./node_modules/date.js/lib/util.js","../webpack://typescript-action/./node_modules/date.js/node_modules/debug/src/browser.js","../webpack://typescript-action/./node_modules/date.js/node_modules/debug/src/debug.js","../webpack://typescript-action/./node_modules/date.js/node_modules/debug/src/index.js","../webpack://typescript-action/./node_modules/date.js/node_modules/debug/src/node.js","../webpack://typescript-action/./node_modules/date.js/node_modules/ms/index.js","../webpack://typescript-action/./node_modules/deprecation/dist-node/index.js","../webpack://typescript-action/./node_modules/ent/decode.js","../webpack://typescript-action/./node_modules/ent/encode.js","../webpack://typescript-action/./node_modules/ent/index.js","../webpack://typescript-action/./node_modules/error-symbol/index.js","../webpack://typescript-action/./node_modules/falsey/index.js","../webpack://typescript-action/./node_modules/falsey/node_modules/kind-of/index.js","../webpack://typescript-action/./node_modules/for-in/index.js","../webpack://typescript-action/./node_modules/for-own/index.js","../webpack://typescript-action/./node_modules/fs-exists-sync/index.js","../webpack://typescript-action/./node_modules/get-object/index.js","../webpack://typescript-action/./node_modules/get-object/node_modules/is-number/index.js","../webpack://typescript-action/./node_modules/get-object/node_modules/kind-of/index.js","../webpack://typescript-action/./node_modules/get-value/index.js","../webpack://typescript-action/./node_modules/handlebars-helper-create-frame/index.js","../webpack://typescript-action/./node_modules/handlebars-helpers/index.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/array.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/code.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/collection.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/comparison.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/date.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/fs.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/html.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/i18n.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/index.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/inflection.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/logging.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/markdown.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/match.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/math.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/misc.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/number.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/object.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/path.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/regex.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/string.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/url.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/utils/html.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/utils/index.js","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/utils/utils.js","../webpack://typescript-action/./node_modules/handlebars-helpers/node_modules/define-property/index.js","../webpack://typescript-action/./node_modules/handlebars-helpers/node_modules/is-accessor-descriptor/index.js","../webpack://typescript-action/./node_modules/handlebars-helpers/node_modules/is-data-descriptor/index.js","../webpack://typescript-action/./node_modules/handlebars-helpers/node_modules/is-descriptor/index.js","../webpack://typescript-action/./node_modules/handlebars-helpers/node_modules/is-number/index.js","../webpack://typescript-action/./node_modules/handlebars-utils/index.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars.runtime.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/base.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/base.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/decorators.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/exception.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/helpers.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/logger.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/runtime.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","../webpack://typescript-action/./node_modules/handlebars/dist/cjs/handlebars/utils.js","../webpack://typescript-action/./node_modules/handlebars/lib/index.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/array-set.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/base64-vlq.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/base64.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/binary-search.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/mapping-list.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/quick-sort.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/source-map-consumer.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/source-map-generator.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/source-node.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/lib/util.js","../webpack://typescript-action/./node_modules/handlebars/node_modules/source-map/source-map.js","../webpack://typescript-action/./node_modules/has-flag/index.js","../webpack://typescript-action/./node_modules/has-value/index.js","../webpack://typescript-action/./node_modules/has-values/index.js","../webpack://typescript-action/./node_modules/has-values/node_modules/kind-of/index.js","../webpack://typescript-action/./node_modules/helper-date/index.js","../webpack://typescript-action/./node_modules/helper-markdown/index.js","../webpack://typescript-action/./node_modules/helper-md/index.js","../webpack://typescript-action/./node_modules/helper-md/node_modules/extend-shallow/index.js","../webpack://typescript-action/./node_modules/highlight.js/lib/highlight.js","../webpack://typescript-action/./node_modules/highlight.js/lib/index.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/1c.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/abnf.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/accesslog.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/actionscript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/ada.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/angelscript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/apache.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/applescript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/arcade.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/arduino.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/armasm.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/asciidoc.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/aspectj.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/autohotkey.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/autoit.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/avrasm.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/awk.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/axapta.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/bash.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/basic.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/bnf.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/brainfuck.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/cal.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/capnproto.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/ceylon.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/clean.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/clojure-repl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/clojure.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/cmake.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/coffeescript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/coq.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/cos.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/cpp.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/crmsh.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/crystal.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/cs.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/csp.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/css.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/d.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/dart.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/delphi.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/diff.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/django.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/dns.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/dockerfile.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/dos.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/dsconfig.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/dts.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/dust.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/ebnf.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/elixir.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/elm.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/erb.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/erlang-repl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/erlang.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/excel.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/fix.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/flix.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/fortran.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/fsharp.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/gams.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/gauss.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/gcode.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/gherkin.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/glsl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/gml.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/go.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/golo.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/gradle.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/groovy.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/haml.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/handlebars.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/haskell.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/haxe.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/hsp.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/htmlbars.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/http.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/hy.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/inform7.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/ini.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/irpf90.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/isbl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/java.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/javascript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/jboss-cli.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/json.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/julia-repl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/julia.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/kotlin.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/lasso.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/ldif.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/leaf.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/less.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/lisp.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/livecodeserver.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/livescript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/llvm.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/lsl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/lua.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/makefile.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/markdown.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/mathematica.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/matlab.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/maxima.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/mel.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/mercury.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/mipsasm.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/mizar.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/mojolicious.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/monkey.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/moonscript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/n1ql.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/nginx.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/nimrod.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/nix.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/nsis.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/objectivec.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/ocaml.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/openscad.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/oxygene.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/parser3.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/perl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/pf.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/pgsql.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/php.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/plaintext.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/pony.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/powershell.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/processing.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/profile.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/prolog.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/properties.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/protobuf.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/puppet.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/purebasic.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/python.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/q.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/qml.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/r.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/reasonml.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/rib.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/roboconf.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/routeros.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/rsl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/ruby.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/ruleslanguage.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/rust.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/sas.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/scala.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/scheme.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/scilab.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/scss.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/shell.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/smali.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/smalltalk.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/sml.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/sqf.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/sql.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/stan.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/stata.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/step21.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/stylus.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/subunit.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/swift.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/taggerscript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/tap.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/tcl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/tex.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/thrift.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/tp.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/twig.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/typescript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/vala.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/vbnet.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/vbscript-html.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/vbscript.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/verilog.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/vhdl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/vim.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/x86asm.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/xl.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/xml.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/xquery.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/yaml.js","../webpack://typescript-action/./node_modules/highlight.js/lib/languages/zephir.js","../webpack://typescript-action/./node_modules/info-symbol/index.js","../webpack://typescript-action/./node_modules/is-buffer/index.js","../webpack://typescript-action/./node_modules/is-even/index.js","../webpack://typescript-action/./node_modules/is-extendable/index.js","../webpack://typescript-action/./node_modules/is-extglob/index.js","../webpack://typescript-action/./node_modules/is-glob/index.js","../webpack://typescript-action/./node_modules/is-number/index.js","../webpack://typescript-action/./node_modules/is-number/node_modules/kind-of/index.js","../webpack://typescript-action/./node_modules/is-odd/index.js","../webpack://typescript-action/./node_modules/isarray/index.js","../webpack://typescript-action/./node_modules/isobject/index.js","../webpack://typescript-action/./node_modules/kind-of/index.js","../webpack://typescript-action/./node_modules/lazy-cache/index.js","../webpack://typescript-action/./node_modules/log-ok/index.js","../webpack://typescript-action/./node_modules/log-utils/index.js","../webpack://typescript-action/./node_modules/log-utils/node_modules/ansi-colors/index.js","../webpack://typescript-action/./node_modules/logging-helpers/index.js","../webpack://typescript-action/./node_modules/moment/moment.js","../webpack://typescript-action/./node_modules/node-fetch/lib/index.js","../webpack://typescript-action/./node_modules/once/once.js","../webpack://typescript-action/./node_modules/relative/index.js","../webpack://typescript-action/./node_modules/relative/node_modules/isobject/index.js","../webpack://typescript-action/./node_modules/remarkable/index.js","../webpack://typescript-action/./node_modules/remarkable/lib/common/entities.js","../webpack://typescript-action/./node_modules/remarkable/lib/common/html_blocks.js","../webpack://typescript-action/./node_modules/remarkable/lib/common/html_re.js","../webpack://typescript-action/./node_modules/remarkable/lib/common/url_schemas.js","../webpack://typescript-action/./node_modules/remarkable/lib/common/utils.js","../webpack://typescript-action/./node_modules/remarkable/lib/configs/commonmark.js","../webpack://typescript-action/./node_modules/remarkable/lib/configs/default.js","../webpack://typescript-action/./node_modules/remarkable/lib/configs/full.js","../webpack://typescript-action/./node_modules/remarkable/lib/helpers/normalize_link.js","../webpack://typescript-action/./node_modules/remarkable/lib/helpers/normalize_reference.js","../webpack://typescript-action/./node_modules/remarkable/lib/helpers/parse_link_destination.js","../webpack://typescript-action/./node_modules/remarkable/lib/helpers/parse_link_label.js","../webpack://typescript-action/./node_modules/remarkable/lib/helpers/parse_link_title.js","../webpack://typescript-action/./node_modules/remarkable/lib/index.js","../webpack://typescript-action/./node_modules/remarkable/lib/parser_block.js","../webpack://typescript-action/./node_modules/remarkable/lib/parser_core.js","../webpack://typescript-action/./node_modules/remarkable/lib/parser_inline.js","../webpack://typescript-action/./node_modules/remarkable/lib/renderer.js","../webpack://typescript-action/./node_modules/remarkable/lib/ruler.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/blockquote.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/code.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/deflist.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/fences.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/footnote.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/heading.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/hr.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/htmlblock.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/lheading.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/list.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/paragraph.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/state_block.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_block/table.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_core/abbr.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_core/abbr2.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_core/block.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_core/footnote_tail.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_core/inline.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_core/linkify.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_core/references.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_core/replacements.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_core/smartquotes.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/autolink.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/backticks.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/del.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/emphasis.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/entity.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/escape.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/footnote_inline.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/footnote_ref.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/htmltag.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/ins.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/links.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/mark.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/newline.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/state_inline.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/sub.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/sup.js","../webpack://typescript-action/./node_modules/remarkable/lib/rules_inline/text.js","../webpack://typescript-action/./node_modules/set-getter/index.js","../webpack://typescript-action/./node_modules/striptags/src/striptags.js","../webpack://typescript-action/./node_modules/success-symbol/index.js","../webpack://typescript-action/./node_modules/supports-color/index.js","../webpack://typescript-action/./node_modules/time-stamp/index.js","../webpack://typescript-action/./node_modules/to-object-path/index.js","../webpack://typescript-action/./node_modules/to-object-path/node_modules/kind-of/index.js","../webpack://typescript-action/./node_modules/tunnel/index.js","../webpack://typescript-action/./node_modules/tunnel/lib/tunnel.js","../webpack://typescript-action/./node_modules/typeof-article/index.js","../webpack://typescript-action/./node_modules/typeof-article/node_modules/kind-of/index.js","../webpack://typescript-action/./node_modules/universal-user-agent/dist-node/index.js","../webpack://typescript-action/./node_modules/warning-symbol/index.js","../webpack://typescript-action/./node_modules/wrappy/wrappy.js","../webpack://typescript-action/./node_modules/year/index.js","../webpack://typescript-action/./node_modules/@vercel/ncc/dist/ncc/@@notfound.js","../webpack://typescript-action/./node_modules/create-frame|sync","../webpack://typescript-action/./node_modules/handlebars-helpers/lib/utils|sync","../webpack://typescript-action/./node_modules/log-utils/node_modules/ansi-colors|sync","../webpack://typescript-action/./node_modules/log-utils|sync","../webpack://typescript-action/external \"assert\"","../webpack://typescript-action/external \"events\"","../webpack://typescript-action/external \"fs\"","../webpack://typescript-action/external \"http\"","../webpack://typescript-action/external \"https\"","../webpack://typescript-action/external \"net\"","../webpack://typescript-action/external \"os\"","../webpack://typescript-action/external \"path\"","../webpack://typescript-action/external \"punycode\"","../webpack://typescript-action/external \"querystring\"","../webpack://typescript-action/external \"readline\"","../webpack://typescript-action/external \"stream\"","../webpack://typescript-action/external \"tls\"","../webpack://typescript-action/external \"tty\"","../webpack://typescript-action/external \"url\"","../webpack://typescript-action/external \"util\"","../webpack://typescript-action/external \"zlib\"","../webpack://typescript-action/webpack/bootstrap","../webpack://typescript-action/webpack/runtime/hasOwnProperty shorthand","../webpack://typescript-action/webpack/runtime/node module decorator","../webpack://typescript-action/webpack/runtime/compat","../webpack://typescript-action/webpack/startup"],"sourcesContent":[null,null,"\"use strict\";\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result[\"default\"] = mod;\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst os = __importStar(require(\"os\"));\r\nconst utils_1 = require(\"./utils\");\r\n/**\r\n * Commands\r\n *\r\n * Command Format:\r\n * ::name key=value,key=value::message\r\n *\r\n * Examples:\r\n * ::warning::This is the message\r\n * ::set-env name=MY_VAR::some value\r\n */\r\nfunction issueCommand(command, properties, message) {\r\n const cmd = new Command(command, properties, message);\r\n process.stdout.write(cmd.toString() + os.EOL);\r\n}\r\nexports.issueCommand = issueCommand;\r\nfunction issue(name, message = '') {\r\n issueCommand(name, {}, message);\r\n}\r\nexports.issue = issue;\r\nconst CMD_STRING = '::';\r\nclass Command {\r\n constructor(command, properties, message) {\r\n if (!command) {\r\n command = 'missing.command';\r\n }\r\n this.command = command;\r\n this.properties = properties;\r\n this.message = message;\r\n }\r\n toString() {\r\n let cmdStr = CMD_STRING + this.command;\r\n if (this.properties && Object.keys(this.properties).length > 0) {\r\n cmdStr += ' ';\r\n let first = true;\r\n for (const key in this.properties) {\r\n if (this.properties.hasOwnProperty(key)) {\r\n const val = this.properties[key];\r\n if (val) {\r\n if (first) {\r\n first = false;\r\n }\r\n else {\r\n cmdStr += ',';\r\n }\r\n cmdStr += `${key}=${escapeProperty(val)}`;\r\n }\r\n }\r\n }\r\n }\r\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\r\n return cmdStr;\r\n }\r\n}\r\nfunction escapeData(s) {\r\n return utils_1.toCommandValue(s)\r\n .replace(/%/g, '%25')\r\n .replace(/\\r/g, '%0D')\r\n .replace(/\\n/g, '%0A');\r\n}\r\nfunction escapeProperty(s) {\r\n return utils_1.toCommandValue(s)\r\n .replace(/%/g, '%25')\r\n .replace(/\\r/g, '%0D')\r\n .replace(/\\n/g, '%0A')\r\n .replace(/:/g, '%3A')\r\n .replace(/,/g, '%2C');\r\n}\r\n//# sourceMappingURL=command.js.map","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result[\"default\"] = mod;\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst command_1 = require(\"./command\");\r\nconst file_command_1 = require(\"./file-command\");\r\nconst utils_1 = require(\"./utils\");\r\nconst os = __importStar(require(\"os\"));\r\nconst path = __importStar(require(\"path\"));\r\n/**\r\n * The code to exit an action\r\n */\r\nvar ExitCode;\r\n(function (ExitCode) {\r\n /**\r\n * A code indicating that the action was successful\r\n */\r\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\r\n /**\r\n * A code indicating that the action was a failure\r\n */\r\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\r\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\r\n//-----------------------------------------------------------------------\r\n// Variables\r\n//-----------------------------------------------------------------------\r\n/**\r\n * Sets env variable for this action and future actions in the job\r\n * @param name the name of the variable to set\r\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction exportVariable(name, val) {\r\n const convertedVal = utils_1.toCommandValue(val);\r\n process.env[name] = convertedVal;\r\n const filePath = process.env['GITHUB_ENV'] || '';\r\n if (filePath) {\r\n const delimiter = '_GitHubActionsFileCommandDelimeter_';\r\n const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;\r\n file_command_1.issueCommand('ENV', commandValue);\r\n }\r\n else {\r\n command_1.issueCommand('set-env', { name }, convertedVal);\r\n }\r\n}\r\nexports.exportVariable = exportVariable;\r\n/**\r\n * Registers a secret which will get masked from logs\r\n * @param secret value of the secret\r\n */\r\nfunction setSecret(secret) {\r\n command_1.issueCommand('add-mask', {}, secret);\r\n}\r\nexports.setSecret = setSecret;\r\n/**\r\n * Prepends inputPath to the PATH (for this action and future actions)\r\n * @param inputPath\r\n */\r\nfunction addPath(inputPath) {\r\n const filePath = process.env['GITHUB_PATH'] || '';\r\n if (filePath) {\r\n file_command_1.issueCommand('PATH', inputPath);\r\n }\r\n else {\r\n command_1.issueCommand('add-path', {}, inputPath);\r\n }\r\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\r\n}\r\nexports.addPath = addPath;\r\n/**\r\n * Gets the value of an input. The value is also trimmed.\r\n *\r\n * @param name name of the input to get\r\n * @param options optional. See InputOptions.\r\n * @returns string\r\n */\r\nfunction getInput(name, options) {\r\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\r\n if (options && options.required && !val) {\r\n throw new Error(`Input required and not supplied: ${name}`);\r\n }\r\n return val.trim();\r\n}\r\nexports.getInput = getInput;\r\n/**\r\n * Sets the value of an output.\r\n *\r\n * @param name name of the output to set\r\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction setOutput(name, value) {\r\n command_1.issueCommand('set-output', { name }, value);\r\n}\r\nexports.setOutput = setOutput;\r\n/**\r\n * Enables or disables the echoing of commands into stdout for the rest of the step.\r\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\r\n *\r\n */\r\nfunction setCommandEcho(enabled) {\r\n command_1.issue('echo', enabled ? 'on' : 'off');\r\n}\r\nexports.setCommandEcho = setCommandEcho;\r\n//-----------------------------------------------------------------------\r\n// Results\r\n//-----------------------------------------------------------------------\r\n/**\r\n * Sets the action status to failed.\r\n * When the action exits it will be with an exit code of 1\r\n * @param message add error issue message\r\n */\r\nfunction setFailed(message) {\r\n process.exitCode = ExitCode.Failure;\r\n error(message);\r\n}\r\nexports.setFailed = setFailed;\r\n//-----------------------------------------------------------------------\r\n// Logging Commands\r\n//-----------------------------------------------------------------------\r\n/**\r\n * Gets whether Actions Step Debug is on or not\r\n */\r\nfunction isDebug() {\r\n return process.env['RUNNER_DEBUG'] === '1';\r\n}\r\nexports.isDebug = isDebug;\r\n/**\r\n * Writes debug message to user log\r\n * @param message debug message\r\n */\r\nfunction debug(message) {\r\n command_1.issueCommand('debug', {}, message);\r\n}\r\nexports.debug = debug;\r\n/**\r\n * Adds an error issue\r\n * @param message error issue message. Errors will be converted to string via toString()\r\n */\r\nfunction error(message) {\r\n command_1.issue('error', message instanceof Error ? message.toString() : message);\r\n}\r\nexports.error = error;\r\n/**\r\n * Adds an warning issue\r\n * @param message warning issue message. Errors will be converted to string via toString()\r\n */\r\nfunction warning(message) {\r\n command_1.issue('warning', message instanceof Error ? message.toString() : message);\r\n}\r\nexports.warning = warning;\r\n/**\r\n * Writes info to log with console.log.\r\n * @param message info message\r\n */\r\nfunction info(message) {\r\n process.stdout.write(message + os.EOL);\r\n}\r\nexports.info = info;\r\n/**\r\n * Begin an output group.\r\n *\r\n * Output until the next `groupEnd` will be foldable in this group\r\n *\r\n * @param name The name of the output group\r\n */\r\nfunction startGroup(name) {\r\n command_1.issue('group', name);\r\n}\r\nexports.startGroup = startGroup;\r\n/**\r\n * End an output group.\r\n */\r\nfunction endGroup() {\r\n command_1.issue('endgroup');\r\n}\r\nexports.endGroup = endGroup;\r\n/**\r\n * Wrap an asynchronous function call in a group.\r\n *\r\n * Returns the same type as the function itself.\r\n *\r\n * @param name The name of the group\r\n * @param fn The function to wrap in the group\r\n */\r\nfunction group(name, fn) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n startGroup(name);\r\n let result;\r\n try {\r\n result = yield fn();\r\n }\r\n finally {\r\n endGroup();\r\n }\r\n return result;\r\n });\r\n}\r\nexports.group = group;\r\n//-----------------------------------------------------------------------\r\n// Wrapper action state\r\n//-----------------------------------------------------------------------\r\n/**\r\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\r\n *\r\n * @param name name of the state to store\r\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction saveState(name, value) {\r\n command_1.issueCommand('save-state', { name }, value);\r\n}\r\nexports.saveState = saveState;\r\n/**\r\n * Gets the value of an state set by this action's main execution.\r\n *\r\n * @param name name of the state to get\r\n * @returns string\r\n */\r\nfunction getState(name) {\r\n return process.env[`STATE_${name}`] || '';\r\n}\r\nexports.getState = getState;\r\n//# sourceMappingURL=core.js.map","\"use strict\";\r\n// For internal use, subject to change.\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result[\"default\"] = mod;\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// We use any as a valid input type\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nconst fs = __importStar(require(\"fs\"));\r\nconst os = __importStar(require(\"os\"));\r\nconst utils_1 = require(\"./utils\");\r\nfunction issueCommand(command, message) {\r\n const filePath = process.env[`GITHUB_${command}`];\r\n if (!filePath) {\r\n throw new Error(`Unable to find environment variable for file command ${command}`);\r\n }\r\n if (!fs.existsSync(filePath)) {\r\n throw new Error(`Missing file at path: ${filePath}`);\r\n }\r\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\r\n encoding: 'utf8'\r\n });\r\n}\r\nexports.issueCommand = issueCommand;\r\n//# sourceMappingURL=file-command.js.map","\"use strict\";\r\n// We use any as a valid input type\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * Sanitizes an input into a string so it can be passed into issueCommand safely\r\n * @param input input to sanitize into a string\r\n */\r\nfunction toCommandValue(input) {\r\n if (input === null || input === undefined) {\r\n return '';\r\n }\r\n else if (typeof input === 'string' || input instanceof String) {\r\n return input;\r\n }\r\n return JSON.stringify(input);\r\n}\r\nexports.toCommandValue = toCommandValue;\r\n//# sourceMappingURL=utils.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Context = void 0;\r\nconst fs_1 = require(\"fs\");\r\nconst os_1 = require(\"os\");\r\nclass Context {\r\n /**\r\n * Hydrate the context from the environment\r\n */\r\n constructor() {\r\n this.payload = {};\r\n if (process.env.GITHUB_EVENT_PATH) {\r\n if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) {\r\n this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));\r\n }\r\n else {\r\n const path = process.env.GITHUB_EVENT_PATH;\r\n process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);\r\n }\r\n }\r\n this.eventName = process.env.GITHUB_EVENT_NAME;\r\n this.sha = process.env.GITHUB_SHA;\r\n this.ref = process.env.GITHUB_REF;\r\n this.workflow = process.env.GITHUB_WORKFLOW;\r\n this.action = process.env.GITHUB_ACTION;\r\n this.actor = process.env.GITHUB_ACTOR;\r\n this.job = process.env.GITHUB_JOB;\r\n this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);\r\n this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);\r\n }\r\n get issue() {\r\n const payload = this.payload;\r\n return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });\r\n }\r\n get repo() {\r\n if (process.env.GITHUB_REPOSITORY) {\r\n const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');\r\n return { owner, repo };\r\n }\r\n if (this.payload.repository) {\r\n return {\r\n owner: this.payload.repository.owner.login,\r\n repo: this.payload.repository.name\r\n };\r\n }\r\n throw new Error(\"context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'\");\r\n }\r\n}\r\nexports.Context = Context;\r\n//# sourceMappingURL=context.js.map","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getOctokit = exports.context = void 0;\r\nconst Context = __importStar(require(\"./context\"));\r\nconst utils_1 = require(\"./utils\");\r\nexports.context = new Context.Context();\r\n/**\r\n * Returns a hydrated octokit ready to use for GitHub Actions\r\n *\r\n * @param token the repo PAT or GITHUB_TOKEN\r\n * @param options other options to set\r\n */\r\nfunction getOctokit(token, options) {\r\n return new utils_1.GitHub(utils_1.getOctokitOptions(token, options));\r\n}\r\nexports.getOctokit = getOctokit;\r\n//# sourceMappingURL=github.js.map","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0;\r\nconst httpClient = __importStar(require(\"@actions/http-client\"));\r\nfunction getAuthString(token, options) {\r\n if (!token && !options.auth) {\r\n throw new Error('Parameter token or opts.auth is required');\r\n }\r\n else if (token && options.auth) {\r\n throw new Error('Parameters token and opts.auth may not both be specified');\r\n }\r\n return typeof options.auth === 'string' ? options.auth : `token ${token}`;\r\n}\r\nexports.getAuthString = getAuthString;\r\nfunction getProxyAgent(destinationUrl) {\r\n const hc = new httpClient.HttpClient();\r\n return hc.getAgent(destinationUrl);\r\n}\r\nexports.getProxyAgent = getProxyAgent;\r\nfunction getApiBaseUrl() {\r\n return process.env['GITHUB_API_URL'] || 'https://api.github.com';\r\n}\r\nexports.getApiBaseUrl = getApiBaseUrl;\r\n//# sourceMappingURL=utils.js.map","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getOctokitOptions = exports.GitHub = exports.context = void 0;\r\nconst Context = __importStar(require(\"./context\"));\r\nconst Utils = __importStar(require(\"./internal/utils\"));\r\n// octokit + plugins\r\nconst core_1 = require(\"@octokit/core\");\r\nconst plugin_rest_endpoint_methods_1 = require(\"@octokit/plugin-rest-endpoint-methods\");\r\nconst plugin_paginate_rest_1 = require(\"@octokit/plugin-paginate-rest\");\r\nexports.context = new Context.Context();\r\nconst baseUrl = Utils.getApiBaseUrl();\r\nconst defaults = {\r\n baseUrl,\r\n request: {\r\n agent: Utils.getProxyAgent(baseUrl)\r\n }\r\n};\r\nexports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(defaults);\r\n/**\r\n * Convience function to correctly format Octokit Options to pass into the constructor.\r\n *\r\n * @param token the repo PAT or GITHUB_TOKEN\r\n * @param options other options to set\r\n */\r\nfunction getOctokitOptions(token, options) {\r\n const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller\r\n // Auth\r\n const auth = Utils.getAuthString(token, opts);\r\n if (auth) {\r\n opts.auth = auth;\r\n }\r\n return opts;\r\n}\r\nexports.getOctokitOptions = getOctokitOptions;\r\n//# sourceMappingURL=utils.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst http = require(\"http\");\r\nconst https = require(\"https\");\r\nconst pm = require(\"./proxy\");\r\nlet tunnel;\r\nvar HttpCodes;\r\n(function (HttpCodes) {\r\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\r\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\r\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\r\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\r\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\r\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\r\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\r\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\r\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\r\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\r\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\r\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\r\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\r\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\r\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\r\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\r\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\r\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\r\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\r\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\r\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\r\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\r\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\r\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\r\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\r\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\r\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\r\n})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));\r\nvar Headers;\r\n(function (Headers) {\r\n Headers[\"Accept\"] = \"accept\";\r\n Headers[\"ContentType\"] = \"content-type\";\r\n})(Headers = exports.Headers || (exports.Headers = {}));\r\nvar MediaTypes;\r\n(function (MediaTypes) {\r\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\r\n})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));\r\n/**\r\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\r\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\r\n */\r\nfunction getProxyUrl(serverUrl) {\r\n let proxyUrl = pm.getProxyUrl(new URL(serverUrl));\r\n return proxyUrl ? proxyUrl.href : '';\r\n}\r\nexports.getProxyUrl = getProxyUrl;\r\nconst HttpRedirectCodes = [\r\n HttpCodes.MovedPermanently,\r\n HttpCodes.ResourceMoved,\r\n HttpCodes.SeeOther,\r\n HttpCodes.TemporaryRedirect,\r\n HttpCodes.PermanentRedirect\r\n];\r\nconst HttpResponseRetryCodes = [\r\n HttpCodes.BadGateway,\r\n HttpCodes.ServiceUnavailable,\r\n HttpCodes.GatewayTimeout\r\n];\r\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\r\nconst ExponentialBackoffCeiling = 10;\r\nconst ExponentialBackoffTimeSlice = 5;\r\nclass HttpClientError extends Error {\r\n constructor(message, statusCode) {\r\n super(message);\r\n this.name = 'HttpClientError';\r\n this.statusCode = statusCode;\r\n Object.setPrototypeOf(this, HttpClientError.prototype);\r\n }\r\n}\r\nexports.HttpClientError = HttpClientError;\r\nclass HttpClientResponse {\r\n constructor(message) {\r\n this.message = message;\r\n }\r\n readBody() {\r\n return new Promise(async (resolve, reject) => {\r\n let output = Buffer.alloc(0);\r\n this.message.on('data', (chunk) => {\r\n output = Buffer.concat([output, chunk]);\r\n });\r\n this.message.on('end', () => {\r\n resolve(output.toString());\r\n });\r\n });\r\n }\r\n}\r\nexports.HttpClientResponse = HttpClientResponse;\r\nfunction isHttps(requestUrl) {\r\n let parsedUrl = new URL(requestUrl);\r\n return parsedUrl.protocol === 'https:';\r\n}\r\nexports.isHttps = isHttps;\r\nclass HttpClient {\r\n constructor(userAgent, handlers, requestOptions) {\r\n this._ignoreSslError = false;\r\n this._allowRedirects = true;\r\n this._allowRedirectDowngrade = false;\r\n this._maxRedirects = 50;\r\n this._allowRetries = false;\r\n this._maxRetries = 1;\r\n this._keepAlive = false;\r\n this._disposed = false;\r\n this.userAgent = userAgent;\r\n this.handlers = handlers || [];\r\n this.requestOptions = requestOptions;\r\n if (requestOptions) {\r\n if (requestOptions.ignoreSslError != null) {\r\n this._ignoreSslError = requestOptions.ignoreSslError;\r\n }\r\n this._socketTimeout = requestOptions.socketTimeout;\r\n if (requestOptions.allowRedirects != null) {\r\n this._allowRedirects = requestOptions.allowRedirects;\r\n }\r\n if (requestOptions.allowRedirectDowngrade != null) {\r\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\r\n }\r\n if (requestOptions.maxRedirects != null) {\r\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\r\n }\r\n if (requestOptions.keepAlive != null) {\r\n this._keepAlive = requestOptions.keepAlive;\r\n }\r\n if (requestOptions.allowRetries != null) {\r\n this._allowRetries = requestOptions.allowRetries;\r\n }\r\n if (requestOptions.maxRetries != null) {\r\n this._maxRetries = requestOptions.maxRetries;\r\n }\r\n }\r\n }\r\n options(requestUrl, additionalHeaders) {\r\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\r\n }\r\n get(requestUrl, additionalHeaders) {\r\n return this.request('GET', requestUrl, null, additionalHeaders || {});\r\n }\r\n del(requestUrl, additionalHeaders) {\r\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\r\n }\r\n post(requestUrl, data, additionalHeaders) {\r\n return this.request('POST', requestUrl, data, additionalHeaders || {});\r\n }\r\n patch(requestUrl, data, additionalHeaders) {\r\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\r\n }\r\n put(requestUrl, data, additionalHeaders) {\r\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\r\n }\r\n head(requestUrl, additionalHeaders) {\r\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\r\n }\r\n sendStream(verb, requestUrl, stream, additionalHeaders) {\r\n return this.request(verb, requestUrl, stream, additionalHeaders);\r\n }\r\n /**\r\n * Gets a typed object from an endpoint\r\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\r\n */\r\n async getJson(requestUrl, additionalHeaders = {}) {\r\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\r\n let res = await this.get(requestUrl, additionalHeaders);\r\n return this._processResponse(res, this.requestOptions);\r\n }\r\n async postJson(requestUrl, obj, additionalHeaders = {}) {\r\n let data = JSON.stringify(obj, null, 2);\r\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\r\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\r\n let res = await this.post(requestUrl, data, additionalHeaders);\r\n return this._processResponse(res, this.requestOptions);\r\n }\r\n async putJson(requestUrl, obj, additionalHeaders = {}) {\r\n let data = JSON.stringify(obj, null, 2);\r\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\r\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\r\n let res = await this.put(requestUrl, data, additionalHeaders);\r\n return this._processResponse(res, this.requestOptions);\r\n }\r\n async patchJson(requestUrl, obj, additionalHeaders = {}) {\r\n let data = JSON.stringify(obj, null, 2);\r\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\r\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\r\n let res = await this.patch(requestUrl, data, additionalHeaders);\r\n return this._processResponse(res, this.requestOptions);\r\n }\r\n /**\r\n * Makes a raw http request.\r\n * All other methods such as get, post, patch, and request ultimately call this.\r\n * Prefer get, del, post and patch\r\n */\r\n async request(verb, requestUrl, data, headers) {\r\n if (this._disposed) {\r\n throw new Error('Client has already been disposed.');\r\n }\r\n let parsedUrl = new URL(requestUrl);\r\n let info = this._prepareRequest(verb, parsedUrl, headers);\r\n // Only perform retries on reads since writes may not be idempotent.\r\n let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1\r\n ? this._maxRetries + 1\r\n : 1;\r\n let numTries = 0;\r\n let response;\r\n while (numTries < maxTries) {\r\n response = await this.requestRaw(info, data);\r\n // Check if it's an authentication challenge\r\n if (response &&\r\n response.message &&\r\n response.message.statusCode === HttpCodes.Unauthorized) {\r\n let authenticationHandler;\r\n for (let i = 0; i < this.handlers.length; i++) {\r\n if (this.handlers[i].canHandleAuthentication(response)) {\r\n authenticationHandler = this.handlers[i];\r\n break;\r\n }\r\n }\r\n if (authenticationHandler) {\r\n return authenticationHandler.handleAuthentication(this, info, data);\r\n }\r\n else {\r\n // We have received an unauthorized response but have no handlers to handle it.\r\n // Let the response return to the caller.\r\n return response;\r\n }\r\n }\r\n let redirectsRemaining = this._maxRedirects;\r\n while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 &&\r\n this._allowRedirects &&\r\n redirectsRemaining > 0) {\r\n const redirectUrl = response.message.headers['location'];\r\n if (!redirectUrl) {\r\n // if there's no location to redirect to, we won't\r\n break;\r\n }\r\n let parsedRedirectUrl = new URL(redirectUrl);\r\n if (parsedUrl.protocol == 'https:' &&\r\n parsedUrl.protocol != parsedRedirectUrl.protocol &&\r\n !this._allowRedirectDowngrade) {\r\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\r\n }\r\n // we need to finish reading the response before reassigning response\r\n // which will leak the open socket.\r\n await response.readBody();\r\n // strip authorization header if redirected to a different hostname\r\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\r\n for (let header in headers) {\r\n // header names are case insensitive\r\n if (header.toLowerCase() === 'authorization') {\r\n delete headers[header];\r\n }\r\n }\r\n }\r\n // let's make the request with the new redirectUrl\r\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\r\n response = await this.requestRaw(info, data);\r\n redirectsRemaining--;\r\n }\r\n if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) {\r\n // If not a retry code, return immediately instead of retrying\r\n return response;\r\n }\r\n numTries += 1;\r\n if (numTries < maxTries) {\r\n await response.readBody();\r\n await this._performExponentialBackoff(numTries);\r\n }\r\n }\r\n return response;\r\n }\r\n /**\r\n * Needs to be called if keepAlive is set to true in request options.\r\n */\r\n dispose() {\r\n if (this._agent) {\r\n this._agent.destroy();\r\n }\r\n this._disposed = true;\r\n }\r\n /**\r\n * Raw request.\r\n * @param info\r\n * @param data\r\n */\r\n requestRaw(info, data) {\r\n return new Promise((resolve, reject) => {\r\n let callbackForResult = function (err, res) {\r\n if (err) {\r\n reject(err);\r\n }\r\n resolve(res);\r\n };\r\n this.requestRawWithCallback(info, data, callbackForResult);\r\n });\r\n }\r\n /**\r\n * Raw request with callback.\r\n * @param info\r\n * @param data\r\n * @param onResult\r\n */\r\n requestRawWithCallback(info, data, onResult) {\r\n let socket;\r\n if (typeof data === 'string') {\r\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\r\n }\r\n let callbackCalled = false;\r\n let handleResult = (err, res) => {\r\n if (!callbackCalled) {\r\n callbackCalled = true;\r\n onResult(err, res);\r\n }\r\n };\r\n let req = info.httpModule.request(info.options, (msg) => {\r\n let res = new HttpClientResponse(msg);\r\n handleResult(null, res);\r\n });\r\n req.on('socket', sock => {\r\n socket = sock;\r\n });\r\n // If we ever get disconnected, we want the socket to timeout eventually\r\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\r\n if (socket) {\r\n socket.end();\r\n }\r\n handleResult(new Error('Request timeout: ' + info.options.path), null);\r\n });\r\n req.on('error', function (err) {\r\n // err has statusCode property\r\n // res should have headers\r\n handleResult(err, null);\r\n });\r\n if (data && typeof data === 'string') {\r\n req.write(data, 'utf8');\r\n }\r\n if (data && typeof data !== 'string') {\r\n data.on('close', function () {\r\n req.end();\r\n });\r\n data.pipe(req);\r\n }\r\n else {\r\n req.end();\r\n }\r\n }\r\n /**\r\n * Gets an http agent. This function is useful when you need an http agent that handles\r\n * routing through a proxy server - depending upon the url and proxy environment variables.\r\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\r\n */\r\n getAgent(serverUrl) {\r\n let parsedUrl = new URL(serverUrl);\r\n return this._getAgent(parsedUrl);\r\n }\r\n _prepareRequest(method, requestUrl, headers) {\r\n const info = {};\r\n info.parsedUrl = requestUrl;\r\n const usingSsl = info.parsedUrl.protocol === 'https:';\r\n info.httpModule = usingSsl ? https : http;\r\n const defaultPort = usingSsl ? 443 : 80;\r\n info.options = {};\r\n info.options.host = info.parsedUrl.hostname;\r\n info.options.port = info.parsedUrl.port\r\n ? parseInt(info.parsedUrl.port)\r\n : defaultPort;\r\n info.options.path =\r\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\r\n info.options.method = method;\r\n info.options.headers = this._mergeHeaders(headers);\r\n if (this.userAgent != null) {\r\n info.options.headers['user-agent'] = this.userAgent;\r\n }\r\n info.options.agent = this._getAgent(info.parsedUrl);\r\n // gives handlers an opportunity to participate\r\n if (this.handlers) {\r\n this.handlers.forEach(handler => {\r\n handler.prepareRequest(info.options);\r\n });\r\n }\r\n return info;\r\n }\r\n _mergeHeaders(headers) {\r\n const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\r\n if (this.requestOptions && this.requestOptions.headers) {\r\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));\r\n }\r\n return lowercaseKeys(headers || {});\r\n }\r\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\r\n const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\r\n let clientHeader;\r\n if (this.requestOptions && this.requestOptions.headers) {\r\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\r\n }\r\n return additionalHeaders[header] || clientHeader || _default;\r\n }\r\n _getAgent(parsedUrl) {\r\n let agent;\r\n let proxyUrl = pm.getProxyUrl(parsedUrl);\r\n let useProxy = proxyUrl && proxyUrl.hostname;\r\n if (this._keepAlive && useProxy) {\r\n agent = this._proxyAgent;\r\n }\r\n if (this._keepAlive && !useProxy) {\r\n agent = this._agent;\r\n }\r\n // if agent is already assigned use that agent.\r\n if (!!agent) {\r\n return agent;\r\n }\r\n const usingSsl = parsedUrl.protocol === 'https:';\r\n let maxSockets = 100;\r\n if (!!this.requestOptions) {\r\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\r\n }\r\n if (useProxy) {\r\n // If using proxy, need tunnel\r\n if (!tunnel) {\r\n tunnel = require('tunnel');\r\n }\r\n const agentOptions = {\r\n maxSockets: maxSockets,\r\n keepAlive: this._keepAlive,\r\n proxy: {\r\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`,\r\n host: proxyUrl.hostname,\r\n port: proxyUrl.port\r\n }\r\n };\r\n let tunnelAgent;\r\n const overHttps = proxyUrl.protocol === 'https:';\r\n if (usingSsl) {\r\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\r\n }\r\n else {\r\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\r\n }\r\n agent = tunnelAgent(agentOptions);\r\n this._proxyAgent = agent;\r\n }\r\n // if reusing agent across request and tunneling agent isn't assigned create a new agent\r\n if (this._keepAlive && !agent) {\r\n const options = { keepAlive: this._keepAlive, maxSockets: maxSockets };\r\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\r\n this._agent = agent;\r\n }\r\n // if not using private agent and tunnel agent isn't setup then use global agent\r\n if (!agent) {\r\n agent = usingSsl ? https.globalAgent : http.globalAgent;\r\n }\r\n if (usingSsl && this._ignoreSslError) {\r\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\r\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\r\n // we have to cast it to any and change it directly\r\n agent.options = Object.assign(agent.options || {}, {\r\n rejectUnauthorized: false\r\n });\r\n }\r\n return agent;\r\n }\r\n _performExponentialBackoff(retryNumber) {\r\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\r\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\r\n return new Promise(resolve => setTimeout(() => resolve(), ms));\r\n }\r\n static dateTimeDeserializer(key, value) {\r\n if (typeof value === 'string') {\r\n let a = new Date(value);\r\n if (!isNaN(a.valueOf())) {\r\n return a;\r\n }\r\n }\r\n return value;\r\n }\r\n async _processResponse(res, options) {\r\n return new Promise(async (resolve, reject) => {\r\n const statusCode = res.message.statusCode;\r\n const response = {\r\n statusCode: statusCode,\r\n result: null,\r\n headers: {}\r\n };\r\n // not found leads to null obj returned\r\n if (statusCode == HttpCodes.NotFound) {\r\n resolve(response);\r\n }\r\n let obj;\r\n let contents;\r\n // get the result from the body\r\n try {\r\n contents = await res.readBody();\r\n if (contents && contents.length > 0) {\r\n if (options && options.deserializeDates) {\r\n obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);\r\n }\r\n else {\r\n obj = JSON.parse(contents);\r\n }\r\n response.result = obj;\r\n }\r\n response.headers = res.message.headers;\r\n }\r\n catch (err) {\r\n // Invalid resource (contents not json); leaving result obj null\r\n }\r\n // note that 3xx redirects are handled by the http layer.\r\n if (statusCode > 299) {\r\n let msg;\r\n // if exception/error in body, attempt to get better error\r\n if (obj && obj.message) {\r\n msg = obj.message;\r\n }\r\n else if (contents && contents.length > 0) {\r\n // it may be the case that the exception is in the body message as string\r\n msg = contents;\r\n }\r\n else {\r\n msg = 'Failed request: (' + statusCode + ')';\r\n }\r\n let err = new HttpClientError(msg, statusCode);\r\n err.result = response.result;\r\n reject(err);\r\n }\r\n else {\r\n resolve(response);\r\n }\r\n });\r\n }\r\n}\r\nexports.HttpClient = HttpClient;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction getProxyUrl(reqUrl) {\r\n let usingSsl = reqUrl.protocol === 'https:';\r\n let proxyUrl;\r\n if (checkBypass(reqUrl)) {\r\n return proxyUrl;\r\n }\r\n let proxyVar;\r\n if (usingSsl) {\r\n proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];\r\n }\r\n else {\r\n proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];\r\n }\r\n if (proxyVar) {\r\n proxyUrl = new URL(proxyVar);\r\n }\r\n return proxyUrl;\r\n}\r\nexports.getProxyUrl = getProxyUrl;\r\nfunction checkBypass(reqUrl) {\r\n if (!reqUrl.hostname) {\r\n return false;\r\n }\r\n let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\r\n if (!noProxy) {\r\n return false;\r\n }\r\n // Determine the request port\r\n let reqPort;\r\n if (reqUrl.port) {\r\n reqPort = Number(reqUrl.port);\r\n }\r\n else if (reqUrl.protocol === 'http:') {\r\n reqPort = 80;\r\n }\r\n else if (reqUrl.protocol === 'https:') {\r\n reqPort = 443;\r\n }\r\n // Format the request hostname and hostname with port\r\n let upperReqHosts = [reqUrl.hostname.toUpperCase()];\r\n if (typeof reqPort === 'number') {\r\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\r\n }\r\n // Compare request host against noproxy\r\n for (let upperNoProxyItem of noProxy\r\n .split(',')\r\n .map(x => x.trim().toUpperCase())\r\n .filter(x => x)) {\r\n if (upperReqHosts.some(x => x === upperNoProxyItem)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexports.checkBypass = checkBypass;\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\nasync function auth(token) {\r\n const tokenType = token.split(/\\./).length === 3 ? \"app\" : /^v\\d+\\./.test(token) ? \"installation\" : \"oauth\";\r\n return {\r\n type: \"token\",\r\n token: token,\r\n tokenType\r\n };\r\n}\r\n\r\n/**\r\n * Prefix token for usage in the Authorization header\r\n *\r\n * @param token OAuth token or JSON Web Token\r\n */\r\nfunction withAuthorizationPrefix(token) {\r\n if (token.split(/\\./).length === 3) {\r\n return `bearer ${token}`;\r\n }\r\n\r\n return `token ${token}`;\r\n}\r\n\r\nasync function hook(token, request, route, parameters) {\r\n const endpoint = request.endpoint.merge(route, parameters);\r\n endpoint.headers.authorization = withAuthorizationPrefix(token);\r\n return request(endpoint);\r\n}\r\n\r\nconst createTokenAuth = function createTokenAuth(token) {\r\n if (!token) {\r\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\r\n }\r\n\r\n if (typeof token !== \"string\") {\r\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\r\n }\r\n\r\n token = token.replace(/^(token|bearer) +/i, \"\");\r\n return Object.assign(auth.bind(null, token), {\r\n hook: hook.bind(null, token)\r\n });\r\n};\r\n\r\nexports.createTokenAuth = createTokenAuth;\r\n//# sourceMappingURL=index.js.map\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\nvar universalUserAgent = require('universal-user-agent');\r\nvar beforeAfterHook = require('before-after-hook');\r\nvar request = require('@octokit/request');\r\nvar graphql = require('@octokit/graphql');\r\nvar authToken = require('@octokit/auth-token');\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (source == null) return {};\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) continue;\r\n target[key] = source[key];\r\n }\r\n\r\n return target;\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n if (source == null) return {};\r\n\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n\r\n var key, i;\r\n\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) continue;\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\r\n target[key] = source[key];\r\n }\r\n }\r\n\r\n return target;\r\n}\r\n\r\nconst VERSION = \"3.2.4\";\r\n\r\nclass Octokit {\r\n constructor(options = {}) {\r\n const hook = new beforeAfterHook.Collection();\r\n const requestDefaults = {\r\n baseUrl: request.request.endpoint.DEFAULTS.baseUrl,\r\n headers: {},\r\n request: Object.assign({}, options.request, {\r\n hook: hook.bind(null, \"request\")\r\n }),\r\n mediaType: {\r\n previews: [],\r\n format: \"\"\r\n }\r\n }; // prepend default user agent with `options.userAgent` if set\r\n\r\n requestDefaults.headers[\"user-agent\"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(\" \");\r\n\r\n if (options.baseUrl) {\r\n requestDefaults.baseUrl = options.baseUrl;\r\n }\r\n\r\n if (options.previews) {\r\n requestDefaults.mediaType.previews = options.previews;\r\n }\r\n\r\n if (options.timeZone) {\r\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\r\n }\r\n\r\n this.request = request.request.defaults(requestDefaults);\r\n this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults);\r\n this.log = Object.assign({\r\n debug: () => {},\r\n info: () => {},\r\n warn: console.warn.bind(console),\r\n error: console.error.bind(console)\r\n }, options.log);\r\n this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance\r\n // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.\r\n // (2) If only `options.auth` is set, use the default token authentication strategy.\r\n // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.\r\n // TODO: type `options.auth` based on `options.authStrategy`.\r\n\r\n if (!options.authStrategy) {\r\n if (!options.auth) {\r\n // (1)\r\n this.auth = async () => ({\r\n type: \"unauthenticated\"\r\n });\r\n } else {\r\n // (2)\r\n const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\\_(ツ)_/¯\r\n\r\n hook.wrap(\"request\", auth.hook);\r\n this.auth = auth;\r\n }\r\n } else {\r\n const {\r\n authStrategy\r\n } = options,\r\n otherOptions = _objectWithoutProperties(options, [\"authStrategy\"]);\r\n\r\n const auth = authStrategy(Object.assign({\r\n request: this.request,\r\n log: this.log,\r\n // we pass the current octokit instance as well as its constructor options\r\n // to allow for authentication strategies that return a new octokit instance\r\n // that shares the same internal state as the current one. The original\r\n // requirement for this was the \"event-octokit\" authentication strategy\r\n // of https://github.com/probot/octokit-auth-probot.\r\n octokit: this,\r\n octokitOptions: otherOptions\r\n }, options.auth)); // @ts-ignore ¯\\_(ツ)_/¯\r\n\r\n hook.wrap(\"request\", auth.hook);\r\n this.auth = auth;\r\n } // apply plugins\r\n // https://stackoverflow.com/a/16345172\r\n\r\n\r\n const classConstructor = this.constructor;\r\n classConstructor.plugins.forEach(plugin => {\r\n Object.assign(this, plugin(this, options));\r\n });\r\n }\r\n\r\n static defaults(defaults) {\r\n const OctokitWithDefaults = class extends this {\r\n constructor(...args) {\r\n const options = args[0] || {};\r\n\r\n if (typeof defaults === \"function\") {\r\n super(defaults(options));\r\n return;\r\n }\r\n\r\n super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? {\r\n userAgent: `${options.userAgent} ${defaults.userAgent}`\r\n } : null));\r\n }\r\n\r\n };\r\n return OctokitWithDefaults;\r\n }\r\n /**\r\n * Attach a plugin (or many) to your Octokit instance.\r\n *\r\n * @example\r\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\r\n */\r\n\r\n\r\n static plugin(...newPlugins) {\r\n var _a;\r\n\r\n const currentPlugins = this.plugins;\r\n const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a);\r\n return NewOctokit;\r\n }\r\n\r\n}\r\nOctokit.VERSION = VERSION;\r\nOctokit.plugins = [];\r\n\r\nexports.Octokit = Octokit;\r\n//# sourceMappingURL=index.js.map\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\nvar isPlainObject = require('is-plain-object');\r\nvar universalUserAgent = require('universal-user-agent');\r\n\r\nfunction lowercaseKeys(object) {\r\n if (!object) {\r\n return {};\r\n }\r\n\r\n return Object.keys(object).reduce((newObj, key) => {\r\n newObj[key.toLowerCase()] = object[key];\r\n return newObj;\r\n }, {});\r\n}\r\n\r\nfunction mergeDeep(defaults, options) {\r\n const result = Object.assign({}, defaults);\r\n Object.keys(options).forEach(key => {\r\n if (isPlainObject.isPlainObject(options[key])) {\r\n if (!(key in defaults)) Object.assign(result, {\r\n [key]: options[key]\r\n });else result[key] = mergeDeep(defaults[key], options[key]);\r\n } else {\r\n Object.assign(result, {\r\n [key]: options[key]\r\n });\r\n }\r\n });\r\n return result;\r\n}\r\n\r\nfunction removeUndefinedProperties(obj) {\r\n for (const key in obj) {\r\n if (obj[key] === undefined) {\r\n delete obj[key];\r\n }\r\n }\r\n\r\n return obj;\r\n}\r\n\r\nfunction merge(defaults, route, options) {\r\n if (typeof route === \"string\") {\r\n let [method, url] = route.split(\" \");\r\n options = Object.assign(url ? {\r\n method,\r\n url\r\n } : {\r\n url: method\r\n }, options);\r\n } else {\r\n options = Object.assign({}, route);\r\n } // lowercase header names before merging with defaults to avoid duplicates\r\n\r\n\r\n options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging\r\n\r\n removeUndefinedProperties(options);\r\n removeUndefinedProperties(options.headers);\r\n const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten\r\n\r\n if (defaults && defaults.mediaType.previews.length) {\r\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews);\r\n }\r\n\r\n mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, \"\"));\r\n return mergedOptions;\r\n}\r\n\r\nfunction addQueryParameters(url, parameters) {\r\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\r\n const names = Object.keys(parameters);\r\n\r\n if (names.length === 0) {\r\n return url;\r\n }\r\n\r\n return url + separator + names.map(name => {\r\n if (name === \"q\") {\r\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\r\n }\r\n\r\n return `${name}=${encodeURIComponent(parameters[name])}`;\r\n }).join(\"&\");\r\n}\r\n\r\nconst urlVariableRegex = /\\{[^}]+\\}/g;\r\n\r\nfunction removeNonChars(variableName) {\r\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\r\n}\r\n\r\nfunction extractUrlVariableNames(url) {\r\n const matches = url.match(urlVariableRegex);\r\n\r\n if (!matches) {\r\n return [];\r\n }\r\n\r\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\r\n}\r\n\r\nfunction omit(object, keysToOmit) {\r\n return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => {\r\n obj[key] = object[key];\r\n return obj;\r\n }, {});\r\n}\r\n\r\n// Based on https://github.com/bramstein/url-template, licensed under BSD\r\n// TODO: create separate package.\r\n//\r\n// Copyright (c) 2012-2014, Bram Stein\r\n// All rights reserved.\r\n// Redistribution and use in source and binary forms, with or without\r\n// modification, are permitted provided that the following conditions\r\n// are met:\r\n// 1. Redistributions of source code must retain the above copyright\r\n// notice, this list of conditions and the following disclaimer.\r\n// 2. Redistributions in binary form must reproduce the above copyright\r\n// notice, this list of conditions and the following disclaimer in the\r\n// documentation and/or other materials provided with the distribution.\r\n// 3. The name of the author may not be used to endorse or promote products\r\n// derived from this software without specific prior written permission.\r\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\r\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\r\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\r\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n\r\n/* istanbul ignore file */\r\nfunction encodeReserved(str) {\r\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\r\n if (!/%[0-9A-Fa-f]/.test(part)) {\r\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\r\n }\r\n\r\n return part;\r\n }).join(\"\");\r\n}\r\n\r\nfunction encodeUnreserved(str) {\r\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\r\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\r\n });\r\n}\r\n\r\nfunction encodeValue(operator, value, key) {\r\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\r\n\r\n if (key) {\r\n return encodeUnreserved(key) + \"=\" + value;\r\n } else {\r\n return value;\r\n }\r\n}\r\n\r\nfunction isDefined(value) {\r\n return value !== undefined && value !== null;\r\n}\r\n\r\nfunction isKeyOperator(operator) {\r\n return operator === \";\" || operator === \"&\" || operator === \"?\";\r\n}\r\n\r\nfunction getValues(context, operator, key, modifier) {\r\n var value = context[key],\r\n result = [];\r\n\r\n if (isDefined(value) && value !== \"\") {\r\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\r\n value = value.toString();\r\n\r\n if (modifier && modifier !== \"*\") {\r\n value = value.substring(0, parseInt(modifier, 10));\r\n }\r\n\r\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\r\n } else {\r\n if (modifier === \"*\") {\r\n if (Array.isArray(value)) {\r\n value.filter(isDefined).forEach(function (value) {\r\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\r\n });\r\n } else {\r\n Object.keys(value).forEach(function (k) {\r\n if (isDefined(value[k])) {\r\n result.push(encodeValue(operator, value[k], k));\r\n }\r\n });\r\n }\r\n } else {\r\n const tmp = [];\r\n\r\n if (Array.isArray(value)) {\r\n value.filter(isDefined).forEach(function (value) {\r\n tmp.push(encodeValue(operator, value));\r\n });\r\n } else {\r\n Object.keys(value).forEach(function (k) {\r\n if (isDefined(value[k])) {\r\n tmp.push(encodeUnreserved(k));\r\n tmp.push(encodeValue(operator, value[k].toString()));\r\n }\r\n });\r\n }\r\n\r\n if (isKeyOperator(operator)) {\r\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\r\n } else if (tmp.length !== 0) {\r\n result.push(tmp.join(\",\"));\r\n }\r\n }\r\n }\r\n } else {\r\n if (operator === \";\") {\r\n if (isDefined(value)) {\r\n result.push(encodeUnreserved(key));\r\n }\r\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\r\n result.push(encodeUnreserved(key) + \"=\");\r\n } else if (value === \"\") {\r\n result.push(\"\");\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction parseUrl(template) {\r\n return {\r\n expand: expand.bind(null, template)\r\n };\r\n}\r\n\r\nfunction expand(template, context) {\r\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\r\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\r\n if (expression) {\r\n let operator = \"\";\r\n const values = [];\r\n\r\n if (operators.indexOf(expression.charAt(0)) !== -1) {\r\n operator = expression.charAt(0);\r\n expression = expression.substr(1);\r\n }\r\n\r\n expression.split(/,/g).forEach(function (variable) {\r\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\r\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\r\n });\r\n\r\n if (operator && operator !== \"+\") {\r\n var separator = \",\";\r\n\r\n if (operator === \"?\") {\r\n separator = \"&\";\r\n } else if (operator !== \"#\") {\r\n separator = operator;\r\n }\r\n\r\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\r\n } else {\r\n return values.join(\",\");\r\n }\r\n } else {\r\n return encodeReserved(literal);\r\n }\r\n });\r\n}\r\n\r\nfunction parse(options) {\r\n // https://fetch.spec.whatwg.org/#methods\r\n let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible\r\n\r\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\r\n let headers = Object.assign({}, options.headers);\r\n let body;\r\n let parameters = omit(options, [\"method\", \"baseUrl\", \"url\", \"headers\", \"request\", \"mediaType\"]); // extract variable names from URL to calculate remaining variables later\r\n\r\n const urlVariableNames = extractUrlVariableNames(url);\r\n url = parseUrl(url).expand(parameters);\r\n\r\n if (!/^http/.test(url)) {\r\n url = options.baseUrl + url;\r\n }\r\n\r\n const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat(\"baseUrl\");\r\n const remainingParameters = omit(parameters, omittedParameters);\r\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\r\n\r\n if (!isBinaryRequest) {\r\n if (options.mediaType.format) {\r\n // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\r\n headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(\",\");\r\n }\r\n\r\n if (options.mediaType.previews.length) {\r\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\r\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => {\r\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\r\n return `application/vnd.github.${preview}-preview${format}`;\r\n }).join(\",\");\r\n }\r\n } // for GET/HEAD requests, set URL query parameters from remaining parameters\r\n // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\r\n\r\n\r\n if ([\"GET\", \"HEAD\"].includes(method)) {\r\n url = addQueryParameters(url, remainingParameters);\r\n } else {\r\n if (\"data\" in remainingParameters) {\r\n body = remainingParameters.data;\r\n } else {\r\n if (Object.keys(remainingParameters).length) {\r\n body = remainingParameters;\r\n } else {\r\n headers[\"content-length\"] = 0;\r\n }\r\n }\r\n } // default content-type for JSON if body is set\r\n\r\n\r\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\r\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\r\n } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\r\n // fetch does not allow to set `content-length` header, but we can set body to an empty string\r\n\r\n\r\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\r\n body = \"\";\r\n } // Only return body/request keys if present\r\n\r\n\r\n return Object.assign({\r\n method,\r\n url,\r\n headers\r\n }, typeof body !== \"undefined\" ? {\r\n body\r\n } : null, options.request ? {\r\n request: options.request\r\n } : null);\r\n}\r\n\r\nfunction endpointWithDefaults(defaults, route, options) {\r\n return parse(merge(defaults, route, options));\r\n}\r\n\r\nfunction withDefaults(oldDefaults, newDefaults) {\r\n const DEFAULTS = merge(oldDefaults, newDefaults);\r\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\r\n return Object.assign(endpoint, {\r\n DEFAULTS,\r\n defaults: withDefaults.bind(null, DEFAULTS),\r\n merge: merge.bind(null, DEFAULTS),\r\n parse\r\n });\r\n}\r\n\r\nconst VERSION = \"6.0.10\";\r\n\r\nconst userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.\r\n// So we use RequestParameters and add method as additional required property.\r\n\r\nconst DEFAULTS = {\r\n method: \"GET\",\r\n baseUrl: \"https://api.github.com\",\r\n headers: {\r\n accept: \"application/vnd.github.v3+json\",\r\n \"user-agent\": userAgent\r\n },\r\n mediaType: {\r\n format: \"\",\r\n previews: []\r\n }\r\n};\r\n\r\nconst endpoint = withDefaults(null, DEFAULTS);\r\n\r\nexports.endpoint = endpoint;\r\n//# sourceMappingURL=index.js.map\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\n/*!\r\n * is-plain-object \r\n *\r\n * Copyright (c) 2014-2017, Jon Schlinkert.\r\n * Released under the MIT License.\r\n */\r\n\r\nfunction isObject(o) {\r\n return Object.prototype.toString.call(o) === '[object Object]';\r\n}\r\n\r\nfunction isPlainObject(o) {\r\n var ctor,prot;\r\n\r\n if (isObject(o) === false) return false;\r\n\r\n // If has modified constructor\r\n ctor = o.constructor;\r\n if (ctor === undefined) return true;\r\n\r\n // If has modified prototype\r\n prot = ctor.prototype;\r\n if (isObject(prot) === false) return false;\r\n\r\n // If constructor does not have an Object-specific method\r\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\r\n return false;\r\n }\r\n\r\n // Most likely a plain Object\r\n return true;\r\n}\r\n\r\nexports.isPlainObject = isPlainObject;\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\nvar request = require('@octokit/request');\r\nvar universalUserAgent = require('universal-user-agent');\r\n\r\nconst VERSION = \"4.5.8\";\r\n\r\nclass GraphqlError extends Error {\r\n constructor(request, response) {\r\n const message = response.data.errors[0].message;\r\n super(message);\r\n Object.assign(this, response.data);\r\n Object.assign(this, {\r\n headers: response.headers\r\n });\r\n this.name = \"GraphqlError\";\r\n this.request = request; // Maintains proper stack trace (only available on V8)\r\n\r\n /* istanbul ignore next */\r\n\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, this.constructor);\r\n }\r\n }\r\n\r\n}\r\n\r\nconst NON_VARIABLE_OPTIONS = [\"method\", \"baseUrl\", \"url\", \"headers\", \"request\", \"query\", \"mediaType\"];\r\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\r\nfunction graphql(request, query, options) {\r\n if (typeof query === \"string\" && options && \"query\" in options) {\r\n return Promise.reject(new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`));\r\n }\r\n\r\n const parsedOptions = typeof query === \"string\" ? Object.assign({\r\n query\r\n }, options) : query;\r\n const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {\r\n if (NON_VARIABLE_OPTIONS.includes(key)) {\r\n result[key] = parsedOptions[key];\r\n return result;\r\n }\r\n\r\n if (!result.variables) {\r\n result.variables = {};\r\n }\r\n\r\n result.variables[key] = parsedOptions[key];\r\n return result;\r\n }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix\r\n // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451\r\n\r\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\r\n\r\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\r\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\r\n }\r\n\r\n return request(requestOptions).then(response => {\r\n if (response.data.errors) {\r\n const headers = {};\r\n\r\n for (const key of Object.keys(response.headers)) {\r\n headers[key] = response.headers[key];\r\n }\r\n\r\n throw new GraphqlError(requestOptions, {\r\n headers,\r\n data: response.data\r\n });\r\n }\r\n\r\n return response.data.data;\r\n });\r\n}\r\n\r\nfunction withDefaults(request$1, newDefaults) {\r\n const newRequest = request$1.defaults(newDefaults);\r\n\r\n const newApi = (query, options) => {\r\n return graphql(newRequest, query, options);\r\n };\r\n\r\n return Object.assign(newApi, {\r\n defaults: withDefaults.bind(null, newRequest),\r\n endpoint: request.request.endpoint\r\n });\r\n}\r\n\r\nconst graphql$1 = withDefaults(request.request, {\r\n headers: {\r\n \"user-agent\": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}`\r\n },\r\n method: \"POST\",\r\n url: \"/graphql\"\r\n});\r\nfunction withCustomRequest(customRequest) {\r\n return withDefaults(customRequest, {\r\n method: \"POST\",\r\n url: \"/graphql\"\r\n });\r\n}\r\n\r\nexports.graphql = graphql$1;\r\nexports.withCustomRequest = withCustomRequest;\r\n//# sourceMappingURL=index.js.map\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\nconst VERSION = \"2.6.2\";\r\n\r\n/**\r\n * Some “list” response that can be paginated have a different response structure\r\n *\r\n * They have a `total_count` key in the response (search also has `incomplete_results`,\r\n * /installation/repositories also has `repository_selection`), as well as a key with\r\n * the list of the items which name varies from endpoint to endpoint.\r\n *\r\n * Octokit normalizes these responses so that paginated results are always returned following\r\n * the same structure. One challenge is that if the list response has only one page, no Link\r\n * header is provided, so this header alone is not sufficient to check wether a response is\r\n * paginated or not.\r\n *\r\n * We check if a \"total_count\" key is present in the response data, but also make sure that\r\n * a \"url\" property is not, as the \"Get the combined status for a specific ref\" endpoint would\r\n * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\r\n */\r\nfunction normalizePaginatedListResponse(response) {\r\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\r\n if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way\r\n // to retrieve the same information.\r\n\r\n const incompleteResults = response.data.incomplete_results;\r\n const repositorySelection = response.data.repository_selection;\r\n const totalCount = response.data.total_count;\r\n delete response.data.incomplete_results;\r\n delete response.data.repository_selection;\r\n delete response.data.total_count;\r\n const namespaceKey = Object.keys(response.data)[0];\r\n const data = response.data[namespaceKey];\r\n response.data = data;\r\n\r\n if (typeof incompleteResults !== \"undefined\") {\r\n response.data.incomplete_results = incompleteResults;\r\n }\r\n\r\n if (typeof repositorySelection !== \"undefined\") {\r\n response.data.repository_selection = repositorySelection;\r\n }\r\n\r\n response.data.total_count = totalCount;\r\n return response;\r\n}\r\n\r\nfunction iterator(octokit, route, parameters) {\r\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\r\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\r\n const method = options.method;\r\n const headers = options.headers;\r\n let url = options.url;\r\n return {\r\n [Symbol.asyncIterator]: () => ({\r\n async next() {\r\n if (!url) return {\r\n done: true\r\n };\r\n const response = await requestMethod({\r\n method,\r\n url,\r\n headers\r\n });\r\n const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format:\r\n // '; rel=\"next\", ; rel=\"last\"'\r\n // sets `url` to undefined if \"next\" URL is not present or `link` header is not set\r\n\r\n url = ((normalizedResponse.headers.link || \"\").match(/<([^>]+)>;\\s*rel=\"next\"/) || [])[1];\r\n return {\r\n value: normalizedResponse\r\n };\r\n }\r\n\r\n })\r\n };\r\n}\r\n\r\nfunction paginate(octokit, route, parameters, mapFn) {\r\n if (typeof parameters === \"function\") {\r\n mapFn = parameters;\r\n parameters = undefined;\r\n }\r\n\r\n return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);\r\n}\r\n\r\nfunction gather(octokit, results, iterator, mapFn) {\r\n return iterator.next().then(result => {\r\n if (result.done) {\r\n return results;\r\n }\r\n\r\n let earlyExit = false;\r\n\r\n function done() {\r\n earlyExit = true;\r\n }\r\n\r\n results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);\r\n\r\n if (earlyExit) {\r\n return results;\r\n }\r\n\r\n return gather(octokit, results, iterator, mapFn);\r\n });\r\n}\r\n\r\nconst composePaginateRest = Object.assign(paginate, {\r\n iterator\r\n});\r\n\r\n/**\r\n * @param octokit Octokit instance\r\n * @param options Options passed to Octokit constructor\r\n */\r\n\r\nfunction paginateRest(octokit) {\r\n return {\r\n paginate: Object.assign(paginate.bind(null, octokit), {\r\n iterator: iterator.bind(null, octokit)\r\n })\r\n };\r\n}\r\npaginateRest.VERSION = VERSION;\r\n\r\nexports.composePaginateRest = composePaginateRest;\r\nexports.paginateRest = paginateRest;\r\n//# sourceMappingURL=index.js.map\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\nconst Endpoints = {\r\n actions: {\r\n addSelectedRepoToOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"],\r\n cancelWorkflowRun: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"],\r\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\r\n createOrUpdateRepoSecret: [\"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\r\n createRegistrationTokenForOrg: [\"POST /orgs/{org}/actions/runners/registration-token\"],\r\n createRegistrationTokenForRepo: [\"POST /repos/{owner}/{repo}/actions/runners/registration-token\"],\r\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\r\n createRemoveTokenForRepo: [\"POST /repos/{owner}/{repo}/actions/runners/remove-token\"],\r\n createWorkflowDispatch: [\"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"],\r\n deleteArtifact: [\"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\r\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\r\n deleteRepoSecret: [\"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\r\n deleteSelfHostedRunnerFromOrg: [\"DELETE /orgs/{org}/actions/runners/{runner_id}\"],\r\n deleteSelfHostedRunnerFromRepo: [\"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"],\r\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\r\n deleteWorkflowRunLogs: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"],\r\n disableSelectedRepositoryGithubActionsOrganization: [\"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"],\r\n disableWorkflow: [\"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"],\r\n downloadArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"],\r\n downloadJobLogsForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"],\r\n downloadWorkflowRunLogs: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"],\r\n enableSelectedRepositoryGithubActionsOrganization: [\"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"],\r\n enableWorkflow: [\"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"],\r\n getAllowedActionsOrganization: [\"GET /orgs/{org}/actions/permissions/selected-actions\"],\r\n getAllowedActionsRepository: [\"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"],\r\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\r\n getGithubActionsPermissionsOrganization: [\"GET /orgs/{org}/actions/permissions\"],\r\n getGithubActionsPermissionsRepository: [\"GET /repos/{owner}/{repo}/actions/permissions\"],\r\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\r\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\r\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\r\n getRepoPermissions: [\"GET /repos/{owner}/{repo}/actions/permissions\", {}, {\r\n renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"]\r\n }],\r\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\r\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\r\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\r\n getSelfHostedRunnerForRepo: [\"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"],\r\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\r\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\r\n getWorkflowRunUsage: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"],\r\n getWorkflowUsage: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"],\r\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\r\n listJobsForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"],\r\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\r\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\r\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\r\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\r\n listRunnerApplicationsForRepo: [\"GET /repos/{owner}/{repo}/actions/runners/downloads\"],\r\n listSelectedReposForOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"],\r\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\"GET /orgs/{org}/actions/permissions/repositories\"],\r\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\r\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\r\n listWorkflowRunArtifacts: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"],\r\n listWorkflowRuns: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"],\r\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\r\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\r\n removeSelectedRepoFromOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"],\r\n setAllowedActionsOrganization: [\"PUT /orgs/{org}/actions/permissions/selected-actions\"],\r\n setAllowedActionsRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"],\r\n setGithubActionsPermissionsOrganization: [\"PUT /orgs/{org}/actions/permissions\"],\r\n setGithubActionsPermissionsRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions\"],\r\n setSelectedReposForOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"],\r\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\"PUT /orgs/{org}/actions/permissions/repositories\"]\r\n },\r\n activity: {\r\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\r\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\r\n deleteThreadSubscription: [\"DELETE /notifications/threads/{thread_id}/subscription\"],\r\n getFeeds: [\"GET /feeds\"],\r\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\r\n getThread: [\"GET /notifications/threads/{thread_id}\"],\r\n getThreadSubscriptionForAuthenticatedUser: [\"GET /notifications/threads/{thread_id}/subscription\"],\r\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\r\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\r\n listOrgEventsForAuthenticatedUser: [\"GET /users/{username}/events/orgs/{org}\"],\r\n listPublicEvents: [\"GET /events\"],\r\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\r\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\r\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\r\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\r\n listReceivedPublicEventsForUser: [\"GET /users/{username}/received_events/public\"],\r\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\r\n listRepoNotificationsForAuthenticatedUser: [\"GET /repos/{owner}/{repo}/notifications\"],\r\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\r\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\r\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\r\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\r\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\r\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\r\n markNotificationsAsRead: [\"PUT /notifications\"],\r\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\r\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\r\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\r\n setThreadSubscription: [\"PUT /notifications/threads/{thread_id}/subscription\"],\r\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\r\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\r\n },\r\n apps: {\r\n addRepoToInstallation: [\"PUT /user/installations/{installation_id}/repositories/{repository_id}\"],\r\n checkToken: [\"POST /applications/{client_id}/token\"],\r\n createContentAttachment: [\"POST /content_references/{content_reference_id}/attachments\", {\r\n mediaType: {\r\n previews: [\"corsair\"]\r\n }\r\n }],\r\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\r\n createInstallationAccessToken: [\"POST /app/installations/{installation_id}/access_tokens\"],\r\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\r\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\r\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\r\n getAuthenticated: [\"GET /app\"],\r\n getBySlug: [\"GET /apps/{app_slug}\"],\r\n getInstallation: [\"GET /app/installations/{installation_id}\"],\r\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\r\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\r\n getSubscriptionPlanForAccount: [\"GET /marketplace_listing/accounts/{account_id}\"],\r\n getSubscriptionPlanForAccountStubbed: [\"GET /marketplace_listing/stubbed/accounts/{account_id}\"],\r\n getUserInstallation: [\"GET /users/{username}/installation\"],\r\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\r\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\r\n listAccountsForPlanStubbed: [\"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"],\r\n listInstallationReposForAuthenticatedUser: [\"GET /user/installations/{installation_id}/repositories\"],\r\n listInstallations: [\"GET /app/installations\"],\r\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\r\n listPlans: [\"GET /marketplace_listing/plans\"],\r\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\r\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\r\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\r\n listSubscriptionsForAuthenticatedUserStubbed: [\"GET /user/marketplace_purchases/stubbed\"],\r\n removeRepoFromInstallation: [\"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"],\r\n resetToken: [\"PATCH /applications/{client_id}/token\"],\r\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\r\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\r\n unsuspendInstallation: [\"DELETE /app/installations/{installation_id}/suspended\"],\r\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\r\n },\r\n billing: {\r\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\r\n getGithubActionsBillingUser: [\"GET /users/{username}/settings/billing/actions\"],\r\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\r\n getGithubPackagesBillingUser: [\"GET /users/{username}/settings/billing/packages\"],\r\n getSharedStorageBillingOrg: [\"GET /orgs/{org}/settings/billing/shared-storage\"],\r\n getSharedStorageBillingUser: [\"GET /users/{username}/settings/billing/shared-storage\"]\r\n },\r\n checks: {\r\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\r\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\r\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\r\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\r\n listAnnotations: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"],\r\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\r\n listForSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"],\r\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\r\n rerequestSuite: [\"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"],\r\n setSuitesPreferences: [\"PATCH /repos/{owner}/{repo}/check-suites/preferences\"],\r\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\r\n },\r\n codeScanning: {\r\n getAlert: [\"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\", {}, {\r\n renamedParameters: {\r\n alert_id: \"alert_number\"\r\n }\r\n }],\r\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\r\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\r\n updateAlert: [\"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"],\r\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\r\n },\r\n codesOfConduct: {\r\n getAllCodesOfConduct: [\"GET /codes_of_conduct\", {\r\n mediaType: {\r\n previews: [\"scarlet-witch\"]\r\n }\r\n }],\r\n getConductCode: [\"GET /codes_of_conduct/{key}\", {\r\n mediaType: {\r\n previews: [\"scarlet-witch\"]\r\n }\r\n }],\r\n getForRepo: [\"GET /repos/{owner}/{repo}/community/code_of_conduct\", {\r\n mediaType: {\r\n previews: [\"scarlet-witch\"]\r\n }\r\n }]\r\n },\r\n emojis: {\r\n get: [\"GET /emojis\"]\r\n },\r\n enterpriseAdmin: {\r\n disableSelectedOrganizationGithubActionsEnterprise: [\"DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\"],\r\n enableSelectedOrganizationGithubActionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\"],\r\n getAllowedActionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions/selected-actions\"],\r\n getGithubActionsPermissionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions\"],\r\n listSelectedOrganizationsEnabledGithubActionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions/organizations\"],\r\n setAllowedActionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/selected-actions\"],\r\n setGithubActionsPermissionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions\"],\r\n setSelectedOrganizationsEnabledGithubActionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/organizations\"]\r\n },\r\n gists: {\r\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\r\n create: [\"POST /gists\"],\r\n createComment: [\"POST /gists/{gist_id}/comments\"],\r\n delete: [\"DELETE /gists/{gist_id}\"],\r\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\r\n fork: [\"POST /gists/{gist_id}/forks\"],\r\n get: [\"GET /gists/{gist_id}\"],\r\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\r\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\r\n list: [\"GET /gists\"],\r\n listComments: [\"GET /gists/{gist_id}/comments\"],\r\n listCommits: [\"GET /gists/{gist_id}/commits\"],\r\n listForUser: [\"GET /users/{username}/gists\"],\r\n listForks: [\"GET /gists/{gist_id}/forks\"],\r\n listPublic: [\"GET /gists/public\"],\r\n listStarred: [\"GET /gists/starred\"],\r\n star: [\"PUT /gists/{gist_id}/star\"],\r\n unstar: [\"DELETE /gists/{gist_id}/star\"],\r\n update: [\"PATCH /gists/{gist_id}\"],\r\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\r\n },\r\n git: {\r\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\r\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\r\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\r\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\r\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\r\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\r\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\r\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\r\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\r\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\r\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\r\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\r\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\r\n },\r\n gitignore: {\r\n getAllTemplates: [\"GET /gitignore/templates\"],\r\n getTemplate: [\"GET /gitignore/templates/{name}\"]\r\n },\r\n interactions: {\r\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\r\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\r\n getRestrictionsForYourPublicRepos: [\"GET /user/interaction-limits\"],\r\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\r\n removeRestrictionsForRepo: [\"DELETE /repos/{owner}/{repo}/interaction-limits\"],\r\n removeRestrictionsForYourPublicRepos: [\"DELETE /user/interaction-limits\"],\r\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\r\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\r\n setRestrictionsForYourPublicRepos: [\"PUT /user/interaction-limits\"]\r\n },\r\n issues: {\r\n addAssignees: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"],\r\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\r\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\r\n create: [\"POST /repos/{owner}/{repo}/issues\"],\r\n createComment: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\r\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\r\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\r\n deleteComment: [\"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\r\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\r\n deleteMilestone: [\"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"],\r\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\r\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\r\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\r\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\r\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\r\n list: [\"GET /issues\"],\r\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\r\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\r\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\r\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\r\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\r\n listEventsForTimeline: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\", {\r\n mediaType: {\r\n previews: [\"mockingbird\"]\r\n }\r\n }],\r\n listForAuthenticatedUser: [\"GET /user/issues\"],\r\n listForOrg: [\"GET /orgs/{org}/issues\"],\r\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\r\n listLabelsForMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"],\r\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\r\n listLabelsOnIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\r\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\r\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\r\n removeAllLabels: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\r\n removeAssignees: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"],\r\n removeLabel: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"],\r\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\r\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\r\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\r\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\r\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\r\n updateMilestone: [\"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"]\r\n },\r\n licenses: {\r\n get: [\"GET /licenses/{license}\"],\r\n getAllCommonlyUsed: [\"GET /licenses\"],\r\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\r\n },\r\n markdown: {\r\n render: [\"POST /markdown\"],\r\n renderRaw: [\"POST /markdown/raw\", {\r\n headers: {\r\n \"content-type\": \"text/plain; charset=utf-8\"\r\n }\r\n }]\r\n },\r\n meta: {\r\n get: [\"GET /meta\"],\r\n getOctocat: [\"GET /octocat\"],\r\n getZen: [\"GET /zen\"],\r\n root: [\"GET /\"]\r\n },\r\n migrations: {\r\n cancelImport: [\"DELETE /repos/{owner}/{repo}/import\"],\r\n deleteArchiveForAuthenticatedUser: [\"DELETE /user/migrations/{migration_id}/archive\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n deleteArchiveForOrg: [\"DELETE /orgs/{org}/migrations/{migration_id}/archive\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n downloadArchiveForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/archive\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n getArchiveForAuthenticatedUser: [\"GET /user/migrations/{migration_id}/archive\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n getCommitAuthors: [\"GET /repos/{owner}/{repo}/import/authors\"],\r\n getImportStatus: [\"GET /repos/{owner}/{repo}/import\"],\r\n getLargeFiles: [\"GET /repos/{owner}/{repo}/import/large_files\"],\r\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n listForAuthenticatedUser: [\"GET /user/migrations\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n listForOrg: [\"GET /orgs/{org}/migrations\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n listReposForUser: [\"GET /user/migrations/{migration_id}/repositories\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n mapCommitAuthor: [\"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\"],\r\n setLfsPreference: [\"PATCH /repos/{owner}/{repo}/import/lfs\"],\r\n startForAuthenticatedUser: [\"POST /user/migrations\"],\r\n startForOrg: [\"POST /orgs/{org}/migrations\"],\r\n startImport: [\"PUT /repos/{owner}/{repo}/import\"],\r\n unlockRepoForAuthenticatedUser: [\"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n unlockRepoForOrg: [\"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\", {\r\n mediaType: {\r\n previews: [\"wyandotte\"]\r\n }\r\n }],\r\n updateImport: [\"PATCH /repos/{owner}/{repo}/import\"]\r\n },\r\n orgs: {\r\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\r\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\r\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\r\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\r\n convertMemberToOutsideCollaborator: [\"PUT /orgs/{org}/outside_collaborators/{username}\"],\r\n createInvitation: [\"POST /orgs/{org}/invitations\"],\r\n createWebhook: [\"POST /orgs/{org}/hooks\"],\r\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\r\n get: [\"GET /orgs/{org}\"],\r\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\r\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\r\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\r\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\r\n list: [\"GET /organizations\"],\r\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\r\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\r\n listForAuthenticatedUser: [\"GET /user/orgs\"],\r\n listForUser: [\"GET /users/{username}/orgs\"],\r\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\r\n listMembers: [\"GET /orgs/{org}/members\"],\r\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\r\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\r\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\r\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\r\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\r\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\r\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\r\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\r\n removeOutsideCollaborator: [\"DELETE /orgs/{org}/outside_collaborators/{username}\"],\r\n removePublicMembershipForAuthenticatedUser: [\"DELETE /orgs/{org}/public_members/{username}\"],\r\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\r\n setPublicMembershipForAuthenticatedUser: [\"PUT /orgs/{org}/public_members/{username}\"],\r\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\r\n update: [\"PATCH /orgs/{org}\"],\r\n updateMembershipForAuthenticatedUser: [\"PATCH /user/memberships/orgs/{org}\"],\r\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\r\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\r\n },\r\n projects: {\r\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n createCard: [\"POST /projects/columns/{column_id}/cards\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n createColumn: [\"POST /projects/{project_id}/columns\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n createForAuthenticatedUser: [\"POST /user/projects\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n createForOrg: [\"POST /orgs/{org}/projects\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n delete: [\"DELETE /projects/{project_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n deleteColumn: [\"DELETE /projects/columns/{column_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n get: [\"GET /projects/{project_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n getCard: [\"GET /projects/columns/cards/{card_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n getColumn: [\"GET /projects/columns/{column_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n getPermissionForUser: [\"GET /projects/{project_id}/collaborators/{username}/permission\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n listCards: [\"GET /projects/columns/{column_id}/cards\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n listCollaborators: [\"GET /projects/{project_id}/collaborators\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n listColumns: [\"GET /projects/{project_id}/columns\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n listForOrg: [\"GET /orgs/{org}/projects\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n listForUser: [\"GET /users/{username}/projects\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n moveColumn: [\"POST /projects/columns/{column_id}/moves\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n removeCollaborator: [\"DELETE /projects/{project_id}/collaborators/{username}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n update: [\"PATCH /projects/{project_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n updateColumn: [\"PATCH /projects/columns/{column_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }]\r\n },\r\n pulls: {\r\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\r\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\r\n createReplyForReviewComment: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"],\r\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\r\n createReviewComment: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"],\r\n deletePendingReview: [\"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"],\r\n deleteReviewComment: [\"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\r\n dismissReview: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"],\r\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\r\n getReview: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"],\r\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\r\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\r\n listCommentsForReview: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"],\r\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\r\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\r\n listRequestedReviewers: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"],\r\n listReviewComments: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"],\r\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\r\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\r\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\r\n removeRequestedReviewers: [\"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"],\r\n requestReviewers: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"],\r\n submitReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"],\r\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\r\n updateBranch: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\", {\r\n mediaType: {\r\n previews: [\"lydian\"]\r\n }\r\n }],\r\n updateReview: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"],\r\n updateReviewComment: [\"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"]\r\n },\r\n rateLimit: {\r\n get: [\"GET /rate_limit\"]\r\n },\r\n reactions: {\r\n createForCommitComment: [\"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n createForIssue: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n createForIssueComment: [\"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n createForPullRequestReviewComment: [\"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n createForTeamDiscussionCommentInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n createForTeamDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n deleteForCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n deleteForIssue: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n deleteForIssueComment: [\"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n deleteForPullRequestComment: [\"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n deleteForTeamDiscussion: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n deleteForTeamDiscussionComment: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n deleteLegacy: [\"DELETE /reactions/{reaction_id}\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }, {\r\n deprecated: \"octokit.reactions.deleteLegacy() is deprecated, see https://docs.github.com/v3/reactions/#delete-a-reaction-legacy\"\r\n }],\r\n listForCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n listForIssueComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n listForPullRequestReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n listForTeamDiscussionCommentInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }],\r\n listForTeamDiscussionInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\", {\r\n mediaType: {\r\n previews: [\"squirrel-girl\"]\r\n }\r\n }]\r\n },\r\n repos: {\r\n acceptInvitation: [\"PATCH /user/repository_invitations/{invitation_id}\"],\r\n addAppAccessRestrictions: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\", {}, {\r\n mapToData: \"apps\"\r\n }],\r\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\r\n addStatusCheckContexts: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\", {}, {\r\n mapToData: \"contexts\"\r\n }],\r\n addTeamAccessRestrictions: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\", {}, {\r\n mapToData: \"teams\"\r\n }],\r\n addUserAccessRestrictions: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\", {}, {\r\n mapToData: \"users\"\r\n }],\r\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\r\n checkVulnerabilityAlerts: [\"GET /repos/{owner}/{repo}/vulnerability-alerts\", {\r\n mediaType: {\r\n previews: [\"dorian\"]\r\n }\r\n }],\r\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\r\n createCommitComment: [\"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"],\r\n createCommitSignatureProtection: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\", {\r\n mediaType: {\r\n previews: [\"zzzax\"]\r\n }\r\n }],\r\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\r\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\r\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\r\n createDeploymentStatus: [\"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"],\r\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\r\n createForAuthenticatedUser: [\"POST /user/repos\"],\r\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\r\n createInOrg: [\"POST /orgs/{org}/repos\"],\r\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\r\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\", {\r\n mediaType: {\r\n previews: [\"switcheroo\"]\r\n }\r\n }],\r\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\r\n createUsingTemplate: [\"POST /repos/{template_owner}/{template_repo}/generate\", {\r\n mediaType: {\r\n previews: [\"baptiste\"]\r\n }\r\n }],\r\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\r\n declineInvitation: [\"DELETE /user/repository_invitations/{invitation_id}\"],\r\n delete: [\"DELETE /repos/{owner}/{repo}\"],\r\n deleteAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"],\r\n deleteAdminBranchProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"],\r\n deleteBranchProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"],\r\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\r\n deleteCommitSignatureProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\", {\r\n mediaType: {\r\n previews: [\"zzzax\"]\r\n }\r\n }],\r\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\r\n deleteDeployment: [\"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"],\r\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\r\n deleteInvitation: [\"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"],\r\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\", {\r\n mediaType: {\r\n previews: [\"switcheroo\"]\r\n }\r\n }],\r\n deletePullRequestReviewProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"],\r\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\r\n deleteReleaseAsset: [\"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\r\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\r\n disableAutomatedSecurityFixes: [\"DELETE /repos/{owner}/{repo}/automated-security-fixes\", {\r\n mediaType: {\r\n previews: [\"london\"]\r\n }\r\n }],\r\n disableVulnerabilityAlerts: [\"DELETE /repos/{owner}/{repo}/vulnerability-alerts\", {\r\n mediaType: {\r\n previews: [\"dorian\"]\r\n }\r\n }],\r\n downloadArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\", {}, {\r\n renamed: [\"repos\", \"downloadZipballArchive\"]\r\n }],\r\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\r\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\r\n enableAutomatedSecurityFixes: [\"PUT /repos/{owner}/{repo}/automated-security-fixes\", {\r\n mediaType: {\r\n previews: [\"london\"]\r\n }\r\n }],\r\n enableVulnerabilityAlerts: [\"PUT /repos/{owner}/{repo}/vulnerability-alerts\", {\r\n mediaType: {\r\n previews: [\"dorian\"]\r\n }\r\n }],\r\n get: [\"GET /repos/{owner}/{repo}\"],\r\n getAccessRestrictions: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"],\r\n getAdminBranchProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"],\r\n getAllStatusCheckContexts: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"],\r\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\", {\r\n mediaType: {\r\n previews: [\"mercy\"]\r\n }\r\n }],\r\n getAppsWithAccessToProtectedBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"],\r\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\r\n getBranchProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection\"],\r\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\r\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\r\n getCollaboratorPermissionLevel: [\"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"],\r\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\r\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\r\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\r\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\r\n getCommitSignatureProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\", {\r\n mediaType: {\r\n previews: [\"zzzax\"]\r\n }\r\n }],\r\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\r\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\r\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\r\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\r\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\r\n getDeploymentStatus: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"],\r\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\r\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\r\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\r\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\r\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\r\n getPullRequestReviewProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"],\r\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\r\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\r\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\r\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\r\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\r\n getStatusChecksProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"],\r\n getTeamsWithAccessToProtectedBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"],\r\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\r\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\r\n getUsersWithAccessToProtectedBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"],\r\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\r\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\r\n getWebhookConfigForRepo: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"],\r\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\r\n listBranchesForHeadCommit: [\"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\", {\r\n mediaType: {\r\n previews: [\"groot\"]\r\n }\r\n }],\r\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\r\n listCommentsForCommit: [\"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"],\r\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\r\n listCommitStatusesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"],\r\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\r\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\r\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\r\n listDeploymentStatuses: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"],\r\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\r\n listForAuthenticatedUser: [\"GET /user/repos\"],\r\n listForOrg: [\"GET /orgs/{org}/repos\"],\r\n listForUser: [\"GET /users/{username}/repos\"],\r\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\r\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\r\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\r\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\r\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\r\n listPublic: [\"GET /repositories\"],\r\n listPullRequestsAssociatedWithCommit: [\"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\", {\r\n mediaType: {\r\n previews: [\"groot\"]\r\n }\r\n }],\r\n listReleaseAssets: [\"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"],\r\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\r\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\r\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\r\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\r\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\r\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\r\n removeAppAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\", {}, {\r\n mapToData: \"apps\"\r\n }],\r\n removeCollaborator: [\"DELETE /repos/{owner}/{repo}/collaborators/{username}\"],\r\n removeStatusCheckContexts: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\", {}, {\r\n mapToData: \"contexts\"\r\n }],\r\n removeStatusCheckProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"],\r\n removeTeamAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\", {}, {\r\n mapToData: \"teams\"\r\n }],\r\n removeUserAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\", {}, {\r\n mapToData: \"users\"\r\n }],\r\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\", {\r\n mediaType: {\r\n previews: [\"mercy\"]\r\n }\r\n }],\r\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\r\n setAdminBranchProtection: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"],\r\n setAppAccessRestrictions: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\", {}, {\r\n mapToData: \"apps\"\r\n }],\r\n setStatusCheckContexts: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\", {}, {\r\n mapToData: \"contexts\"\r\n }],\r\n setTeamAccessRestrictions: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\", {}, {\r\n mapToData: \"teams\"\r\n }],\r\n setUserAccessRestrictions: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\", {}, {\r\n mapToData: \"users\"\r\n }],\r\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\r\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\r\n update: [\"PATCH /repos/{owner}/{repo}\"],\r\n updateBranchProtection: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"],\r\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\r\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\r\n updateInvitation: [\"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"],\r\n updatePullRequestReviewProtection: [\"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"],\r\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\r\n updateReleaseAsset: [\"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\r\n updateStatusCheckPotection: [\"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\", {}, {\r\n renamed: [\"repos\", \"updateStatusCheckProtection\"]\r\n }],\r\n updateStatusCheckProtection: [\"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"],\r\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\r\n updateWebhookConfigForRepo: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"],\r\n uploadReleaseAsset: [\"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\", {\r\n baseUrl: \"https://uploads.github.com\"\r\n }]\r\n },\r\n search: {\r\n code: [\"GET /search/code\"],\r\n commits: [\"GET /search/commits\", {\r\n mediaType: {\r\n previews: [\"cloak\"]\r\n }\r\n }],\r\n issuesAndPullRequests: [\"GET /search/issues\"],\r\n labels: [\"GET /search/labels\"],\r\n repos: [\"GET /search/repositories\"],\r\n topics: [\"GET /search/topics\", {\r\n mediaType: {\r\n previews: [\"mercy\"]\r\n }\r\n }],\r\n users: [\"GET /search/users\"]\r\n },\r\n secretScanning: {\r\n getAlert: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"],\r\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\r\n updateAlert: [\"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"]\r\n },\r\n teams: {\r\n addOrUpdateMembershipForUserInOrg: [\"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"],\r\n addOrUpdateProjectPermissionsInOrg: [\"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n addOrUpdateRepoPermissionsInOrg: [\"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"],\r\n checkPermissionsForProjectInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n checkPermissionsForRepoInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"],\r\n create: [\"POST /orgs/{org}/teams\"],\r\n createDiscussionCommentInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"],\r\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\r\n deleteDiscussionCommentInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"],\r\n deleteDiscussionInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"],\r\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\r\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\r\n getDiscussionCommentInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"],\r\n getDiscussionInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"],\r\n getMembershipForUserInOrg: [\"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"],\r\n list: [\"GET /orgs/{org}/teams\"],\r\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\r\n listDiscussionCommentsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"],\r\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\r\n listForAuthenticatedUser: [\"GET /user/teams\"],\r\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\r\n listPendingInvitationsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/invitations\"],\r\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\", {\r\n mediaType: {\r\n previews: [\"inertia\"]\r\n }\r\n }],\r\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\r\n removeMembershipForUserInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"],\r\n removeProjectInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"],\r\n removeRepoInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"],\r\n updateDiscussionCommentInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"],\r\n updateDiscussionInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"],\r\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\r\n },\r\n users: {\r\n addEmailForAuthenticated: [\"POST /user/emails\"],\r\n block: [\"PUT /user/blocks/{username}\"],\r\n checkBlocked: [\"GET /user/blocks/{username}\"],\r\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\r\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\r\n createGpgKeyForAuthenticated: [\"POST /user/gpg_keys\"],\r\n createPublicSshKeyForAuthenticated: [\"POST /user/keys\"],\r\n deleteEmailForAuthenticated: [\"DELETE /user/emails\"],\r\n deleteGpgKeyForAuthenticated: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\r\n deletePublicSshKeyForAuthenticated: [\"DELETE /user/keys/{key_id}\"],\r\n follow: [\"PUT /user/following/{username}\"],\r\n getAuthenticated: [\"GET /user\"],\r\n getByUsername: [\"GET /users/{username}\"],\r\n getContextForUser: [\"GET /users/{username}/hovercard\"],\r\n getGpgKeyForAuthenticated: [\"GET /user/gpg_keys/{gpg_key_id}\"],\r\n getPublicSshKeyForAuthenticated: [\"GET /user/keys/{key_id}\"],\r\n list: [\"GET /users\"],\r\n listBlockedByAuthenticated: [\"GET /user/blocks\"],\r\n listEmailsForAuthenticated: [\"GET /user/emails\"],\r\n listFollowedByAuthenticated: [\"GET /user/following\"],\r\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\r\n listFollowersForUser: [\"GET /users/{username}/followers\"],\r\n listFollowingForUser: [\"GET /users/{username}/following\"],\r\n listGpgKeysForAuthenticated: [\"GET /user/gpg_keys\"],\r\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\r\n listPublicEmailsForAuthenticated: [\"GET /user/public_emails\"],\r\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\r\n listPublicSshKeysForAuthenticated: [\"GET /user/keys\"],\r\n setPrimaryEmailVisibilityForAuthenticated: [\"PATCH /user/email/visibility\"],\r\n unblock: [\"DELETE /user/blocks/{username}\"],\r\n unfollow: [\"DELETE /user/following/{username}\"],\r\n updateAuthenticated: [\"PATCH /user\"]\r\n }\r\n};\r\n\r\nconst VERSION = \"4.4.1\";\r\n\r\nfunction endpointsToMethods(octokit, endpointsMap) {\r\n const newMethods = {};\r\n\r\n for (const [scope, endpoints] of Object.entries(endpointsMap)) {\r\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\r\n const [route, defaults, decorations] = endpoint;\r\n const [method, url] = route.split(/ /);\r\n const endpointDefaults = Object.assign({\r\n method,\r\n url\r\n }, defaults);\r\n\r\n if (!newMethods[scope]) {\r\n newMethods[scope] = {};\r\n }\r\n\r\n const scopeMethods = newMethods[scope];\r\n\r\n if (decorations) {\r\n scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);\r\n continue;\r\n }\r\n\r\n scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);\r\n }\r\n }\r\n\r\n return newMethods;\r\n}\r\n\r\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\r\n const requestWithDefaults = octokit.request.defaults(defaults);\r\n /* istanbul ignore next */\r\n\r\n function withDecorations(...args) {\r\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\r\n let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData`\r\n\r\n if (decorations.mapToData) {\r\n options = Object.assign({}, options, {\r\n data: options[decorations.mapToData],\r\n [decorations.mapToData]: undefined\r\n });\r\n return requestWithDefaults(options);\r\n }\r\n\r\n if (decorations.renamed) {\r\n const [newScope, newMethodName] = decorations.renamed;\r\n octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);\r\n }\r\n\r\n if (decorations.deprecated) {\r\n octokit.log.warn(decorations.deprecated);\r\n }\r\n\r\n if (decorations.renamedParameters) {\r\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\r\n const options = requestWithDefaults.endpoint.merge(...args);\r\n\r\n for (const [name, alias] of Object.entries(decorations.renamedParameters)) {\r\n if (name in options) {\r\n octokit.log.warn(`\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`);\r\n\r\n if (!(alias in options)) {\r\n options[alias] = options[name];\r\n }\r\n\r\n delete options[name];\r\n }\r\n }\r\n\r\n return requestWithDefaults(options);\r\n } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\r\n\r\n\r\n return requestWithDefaults(...args);\r\n }\r\n\r\n return Object.assign(withDecorations, requestWithDefaults);\r\n}\r\n\r\n/**\r\n * This plugin is a 1:1 copy of internal @octokit/rest plugins. The primary\r\n * goal is to rebuild @octokit/rest on top of @octokit/core. Once that is\r\n * done, we will remove the registerEndpoints methods and return the methods\r\n * directly as with the other plugins. At that point we will also remove the\r\n * legacy workarounds and deprecations.\r\n *\r\n * See the plan at\r\n * https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/1\r\n */\r\n\r\nfunction restEndpointMethods(octokit) {\r\n return endpointsToMethods(octokit, Endpoints);\r\n}\r\nrestEndpointMethods.VERSION = VERSION;\r\n\r\nexports.restEndpointMethods = restEndpointMethods;\r\n//# sourceMappingURL=index.js.map\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\r\n\r\nvar deprecation = require('deprecation');\r\nvar once = _interopDefault(require('once'));\r\n\r\nconst logOnce = once(deprecation => console.warn(deprecation));\r\n/**\r\n * Error with extra properties to help with debugging\r\n */\r\n\r\nclass RequestError extends Error {\r\n constructor(message, statusCode, options) {\r\n super(message); // Maintains proper stack trace (only available on V8)\r\n\r\n /* istanbul ignore next */\r\n\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, this.constructor);\r\n }\r\n\r\n this.name = \"HttpError\";\r\n this.status = statusCode;\r\n Object.defineProperty(this, \"code\", {\r\n get() {\r\n logOnce(new deprecation.Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\r\n return statusCode;\r\n }\r\n\r\n });\r\n this.headers = options.headers || {}; // redact request credentials without mutating original request options\r\n\r\n const requestCopy = Object.assign({}, options.request);\r\n\r\n if (options.request.headers.authorization) {\r\n requestCopy.headers = Object.assign({}, options.request.headers, {\r\n authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\")\r\n });\r\n }\r\n\r\n requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit\r\n // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\r\n .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\") // OAuth tokens can be passed as URL query parameters, although it is not recommended\r\n // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\r\n .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\r\n this.request = requestCopy;\r\n }\r\n\r\n}\r\n\r\nexports.RequestError = RequestError;\r\n//# sourceMappingURL=index.js.map\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\r\n\r\nvar endpoint = require('@octokit/endpoint');\r\nvar universalUserAgent = require('universal-user-agent');\r\nvar isPlainObject = require('is-plain-object');\r\nvar nodeFetch = _interopDefault(require('node-fetch'));\r\nvar requestError = require('@octokit/request-error');\r\n\r\nconst VERSION = \"5.4.12\";\r\n\r\nfunction getBufferResponse(response) {\r\n return response.arrayBuffer();\r\n}\r\n\r\nfunction fetchWrapper(requestOptions) {\r\n if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\r\n requestOptions.body = JSON.stringify(requestOptions.body);\r\n }\r\n\r\n let headers = {};\r\n let status;\r\n let url;\r\n const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;\r\n return fetch(requestOptions.url, Object.assign({\r\n method: requestOptions.method,\r\n body: requestOptions.body,\r\n headers: requestOptions.headers,\r\n redirect: requestOptions.redirect\r\n }, requestOptions.request)).then(response => {\r\n url = response.url;\r\n status = response.status;\r\n\r\n for (const keyAndValue of response.headers) {\r\n headers[keyAndValue[0]] = keyAndValue[1];\r\n }\r\n\r\n if (status === 204 || status === 205) {\r\n return;\r\n } // GitHub API returns 200 for HEAD requests\r\n\r\n\r\n if (requestOptions.method === \"HEAD\") {\r\n if (status < 400) {\r\n return;\r\n }\r\n\r\n throw new requestError.RequestError(response.statusText, status, {\r\n headers,\r\n request: requestOptions\r\n });\r\n }\r\n\r\n if (status === 304) {\r\n throw new requestError.RequestError(\"Not modified\", status, {\r\n headers,\r\n request: requestOptions\r\n });\r\n }\r\n\r\n if (status >= 400) {\r\n return response.text().then(message => {\r\n const error = new requestError.RequestError(message, status, {\r\n headers,\r\n request: requestOptions\r\n });\r\n\r\n try {\r\n let responseBody = JSON.parse(error.message);\r\n Object.assign(error, responseBody);\r\n let errors = responseBody.errors; // Assumption `errors` would always be in Array format\r\n\r\n error.message = error.message + \": \" + errors.map(JSON.stringify).join(\", \");\r\n } catch (e) {// ignore, see octokit/rest.js#684\r\n }\r\n\r\n throw error;\r\n });\r\n }\r\n\r\n const contentType = response.headers.get(\"content-type\");\r\n\r\n if (/application\\/json/.test(contentType)) {\r\n return response.json();\r\n }\r\n\r\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\r\n return response.text();\r\n }\r\n\r\n return getBufferResponse(response);\r\n }).then(data => {\r\n return {\r\n status,\r\n url,\r\n headers,\r\n data\r\n };\r\n }).catch(error => {\r\n if (error instanceof requestError.RequestError) {\r\n throw error;\r\n }\r\n\r\n throw new requestError.RequestError(error.message, 500, {\r\n headers,\r\n request: requestOptions\r\n });\r\n });\r\n}\r\n\r\nfunction withDefaults(oldEndpoint, newDefaults) {\r\n const endpoint = oldEndpoint.defaults(newDefaults);\r\n\r\n const newApi = function (route, parameters) {\r\n const endpointOptions = endpoint.merge(route, parameters);\r\n\r\n if (!endpointOptions.request || !endpointOptions.request.hook) {\r\n return fetchWrapper(endpoint.parse(endpointOptions));\r\n }\r\n\r\n const request = (route, parameters) => {\r\n return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\r\n };\r\n\r\n Object.assign(request, {\r\n endpoint,\r\n defaults: withDefaults.bind(null, endpoint)\r\n });\r\n return endpointOptions.request.hook(request, endpointOptions);\r\n };\r\n\r\n return Object.assign(newApi, {\r\n endpoint,\r\n defaults: withDefaults.bind(null, endpoint)\r\n });\r\n}\r\n\r\nconst request = withDefaults(endpoint.endpoint, {\r\n headers: {\r\n \"user-agent\": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}`\r\n }\r\n});\r\n\r\nexports.request = request;\r\n//# sourceMappingURL=index.js.map\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\n/*!\r\n * is-plain-object \r\n *\r\n * Copyright (c) 2014-2017, Jon Schlinkert.\r\n * Released under the MIT License.\r\n */\r\n\r\nfunction isObject(o) {\r\n return Object.prototype.toString.call(o) === '[object Object]';\r\n}\r\n\r\nfunction isPlainObject(o) {\r\n var ctor,prot;\r\n\r\n if (isObject(o) === false) return false;\r\n\r\n // If has modified constructor\r\n ctor = o.constructor;\r\n if (ctor === undefined) return true;\r\n\r\n // If has modified prototype\r\n prot = ctor.prototype;\r\n if (isObject(prot) === false) return false;\r\n\r\n // If constructor does not have an Object-specific method\r\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\r\n return false;\r\n }\r\n\r\n // Most likely a plain Object\r\n return true;\r\n}\r\n\r\nexports.isPlainObject = isPlainObject;\r\n","/*!\r\n * ansi-green \r\n *\r\n * Copyright (c) 2015, Jon Schlinkert.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n'use strict';\r\n\r\nvar wrap = require('ansi-wrap');\r\n\r\nmodule.exports = function green(message) {\r\n return wrap(32, 39, message);\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = function(a, b, msg) {\r\n return '\\u001b['+ a + 'm' + msg + '\\u001b[' + b + 'm';\r\n};\r\n","/*!\r\n * Autolinker.js\r\n * 0.28.1\r\n *\r\n * Copyright(c) 2016 Gregory Jacobs \r\n * MIT License\r\n *\r\n * https://github.com/gregjacobs/Autolinker.js\r\n */\r\n;(function(root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define([], factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory();\r\n } else {\r\n root.Autolinker = factory();\r\n }\r\n}(this, function() {\r\n/**\r\n * @class Autolinker\r\n * @extends Object\r\n *\r\n * Utility class used to process a given string of text, and wrap the matches in\r\n * the appropriate anchor (<a>) tags to turn them into links.\r\n *\r\n * Any of the configuration options may be provided in an Object (map) provided\r\n * to the Autolinker constructor, which will configure how the {@link #link link()}\r\n * method will process the links.\r\n *\r\n * For example:\r\n *\r\n * var autolinker = new Autolinker( {\r\n * newWindow : false,\r\n * truncate : 30\r\n * } );\r\n *\r\n * var html = autolinker.link( \"Joe went to www.yahoo.com\" );\r\n * // produces: 'Joe went to yahoo.com'\r\n *\r\n *\r\n * The {@link #static-link static link()} method may also be used to inline\r\n * options into a single call, which may be more convenient for one-off uses.\r\n * For example:\r\n *\r\n * var html = Autolinker.link( \"Joe went to www.yahoo.com\", {\r\n * newWindow : false,\r\n * truncate : 30\r\n * } );\r\n * // produces: 'Joe went to yahoo.com'\r\n *\r\n *\r\n * ## Custom Replacements of Links\r\n *\r\n * If the configuration options do not provide enough flexibility, a {@link #replaceFn}\r\n * may be provided to fully customize the output of Autolinker. This function is\r\n * called once for each URL/Email/Phone#/Twitter Handle/Hashtag match that is\r\n * encountered.\r\n *\r\n * For example:\r\n *\r\n * var input = \"...\"; // string with URLs, Email Addresses, Phone #s, Twitter Handles, and Hashtags\r\n *\r\n * var linkedText = Autolinker.link( input, {\r\n * replaceFn : function( autolinker, match ) {\r\n * console.log( \"href = \", match.getAnchorHref() );\r\n * console.log( \"text = \", match.getAnchorText() );\r\n *\r\n * switch( match.getType() ) {\r\n * case 'url' :\r\n * console.log( \"url: \", match.getUrl() );\r\n *\r\n * if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) {\r\n * var tag = autolinker.getTagBuilder().build( match ); // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes\r\n * tag.setAttr( 'rel', 'nofollow' );\r\n * tag.addClass( 'external-link' );\r\n *\r\n * return tag;\r\n *\r\n * } else {\r\n * return true; // let Autolinker perform its normal anchor tag replacement\r\n * }\r\n *\r\n * case 'email' :\r\n * var email = match.getEmail();\r\n * console.log( \"email: \", email );\r\n *\r\n * if( email === \"my@own.address\" ) {\r\n * return false; // don't auto-link this particular email address; leave as-is\r\n * } else {\r\n * return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`)\r\n * }\r\n *\r\n * case 'phone' :\r\n * var phoneNumber = match.getPhoneNumber();\r\n * console.log( phoneNumber );\r\n *\r\n * return '' + phoneNumber + '';\r\n *\r\n * case 'twitter' :\r\n * var twitterHandle = match.getTwitterHandle();\r\n * console.log( twitterHandle );\r\n *\r\n * return '' + twitterHandle + '';\r\n *\r\n * case 'hashtag' :\r\n * var hashtag = match.getHashtag();\r\n * console.log( hashtag );\r\n *\r\n * return '' + hashtag + '';\r\n * }\r\n * }\r\n * } );\r\n *\r\n *\r\n * The function may return the following values:\r\n *\r\n * - `true` (Boolean): Allow Autolinker to replace the match as it normally\r\n * would.\r\n * - `false` (Boolean): Do not replace the current match at all - leave as-is.\r\n * - Any String: If a string is returned from the function, the string will be\r\n * used directly as the replacement HTML for the match.\r\n * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify\r\n * an HTML tag before writing out its HTML text.\r\n *\r\n * @constructor\r\n * @param {Object} [cfg] The configuration options for the Autolinker instance,\r\n * specified in an Object (map).\r\n */\r\nvar Autolinker = function( cfg ) {\r\n\tcfg = cfg || {};\r\n\r\n\tthis.version = Autolinker.version;\r\n\r\n\tthis.urls = this.normalizeUrlsCfg( cfg.urls );\r\n\tthis.email = typeof cfg.email === 'boolean' ? cfg.email : true;\r\n\tthis.twitter = typeof cfg.twitter === 'boolean' ? cfg.twitter : true;\r\n\tthis.phone = typeof cfg.phone === 'boolean' ? cfg.phone : true;\r\n\tthis.hashtag = cfg.hashtag || false;\r\n\tthis.newWindow = typeof cfg.newWindow === 'boolean' ? cfg.newWindow : true;\r\n\tthis.stripPrefix = typeof cfg.stripPrefix === 'boolean' ? cfg.stripPrefix : true;\r\n\r\n\t// Validate the value of the `hashtag` cfg.\r\n\tvar hashtag = this.hashtag;\r\n\tif( hashtag !== false && hashtag !== 'twitter' && hashtag !== 'facebook' && hashtag !== 'instagram' ) {\r\n\t\tthrow new Error( \"invalid `hashtag` cfg - see docs\" );\r\n\t}\r\n\r\n\tthis.truncate = this.normalizeTruncateCfg( cfg.truncate );\r\n\tthis.className = cfg.className || '';\r\n\tthis.replaceFn = cfg.replaceFn || null;\r\n\r\n\tthis.htmlParser = null;\r\n\tthis.matchers = null;\r\n\tthis.tagBuilder = null;\r\n};\r\n\r\n\r\n\r\n/**\r\n * Automatically links URLs, Email addresses, Phone Numbers, Twitter handles,\r\n * and Hashtags found in the given chunk of HTML. Does not link URLs found\r\n * within HTML tags.\r\n *\r\n * For instance, if given the text: `You should go to http://www.yahoo.com`,\r\n * then the result will be `You should go to <a href=\"http://www.yahoo.com\">http://www.yahoo.com</a>`\r\n *\r\n * Example:\r\n *\r\n * var linkedText = Autolinker.link( \"Go to google.com\", { newWindow: false } );\r\n * // Produces: \"Go to google.com\"\r\n *\r\n * @static\r\n * @param {String} textOrHtml The HTML or text to find matches within (depending\r\n * on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #twitter},\r\n * and {@link #hashtag} options are enabled).\r\n * @param {Object} [options] Any of the configuration options for the Autolinker\r\n * class, specified in an Object (map). See the class description for an\r\n * example call.\r\n * @return {String} The HTML text, with matches automatically linked.\r\n */\r\nAutolinker.link = function( textOrHtml, options ) {\r\n\tvar autolinker = new Autolinker( options );\r\n\treturn autolinker.link( textOrHtml );\r\n};\r\n\r\n\r\n/**\r\n * @static\r\n * @property {String} version (readonly)\r\n *\r\n * The Autolinker version number in the form major.minor.patch\r\n *\r\n * Ex: 0.25.1\r\n */\r\nAutolinker.version = '0.28.1';\r\n\r\n\r\nAutolinker.prototype = {\r\n\tconstructor : Autolinker, // fix constructor property\r\n\r\n\t/**\r\n\t * @cfg {Boolean/Object} [urls=true]\r\n\t *\r\n\t * `true` if URLs should be automatically linked, `false` if they should not\r\n\t * be.\r\n\t *\r\n\t * This option also accepts an Object form with 3 properties, to allow for\r\n\t * more customization of what exactly gets linked. All default to `true`:\r\n\t *\r\n\t * @param {Boolean} schemeMatches `true` to match URLs found prefixed with a\r\n\t * scheme, i.e. `http://google.com`, or `other+scheme://google.com`,\r\n\t * `false` to prevent these types of matches.\r\n\t * @param {Boolean} wwwMatches `true` to match urls found prefixed with\r\n\t * `'www.'`, i.e. `www.google.com`. `false` to prevent these types of\r\n\t * matches. Note that if the URL had a prefixed scheme, and\r\n\t * `schemeMatches` is true, it will still be linked.\r\n\t * @param {Boolean} tldMatches `true` to match URLs with known top level\r\n\t * domains (.com, .net, etc.) that are not prefixed with a scheme or\r\n\t * `'www.'`. This option attempts to match anything that looks like a URL\r\n\t * in the given text. Ex: `google.com`, `asdf.org/?page=1`, etc. `false`\r\n\t * to prevent these types of matches.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Boolean} [email=true]\r\n\t *\r\n\t * `true` if email addresses should be automatically linked, `false` if they\r\n\t * should not be.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Boolean} [twitter=true]\r\n\t *\r\n\t * `true` if Twitter handles (\"@example\") should be automatically linked,\r\n\t * `false` if they should not be.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Boolean} [phone=true]\r\n\t *\r\n\t * `true` if Phone numbers (\"(555)555-5555\") should be automatically linked,\r\n\t * `false` if they should not be.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Boolean/String} [hashtag=false]\r\n\t *\r\n\t * A string for the service name to have hashtags (ex: \"#myHashtag\")\r\n\t * auto-linked to. The currently-supported values are:\r\n\t *\r\n\t * - 'twitter'\r\n\t * - 'facebook'\r\n\t * - 'instagram'\r\n\t *\r\n\t * Pass `false` to skip auto-linking of hashtags.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Boolean} [newWindow=true]\r\n\t *\r\n\t * `true` if the links should open in a new window, `false` otherwise.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Boolean} [stripPrefix=true]\r\n\t *\r\n\t * `true` if 'http://' or 'https://' and/or the 'www.' should be stripped\r\n\t * from the beginning of URL links' text, `false` otherwise.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Number/Object} [truncate=0]\r\n\t *\r\n\t * ## Number Form\r\n\t *\r\n\t * A number for how many characters matched text should be truncated to\r\n\t * inside the text of a link. If the matched text is over this number of\r\n\t * characters, it will be truncated to this length by adding a two period\r\n\t * ellipsis ('..') to the end of the string.\r\n\t *\r\n\t * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file'\r\n\t * truncated to 25 characters might look something like this:\r\n\t * 'yahoo.com/some/long/pat..'\r\n\t *\r\n\t * Example Usage:\r\n\t *\r\n\t * truncate: 25\r\n\t *\r\n\t *\r\n\t * Defaults to `0` for \"no truncation.\"\r\n\t *\r\n\t *\r\n\t * ## Object Form\r\n\t *\r\n\t * An Object may also be provided with two properties: `length` (Number) and\r\n\t * `location` (String). `location` may be one of the following: 'end'\r\n\t * (default), 'middle', or 'smart'.\r\n\t *\r\n\t * Example Usage:\r\n\t *\r\n\t * truncate: { length: 25, location: 'middle' }\r\n\t *\r\n\t * @cfg {Number} [truncate.length=0] How many characters to allow before\r\n\t * truncation will occur. Defaults to `0` for \"no truncation.\"\r\n\t * @cfg {\"end\"/\"middle\"/\"smart\"} [truncate.location=\"end\"]\r\n\t *\r\n\t * - 'end' (default): will truncate up to the number of characters, and then\r\n\t * add an ellipsis at the end. Ex: 'yahoo.com/some/long/pat..'\r\n\t * - 'middle': will truncate and add the ellipsis in the middle. Ex:\r\n\t * 'yahoo.com/s..th/to/a/file'\r\n\t * - 'smart': for URLs where the algorithm attempts to strip out unnecessary\r\n\t * parts first (such as the 'www.', then URL scheme, hash, etc.),\r\n\t * attempting to make the URL human-readable before looking for a good\r\n\t * point to insert the ellipsis if it is still too long. Ex:\r\n\t * 'yahoo.com/some..to/a/file'. For more details, see\r\n\t * {@link Autolinker.truncate.TruncateSmart}.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {String} className\r\n\t *\r\n\t * A CSS class name to add to the generated links. This class will be added\r\n\t * to all links, as well as this class plus match suffixes for styling\r\n\t * url/email/phone/twitter/hashtag links differently.\r\n\t *\r\n\t * For example, if this config is provided as \"myLink\", then:\r\n\t *\r\n\t * - URL links will have the CSS classes: \"myLink myLink-url\"\r\n\t * - Email links will have the CSS classes: \"myLink myLink-email\", and\r\n\t * - Twitter links will have the CSS classes: \"myLink myLink-twitter\"\r\n\t * - Phone links will have the CSS classes: \"myLink myLink-phone\"\r\n\t * - Hashtag links will have the CSS classes: \"myLink myLink-hashtag\"\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Function} replaceFn\r\n\t *\r\n\t * A function to individually process each match found in the input string.\r\n\t *\r\n\t * See the class's description for usage.\r\n\t *\r\n\t * This function is called with the following parameters:\r\n\t *\r\n\t * @cfg {Autolinker} replaceFn.autolinker The Autolinker instance, which may\r\n\t * be used to retrieve child objects from (such as the instance's\r\n\t * {@link #getTagBuilder tag builder}).\r\n\t * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which\r\n\t * can be used to retrieve information about the match that the `replaceFn`\r\n\t * is currently processing. See {@link Autolinker.match.Match} subclasses\r\n\t * for details.\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @property {String} version (readonly)\r\n\t *\r\n\t * The Autolinker version number in the form major.minor.patch\r\n\t *\r\n\t * Ex: 0.25.1\r\n\t */\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {Autolinker.htmlParser.HtmlParser} htmlParser\r\n\t *\r\n\t * The HtmlParser instance used to skip over HTML tags, while finding text\r\n\t * nodes to process. This is lazily instantiated in the {@link #getHtmlParser}\r\n\t * method.\r\n\t */\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {Autolinker.matcher.Matcher[]} matchers\r\n\t *\r\n\t * The {@link Autolinker.matcher.Matcher} instances for this Autolinker\r\n\t * instance.\r\n\t *\r\n\t * This is lazily created in {@link #getMatchers}.\r\n\t */\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {Autolinker.AnchorTagBuilder} tagBuilder\r\n\t *\r\n\t * The AnchorTagBuilder instance used to build match replacement anchor tags.\r\n\t * Note: this is lazily instantiated in the {@link #getTagBuilder} method.\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * Normalizes the {@link #urls} config into an Object with 3 properties:\r\n\t * `schemeMatches`, `wwwMatches`, and `tldMatches`, all Booleans.\r\n\t *\r\n\t * See {@link #urls} config for details.\r\n\t *\r\n\t * @private\r\n\t * @param {Boolean/Object} urls\r\n\t * @return {Object}\r\n\t */\r\n\tnormalizeUrlsCfg : function( urls ) {\r\n\t\tif( urls == null ) urls = true; // default to `true`\r\n\r\n\t\tif( typeof urls === 'boolean' ) {\r\n\t\t\treturn { schemeMatches: urls, wwwMatches: urls, tldMatches: urls };\r\n\r\n\t\t} else { // object form\r\n\t\t\treturn {\r\n\t\t\t\tschemeMatches : typeof urls.schemeMatches === 'boolean' ? urls.schemeMatches : true,\r\n\t\t\t\twwwMatches : typeof urls.wwwMatches === 'boolean' ? urls.wwwMatches : true,\r\n\t\t\t\ttldMatches : typeof urls.tldMatches === 'boolean' ? urls.tldMatches : true\r\n\t\t\t};\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Normalizes the {@link #truncate} config into an Object with 2 properties:\r\n\t * `length` (Number), and `location` (String).\r\n\t *\r\n\t * See {@link #truncate} config for details.\r\n\t *\r\n\t * @private\r\n\t * @param {Number/Object} truncate\r\n\t * @return {Object}\r\n\t */\r\n\tnormalizeTruncateCfg : function( truncate ) {\r\n\t\tif( typeof truncate === 'number' ) {\r\n\t\t\treturn { length: truncate, location: 'end' };\r\n\r\n\t\t} else { // object, or undefined/null\r\n\t\t\treturn Autolinker.Util.defaults( truncate || {}, {\r\n\t\t\t\tlength : Number.POSITIVE_INFINITY,\r\n\t\t\t\tlocation : 'end'\r\n\t\t\t} );\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Parses the input `textOrHtml` looking for URLs, email addresses, phone\r\n\t * numbers, username handles, and hashtags (depending on the configuration\r\n\t * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\r\n\t * objects describing those matches.\r\n\t *\r\n\t * This method is used by the {@link #link} method, but can also be used to\r\n\t * simply do parsing of the input in order to discover what kinds of links\r\n\t * there are and how many.\r\n\t *\r\n\t * @param {String} textOrHtml The HTML or text to find matches within\r\n\t * (depending on if the {@link #urls}, {@link #email}, {@link #phone},\r\n\t * {@link #twitter}, and {@link #hashtag} options are enabled).\r\n\t * @return {Autolinker.match.Match[]} The array of Matches found in the\r\n\t * given input `textOrHtml`.\r\n\t */\r\n\tparse : function( textOrHtml ) {\r\n\t\tvar htmlParser = this.getHtmlParser(),\r\n\t\t htmlNodes = htmlParser.parse( textOrHtml ),\r\n\t\t anchorTagStackCount = 0, // used to only process text around anchor tags, and any inner text/html they may have;\r\n\t\t matches = [];\r\n\r\n\t\t// Find all matches within the `textOrHtml` (but not matches that are\r\n\t\t// already nested within tags)\r\n\t\tfor( var i = 0, len = htmlNodes.length; i < len; i++ ) {\r\n\t\t\tvar node = htmlNodes[ i ],\r\n\t\t\t nodeType = node.getType();\r\n\r\n\t\t\tif( nodeType === 'element' && node.getTagName() === 'a' ) { // Process HTML anchor element nodes in the input `textOrHtml` to find out when we're within an tag\r\n\t\t\t\tif( !node.isClosing() ) { // it's the start tag\r\n\t\t\t\t\tanchorTagStackCount++;\r\n\t\t\t\t} else { // it's the end tag\r\n\t\t\t\t\tanchorTagStackCount = Math.max( anchorTagStackCount - 1, 0 ); // attempt to handle extraneous tags by making sure the stack count never goes below 0\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if( nodeType === 'text' && anchorTagStackCount === 0 ) { // Process text nodes that are not within an tag\r\n\t\t\t\tvar textNodeMatches = this.parseText( node.getText(), node.getOffset() );\r\n\r\n\t\t\t\tmatches.push.apply( matches, textNodeMatches );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// After we have found all matches, remove subsequent matches that\r\n\t\t// overlap with a previous match. This can happen for instance with URLs,\r\n\t\t// where the url 'google.com/#link' would match '#link' as a hashtag.\r\n\t\tmatches = this.compactMatches( matches );\r\n\r\n\t\t// And finally, remove matches for match types that have been turned\r\n\t\t// off. We needed to have all match types turned on initially so that\r\n\t\t// things like hashtags could be filtered out if they were really just\r\n\t\t// part of a URL match (for instance, as a named anchor).\r\n\t\tmatches = this.removeUnwantedMatches( matches );\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * After we have found all matches, we need to remove subsequent matches\r\n\t * that overlap with a previous match. This can happen for instance with\r\n\t * URLs, where the url 'google.com/#link' would match '#link' as a hashtag.\r\n\t *\r\n\t * @private\r\n\t * @param {Autolinker.match.Match[]} matches\r\n\t * @return {Autolinker.match.Match[]}\r\n\t */\r\n\tcompactMatches : function( matches ) {\r\n\t\t// First, the matches need to be sorted in order of offset\r\n\t\tmatches.sort( function( a, b ) { return a.getOffset() - b.getOffset(); } );\r\n\r\n\t\tfor( var i = 0; i < matches.length - 1; i++ ) {\r\n\t\t\tvar match = matches[ i ],\r\n\t\t\t endIdx = match.getOffset() + match.getMatchedText().length;\r\n\r\n\t\t\t// Remove subsequent matches that overlap with the current match\r\n\t\t\twhile( i + 1 < matches.length && matches[ i + 1 ].getOffset() <= endIdx ) {\r\n\t\t\t\tmatches.splice( i + 1, 1 );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Removes matches for matchers that were turned off in the options. For\r\n\t * example, if {@link #hashtag hashtags} were not to be matched, we'll\r\n\t * remove them from the `matches` array here.\r\n\t *\r\n\t * @private\r\n\t * @param {Autolinker.match.Match[]} matches The array of matches to remove\r\n\t * the unwanted matches from. Note: this array is mutated for the\r\n\t * removals.\r\n\t * @return {Autolinker.match.Match[]} The mutated input `matches` array.\r\n\t */\r\n\tremoveUnwantedMatches : function( matches ) {\r\n\t\tvar remove = Autolinker.Util.remove;\r\n\r\n\t\tif( !this.hashtag ) remove( matches, function( match ) { return match.getType() === 'hashtag'; } );\r\n\t\tif( !this.email ) remove( matches, function( match ) { return match.getType() === 'email'; } );\r\n\t\tif( !this.phone ) remove( matches, function( match ) { return match.getType() === 'phone'; } );\r\n\t\tif( !this.twitter ) remove( matches, function( match ) { return match.getType() === 'twitter'; } );\r\n\t\tif( !this.urls.schemeMatches ) {\r\n\t\t\tremove( matches, function( m ) { return m.getType() === 'url' && m.getUrlMatchType() === 'scheme'; } );\r\n\t\t}\r\n\t\tif( !this.urls.wwwMatches ) {\r\n\t\t\tremove( matches, function( m ) { return m.getType() === 'url' && m.getUrlMatchType() === 'www'; } );\r\n\t\t}\r\n\t\tif( !this.urls.tldMatches ) {\r\n\t\t\tremove( matches, function( m ) { return m.getType() === 'url' && m.getUrlMatchType() === 'tld'; } );\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Parses the input `text` looking for URLs, email addresses, phone\r\n\t * numbers, username handles, and hashtags (depending on the configuration\r\n\t * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\r\n\t * objects describing those matches.\r\n\t *\r\n\t * This method processes a **non-HTML string**, and is used to parse and\r\n\t * match within the text nodes of an HTML string. This method is used\r\n\t * internally by {@link #parse}.\r\n\t *\r\n\t * @private\r\n\t * @param {String} text The text to find matches within (depending on if the\r\n\t * {@link #urls}, {@link #email}, {@link #phone}, {@link #twitter}, and\r\n\t * {@link #hashtag} options are enabled). This must be a non-HTML string.\r\n\t * @param {Number} [offset=0] The offset of the text node within the\r\n\t * original string. This is used when parsing with the {@link #parse}\r\n\t * method to generate correct offsets within the {@link Autolinker.match.Match}\r\n\t * instances, but may be omitted if calling this method publicly.\r\n\t * @return {Autolinker.match.Match[]} The array of Matches found in the\r\n\t * given input `text`.\r\n\t */\r\n\tparseText : function( text, offset ) {\r\n\t\toffset = offset || 0;\r\n\t\tvar matchers = this.getMatchers(),\r\n\t\t matches = [];\r\n\r\n\t\tfor( var i = 0, numMatchers = matchers.length; i < numMatchers; i++ ) {\r\n\t\t\tvar textMatches = matchers[ i ].parseMatches( text );\r\n\r\n\t\t\t// Correct the offset of each of the matches. They are originally\r\n\t\t\t// the offset of the match within the provided text node, but we\r\n\t\t\t// need to correct them to be relative to the original HTML input\r\n\t\t\t// string (i.e. the one provided to #parse).\r\n\t\t\tfor( var j = 0, numTextMatches = textMatches.length; j < numTextMatches; j++ ) {\r\n\t\t\t\ttextMatches[ j ].setOffset( offset + textMatches[ j ].getOffset() );\r\n\t\t\t}\r\n\r\n\t\t\tmatches.push.apply( matches, textMatches );\r\n\t\t}\r\n\t\treturn matches;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Automatically links URLs, Email addresses, Phone numbers, Twitter\r\n\t * handles, and Hashtags found in the given chunk of HTML. Does not link\r\n\t * URLs found within HTML tags.\r\n\t *\r\n\t * For instance, if given the text: `You should go to http://www.yahoo.com`,\r\n\t * then the result will be `You should go to\r\n\t * <a href=\"http://www.yahoo.com\">http://www.yahoo.com</a>`\r\n\t *\r\n\t * This method finds the text around any HTML elements in the input\r\n\t * `textOrHtml`, which will be the text that is processed. Any original HTML\r\n\t * elements will be left as-is, as well as the text that is already wrapped\r\n\t * in anchor (<a>) tags.\r\n\t *\r\n\t * @param {String} textOrHtml The HTML or text to autolink matches within\r\n\t * (depending on if the {@link #urls}, {@link #email}, {@link #phone},\r\n\t * {@link #twitter}, and {@link #hashtag} options are enabled).\r\n\t * @return {String} The HTML, with matches automatically linked.\r\n\t */\r\n\tlink : function( textOrHtml ) {\r\n\t\tif( !textOrHtml ) { return \"\"; } // handle `null` and `undefined`\r\n\r\n\t\tvar matches = this.parse( textOrHtml ),\r\n\t\t\tnewHtml = [],\r\n\t\t\tlastIndex = 0;\r\n\r\n\t\tfor( var i = 0, len = matches.length; i < len; i++ ) {\r\n\t\t\tvar match = matches[ i ];\r\n\r\n\t\t\tnewHtml.push( textOrHtml.substring( lastIndex, match.getOffset() ) );\r\n\t\t\tnewHtml.push( this.createMatchReturnVal( match ) );\r\n\r\n\t\t\tlastIndex = match.getOffset() + match.getMatchedText().length;\r\n\t\t}\r\n\t\tnewHtml.push( textOrHtml.substring( lastIndex ) ); // handle the text after the last match\r\n\r\n\t\treturn newHtml.join( '' );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Creates the return string value for a given match in the input string.\r\n\t *\r\n\t * This method handles the {@link #replaceFn}, if one was provided.\r\n\t *\r\n\t * @private\r\n\t * @param {Autolinker.match.Match} match The Match object that represents\r\n\t * the match.\r\n\t * @return {String} The string that the `match` should be replaced with.\r\n\t * This is usually the anchor tag string, but may be the `matchStr` itself\r\n\t * if the match is not to be replaced.\r\n\t */\r\n\tcreateMatchReturnVal : function( match ) {\r\n\t\t// Handle a custom `replaceFn` being provided\r\n\t\tvar replaceFnResult;\r\n\t\tif( this.replaceFn ) {\r\n\t\t\treplaceFnResult = this.replaceFn.call( this, this, match ); // Autolinker instance is the context, and the first arg\r\n\t\t}\r\n\r\n\t\tif( typeof replaceFnResult === 'string' ) {\r\n\t\t\treturn replaceFnResult; // `replaceFn` returned a string, use that\r\n\r\n\t\t} else if( replaceFnResult === false ) {\r\n\t\t\treturn match.getMatchedText(); // no replacement for the match\r\n\r\n\t\t} else if( replaceFnResult instanceof Autolinker.HtmlTag ) {\r\n\t\t\treturn replaceFnResult.toAnchorString();\r\n\r\n\t\t} else { // replaceFnResult === true, or no/unknown return value from function\r\n\t\t\t// Perform Autolinker's default anchor tag generation\r\n\t\t\tvar anchorTag = match.buildTag(); // returns an Autolinker.HtmlTag instance\r\n\r\n\t\t\treturn anchorTag.toAnchorString();\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Lazily instantiates and returns the {@link #htmlParser} instance for this\r\n\t * Autolinker instance.\r\n\t *\r\n\t * @protected\r\n\t * @return {Autolinker.htmlParser.HtmlParser}\r\n\t */\r\n\tgetHtmlParser : function() {\r\n\t\tvar htmlParser = this.htmlParser;\r\n\r\n\t\tif( !htmlParser ) {\r\n\t\t\thtmlParser = this.htmlParser = new Autolinker.htmlParser.HtmlParser();\r\n\t\t}\r\n\r\n\t\treturn htmlParser;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Lazily instantiates and returns the {@link Autolinker.matcher.Matcher}\r\n\t * instances for this Autolinker instance.\r\n\t *\r\n\t * @protected\r\n\t * @return {Autolinker.matcher.Matcher[]}\r\n\t */\r\n\tgetMatchers : function() {\r\n\t\tif( !this.matchers ) {\r\n\t\t\tvar matchersNs = Autolinker.matcher,\r\n\t\t\t tagBuilder = this.getTagBuilder();\r\n\r\n\t\t\tvar matchers = [\r\n\t\t\t\tnew matchersNs.Hashtag( { tagBuilder: tagBuilder, serviceName: this.hashtag } ),\r\n\t\t\t\tnew matchersNs.Email( { tagBuilder: tagBuilder } ),\r\n\t\t\t\tnew matchersNs.Phone( { tagBuilder: tagBuilder } ),\r\n\t\t\t\tnew matchersNs.Twitter( { tagBuilder: tagBuilder } ),\r\n\t\t\t\tnew matchersNs.Url( { tagBuilder: tagBuilder, stripPrefix: this.stripPrefix } )\r\n\t\t\t];\r\n\r\n\t\t\treturn ( this.matchers = matchers );\r\n\r\n\t\t} else {\r\n\t\t\treturn this.matchers;\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the {@link #tagBuilder} instance for this Autolinker instance, lazily instantiating it\r\n\t * if it does not yet exist.\r\n\t *\r\n\t * This method may be used in a {@link #replaceFn} to generate the {@link Autolinker.HtmlTag HtmlTag} instance that\r\n\t * Autolinker would normally generate, and then allow for modifications before returning it. For example:\r\n\t *\r\n\t * var html = Autolinker.link( \"Test google.com\", {\r\n\t * replaceFn : function( autolinker, match ) {\r\n\t * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance\r\n\t * tag.setAttr( 'rel', 'nofollow' );\r\n\t *\r\n\t * return tag;\r\n\t * }\r\n\t * } );\r\n\t *\r\n\t * // generated html:\r\n\t * // Test google.com\r\n\t *\r\n\t * @return {Autolinker.AnchorTagBuilder}\r\n\t */\r\n\tgetTagBuilder : function() {\r\n\t\tvar tagBuilder = this.tagBuilder;\r\n\r\n\t\tif( !tagBuilder ) {\r\n\t\t\ttagBuilder = this.tagBuilder = new Autolinker.AnchorTagBuilder( {\r\n\t\t\t\tnewWindow : this.newWindow,\r\n\t\t\t\ttruncate : this.truncate,\r\n\t\t\t\tclassName : this.className\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn tagBuilder;\r\n\t}\r\n\r\n};\r\n\r\n\r\n// Autolinker Namespaces\r\n\r\nAutolinker.match = {};\r\nAutolinker.matcher = {};\r\nAutolinker.htmlParser = {};\r\nAutolinker.truncate = {};\r\n\r\n/*global Autolinker */\r\n/*jshint eqnull:true, boss:true */\r\n/**\r\n * @class Autolinker.Util\r\n * @singleton\r\n *\r\n * A few utility methods for Autolinker.\r\n */\r\nAutolinker.Util = {\r\n\r\n\t/**\r\n\t * @property {Function} abstractMethod\r\n\t *\r\n\t * A function object which represents an abstract method.\r\n\t */\r\n\tabstractMethod : function() { throw \"abstract\"; },\r\n\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {RegExp} trimRegex\r\n\t *\r\n\t * The regular expression used to trim the leading and trailing whitespace\r\n\t * from a string.\r\n\t */\r\n\ttrimRegex : /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\r\n\r\n\r\n\t/**\r\n\t * Assigns (shallow copies) the properties of `src` onto `dest`.\r\n\t *\r\n\t * @param {Object} dest The destination object.\r\n\t * @param {Object} src The source object.\r\n\t * @return {Object} The destination object (`dest`)\r\n\t */\r\n\tassign : function( dest, src ) {\r\n\t\tfor( var prop in src ) {\r\n\t\t\tif( src.hasOwnProperty( prop ) ) {\r\n\t\t\t\tdest[ prop ] = src[ prop ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn dest;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Assigns (shallow copies) the properties of `src` onto `dest`, if the\r\n\t * corresponding property on `dest` === `undefined`.\r\n\t *\r\n\t * @param {Object} dest The destination object.\r\n\t * @param {Object} src The source object.\r\n\t * @return {Object} The destination object (`dest`)\r\n\t */\r\n\tdefaults : function( dest, src ) {\r\n\t\tfor( var prop in src ) {\r\n\t\t\tif( src.hasOwnProperty( prop ) && dest[ prop ] === undefined ) {\r\n\t\t\t\tdest[ prop ] = src[ prop ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn dest;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Extends `superclass` to create a new subclass, adding the `protoProps` to the new subclass's prototype.\r\n\t *\r\n\t * @param {Function} superclass The constructor function for the superclass.\r\n\t * @param {Object} protoProps The methods/properties to add to the subclass's prototype. This may contain the\r\n\t * special property `constructor`, which will be used as the new subclass's constructor function.\r\n\t * @return {Function} The new subclass function.\r\n\t */\r\n\textend : function( superclass, protoProps ) {\r\n\t\tvar superclassProto = superclass.prototype;\r\n\r\n\t\tvar F = function() {};\r\n\t\tF.prototype = superclassProto;\r\n\r\n\t\tvar subclass;\r\n\t\tif( protoProps.hasOwnProperty( 'constructor' ) ) {\r\n\t\t\tsubclass = protoProps.constructor;\r\n\t\t} else {\r\n\t\t\tsubclass = function() { superclassProto.constructor.apply( this, arguments ); };\r\n\t\t}\r\n\r\n\t\tvar subclassProto = subclass.prototype = new F(); // set up prototype chain\r\n\t\tsubclassProto.constructor = subclass; // fix constructor property\r\n\t\tsubclassProto.superclass = superclassProto;\r\n\r\n\t\tdelete protoProps.constructor; // don't re-assign constructor property to the prototype, since a new function may have been created (`subclass`), which is now already there\r\n\t\tAutolinker.Util.assign( subclassProto, protoProps );\r\n\r\n\t\treturn subclass;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Truncates the `str` at `len - ellipsisChars.length`, and adds the `ellipsisChars` to the\r\n\t * end of the string (by default, two periods: '..'). If the `str` length does not exceed\r\n\t * `len`, the string will be returned unchanged.\r\n\t *\r\n\t * @param {String} str The string to truncate and add an ellipsis to.\r\n\t * @param {Number} truncateLen The length to truncate the string at.\r\n\t * @param {String} [ellipsisChars=..] The ellipsis character(s) to add to the end of `str`\r\n\t * when truncated. Defaults to '..'\r\n\t */\r\n\tellipsis : function( str, truncateLen, ellipsisChars ) {\r\n\t\tif( str.length > truncateLen ) {\r\n\t\t\tellipsisChars = ( ellipsisChars == null ) ? '..' : ellipsisChars;\r\n\t\t\tstr = str.substring( 0, truncateLen - ellipsisChars.length ) + ellipsisChars;\r\n\t\t}\r\n\t\treturn str;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Supports `Array.prototype.indexOf()` functionality for old IE (IE8 and below).\r\n\t *\r\n\t * @param {Array} arr The array to find an element of.\r\n\t * @param {*} element The element to find in the array, and return the index of.\r\n\t * @return {Number} The index of the `element`, or -1 if it was not found.\r\n\t */\r\n\tindexOf : function( arr, element ) {\r\n\t\tif( Array.prototype.indexOf ) {\r\n\t\t\treturn arr.indexOf( element );\r\n\r\n\t\t} else {\r\n\t\t\tfor( var i = 0, len = arr.length; i < len; i++ ) {\r\n\t\t\t\tif( arr[ i ] === element ) return i;\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Removes array elements based on a filtering function. Mutates the input\r\n\t * array.\r\n\t *\r\n\t * Using this instead of the ES5 Array.prototype.filter() function, to allow\r\n\t * Autolinker compatibility with IE8, and also to prevent creating many new\r\n\t * arrays in memory for filtering.\r\n\t *\r\n\t * @param {Array} arr The array to remove elements from. This array is\r\n\t * mutated.\r\n\t * @param {Function} fn A function which should return `true` to\r\n\t * remove an element.\r\n\t * @return {Array} The mutated input `arr`.\r\n\t */\r\n\tremove : function( arr, fn ) {\r\n\t\tfor( var i = arr.length - 1; i >= 0; i-- ) {\r\n\t\t\tif( fn( arr[ i ] ) === true ) {\r\n\t\t\t\tarr.splice( i, 1 );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Performs the functionality of what modern browsers do when `String.prototype.split()` is called\r\n\t * with a regular expression that contains capturing parenthesis.\r\n\t *\r\n\t * For example:\r\n\t *\r\n\t * // Modern browsers:\r\n\t * \"a,b,c\".split( /(,)/ ); // --> [ 'a', ',', 'b', ',', 'c' ]\r\n\t *\r\n\t * // Old IE (including IE8):\r\n\t * \"a,b,c\".split( /(,)/ ); // --> [ 'a', 'b', 'c' ]\r\n\t *\r\n\t * This method emulates the functionality of modern browsers for the old IE case.\r\n\t *\r\n\t * @param {String} str The string to split.\r\n\t * @param {RegExp} splitRegex The regular expression to split the input `str` on. The splitting\r\n\t * character(s) will be spliced into the array, as in the \"modern browsers\" example in the\r\n\t * description of this method.\r\n\t * Note #1: the supplied regular expression **must** have the 'g' flag specified.\r\n\t * Note #2: for simplicity's sake, the regular expression does not need\r\n\t * to contain capturing parenthesis - it will be assumed that any match has them.\r\n\t * @return {String[]} The split array of strings, with the splitting character(s) included.\r\n\t */\r\n\tsplitAndCapture : function( str, splitRegex ) {\r\n\t\tif( !splitRegex.global ) throw new Error( \"`splitRegex` must have the 'g' flag set\" );\r\n\r\n\t\tvar result = [],\r\n\t\t lastIdx = 0,\r\n\t\t match;\r\n\r\n\t\twhile( match = splitRegex.exec( str ) ) {\r\n\t\t\tresult.push( str.substring( lastIdx, match.index ) );\r\n\t\t\tresult.push( match[ 0 ] ); // push the splitting char(s)\r\n\r\n\t\t\tlastIdx = match.index + match[ 0 ].length;\r\n\t\t}\r\n\t\tresult.push( str.substring( lastIdx ) );\r\n\r\n\t\treturn result;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Trims the leading and trailing whitespace from a string.\r\n\t *\r\n\t * @param {String} str The string to trim.\r\n\t * @return {String}\r\n\t */\r\n\ttrim : function( str ) {\r\n\t\treturn str.replace( this.trimRegex, '' );\r\n\t}\r\n\r\n};\r\n/*global Autolinker */\r\n/*jshint boss:true */\r\n/**\r\n * @class Autolinker.HtmlTag\r\n * @extends Object\r\n *\r\n * Represents an HTML tag, which can be used to easily build/modify HTML tags programmatically.\r\n *\r\n * Autolinker uses this abstraction to create HTML tags, and then write them out as strings. You may also use\r\n * this class in your code, especially within a {@link Autolinker#replaceFn replaceFn}.\r\n *\r\n * ## Examples\r\n *\r\n * Example instantiation:\r\n *\r\n * var tag = new Autolinker.HtmlTag( {\r\n * tagName : 'a',\r\n * attrs : { 'href': 'http://google.com', 'class': 'external-link' },\r\n * innerHtml : 'Google'\r\n * } );\r\n *\r\n * tag.toAnchorString(); // Google\r\n *\r\n * // Individual accessor methods\r\n * tag.getTagName(); // 'a'\r\n * tag.getAttr( 'href' ); // 'http://google.com'\r\n * tag.hasClass( 'external-link' ); // true\r\n *\r\n *\r\n * Using mutator methods (which may be used in combination with instantiation config properties):\r\n *\r\n * var tag = new Autolinker.HtmlTag();\r\n * tag.setTagName( 'a' );\r\n * tag.setAttr( 'href', 'http://google.com' );\r\n * tag.addClass( 'external-link' );\r\n * tag.setInnerHtml( 'Google' );\r\n *\r\n * tag.getTagName(); // 'a'\r\n * tag.getAttr( 'href' ); // 'http://google.com'\r\n * tag.hasClass( 'external-link' ); // true\r\n *\r\n * tag.toAnchorString(); // Google\r\n *\r\n *\r\n * ## Example use within a {@link Autolinker#replaceFn replaceFn}\r\n *\r\n * var html = Autolinker.link( \"Test google.com\", {\r\n * replaceFn : function( autolinker, match ) {\r\n * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance, configured with the Match's href and anchor text\r\n * tag.setAttr( 'rel', 'nofollow' );\r\n *\r\n * return tag;\r\n * }\r\n * } );\r\n *\r\n * // generated html:\r\n * // Test google.com\r\n *\r\n *\r\n * ## Example use with a new tag for the replacement\r\n *\r\n * var html = Autolinker.link( \"Test google.com\", {\r\n * replaceFn : function( autolinker, match ) {\r\n * var tag = new Autolinker.HtmlTag( {\r\n * tagName : 'button',\r\n * attrs : { 'title': 'Load URL: ' + match.getAnchorHref() },\r\n * innerHtml : 'Load URL: ' + match.getAnchorText()\r\n * } );\r\n *\r\n * return tag;\r\n * }\r\n * } );\r\n *\r\n * // generated html:\r\n * // Test \r\n */\r\nAutolinker.HtmlTag = Autolinker.Util.extend( Object, {\r\n\r\n\t/**\r\n\t * @cfg {String} tagName\r\n\t *\r\n\t * The tag name. Ex: 'a', 'button', etc.\r\n\t *\r\n\t * Not required at instantiation time, but should be set using {@link #setTagName} before {@link #toAnchorString}\r\n\t * is executed.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Object.} attrs\r\n\t *\r\n\t * An key/value Object (map) of attributes to create the tag with. The keys are the attribute names, and the\r\n\t * values are the attribute values.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {String} innerHtml\r\n\t *\r\n\t * The inner HTML for the tag.\r\n\t *\r\n\t * Note the camel case name on `innerHtml`. Acronyms are camelCased in this utility (such as not to run into the acronym\r\n\t * naming inconsistency that the DOM developers created with `XMLHttpRequest`). You may alternatively use {@link #innerHTML}\r\n\t * if you prefer, but this one is recommended.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {String} innerHTML\r\n\t *\r\n\t * Alias of {@link #innerHtml}, accepted for consistency with the browser DOM api, but prefer the camelCased version\r\n\t * for acronym names.\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @protected\r\n\t * @property {RegExp} whitespaceRegex\r\n\t *\r\n\t * Regular expression used to match whitespace in a string of CSS classes.\r\n\t */\r\n\twhitespaceRegex : /\\s+/,\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} [cfg] The configuration properties for this class, in an Object (map)\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tAutolinker.Util.assign( this, cfg );\r\n\r\n\t\tthis.innerHtml = this.innerHtml || this.innerHTML; // accept either the camelCased form or the fully capitalized acronym\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Sets the tag name that will be used to generate the tag with.\r\n\t *\r\n\t * @param {String} tagName\r\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\r\n\t */\r\n\tsetTagName : function( tagName ) {\r\n\t\tthis.tagName = tagName;\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Retrieves the tag name.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetTagName : function() {\r\n\t\treturn this.tagName || \"\";\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Sets an attribute on the HtmlTag.\r\n\t *\r\n\t * @param {String} attrName The attribute name to set.\r\n\t * @param {String} attrValue The attribute value to set.\r\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\r\n\t */\r\n\tsetAttr : function( attrName, attrValue ) {\r\n\t\tvar tagAttrs = this.getAttrs();\r\n\t\ttagAttrs[ attrName ] = attrValue;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Retrieves an attribute from the HtmlTag. If the attribute does not exist, returns `undefined`.\r\n\t *\r\n\t * @param {String} attrName The attribute name to retrieve.\r\n\t * @return {String} The attribute's value, or `undefined` if it does not exist on the HtmlTag.\r\n\t */\r\n\tgetAttr : function( attrName ) {\r\n\t\treturn this.getAttrs()[ attrName ];\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Sets one or more attributes on the HtmlTag.\r\n\t *\r\n\t * @param {Object.} attrs A key/value Object (map) of the attributes to set.\r\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\r\n\t */\r\n\tsetAttrs : function( attrs ) {\r\n\t\tvar tagAttrs = this.getAttrs();\r\n\t\tAutolinker.Util.assign( tagAttrs, attrs );\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Retrieves the attributes Object (map) for the HtmlTag.\r\n\t *\r\n\t * @return {Object.} A key/value object of the attributes for the HtmlTag.\r\n\t */\r\n\tgetAttrs : function() {\r\n\t\treturn this.attrs || ( this.attrs = {} );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Sets the provided `cssClass`, overwriting any current CSS classes on the HtmlTag.\r\n\t *\r\n\t * @param {String} cssClass One or more space-separated CSS classes to set (overwrite).\r\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\r\n\t */\r\n\tsetClass : function( cssClass ) {\r\n\t\treturn this.setAttr( 'class', cssClass );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Convenience method to add one or more CSS classes to the HtmlTag. Will not add duplicate CSS classes.\r\n\t *\r\n\t * @param {String} cssClass One or more space-separated CSS classes to add.\r\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\r\n\t */\r\n\taddClass : function( cssClass ) {\r\n\t\tvar classAttr = this.getClass(),\r\n\t\t whitespaceRegex = this.whitespaceRegex,\r\n\t\t indexOf = Autolinker.Util.indexOf, // to support IE8 and below\r\n\t\t classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ),\r\n\t\t newClasses = cssClass.split( whitespaceRegex ),\r\n\t\t newClass;\r\n\r\n\t\twhile( newClass = newClasses.shift() ) {\r\n\t\t\tif( indexOf( classes, newClass ) === -1 ) {\r\n\t\t\t\tclasses.push( newClass );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.getAttrs()[ 'class' ] = classes.join( \" \" );\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Convenience method to remove one or more CSS classes from the HtmlTag.\r\n\t *\r\n\t * @param {String} cssClass One or more space-separated CSS classes to remove.\r\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\r\n\t */\r\n\tremoveClass : function( cssClass ) {\r\n\t\tvar classAttr = this.getClass(),\r\n\t\t whitespaceRegex = this.whitespaceRegex,\r\n\t\t indexOf = Autolinker.Util.indexOf, // to support IE8 and below\r\n\t\t classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ),\r\n\t\t removeClasses = cssClass.split( whitespaceRegex ),\r\n\t\t removeClass;\r\n\r\n\t\twhile( classes.length && ( removeClass = removeClasses.shift() ) ) {\r\n\t\t\tvar idx = indexOf( classes, removeClass );\r\n\t\t\tif( idx !== -1 ) {\r\n\t\t\t\tclasses.splice( idx, 1 );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.getAttrs()[ 'class' ] = classes.join( \" \" );\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Convenience method to retrieve the CSS class(es) for the HtmlTag, which will each be separated by spaces when\r\n\t * there are multiple.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetClass : function() {\r\n\t\treturn this.getAttrs()[ 'class' ] || \"\";\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Convenience method to check if the tag has a CSS class or not.\r\n\t *\r\n\t * @param {String} cssClass The CSS class to check for.\r\n\t * @return {Boolean} `true` if the HtmlTag has the CSS class, `false` otherwise.\r\n\t */\r\n\thasClass : function( cssClass ) {\r\n\t\treturn ( ' ' + this.getClass() + ' ' ).indexOf( ' ' + cssClass + ' ' ) !== -1;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Sets the inner HTML for the tag.\r\n\t *\r\n\t * @param {String} html The inner HTML to set.\r\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\r\n\t */\r\n\tsetInnerHtml : function( html ) {\r\n\t\tthis.innerHtml = html;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Retrieves the inner HTML for the tag.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetInnerHtml : function() {\r\n\t\treturn this.innerHtml || \"\";\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Override of superclass method used to generate the HTML string for the tag.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\ttoAnchorString : function() {\r\n\t\tvar tagName = this.getTagName(),\r\n\t\t attrsStr = this.buildAttrsStr();\r\n\r\n\t\tattrsStr = ( attrsStr ) ? ' ' + attrsStr : ''; // prepend a space if there are actually attributes\r\n\r\n\t\treturn [ '<', tagName, attrsStr, '>', this.getInnerHtml(), '' ].join( \"\" );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Support method for {@link #toAnchorString}, returns the string space-separated key=\"value\" pairs, used to populate\r\n\t * the stringified HtmlTag.\r\n\t *\r\n\t * @protected\r\n\t * @return {String} Example return: `attr1=\"value1\" attr2=\"value2\"`\r\n\t */\r\n\tbuildAttrsStr : function() {\r\n\t\tif( !this.attrs ) return \"\"; // no `attrs` Object (map) has been set, return empty string\r\n\r\n\t\tvar attrs = this.getAttrs(),\r\n\t\t attrsArr = [];\r\n\r\n\t\tfor( var prop in attrs ) {\r\n\t\t\tif( attrs.hasOwnProperty( prop ) ) {\r\n\t\t\t\tattrsArr.push( prop + '=\"' + attrs[ prop ] + '\"' );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn attrsArr.join( \" \" );\r\n\t}\r\n\r\n} );\r\n\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.RegexLib\r\n * @singleton\r\n *\r\n * Builds and stores a library of the common regular expressions used by the\r\n * Autolinker utility.\r\n *\r\n * Other regular expressions may exist ad-hoc, but these are generally the\r\n * regular expressions that are shared between source files.\r\n */\r\nAutolinker.RegexLib = (function() {\r\n\r\n\t/**\r\n\t * The string form of a regular expression that would match all of the\r\n\t * alphabetic (\"letter\") chars in the unicode character set when placed in a\r\n\t * RegExp character class (`[]`). This includes all international alphabetic\r\n\t * characters.\r\n\t *\r\n\t * These would be the characters matched by unicode regex engines `\\p{L}`\r\n\t * escape (\"all letters\").\r\n\t *\r\n\t * Taken from the XRegExp library: http://xregexp.com/\r\n\t * Specifically: http://xregexp.com/v/3.0.0/unicode-categories.js\r\n\t *\r\n\t * @private\r\n\t * @type {String}\r\n\t */\r\n\tvar alphaCharsStr = 'A-Za-z\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC';\r\n\r\n\t/**\r\n\t * The string form of a regular expression that would match all of the\r\n\t * decimal number chars in the unicode character set when placed in a RegExp\r\n\t * character class (`[]`).\r\n\t *\r\n\t * These would be the characters matched by unicode regex engines `\\p{Nd}`\r\n\t * escape (\"all decimal numbers\")\r\n\t *\r\n\t * Taken from the XRegExp library: http://xregexp.com/\r\n\t * Specifically: http://xregexp.com/v/3.0.0/unicode-categories.js\r\n\t *\r\n\t * @private\r\n\t * @type {String}\r\n\t */\r\n\tvar decimalNumbersStr = '0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19';\r\n\r\n\r\n\t// See documentation below\r\n\tvar alphaNumericCharsStr = alphaCharsStr + decimalNumbersStr;\r\n\r\n\r\n\t// See documentation below\r\n\tvar domainNameRegex = new RegExp( '[' + alphaNumericCharsStr + '.\\\\-]*[' + alphaNumericCharsStr + '\\\\-]' );\r\n\r\n\r\n\t// See documentation below\r\n\tvar tldRegex = /(?:travelersinsurance|sandvikcoromant|kerryproperties|cancerresearch|weatherchannel|kerrylogistics|spreadbetting|international|wolterskluwer|lifeinsurance|construction|pamperedchef|scholarships|versicherung|bridgestone|creditunion|kerryhotels|investments|productions|blackfriday|enterprises|lamborghini|photography|motorcycles|williamhill|playstation|contractors|barclaycard|accountants|redumbrella|engineering|management|telefonica|protection|consulting|tatamotors|creditcard|vlaanderen|schaeffler|associates|properties|foundation|republican|bnpparibas|boehringer|eurovision|extraspace|industries|immobilien|university|technology|volkswagen|healthcare|restaurant|cuisinella|vistaprint|apartments|accountant|travelers|homedepot|institute|vacations|furniture|fresenius|insurance|christmas|bloomberg|solutions|barcelona|firestone|financial|kuokgroup|fairwinds|community|passagens|goldpoint|equipment|lifestyle|yodobashi|aquarelle|marketing|analytics|education|amsterdam|statefarm|melbourne|allfinanz|directory|microsoft|stockholm|montblanc|accenture|lancaster|landrover|everbank|istanbul|graphics|grainger|ipiranga|softbank|attorney|pharmacy|saarland|catering|airforce|yokohama|mortgage|frontier|mutuelle|stcgroup|memorial|pictures|football|symantec|cipriani|ventures|telecity|cityeats|verisign|flsmidth|boutique|cleaning|firmdale|clinique|clothing|redstone|infiniti|deloitte|feedback|services|broadway|plumbing|commbank|training|barclays|exchange|computer|brussels|software|delivery|barefoot|builders|business|bargains|engineer|holdings|download|security|helsinki|lighting|movistar|discount|hdfcbank|supplies|marriott|property|diamonds|capetown|partners|democrat|jpmorgan|bradesco|budapest|rexroth|zuerich|shriram|academy|science|support|youtube|singles|surgery|alibaba|statoil|dentist|schwarz|android|cruises|cricket|digital|markets|starhub|systems|courses|coupons|netbank|country|domains|corsica|network|neustar|realtor|lincoln|limited|schmidt|yamaxun|cooking|contact|auction|spiegel|liaison|leclerc|latrobe|lasalle|abogado|compare|lanxess|exposed|express|company|cologne|college|avianca|lacaixa|fashion|recipes|ferrero|komatsu|storage|wanggou|clubmed|sandvik|fishing|fitness|bauhaus|kitchen|flights|florist|flowers|watches|weather|temasek|samsung|bentley|forsale|channel|theater|frogans|theatre|okinawa|website|tickets|jewelry|gallery|tiffany|iselect|shiksha|brother|organic|wedding|genting|toshiba|origins|philips|hyundai|hotmail|hoteles|hosting|rentals|windows|cartier|bugatti|holiday|careers|whoswho|hitachi|panerai|caravan|reviews|guitars|capital|trading|hamburg|hangout|finance|stream|family|abbott|health|review|travel|report|hermes|hiphop|gratis|career|toyota|hockey|dating|repair|google|social|soccer|reisen|global|otsuka|giving|unicom|casino|photos|center|broker|rocher|orange|bostik|garden|insure|ryukyu|bharti|safety|physio|sakura|oracle|online|jaguar|gallup|piaget|tienda|futbol|pictet|joburg|webcam|berlin|office|juegos|kaufen|chanel|chrome|xihuan|church|tennis|circle|kinder|flickr|bayern|claims|clinic|viajes|nowruz|xperia|norton|yachts|studio|coffee|camera|sanofi|nissan|author|expert|events|comsec|lawyer|tattoo|viking|estate|villas|condos|realty|yandex|energy|emerck|virgin|vision|durban|living|school|coupon|london|taobao|natura|taipei|nagoya|luxury|walter|aramco|sydney|madrid|credit|maison|makeup|schule|market|anquan|direct|design|swatch|suzuki|alsace|vuelos|dental|alipay|voyage|shouji|voting|airtel|mutual|degree|supply|agency|museum|mobily|dealer|monash|select|mormon|active|moscow|racing|datsun|quebec|nissay|rodeo|email|gifts|works|photo|chloe|edeka|cheap|earth|vista|tushu|koeln|glass|shoes|globo|tunes|gmail|nokia|space|kyoto|black|ricoh|seven|lamer|sener|epson|cisco|praxi|trust|citic|crown|shell|lease|green|legal|lexus|ninja|tatar|gripe|nikon|group|video|wales|autos|gucci|party|nexus|guide|linde|adult|parts|amica|lixil|boats|azure|loans|locus|cymru|lotte|lotto|stada|click|poker|quest|dabur|lupin|nadex|paris|faith|dance|canon|place|gives|trade|skype|rocks|mango|cloud|boots|smile|final|swiss|homes|honda|media|horse|cards|deals|watch|bosch|house|pizza|miami|osaka|tours|total|xerox|coach|sucks|style|delta|toray|iinet|tools|money|codes|beats|tokyo|salon|archi|movie|baidu|study|actor|yahoo|store|apple|world|forex|today|bible|tmall|tirol|irish|tires|forum|reise|vegas|vodka|sharp|omega|weber|jetzt|audio|promo|build|bingo|chase|gallo|drive|dubai|rehab|press|solar|sale|beer|bbva|bank|band|auto|sapo|sarl|saxo|audi|asia|arte|arpa|army|yoga|ally|zara|scor|scot|sexy|seat|zero|seek|aero|adac|zone|aarp|maif|meet|meme|menu|surf|mini|mobi|mtpc|porn|desi|star|ltda|name|talk|navy|love|loan|live|link|news|limo|like|spot|life|nico|lidl|lgbt|land|taxi|team|tech|kred|kpmg|sony|song|kiwi|kddi|jprs|jobs|sohu|java|itau|tips|info|immo|icbc|hsbc|town|host|page|toys|here|help|pars|haus|guru|guge|tube|goog|golf|gold|sncf|gmbh|gift|ggee|gent|gbiz|game|vana|pics|fund|ford|ping|pink|fish|film|fast|farm|play|fans|fail|plus|skin|pohl|fage|moda|post|erni|dvag|prod|doha|prof|docs|viva|diet|luxe|site|dell|sina|dclk|show|qpon|date|vote|cyou|voto|read|coop|cool|wang|club|city|chat|cern|cash|reit|rent|casa|cars|care|camp|rest|call|cafe|weir|wien|rich|wiki|buzz|wine|book|bond|room|work|rsvp|shia|ruhr|blue|bing|shaw|bike|safe|xbox|best|pwc|mtn|lds|aig|boo|fyi|nra|nrw|ntt|car|gal|obi|zip|aeg|vin|how|one|ong|onl|dad|ooo|bet|esq|org|htc|bar|uol|ibm|ovh|gdn|ice|icu|uno|gea|ifm|bot|top|wtf|lol|day|pet|eus|wtc|ubs|tvs|aco|ing|ltd|ink|tab|abb|afl|cat|int|pid|pin|bid|cba|gle|com|cbn|ads|man|wed|ceb|gmo|sky|ist|gmx|tui|mba|fan|ski|iwc|app|pro|med|ceo|jcb|jcp|goo|dev|men|aaa|meo|pub|jlc|bom|jll|gop|jmp|mil|got|gov|win|jot|mma|joy|trv|red|cfa|cfd|bio|moe|moi|mom|ren|biz|aws|xin|bbc|dnp|buy|kfh|mov|thd|xyz|fit|kia|rio|rip|kim|dog|vet|nyc|bcg|mtr|bcn|bms|bmw|run|bzh|rwe|tel|stc|axa|kpn|fly|krd|cab|bnl|foo|crs|eat|tci|sap|srl|nec|sas|net|cal|sbs|sfr|sca|scb|csc|edu|new|xxx|hiv|fox|wme|ngo|nhk|vip|sex|frl|lat|yun|law|you|tax|soy|sew|om|ac|hu|se|sc|sg|sh|sb|sa|rw|ru|rs|ro|re|qa|py|si|pw|pt|ps|sj|sk|pr|pn|pm|pl|sl|sm|pk|sn|ph|so|pg|pf|pe|pa|zw|nz|nu|nr|np|no|nl|ni|ng|nf|sr|ne|st|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|su|mn|mm|ml|mk|mh|mg|me|sv|md|mc|sx|sy|ma|ly|lv|sz|lu|lt|ls|lr|lk|li|lc|lb|la|tc|kz|td|ky|kw|kr|kp|kn|km|ki|kh|tf|tg|th|kg|ke|jp|jo|jm|je|it|is|ir|tj|tk|tl|tm|iq|tn|to|io|in|im|il|ie|ad|sd|ht|hr|hn|hm|tr|hk|gy|gw|gu|gt|gs|gr|gq|tt|gp|gn|gm|gl|tv|gi|tw|tz|ua|gh|ug|uk|gg|gf|ge|gd|us|uy|uz|va|gb|ga|vc|ve|fr|fo|fm|fk|fj|vg|vi|fi|eu|et|es|er|eg|ee|ec|dz|do|dm|dk|vn|dj|de|cz|cy|cx|cw|vu|cv|cu|cr|co|cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|wf|bz|by|bw|bv|bt|bs|br|bo|bn|bm|bj|bi|ws|bh|bg|bf|be|bd|bb|ba|az|ax|aw|au|at|as|ye|ar|aq|ao|am|al|yt|ai|za|ag|af|ae|zm|id)\\b/;\r\n\r\n\r\n\treturn {\r\n\r\n\t\t/**\r\n\t\t * The string form of a regular expression that would match all of the\r\n\t\t * letters and decimal number chars in the unicode character set when placed\r\n\t\t * in a RegExp character class (`[]`).\r\n\t\t *\r\n\t\t * These would be the characters matched by unicode regex engines `[\\p{L}\\p{Nd}]`\r\n\t\t * escape (\"all letters and decimal numbers\")\r\n\t\t *\r\n\t\t * @property {String} alphaNumericCharsStr\r\n\t\t */\r\n\t\talphaNumericCharsStr : alphaNumericCharsStr,\r\n\r\n\t\t/**\r\n\t\t * A regular expression to match domain names of a URL or email address.\r\n\t\t * Ex: 'google', 'yahoo', 'some-other-company', etc.\r\n\t\t *\r\n\t\t * @property {RegExp} domainNameRegex\r\n\t\t */\r\n\t\tdomainNameRegex : domainNameRegex,\r\n\r\n\t\t/**\r\n\t\t * A regular expression to match top level domains (TLDs) for a URL or\r\n\t\t * email address. Ex: 'com', 'org', 'net', etc.\r\n\t\t *\r\n\t\t * @property {RegExp} tldRegex\r\n\t\t */\r\n\t\ttldRegex : tldRegex\r\n\r\n\t};\r\n\r\n\r\n}() );\r\n/*global Autolinker */\r\n/*jshint sub:true */\r\n/**\r\n * @protected\r\n * @class Autolinker.AnchorTagBuilder\r\n * @extends Object\r\n *\r\n * Builds anchor (<a>) tags for the Autolinker utility when a match is\r\n * found.\r\n *\r\n * Normally this class is instantiated, configured, and used internally by an\r\n * {@link Autolinker} instance, but may actually be retrieved in a {@link Autolinker#replaceFn replaceFn}\r\n * to create {@link Autolinker.HtmlTag HtmlTag} instances which may be modified\r\n * before returning from the {@link Autolinker#replaceFn replaceFn}. For\r\n * example:\r\n *\r\n * var html = Autolinker.link( \"Test google.com\", {\r\n * replaceFn : function( autolinker, match ) {\r\n * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance\r\n * tag.setAttr( 'rel', 'nofollow' );\r\n *\r\n * return tag;\r\n * }\r\n * } );\r\n *\r\n * // generated html:\r\n * // Test google.com\r\n */\r\nAutolinker.AnchorTagBuilder = Autolinker.Util.extend( Object, {\r\n\r\n\t/**\r\n\t * @cfg {Boolean} newWindow\r\n\t * @inheritdoc Autolinker#newWindow\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Object} truncate\r\n\t * @inheritdoc Autolinker#truncate\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {String} className\r\n\t * @inheritdoc Autolinker#className\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tAutolinker.Util.assign( this, cfg );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Generates the actual anchor (<a>) tag to use in place of the\r\n\t * matched text, via its `match` object.\r\n\t *\r\n\t * @param {Autolinker.match.Match} match The Match instance to generate an\r\n\t * anchor tag from.\r\n\t * @return {Autolinker.HtmlTag} The HtmlTag instance for the anchor tag.\r\n\t */\r\n\tbuild : function( match ) {\r\n\t\treturn new Autolinker.HtmlTag( {\r\n\t\t\ttagName : 'a',\r\n\t\t\tattrs : this.createAttrs( match.getType(), match.getAnchorHref() ),\r\n\t\t\tinnerHtml : this.processAnchorText( match.getAnchorText() )\r\n\t\t} );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Creates the Object (map) of the HTML attributes for the anchor (<a>)\r\n\t * tag being generated.\r\n\t *\r\n\t * @protected\r\n\t * @param {\"url\"/\"email\"/\"phone\"/\"twitter\"/\"hashtag\"} matchType The type of\r\n\t * match that an anchor tag is being generated for.\r\n\t * @param {String} anchorHref The href for the anchor tag.\r\n\t * @return {Object} A key/value Object (map) of the anchor tag's attributes.\r\n\t */\r\n\tcreateAttrs : function( matchType, anchorHref ) {\r\n\t\tvar attrs = {\r\n\t\t\t'href' : anchorHref // we'll always have the `href` attribute\r\n\t\t};\r\n\r\n\t\tvar cssClass = this.createCssClass( matchType );\r\n\t\tif( cssClass ) {\r\n\t\t\tattrs[ 'class' ] = cssClass;\r\n\t\t}\r\n\t\tif( this.newWindow ) {\r\n\t\t\tattrs[ 'target' ] = \"_blank\";\r\n\t\t\tattrs[ 'rel' ] = \"noopener noreferrer\";\r\n\t\t}\r\n\r\n\t\treturn attrs;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Creates the CSS class that will be used for a given anchor tag, based on\r\n\t * the `matchType` and the {@link #className} config.\r\n\t *\r\n\t * @private\r\n\t * @param {\"url\"/\"email\"/\"phone\"/\"twitter\"/\"hashtag\"} matchType The type of\r\n\t * match that an anchor tag is being generated for.\r\n\t * @return {String} The CSS class string for the link. Example return:\r\n\t * \"myLink myLink-url\". If no {@link #className} was configured, returns\r\n\t * an empty string.\r\n\t */\r\n\tcreateCssClass : function( matchType ) {\r\n\t\tvar className = this.className;\r\n\r\n\t\tif( !className )\r\n\t\t\treturn \"\";\r\n\t\telse\r\n\t\t\treturn className + \" \" + className + \"-\" + matchType; // ex: \"myLink myLink-url\", \"myLink myLink-email\", \"myLink myLink-phone\", \"myLink myLink-twitter\", or \"myLink myLink-hashtag\"\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Processes the `anchorText` by truncating the text according to the\r\n\t * {@link #truncate} config.\r\n\t *\r\n\t * @private\r\n\t * @param {String} anchorText The anchor tag's text (i.e. what will be\r\n\t * displayed).\r\n\t * @return {String} The processed `anchorText`.\r\n\t */\r\n\tprocessAnchorText : function( anchorText ) {\r\n\t\tanchorText = this.doTruncate( anchorText );\r\n\r\n\t\treturn anchorText;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Performs the truncation of the `anchorText` based on the {@link #truncate}\r\n\t * option. If the `anchorText` is longer than the length specified by the\r\n\t * {@link #truncate} option, the truncation is performed based on the\r\n\t * `location` property. See {@link #truncate} for details.\r\n\t *\r\n\t * @private\r\n\t * @param {String} anchorText The anchor tag's text (i.e. what will be\r\n\t * displayed).\r\n\t * @return {String} The truncated anchor text.\r\n\t */\r\n\tdoTruncate : function( anchorText ) {\r\n\t\tvar truncate = this.truncate;\r\n\t\tif( !truncate || !truncate.length ) return anchorText;\r\n\r\n\t\tvar truncateLength = truncate.length,\r\n\t\t\ttruncateLocation = truncate.location;\r\n\r\n\t\tif( truncateLocation === 'smart' ) {\r\n\t\t\treturn Autolinker.truncate.TruncateSmart( anchorText, truncateLength, '..' );\r\n\r\n\t\t} else if( truncateLocation === 'middle' ) {\r\n\t\t\treturn Autolinker.truncate.TruncateMiddle( anchorText, truncateLength, '..' );\r\n\r\n\t\t} else {\r\n\t\t\treturn Autolinker.truncate.TruncateEnd( anchorText, truncateLength, '..' );\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.htmlParser.HtmlParser\r\n * @extends Object\r\n *\r\n * An HTML parser implementation which simply walks an HTML string and returns an array of\r\n * {@link Autolinker.htmlParser.HtmlNode HtmlNodes} that represent the basic HTML structure of the input string.\r\n *\r\n * Autolinker uses this to only link URLs/emails/Twitter handles within text nodes, effectively ignoring / \"walking\r\n * around\" HTML tags.\r\n */\r\nAutolinker.htmlParser.HtmlParser = Autolinker.Util.extend( Object, {\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {RegExp} htmlRegex\r\n\t *\r\n\t * The regular expression used to pull out HTML tags from a string. Handles namespaced HTML tags and\r\n\t * attribute names, as specified by http://www.w3.org/TR/html-markup/syntax.html.\r\n\t *\r\n\t * Capturing groups:\r\n\t *\r\n\t * 1. The \"!DOCTYPE\" tag name, if a tag is a <!DOCTYPE> tag.\r\n\t * 2. If it is an end tag, this group will have the '/'.\r\n\t * 3. If it is a comment tag, this group will hold the comment text (i.e.\r\n\t * the text inside the `<!--` and `-->`.\r\n\t * 4. The tag name for all tags (other than the <!DOCTYPE> tag)\r\n\t */\r\n\thtmlRegex : (function() {\r\n\t\tvar commentTagRegex = /!--([\\s\\S]+?)--/,\r\n\t\t tagNameRegex = /[0-9a-zA-Z][0-9a-zA-Z:]*/,\r\n\t\t attrNameRegex = /[^\\s\"'>\\/=\\x00-\\x1F\\x7F]+/, // the unicode range accounts for excluding control chars, and the delete char\r\n\t\t attrValueRegex = /(?:\"[^\"]*?\"|'[^']*?'|[^'\"=<>`\\s]+)/, // double quoted, single quoted, or unquoted attribute values\r\n\t\t nameEqualsValueRegex = attrNameRegex.source + '(?:\\\\s*=\\\\s*' + attrValueRegex.source + ')?'; // optional '=[value]'\r\n\r\n\t\treturn new RegExp( [\r\n\t\t\t// for tag. Ex: )\r\n\t\t\t'(?:',\r\n\t\t\t\t'<(!DOCTYPE)', // *** Capturing Group 1 - If it's a doctype tag\r\n\r\n\t\t\t\t\t// Zero or more attributes following the tag name\r\n\t\t\t\t\t'(?:',\r\n\t\t\t\t\t\t'\\\\s+', // one or more whitespace chars before an attribute\r\n\r\n\t\t\t\t\t\t// Either:\r\n\t\t\t\t\t\t// A. attr=\"value\", or\r\n\t\t\t\t\t\t// B. \"value\" alone (To cover example doctype tag: )\r\n\t\t\t\t\t\t'(?:', nameEqualsValueRegex, '|', attrValueRegex.source + ')',\r\n\t\t\t\t\t')*',\r\n\t\t\t\t'>',\r\n\t\t\t')',\r\n\r\n\t\t\t'|',\r\n\r\n\t\t\t// All other HTML tags (i.e. tags that are not )\r\n\t\t\t'(?:',\r\n\t\t\t\t'<(/)?', // Beginning of a tag or comment. Either '<' for a start tag, or ''\r\n\r\n\t\t\t\t\t\t')',\r\n\t\t\t\t\t')',\r\n\t\t\t\t'>',\r\n\t\t\t')'\r\n\t\t].join( \"\" ), 'gi' );\r\n\t} )(),\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {RegExp} htmlCharacterEntitiesRegex\r\n\t *\r\n\t * The regular expression that matches common HTML character entities.\r\n\t *\r\n\t * Ignoring & as it could be part of a query string -- handling it separately.\r\n\t */\r\n\thtmlCharacterEntitiesRegex: /( | |<|<|>|>|"|"|')/gi,\r\n\r\n\r\n\t/**\r\n\t * Parses an HTML string and returns a simple array of {@link Autolinker.htmlParser.HtmlNode HtmlNodes}\r\n\t * to represent the HTML structure of the input string.\r\n\t *\r\n\t * @param {String} html The HTML to parse.\r\n\t * @return {Autolinker.htmlParser.HtmlNode[]}\r\n\t */\r\n\tparse : function( html ) {\r\n\t\tvar htmlRegex = this.htmlRegex,\r\n\t\t currentResult,\r\n\t\t lastIndex = 0,\r\n\t\t textAndEntityNodes,\r\n\t\t nodes = []; // will be the result of the method\r\n\r\n\t\twhile( ( currentResult = htmlRegex.exec( html ) ) !== null ) {\r\n\t\t\tvar tagText = currentResult[ 0 ],\r\n\t\t\t commentText = currentResult[ 3 ], // if we've matched a comment\r\n\t\t\t tagName = currentResult[ 1 ] || currentResult[ 4 ], // The tag (ex: \"!DOCTYPE\"), or another tag (ex: \"a\" or \"img\")\r\n\t\t\t isClosingTag = !!currentResult[ 2 ],\r\n\t\t\t offset = currentResult.index,\r\n\t\t\t inBetweenTagsText = html.substring( lastIndex, offset );\r\n\r\n\t\t\t// Push TextNodes and EntityNodes for any text found between tags\r\n\t\t\tif( inBetweenTagsText ) {\r\n\t\t\t\ttextAndEntityNodes = this.parseTextAndEntityNodes( lastIndex, inBetweenTagsText );\r\n\t\t\t\tnodes.push.apply( nodes, textAndEntityNodes );\r\n\t\t\t}\r\n\r\n\t\t\t// Push the CommentNode or ElementNode\r\n\t\t\tif( commentText ) {\r\n\t\t\t\tnodes.push( this.createCommentNode( offset, tagText, commentText ) );\r\n\t\t\t} else {\r\n\t\t\t\tnodes.push( this.createElementNode( offset, tagText, tagName, isClosingTag ) );\r\n\t\t\t}\r\n\r\n\t\t\tlastIndex = offset + tagText.length;\r\n\t\t}\r\n\r\n\t\t// Process any remaining text after the last HTML element. Will process all of the text if there were no HTML elements.\r\n\t\tif( lastIndex < html.length ) {\r\n\t\t\tvar text = html.substring( lastIndex );\r\n\r\n\t\t\t// Push TextNodes and EntityNodes for any text found between tags\r\n\t\t\tif( text ) {\r\n\t\t\t\ttextAndEntityNodes = this.parseTextAndEntityNodes( lastIndex, text );\r\n\t\t\t\tnodes.push.apply( nodes, textAndEntityNodes );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nodes;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Parses text and HTML entity nodes from a given string. The input string\r\n\t * should not have any HTML tags (elements) within it.\r\n\t *\r\n\t * @private\r\n\t * @param {Number} offset The offset of the text node match within the\r\n\t * original HTML string.\r\n\t * @param {String} text The string of text to parse. This is from an HTML\r\n\t * text node.\r\n\t * @return {Autolinker.htmlParser.HtmlNode[]} An array of HtmlNodes to\r\n\t * represent the {@link Autolinker.htmlParser.TextNode TextNodes} and\r\n\t * {@link Autolinker.htmlParser.EntityNode EntityNodes} found.\r\n\t */\r\n\tparseTextAndEntityNodes : function( offset, text ) {\r\n\t\tvar nodes = [],\r\n\t\t textAndEntityTokens = Autolinker.Util.splitAndCapture( text, this.htmlCharacterEntitiesRegex ); // split at HTML entities, but include the HTML entities in the results array\r\n\r\n\t\t// Every even numbered token is a TextNode, and every odd numbered token is an EntityNode\r\n\t\t// For example: an input `text` of \"Test "this" today\" would turn into the\r\n\t\t// `textAndEntityTokens`: [ 'Test ', '"', 'this', '"', ' today' ]\r\n\t\tfor( var i = 0, len = textAndEntityTokens.length; i < len; i += 2 ) {\r\n\t\t\tvar textToken = textAndEntityTokens[ i ],\r\n\t\t\t entityToken = textAndEntityTokens[ i + 1 ];\r\n\r\n\t\t\tif( textToken ) {\r\n\t\t\t\tnodes.push( this.createTextNode( offset, textToken ) );\r\n\t\t\t\toffset += textToken.length;\r\n\t\t\t}\r\n\t\t\tif( entityToken ) {\r\n\t\t\t\tnodes.push( this.createEntityNode( offset, entityToken ) );\r\n\t\t\t\toffset += entityToken.length;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn nodes;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Factory method to create an {@link Autolinker.htmlParser.CommentNode CommentNode}.\r\n\t *\r\n\t * @private\r\n\t * @param {Number} offset The offset of the match within the original HTML\r\n\t * string.\r\n\t * @param {String} tagText The full text of the tag (comment) that was\r\n\t * matched, including its <!-- and -->.\r\n\t * @param {String} commentText The full text of the comment that was matched.\r\n\t */\r\n\tcreateCommentNode : function( offset, tagText, commentText ) {\r\n\t\treturn new Autolinker.htmlParser.CommentNode( {\r\n\t\t\toffset : offset,\r\n\t\t\ttext : tagText,\r\n\t\t\tcomment: Autolinker.Util.trim( commentText )\r\n\t\t} );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Factory method to create an {@link Autolinker.htmlParser.ElementNode ElementNode}.\r\n\t *\r\n\t * @private\r\n\t * @param {Number} offset The offset of the match within the original HTML\r\n\t * string.\r\n\t * @param {String} tagText The full text of the tag (element) that was\r\n\t * matched, including its attributes.\r\n\t * @param {String} tagName The name of the tag. Ex: An <img> tag would\r\n\t * be passed to this method as \"img\".\r\n\t * @param {Boolean} isClosingTag `true` if it's a closing tag, false\r\n\t * otherwise.\r\n\t * @return {Autolinker.htmlParser.ElementNode}\r\n\t */\r\n\tcreateElementNode : function( offset, tagText, tagName, isClosingTag ) {\r\n\t\treturn new Autolinker.htmlParser.ElementNode( {\r\n\t\t\toffset : offset,\r\n\t\t\ttext : tagText,\r\n\t\t\ttagName : tagName.toLowerCase(),\r\n\t\t\tclosing : isClosingTag\r\n\t\t} );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Factory method to create a {@link Autolinker.htmlParser.EntityNode EntityNode}.\r\n\t *\r\n\t * @private\r\n\t * @param {Number} offset The offset of the match within the original HTML\r\n\t * string.\r\n\t * @param {String} text The text that was matched for the HTML entity (such\r\n\t * as '&nbsp;').\r\n\t * @return {Autolinker.htmlParser.EntityNode}\r\n\t */\r\n\tcreateEntityNode : function( offset, text ) {\r\n\t\treturn new Autolinker.htmlParser.EntityNode( { offset: offset, text: text } );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Factory method to create a {@link Autolinker.htmlParser.TextNode TextNode}.\r\n\t *\r\n\t * @private\r\n\t * @param {Number} offset The offset of the match within the original HTML\r\n\t * string.\r\n\t * @param {String} text The text that was matched.\r\n\t * @return {Autolinker.htmlParser.TextNode}\r\n\t */\r\n\tcreateTextNode : function( offset, text ) {\r\n\t\treturn new Autolinker.htmlParser.TextNode( { offset: offset, text: text } );\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @abstract\r\n * @class Autolinker.htmlParser.HtmlNode\r\n *\r\n * Represents an HTML node found in an input string. An HTML node is one of the\r\n * following:\r\n *\r\n * 1. An {@link Autolinker.htmlParser.ElementNode ElementNode}, which represents\r\n * HTML tags.\r\n * 2. A {@link Autolinker.htmlParser.CommentNode CommentNode}, which represents\r\n * HTML comments.\r\n * 3. A {@link Autolinker.htmlParser.TextNode TextNode}, which represents text\r\n * outside or within HTML tags.\r\n * 4. A {@link Autolinker.htmlParser.EntityNode EntityNode}, which represents\r\n * one of the known HTML entities that Autolinker looks for. This includes\r\n * common ones such as &quot; and &nbsp;\r\n */\r\nAutolinker.htmlParser.HtmlNode = Autolinker.Util.extend( Object, {\r\n\r\n\t/**\r\n\t * @cfg {Number} offset (required)\r\n\t *\r\n\t * The offset of the HTML node in the original text that was parsed.\r\n\t */\r\n\toffset : undefined,\r\n\r\n\t/**\r\n\t * @cfg {String} text (required)\r\n\t *\r\n\t * The text that was matched for the HtmlNode.\r\n\t *\r\n\t * - In the case of an {@link Autolinker.htmlParser.ElementNode ElementNode},\r\n\t * this will be the tag's text.\r\n\t * - In the case of an {@link Autolinker.htmlParser.CommentNode CommentNode},\r\n\t * this will be the comment's text.\r\n\t * - In the case of a {@link Autolinker.htmlParser.TextNode TextNode}, this\r\n\t * will be the text itself.\r\n\t * - In the case of a {@link Autolinker.htmlParser.EntityNode EntityNode},\r\n\t * this will be the text of the HTML entity.\r\n\t */\r\n\ttext : undefined,\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Match instance,\r\n\t * specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tAutolinker.Util.assign( this, cfg );\r\n\r\n\t\tif( this.offset == null ) throw new Error( '`offset` cfg required' );\r\n\t\tif( this.text == null ) throw new Error( '`text` cfg required' );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns a string name for the type of node that this class represents.\r\n\t *\r\n\t * @abstract\r\n\t * @return {String}\r\n\t */\r\n\tgetType : Autolinker.Util.abstractMethod,\r\n\r\n\r\n\t/**\r\n\t * Retrieves the {@link #offset} of the HtmlNode. This is the offset of the\r\n\t * HTML node in the original string that was parsed.\r\n\t *\r\n\t * @return {Number}\r\n\t */\r\n\tgetOffset : function() {\r\n\t\treturn this.offset;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Retrieves the {@link #text} for the HtmlNode.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetText : function() {\r\n\t\treturn this.text;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.htmlParser.CommentNode\r\n * @extends Autolinker.htmlParser.HtmlNode\r\n *\r\n * Represents an HTML comment node that has been parsed by the\r\n * {@link Autolinker.htmlParser.HtmlParser}.\r\n *\r\n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more\r\n * details.\r\n */\r\nAutolinker.htmlParser.CommentNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, {\r\n\r\n\t/**\r\n\t * @cfg {String} comment (required)\r\n\t *\r\n\t * The text inside the comment tag. This text is stripped of any leading or\r\n\t * trailing whitespace.\r\n\t */\r\n\tcomment : '',\r\n\r\n\r\n\t/**\r\n\t * Returns a string name for the type of node that this class represents.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetType : function() {\r\n\t\treturn 'comment';\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the comment inside the comment tag.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetComment : function() {\r\n\t\treturn this.comment;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.htmlParser.ElementNode\r\n * @extends Autolinker.htmlParser.HtmlNode\r\n *\r\n * Represents an HTML element node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}.\r\n *\r\n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more\r\n * details.\r\n */\r\nAutolinker.htmlParser.ElementNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, {\r\n\r\n\t/**\r\n\t * @cfg {String} tagName (required)\r\n\t *\r\n\t * The name of the tag that was matched.\r\n\t */\r\n\ttagName : '',\r\n\r\n\t/**\r\n\t * @cfg {Boolean} closing (required)\r\n\t *\r\n\t * `true` if the element (tag) is a closing tag, `false` if its an opening\r\n\t * tag.\r\n\t */\r\n\tclosing : false,\r\n\r\n\r\n\t/**\r\n\t * Returns a string name for the type of node that this class represents.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetType : function() {\r\n\t\treturn 'element';\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the HTML element's (tag's) name. Ex: for an <img> tag,\r\n\t * returns \"img\".\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetTagName : function() {\r\n\t\treturn this.tagName;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Determines if the HTML element (tag) is a closing tag. Ex: <div>\r\n\t * returns `false`, while </div> returns `true`.\r\n\t *\r\n\t * @return {Boolean}\r\n\t */\r\n\tisClosing : function() {\r\n\t\treturn this.closing;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.htmlParser.EntityNode\r\n * @extends Autolinker.htmlParser.HtmlNode\r\n *\r\n * Represents a known HTML entity node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}.\r\n * Ex: '&nbsp;', or '&#160;' (which will be retrievable from the {@link #getText}\r\n * method.\r\n *\r\n * Note that this class will only be returned from the HtmlParser for the set of\r\n * checked HTML entity nodes defined by the {@link Autolinker.htmlParser.HtmlParser#htmlCharacterEntitiesRegex}.\r\n *\r\n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more\r\n * details.\r\n */\r\nAutolinker.htmlParser.EntityNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, {\r\n\r\n\t/**\r\n\t * Returns a string name for the type of node that this class represents.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetType : function() {\r\n\t\treturn 'entity';\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.htmlParser.TextNode\r\n * @extends Autolinker.htmlParser.HtmlNode\r\n *\r\n * Represents a text node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}.\r\n *\r\n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more\r\n * details.\r\n */\r\nAutolinker.htmlParser.TextNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, {\r\n\r\n\t/**\r\n\t * Returns a string name for the type of node that this class represents.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetType : function() {\r\n\t\treturn 'text';\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @abstract\r\n * @class Autolinker.match.Match\r\n *\r\n * Represents a match found in an input string which should be Autolinked. A Match object is what is provided in a\r\n * {@link Autolinker#replaceFn replaceFn}, and may be used to query for details about the match.\r\n *\r\n * For example:\r\n *\r\n * var input = \"...\"; // string with URLs, Email Addresses, and Twitter Handles\r\n *\r\n * var linkedText = Autolinker.link( input, {\r\n * replaceFn : function( autolinker, match ) {\r\n * console.log( \"href = \", match.getAnchorHref() );\r\n * console.log( \"text = \", match.getAnchorText() );\r\n *\r\n * switch( match.getType() ) {\r\n * case 'url' :\r\n * console.log( \"url: \", match.getUrl() );\r\n *\r\n * case 'email' :\r\n * console.log( \"email: \", match.getEmail() );\r\n *\r\n * case 'twitter' :\r\n * console.log( \"twitter: \", match.getTwitterHandle() );\r\n * }\r\n * }\r\n * } );\r\n *\r\n * See the {@link Autolinker} class for more details on using the {@link Autolinker#replaceFn replaceFn}.\r\n */\r\nAutolinker.match.Match = Autolinker.Util.extend( Object, {\r\n\r\n\t/**\r\n\t * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required)\r\n\t *\r\n\t * Reference to the AnchorTagBuilder instance to use to generate an anchor\r\n\t * tag for the Match.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {String} matchedText (required)\r\n\t *\r\n\t * The original text that was matched by the {@link Autolinker.matcher.Matcher}.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Number} offset (required)\r\n\t *\r\n\t * The offset of where the match was made in the input string.\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Match\r\n\t * instance, specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tif( cfg.tagBuilder == null ) throw new Error( '`tagBuilder` cfg required' );\r\n\t\tif( cfg.matchedText == null ) throw new Error( '`matchedText` cfg required' );\r\n\t\tif( cfg.offset == null ) throw new Error( '`offset` cfg required' );\r\n\r\n\t\tthis.tagBuilder = cfg.tagBuilder;\r\n\t\tthis.matchedText = cfg.matchedText;\r\n\t\tthis.offset = cfg.offset;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns a string name for the type of match that this class represents.\r\n\t *\r\n\t * @abstract\r\n\t * @return {String}\r\n\t */\r\n\tgetType : Autolinker.Util.abstractMethod,\r\n\r\n\r\n\t/**\r\n\t * Returns the original text that was matched.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetMatchedText : function() {\r\n\t\treturn this.matchedText;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Sets the {@link #offset} of where the match was made in the input string.\r\n\t *\r\n\t * A {@link Autolinker.matcher.Matcher} will be fed only HTML text nodes,\r\n\t * and will therefore set an original offset that is relative to the HTML\r\n\t * text node itself. However, we want this offset to be relative to the full\r\n\t * HTML input string, and thus if using {@link Autolinker#parse} (rather\r\n\t * than calling a {@link Autolinker.matcher.Matcher} directly), then this\r\n\t * offset is corrected after the Matcher itself has done its job.\r\n\t *\r\n\t * @param {Number} offset\r\n\t */\r\n\tsetOffset : function( offset ) {\r\n\t\tthis.offset = offset;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the offset of where the match was made in the input string. This\r\n\t * is the 0-based index of the match.\r\n\t *\r\n\t * @return {Number}\r\n\t */\r\n\tgetOffset : function() {\r\n\t\treturn this.offset;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor href that should be generated for the match.\r\n\t *\r\n\t * @abstract\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorHref : Autolinker.Util.abstractMethod,\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor text that should be generated for the match.\r\n\t *\r\n\t * @abstract\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorText : Autolinker.Util.abstractMethod,\r\n\r\n\r\n\t/**\r\n\t * Builds and returns an {@link Autolinker.HtmlTag} instance based on the\r\n\t * Match.\r\n\t *\r\n\t * This can be used to easily generate anchor tags from matches, and either\r\n\t * return their HTML string, or modify them before doing so.\r\n\t *\r\n\t * Example Usage:\r\n\t *\r\n\t * var tag = match.buildTag();\r\n\t * tag.addClass( 'cordova-link' );\r\n\t * tag.setAttr( 'target', '_system' );\r\n\t *\r\n\t * tag.toAnchorString(); // Google\r\n\t */\r\n\tbuildTag : function() {\r\n\t\treturn this.tagBuilder.build( this );\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.match.Email\r\n * @extends Autolinker.match.Match\r\n *\r\n * Represents a Email match found in an input string which should be Autolinked.\r\n *\r\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\r\n */\r\nAutolinker.match.Email = Autolinker.Util.extend( Autolinker.match.Match, {\r\n\r\n\t/**\r\n\t * @cfg {String} email (required)\r\n\t *\r\n\t * The email address that was matched.\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Match\r\n\t * instance, specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tAutolinker.match.Match.prototype.constructor.call( this, cfg );\r\n\r\n\t\tif( !cfg.email ) throw new Error( '`email` cfg required' );\r\n\r\n\t\tthis.email = cfg.email;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns a string name for the type of match that this class represents.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetType : function() {\r\n\t\treturn 'email';\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the email address that was matched.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetEmail : function() {\r\n\t\treturn this.email;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor href that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorHref : function() {\r\n\t\treturn 'mailto:' + this.email;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor text that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorText : function() {\r\n\t\treturn this.email;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.match.Hashtag\r\n * @extends Autolinker.match.Match\r\n *\r\n * Represents a Hashtag match found in an input string which should be\r\n * Autolinked.\r\n *\r\n * See this class's superclass ({@link Autolinker.match.Match}) for more\r\n * details.\r\n */\r\nAutolinker.match.Hashtag = Autolinker.Util.extend( Autolinker.match.Match, {\r\n\r\n\t/**\r\n\t * @cfg {String} serviceName\r\n\t *\r\n\t * The service to point hashtag matches to. See {@link Autolinker#hashtag}\r\n\t * for available values.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {String} hashtag (required)\r\n\t *\r\n\t * The Hashtag that was matched, without the '#'.\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Match\r\n\t * instance, specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tAutolinker.match.Match.prototype.constructor.call( this, cfg );\r\n\r\n\t\t// TODO: if( !serviceName ) throw new Error( '`serviceName` cfg required' );\r\n\t\tif( !cfg.hashtag ) throw new Error( '`hashtag` cfg required' );\r\n\r\n\t\tthis.serviceName = cfg.serviceName;\r\n\t\tthis.hashtag = cfg.hashtag;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the type of match that this class represents.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetType : function() {\r\n\t\treturn 'hashtag';\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the configured {@link #serviceName} to point the Hashtag to.\r\n\t * Ex: 'facebook', 'twitter'.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetServiceName : function() {\r\n\t\treturn this.serviceName;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the matched hashtag, without the '#' character.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetHashtag : function() {\r\n\t\treturn this.hashtag;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor href that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorHref : function() {\r\n\t\tvar serviceName = this.serviceName,\r\n\t\t hashtag = this.hashtag;\r\n\r\n\t\tswitch( serviceName ) {\r\n\t\t\tcase 'twitter' :\r\n\t\t\t\treturn 'https://twitter.com/hashtag/' + hashtag;\r\n\t\t\tcase 'facebook' :\r\n\t\t\t\treturn 'https://www.facebook.com/hashtag/' + hashtag;\r\n\t\t\tcase 'instagram' :\r\n\t\t\t\treturn 'https://instagram.com/explore/tags/' + hashtag;\r\n\r\n\t\t\tdefault : // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case.\r\n\t\t\t\tthrow new Error( 'Unknown service name to point hashtag to: ', serviceName );\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor text that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorText : function() {\r\n\t\treturn '#' + this.hashtag;\r\n\t}\r\n\r\n} );\r\n\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.match.Phone\r\n * @extends Autolinker.match.Match\r\n *\r\n * Represents a Phone number match found in an input string which should be\r\n * Autolinked.\r\n *\r\n * See this class's superclass ({@link Autolinker.match.Match}) for more\r\n * details.\r\n */\r\nAutolinker.match.Phone = Autolinker.Util.extend( Autolinker.match.Match, {\r\n\r\n\t/**\r\n\t * @protected\r\n\t * @property {String} number (required)\r\n\t *\r\n\t * The phone number that was matched, without any delimiter characters.\r\n\t *\r\n\t * Note: This is a string to allow for prefixed 0's.\r\n\t */\r\n\r\n\t/**\r\n\t * @protected\r\n\t * @property {Boolean} plusSign (required)\r\n\t *\r\n\t * `true` if the matched phone number started with a '+' sign. We'll include\r\n\t * it in the `tel:` URL if so, as this is needed for international numbers.\r\n\t *\r\n\t * Ex: '+1 (123) 456 7879'\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Match\r\n\t * instance, specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tAutolinker.match.Match.prototype.constructor.call( this, cfg );\r\n\r\n\t\tif( !cfg.number ) throw new Error( '`number` cfg required' );\r\n\t\tif( cfg.plusSign == null ) throw new Error( '`plusSign` cfg required' );\r\n\r\n\t\tthis.number = cfg.number;\r\n\t\tthis.plusSign = cfg.plusSign;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns a string name for the type of match that this class represents.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetType : function() {\r\n\t\treturn 'phone';\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the phone number that was matched as a string, without any\r\n\t * delimiter characters.\r\n\t *\r\n\t * Note: This is a string to allow for prefixed 0's.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetNumber: function() {\r\n\t\treturn this.number;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor href that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorHref : function() {\r\n\t\treturn 'tel:' + ( this.plusSign ? '+' : '' ) + this.number;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor text that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorText : function() {\r\n\t\treturn this.matchedText;\r\n\t}\r\n\r\n} );\r\n\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.match.Twitter\r\n * @extends Autolinker.match.Match\r\n *\r\n * Represents a Twitter match found in an input string which should be Autolinked.\r\n *\r\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\r\n */\r\nAutolinker.match.Twitter = Autolinker.Util.extend( Autolinker.match.Match, {\r\n\r\n\t/**\r\n\t * @cfg {String} twitterHandle (required)\r\n\t *\r\n\t * The Twitter handle that was matched, without the '@' character.\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Match\r\n\t * instance, specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg) {\r\n\t\tAutolinker.match.Match.prototype.constructor.call( this, cfg );\r\n\r\n\t\tif( !cfg.twitterHandle ) throw new Error( '`twitterHandle` cfg required' );\r\n\r\n\t\tthis.twitterHandle = cfg.twitterHandle;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the type of match that this class represents.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetType : function() {\r\n\t\treturn 'twitter';\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the twitter handle, without the '@' character.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetTwitterHandle : function() {\r\n\t\treturn this.twitterHandle;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor href that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorHref : function() {\r\n\t\treturn 'https://twitter.com/' + this.twitterHandle;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor text that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorText : function() {\r\n\t\treturn '@' + this.twitterHandle;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.match.Url\r\n * @extends Autolinker.match.Match\r\n *\r\n * Represents a Url match found in an input string which should be Autolinked.\r\n *\r\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\r\n */\r\nAutolinker.match.Url = Autolinker.Util.extend( Autolinker.match.Match, {\r\n\r\n\t/**\r\n\t * @cfg {String} url (required)\r\n\t *\r\n\t * The url that was matched.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {\"scheme\"/\"www\"/\"tld\"} urlMatchType (required)\r\n\t *\r\n\t * The type of URL match that this class represents. This helps to determine\r\n\t * if the match was made in the original text with a prefixed scheme (ex:\r\n\t * 'http://www.google.com'), a prefixed 'www' (ex: 'www.google.com'), or\r\n\t * was matched by a known top-level domain (ex: 'google.com').\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Boolean} protocolUrlMatch (required)\r\n\t *\r\n\t * `true` if the URL is a match which already has a protocol (i.e.\r\n\t * 'http://'), `false` if the match was from a 'www' or known TLD match.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Boolean} protocolRelativeMatch (required)\r\n\t *\r\n\t * `true` if the URL is a protocol-relative match. A protocol-relative match\r\n\t * is a URL that starts with '//', and will be either http:// or https://\r\n\t * based on the protocol that the site is loaded under.\r\n\t */\r\n\r\n\t/**\r\n\t * @cfg {Boolean} stripPrefix (required)\r\n\t * @inheritdoc Autolinker#cfg-stripPrefix\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Match\r\n\t * instance, specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tAutolinker.match.Match.prototype.constructor.call( this, cfg );\r\n\r\n\t\tif( cfg.urlMatchType !== 'scheme' && cfg.urlMatchType !== 'www' && cfg.urlMatchType !== 'tld' ) throw new Error( '`urlMatchType` cfg must be one of: \"scheme\", \"www\", or \"tld\"' );\r\n\t\tif( !cfg.url ) throw new Error( '`url` cfg required' );\r\n\t\tif( cfg.protocolUrlMatch == null ) throw new Error( '`protocolUrlMatch` cfg required' );\r\n\t\tif( cfg.protocolRelativeMatch == null ) throw new Error( '`protocolRelativeMatch` cfg required' );\r\n\t\tif( cfg.stripPrefix == null ) throw new Error( '`stripPrefix` cfg required' );\r\n\r\n\t\tthis.urlMatchType = cfg.urlMatchType;\r\n\t\tthis.url = cfg.url;\r\n\t\tthis.protocolUrlMatch = cfg.protocolUrlMatch;\r\n\t\tthis.protocolRelativeMatch = cfg.protocolRelativeMatch;\r\n\t\tthis.stripPrefix = cfg.stripPrefix;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {RegExp} urlPrefixRegex\r\n\t *\r\n\t * A regular expression used to remove the 'http://' or 'https://' and/or the 'www.' from URLs.\r\n\t */\r\n\turlPrefixRegex: /^(https?:\\/\\/)?(www\\.)?/i,\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {RegExp} protocolRelativeRegex\r\n\t *\r\n\t * The regular expression used to remove the protocol-relative '//' from the {@link #url} string, for purposes\r\n\t * of {@link #getAnchorText}. A protocol-relative URL is, for example, \"//yahoo.com\"\r\n\t */\r\n\tprotocolRelativeRegex : /^\\/\\//,\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {Boolean} protocolPrepended\r\n\t *\r\n\t * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the\r\n\t * {@link #url} did not have a protocol)\r\n\t */\r\n\tprotocolPrepended : false,\r\n\r\n\r\n\t/**\r\n\t * Returns a string name for the type of match that this class represents.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetType : function() {\r\n\t\treturn 'url';\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns a string name for the type of URL match that this class\r\n\t * represents.\r\n\t *\r\n\t * This helps to determine if the match was made in the original text with a\r\n\t * prefixed scheme (ex: 'http://www.google.com'), a prefixed 'www' (ex:\r\n\t * 'www.google.com'), or was matched by a known top-level domain (ex:\r\n\t * 'google.com').\r\n\t *\r\n\t * @return {\"scheme\"/\"www\"/\"tld\"}\r\n\t */\r\n\tgetUrlMatchType : function() {\r\n\t\treturn this.urlMatchType;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the url that was matched, assuming the protocol to be 'http://' if the original\r\n\t * match was missing a protocol.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetUrl : function() {\r\n\t\tvar url = this.url;\r\n\r\n\t\t// if the url string doesn't begin with a protocol, assume 'http://'\r\n\t\tif( !this.protocolRelativeMatch && !this.protocolUrlMatch && !this.protocolPrepended ) {\r\n\t\t\turl = this.url = 'http://' + url;\r\n\r\n\t\t\tthis.protocolPrepended = true;\r\n\t\t}\r\n\r\n\t\treturn url;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor href that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorHref : function() {\r\n\t\tvar url = this.getUrl();\r\n\r\n\t\treturn url.replace( /&/g, '&' ); // any &'s in the URL should be converted back to '&' if they were displayed as & in the source html\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Returns the anchor text that should be generated for the match.\r\n\t *\r\n\t * @return {String}\r\n\t */\r\n\tgetAnchorText : function() {\r\n\t\tvar anchorText = this.getMatchedText();\r\n\r\n\t\tif( this.protocolRelativeMatch ) {\r\n\t\t\t// Strip off any protocol-relative '//' from the anchor text\r\n\t\t\tanchorText = this.stripProtocolRelativePrefix( anchorText );\r\n\t\t}\r\n\t\tif( this.stripPrefix ) {\r\n\t\t\tanchorText = this.stripUrlPrefix( anchorText );\r\n\t\t}\r\n\t\tanchorText = this.removeTrailingSlash( anchorText ); // remove trailing slash, if there is one\r\n\r\n\t\treturn anchorText;\r\n\t},\r\n\r\n\r\n\t// ---------------------------------------\r\n\r\n\t// Utility Functionality\r\n\r\n\t/**\r\n\t * Strips the URL prefix (such as \"http://\" or \"https://\") from the given text.\r\n\t *\r\n\t * @private\r\n\t * @param {String} text The text of the anchor that is being generated, for which to strip off the\r\n\t * url prefix (such as stripping off \"http://\")\r\n\t * @return {String} The `anchorText`, with the prefix stripped.\r\n\t */\r\n\tstripUrlPrefix : function( text ) {\r\n\t\treturn text.replace( this.urlPrefixRegex, '' );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Strips any protocol-relative '//' from the anchor text.\r\n\t *\r\n\t * @private\r\n\t * @param {String} text The text of the anchor that is being generated, for which to strip off the\r\n\t * protocol-relative prefix (such as stripping off \"//\")\r\n\t * @return {String} The `anchorText`, with the protocol-relative prefix stripped.\r\n\t */\r\n\tstripProtocolRelativePrefix : function( text ) {\r\n\t\treturn text.replace( this.protocolRelativeRegex, '' );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Removes any trailing slash from the given `anchorText`, in preparation for the text to be displayed.\r\n\t *\r\n\t * @private\r\n\t * @param {String} anchorText The text of the anchor that is being generated, for which to remove any trailing\r\n\t * slash ('/') that may exist.\r\n\t * @return {String} The `anchorText`, with the trailing slash removed.\r\n\t */\r\n\tremoveTrailingSlash : function( anchorText ) {\r\n\t\tif( anchorText.charAt( anchorText.length - 1 ) === '/' ) {\r\n\t\t\tanchorText = anchorText.slice( 0, -1 );\r\n\t\t}\r\n\t\treturn anchorText;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @abstract\r\n * @class Autolinker.matcher.Matcher\r\n *\r\n * An abstract class and interface for individual matchers to find matches in\r\n * an input string with linkified versions of them.\r\n *\r\n * Note that Matchers do not take HTML into account - they must be fed the text\r\n * nodes of any HTML string, which is handled by {@link Autolinker#parse}.\r\n */\r\nAutolinker.matcher.Matcher = Autolinker.Util.extend( Object, {\r\n\r\n\t/**\r\n\t * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required)\r\n\t *\r\n\t * Reference to the AnchorTagBuilder instance to use to generate HTML tags\r\n\t * for {@link Autolinker.match.Match Matches}.\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Matcher\r\n\t * instance, specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tif( !cfg.tagBuilder ) throw new Error( '`tagBuilder` cfg required' );\r\n\r\n\t\tthis.tagBuilder = cfg.tagBuilder;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Parses the input `text` and returns the array of {@link Autolinker.match.Match Matches}\r\n\t * for the matcher.\r\n\t *\r\n\t * @abstract\r\n\t * @param {String} text The text to scan and replace matches in.\r\n\t * @return {Autolinker.match.Match[]}\r\n\t */\r\n\tparseMatches : Autolinker.Util.abstractMethod\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.matcher.Email\r\n * @extends Autolinker.matcher.Matcher\r\n *\r\n * Matcher to find email matches in an input string.\r\n *\r\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details.\r\n */\r\nAutolinker.matcher.Email = Autolinker.Util.extend( Autolinker.matcher.Matcher, {\r\n\r\n\t/**\r\n\t * The regular expression to match email addresses. Example match:\r\n\t *\r\n\t * person@place.com\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} matcherRegex\r\n\t */\r\n\tmatcherRegex : (function() {\r\n\t\tvar alphaNumericChars = Autolinker.RegexLib.alphaNumericCharsStr,\r\n\t\t emailRegex = new RegExp( '[' + alphaNumericChars + '\\\\-_\\';:&=+$.,]+@' ), // something@ for email addresses (a.k.a. local-part)\r\n\t\t\tdomainNameRegex = Autolinker.RegexLib.domainNameRegex,\r\n\t\t\ttldRegex = Autolinker.RegexLib.tldRegex; // match our known top level domains (TLDs)\r\n\r\n\t\treturn new RegExp( [\r\n\t\t\temailRegex.source,\r\n\t\t\tdomainNameRegex.source,\r\n\t\t\t'\\\\.', tldRegex.source // '.com', '.net', etc\r\n\t\t].join( \"\" ), 'gi' );\r\n\t} )(),\r\n\r\n\r\n\t/**\r\n\t * @inheritdoc\r\n\t */\r\n\tparseMatches : function( text ) {\r\n\t\tvar matcherRegex = this.matcherRegex,\r\n\t\t tagBuilder = this.tagBuilder,\r\n\t\t matches = [],\r\n\t\t match;\r\n\r\n\t\twhile( ( match = matcherRegex.exec( text ) ) !== null ) {\r\n\t\t\tvar matchedText = match[ 0 ];\r\n\r\n\t\t\tmatches.push( new Autolinker.match.Email( {\r\n\t\t\t\ttagBuilder : tagBuilder,\r\n\t\t\t\tmatchedText : matchedText,\r\n\t\t\t\toffset : match.index,\r\n\t\t\t\temail : matchedText\r\n\t\t\t} ) );\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.matcher.Hashtag\r\n * @extends Autolinker.matcher.Matcher\r\n *\r\n * Matcher to find Hashtag matches in an input string.\r\n */\r\nAutolinker.matcher.Hashtag = Autolinker.Util.extend( Autolinker.matcher.Matcher, {\r\n\r\n\t/**\r\n\t * @cfg {String} serviceName\r\n\t *\r\n\t * The service to point hashtag matches to. See {@link Autolinker#hashtag}\r\n\t * for available values.\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * The regular expression to match Hashtags. Example match:\r\n\t *\r\n\t * #asdf\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} matcherRegex\r\n\t */\r\n\tmatcherRegex : new RegExp( '#[_' + Autolinker.RegexLib.alphaNumericCharsStr + ']{1,139}', 'g' ),\r\n\r\n\t/**\r\n\t * The regular expression to use to check the character before a username match to\r\n\t * make sure we didn't accidentally match an email address.\r\n\t *\r\n\t * For example, the string \"asdf@asdf.com\" should not match \"@asdf\" as a username.\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} nonWordCharRegex\r\n\t */\r\n\tnonWordCharRegex : new RegExp( '[^' + Autolinker.RegexLib.alphaNumericCharsStr + ']' ),\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Match instance,\r\n\t * specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tAutolinker.matcher.Matcher.prototype.constructor.call( this, cfg );\r\n\r\n\t\tthis.serviceName = cfg.serviceName;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * @inheritdoc\r\n\t */\r\n\tparseMatches : function( text ) {\r\n\t\tvar matcherRegex = this.matcherRegex,\r\n\t\t nonWordCharRegex = this.nonWordCharRegex,\r\n\t\t serviceName = this.serviceName,\r\n\t\t tagBuilder = this.tagBuilder,\r\n\t\t matches = [],\r\n\t\t match;\r\n\r\n\t\twhile( ( match = matcherRegex.exec( text ) ) !== null ) {\r\n\t\t\tvar offset = match.index,\r\n\t\t\t prevChar = text.charAt( offset - 1 );\r\n\r\n\t\t\t// If we found the match at the beginning of the string, or we found the match\r\n\t\t\t// and there is a whitespace char in front of it (meaning it is not a '#' char\r\n\t\t\t// in the middle of a word), then it is a hashtag match.\r\n\t\t\tif( offset === 0 || nonWordCharRegex.test( prevChar ) ) {\r\n\t\t\t\tvar matchedText = match[ 0 ],\r\n\t\t\t\t hashtag = match[ 0 ].slice( 1 ); // strip off the '#' character at the beginning\r\n\r\n\t\t\t\tmatches.push( new Autolinker.match.Hashtag( {\r\n\t\t\t\t\ttagBuilder : tagBuilder,\r\n\t\t\t\t\tmatchedText : matchedText,\r\n\t\t\t\t\toffset : offset,\r\n\t\t\t\t\tserviceName : serviceName,\r\n\t\t\t\t\thashtag : hashtag\r\n\t\t\t\t} ) );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.matcher.Phone\r\n * @extends Autolinker.matcher.Matcher\r\n *\r\n * Matcher to find Phone number matches in an input string.\r\n *\r\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more\r\n * details.\r\n */\r\nAutolinker.matcher.Phone = Autolinker.Util.extend( Autolinker.matcher.Matcher, {\r\n\r\n\t/**\r\n\t * The regular expression to match Phone numbers. Example match:\r\n\t *\r\n\t * (123) 456-7890\r\n\t *\r\n\t * This regular expression has the following capturing groups:\r\n\t *\r\n\t * 1. The prefixed '+' sign, if there is one.\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} matcherRegex\r\n\t */\r\n\tmatcherRegex : /(?:(\\+)?\\d{1,3}[-\\040.])?\\(?\\d{3}\\)?[-\\040.]?\\d{3}[-\\040.]\\d{4}/g, // ex: (123) 456-7890, 123 456 7890, 123-456-7890, etc.\r\n\r\n\t/**\r\n\t * @inheritdoc\r\n\t */\r\n\tparseMatches : function( text ) {\r\n\t\tvar matcherRegex = this.matcherRegex,\r\n\t\t tagBuilder = this.tagBuilder,\r\n\t\t matches = [],\r\n\t\t match;\r\n\r\n\t\twhile( ( match = matcherRegex.exec( text ) ) !== null ) {\r\n\t\t\t// Remove non-numeric values from phone number string\r\n\t\t\tvar matchedText = match[ 0 ],\r\n\t\t\t cleanNumber = matchedText.replace( /\\D/g, '' ), // strip out non-digit characters\r\n\t\t\t plusSign = !!match[ 1 ]; // match[ 1 ] is the prefixed plus sign, if there is one\r\n\r\n\t\t\tmatches.push( new Autolinker.match.Phone( {\r\n\t\t\t\ttagBuilder : tagBuilder,\r\n\t\t\t\tmatchedText : matchedText,\r\n\t\t\t\toffset : match.index,\r\n\t\t\t\tnumber : cleanNumber,\r\n\t\t\t\tplusSign : plusSign\r\n\t\t\t} ) );\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.matcher.Twitter\r\n * @extends Autolinker.matcher.Matcher\r\n *\r\n * Matcher to find/replace username matches in an input string.\r\n */\r\nAutolinker.matcher.Twitter = Autolinker.Util.extend( Autolinker.matcher.Matcher, {\r\n\r\n\t/**\r\n\t * The regular expression to match username handles. Example match:\r\n\t *\r\n\t * @asdf\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} matcherRegex\r\n\t */\r\n\tmatcherRegex : new RegExp( '@[_' + Autolinker.RegexLib.alphaNumericCharsStr + ']{1,20}', 'g' ),\r\n\r\n\t/**\r\n\t * The regular expression to use to check the character before a username match to\r\n\t * make sure we didn't accidentally match an email address.\r\n\t *\r\n\t * For example, the string \"asdf@asdf.com\" should not match \"@asdf\" as a username.\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} nonWordCharRegex\r\n\t */\r\n\tnonWordCharRegex : new RegExp( '[^' + Autolinker.RegexLib.alphaNumericCharsStr + ']' ),\r\n\r\n\r\n\t/**\r\n\t * @inheritdoc\r\n\t */\r\n\tparseMatches : function( text ) {\r\n\t\tvar matcherRegex = this.matcherRegex,\r\n\t\t nonWordCharRegex = this.nonWordCharRegex,\r\n\t\t tagBuilder = this.tagBuilder,\r\n\t\t matches = [],\r\n\t\t match;\r\n\r\n\t\twhile( ( match = matcherRegex.exec( text ) ) !== null ) {\r\n\t\t\tvar offset = match.index,\r\n\t\t\t prevChar = text.charAt( offset - 1 );\r\n\r\n\t\t\t// If we found the match at the beginning of the string, or we found the match\r\n\t\t\t// and there is a whitespace char in front of it (meaning it is not an email\r\n\t\t\t// address), then it is a username match.\r\n\t\t\tif( offset === 0 || nonWordCharRegex.test( prevChar ) ) {\r\n\t\t\t\tvar matchedText = match[ 0 ],\r\n\t\t\t\t twitterHandle = match[ 0 ].slice( 1 ); // strip off the '@' character at the beginning\r\n\r\n\t\t\t\tmatches.push( new Autolinker.match.Twitter( {\r\n\t\t\t\t\ttagBuilder : tagBuilder,\r\n\t\t\t\t\tmatchedText : matchedText,\r\n\t\t\t\t\toffset : offset,\r\n\t\t\t\t\ttwitterHandle : twitterHandle\r\n\t\t\t\t} ) );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/**\r\n * @class Autolinker.matcher.Url\r\n * @extends Autolinker.matcher.Matcher\r\n *\r\n * Matcher to find URL matches in an input string.\r\n *\r\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details.\r\n */\r\nAutolinker.matcher.Url = Autolinker.Util.extend( Autolinker.matcher.Matcher, {\r\n\r\n\t/**\r\n\t * @cfg {Boolean} stripPrefix (required)\r\n\t * @inheritdoc Autolinker#stripPrefix\r\n\t */\r\n\r\n\r\n\t/**\r\n\t * @private\r\n\t * @property {RegExp} matcherRegex\r\n\t *\r\n\t * The regular expression to match URLs with an optional scheme, port\r\n\t * number, path, query string, and hash anchor.\r\n\t *\r\n\t * Example matches:\r\n\t *\r\n\t * http://google.com\r\n\t * www.google.com\r\n\t * google.com/path/to/file?q1=1&q2=2#myAnchor\r\n\t *\r\n\t *\r\n\t * This regular expression will have the following capturing groups:\r\n\t *\r\n\t * 1. Group that matches a scheme-prefixed URL (i.e. 'http://google.com').\r\n\t * This is used to match scheme URLs with just a single word, such as\r\n\t * 'http://localhost', where we won't double check that the domain name\r\n\t * has at least one dot ('.') in it.\r\n\t * 2. Group that matches a 'www.' prefixed URL. This is only matched if the\r\n\t * 'www.' text was not prefixed by a scheme (i.e.: not prefixed by\r\n\t * 'http://', 'ftp:', etc.)\r\n\t * 3. A protocol-relative ('//') match for the case of a 'www.' prefixed\r\n\t * URL. Will be an empty string if it is not a protocol-relative match.\r\n\t * We need to know the character before the '//' in order to determine\r\n\t * if it is a valid match or the // was in a string we don't want to\r\n\t * auto-link.\r\n\t * 4. Group that matches a known TLD (top level domain), when a scheme\r\n\t * or 'www.'-prefixed domain is not matched.\r\n\t * 5. A protocol-relative ('//') match for the case of a known TLD prefixed\r\n\t * URL. Will be an empty string if it is not a protocol-relative match.\r\n\t * See #3 for more info.\r\n\t */\r\n\tmatcherRegex : (function() {\r\n\t\tvar schemeRegex = /(?:[A-Za-z][-.+A-Za-z0-9]*:(?![A-Za-z][-.+A-Za-z0-9]*:\\/\\/)(?!\\d+\\/?)(?:\\/\\/)?)/, // match protocol, allow in format \"http://\" or \"mailto:\". However, do not match the first part of something like 'link:http://www.google.com' (i.e. don't match \"link:\"). Also, make sure we don't interpret 'google.com:8000' as if 'google.com' was a protocol here (i.e. ignore a trailing port number in this regex)\r\n\t\t wwwRegex = /(?:www\\.)/, // starting with 'www.'\r\n\t\t domainNameRegex = Autolinker.RegexLib.domainNameRegex,\r\n\t\t tldRegex = Autolinker.RegexLib.tldRegex, // match our known top level domains (TLDs)\r\n\t\t alphaNumericCharsStr = Autolinker.RegexLib.alphaNumericCharsStr,\r\n\r\n\t\t // Allow optional path, query string, and hash anchor, not ending in the following characters: \"?!:,.;\"\r\n\t\t // http://blog.codinghorror.com/the-problem-with-urls/\r\n\t\t urlSuffixRegex = new RegExp( '[' + alphaNumericCharsStr + '\\\\-+&@#/%=~_()|\\'$*\\\\[\\\\]?!:,.;]*[' + alphaNumericCharsStr + '\\\\-+&@#/%=~_()|\\'$*\\\\[\\\\]]' );\r\n\r\n\t\treturn new RegExp( [\r\n\t\t\t'(?:', // parens to cover match for scheme (optional), and domain\r\n\t\t\t\t'(', // *** Capturing group $1, for a scheme-prefixed url (ex: http://google.com)\r\n\t\t\t\t\tschemeRegex.source,\r\n\t\t\t\t\tdomainNameRegex.source,\r\n\t\t\t\t')',\r\n\r\n\t\t\t\t'|',\r\n\r\n\t\t\t\t'(', // *** Capturing group $2, for a 'www.' prefixed url (ex: www.google.com)\r\n\t\t\t\t\t'(//)?', // *** Capturing group $3 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character (handled later)\r\n\t\t\t\t\twwwRegex.source,\r\n\t\t\t\t\tdomainNameRegex.source,\r\n\t\t\t\t')',\r\n\r\n\t\t\t\t'|',\r\n\r\n\t\t\t\t'(', // *** Capturing group $4, for known a TLD url (ex: google.com)\r\n\t\t\t\t\t'(//)?', // *** Capturing group $5 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character (handled later)\r\n\t\t\t\t\tdomainNameRegex.source + '\\\\.',\r\n\t\t\t\t\ttldRegex.source,\r\n\t\t\t\t')',\r\n\t\t\t')',\r\n\r\n\t\t\t'(?:' + urlSuffixRegex.source + ')?' // match for path, query string, and/or hash anchor - optional\r\n\t\t].join( \"\" ), 'gi' );\r\n\t} )(),\r\n\r\n\r\n\t/**\r\n\t * A regular expression to use to check the character before a protocol-relative\r\n\t * URL match. We don't want to match a protocol-relative URL if it is part\r\n\t * of another word.\r\n\t *\r\n\t * For example, we want to match something like \"Go to: //google.com\",\r\n\t * but we don't want to match something like \"abc//google.com\"\r\n\t *\r\n\t * This regular expression is used to test the character before the '//'.\r\n\t *\r\n\t * @private\r\n\t * @type {RegExp} wordCharRegExp\r\n\t */\r\n\twordCharRegExp : /\\w/,\r\n\r\n\r\n\t/**\r\n\t * The regular expression to match opening parenthesis in a URL match.\r\n\t *\r\n\t * This is to determine if we have unbalanced parenthesis in the URL, and to\r\n\t * drop the final parenthesis that was matched if so.\r\n\t *\r\n\t * Ex: The text \"(check out: wikipedia.com/something_(disambiguation))\"\r\n\t * should only autolink the inner \"wikipedia.com/something_(disambiguation)\"\r\n\t * part, so if we find that we have unbalanced parenthesis, we will drop the\r\n\t * last one for the match.\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp}\r\n\t */\r\n\topenParensRe : /\\(/g,\r\n\r\n\t/**\r\n\t * The regular expression to match closing parenthesis in a URL match. See\r\n\t * {@link #openParensRe} for more information.\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp}\r\n\t */\r\n\tcloseParensRe : /\\)/g,\r\n\r\n\r\n\t/**\r\n\t * @constructor\r\n\t * @param {Object} cfg The configuration properties for the Match instance,\r\n\t * specified in an Object (map).\r\n\t */\r\n\tconstructor : function( cfg ) {\r\n\t\tAutolinker.matcher.Matcher.prototype.constructor.call( this, cfg );\r\n\r\n\t\tthis.stripPrefix = cfg.stripPrefix;\r\n\r\n\t\tif( this.stripPrefix == null ) throw new Error( '`stripPrefix` cfg required' );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * @inheritdoc\r\n\t */\r\n\tparseMatches : function( text ) {\r\n\t\tvar matcherRegex = this.matcherRegex,\r\n\t\t stripPrefix = this.stripPrefix,\r\n\t\t tagBuilder = this.tagBuilder,\r\n\t\t matches = [],\r\n\t\t match;\r\n\r\n\t\twhile( ( match = matcherRegex.exec( text ) ) !== null ) {\r\n\t\t\tvar matchStr = match[ 0 ],\r\n\t\t\t schemeUrlMatch = match[ 1 ],\r\n\t\t\t wwwUrlMatch = match[ 2 ],\r\n\t\t\t wwwProtocolRelativeMatch = match[ 3 ],\r\n\t\t\t //tldUrlMatch = match[ 4 ], -- not needed at the moment\r\n\t\t\t tldProtocolRelativeMatch = match[ 5 ],\r\n\t\t\t offset = match.index,\r\n\t\t\t protocolRelativeMatch = wwwProtocolRelativeMatch || tldProtocolRelativeMatch,\r\n\t\t\t\tprevChar = text.charAt( offset - 1 );\r\n\r\n\t\t\tif( !Autolinker.matcher.UrlMatchValidator.isValid( matchStr, schemeUrlMatch ) ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If the match is preceded by an '@' character, then it is either\r\n\t\t\t// an email address or a username. Skip these types of matches.\r\n\t\t\tif( offset > 0 && prevChar === '@' ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If it's a protocol-relative '//' match, but the character before the '//'\r\n\t\t\t// was a word character (i.e. a letter/number), then we found the '//' in the\r\n\t\t\t// middle of another word (such as \"asdf//asdf.com\"). In this case, skip the\r\n\t\t\t// match.\r\n\t\t\tif( offset > 0 && protocolRelativeMatch && this.wordCharRegExp.test( prevChar ) ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Handle a closing parenthesis at the end of the match, and exclude\r\n\t\t\t// it if there is not a matching open parenthesis in the match\r\n\t\t\t// itself.\r\n\t\t\tif( this.matchHasUnbalancedClosingParen( matchStr ) ) {\r\n\t\t\t\tmatchStr = matchStr.substr( 0, matchStr.length - 1 ); // remove the trailing \")\"\r\n\t\t\t} else {\r\n\t\t\t\t// Handle an invalid character after the TLD\r\n\t\t\t\tvar pos = this.matchHasInvalidCharAfterTld( matchStr, schemeUrlMatch );\r\n\t\t\t\tif( pos > -1 ) {\r\n\t\t\t\t\tmatchStr = matchStr.substr( 0, pos ); // remove the trailing invalid chars\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar urlMatchType = schemeUrlMatch ? 'scheme' : ( wwwUrlMatch ? 'www' : 'tld' ),\r\n\t\t\t protocolUrlMatch = !!schemeUrlMatch;\r\n\r\n\t\t\tmatches.push( new Autolinker.match.Url( {\r\n\t\t\t\ttagBuilder : tagBuilder,\r\n\t\t\t\tmatchedText : matchStr,\r\n\t\t\t\toffset : offset,\r\n\t\t\t\turlMatchType : urlMatchType,\r\n\t\t\t\turl : matchStr,\r\n\t\t\t\tprotocolUrlMatch : protocolUrlMatch,\r\n\t\t\t\tprotocolRelativeMatch : !!protocolRelativeMatch,\r\n\t\t\t\tstripPrefix : stripPrefix\r\n\t\t\t} ) );\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Determines if a match found has an unmatched closing parenthesis. If so,\r\n\t * this parenthesis will be removed from the match itself, and appended\r\n\t * after the generated anchor tag.\r\n\t *\r\n\t * A match may have an extra closing parenthesis at the end of the match\r\n\t * because the regular expression must include parenthesis for URLs such as\r\n\t * \"wikipedia.com/something_(disambiguation)\", which should be auto-linked.\r\n\t *\r\n\t * However, an extra parenthesis *will* be included when the URL itself is\r\n\t * wrapped in parenthesis, such as in the case of \"(wikipedia.com/something_(disambiguation))\".\r\n\t * In this case, the last closing parenthesis should *not* be part of the\r\n\t * URL itself, and this method will return `true`.\r\n\t *\r\n\t * @private\r\n\t * @param {String} matchStr The full match string from the {@link #matcherRegex}.\r\n\t * @return {Boolean} `true` if there is an unbalanced closing parenthesis at\r\n\t * the end of the `matchStr`, `false` otherwise.\r\n\t */\r\n\tmatchHasUnbalancedClosingParen : function( matchStr ) {\r\n\t\tvar lastChar = matchStr.charAt( matchStr.length - 1 );\r\n\r\n\t\tif( lastChar === ')' ) {\r\n\t\t\tvar openParensMatch = matchStr.match( this.openParensRe ),\r\n\t\t\t closeParensMatch = matchStr.match( this.closeParensRe ),\r\n\t\t\t numOpenParens = ( openParensMatch && openParensMatch.length ) || 0,\r\n\t\t\t numCloseParens = ( closeParensMatch && closeParensMatch.length ) || 0;\r\n\r\n\t\t\tif( numOpenParens < numCloseParens ) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Determine if there's an invalid character after the TLD in a URL. Valid\r\n\t * characters after TLD are ':/?#'. Exclude scheme matched URLs from this\r\n\t * check.\r\n\t *\r\n\t * @private\r\n\t * @param {String} urlMatch The matched URL, if there was one. Will be an\r\n\t * empty string if the match is not a URL match.\r\n\t * @param {String} schemeUrlMatch The match URL string for a scheme\r\n\t * match. Ex: 'http://yahoo.com'. This is used to match something like\r\n\t * 'http://localhost', where we won't double check that the domain name\r\n\t * has at least one '.' in it.\r\n\t * @return {Number} the position where the invalid character was found. If\r\n\t * no such character was found, returns -1\r\n\t */\r\n\tmatchHasInvalidCharAfterTld : function( urlMatch, schemeUrlMatch ) {\r\n\t\tif( !urlMatch ) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\tvar offset = 0;\r\n\t\tif ( schemeUrlMatch ) {\r\n\t\t\toffset = urlMatch.indexOf(':');\r\n\t\t\turlMatch = urlMatch.slice(offset);\r\n\t\t}\r\n\r\n\t\tvar re = /^((.?\\/\\/)?[A-Za-z0-9\\u00C0-\\u017F\\.\\-]*[A-Za-z0-9\\u00C0-\\u017F\\-]\\.[A-Za-z]+)/;\r\n\t\tvar res = re.exec( urlMatch );\r\n\t\tif ( res === null ) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\toffset += res[1].length;\r\n\t\turlMatch = urlMatch.slice(res[1].length);\r\n\t\tif (/^[^.A-Za-z:\\/?#]/.test(urlMatch)) {\r\n\t\t\treturn offset;\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\r\n} );\r\n/*global Autolinker */\r\n/*jshint scripturl:true */\r\n/**\r\n * @private\r\n * @class Autolinker.matcher.UrlMatchValidator\r\n * @singleton\r\n *\r\n * Used by Autolinker to filter out false URL positives from the\r\n * {@link Autolinker.matcher.Url UrlMatcher}.\r\n *\r\n * Due to the limitations of regular expressions (including the missing feature\r\n * of look-behinds in JS regular expressions), we cannot always determine the\r\n * validity of a given match. This class applies a bit of additional logic to\r\n * filter out any false positives that have been matched by the\r\n * {@link Autolinker.matcher.Url UrlMatcher}.\r\n */\r\nAutolinker.matcher.UrlMatchValidator = {\r\n\r\n\t/**\r\n\t * Regex to test for a full protocol, with the two trailing slashes. Ex: 'http://'\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} hasFullProtocolRegex\r\n\t */\r\n\thasFullProtocolRegex : /^[A-Za-z][-.+A-Za-z0-9]*:\\/\\//,\r\n\r\n\t/**\r\n\t * Regex to find the URI scheme, such as 'mailto:'.\r\n\t *\r\n\t * This is used to filter out 'javascript:' and 'vbscript:' schemes.\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} uriSchemeRegex\r\n\t */\r\n\turiSchemeRegex : /^[A-Za-z][-.+A-Za-z0-9]*:/,\r\n\r\n\t/**\r\n\t * Regex to determine if at least one word char exists after the protocol (i.e. after the ':')\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} hasWordCharAfterProtocolRegex\r\n\t */\r\n\thasWordCharAfterProtocolRegex : /:[^\\s]*?[A-Za-z\\u00C0-\\u017F]/,\r\n\r\n\t/**\r\n\t * Regex to determine if the string is a valid IP address\r\n\t *\r\n\t * @private\r\n\t * @property {RegExp} ipRegex\r\n\t */\r\n\tipRegex: /[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?(:[0-9]*)?\\/?$/,\r\n\r\n\t/**\r\n\t * Determines if a given URL match found by the {@link Autolinker.matcher.Url UrlMatcher}\r\n\t * is valid. Will return `false` for:\r\n\t *\r\n\t * 1) URL matches which do not have at least have one period ('.') in the\r\n\t * domain name (effectively skipping over matches like \"abc:def\").\r\n\t * However, URL matches with a protocol will be allowed (ex: 'http://localhost')\r\n\t * 2) URL matches which do not have at least one word character in the\r\n\t * domain name (effectively skipping over matches like \"git:1.0\").\r\n\t * 3) A protocol-relative url match (a URL beginning with '//') whose\r\n\t * previous character is a word character (effectively skipping over\r\n\t * strings like \"abc//google.com\")\r\n\t *\r\n\t * Otherwise, returns `true`.\r\n\t *\r\n\t * @param {String} urlMatch The matched URL, if there was one. Will be an\r\n\t * empty string if the match is not a URL match.\r\n\t * @param {String} protocolUrlMatch The match URL string for a protocol\r\n\t * match. Ex: 'http://yahoo.com'. This is used to match something like\r\n\t * 'http://localhost', where we won't double check that the domain name\r\n\t * has at least one '.' in it.\r\n\t * @return {Boolean} `true` if the match given is valid and should be\r\n\t * processed, or `false` if the match is invalid and/or should just not be\r\n\t * processed.\r\n\t */\r\n\tisValid : function( urlMatch, protocolUrlMatch ) {\r\n\t\tif(\r\n\t\t\t( protocolUrlMatch && !this.isValidUriScheme( protocolUrlMatch ) ) ||\r\n\t\t\tthis.urlMatchDoesNotHaveProtocolOrDot( urlMatch, protocolUrlMatch ) || // At least one period ('.') must exist in the URL match for us to consider it an actual URL, *unless* it was a full protocol match (like 'http://localhost')\r\n\t\t\t(this.urlMatchDoesNotHaveAtLeastOneWordChar( urlMatch, protocolUrlMatch ) && // At least one letter character must exist in the domain name after a protocol match. Ex: skip over something like \"git:1.0\"\r\n\t\t\t !this.isValidIpAddress( urlMatch ) // Except if it's an IP address\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\r\n\tisValidIpAddress : function ( uriSchemeMatch ) {\r\n\t\tvar newRegex = new RegExp(this.hasFullProtocolRegex.source + this.ipRegex.source);\r\n\t\tvar uriScheme = uriSchemeMatch.match( newRegex );\r\n\r\n\t\treturn uriScheme !== null;\r\n\t},\r\n\r\n\t/**\r\n\t * Determines if the URI scheme is a valid scheme to be autolinked. Returns\r\n\t * `false` if the scheme is 'javascript:' or 'vbscript:'\r\n\t *\r\n\t * @private\r\n\t * @param {String} uriSchemeMatch The match URL string for a full URI scheme\r\n\t * match. Ex: 'http://yahoo.com' or 'mailto:a@a.com'.\r\n\t * @return {Boolean} `true` if the scheme is a valid one, `false` otherwise.\r\n\t */\r\n\tisValidUriScheme : function( uriSchemeMatch ) {\r\n\t\tvar uriScheme = uriSchemeMatch.match( this.uriSchemeRegex )[ 0 ].toLowerCase();\r\n\r\n\t\treturn ( uriScheme !== 'javascript:' && uriScheme !== 'vbscript:' );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Determines if a URL match does not have either:\r\n\t *\r\n\t * a) a full protocol (i.e. 'http://'), or\r\n\t * b) at least one dot ('.') in the domain name (for a non-full-protocol\r\n\t * match).\r\n\t *\r\n\t * Either situation is considered an invalid URL (ex: 'git:d' does not have\r\n\t * either the '://' part, or at least one dot in the domain name. If the\r\n\t * match was 'git:abc.com', we would consider this valid.)\r\n\t *\r\n\t * @private\r\n\t * @param {String} urlMatch The matched URL, if there was one. Will be an\r\n\t * empty string if the match is not a URL match.\r\n\t * @param {String} protocolUrlMatch The match URL string for a protocol\r\n\t * match. Ex: 'http://yahoo.com'. This is used to match something like\r\n\t * 'http://localhost', where we won't double check that the domain name\r\n\t * has at least one '.' in it.\r\n\t * @return {Boolean} `true` if the URL match does not have a full protocol,\r\n\t * or at least one dot ('.') in a non-full-protocol match.\r\n\t */\r\n\turlMatchDoesNotHaveProtocolOrDot : function( urlMatch, protocolUrlMatch ) {\r\n\t\treturn ( !!urlMatch && ( !protocolUrlMatch || !this.hasFullProtocolRegex.test( protocolUrlMatch ) ) && urlMatch.indexOf( '.' ) === -1 );\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Determines if a URL match does not have at least one word character after\r\n\t * the protocol (i.e. in the domain name).\r\n\t *\r\n\t * At least one letter character must exist in the domain name after a\r\n\t * protocol match. Ex: skip over something like \"git:1.0\"\r\n\t *\r\n\t * @private\r\n\t * @param {String} urlMatch The matched URL, if there was one. Will be an\r\n\t * empty string if the match is not a URL match.\r\n\t * @param {String} protocolUrlMatch The match URL string for a protocol\r\n\t * match. Ex: 'http://yahoo.com'. This is used to know whether or not we\r\n\t * have a protocol in the URL string, in order to check for a word\r\n\t * character after the protocol separator (':').\r\n\t * @return {Boolean} `true` if the URL match does not have at least one word\r\n\t * character in it after the protocol, `false` otherwise.\r\n\t */\r\n\turlMatchDoesNotHaveAtLeastOneWordChar : function( urlMatch, protocolUrlMatch ) {\r\n\t\tif( urlMatch && protocolUrlMatch ) {\r\n\t\t\treturn !this.hasWordCharAfterProtocolRegex.test( urlMatch );\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n};\r\n/*global Autolinker */\r\n/**\r\n * A truncation feature where the ellipsis will be placed at the end of the URL.\r\n *\r\n * @param {String} anchorText\r\n * @param {Number} truncateLen The maximum length of the truncated output URL string.\r\n * @param {String} ellipsisChars The characters to place within the url, e.g. \"..\".\r\n * @return {String} The truncated URL.\r\n */\r\nAutolinker.truncate.TruncateEnd = function(anchorText, truncateLen, ellipsisChars){\r\n\treturn Autolinker.Util.ellipsis( anchorText, truncateLen, ellipsisChars );\r\n};\r\n\r\n/*global Autolinker */\r\n/**\r\n * Date: 2015-10-05\r\n * Author: Kasper Søfren (https://github.com/kafoso)\r\n *\r\n * A truncation feature, where the ellipsis will be placed in the dead-center of the URL.\r\n *\r\n * @param {String} url A URL.\r\n * @param {Number} truncateLen The maximum length of the truncated output URL string.\r\n * @param {String} ellipsisChars The characters to place within the url, e.g. \"..\".\r\n * @return {String} The truncated URL.\r\n */\r\nAutolinker.truncate.TruncateMiddle = function(url, truncateLen, ellipsisChars){\r\n if (url.length <= truncateLen) {\r\n return url;\r\n }\r\n var availableLength = truncateLen - ellipsisChars.length;\r\n var end = \"\";\r\n if (availableLength > 0) {\r\n end = url.substr((-1)*Math.floor(availableLength/2));\r\n }\r\n return (url.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, truncateLen);\r\n};\r\n\r\n/*global Autolinker */\r\n/**\r\n * Date: 2015-10-05\r\n * Author: Kasper Søfren (https://github.com/kafoso)\r\n *\r\n * A truncation feature, where the ellipsis will be placed at a section within\r\n * the URL making it still somewhat human readable.\r\n *\r\n * @param {String} url\t\t\t\t\t\t A URL.\r\n * @param {Number} truncateLen\t\t The maximum length of the truncated output URL string.\r\n * @param {String} ellipsisChars\t The characters to place within the url, e.g. \"..\".\r\n * @return {String} The truncated URL.\r\n */\r\nAutolinker.truncate.TruncateSmart = function(url, truncateLen, ellipsisChars){\r\n\tvar parse_url = function(url){ // Functionality inspired by PHP function of same name\r\n\t\tvar urlObj = {};\r\n\t\tvar urlSub = url;\r\n\t\tvar match = urlSub.match(/^([a-z]+):\\/\\//i);\r\n\t\tif (match) {\r\n\t\t\turlObj.scheme = match[1];\r\n\t\t\turlSub = urlSub.substr(match[0].length);\r\n\t\t}\r\n\t\tmatch = urlSub.match(/^(.*?)(?=(\\?|#|\\/|$))/i);\r\n\t\tif (match) {\r\n\t\t\turlObj.host = match[1];\r\n\t\t\turlSub = urlSub.substr(match[0].length);\r\n\t\t}\r\n\t\tmatch = urlSub.match(/^\\/(.*?)(?=(\\?|#|$))/i);\r\n\t\tif (match) {\r\n\t\t\turlObj.path = match[1];\r\n\t\t\turlSub = urlSub.substr(match[0].length);\r\n\t\t}\r\n\t\tmatch = urlSub.match(/^\\?(.*?)(?=(#|$))/i);\r\n\t\tif (match) {\r\n\t\t\turlObj.query = match[1];\r\n\t\t\turlSub = urlSub.substr(match[0].length);\r\n\t\t}\r\n\t\tmatch = urlSub.match(/^#(.*?)$/i);\r\n\t\tif (match) {\r\n\t\t\turlObj.fragment = match[1];\r\n\t\t\t//urlSub = urlSub.substr(match[0].length); -- not used. Uncomment if adding another block.\r\n\t\t}\r\n\t\treturn urlObj;\r\n\t};\r\n\r\n\tvar buildUrl = function(urlObj){\r\n\t\tvar url = \"\";\r\n\t\tif (urlObj.scheme && urlObj.host) {\r\n\t\t\turl += urlObj.scheme + \"://\";\r\n\t\t}\r\n\t\tif (urlObj.host) {\r\n\t\t\turl += urlObj.host;\r\n\t\t}\r\n\t\tif (urlObj.path) {\r\n\t\t\turl += \"/\" + urlObj.path;\r\n\t\t}\r\n\t\tif (urlObj.query) {\r\n\t\t\turl += \"?\" + urlObj.query;\r\n\t\t}\r\n\t\tif (urlObj.fragment) {\r\n\t\t\turl += \"#\" + urlObj.fragment;\r\n\t\t}\r\n\t\treturn url;\r\n\t};\r\n\r\n\tvar buildSegment = function(segment, remainingAvailableLength){\r\n\t\tvar remainingAvailableLengthHalf = remainingAvailableLength/ 2,\r\n\t\t\t\tstartOffset = Math.ceil(remainingAvailableLengthHalf),\r\n\t\t\t\tendOffset = (-1)*Math.floor(remainingAvailableLengthHalf),\r\n\t\t\t\tend = \"\";\r\n\t\tif (endOffset < 0) {\r\n\t\t\tend = segment.substr(endOffset);\r\n\t\t}\r\n\t\treturn segment.substr(0, startOffset) + ellipsisChars + end;\r\n\t};\r\n\tif (url.length <= truncateLen) {\r\n\t\treturn url;\r\n\t}\r\n\tvar availableLength = truncateLen - ellipsisChars.length;\r\n\tvar urlObj = parse_url(url);\r\n\t// Clean up the URL\r\n\tif (urlObj.query) {\r\n\t\tvar matchQuery = urlObj.query.match(/^(.*?)(?=(\\?|\\#))(.*?)$/i);\r\n\t\tif (matchQuery) {\r\n\t\t\t// Malformed URL; two or more \"?\". Removed any content behind the 2nd.\r\n\t\t\turlObj.query = urlObj.query.substr(0, matchQuery[1].length);\r\n\t\t\turl = buildUrl(urlObj);\r\n\t\t}\r\n\t}\r\n\tif (url.length <= truncateLen) {\r\n\t\treturn url;\r\n\t}\r\n\tif (urlObj.host) {\r\n\t\turlObj.host = urlObj.host.replace(/^www\\./, \"\");\r\n\t\turl = buildUrl(urlObj);\r\n\t}\r\n\tif (url.length <= truncateLen) {\r\n\t\treturn url;\r\n\t}\r\n\t// Process and build the URL\r\n\tvar str = \"\";\r\n\tif (urlObj.host) {\r\n\t\tstr += urlObj.host;\r\n\t}\r\n\tif (str.length >= availableLength) {\r\n\t\tif (urlObj.host.length == truncateLen) {\r\n\t\t\treturn (urlObj.host.substr(0, (truncateLen - ellipsisChars.length)) + ellipsisChars).substr(0, truncateLen);\r\n\t\t}\r\n\t\treturn buildSegment(str, availableLength).substr(0, truncateLen);\r\n\t}\r\n\tvar pathAndQuery = \"\";\r\n\tif (urlObj.path) {\r\n\t\tpathAndQuery += \"/\" + urlObj.path;\r\n\t}\r\n\tif (urlObj.query) {\r\n\t\tpathAndQuery += \"?\" + urlObj.query;\r\n\t}\r\n\tif (pathAndQuery) {\r\n\t\tif ((str+pathAndQuery).length >= availableLength) {\r\n\t\t\tif ((str+pathAndQuery).length == truncateLen) {\r\n\t\t\t\treturn (str + pathAndQuery).substr(0, truncateLen);\r\n\t\t\t}\r\n\t\t\tvar remainingAvailableLength = availableLength - str.length;\r\n\t\t\treturn (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, truncateLen);\r\n\t\t} else {\r\n\t\t\tstr += pathAndQuery;\r\n\t\t}\r\n\t}\r\n\tif (urlObj.fragment) {\r\n\t\tvar fragment = \"#\"+urlObj.fragment;\r\n\t\tif ((str+fragment).length >= availableLength) {\r\n\t\t\tif ((str+fragment).length == truncateLen) {\r\n\t\t\t\treturn (str + fragment).substr(0, truncateLen);\r\n\t\t\t}\r\n\t\t\tvar remainingAvailableLength2 = availableLength - str.length;\r\n\t\t\treturn (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, truncateLen);\r\n\t\t} else {\r\n\t\t\tstr += fragment;\r\n\t\t}\r\n\t}\r\n\tif (urlObj.scheme && urlObj.host) {\r\n\t\tvar scheme = urlObj.scheme + \"://\";\r\n\t\tif ((str+scheme).length < availableLength) {\r\n\t\t\treturn (scheme + str).substr(0, truncateLen);\r\n\t\t}\r\n\t}\r\n\tif (str.length <= truncateLen) {\r\n\t\treturn str;\r\n\t}\r\n\tvar end = \"\";\r\n\tif (availableLength > 0) {\r\n\t\tend = str.substr((-1)*Math.floor(availableLength/2));\r\n\t}\r\n\treturn (str.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, truncateLen);\r\n};\r\n\r\nreturn Autolinker;\r\n}));\r\n","var register = require('./lib/register')\r\nvar addHook = require('./lib/add')\r\nvar removeHook = require('./lib/remove')\r\n\r\n// bind with array of arguments: https://stackoverflow.com/a/21792913\r\nvar bind = Function.bind\r\nvar bindable = bind.bind(bind)\r\n\r\nfunction bindApi (hook, state, name) {\r\n var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state])\r\n hook.api = { remove: removeHookRef }\r\n hook.remove = removeHookRef\r\n\r\n ;['before', 'error', 'after', 'wrap'].forEach(function (kind) {\r\n var args = name ? [state, kind, name] : [state, kind]\r\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args)\r\n })\r\n}\r\n\r\nfunction HookSingular () {\r\n var singularHookName = 'h'\r\n var singularHookState = {\r\n registry: {}\r\n }\r\n var singularHook = register.bind(null, singularHookState, singularHookName)\r\n bindApi(singularHook, singularHookState, singularHookName)\r\n return singularHook\r\n}\r\n\r\nfunction HookCollection () {\r\n var state = {\r\n registry: {}\r\n }\r\n\r\n var hook = register.bind(null, state)\r\n bindApi(hook, state)\r\n\r\n return hook\r\n}\r\n\r\nvar collectionHookDeprecationMessageDisplayed = false\r\nfunction Hook () {\r\n if (!collectionHookDeprecationMessageDisplayed) {\r\n console.warn('[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4')\r\n collectionHookDeprecationMessageDisplayed = true\r\n }\r\n return HookCollection()\r\n}\r\n\r\nHook.Singular = HookSingular.bind()\r\nHook.Collection = HookCollection.bind()\r\n\r\nmodule.exports = Hook\r\n// expose constructors as a named property for TypeScript\r\nmodule.exports.Hook = Hook\r\nmodule.exports.Singular = Hook.Singular\r\nmodule.exports.Collection = Hook.Collection\r\n","module.exports = addHook\r\n\r\nfunction addHook (state, kind, name, hook) {\r\n var orig = hook\r\n if (!state.registry[name]) {\r\n state.registry[name] = []\r\n }\r\n\r\n if (kind === 'before') {\r\n hook = function (method, options) {\r\n return Promise.resolve()\r\n .then(orig.bind(null, options))\r\n .then(method.bind(null, options))\r\n }\r\n }\r\n\r\n if (kind === 'after') {\r\n hook = function (method, options) {\r\n var result\r\n return Promise.resolve()\r\n .then(method.bind(null, options))\r\n .then(function (result_) {\r\n result = result_\r\n return orig(result, options)\r\n })\r\n .then(function () {\r\n return result\r\n })\r\n }\r\n }\r\n\r\n if (kind === 'error') {\r\n hook = function (method, options) {\r\n return Promise.resolve()\r\n .then(method.bind(null, options))\r\n .catch(function (error) {\r\n return orig(error, options)\r\n })\r\n }\r\n }\r\n\r\n state.registry[name].push({\r\n hook: hook,\r\n orig: orig\r\n })\r\n}\r\n","module.exports = register\r\n\r\nfunction register (state, name, method, options) {\r\n if (typeof method !== 'function') {\r\n throw new Error('method for before hook must be a function')\r\n }\r\n\r\n if (!options) {\r\n options = {}\r\n }\r\n\r\n if (Array.isArray(name)) {\r\n return name.reverse().reduce(function (callback, name) {\r\n return register.bind(null, state, name, callback, options)\r\n }, method)()\r\n }\r\n\r\n return Promise.resolve()\r\n .then(function () {\r\n if (!state.registry[name]) {\r\n return method(options)\r\n }\r\n\r\n return (state.registry[name]).reduce(function (method, registered) {\r\n return registered.hook.bind(null, method, options)\r\n }, method)()\r\n })\r\n}\r\n","module.exports = removeHook\r\n\r\nfunction removeHook (state, name, method) {\r\n if (!state.registry[name]) {\r\n return\r\n }\r\n\r\n var index = state.registry[name]\r\n .map(function (registered) { return registered.orig })\r\n .indexOf(method)\r\n\r\n if (index === -1) {\r\n return\r\n }\r\n\r\n state.registry[name].splice(index, 1)\r\n}\r\n","/*!\r\n * create-frame \r\n *\r\n * Copyright (c) 2015, Jon Schlinkert.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n'use strict';\r\n\r\nvar utils = require('./utils');\r\n\r\nmodule.exports = function createFrame(data) {\r\n if (!utils.isObject(data)) {\r\n throw new TypeError('createFrame expects data to be an object');\r\n }\r\n\r\n var extend = utils.extend;\r\n var frame = extend({}, data);\r\n frame._parent = data;\r\n\r\n utils.define(frame, 'extend', function(data) {\r\n extend(this, data);\r\n });\r\n\r\n if (arguments.length > 1) {\r\n var args = [].slice.call(arguments, 1);\r\n var len = args.length, i = -1;\r\n while (++i < len) {\r\n frame.extend(args[i] || {});\r\n }\r\n }\r\n return frame;\r\n};\r\n",null,"/**\r\n * Expose `Date`\r\n */\r\n\r\nmodule.exports = require('./lib/parser');\r\n","/**\r\n * Module Dependencies\r\n */\r\n\r\nvar debug = require('debug')('date:date')\r\n\r\n/**\r\n * Time constants\r\n */\r\n\r\nvar _second = 1000\r\nvar _minute = 60 * _second\r\nvar _hour = 60 * _minute\r\nvar _day = 24 * _hour\r\nvar _week = 7 * _day\r\nvar _year = 56 * _week\r\nvar _daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\r\n\r\n/**\r\n * Expose `date`\r\n */\r\n\r\nmodule.exports = date\r\n\r\n/**\r\n * Initialize `date`\r\n *\r\n * @param {Date} offset (optional)\r\n * @return {Date}\r\n * @api publics\r\n */\r\n\r\nfunction date (offset) {\r\n if (!(this instanceof date)) return new date(offset)\r\n this._changed = {}\r\n this.date = new Date(offset)\r\n}\r\n\r\n/**\r\n * Clone the current date\r\n */\r\n\r\ndate.prototype.clone = function () {\r\n return new Date(this.date)\r\n}\r\n\r\n/**\r\n * Has changed\r\n *\r\n * @param {String} str\r\n * @return {Boolean}\r\n */\r\n\r\ndate.prototype.changed = function (str) {\r\n if (this._changed[str] === undefined) return false\r\n return this._changed[str]\r\n}\r\n\r\n/**\r\n * add or subtract seconds\r\n *\r\n * @param {Number} n\r\n * @return {date}\r\n */\r\n\r\ndate.prototype.second = function (n) {\r\n var seconds = +n * _second\r\n this.update(seconds)\r\n this._changed['seconds'] = true\r\n return this\r\n}\r\n\r\n/**\r\n * add or subtract minutes\r\n *\r\n * @param {Number} n\r\n * @return {date}\r\n */\r\n\r\ndate.prototype.minute = function (n) {\r\n var minutes = +n * _minute\r\n this.update(minutes)\r\n this._changed['minutes'] = true\r\n return this\r\n}\r\n\r\n/**\r\n * add or subtract hours\r\n *\r\n * @param {Number} n\r\n * @return {date}\r\n */\r\n\r\ndate.prototype.hour = function (n) {\r\n var hours = +n * _hour\r\n this.update(hours)\r\n this._changed['hours'] = true\r\n return this\r\n}\r\n\r\n/**\r\n * add or subtract days\r\n *\r\n * @param {Number} n\r\n * @return {date}\r\n */\r\n\r\ndate.prototype.day = function (n) {\r\n var days = +n * _day\r\n this.update(days)\r\n this._changed['days'] = true\r\n return this\r\n}\r\n\r\n/**\r\n * add or subtract weeks\r\n *\r\n * @param {Number} n\r\n * @return {date}\r\n */\r\n\r\ndate.prototype.week = function (n) {\r\n var weeks = +n * _week\r\n this.update(weeks)\r\n this._changed['weeks'] = true\r\n return this\r\n}\r\n\r\n/**\r\n * add or subtract months\r\n *\r\n * @param {Number} n\r\n * @return {Date}\r\n */\r\n\r\ndate.prototype.month = function (n) {\r\n var d = this.date\r\n var day = d.getDate()\r\n d.setDate(1)\r\n var month = +n + d.getMonth()\r\n d.setMonth(month)\r\n\r\n // Handle dates with less days\r\n var dim = this.daysInMonth(month)\r\n d.setDate(Math.min(dim, day))\r\n return this\r\n}\r\n\r\n/**\r\n * get the days in the month\r\n */\r\n\r\ndate.prototype.daysInMonth = function (m) {\r\n var dim = _daysInMonth[m]\r\n var leap = leapyear(this.date.getFullYear())\r\n return (1 == m && leap) ? 29 : 28\r\n}\r\n\r\n/**\r\n * add or subtract years\r\n *\r\n * @param {Number} n\r\n * @return {date}\r\n */\r\n\r\ndate.prototype.year = function (n) {\r\n var yr = this.date.getFullYear()\r\n yr += +n\r\n this.date.setFullYear(yr)\r\n this._changed['years'] = true\r\n return this\r\n}\r\n\r\n/**\r\n * Set the time\r\n *\r\n * @param {String} h\r\n * @param {String} m\r\n * @param {String} s\r\n * @return {date}\r\n */\r\n\r\ndate.prototype.time = function (h, m, s, meridiem) {\r\n if (h === false) {\r\n h = this.date.getHours()\r\n } else {\r\n h = +h || 0\r\n this._changed['hours'] = h\r\n }\r\n\r\n if (m === false) {\r\n m = this.date.getMinutes()\r\n } else {\r\n m = +m || 0\r\n this._changed['minutes'] = m\r\n }\r\n\r\n if (s === false) {\r\n s = this.date.getSeconds()\r\n } else {\r\n s = +s || 0\r\n this._changed['seconds'] = s\r\n }\r\n\r\n this.date.setHours(h, m, s)\r\n return this\r\n}\r\n\r\n/**\r\n * Dynamically create day functions (sunday(n), monday(n), etc.)\r\n */\r\n\r\nvar days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']\r\ndays.forEach(function (day, i) {\r\n date.prototype[days[i]] = function (n) {\r\n this._changed['days'] = true\r\n this.updateDay(i, n)\r\n }\r\n})\r\n\r\n/**\r\n * go to day of week\r\n *\r\n * @param {Number} day\r\n * @param {Number} n\r\n * @return {date}\r\n */\r\n\r\ndate.prototype.updateDay = function (d, n) {\r\n n = +(n || 1)\r\n var diff = (d - this.date.getDay() + 7) % 7\r\n if (n > 0) --n\r\n diff += (7 * n)\r\n this.update(diff * _day)\r\n return this\r\n}\r\n\r\n/**\r\n * Update the date\r\n *\r\n * @param {Number} ms\r\n * @return {Date}\r\n * @api private\r\n */\r\n\r\ndate.prototype.update = function (ms) {\r\n this.date = new Date(this.date.getTime() + ms)\r\n return this\r\n}\r\n\r\n/**\r\n * leap year\r\n *\r\n * @param {Number} yr\r\n * @return {Boolean}\r\n */\r\n\r\nfunction leapyear (yr) {\r\n return (yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0\r\n}\r\n","// Production rule module for the CFG\r\n// !leap year\r\n// !proper carry considering # of days per month\r\n\r\n/**\r\n * Module Dependencies\r\n */\r\n\r\nvar _ = require('./subdash')\r\nvar util = require('./util')\r\nvar symbol = require('./symbol')\r\nvar tokenize = require('./tokenize')\r\n\r\n/**\r\n * Export `norm`\r\n */\r\n\r\nmodule.exports = norm\r\n\r\n// a partial implementation of norm\r\n/**\r\n * Preprocess a string using the human language for time CFG, return a triple of original str, preprocessed tokens, and the normal forms (extracted dates in normal forms)\r\n */\r\nfunction norm (str, offset) {\r\n try {\r\n // Production rules: CFG algorithm for human language for time\r\n var tokObj = tokenize(str)\r\n // console.log('p#0: parse normal forms', tokObj)\r\n var syms = pickTokens(tokObj.symbols) || []\r\n // console.log('p#0: remove nulls, pick tokens', syms)\r\n syms = reduce(syms, ['n', 'n'])\r\n // console.log('p#1: arithmetics: [] ~ , + if n1 > n2, * else', syms)\r\n syms = nTnRedistribute(syms)\r\n // console.log('p#2: redistribute, [] ~ [] ', syms)\r\n syms = reduce(syms, ['o', 'o'])\r\n // console.log('p#3: ~ *', syms)\r\n\r\n // preprocessing ends, now format output\r\n var restored = restoreTokens(syms, tokObj)\r\n return restored\r\n } catch (e) {\r\n return {\r\n str: str,\r\n tokens: [],\r\n normals: []\r\n }\r\n }\r\n\r\n}\r\n\r\n/**\r\n * format a preprocessed array of symbols back into string, using some info from tokObj\r\n */\r\nfunction restoreTokens (syms, tokObj) {\r\n var tokens = [],\r\n normals = [],\r\n tokensOut = tokObj.tokensOut,\r\n tokensIn = tokObj.tokensIn\r\n\r\n syms = util.removeTnPlus(syms)\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i],\r\n sName = util.sName(s),\r\n token = ''\r\n switch (sName) {\r\n case 'n':\r\n // if token is already numeric, use it\r\n token = (s.token.match(/^\\s*[\\d\\.\\-\\+]+\\s*$/)) ? s.token.trim() : s.value.toString()\r\n break\r\n case 'T':\r\n // handles shits like 1 am ~ t:1h00m,dt:, am (token returned)\r\n token = restoreNormal(s)\r\n break\r\n default:\r\n // the other cases like op, o, cron, range\r\n token = s.token.toString()\r\n }\r\n\r\n // extract the protected normal string\r\n if (typeof token == 'string') {\r\n tokens.push(token)\r\n } else {\r\n // get protected normal forms\r\n normals.push(token.normal)\r\n }\r\n }\r\n return {\r\n tokens: tokens,\r\n str: tokens.join(' ').replace(/\\s+/g, ' '),\r\n normals: normals\r\n }\r\n}\r\n\r\n/**\r\n * Given a T symbol, try to restore its normal form (return wrapped in JSON if it's a complete date string {normal: }), or just return the plain string as token\r\n */\r\nfunction restoreNormal (T) {\r\n var token = T.token\r\n if (token.match(util.reT)) {\r\n // if it is normal form, convert back into the normal1 or normal2 strings\r\n var split = util.splitT(token)\r\n if (_.includes(split, undefined)) {\r\n // if it's normal2 form\r\n // either it's a date or time\r\n var dateArr = split.slice(0, 3),\r\n timeArr = split.slice(3)\r\n if (timeArr[0] != undefined) {\r\n // check time first, it's first signature (hour) is defined\r\n // return hh:mm\r\n return util.TtoStdT(token).match(/(\\d+\\:\\d+)/)[1]\r\n } else {\r\n // else it's a date, parse arr and return complete stdT instead\r\n // return wrapped in JSON if it's a complete date string\r\n return { normal: util.TtoStdT(token) }\r\n }\r\n } else {\r\n // if it's normal1 form, use TtoStd\r\n // return wrapped in JSON if it's a complete date string\r\n return { normal: util.TtoStdT(token) }\r\n }\r\n } else if (!util.has_t(T) && util.has_dt(T) && util.has_pureTimeUnit(T)) {\r\n // handle pure dt: T that are purel displacement, e.g. week, fortnight\r\n var dtStr = '',\r\n units = _.keys(T.dt),\r\n dt = T.dt\r\n // accumulate dtStr\r\n for (var i = 0; i < units.length; i++) {\r\n var u = units[i],\r\n kval = parseFloat(dt[u]),\r\n // set number has default, or is 0, 1\r\n numStr = (kval != dt[u] || kval == 0 || Math.abs(kval) == 1) ? '' : dt[u].toString() + ' '\r\n\r\n // set canon from lemma only if it exists, and key is word, else use u\r\n var canon = u\r\n if (T.canon != undefined) {\r\n // and if it's also a timeUnit\r\n canon = T.canon\r\n } else {\r\n // get the lemma for u, its canon and key\r\n var lemma = util.lemma(u),\r\n lemmaCanon = lemma.canon,\r\n lemmaKey = lemma.value\r\n if (lemmaKey && lemmaKey.match(/^\\w+$/)) { canon = lemmaCanon }\r\n }\r\n // set the units, number, and canonical form of the unit\r\n dtStr = dtStr + numStr + canon + ' '\r\n }\r\n return dtStr\r\n } else {\r\n // else it's just plain english, return\r\n return token\r\n }\r\n}\r\n// var fakes = { t: { h: '1', m: '00' }, dt: {}, token: 't:1h00m,dt:' }\r\n// var fakes = { t: { M: '12', d: '25', m: '00' }, dt: {}, token: 't:12M25d00m,dt:' }\r\n// console.log(restoreNormal(fakes))\r\n\r\n/**\r\n * !Backburner for future extension: Main method: Run the CFG algorithm to parse the string, return JSON of {input, output, diffStr}. Normalize the string before Matt's algorithm runs it.\r\n * @example\r\n * var str = 'having lunch today at 3 hours after 9am'\r\n * norm(str)\r\n * // => { input: 'having lunch today at 3 hours after 9am',\r\n * output: '2016-03-04T05:00:09Z',\r\n * difference: 'having lunch' }\r\n */\r\nfunction CFGproduce (str, offset) {\r\n // try all the below till all is elegantly fixed\r\n var diffStr = str,\r\n finalStr = null,\r\n output = str\r\n // Production rules: CFG algorithm for human language for time\r\n // p#0: tokenize, remove nulls, pick tokens\r\n var tokObj = tokenize(str)\r\n var syms = pickTokens(tokObj.symbols)\r\n // console.log('p#0: parse normal forms, remove nulls, pick tokens', tokObj)\r\n\r\n try {\r\n syms = reduce(syms, ['n', 'n'])\r\n // console.log('p#1: arithmetics: [] ~ , + if n1 > n2, * else', syms)\r\n syms = nTnRedistribute(syms)\r\n // console.log('p#2: redistribute, [] ~ [] ', syms)\r\n output = util.tokenToStr(syms)\r\n\r\n // !okay replace back the normal forms in the str\r\n\r\n // // !Till future completion: Mute from below\r\n // syms = reduce(syms, ['n', 'T'])\r\n // // console.log('p#3: [] ~ , * if dt, + if t', syms)\r\n // syms = reduce(syms, ['T', 'T'])\r\n // // console.log('p#4: [] ~ ', syms)\r\n // syms = nDefTSyms(syms)\r\n // // console.log('p#5: defaulter ~ , d defaults to t:h', syms)\r\n // syms = reduce(syms, ['o', 'o'])\r\n // // console.log('p#6: ~ *', syms)\r\n // syms = autoHourModding(syms)\r\n // syms = weekModding(syms, offset)\r\n // // console.log('p#7: modding: meridiem, weeks', syms)\r\n // syms = optReduce(syms, ['T', 'T'], ['o'], null, symbol(util.nowT(offset)))\r\n // // console.log('p#8: ~ ', syms)\r\n\r\n // // !future:\r\n // // syms = reduce(syms, ['T'], ['r'])\r\n // // syms = reduce(syms, ['f', 'T', 'rT'], ['c'])\r\n\r\n // console.log('tokObj', tokObj)\r\n syms = finalizeT(syms, offset)\r\n // console.log('p#9: finalizeT with origin', syms)\r\n\r\n finalStr = symsToStdT(syms, offset)\r\n // console.log('finalStr', finalStr)\r\n\r\n } catch (e) {}\r\n // extract the tokens for difference string later\r\n // diffStr = util.unparsedStr(tokObj.str, tokObj.symbols)\r\n // console.log('diffStr', diffStr)\r\n // !convert dt into proper terms\r\n\r\n return {\r\n input: str,\r\n // output: new Date(finalStr),\r\n output: output,\r\n difference: diffStr\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Production rule #0: pick tokens, remove nulls.\r\n * 1. break into chunks of arrs delimited by triple-null-or-more\r\n * 2. reorder chunks by arr length\r\n * 3.1 init candidate = []\r\n * 3.2 pull and push the chunks not containing into candidate\r\n * 3.3 pull and push the chunks containing into candidate\r\n * 4. pick the last candidate\r\n */\r\nfunction pickTokens (syms) {\r\n // 1. 2. 3.\r\n var delimited = util.delimSyms(syms),\r\n chunks = util.splitSyms(delimited, 'trinull'),\r\n candidates = util.orderChunks(chunks)\r\n // 4.\r\n return candidates.pop()\r\n}\r\n\r\n/**\r\n * Reduce an array of symbols with binary operations between permissible symbols.\r\n * @param {Array} syms Array of input symbols\r\n * @param {Array} varArr String names of permissible variables.\r\n * @param {Array} opArr String names of permissible operations.\r\n * @return {Array} The reduced result.\r\n */\r\nfunction reduce (syms, varArr, opArr) {\r\n if (syms.length < 2) {\r\n return syms\r\n }\r\n // the operator arrays\r\n var opArr = opArr || ['op']\r\n // endmark for handling last symbol\r\n syms.push('null')\r\n // the result, past-pointer(previous non-null symbol), default-op, current-op, and whether current-op is inter-symbol op, i.e. will not be used up\r\n var res = [],\r\n past = null,\r\n defOp = null,\r\n op = defOp,\r\n interOp = false\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i]\r\n if (!past || !s) {\r\n // edge case or null\r\n if (i == 0) { past = s; }\r\n } else if (util.isSym(s, opArr)) {\r\n // s is an op. mark op as won't be used yet\r\n op = s\r\n interOp = true\r\n // the nDefT for when past = 'n', s = 'o'\r\n } else if (util.isSym(past, [varArr[0]]) && util.isSym(s, [varArr[1]])) {\r\n // s and past are operable variables specified by varArr\r\n past = execOp(past, op, s)\r\n // reset after op is used\r\n op = defOp\r\n interOp = false\r\n } else {\r\n // no further legal operation made, push and continue\r\n // change of class, past is finalized, push to res\r\n res.push(past)\r\n if (Array.isArray(past)) {\r\n // if past was returned from execOp as array (not executed), then flatten it and dont push op to res, since it's already included in op\r\n res = _.flatten(res)\r\n } else {\r\n // if inter-op (not used), push a clone (prevent overwrite later)\r\n if (interOp) { res.push(symbol(op.value)) }\r\n }\r\n // reset\r\n op = defOp\r\n interOp = false\r\n past = s\r\n }\r\n }\r\n return res\r\n}\r\n\r\n/**\r\n * Optional reduce: similar to reduce() but either argument is optional.\r\n * algorithm: return a T\r\n * 1. for each t, dt, do:\r\n * 2. for each key in union of keys for Lt, Rt, do:\r\n * 3. _Rt = _Rt op _Lt\r\n * @param {Array} syms Array of input symbols\r\n * @param {Array} varArr String names of permissible variables.\r\n * @param {Array} opArr String names of permissible operations.\r\n * @param {symbol} Ldef default for left argument\r\n * @param {symbol} Rdef default for right argument\r\n * @return {Array} The reduced result.\r\n */\r\nfunction optReduce (syms, varArr, opArr, Ldef, Rdef) {\r\n if (syms.length < 2) {\r\n return syms\r\n }\r\n // use peek\r\n var res = [],\r\n sum = null,\r\n L = null,\r\n R = null\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i]\r\n if (util.isSym(s, opArr)) {\r\n if (sum == null) {\r\n L = syms[i - 1]\r\n sum = (util.isSym(L, [varArr[0]])) ? L : Ldef\r\n }\r\n R = syms[i + 1]\r\n // if is var skip it since will be consumed\r\n if (util.isSym(R, [varArr[1]])) { i++; }\r\n // else reset to default\r\n else { R = Rdef; }\r\n // compute:\r\n sum = execOp(sum, s, R)\r\n // before loop quits due to possible i++, push the last\r\n if (i == syms.length - 1) {\r\n res.push(sum)\r\n }\r\n } else {\r\n // s is not opArr, can't have been varArr either\r\n // edge case: at first dont push\r\n if (i > 0) {\r\n res.push(sum)\r\n res.push(s)\r\n sum = null\r\n }\r\n }\r\n }\r\n return res\r\n}\r\n\r\n/**\r\n * Execute non-commutative operation between 2 argument symbols and an op symbol; carry out respective ops according to symbol names.\r\n * @param {symbol} L Left argument\r\n * @param {symbol} op operation\r\n * @param {symbol} R Right argument\r\n * @param {str} offset The time origin offset\r\n * @return {symbol} Result\r\n */\r\nfunction execOp (L, op, R, offset) {\r\n var otype = util.opType(L, op, R),\r\n res = null\r\n if (_.includes(['nn'], otype)) {\r\n res = nnOp(L, op, R)\r\n } else if (_.includes(['nT'], otype)) {\r\n res = nTOp(L, op, R)\r\n } else if (_.includes(['TT'], otype)) {\r\n res = TTOp(L, op, R)\r\n } else if (_.includes(['ToT', 'oT', 'To'], otype)) {\r\n res = ToTOp(L, op, R, offset)\r\n } else if (_.includes(['oo'], otype)) {\r\n res = ooOp(L, R)\r\n } else if (_.includes(['rT', 'TrT'], otype)) {\r\n // has optional arg\r\n res = rTOp(L, R)\r\n } else if (_.includes(['cT', 'fcT', 'crT', 'fcrT'], otype)) {\r\n // has optional arg\r\n res = cTOp(L, R)\r\n } else {\r\n // not executable, e.g. not in the right order, return fully\r\n res = (op == null) ? [L, R] : [L, op, R]\r\n }\r\n return res\r\n}\r\n\r\n/**\r\n * Atomic binary arithmetic operation on the numerical level, with default overriding the argument prepended with '='.\r\n * @param {string|Number} Lval The left argument value.\r\n * @param {symbol} op The op symbol\r\n * @param {string|Number} Rval The right argument value.\r\n * @return {Number} Result from the operation.\r\n */\r\nfunction atomicOp (Lval, op, Rval, dontOp) {\r\n dontOp = dontOp || false\r\n var oName = op.value\r\n if (Lval == undefined) {\r\n // if L is missing, R must exist tho\r\n return (oName == 'minus') ? Rval.toString().replace(/(\\d)/, '-$1') : Rval\r\n } else if (Rval == undefined) {\r\n // if L exists, be it def or not, R missing\r\n return Lval\r\n } else {\r\n // or R exist or is default (parse to NaN), L can be default too but ignore then\r\n var defL = Lval.toString().match(/^=/),\r\n defR = Rval.toString().match(/^=/)\r\n var l = parseFloat(Lval.toString().replace(/^=/, '')),\r\n r = parseFloat(Rval.toString().replace(/^=/, ''))\r\n if (defL && defR) {\r\n // if both are default, return r 'last come last serve'\r\n return r\r\n } else if (defL && !defR) {\r\n // if either default, return the non-default\r\n return r\r\n } else if (!defL && defR) {\r\n return l\r\n } else {\r\n // none default\r\n if (dontOp) {\r\n // if is a don't operate together, i.e. for t, just return l\r\n // 'first come first serve'\r\n return l\r\n } else {\r\n // make the into proper floats first\r\n if (oName == 'minus') {\r\n return l - r\r\n } else if (oName == 'plus') {\r\n return l + r\r\n } else if (oName == 'times') {\r\n return l * r\r\n } else if (oName == 'divide') {\r\n return l / r\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * p#1: arithmetics: [] ~ , + if n1 > n2, * else\r\n */\r\nfunction nnOp (L, op, R) {\r\n var l = L.value,\r\n r = R.value\r\n // set the default op according to value in nn op\r\n if (l > r) {\r\n op = op || symbol('plus')\r\n } else {\r\n op = op || symbol('times')\r\n }\r\n var res = atomicOp(l, op, r)\r\n return symbol(res)\r\n}\r\n\r\n/**\r\n * p#2: redistribute, [] ~ [] \r\n * algorithm: note that from previous steps no 's can occur adjacently\r\n * 1. scan array L to R, on each found:\r\n * 2.1 if its R is , continue\r\n * 2.2 else, this is the target. do:\r\n * 3.1 init carry = []. remove and push into carry,\r\n * 3.2 if its L is , remove and prepend into carry,\r\n * 4.1 find the first to the left, if not , drop the carry and continue\r\n * 4.2 else merge the carry after the \r\n * 5. At the end of loop, rerun production rule #1\r\n */\r\nfunction nTnRedistribute (syms) {\r\n if (syms.length < 2) {\r\n return syms\r\n }\r\n // 1.\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i]\r\n if (util.sName(s) != 'n') {\r\n continue\r\n }\r\n // 1.\r\n\r\n var R = syms[i + 1]\r\n if (util.sName(R) == 'T') {\r\n continue\r\n }\r\n // 2.2\r\n\r\n // 3.1 prepare the carry\r\n var carry = []\r\n // 3.2 the Left symbol\r\n var L = syms[i - 1],\r\n Li = -1\r\n if (util.sName(L) == 'op') {\r\n // if L is an 'op', remember to pull it later\r\n Li = i - 1\r\n }\r\n // 4.1\r\n // find L...L of L that is 'n'\r\n var LLi = _.findLastIndex(syms.slice(0, i - 1), function (Ls) {\r\n return util.sName(Ls) == 'n'\r\n })\r\n if (!syms[LLi] || util.sName(syms[LLi + 1]) != 'T') {\r\n // if can't find 'n' (index = -1), or the R of 'n' isn't T, abort mission\r\n // syms.splice(i, 0, carry)\r\n } else {\r\n // 4.2\r\n // else, pull s at [i], optional L at [Li], and push at LLi+1\r\n carry.push(_.pullAt(syms, i)[0])\r\n if (Li != -1) {\r\n carry.unshift(_.pullAt(syms, Li)[0])\r\n }\r\n syms.splice(LLi + 1, 0, carry)\r\n syms = _.flatten(syms)\r\n }\r\n }\r\n\r\n // 5. redo the op\r\n syms = reduce(syms, ['n', 'n'])\r\n return syms\r\n}\r\n\r\n/**\r\n * p#3: [] ~ , * if dt, + if t\r\n * 1. if t can be overidden, start from the highest unit set to n, then return.\r\n * 2. otherwise, if
          not empty,
          = *
          , then return\r\n * 3. else, if not empty, = +, then return\r\n */\r\nfunction nTOp (nL, op, TR) {\r\n var tOverrideUnit = util.highestOverride(TR.t)\r\n if (tOverrideUnit) {\r\n // 1.\r\n TR.t[tOverrideUnit] = nL.value\r\n } else if (_.keys(TR.dt).length) {\r\n // 2.\r\n op = op || symbol('times')\r\n for (var k in TR.dt) {\r\n if (k == 'wd') {\r\n continue\r\n }\r\n TR.dt[k] = atomicOp(nL.value, op, TR.dt[k])\r\n }\r\n } else if (_.keys(TR.t).length) {\r\n // 3.\r\n op = op || symbol('plus')\r\n for (var k in TR.t) {\r\n TR.t[k] = atomicOp(nL.value, op, TR.t[k])\r\n }\r\n }\r\n return TR\r\n}\r\n\r\n/**\r\n * p#4: [] ~ \r\n */\r\nfunction TTOp (TL, op, TR) {\r\n // set the default op\r\n op = op || symbol('plus')\r\n // util.sName\r\n // mutate into TL\r\n for (var k in TR.t) {\r\n // okay done add absolute time, just as you don't add origins together put u take gradual specificity, the 'true' param for dontOp if exist, return r\r\n // override default tho, taken care of by atomic\r\n TL.t[k] = atomicOp(TL.t[k], op, TR.t[k], true)\r\n }\r\n for (var k in TR.dt) {\r\n if (k == 'wd') {\r\n continue\r\n }\r\n TL.dt[k] = atomicOp(TL.dt[k], op, TR.dt[k])\r\n }\r\n return TL\r\n}\r\n\r\n/**\r\n * p#5: defaulter ~ , d defaults to t:h\r\n */\r\nfunction nDefTSyms (syms) {\r\n var res = []\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i]\r\n res.push(util.isSym(s, ['n']) ? nDefT(s) : s)\r\n }\r\n return res\r\n}\r\n\r\n/**\r\n * Helper: default a singlet n to T, i.e. next available hour\r\n */\r\nfunction nDefT (n) {\r\n var deft = symbol('t:1h,dt:')\r\n var nVal = n.value\r\n var currentHour = new Date().getHours()\r\n var nextnVal = Math.floor(currentHour / 12) * 12 + nVal\r\n var tHour = execOp(symbol(nextnVal), symbol('times'), deft)\r\n return tHour\r\n}\r\n\r\n/**\r\n * ~ *\r\n * To handle 'before next' etc.\r\n */\r\nfunction ooOp (L, R) {\r\n var Lsign = (L.value == 'plus') ? +1 : -1,\r\n Rsign = (R.value == 'plus') ? +1 : -1,\r\n LRsign = Lsign * Rsign\r\n return (LRsign > 0) ? symbol('after') : symbol('before')\r\n}\r\n\r\n/**\r\n * Next available T', given an offset, by incrementing in dt the next unit ++1 from the current largest unit in t.\r\n */\r\nfunction nextAvailable (T, offset) {\r\n // find the current largest and next largest unit\r\n var nextUnit = util.nextLargestUnit(T)\r\n\r\n // first finalized T\r\n var finT1 = finalizeT([T], offset)[0],\r\n stdStr1 = util.TtoStdT(finT1),\r\n UTC1 = Date.parse(stdStr1),\r\n UTCnow = Date.parse(new Date()),\r\n UTCdiff = UTC1 - UTCnow\r\n // if UTC1 is not in the future, add next unit\r\n if (UTCdiff < 0) {\r\n T.dt[nextUnit] = (T.dt[nextUnit] || 0) + 1\r\n var finT2 = finalizeT([T], offset)[0]\r\n return finT2\r\n } else {\r\n return finT1\r\n }\r\n}\r\n\r\n/**\r\n * p#6: ~ \r\n */\r\nfunction ToTOp (L, op, R, offset) {\r\n if (L && !R) {\r\n // if R is missing, set to now\r\n R = symbol(util.nowT(offset))\r\n } else if (!L && R) {\r\n // if L missing\r\n if (util.has_t(R)) {\r\n // if R has t => part of origin, so L shd be the according dt\r\n var nextUnit = util.nextLargestUnit(R)\r\n R = nextAvailable(R, offset)\r\n // so arbitrarily set as 0.5 * next largest unit\r\n L = execOp(symbol(0.5), symbol('times'), symbol(nextUnit))\r\n } else {\r\n // R has dt only, make L an origin then\r\n L = symbol(util.nowT(offset))\r\n }\r\n } else if (!L && !R) {\r\n L = symbol(util.nowT(offset))\r\n R = symbol(util.nowT(offset))\r\n }\r\n\r\n var Ttype = ['t', 'dt']\r\n for (var i = 0; i < Ttype.length; i++) {\r\n var _Ttype = Ttype[i],\r\n // the dontOp for 't'\r\n dontOp = (_Ttype == 't')\r\n var concatKeys = _.keys(L[_Ttype]).concat(_.keys(R[_Ttype]))\r\n var keys = _.unique(concatKeys)\r\n for (var j = 0; j < keys.length; j++) {\r\n var k = keys[j]\r\n // run atomic op, note the reversed order of R op L\r\n R[_Ttype][k] = atomicOp(R[_Ttype][k], op, L[_Ttype][k], dontOp)\r\n }\r\n }\r\n return R\r\n}\r\n\r\n/**\r\n * p#7: auto-hour-modding: t:h mod 12\r\n * then add the meridiem to t:h if exist\r\n */\r\nfunction autoHourModding (syms) {\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i]\r\n if (util.isSym(s, ['T'])) {\r\n if (syms[i]['t']['h']) {\r\n // if t has 'h', mod it\r\n var value = syms[i]['t']['h'].toString()\r\n var isDefault = (value.match(/^=/) || [])[0] || ''\r\n value = parseFloat(value.replace(/^=/, ''))\r\n value = value > 12 ? value % 12 : value\r\n syms[i]['t']['h'] = isDefault + value\r\n }\r\n // apply the non-0 meridiem after modding:\r\n if (syms[i]['t']['mer']) {\r\n var dt_h = (syms[i]['dt']['h'] || '0').toString()\r\n // dump default at last\r\n dt_h = dt_h.replace(/^=/, '')\r\n if (syms[i]['t']['mer'] == 1) {\r\n syms[i]['dt']['h'] = parseFloat(dt_h) + 12\r\n }\r\n // delete mer\r\n delete syms[i]['t']['mer']\r\n }\r\n }\r\n }\r\n return syms\r\n}\r\n\r\n// do it at last, to use like '2nd week of march'\r\nfunction weekModding (syms, offset) {\r\n // weekday of the offset to calculate dt:d\r\n var offsetWD = new Date(util.TtoStdT(util.nowT())).getDay()\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i]\r\n if (util.isSym(s, ['T'])) {\r\n if (syms[i]['dt']['wd']) {\r\n // if dt has 'wd', mod it and turn into dt:d + %wd\r\n var WD = parseInt(syms[i]['dt']['wd'])\r\n var diffWD = (WD - offsetWD) % 7\r\n if (diffWD < 0) { diffWD = diffWD + 7 }\r\n syms[i]['dt']['d'] = (syms[i]['dt']['d'] || 0) + diffWD\r\n delete syms[i]['dt']['wd']\r\n }\r\n }\r\n }\r\n return syms\r\n}\r\n\r\n/**\r\n * p#8: Finalize each T in syms array:\r\n * 1. remove defaults from T\r\n * 2. add origin symbol.nowT() with given T.t, override missing units\r\n * 3. add t and dt\r\n */\r\nfunction finalizeT (syms, offset) {\r\n // remove defaults\r\n for (var i = 0; i < syms.length; i++) {\r\n syms[i] = removeDefaults(syms[i])\r\n }\r\n // default with origin at end\r\n syms.push(symbol(util.nowT(offset)))\r\n syms = reduce(syms, ['T', 'T'])\r\n // combine t and dt\r\n var newSyms = []\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i],\r\n sum = tdtAdd(s)\r\n sum.token = util.TtoStr(sum)\r\n newSyms.push(tdtAdd(s))\r\n }\r\n return syms\r\n}\r\n\r\n/**\r\n * remove the defaults before adding with origin\r\n */\r\nfunction removeDefaults (T) {\r\n for (var k in T.dt) {\r\n T.dt[k] = T.dt[k].toString().replace(/^=/, '')\r\n }\r\n for (var k in T.t) {\r\n T.t[k] = T.t[k].toString().replace(/^=/, '')\r\n }\r\n // delete meridiem too\r\n delete T['t']['mer']\r\n\r\n return T\r\n}\r\n\r\n/**\r\n * add t and dt within a T together, delete the dt keys\r\n */\r\nfunction tdtAdd (T) {\r\n // guard for non-T\r\n if (!util.isSym(T, ['T'])) {\r\n return T\r\n }\r\n for (var k in T.dt) {\r\n // absolute add, disregard defaults\r\n var t_k = (T.t[k] == undefined) ? 0 : T.t[k],\r\n dt_k = T.dt[k]\r\n // cleanup the default\r\n t_k = t_k.toString().replace(/^=/, '')\r\n dt_k = dt_k.toString().replace(/^=/, '')\r\n var sum = parseFloat(t_k) + parseFloat(dt_k)\r\n // set the result, remove used dt\r\n T.t[k] = sum\r\n delete T.dt[k]\r\n }\r\n return T\r\n}\r\n\r\n/**\r\n * p#9: Convert an array of symbols to normalized stdT strings.\r\n * if token was normal form already, parse into stdT.\r\n * if is n: return n.value\r\n * else return org token\r\n */\r\nfunction symsToStdT (syms, offset) {\r\n var tokens = []\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i],\r\n token = s.token.toString()\r\n // default, don't switch unless:\r\n if (util.isSym(s, ['n'])) {\r\n token = s.value\r\n } else if (token.match(util.reT)) {\r\n // is normal T form\r\n token = util.TtoStdT(token, offset)\r\n }\r\n tokens.push(token)\r\n }\r\n return tokens.join(' ')\r\n}\r\n\r\n/**\r\n * !to be implemented for range\r\n */\r\nfunction rTOp (L, R) {\r\n var start, end\r\n if (!R) {\r\n start = symbol(util.nowT())\r\n end = L\r\n } else {\r\n start = L\r\n end = R\r\n }\r\n return symbol({ start: start, end: end })\r\n}\r\n\r\n/**\r\n * !to be implemented for cron\r\n */\r\nfunction cTOp (L, R) {}\r\n","/**\r\n * Module Dependencies\r\n */\r\n\r\nvar debug = require('debug')('date:parser')\r\nvar date = require('./date')\r\nvar norm = require('./norm')\r\n\r\n/**\r\n * Days\r\n */\r\n\r\nvar days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']\r\nvar months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september',\r\n 'october', 'november', 'december'\r\n]\r\n\r\n/**\r\n * Regexs\r\n */\r\n\r\n// 5, 05, 5:30, 5.30, 05:30:10, 05:30.10, 05.30.10, at 5\r\nvar rMeridiem = /^(\\d{1,2})([:.](\\d{1,2}))?([:.](\\d{1,2}))?\\s*([ap]m)/\r\nvar rHourMinute = /^(\\d{1,2})([:.](\\d{1,2}))([:.](\\d{1,2}))?/\r\nvar rAtHour = /^at\\s?(\\d{1,2})$/\r\nvar rDays = /\\b(sun(day)?|mon(day)?|tues(day)?|wed(nesday)?|thur(sday|s)?|fri(day)?|sat(urday)?)s?\\b/\r\nvar rMonths = /^((\\d{1,2})\\s*(st|nd|rd|th))\\s(day\\s)?(of\\s)?(january|february|march|april|may|june|july|august|september|october|november|december)/i\r\nvar rPast = /\\b(last|yesterday|ago)\\b/\r\nvar rDayMod = /\\b(morning|noon|afternoon|night|evening|midnight)\\b/\r\nvar rAgo = /^(\\d*)\\s?\\b(second|minute|hour|day|week|month|year)[s]?\\b\\s?ago$/\r\n\r\n/**\r\n * Expose `parser`\r\n */\r\n\r\nmodule.exports = parser\r\n\r\n/**\r\n * Initialize `parser`\r\n *\r\n * @param {String} str\r\n * @return {Date}\r\n * @api publics\r\n */\r\n\r\nfunction parser (str, offset) {\r\n if (!(this instanceof parser)) return new parser(str, offset)\r\n if (typeof offset == 'string') offset = parser(offset)\r\n\r\n // CFG preprocessing into normalized format,\r\n // get {str, tokens, normals}\r\n // !future: return multiple parsed times, some from it\r\n var prepro = norm(str, offset)\r\n // console.log(prepro)\r\n // reset the str to prepro str\r\n str = prepro.str\r\n // if proprocessed doesn't leave any str to be processed (non-date-time) format, check normals\r\n if (!str) {\r\n if (prepro.normals.length) {\r\n // if there's normal date parsed already,\r\n // !return the first\r\n return new Date(prepro.normals[0])\r\n } else {\r\n // otherwise go back to below to return proper Error\r\n str = str\r\n }\r\n }\r\n\r\n var d = offset || new Date\r\n this.date = new date(d)\r\n this.original = str\r\n this.str = str.toLowerCase()\r\n this.stash = []\r\n this.tokens = []\r\n while (this.advance() !== 'eos')\r\n debug('tokens %j', this.tokens)\r\n this.nextTime(d)\r\n if (this.date.date == d) throw new Error('Invalid date')\r\n return this.date.date\r\n}\r\n\r\n/**\r\n * Advance a token\r\n */\r\n\r\nparser.prototype.advance = function () {\r\n var tok = this.eos()\r\n || this.space()\r\n || this._next()\r\n || this.last()\r\n || this.dayByName()\r\n || this.monthByName()\r\n || this.timeAgo()\r\n || this.ago()\r\n || this.yesterday()\r\n || this.tomorrow()\r\n || this.noon()\r\n || this.midnight()\r\n || this.night()\r\n || this.evening()\r\n || this.afternoon()\r\n || this.morning()\r\n || this.tonight()\r\n || this.meridiem()\r\n || this.hourminute()\r\n || this.athour()\r\n || this.week()\r\n || this.month()\r\n || this.year()\r\n || this.second()\r\n || this.minute()\r\n || this.hour()\r\n || this.day()\r\n || this.number()\r\n || this.string()\r\n || this.other()\r\n\r\n this.tokens.push(tok)\r\n return tok\r\n}\r\n\r\n/**\r\n * Lookahead `n` tokens.\r\n *\r\n * @param {Number} n\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nparser.prototype.lookahead = function (n) {\r\n var fetch = n - this.stash.length\r\n if (fetch == 0) return this.lookahead(++n)\r\n while (fetch-- > 0) this.stash.push(this.advance())\r\n return this.stash[--n]\r\n}\r\n\r\n/**\r\n * Lookahead a single token.\r\n *\r\n * @return {Token}\r\n * @api private\r\n */\r\n\r\nparser.prototype.peek = function () {\r\n return this.lookahead(1)\r\n}\r\n\r\n/**\r\n * Fetch next token including those stashed by peek.\r\n *\r\n * @return {Token}\r\n * @api private\r\n */\r\n\r\nparser.prototype.next = function () {\r\n var tok = this.stashed() || this.advance()\r\n return tok\r\n}\r\n\r\n/**\r\n * Return the next possibly stashed token.\r\n *\r\n * @return {Token}\r\n * @api private\r\n */\r\n\r\nparser.prototype.stashed = function () {\r\n var stashed = this.stash.shift()\r\n return stashed\r\n}\r\n\r\n/**\r\n * Consume the given `len`.\r\n *\r\n * @param {Number|Array} len\r\n * @api private\r\n */\r\n\r\nparser.prototype.skip = function (len) {\r\n this.str = this.str.substr(Array.isArray(len) ? len[0].length : len)\r\n}\r\n\r\n/**\r\n * EOS\r\n */\r\n\r\nparser.prototype.eos = function () {\r\n if (this.str.length) return\r\n return 'eos'\r\n}\r\n\r\n/**\r\n * Space\r\n */\r\n\r\nparser.prototype.space = function () {\r\n var captures\r\n if (captures = /^([ \\t]+)/.exec(this.str)) {\r\n this.skip(captures)\r\n return this.advance()\r\n }\r\n}\r\n\r\n/**\r\n * Second\r\n */\r\n\r\nparser.prototype.second = function () {\r\n var captures\r\n if (captures = /^s(ec|econd)?s?/.exec(this.str)) {\r\n this.skip(captures)\r\n return 'second'\r\n }\r\n}\r\n\r\n/**\r\n * Minute\r\n */\r\n\r\nparser.prototype.minute = function () {\r\n var captures\r\n if (captures = /^m(in|inute)?s?/.exec(this.str)) {\r\n this.skip(captures)\r\n return 'minute'\r\n }\r\n}\r\n\r\n/**\r\n * Hour\r\n */\r\n\r\nparser.prototype.hour = function () {\r\n var captures\r\n if (captures = /^h(r|our)s?/.exec(this.str)) {\r\n this.skip(captures)\r\n return 'hour'\r\n }\r\n}\r\n\r\n/**\r\n * Day\r\n */\r\n\r\nparser.prototype.day = function () {\r\n var captures\r\n if (captures = /^d(ay)?s?/.exec(this.str)) {\r\n this.skip(captures)\r\n return 'day'\r\n }\r\n}\r\n\r\n/**\r\n * Day by name\r\n */\r\n\r\nparser.prototype.dayByName = function () {\r\n var captures\r\n var r = new RegExp('^' + rDays.source)\r\n if (captures = r.exec(this.str)) {\r\n var day = captures[1]\r\n this.skip(captures)\r\n this.date[day](1)\r\n return captures[1]\r\n }\r\n}\r\n\r\n/**\r\n * Month by name\r\n */\r\n\r\nparser.prototype.monthByName = function () {\r\n var captures\r\n if (captures = rMonths.exec(this.str)) {\r\n var day = captures[2]\r\n var month = captures[6]\r\n this.date.date.setMonth((months.indexOf(month)))\r\n if (day) this.date.date.setDate(parseInt(day))\r\n this.skip(captures)\r\n return captures[0]\r\n }\r\n}\r\n\r\nparser.prototype.timeAgo = function () {\r\n var captures\r\n if (captures = rAgo.exec(this.str)) {\r\n var num = captures[1]\r\n var mod = captures[2]\r\n this.date[mod](-num)\r\n this.skip(captures)\r\n return 'timeAgo'\r\n }\r\n}\r\n\r\n/**\r\n * Week\r\n */\r\n\r\nparser.prototype.week = function () {\r\n var captures\r\n if (captures = /^w(k|eek)s?/.exec(this.str)) {\r\n this.skip(captures)\r\n return 'week'\r\n }\r\n}\r\n\r\n/**\r\n * Month\r\n */\r\n\r\nparser.prototype.month = function () {\r\n var captures\r\n if (captures = /^mon(th)?(es|s)?\\b/.exec(this.str)) {\r\n this.skip(captures)\r\n return 'month'\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Week\r\n */\r\n\r\nparser.prototype.year = function () {\r\n var captures\r\n if (captures = /^y(r|ear)s?/.exec(this.str)) {\r\n this.skip(captures)\r\n return 'year'\r\n }\r\n}\r\n\r\n/**\r\n * Meridiem am/pm\r\n */\r\n\r\nparser.prototype.meridiem = function () {\r\n var captures\r\n if (captures = rMeridiem.exec(this.str)) {\r\n this.skip(captures)\r\n this.time(captures[1], captures[3], captures[5], captures[6])\r\n return 'meridiem'\r\n }\r\n}\r\n\r\n/**\r\n * Hour Minute (ex. 12:30)\r\n */\r\n\r\nparser.prototype.hourminute = function () {\r\n var captures\r\n if (captures = rHourMinute.exec(this.str)) {\r\n this.skip(captures)\r\n this.time(captures[1], captures[3], captures[5], this._meridiem)\r\n return 'hourminute'\r\n }\r\n}\r\n\r\n/**\r\n * At Hour (ex. at 5)\r\n */\r\n\r\nparser.prototype.athour = function () {\r\n var captures\r\n if (captures = rAtHour.exec(this.str)) {\r\n this.skip(captures)\r\n this.time(captures[1], 0, 0, this._meridiem)\r\n this._meridiem = null\r\n return 'athour'\r\n }\r\n}\r\n\r\n/**\r\n * Time set helper\r\n */\r\n\r\nparser.prototype.time = function (h, m, s, meridiem) {\r\n var d = this.date\r\n var before = d.clone()\r\n\r\n if (meridiem) {\r\n // convert to 24 hour\r\n h = ('pm' == meridiem && 12 > h) ? +h + 12 : h; // 6pm => 18\r\n h = ('am' == meridiem && 12 == h) ? 0 : h; // 12am => 0\r\n }\r\n\r\n m = (!m && d.changed('minutes')) ? false : m\r\n s = (!s && d.changed('seconds')) ? false : s\r\n d.time(h, m, s)\r\n}\r\n\r\n/**\r\n * Best attempt to pick the next time this date will occur\r\n *\r\n * TODO: place at the end of the parsing\r\n */\r\n\r\nparser.prototype.nextTime = function (before) {\r\n var d = this.date\r\n var orig = this.original\r\n\r\n if (before <= d.date || rPast.test(orig)) return this\r\n\r\n // If time is in the past, we need to guess at the next time\r\n if (rDays.test(orig)) {\r\n d.day(7)\r\n } else if ((before - d.date) / 1000 > 60) {\r\n // If it is a month in the past, don't add a day\r\n if (rMonths.test(orig)) {\r\n d.day(0)\r\n } else {\r\n d.day(1)\r\n }\r\n }\r\n\r\n return this\r\n}\r\n\r\n/**\r\n * Yesterday\r\n */\r\n\r\nparser.prototype.yesterday = function () {\r\n var captures\r\n if (captures = /^(yes(terday)?)/.exec(this.str)) {\r\n this.skip(captures)\r\n this.date.day(-1)\r\n return 'yesterday'\r\n }\r\n}\r\n\r\n/**\r\n * Tomorrow\r\n */\r\n\r\nparser.prototype.tomorrow = function () {\r\n var captures\r\n if (captures = /^tom(orrow)?/.exec(this.str)) {\r\n this.skip(captures)\r\n this.date.day(1)\r\n return 'tomorrow'\r\n }\r\n}\r\n\r\n/**\r\n * Noon\r\n */\r\n\r\nparser.prototype.noon = function () {\r\n var captures\r\n if (captures = /^noon\\b/.exec(this.str)) {\r\n this.skip(captures)\r\n var before = this.date.clone()\r\n this.date.date.setHours(12, 0, 0)\r\n return 'noon'\r\n }\r\n}\r\n\r\n/**\r\n * Midnight\r\n */\r\n\r\nparser.prototype.midnight = function () {\r\n var captures\r\n if (captures = /^midnight\\b/.exec(this.str)) {\r\n this.skip(captures)\r\n var before = this.date.clone()\r\n this.date.date.setHours(0, 0, 0)\r\n return 'midnight'\r\n }\r\n}\r\n\r\n/**\r\n * Night (arbitrarily set at 7pm)\r\n */\r\n\r\nparser.prototype.night = function () {\r\n var captures\r\n if (captures = /^night\\b/.exec(this.str)) {\r\n this.skip(captures)\r\n this._meridiem = 'pm'\r\n var before = this.date.clone()\r\n this.date.date.setHours(19, 0, 0)\r\n return 'night'\r\n }\r\n}\r\n\r\n/**\r\n * Evening (arbitrarily set at 5pm)\r\n */\r\n\r\nparser.prototype.evening = function () {\r\n var captures\r\n if (captures = /^evening\\b/.exec(this.str)) {\r\n this.skip(captures)\r\n this._meridiem = 'pm'\r\n var before = this.date.clone()\r\n this.date.date.setHours(17, 0, 0)\r\n return 'evening'\r\n }\r\n}\r\n\r\n/**\r\n * Afternoon (arbitrarily set at 2pm)\r\n */\r\n\r\nparser.prototype.afternoon = function () {\r\n var captures\r\n if (captures = /^afternoon\\b/.exec(this.str)) {\r\n this.skip(captures)\r\n this._meridiem = 'pm'\r\n var before = this.date.clone()\r\n\r\n if (this.date.changed('hours')) return 'afternoon'\r\n\r\n this.date.date.setHours(14, 0, 0)\r\n return 'afternoon'\r\n }\r\n}\r\n\r\n/**\r\n * Morning (arbitrarily set at 8am)\r\n */\r\n\r\nparser.prototype.morning = function () {\r\n var captures\r\n if (captures = /^morning\\b/.exec(this.str)) {\r\n this.skip(captures)\r\n this._meridiem = 'am'\r\n var before = this.date.clone()\r\n if (!this.date.changed('hours')) this.date.date.setHours(8, 0, 0)\r\n return 'morning'\r\n }\r\n}\r\n\r\n/**\r\n * Tonight\r\n */\r\n\r\nparser.prototype.tonight = function () {\r\n var captures\r\n if (captures = /^tonight\\b/.exec(this.str)) {\r\n this.skip(captures)\r\n this._meridiem = 'pm'\r\n return 'tonight'\r\n }\r\n}\r\n\r\n/**\r\n * Next time\r\n */\r\n\r\nparser.prototype._next = function () {\r\n var captures\r\n if (captures = /^next/.exec(this.str)) {\r\n this.skip(captures)\r\n var d = new Date(this.date.date)\r\n var mod = this.peek()\r\n\r\n // If we have a defined modifier, then update\r\n if (this.date[mod]) {\r\n this.next()\r\n // slight hack to modify already modified\r\n this.date = date(d)\r\n this.date[mod](1)\r\n } else if (rDayMod.test(mod)) {\r\n this.date.day(1)\r\n }\r\n\r\n return 'next'\r\n }\r\n}\r\n\r\n/**\r\n * Last time\r\n */\r\n\r\nparser.prototype.last = function () {\r\n var captures\r\n if (captures = /^last/.exec(this.str)) {\r\n this.skip(captures)\r\n var d = new Date(this.date.date)\r\n var mod = this.peek()\r\n\r\n // If we have a defined modifier, then update\r\n if (this.date[mod]) {\r\n this.next()\r\n // slight hack to modify already modified\r\n this.date = date(d)\r\n this.date[mod](-1)\r\n } else if (rDayMod.test(mod)) {\r\n this.date.day(-1)\r\n }\r\n\r\n return 'last'\r\n }\r\n}\r\n\r\n/**\r\n * Ago\r\n */\r\n\r\nparser.prototype.ago = function () {\r\n var captures\r\n if (captures = /^ago\\b/.exec(this.str)) {\r\n this.skip(captures)\r\n return 'ago'\r\n }\r\n}\r\n\r\n/**\r\n * Number\r\n */\r\n\r\nparser.prototype.number = function () {\r\n var captures\r\n if (captures = /^(\\d+)/.exec(this.str)) {\r\n var n = captures[1]\r\n this.skip(captures)\r\n var mod = this.peek()\r\n\r\n // If we have a defined modifier, then update\r\n if (this.date[mod]) {\r\n if ('ago' == this.peek()) n = -n\r\n this.date[mod](n)\r\n } else if (this._meridiem) {\r\n // when we don't have meridiem, possibly use context to guess\r\n this.time(n, 0, 0, this._meridiem)\r\n this._meridiem = null\r\n } else if (this.original.indexOf('at') > -1) {\r\n this.time(n, 0, 0, this._meridiem)\r\n this._meridiem = null\r\n }\r\n\r\n return 'number'\r\n }\r\n}\r\n\r\n/**\r\n * String\r\n */\r\n\r\nparser.prototype.string = function () {\r\n var captures\r\n if (captures = /^\\w+/.exec(this.str)) {\r\n this.skip(captures)\r\n return 'string'\r\n }\r\n}\r\n\r\n/**\r\n * Other\r\n */\r\n\r\nparser.prototype.other = function () {\r\n var captures\r\n if (captures = /^./.exec(this.str)) {\r\n this.skip(captures)\r\n return 'other'\r\n }\r\n}\r\n","/**\r\n * Substitutes for lodash methods\r\n */\r\n\r\nexports.difference = function (bigArr, smallArr) {\r\n var diff = []\r\n for (var i = 0; i < bigArr.length; i++) {\r\n var ele = bigArr[i]\r\n if (smallArr.indexOf(ele) == -1) {\r\n diff.push(ele)\r\n }\r\n }\r\n return diff\r\n}\r\n\r\nexports.flatten = function (arr) {\r\n return [].concat.apply([], arr)\r\n}\r\n\r\nexports.find = function (arr, fn) {\r\n var found = null\r\n for (var i = 0; i < arr.length; i++) {\r\n if (fn(arr[i])) {\r\n found = arr[i]\r\n break\r\n }\r\n }\r\n return found\r\n}\r\n\r\nexports.findLastIndex = function (arr, fn) {\r\n var found = -1\r\n for (var i = arr.length - 1; i >= 0; i--) {\r\n if (fn(arr[i])) {\r\n found = i\r\n break\r\n }\r\n }\r\n return found\r\n}\r\n\r\nexports.includes = function (arr, item) {\r\n var found = false\r\n for (var i = 0; i < arr.length; i++) {\r\n if (arr[i] === item) {\r\n found = true\r\n break\r\n }\r\n }\r\n return found\r\n}\r\n\r\nexports.isNaN = function (n) {\r\n return Number.isNaN(n)\r\n}\r\n\r\nexports.keys = function (obj) {\r\n return Object.keys(obj)\r\n}\r\n\r\nexports.pullAt = function (arr, i) {\r\n var res = arr.splice(i, 1)\r\n return res\r\n}\r\n\r\nexports.unique = function (arr, i) {\r\n return arr.filter(function (elem, pos) {\r\n return arr.indexOf(elem) == pos\r\n })\r\n}\r\n","// Module to enumerate all CFG symbols for the human language for time\r\n\r\n/**\r\n * Module Dependencies\r\n */\r\n\r\nvar maps = require('./maps.json')\r\nvar util = require('./util')\r\n\r\n/**\r\n * Constructors for all types of symbols\r\n */\r\nvar symbolConstructors = {\r\n op: op,\r\n c: c,\r\n r: r,\r\n n: n,\r\n t: T,\r\n dt: T,\r\n T: T,\r\n f: f,\r\n o: o,\r\n rT: rT,\r\n cT: cT,\r\n}\r\n\r\n/**\r\n * Export `symbol`\r\n */\r\n\r\nmodule.exports = symbol\r\n\r\n/**\r\n * The symbol constructor, given a string, lemmatize it, then return a symbol from {∅=null,op,c,r,n,t,dt,T,f}.\r\n * i.e. str -> parseFloat(str) -> new n(str) -> return\r\n * or str -> lemma(str) -> new (symbol-value) -> return\r\n * @param {string} str the input string\r\n * @return {*} The object from the class of symbols\r\n * @example\r\n * symbol('90')\r\n * // => n { value: 10 }\r\n * symbol('hour')\r\n * // a
          time difference object\r\n * // => dt { h: '1' }\r\n * symbol('tonight')\r\n * // or equivalently, takes the T string too\r\n * symbol('t:=9h,dt:12h')\r\n * // a T object containing ,
          \r\n * // => T { t: t { h: '=9' }, dt: dt { h: '12' } }\r\n * symbol('unrecognized')\r\n * // an unrecognized string yields the null symbol ∅\r\n * // => null\r\n */\r\nfunction symbol (str) {\r\n var s\r\n if (str == null) {\r\n // null gets null\r\n s = null\r\n } else if (str['start'] && str['end']) {\r\n // range: with 'start' and 'end'\r\n s = new symbolConstructors['rT'](str)\r\n } else if (parseFloat(str) == str) {\r\n // 'n'\r\n s = new symbolConstructors['n'](str)\r\n } else if (str.match(util.reT)) {\r\n // if is of the T string format t:,dt:\r\n s = str.match(/\\s+/g) ? null : new symbolConstructors['T'](str)\r\n } else {\r\n var lem = util.lemma(str)\r\n s = lem.name ? new symbolConstructors[lem.name](lem.value, lem.name) : null\r\n // set the canonical word from lemma\r\n if (s) { s.canon = lem.canon }\r\n // set the original token for reference\r\n }\r\n if (s) { s.token = str }\r\n return s\r\n}\r\n\r\n// console.log(symbol('10'))\r\n// console.log(symbol('hour'))\r\n// console.log(symbol('tonight'))\r\n// console.log(symbol('t:=9h,dt:12h'))\r\n// console.log(symbol('unrecognized'))\r\n\r\n// ///////////////////\r\n// the CFG symbols //\r\n// ///////////////////\r\n\r\n/**\r\n * The op for arithmetic operator.\r\n * note that since scaling(*,/) is very rare, we omit its implementation for now.\r\n */\r\nfunction op (value) {\r\n this.value = value\r\n}\r\n\r\n/**\r\n * The origin operator.\r\n */\r\nfunction o (value) {\r\n this.value = value\r\n}\r\n\r\n/**\r\n * The range operator.\r\n */\r\nfunction r (value) {\r\n this.value = value\r\n}\r\n\r\n/**\r\n * The cron operator.\r\n */\r\nfunction c (value) {\r\n this.value = value\r\n}\r\n\r\n/**\r\n * The n number. Calls parseFloat.\r\n */\r\nfunction n (value) {\r\n this.value = parseFloat(value)\r\n}\r\n\r\n/**\r\n * The t for time t, i.e. a point in the timeline\r\n * units: ms, s, m, h, d, w, M, y\r\n * All values are string, to represent the \"=\" default in the units. so when performing numerical operation, use parseFloat.\r\n * @example\r\n * new t(undefined)\r\n * new t(\"\")\r\n * // => t {}\r\n * new t(\"7h30m\")\r\n * // => t { h: '7', m: '30' }\r\n * new t(\"7h=30m\")\r\n * // => t { h: '7', m: '=30' }\r\n */\r\nfunction t (value) {\r\n // guard against falsy input\r\n if (!value) {\r\n return null\r\n }\r\n // 1. see if unit is prepended with \"=\" for default, or set to ''\r\n // 2. then consume chunks of like \"30m\"\r\n while (value) {\r\n var isDefault = (value.match(/^=/) || [])[0] || ''\r\n value = value.replace(/^=/, '')\r\n // default number is \"1\"\r\n var number = (value.match(/^\\-?\\d+(\\.\\d+)?/) || [])[0] || '1'\r\n value = value.replace(/^\\-?\\d+(\\.\\d+)?/, '')\r\n var unit = (value.match(/^[a-zA-Z]+/) || [])[0]\r\n value = value.replace(/^[a-zA-Z]+/, '')\r\n // prepend the number (string) with isDefault, i.e. \"=\" or \"\"\r\n this[unit] = isDefault + number\r\n }\r\n}\r\n\r\n/**\r\n * The dt for time t, i.e. a displacement in the timeline\r\n * units: ms, s, m, h, d, w, M, y\r\n * All values are string, to represent the \"=\" default in the units. so when performing numerical operation, use parseFloat.\r\n * Same keys as to allow for component-wise operation, e.g. t + dt = { ms+(d)ms, s+(d)s, ... }\r\n */\r\nfunction dt (value) {\r\n // guard against falsy input\r\n if (!value) {\r\n return null\r\n }\r\n // 1. see if unit is prepended with \"=\" for default, or set to ''\r\n // 2. then consume chunks of like \"30m\"\r\n while (value) {\r\n var isDefault = (value.match(/^=/) || [])[0] || ''\r\n value = value.replace(/^=/, '')\r\n // default number is \"1\"\r\n var number = (value.match(/^\\-?\\d+(\\.\\d+)?/) || [])[0] || '1'\r\n value = value.replace(/^\\-?\\d+(\\.\\d+)?/, '')\r\n var unit = (value.match(/^[a-zA-Z]+/) || [])[0]\r\n value = value.replace(/^[a-zA-Z]+/, '')\r\n // prepend the number (string) with isDefault, i.e. \"=\" or \"\"\r\n this[unit] = isDefault + number\r\n }\r\n}\r\n\r\n// console.log(new t(undefined))\r\n// console.log(new t(\"\"))\r\n// console.log(new t(\"7h30m\"))\r\n// console.log(new t(\"=7h30m\"))\r\n// console.log(new t().constructor.name)\r\n\r\n/**\r\n * The T, implementation-specific, is a linear combination of and
          .\r\n * Used to capture the human Ts, e.g. noon, afternoon, dawn, evening, today, tonight, Sunday, fortnight, weekdays, weekends, christmas, spring, summer, holidays etc.\r\n * To specify T in maps.json, follow the syntax:\r\n * `:` means \"set\", `=` means \"default\", use t:,dt: for the symbol-value, e.g. \"t:=7h,dt:0h\"\r\n * evening ~ t:=7h,dt:12h, read as \"t set to default 7h, dt set to 12h\"\r\n * later ~ t:,dt:=3h, read as \"t set to nothing, dt set to default 3h\"\r\n * beware, \"\" and \"0\" are diferent, the former is empty, the later a numerical value.\r\n * @param {string} value from the Symbol.\r\n * @param {string} [name] from the Symbol.\r\n * @example\r\n * var T = new symbol(\"t:=7h,dt:0h\")\r\n * // => T { t: t { h: '=7' }, dt: dt { h: '0' } }\r\n * T.t\r\n * // => t { h: '=7' }\r\n * T.dt\r\n * // => t { h: '0' }\r\n */\r\nfunction T (value, name) {\r\n if (name == 't') {\r\n this.t = new t(value)\r\n this.dt = new dt()\r\n } else if (name == 'dt') {\r\n this.t = new t()\r\n this.dt = new dt(value)\r\n } else {\r\n var split = value.split(','),\r\n _t = split[0].split(':').pop(),\r\n _dt = split[1].split(':').pop()\r\n this.t = new t(_t)\r\n this.dt = new dt(_dt)\r\n }\r\n}\r\n\r\n// var T = new T(\"t:=7h,dt:0h\")\r\n// console.log(T.t)\r\n// console.log(T.dt)\r\n\r\n/**\r\n * The product of , gives a time interval\r\n */\r\nfunction rT (interval) {\r\n this.start = interval.start\r\n this.end = interval.end\r\n}\r\n\r\n/**\r\n * The f to capture frequency for .\r\n */\r\nfunction f (value) {\r\n this.value = value\r\n}\r\n\r\n/**\r\n * The product of or , gives a cron time\r\n */\r\nfunction cT (cron) {\r\n this.cron = cron\r\n}\r\n","// Module to tokenize a string into CFG symbols\r\n\r\n/**\r\n * Module Dependencies\r\n */\r\nvar util = require('./util')\r\nvar symbol = require('./symbol')\r\nvar maps = require('./maps.json')\r\n\r\n/**\r\n * regexes for Subnormal forms\r\n */\r\n\r\nvar re = {\r\n // 12/20 - 12/21, 2012/12 - 2013/12\r\n MMsDDdMMsDD: /(?!\\d{1,4}\\/\\d{1,4}\\s*-\\s*\\d{1,4}\\/\\d{1,4}\\/)(\\d{1,4})\\/(\\d{1,4})\\s*-\\s*(\\d{1,4})\\/(\\d{1,4})/g,\r\n // 12/22 - 23, 2012/10 - 12\r\n MMsDDdDD: /(?!\\d{1,4}\\/\\d{1,4}\\s*-\\s*\\d{1,4}\\/)(\\d{1,4})\\/(\\d{1,4})\\s*-\\s*(\\d{1,4})/g,\r\n // 12/24, 2012/12\r\n MMsDD: /(?!\\d{1,4}\\/\\d{1,4}\\/)(\\d{1,4})\\/(\\d{1,4})/g,\r\n // 05:30pm, 0530pm, 1730, 1730pm, 1730[re:h], remove the [re:h]\r\n hhcmm: /(\\s+\\d{1,2}|^\\d{1,2})\\:?(\\d{2})\\s*(\\S+)*/g\r\n}\r\n\r\n/**\r\n * Export `tokenize`\r\n */\r\n\r\nmodule.exports = tokenize\r\n\r\n/**\r\n * Parse and tokenize a string into array of valid CFG symbols, in these steps:\r\n * 1. parse normal forms\r\n * 2. parse subnormal forms\r\n * 3. parse english forms\r\n * @param {string} str The input string.\r\n * @return {JSON} {str, tokensIn, tokensOut, symbols}\r\n */\r\nfunction tokenize (str) {\r\n // split num from alphabets\r\n str = (' ' + str)\r\n .replace(/\\s+(\\d+)([a-zA-Z]+)/g, ' $1 $2')\r\n .replace(/\\s+([a-zA-Z]+)(\\d+)/g, ' $1 $2')\r\n .replace(/\\s+/g, ' ')\r\n .replace(/^\\s+/, '')\r\n // 1. 2. parse normal and subnormal forms\r\n var p = parseNormal12(str),\r\n pStr = p.str,\r\n tokens = pStr.split(' '),\r\n symbols = []\r\n // clean the non-normal tokens a bit, allow to be wrapped by words only\r\n for (var i = 0; i < tokens.length; i++) {\r\n if (!tokens[i].match(util.reT)) {\r\n tokens[i] = tokens[i].replace(/^\\W+/, '').replace(/\\W+$/, '')\r\n }\r\n }\r\n\r\n // 3. parse english forms\r\n for (var i = 0; i < tokens.length; i++) {\r\n var tok = tokens[i]\r\n var oneGram = tok,\r\n twoGram = tok + ' ' + (tokens[i + 1] || ''),\r\n oneSym = symbol(oneGram),\r\n twoSym = symbol(twoGram)\r\n if (twoSym && twoSym.value == oneSym.value) {\r\n // if lemmatization must happen for both,\r\n // pick the longer, skip next token\r\n // skip this once, reset skip\r\n i++\r\n symbols.push(symbol(twoGram))\r\n } else {\r\n symbols.push(symbol(oneGram))\r\n }\r\n }\r\n return {\r\n str: pStr,\r\n tokensOut: p.tokensOut,\r\n tokensIn: p.tokensIn,\r\n symbols: symbols\r\n }\r\n}\r\n\r\n/**\r\n * Run 1. parseNormal then 2. parseNormal2, return the parsed string with T-format tokens.\r\n * @private\r\n * @param {string} str The input string\r\n * @return {JSON} Parsed string\r\n */\r\nfunction parseNormal12 (str) {\r\n var p1 = parseNormal1(str)\r\n // find tokens that are purely normal, and reinject into string\r\n var p1TokensOut = p1.tokensOut.filter(notSubnormal)\r\n var p1Str = injectNormal(str, p1TokensOut)\r\n // now parse the subnormal\r\n var p2 = parseNormal2(p1Str, [], [])\r\n // the tokens that taken out, and their replacements, in order\r\n var pTokensOut = p1.tokensOut.concat(p2.tokensOut)\r\n var pTokensIn = p1.tokensIn.concat(p2.tokensIn)\r\n return {\r\n str: p2.str,\r\n tokensOut: pTokensOut,\r\n tokensIn: pTokensIn\r\n }\r\n}\r\n\r\n/**\r\n * 1. Parse normal forms. Try to parse and return a normal Date, parseable from new Date(str), by continuously trimming off its tail and retry until either get a valid date, or string runs out.\r\n * Doesn't parse string with length <5\r\n * @private\r\n * @param {string} str The input string.\r\n * @return {string} A Date in stdT string, or null.\r\n */\r\nfunction parseNormal1 (str) {\r\n // keep chopping off tail until either get a valid date, or string runs out\r\n // array of parsed date and the string consumed\r\n var tokensIn = [],\r\n tokensOut = []\r\n // ensure single spacing\r\n str = str.replace(/\\s+/g, ' ')\r\n // tokenize by space\r\n var strArr = str.split(/\\s+/g)\r\n\r\n // init the normalDate and head string used\r\n var normalDate = null,\r\n head = ''\r\n // do while there's still string to go\r\n while (strArr.length) {\r\n head = (head + ' ' + strArr.shift()).trim()\r\n try {\r\n normalDate = util.stdT(new Date(head))\r\n // Extend head: if parse successful, extend continuously until failure, then that's the longest parseable head string, ...\r\n var advanceHead = head + ' ' + strArr[0]\r\n while (1) {\r\n try {\r\n var advanceDate = util.stdT(new Date(advanceHead))\r\n if (advanceDate != 'Invalid Date') {\r\n // if advanceDate is parseable, set to current, update heads\r\n var normalDate = advanceDate\r\n head = head + ' ' + strArr.shift()\r\n advanceHead = advanceHead + ' ' + strArr[0]\r\n } else {\r\n break\r\n }\r\n } catch (e) {\r\n // when fail, just break\r\n break\r\n }\r\n }\r\n // Shrink head: from the whole parseable head ..., trim front till we get \r\n while (1) {\r\n try {\r\n if (util.stdT(new Date(head.replace(/^\\s*\\S+\\s*/, ''))) != normalDate) {\r\n // front token eaten causes change, dont update head\r\n break\r\n } else {\r\n // update head\r\n head = head.replace(/^\\s*\\S+\\s*/, '')\r\n }\r\n } catch (e) {\r\n break\r\n }\r\n }\r\n // only consider a valid parse if the parsed str is long enough\r\n if (head.length > 6) {\r\n tokensIn.push(normalDate)\r\n // get head = only, then reset\r\n tokensOut.push(head)\r\n }\r\n head = ''\r\n } catch (e) {}\r\n }\r\n return { tokensIn: tokensIn, tokensOut: tokensOut }\r\n}\r\n\r\n/**\r\n * 2. Parse subnormal forms after parseNormal. Gradually replace tokens of the input string while parseable.\r\n * @private\r\n */\r\nfunction parseNormal2 (str, tokensIn, tokensOut) {\r\n var m, res\r\n if (m = re.MMsDDdMMsDD.exec(str)) {\r\n // 12/20 - 12/21\r\n var yMd1 = yMdParse(m[1], m[2])\r\n var yMd2 = yMdParse(m[3], m[4])\r\n res = ' t:' + yMd1 + ',dt: - t:' + yMd2 + ',dt: '\r\n } else if (m = re.MMsDDdDD.exec(str)) {\r\n // 12/22 - 23\r\n var yMd1 = yMdParse(m[1], m[2])\r\n var yMd2 = yMdParse(m[1], m[3])\r\n res = ' t:' + yMd1 + ',dt: - t:' + yMd2 + ',dt: '\r\n } else if (m = re.MMsDD.exec(str)) {\r\n // if year\r\n var yMd = yMdParse(m[1], m[2])\r\n // 12/24\r\n res = ' t:' + yMd + ',dt: '\r\n } else if (m = re.hhcmm.exec(str)) {\r\n // 05:30pm, 0530pm, 1730, 1730pm, 1730[re:h], remove the [re:h]\r\n res = ' t:' + m[1].trim() + 'h' + m[2] + 'm' + ',dt: ' + (m[3] || '')\r\n } else {\r\n // exit recursion if hits here\r\n return {\r\n str: str,\r\n tokensIn: tokensIn,\r\n tokensOut: tokensOut\r\n }\r\n }\r\n // recurse down till no more substitution (CFG is not cyclic, so ok)\r\n tokensOut.push(m[0])\r\n tokensIn.push(res)\r\n str = parseNormal2(str.replace(m[0], res), tokensIn, tokensOut).str\r\n return {\r\n str: str,\r\n tokensIn: tokensIn,\r\n tokensOut: tokensOut\r\n }\r\n}\r\n\r\n// ////////////////////\r\n// Helper functions //\r\n// ////////////////////\r\n\r\n/**\r\n * Try to parse two tokens for T form into MM/dd, or MM/yyyy if either token hsa length 4.\r\n * @private\r\n * @param {string} token1\r\n * @param {string} token2\r\n * @return {string} in the form \r\n */\r\nfunction yMdParse (token1, token2) {\r\n var part0 = [token1, token2].filter(function (token) {\r\n return token.length == 4\r\n })\r\n var part1 = [token1, token2].filter(function (token) {\r\n return token.length != 4\r\n })\r\n var y = part0[0] ? part0[0] + 'y' : ''\r\n var M = part1[0] + 'M'\r\n var d = part1[1] ? part1[1] + 'd' : ''\r\n return y + M + d\r\n}\r\n\r\n/**\r\n * Check if the dateStr is strictly normal and not subnormal. Used to extract parseNormal2 overrides.\r\n * @private\r\n * @param {string} dateStr\r\n * @return {Boolean}\r\n */\r\nfunction notSubnormal (dateStr) {\r\n var subnormalStr = parseNormal2(dateStr, [], []).str\r\n // remove T and see if still has words\r\n var noT = subnormalStr.replace(/t\\:\\S*,dt\\:\\S*(\\s*-\\s*t\\:\\S*,dt\\:\\S*)?/, '')\r\n return /\\w+/g.exec(noT) != null\r\n}\r\n\r\n/**\r\n * Given a string and array of its parsed phrases, convert them into T stdT then T format, and inject into the original string, return.\r\n * @private\r\n * @param {string} str The original string.\r\n * @param {Array} parsedArr The parsed phrases from the string.\r\n * @return {string} The string with parsed phrases replaced in T format.\r\n *\r\n * @example\r\n * injectNormal('05 October 2011 14:48 UTC 08/11 2020', [ '05 October 2011 14:48 UTC', '08/11 2020' ])\r\n * // => 't:2011y10M05d14h48m00.000s,dt: t:2020y08M11d04h00m00.000s,dt: '\r\n */\r\nfunction injectNormal (str, parsedArr) {\r\n for (var i = 0; i < parsedArr.length; i++) {\r\n var parsed = parsedArr[i]\r\n var T = util.stdTtoT(util.stdT(new Date(parsed)))\r\n str = str.replace(parsed, T)\r\n }\r\n return str\r\n}\r\n","/**\r\n * Module Dependencies\r\n */\r\n\r\nvar _ = require('./subdash')\r\nvar maps = require('./maps.json')\r\n\r\n/**\r\n * The T string regex, e.g. \"t:=9h,dt:12h\", to encode T =
          . Is case sensitive.\r\n */\r\n\r\nvar reT = /t\\:\\S*,dt\\:\\S*/g\r\n\r\n/**\r\n * The ordering of time units, large to small,\r\n * 'mer' is the meridiem, 0 for am, 1 for pm\r\n * and the units used for carrying\r\n */\r\n\r\nvar timeUnitOrder = ['y', 'M', 'w', 'd', 'h', 'm', 's', 'ms']\r\nvar canonTimeUnitOrder = []\r\nfor (var i = 0; i < timeUnitOrder.length; i++) {\r\n var unit = timeUnitOrder[i]\r\n canonTimeUnitOrder.push(lemma(unit).canon)\r\n}\r\nvar tOrdering = ['y', 'M', 'd', 'h', 'm', 's']\r\nvar tFactor = [365, 30, 24, 60, 60]\r\n\r\n/**\r\n * Delimiters for stdT string\r\n */\r\n\r\nvar stdTdelim = ['-', '-', ' ', ':', ':', '']\r\n\r\n/**\r\n * Export `util`\r\n */\r\n\r\nmodule.exports = {\r\n TtoStdT: TtoStdT,\r\n TtoStr: TtoStr,\r\n delimSyms: delimSyms,\r\n hasSym: hasSym,\r\n has_dt: has_dt,\r\n has_pureTimeUnit: has_pureTimeUnit,\r\n has_t: has_t,\r\n highestOverride: highestOverride,\r\n isSym: isSym,\r\n largestUnit: largestUnit,\r\n lemma: lemma,\r\n nextLargestUnit: nextLargestUnit,\r\n nowT: nowT,\r\n opType: opType,\r\n orderChunks: orderChunks,\r\n removeTnPlus: removeTnPlus,\r\n reT: reT,\r\n sName: sName,\r\n splitByArr: splitByArr,\r\n splitSyms: splitSyms,\r\n splitT: splitT,\r\n stdT: stdT,\r\n stdTdelim: stdTdelim,\r\n stdTtoT: stdTtoT,\r\n tOrdering: tOrdering,\r\n timeUnitOrder: timeUnitOrder,\r\n canonTimeUnitOrder: canonTimeUnitOrder,\r\n tokenToStr: tokenToStr,\r\n unparsedStr: unparsedStr,\r\n}\r\n\r\n/**\r\n * Convert a T string to stdT string, with default filled by nowT().\r\n * @example\r\n * TtoStdT('t:10M05d14h48m00.000s,dt:')\r\n * // => 2016-10-05 14:48:00\r\n */\r\nfunction TtoStdT (str, offset) {\r\n if (typeof str != 'string') {\r\n str = TtoStr(str)\r\n }\r\n var nowStr = nowT(offset),\r\n nowArr = splitT(nowStr),\r\n strArr = splitT(str)\r\n var resArr = []\r\n for (var i = 0; i < nowArr.length; i++) {\r\n var val = parseFloat(strArr[i])\r\n if (Number.isNaN(val)) { val = parseFloat(nowArr[i]) }\r\n resArr.push(val)\r\n }\r\n var resStr = ''\r\n for (var i = 0; i < stdTdelim.length; i++) {\r\n var num = resArr[i].toString()\r\n // e.g. '5.123' tends to be '05.123', fix it\r\n var predecimal = /(\\d+)(\\.\\d+)?/.exec(num)[1],\r\n postdecimal = /(\\d+)\\.?(\\d+)?/.exec(num)[2]\r\n if (predecimal.length == 1) { num = '0' + num }\r\n if (postdecimal != null) {\r\n for (var j = 0; j < 3 - postdecimal.length; j++) {\r\n num = num + '0'\r\n }\r\n }\r\n resStr += (num + stdTdelim[i])\r\n }\r\n // console.log('resStr', resStr)\r\n return resStr\r\n}\r\n// console.log(TtoStdT('t:10M05d14h48m00.010s,dt:'))\r\n\r\n/**\r\n * Convert a T symbol into its T string.\r\n */\r\nfunction TtoStr (T) {\r\n var tStr = 't:',\r\n dtStr = ',dt:'\r\n for (var i = 0; i < timeUnitOrder.length; i++) {\r\n var tUnit = timeUnitOrder[i]\r\n // if unit exist, write to str\r\n if (T['t'][tUnit] != undefined) {\r\n tStr += T['t'][tUnit] + tUnit\r\n }\r\n if (T['dt'][tUnit] != undefined) {\r\n dtStr += T['dt'][tUnit] + tUnit\r\n }\r\n }\r\n return tStr + dtStr\r\n}\r\n\r\n/**\r\n * Delimit the array of timeChunk symbols by combining consecutive nulls (>3) into one, and dumping those shorter. Result is then delimited by 'trinull'.\r\n * @param {Array} syms Of parsed symbols aka time chunks.\r\n * @return {Array} symbols delimited by 'trinull'\r\n */\r\nfunction delimSyms (syms) {\r\n // 1.\r\n // contract the nulls into trinulls in a single array\r\n var newSyms = [],\r\n count = 0\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i]\r\n if (s == null) {\r\n count++\r\n } else {\r\n if (count > 2) {\r\n newSyms.push('trinull')\r\n }\r\n newSyms.push(s)\r\n count = 0\r\n }\r\n }\r\n return newSyms\r\n}\r\n// console.log(delimSyms([1, 2, null, null, null, 3]))\r\n\r\n/**\r\n * Check if arr has symbol whose name is listen in symArr.\r\n * @param {Array} arr Array of symbols.\r\n * @param {Array} symArr Array of symbol names.\r\n * @return {Boolean}\r\n */\r\nfunction hasSym (syms, symArr) {\r\n var found = false\r\n for (var i = 0; i < syms.length; i++) {\r\n if (isSym(syms[i], symArr)) {\r\n found = true\r\n break\r\n }\r\n }\r\n return found\r\n}\r\n\r\n/**\r\n * Check if T.dt is not empty\r\n */\r\nfunction has_dt (T) {\r\n return _.keys(T.dt).length > 0\r\n}\r\n\r\n/**\r\n * Check if T has only t, dt with units from timeUnitOrder\r\n */\r\nfunction has_pureTimeUnit (T) {\r\n var dt = T.dt,\r\n t = T.t\r\n var pure = true\r\n for (var k in dt) {\r\n if (!_.includes(timeUnitOrder, k)) {\r\n pure = false\r\n break\r\n }\r\n }\r\n for (var k in t) {\r\n if (!_.includes(timeUnitOrder, k)) {\r\n pure = false\r\n break\r\n }\r\n }\r\n return pure\r\n}\r\n\r\n/**\r\n * Check if T.t is not empty\r\n */\r\nfunction has_t (T) {\r\n return _.keys(T.t).length > 0\r\n}\r\n\r\n/**\r\n * find the lowest overridable unit in t or dt\r\n */\r\nfunction highestOverride (t) {\r\n var lowestOverable = null\r\n for (var i = 0; i < tOrdering.length; i++) {\r\n var unit = tOrdering[i]\r\n if (/^=/.exec(t[unit])) {\r\n lowestOverable = unit\r\n break\r\n }\r\n }\r\n return lowestOverable\r\n}\r\n\r\n/**\r\n * Check if arr has the symbol name of s.\r\n * @param {symbol} s symbol object\r\n * @param {Array} arr Of string symbol names\r\n * @return {Boolean}\r\n */\r\nfunction isSym (s, arr) {\r\n return _.includes(arr, sName(s))\r\n}\r\n\r\n/**\r\n * Find the largest enumerated unit in T.t, or if none, in T.dt\r\n */\r\nfunction largestUnit (T) {\r\n var lu = _.find(tOrdering, function (unit) {\r\n return T.t[unit]\r\n })\r\n if (lu == null) {\r\n lu = _.find(tOrdering, function (unit) {\r\n return T.dt[unit]\r\n })\r\n }\r\n return lu\r\n}\r\n\r\n/**\r\n * Return the lemma symbol of a word string, i.e. the name and value of the symbol it belongs to in the CFG. Uses ./maps.json.\r\n * NLP Lemmatization refers here: htp://nlp.stanford.edu/Ir-book/html/htmledition/stemming-and-lemmatization-1.html. Inflections = all possible alternative words of a lemma.\r\n * @param {string} str To lemmatize.\r\n * @return {JSON} Lemma symbol {name, value} for CFG\r\n * @example\r\n * lemma('zero')\r\n * // => { value: '0', name: 'n' }\r\n */\r\nfunction lemma (str) {\r\n // change all to lower case except for 'M' for month\r\n str = (str == 'M') ? str : str.toLowerCase()\r\n var lem = {},\r\n name = null,\r\n value = null,\r\n canon = str\r\n var mapsKeys = _.keys(maps)\r\n for (var i = 0; i < mapsKeys.length; i++) {\r\n var sMap = maps[mapsKeys[i]],\r\n sMapKeys = _.keys(sMap)\r\n for (var j = 0; j < sMapKeys.length; j++) {\r\n var inflectionArr = sMap[sMapKeys[j]]\r\n if (_.includes(inflectionArr, str)) {\r\n // set the canonical form as the first in inflectionArr\r\n canon = inflectionArr[0]\r\n // if str is in inflections\r\n value = sMapKeys[j]\r\n break\r\n }\r\n }\r\n if (value != null) {\r\n name = mapsKeys[i]\r\n break\r\n }\r\n }\r\n // set value\r\n lem['name'] = name\r\n lem['value'] = value\r\n lem['canon'] = canon\r\n return lem\r\n}\r\n// console.log(lemma('zero'))\r\n\r\n/**\r\n * Find the next largest enumerated unit in T.t, or if none, in T.dt\r\n */\r\nfunction nextLargestUnit (T) {\r\n var lu = largestUnit(T)\r\n return tOrdering[tOrdering.indexOf(lu) - 1]\r\n}\r\n\r\n/**\r\n * Convenient method to get current time in T format.\r\n * @return {string} T format string.\r\n */\r\nfunction nowT (offset) {\r\n var dateStr = (offset == undefined) ? stdT(new Date()) : stdT(offset)\r\n return stdTtoT(dateStr)\r\n}\r\n\r\n/**\r\n * Determine the op type based on arguments\r\n */\r\nfunction opType (L, op, R) {\r\n var LsName = sName(L) || '',\r\n RsName = sName(R) || ''\r\n var opsName = sName(op)\r\n if (opsName != 'o' && opsName != 'r' && opsName != 'c') { opsName = '' }\r\n return LsName + opsName + RsName\r\n}\r\n\r\n/**\r\n * Order time chunks by not containing T, short to long, then containing T, short to long. Used for .pop() to get the candidate timechunk for parsing.\r\n */\r\nfunction orderChunks (matrix) {\r\n // 2.\r\n // ok partition first then sort\r\n var hasNoT = matrix.filter(function (row) {\r\n return !hasSym(row, ['T'])\r\n })\r\n var hasT = matrix.filter(function (row) {\r\n return hasSym(row, ['T'])\r\n })\r\n // matrix, sorted short to long\r\n var lengthSortedNotTMat = hasNoT.sort(function (a, b) {\r\n return a.length - b.length\r\n })\r\n var lengthSortedTMat = hasT.sort(function (a, b) {\r\n return a.length - b.length\r\n })\r\n // 3.1 3.2 3.3\r\n return lengthSortedNotTMat.concat(lengthSortedTMat)\r\n}\r\n\r\n/**\r\n * !remove the defaul that is 'plus' between , for defaulting to plus.\r\n * !is a quickfix for mat\r\n */\r\nfunction removeTnPlus (syms) {\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i]\r\n if (isSym(s, ['op']) && s.value == 'plus' && isSym(syms[i + 1], ['n'])) {\r\n syms.splice(i, 1)\r\n }\r\n }\r\n return syms\r\n}\r\n\r\n/**\r\n * Return the name of a symbol: {op,c,r,n,T,f}\r\n * @param {Symbol} symbol A CFG symbol.\r\n * @return {string} name of the symbol.\r\n */\r\nfunction sName (symbol) {\r\n return symbol ? symbol.constructor.name : null\r\n}\r\n\r\n/**\r\n * Split a string by an array of tokens.\r\n * @param {string} str The input string.\r\n * @param {Array} tokenArr Array of tokens to split the string by.\r\n * @return {Array} The split string array.\r\n */\r\nfunction splitByArr (str, tokenArr) {\r\n var delim = '#{REPLACE}'\r\n // inject into tokens\r\n for (var i = 0; i < tokenArr.length; i++) {\r\n var token = tokenArr[i]\r\n str = str.replace(token, delim)\r\n }\r\n // split into arr\r\n return str.split(delim)\r\n}\r\n// console.log(splitByArr('lorem 1 ipsum 2 dolor 3', [1,2,3]))\r\n\r\n/**\r\n * Split an array of symbols by delimiter into matrix.\r\n * @param {Array} syms The input array\r\n * @param {string|symbol} delimiter To split the array by\r\n * @return {matrix} delimited arrays.\r\n */\r\nfunction splitSyms (syms, delimiter) {\r\n // split the single array into matrix\r\n var matrix = [],\r\n newRow = []\r\n for (var i = 0; i < syms.length; i++) {\r\n var s = syms[i]\r\n if (s == delimiter || sName(s) == delimiter) {\r\n // delimit and push to matrix\r\n matrix.push(newRow)\r\n newRow = []\r\n } else if (i == syms.length - 1) {\r\n // edge case, push res\r\n newRow.push(s)\r\n matrix.push(newRow)\r\n } else {\r\n // accumulate in row\r\n newRow.push(s)\r\n }\r\n }\r\n return matrix\r\n}\r\n\r\n/**\r\n * Split a T string into array of [_y, _M, _d, _h, _m, _s]\r\n */\r\nfunction splitT (str) {\r\n if (!str.match(reT)) {\r\n return null\r\n }\r\n var _y = (/(\\d+(\\.\\d+)?)y/.exec(str) || [])[1],\r\n _M = (/(\\d+(\\.\\d+)?)M/.exec(str) || [])[1],\r\n _w = (/(\\d+(\\.\\d+)?)w/.exec(str) || [])[1],\r\n _d = (/(\\d+(\\.\\d+)?)d/.exec(str) || [])[1],\r\n _h = (/(\\d+(\\.\\d+)?)h/.exec(str) || [])[1],\r\n _m = (/(\\d+(\\.\\d+)?)m/.exec(str) || [])[1],\r\n _s = (/(\\d+(\\.\\d+)?)s/.exec(str) || [])[1]\r\n\r\n // The Time Object\r\n var TO = {\r\n y: _y,\r\n M: _M,\r\n w: _w,\r\n d: _d,\r\n h: _h,\r\n m: _m,\r\n s: _s\r\n }\r\n // do the carries\r\n TO = carry(TO)\r\n\r\n // compose results\r\n var res = []\r\n for (var i = 0; i < tOrdering.length; i++) {\r\n var k = tOrdering[i]\r\n res.push(TO[k])\r\n }\r\n return res\r\n}\r\n\r\n/**\r\n * Function to properly down- and up- carry Time Object\r\n * 1. dumpweek, 2. carryDown, 3. carryUp\r\n */\r\nfunction carry (TO) {\r\n TO = dumpWeek(TO)\r\n TO = carryDown(TO)\r\n TO = carryUp(TO)\r\n return TO\r\n}\r\n\r\n/**\r\n * 1. dumpWeek\r\n */\r\nfunction dumpWeek (TO) {\r\n var _w = parseFloat(TO['w'] || '0'),\r\n _d = parseFloat(TO['d'] || '0')\r\n TO['d'] = _d + (_w * 7)\r\n delete TO['w']\r\n return TO\r\n}\r\n\r\n/**\r\n * 2. carryDown\r\n */\r\nfunction carryDown (TO) {\r\n // shall reverse the ordering and factors for opp direction\r\n var ordering = tOrdering,\r\n factor = tFactor\r\n var carry = 0\r\n for (var i = 0; i < ordering.length; i++) {\r\n // the time unit in the ordering\r\n var u = ordering[i]\r\n // skip the rest of loopbody if this unit is undefined and nothing to carry\r\n if (TO[u] == undefined && carry == 0) {\r\n continue\r\n }\r\n // carry\r\n TO[u] = parseFloat(TO[u] || '0') + carry\r\n // dont go in after the last one\r\n if (i == ordering.length - 1) {\r\n // overlong s decimal will be fixed in TtoStdT\r\n break\r\n }\r\n var decimal = parseFloat(TO[u] || '0') - parseInt(TO[u] || '0')\r\n if (decimal > 0) {\r\n // set next carry\r\n carry = decimal * factor[i]\r\n // update current u\r\n TO[u] = parseInt(TO[u])\r\n } else {\r\n // else reset to 0 if no carry\r\n carry = 0\r\n }\r\n }\r\n return TO\r\n}\r\n\r\n/**\r\n * 3. carryUp\r\n */\r\nfunction carryUp (TO) {\r\n // shall reverse the ordering and factors for opp direction\r\n var ordering = tOrdering.slice().reverse(),\r\n factor = tFactor.slice().reverse()\r\n var carry = 0\r\n for (var i = 0; i < ordering.length; i++) {\r\n // the time unit in the ordering\r\n var u = ordering[i]\r\n // skip the rest of loopbody if this unit is undefined and nothing to carry\r\n if (TO[u] == undefined && carry == 0) {\r\n continue\r\n }\r\n // carry\r\n TO[u] = parseFloat(TO[u] || '0') + carry\r\n // dont go in after the last one\r\n if (i == ordering.length - 1) {\r\n break\r\n }\r\n var deci = parseInt(parseFloat(TO[u] || '0') / factor[i])\r\n if (deci > 0) {\r\n // set next carry\r\n carry = deci\r\n // update current u\r\n TO[u] = parseFloat(TO[u] || '0') % factor[i]\r\n } else {\r\n // else reset to 0 if no carry\r\n carry = 0\r\n }\r\n }\r\n return TO\r\n}\r\n\r\n/**\r\n * Take a date or string, parse it into standard format as yyyy-MM-dd hh:mm:ss.sss\r\n */\r\nfunction stdT (date) {\r\n if (typeof date == 'string') {\r\n date = new Date(date)\r\n }\r\n var _y = date.getFullYear(),\r\n _M = date.getMonth() + 1,\r\n _d = date.getDate(),\r\n _date = [_y, _M, _d].join('-')\r\n _time = /(\\d\\S+)/.exec(date.toTimeString())[1],\r\n format = _date + ' ' + _time\r\n return format\r\n}\r\n\r\n/**\r\n * Convert std time string to T string.\r\n * @example\r\n * stdTtoT('2011-10-05T14:48:00.000')\r\n * // => 't:2011y10M05d14h48m00.000s,dt:'\r\n */\r\nfunction stdTtoT (str) {\r\n var datetime = str.split(' ')\r\n var date = datetime[0].split('-'),\r\n time = datetime[1].split(':')\r\n return 't:' + date[0] + 'y' + date[1] + 'M' + date[2] + 'd' + time[0] + 'h' + time[1] + 'm' + time[2] + 's,dt:'\r\n}\r\n// console.log(stdTtoT('2011-10-05T14:48:00.000Z'))\r\n\r\n/**\r\n * Recombine array of symbols back into str\r\n */\r\nfunction tokenToStr (syms) {\r\n var tokens = []\r\n for (var i = 0; i < syms.length; i++) {\r\n tokens.push(syms[i].token)\r\n }\r\n return tokens.join(' ')\r\n}\r\n\r\n/**\r\n * Extract unparsedTokens from str and parsed syms then join them\r\n */\r\nfunction unparsedStr (str, syms) {\r\n var inputTokens = str.split(/\\s+/)\r\n var tokens = []\r\n for (var i = 0; i < syms.length; i++) {\r\n if (syms[i] == null) {\r\n tokens.push(inputTokens[i])\r\n }\r\n }\r\n return tokens.join(' ')\r\n}\r\n","/**\r\n * This is the web browser implementation of `debug()`.\r\n *\r\n * Expose `debug()` as the module.\r\n */\r\n\r\nexports = module.exports = require('./debug');\r\nexports.log = log;\r\nexports.formatArgs = formatArgs;\r\nexports.save = save;\r\nexports.load = load;\r\nexports.useColors = useColors;\r\nexports.storage = 'undefined' != typeof chrome\r\n && 'undefined' != typeof chrome.storage\r\n ? chrome.storage.local\r\n : localstorage();\r\n\r\n/**\r\n * Colors.\r\n */\r\n\r\nexports.colors = [\r\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\r\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\r\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\r\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\r\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\r\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\r\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\r\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\r\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\r\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\r\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\r\n];\r\n\r\n/**\r\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\r\n * and the Firebug extension (any Firefox version) are known\r\n * to support \"%c\" CSS customizations.\r\n *\r\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\r\n */\r\n\r\nfunction useColors() {\r\n // NB: In an Electron preload script, document will be defined but not fully\r\n // initialized. Since we know we're in Chrome, we'll just detect this case\r\n // explicitly\r\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\r\n return true;\r\n }\r\n\r\n // Internet Explorer and Edge do not support colors.\r\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\r\n return false;\r\n }\r\n\r\n // is webkit? http://stackoverflow.com/a/16459606/376773\r\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\r\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\r\n // is firebug? http://stackoverflow.com/a/398120/376773\r\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\r\n // is firefox >= v31?\r\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\r\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\r\n // double check webkit in userAgent just in case we are in a worker\r\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\r\n}\r\n\r\n/**\r\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\r\n */\r\n\r\nexports.formatters.j = function(v) {\r\n try {\r\n return JSON.stringify(v);\r\n } catch (err) {\r\n return '[UnexpectedJSONParseError]: ' + err.message;\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Colorize log arguments if enabled.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction formatArgs(args) {\r\n var useColors = this.useColors;\r\n\r\n args[0] = (useColors ? '%c' : '')\r\n + this.namespace\r\n + (useColors ? ' %c' : ' ')\r\n + args[0]\r\n + (useColors ? '%c ' : ' ')\r\n + '+' + exports.humanize(this.diff);\r\n\r\n if (!useColors) return;\r\n\r\n var c = 'color: ' + this.color;\r\n args.splice(1, 0, c, 'color: inherit')\r\n\r\n // the final \"%c\" is somewhat tricky, because there could be other\r\n // arguments passed either before or after the %c, so we need to\r\n // figure out the correct index to insert the CSS into\r\n var index = 0;\r\n var lastC = 0;\r\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\r\n if ('%%' === match) return;\r\n index++;\r\n if ('%c' === match) {\r\n // we only are interested in the *last* %c\r\n // (the user may have provided their own)\r\n lastC = index;\r\n }\r\n });\r\n\r\n args.splice(lastC, 0, c);\r\n}\r\n\r\n/**\r\n * Invokes `console.log()` when available.\r\n * No-op when `console.log` is not a \"function\".\r\n *\r\n * @api public\r\n */\r\n\r\nfunction log() {\r\n // this hackery is required for IE8/9, where\r\n // the `console.log` function doesn't have 'apply'\r\n return 'object' === typeof console\r\n && console.log\r\n && Function.prototype.apply.call(console.log, console, arguments);\r\n}\r\n\r\n/**\r\n * Save `namespaces`.\r\n *\r\n * @param {String} namespaces\r\n * @api private\r\n */\r\n\r\nfunction save(namespaces) {\r\n try {\r\n if (null == namespaces) {\r\n exports.storage.removeItem('debug');\r\n } else {\r\n exports.storage.debug = namespaces;\r\n }\r\n } catch(e) {}\r\n}\r\n\r\n/**\r\n * Load `namespaces`.\r\n *\r\n * @return {String} returns the previously persisted debug modes\r\n * @api private\r\n */\r\n\r\nfunction load() {\r\n var r;\r\n try {\r\n r = exports.storage.debug;\r\n } catch(e) {}\r\n\r\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\r\n if (!r && typeof process !== 'undefined' && 'env' in process) {\r\n r = process.env.DEBUG;\r\n }\r\n\r\n return r;\r\n}\r\n\r\n/**\r\n * Enable namespaces listed in `localStorage.debug` initially.\r\n */\r\n\r\nexports.enable(load());\r\n\r\n/**\r\n * Localstorage attempts to return the localstorage.\r\n *\r\n * This is necessary because safari throws\r\n * when a user disables cookies/localstorage\r\n * and you attempt to access it.\r\n *\r\n * @return {LocalStorage}\r\n * @api private\r\n */\r\n\r\nfunction localstorage() {\r\n try {\r\n return window.localStorage;\r\n } catch (e) {}\r\n}\r\n","\r\n/**\r\n * This is the common logic for both the Node.js and web browser\r\n * implementations of `debug()`.\r\n *\r\n * Expose `debug()` as the module.\r\n */\r\n\r\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\r\nexports.coerce = coerce;\r\nexports.disable = disable;\r\nexports.enable = enable;\r\nexports.enabled = enabled;\r\nexports.humanize = require('ms');\r\n\r\n/**\r\n * Active `debug` instances.\r\n */\r\nexports.instances = [];\r\n\r\n/**\r\n * The currently active debug mode names, and names to skip.\r\n */\r\n\r\nexports.names = [];\r\nexports.skips = [];\r\n\r\n/**\r\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\r\n *\r\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\r\n */\r\n\r\nexports.formatters = {};\r\n\r\n/**\r\n * Select a color.\r\n * @param {String} namespace\r\n * @return {Number}\r\n * @api private\r\n */\r\n\r\nfunction selectColor(namespace) {\r\n var hash = 0, i;\r\n\r\n for (i in namespace) {\r\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n\r\n return exports.colors[Math.abs(hash) % exports.colors.length];\r\n}\r\n\r\n/**\r\n * Create a debugger with the given `namespace`.\r\n *\r\n * @param {String} namespace\r\n * @return {Function}\r\n * @api public\r\n */\r\n\r\nfunction createDebug(namespace) {\r\n\r\n var prevTime;\r\n\r\n function debug() {\r\n // disabled?\r\n if (!debug.enabled) return;\r\n\r\n var self = debug;\r\n\r\n // set `diff` timestamp\r\n var curr = +new Date();\r\n var ms = curr - (prevTime || curr);\r\n self.diff = ms;\r\n self.prev = prevTime;\r\n self.curr = curr;\r\n prevTime = curr;\r\n\r\n // turn the `arguments` into a proper Array\r\n var args = new Array(arguments.length);\r\n for (var i = 0; i < args.length; i++) {\r\n args[i] = arguments[i];\r\n }\r\n\r\n args[0] = exports.coerce(args[0]);\r\n\r\n if ('string' !== typeof args[0]) {\r\n // anything else let's inspect with %O\r\n args.unshift('%O');\r\n }\r\n\r\n // apply any `formatters` transformations\r\n var index = 0;\r\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\r\n // if we encounter an escaped % then don't increase the array index\r\n if (match === '%%') return match;\r\n index++;\r\n var formatter = exports.formatters[format];\r\n if ('function' === typeof formatter) {\r\n var val = args[index];\r\n match = formatter.call(self, val);\r\n\r\n // now we need to remove `args[index]` since it's inlined in the `format`\r\n args.splice(index, 1);\r\n index--;\r\n }\r\n return match;\r\n });\r\n\r\n // apply env-specific formatting (colors, etc.)\r\n exports.formatArgs.call(self, args);\r\n\r\n var logFn = debug.log || exports.log || console.log.bind(console);\r\n logFn.apply(self, args);\r\n }\r\n\r\n debug.namespace = namespace;\r\n debug.enabled = exports.enabled(namespace);\r\n debug.useColors = exports.useColors();\r\n debug.color = selectColor(namespace);\r\n debug.destroy = destroy;\r\n\r\n // env-specific initialization logic for debug instances\r\n if ('function' === typeof exports.init) {\r\n exports.init(debug);\r\n }\r\n\r\n exports.instances.push(debug);\r\n\r\n return debug;\r\n}\r\n\r\nfunction destroy () {\r\n var index = exports.instances.indexOf(this);\r\n if (index !== -1) {\r\n exports.instances.splice(index, 1);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Enables a debug mode by namespaces. This can include modes\r\n * separated by a colon and wildcards.\r\n *\r\n * @param {String} namespaces\r\n * @api public\r\n */\r\n\r\nfunction enable(namespaces) {\r\n exports.save(namespaces);\r\n\r\n exports.names = [];\r\n exports.skips = [];\r\n\r\n var i;\r\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\r\n var len = split.length;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (!split[i]) continue; // ignore empty strings\r\n namespaces = split[i].replace(/\\*/g, '.*?');\r\n if (namespaces[0] === '-') {\r\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\r\n } else {\r\n exports.names.push(new RegExp('^' + namespaces + '$'));\r\n }\r\n }\r\n\r\n for (i = 0; i < exports.instances.length; i++) {\r\n var instance = exports.instances[i];\r\n instance.enabled = exports.enabled(instance.namespace);\r\n }\r\n}\r\n\r\n/**\r\n * Disable debug output.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction disable() {\r\n exports.enable('');\r\n}\r\n\r\n/**\r\n * Returns true if the given mode name is enabled, false otherwise.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nfunction enabled(name) {\r\n if (name[name.length - 1] === '*') {\r\n return true;\r\n }\r\n var i, len;\r\n for (i = 0, len = exports.skips.length; i < len; i++) {\r\n if (exports.skips[i].test(name)) {\r\n return false;\r\n }\r\n }\r\n for (i = 0, len = exports.names.length; i < len; i++) {\r\n if (exports.names[i].test(name)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Coerce `val`.\r\n *\r\n * @param {Mixed} val\r\n * @return {Mixed}\r\n * @api private\r\n */\r\n\r\nfunction coerce(val) {\r\n if (val instanceof Error) return val.stack || val.message;\r\n return val;\r\n}\r\n","/**\r\n * Detect Electron renderer process, which is node, but we should\r\n * treat as a browser.\r\n */\r\n\r\nif (typeof process === 'undefined' || process.type === 'renderer') {\r\n module.exports = require('./browser.js');\r\n} else {\r\n module.exports = require('./node.js');\r\n}\r\n","/**\r\n * Module dependencies.\r\n */\r\n\r\nvar tty = require('tty');\r\nvar util = require('util');\r\n\r\n/**\r\n * This is the Node.js implementation of `debug()`.\r\n *\r\n * Expose `debug()` as the module.\r\n */\r\n\r\nexports = module.exports = require('./debug');\r\nexports.init = init;\r\nexports.log = log;\r\nexports.formatArgs = formatArgs;\r\nexports.save = save;\r\nexports.load = load;\r\nexports.useColors = useColors;\r\n\r\n/**\r\n * Colors.\r\n */\r\n\r\nexports.colors = [ 6, 2, 3, 4, 5, 1 ];\r\n\r\ntry {\r\n var supportsColor = require('supports-color');\r\n if (supportsColor && supportsColor.level >= 2) {\r\n exports.colors = [\r\n 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68,\r\n 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134,\r\n 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,\r\n 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204,\r\n 205, 206, 207, 208, 209, 214, 215, 220, 221\r\n ];\r\n }\r\n} catch (err) {\r\n // swallow - we only care if `supports-color` is available; it doesn't have to be.\r\n}\r\n\r\n/**\r\n * Build up the default `inspectOpts` object from the environment variables.\r\n *\r\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\r\n */\r\n\r\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\r\n return /^debug_/i.test(key);\r\n}).reduce(function (obj, key) {\r\n // camel-case\r\n var prop = key\r\n .substring(6)\r\n .toLowerCase()\r\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\r\n\r\n // coerce string value into JS value\r\n var val = process.env[key];\r\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\r\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\r\n else if (val === 'null') val = null;\r\n else val = Number(val);\r\n\r\n obj[prop] = val;\r\n return obj;\r\n}, {});\r\n\r\n/**\r\n * Is stdout a TTY? Colored output is enabled when `true`.\r\n */\r\n\r\nfunction useColors() {\r\n return 'colors' in exports.inspectOpts\r\n ? Boolean(exports.inspectOpts.colors)\r\n : tty.isatty(process.stderr.fd);\r\n}\r\n\r\n/**\r\n * Map %o to `util.inspect()`, all on a single line.\r\n */\r\n\r\nexports.formatters.o = function(v) {\r\n this.inspectOpts.colors = this.useColors;\r\n return util.inspect(v, this.inspectOpts)\r\n .split('\\n').map(function(str) {\r\n return str.trim()\r\n }).join(' ');\r\n};\r\n\r\n/**\r\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\r\n */\r\n\r\nexports.formatters.O = function(v) {\r\n this.inspectOpts.colors = this.useColors;\r\n return util.inspect(v, this.inspectOpts);\r\n};\r\n\r\n/**\r\n * Adds ANSI color escape codes if enabled.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction formatArgs(args) {\r\n var name = this.namespace;\r\n var useColors = this.useColors;\r\n\r\n if (useColors) {\r\n var c = this.color;\r\n var colorCode = '\\u001b[3' + (c < 8 ? c : '8;5;' + c);\r\n var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\\u001b[0m';\r\n\r\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\r\n args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\r\n } else {\r\n args[0] = getDate() + name + ' ' + args[0];\r\n }\r\n}\r\n\r\nfunction getDate() {\r\n if (exports.inspectOpts.hideDate) {\r\n return '';\r\n } else {\r\n return new Date().toISOString() + ' ';\r\n }\r\n}\r\n\r\n/**\r\n * Invokes `util.format()` with the specified arguments and writes to stderr.\r\n */\r\n\r\nfunction log() {\r\n return process.stderr.write(util.format.apply(util, arguments) + '\\n');\r\n}\r\n\r\n/**\r\n * Save `namespaces`.\r\n *\r\n * @param {String} namespaces\r\n * @api private\r\n */\r\n\r\nfunction save(namespaces) {\r\n if (null == namespaces) {\r\n // If you set a process.env field to null or undefined, it gets cast to the\r\n // string 'null' or 'undefined'. Just delete instead.\r\n delete process.env.DEBUG;\r\n } else {\r\n process.env.DEBUG = namespaces;\r\n }\r\n}\r\n\r\n/**\r\n * Load `namespaces`.\r\n *\r\n * @return {String} returns the previously persisted debug modes\r\n * @api private\r\n */\r\n\r\nfunction load() {\r\n return process.env.DEBUG;\r\n}\r\n\r\n/**\r\n * Init logic for `debug` instances.\r\n *\r\n * Create a new `inspectOpts` object in case `useColors` is set\r\n * differently for a particular `debug` instance.\r\n */\r\n\r\nfunction init (debug) {\r\n debug.inspectOpts = {};\r\n\r\n var keys = Object.keys(exports.inspectOpts);\r\n for (var i = 0; i < keys.length; i++) {\r\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\r\n }\r\n}\r\n\r\n/**\r\n * Enable namespaces listed in `process.env.DEBUG` initially.\r\n */\r\n\r\nexports.enable(load());\r\n","/**\r\n * Helpers.\r\n */\r\n\r\nvar s = 1000;\r\nvar m = s * 60;\r\nvar h = m * 60;\r\nvar d = h * 24;\r\nvar y = d * 365.25;\r\n\r\n/**\r\n * Parse or format the given `val`.\r\n *\r\n * Options:\r\n *\r\n * - `long` verbose formatting [false]\r\n *\r\n * @param {String|Number} val\r\n * @param {Object} [options]\r\n * @throws {Error} throw an error if val is not a non-empty string or a number\r\n * @return {String|Number}\r\n * @api public\r\n */\r\n\r\nmodule.exports = function(val, options) {\r\n options = options || {};\r\n var type = typeof val;\r\n if (type === 'string' && val.length > 0) {\r\n return parse(val);\r\n } else if (type === 'number' && isNaN(val) === false) {\r\n return options.long ? fmtLong(val) : fmtShort(val);\r\n }\r\n throw new Error(\r\n 'val is not a non-empty string or a valid number. val=' +\r\n JSON.stringify(val)\r\n );\r\n};\r\n\r\n/**\r\n * Parse the given `str` and return milliseconds.\r\n *\r\n * @param {String} str\r\n * @return {Number}\r\n * @api private\r\n */\r\n\r\nfunction parse(str) {\r\n str = String(str);\r\n if (str.length > 100) {\r\n return;\r\n }\r\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\r\n str\r\n );\r\n if (!match) {\r\n return;\r\n }\r\n var n = parseFloat(match[1]);\r\n var type = (match[2] || 'ms').toLowerCase();\r\n switch (type) {\r\n case 'years':\r\n case 'year':\r\n case 'yrs':\r\n case 'yr':\r\n case 'y':\r\n return n * y;\r\n case 'days':\r\n case 'day':\r\n case 'd':\r\n return n * d;\r\n case 'hours':\r\n case 'hour':\r\n case 'hrs':\r\n case 'hr':\r\n case 'h':\r\n return n * h;\r\n case 'minutes':\r\n case 'minute':\r\n case 'mins':\r\n case 'min':\r\n case 'm':\r\n return n * m;\r\n case 'seconds':\r\n case 'second':\r\n case 'secs':\r\n case 'sec':\r\n case 's':\r\n return n * s;\r\n case 'milliseconds':\r\n case 'millisecond':\r\n case 'msecs':\r\n case 'msec':\r\n case 'ms':\r\n return n;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * Short format for `ms`.\r\n *\r\n * @param {Number} ms\r\n * @return {String}\r\n * @api private\r\n */\r\n\r\nfunction fmtShort(ms) {\r\n if (ms >= d) {\r\n return Math.round(ms / d) + 'd';\r\n }\r\n if (ms >= h) {\r\n return Math.round(ms / h) + 'h';\r\n }\r\n if (ms >= m) {\r\n return Math.round(ms / m) + 'm';\r\n }\r\n if (ms >= s) {\r\n return Math.round(ms / s) + 's';\r\n }\r\n return ms + 'ms';\r\n}\r\n\r\n/**\r\n * Long format for `ms`.\r\n *\r\n * @param {Number} ms\r\n * @return {String}\r\n * @api private\r\n */\r\n\r\nfunction fmtLong(ms) {\r\n return plural(ms, d, 'day') ||\r\n plural(ms, h, 'hour') ||\r\n plural(ms, m, 'minute') ||\r\n plural(ms, s, 'second') ||\r\n ms + ' ms';\r\n}\r\n\r\n/**\r\n * Pluralization helper.\r\n */\r\n\r\nfunction plural(ms, n, name) {\r\n if (ms < n) {\r\n return;\r\n }\r\n if (ms < n * 1.5) {\r\n return Math.floor(ms / n) + ' ' + name;\r\n }\r\n return Math.ceil(ms / n) + ' ' + name + 's';\r\n}\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\nclass Deprecation extends Error {\r\n constructor(message) {\r\n super(message); // Maintains proper stack trace (only available on V8)\r\n\r\n /* istanbul ignore next */\r\n\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, this.constructor);\r\n }\r\n\r\n this.name = 'Deprecation';\r\n }\r\n\r\n}\r\n\r\nexports.Deprecation = Deprecation;\r\n","var punycode = require('punycode');\r\nvar entities = require('./entities.json');\r\n\r\nmodule.exports = decode;\r\n\r\nfunction decode (str) {\r\n if (typeof str !== 'string') {\r\n throw new TypeError('Expected a String');\r\n }\r\n\r\n return str.replace(/&(#?[^;\\W]+;?)/g, function (_, match) {\r\n var m;\r\n if (m = /^#(\\d+);?$/.exec(match)) {\r\n return punycode.ucs2.encode([ parseInt(m[1], 10) ]);\r\n } else if (m = /^#[Xx]([A-Fa-f0-9]+);?/.exec(match)) {\r\n return punycode.ucs2.encode([ parseInt(m[1], 16) ]);\r\n } else {\r\n // named entity\r\n var hasSemi = /;$/.test(match);\r\n var withoutSemi = hasSemi ? match.replace(/;$/, '') : match;\r\n var target = entities[withoutSemi] || (hasSemi && entities[match]);\r\n\r\n if (typeof target === 'number') {\r\n return punycode.ucs2.encode([ target ]);\r\n } else if (typeof target === 'string') {\r\n return target;\r\n } else {\r\n return '&' + match;\r\n }\r\n }\r\n });\r\n}\r\n","var punycode = require('punycode');\r\nvar revEntities = require('./reversed.json');\r\n\r\nmodule.exports = encode;\r\n\r\nfunction encode (str, opts) {\r\n if (typeof str !== 'string') {\r\n throw new TypeError('Expected a String');\r\n }\r\n if (!opts) opts = {};\r\n\r\n var numeric = true;\r\n if (opts.named) numeric = false;\r\n if (opts.numeric !== undefined) numeric = opts.numeric;\r\n\r\n var special = opts.special || {\r\n '\"': true, \"'\": true,\r\n '<': true, '>': true,\r\n '&': true\r\n };\r\n\r\n var codePoints = punycode.ucs2.decode(str);\r\n var chars = [];\r\n for (var i = 0; i < codePoints.length; i++) {\r\n var cc = codePoints[i];\r\n var c = punycode.ucs2.encode([ cc ]);\r\n var e = revEntities[cc];\r\n if (e && (cc >= 127 || special[c]) && !numeric) {\r\n chars.push('&' + (/;$/.test(e) ? e : e + ';'));\r\n }\r\n else if (cc < 32 || cc >= 127 || special[c]) {\r\n chars.push('&#' + cc + ';');\r\n }\r\n else {\r\n chars.push(c);\r\n }\r\n }\r\n return chars.join('');\r\n}\r\n","exports.encode = require('./encode');\r\nexports.decode = require('./decode');\r\n","module.exports = process.platform === 'win32' ? '×' : '✖';\r\n","/*!\r\n * falsey \r\n *\r\n * Copyright (c) 2014-2017, Jon Schlinkert.\r\n * Released under the MIT License.\r\n */\r\n\r\n'use strict';\r\n\r\nvar typeOf = require('kind-of');\r\n\r\nfunction falsey(val, keywords) {\r\n if (!val) return true;\r\n\r\n if (Array.isArray(val) || typeOf(val) === 'arguments') {\r\n return !val.length;\r\n }\r\n\r\n if (typeOf(val) === 'object') {\r\n return !Object.keys(val).length;\r\n }\r\n\r\n var arr = !keywords\r\n ? falsey.keywords\r\n : arrayify(keywords);\r\n\r\n return arr.indexOf(val.toLowerCase ? val.toLowerCase() : val) !== -1;\r\n}\r\n\r\n/**\r\n * Expose `keywords`\r\n */\r\n\r\nfalsey.keywords = ['none', 'nil', 'nope', 'no', 'nada', '0', 'false'];\r\n\r\nfunction arrayify(val) {\r\n return Array.isArray(val) ? val : [val];\r\n}\r\n\r\nmodule.exports = falsey;\r\n","var toString = Object.prototype.toString;\r\n\r\n/**\r\n * Get the native `typeof` a value.\r\n *\r\n * @param {*} `val`\r\n * @return {*} Native javascript type\r\n */\r\n\r\nmodule.exports = function kindOf(val) {\r\n var type = typeof val;\r\n\r\n // primitivies\r\n if (type === 'undefined') {\r\n return 'undefined';\r\n }\r\n if (val === null) {\r\n return 'null';\r\n }\r\n if (val === true || val === false || val instanceof Boolean) {\r\n return 'boolean';\r\n }\r\n if (type === 'string' || val instanceof String) {\r\n return 'string';\r\n }\r\n if (type === 'number' || val instanceof Number) {\r\n return 'number';\r\n }\r\n\r\n // functions\r\n if (type === 'function' || val instanceof Function) {\r\n if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') {\r\n return 'generatorfunction';\r\n }\r\n return 'function';\r\n }\r\n\r\n // array\r\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\r\n return 'array';\r\n }\r\n\r\n // check for instances of RegExp and Date before calling `toString`\r\n if (val instanceof RegExp) {\r\n return 'regexp';\r\n }\r\n if (val instanceof Date) {\r\n return 'date';\r\n }\r\n\r\n // other objects\r\n type = toString.call(val);\r\n\r\n if (type === '[object RegExp]') {\r\n return 'regexp';\r\n }\r\n if (type === '[object Date]') {\r\n return 'date';\r\n }\r\n if (type === '[object Arguments]') {\r\n return 'arguments';\r\n }\r\n if (type === '[object Error]') {\r\n return 'error';\r\n }\r\n if (type === '[object Promise]') {\r\n return 'promise';\r\n }\r\n\r\n // buffer\r\n if (isBuffer(val)) {\r\n return 'buffer';\r\n }\r\n\r\n // es6: Map, WeakMap, Set, WeakSet\r\n if (type === '[object Set]') {\r\n return 'set';\r\n }\r\n if (type === '[object WeakSet]') {\r\n return 'weakset';\r\n }\r\n if (type === '[object Map]') {\r\n return 'map';\r\n }\r\n if (type === '[object WeakMap]') {\r\n return 'weakmap';\r\n }\r\n if (type === '[object Symbol]') {\r\n return 'symbol';\r\n }\r\n \r\n if (type === '[object Map Iterator]') {\r\n return 'mapiterator';\r\n }\r\n if (type === '[object Set Iterator]') {\r\n return 'setiterator';\r\n }\r\n if (type === '[object String Iterator]') {\r\n return 'stringiterator';\r\n }\r\n if (type === '[object Array Iterator]') {\r\n return 'arrayiterator';\r\n }\r\n \r\n // typed arrays\r\n if (type === '[object Int8Array]') {\r\n return 'int8array';\r\n }\r\n if (type === '[object Uint8Array]') {\r\n return 'uint8array';\r\n }\r\n if (type === '[object Uint8ClampedArray]') {\r\n return 'uint8clampedarray';\r\n }\r\n if (type === '[object Int16Array]') {\r\n return 'int16array';\r\n }\r\n if (type === '[object Uint16Array]') {\r\n return 'uint16array';\r\n }\r\n if (type === '[object Int32Array]') {\r\n return 'int32array';\r\n }\r\n if (type === '[object Uint32Array]') {\r\n return 'uint32array';\r\n }\r\n if (type === '[object Float32Array]') {\r\n return 'float32array';\r\n }\r\n if (type === '[object Float64Array]') {\r\n return 'float64array';\r\n }\r\n\r\n // must be a plain object\r\n return 'object';\r\n};\r\n\r\n/**\r\n * If you need to support Safari 5-7 (8-10 yr-old browser),\r\n * take a look at https://github.com/feross/is-buffer\r\n */\r\n\r\nfunction isBuffer(val) {\r\n return val.constructor\r\n && typeof val.constructor.isBuffer === 'function'\r\n && val.constructor.isBuffer(val);\r\n}\r\n","/*!\r\n * for-in \r\n *\r\n * Copyright (c) 2014-2017, Jon Schlinkert.\r\n * Released under the MIT License.\r\n */\r\n\r\n'use strict';\r\n\r\nmodule.exports = function forIn(obj, fn, thisArg) {\r\n for (var key in obj) {\r\n if (fn.call(thisArg, obj[key], key, obj) === false) {\r\n break;\r\n }\r\n }\r\n};\r\n","/*!\r\n * for-own \r\n *\r\n * Copyright (c) 2014-2017, Jon Schlinkert.\r\n * Released under the MIT License.\r\n */\r\n\r\n'use strict';\r\n\r\nvar forIn = require('for-in');\r\nvar hasOwn = Object.prototype.hasOwnProperty;\r\n\r\nmodule.exports = function forOwn(obj, fn, thisArg) {\r\n forIn(obj, function(val, key) {\r\n if (hasOwn.call(obj, key)) {\r\n return fn.call(thisArg, obj[key], key, obj);\r\n }\r\n });\r\n};\r\n","/*!\r\n * fs-exists-sync (https://github.com/jonschlinkert/fs-exists-sync)\r\n *\r\n * Copyright (c) 2016, Jon Schlinkert.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n'use strict';\r\n\r\nvar fs = require('fs');\r\n\r\nmodule.exports = function(filepath) {\r\n try {\r\n (fs.accessSync || fs.statSync)(filepath);\r\n return true;\r\n } catch (err) {}\r\n return false;\r\n};\r\n","/*!\r\n * get-object \r\n *\r\n * Copyright (c) 2014 Jon Schlinkert, contributors.\r\n * Licensed under the MIT License\r\n */\r\n\r\n'use strict';\r\n\r\nvar isNumber = require('is-number');\r\n\r\nmodule.exports = function getObject(obj, prop) {\r\n if (!prop) return obj;\r\n if (!obj) return {};\r\n var segs = String(prop).split(/[[.\\]]/).filter(Boolean);\r\n var last = segs[segs.length - 1], res = {};\r\n while (prop = segs.shift()) {\r\n obj = obj[prop];\r\n if (!obj) return {};\r\n }\r\n if (isNumber(last)) return [obj];\r\n res[last] = obj;\r\n return res;\r\n};\r\n","/*!\r\n * is-number \r\n *\r\n * Copyright (c) 2014-2015, Jon Schlinkert.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n'use strict';\r\n\r\nvar typeOf = require('kind-of');\r\n\r\nmodule.exports = function isNumber(num) {\r\n var type = typeOf(num);\r\n if (type !== 'number' && type !== 'string') {\r\n return false;\r\n }\r\n var n = +num;\r\n return (n - n + 1) >= 0 && num !== '';\r\n};\r\n","var isBuffer = require('is-buffer');\r\nvar toString = Object.prototype.toString;\r\n\r\n/**\r\n * Get the native `typeof` a value.\r\n *\r\n * @param {*} `val`\r\n * @return {*} Native javascript type\r\n */\r\n\r\nmodule.exports = function kindOf(val) {\r\n // primitivies\r\n if (typeof val === 'undefined') {\r\n return 'undefined';\r\n }\r\n if (val === null) {\r\n return 'null';\r\n }\r\n if (val === true || val === false || val instanceof Boolean) {\r\n return 'boolean';\r\n }\r\n if (typeof val === 'string' || val instanceof String) {\r\n return 'string';\r\n }\r\n if (typeof val === 'number' || val instanceof Number) {\r\n return 'number';\r\n }\r\n\r\n // functions\r\n if (typeof val === 'function' || val instanceof Function) {\r\n return 'function';\r\n }\r\n\r\n // array\r\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\r\n return 'array';\r\n }\r\n\r\n // check for instances of RegExp and Date before calling `toString`\r\n if (val instanceof RegExp) {\r\n return 'regexp';\r\n }\r\n if (val instanceof Date) {\r\n return 'date';\r\n }\r\n\r\n // other objects\r\n var type = toString.call(val);\r\n\r\n if (type === '[object RegExp]') {\r\n return 'regexp';\r\n }\r\n if (type === '[object Date]') {\r\n return 'date';\r\n }\r\n if (type === '[object Arguments]') {\r\n return 'arguments';\r\n }\r\n if (type === '[object Error]') {\r\n return 'error';\r\n }\r\n\r\n // buffer\r\n if (isBuffer(val)) {\r\n return 'buffer';\r\n }\r\n\r\n // es6: Map, WeakMap, Set, WeakSet\r\n if (type === '[object Set]') {\r\n return 'set';\r\n }\r\n if (type === '[object WeakSet]') {\r\n return 'weakset';\r\n }\r\n if (type === '[object Map]') {\r\n return 'map';\r\n }\r\n if (type === '[object WeakMap]') {\r\n return 'weakmap';\r\n }\r\n if (type === '[object Symbol]') {\r\n return 'symbol';\r\n }\r\n\r\n // typed arrays\r\n if (type === '[object Int8Array]') {\r\n return 'int8array';\r\n }\r\n if (type === '[object Uint8Array]') {\r\n return 'uint8array';\r\n }\r\n if (type === '[object Uint8ClampedArray]') {\r\n return 'uint8clampedarray';\r\n }\r\n if (type === '[object Int16Array]') {\r\n return 'int16array';\r\n }\r\n if (type === '[object Uint16Array]') {\r\n return 'uint16array';\r\n }\r\n if (type === '[object Int32Array]') {\r\n return 'int32array';\r\n }\r\n if (type === '[object Uint32Array]') {\r\n return 'uint32array';\r\n }\r\n if (type === '[object Float32Array]') {\r\n return 'float32array';\r\n }\r\n if (type === '[object Float64Array]') {\r\n return 'float64array';\r\n }\r\n\r\n // must be a plain object\r\n return 'object';\r\n};\r\n","/*!\r\n * get-value \r\n *\r\n * Copyright (c) 2014-2015, Jon Schlinkert.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nmodule.exports = function(obj, prop, a, b, c) {\r\n if (!isObject(obj) || !prop) {\r\n return obj;\r\n }\r\n\r\n prop = toString(prop);\r\n\r\n // allowing for multiple properties to be passed as\r\n // a string or array, but much faster (3-4x) than doing\r\n // `[].slice.call(arguments)`\r\n if (a) prop += '.' + toString(a);\r\n if (b) prop += '.' + toString(b);\r\n if (c) prop += '.' + toString(c);\r\n\r\n if (prop in obj) {\r\n return obj[prop];\r\n }\r\n\r\n var segs = prop.split('.');\r\n var len = segs.length;\r\n var i = -1;\r\n\r\n while (obj && (++i < len)) {\r\n var key = segs[i];\r\n while (key[key.length - 1] === '\\\\') {\r\n key = key.slice(0, -1) + '.' + segs[++i];\r\n }\r\n obj = obj[key];\r\n }\r\n return obj;\r\n};\r\n\r\nfunction isObject(val) {\r\n return val !== null && (typeof val === 'object' || typeof val === 'function');\r\n}\r\n\r\nfunction toString(val) {\r\n if (!val) return '';\r\n if (Array.isArray(val)) {\r\n return val.join('.');\r\n }\r\n return val;\r\n}\r\n","'use strict';\r\n\r\nvar createFrame = require('create-frame');\r\nvar isObject = require('isobject');\r\n\r\n/**\r\n * Block helper for exposing private `@` variables on the context\r\n */\r\n\r\nmodule.exports = function(context, options) {\r\n if (isObject(context) && context.hash) {\r\n options = context;\r\n context = options.data;\r\n }\r\n\r\n var frame = createFrame(context);\r\n if (!isObject(options)) {\r\n options = {};\r\n }\r\n\r\n // extend the frame with hash arguments\r\n frame.extend(options.hash);\r\n return options.fn(this, {data: frame});\r\n};\r\n","/*!\r\n * handlebars-helpers \r\n *\r\n * Copyright (c) 2013-2017, Jon Schlinkert, Brian Woodward.\r\n * Released under the MIT License.\r\n */\r\n\r\n'use strict';\r\n\r\nvar forIn = require('for-in');\r\nvar define = require('define-property');\r\nvar lib = require('./lib/');\r\n\r\n/**\r\n * Expose helpers\r\n */\r\n\r\nmodule.exports = function helpers(groups, options) {\r\n if (typeof groups === 'string') {\r\n groups = [groups];\r\n } else if (!Array.isArray(groups)) {\r\n options = groups;\r\n groups = null;\r\n }\r\n\r\n options = options || {};\r\n var hbs = options.handlebars || options.hbs || require('handlebars');\r\n define(module.exports, 'handlebars', hbs);\r\n\r\n if (groups) {\r\n groups.forEach(function(key) {\r\n hbs.registerHelper(lib[key]);\r\n });\r\n } else {\r\n forIn(lib, function(group, key) {\r\n hbs.registerHelper(group);\r\n });\r\n }\r\n\r\n return hbs.helpers;\r\n};\r\n\r\n/**\r\n * Expose helper groups\r\n */\r\n\r\nforIn(lib, function(group, key) {\r\n define(module.exports, key, function(options) {\r\n options = options || {};\r\n var hbs = options.handlebars || options.hbs || require('handlebars');\r\n define(module.exports, 'handlebars', hbs);\r\n hbs.registerHelper(group);\r\n return hbs.helpers;\r\n });\r\n});\r\n\r\n/**\r\n * Expose `utils`\r\n */\r\n\r\nmodule.exports.utils = require('./lib/utils');\r\n","'use strict';\r\n\r\nvar util = require('handlebars-utils');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Returns all of the items in an array after the specified index.\r\n * Opposite of [before](#before).\r\n *\r\n * ```handlebars\r\n * \r\n * {{after array 1}}\r\n * \r\n * ```\r\n * @param {Array} `array` Collection\r\n * @param {Number} `n` Starting index (number of items to exclude)\r\n * @return {Array} Array exluding `n` items.\r\n * @api public\r\n */\r\n\r\nhelpers.after = function(array, n) {\r\n if (util.isUndefined(array)) return '';\r\n return array.slice(n);\r\n};\r\n\r\n/**\r\n * Cast the given `value` to an array.\r\n *\r\n * ```handlebars\r\n * {{arrayify \"foo\"}}\r\n * \r\n * ```\r\n * @param {any} `value`\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nhelpers.arrayify = function(value) {\r\n return value ? (Array.isArray(value) ? value : [value]) : [];\r\n};\r\n\r\n/**\r\n * Return all of the items in the collection before the specified\r\n * count. Opposite of [after](#after).\r\n *\r\n * ```handlebars\r\n * \r\n * {{before array 2}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {Number} `n`\r\n * @return {Array} Array excluding items after the given number.\r\n * @api public\r\n */\r\n\r\nhelpers.before = function(array, n) {\r\n if (util.isUndefined(array)) return '';\r\n return array.slice(0, -n);\r\n};\r\n\r\n/**\r\n * ```handlebars\r\n * \r\n * {{#eachIndex array}}\r\n * {{item}} is {{index}}\r\n * {{/eachIndex}}\r\n * ```\r\n * @param {Array} `array`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.eachIndex = function(array, options) {\r\n var result = '';\r\n for (var i = 0; i < array.length; i++) {\r\n result += options.fn({item: array[i], index: i});\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Block helper that filters the given array and renders the block for values that\r\n * evaluate to `true`, otherwise the inverse block is returned.\r\n *\r\n * ```handlebars\r\n * \r\n * {{#filter array \"foo\"}}AAA{{else}}BBB{{/filter}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {any} `value`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.filter = function(array, value, options) {\r\n var content = '';\r\n var results = [];\r\n\r\n // filter on a specific property\r\n var prop = options.hash && (options.hash.property || options.hash.prop);\r\n if (prop) {\r\n results = array.filter(function(val) {\r\n return value === utils.get(val, prop);\r\n });\r\n } else {\r\n\r\n // filter on a string value\r\n results = array.filter(function(v) {\r\n return value === v;\r\n });\r\n }\r\n\r\n if (results && results.length > 0) {\r\n for (var i = 0; i < results.length; i++) {\r\n content += options.fn(results[i]);\r\n }\r\n return content;\r\n }\r\n return options.inverse(this);\r\n};\r\n\r\n/**\r\n * Returns the first item, or first `n` items of an array.\r\n *\r\n * ```handlebars\r\n * {{first \"['a', 'b', 'c', 'd', 'e']\" 2}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {Number} `n` Number of items to return, starting at `0`.\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nhelpers.first = function(array, n) {\r\n if (util.isUndefined(array)) return '';\r\n if (!utils.isNumber(n)) {\r\n return array[0];\r\n }\r\n return array.slice(0, n);\r\n};\r\n\r\n/**\r\n * Iterates over each item in an array and exposes the current item\r\n * in the array as context to the inner block. In addition to\r\n * the current array item, the helper exposes the following variables\r\n * to the inner block:\r\n *\r\n * - `index`\r\n * - `total`\r\n * - `isFirst`\r\n * - `isLast`\r\n *\r\n * Also, `@index` is exposed as a private variable, and additional\r\n * private variables may be defined as hash arguments.\r\n *\r\n * ```handlebars\r\n * \r\n *\r\n * {{#forEach accounts}}\r\n * \r\n * {{ name }}\r\n * {{#unless isLast}}, {{/unless}}\r\n * {{/forEach}}\r\n * ```\r\n * @source \r\n * @param {Array} `array`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.forEach = function(array, options) {\r\n var data = utils.createFrame(options, options.hash);\r\n var len = array.length;\r\n var buffer = '';\r\n var i = -1;\r\n\r\n while (++i < len) {\r\n var item = array[i];\r\n data.index = i;\r\n item.index = i + 1;\r\n item.total = len;\r\n item.isFirst = i === 0;\r\n item.isLast = i === (len - 1);\r\n buffer += options.fn(item, {data: data});\r\n }\r\n return buffer;\r\n};\r\n\r\n/**\r\n * Block helper that renders the block if an array has the\r\n * given `value`. Optionally specify an inverse block to render\r\n * when the array does not have the given value.\r\n *\r\n * ```handlebars\r\n * \r\n * {{#inArray array \"d\"}}\r\n * foo\r\n * {{else}}\r\n * bar\r\n * {{/inArray}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {any} `value`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.inArray = function(array, value, options) {\r\n return util.value(util.indexOf(array, value) > -1, this, options);\r\n};\r\n\r\n/**\r\n * Returns true if `value` is an es5 array.\r\n *\r\n * ```handlebars\r\n * {{isArray \"abc\"}}\r\n * \r\n *\r\n * \r\n * {{isArray array}}\r\n * \r\n * ```\r\n * @param {any} `value` The value to test.\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nhelpers.isArray = function(value) {\r\n return Array.isArray(value);\r\n};\r\n\r\n/**\r\n * Returns the item from `array` at index `idx`.\r\n *\r\n * ```handlebars\r\n * \r\n * {{itemAt array 1}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {Number} `idx`\r\n * @return {any} `value`\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.itemAt = function(array, idx) {\r\n array = util.result(array);\r\n if (Array.isArray(array)) {\r\n idx = utils.isNumber(idx) ? +idx : 0;\r\n if (idx < 0) {\r\n return array[array.length + idx];\r\n }\r\n if (idx < array.length) {\r\n return array[idx];\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Join all elements of array into a string, optionally using a\r\n * given separator.\r\n *\r\n * ```handlebars\r\n * \r\n * {{join array}}\r\n * \r\n *\r\n * {{join array '-'}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {String} `separator` The separator to use. Defaults to `, `.\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.join = function(array, separator) {\r\n if (typeof array === 'string') return array;\r\n if (!Array.isArray(array)) return '';\r\n separator = util.isString(separator) ? separator : ', ';\r\n return array.join(separator);\r\n};\r\n\r\n/**\r\n * Returns true if the the length of the given `value` is equal\r\n * to the given `length`. Can be used as a block or inline helper.\r\n *\r\n * @param {Array|String} `value`\r\n * @param {Number} `length`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.equalsLength = function(value, length, options) {\r\n if (util.isOptions(length)) {\r\n options = length;\r\n length = 0;\r\n }\r\n\r\n var len = 0;\r\n if (typeof value === 'string' || Array.isArray(value)) {\r\n len = value.length;\r\n }\r\n\r\n return util.value(len === length, this, options);\r\n};\r\n\r\n/**\r\n * Returns the last item, or last `n` items of an array or string.\r\n * Opposite of [first](#first).\r\n *\r\n * ```handlebars\r\n * \r\n *\r\n * {{last value}}\r\n * \r\n *\r\n * {{last value 2}}\r\n * \r\n *\r\n * {{last value 3}}\r\n * \r\n * ```\r\n * @param {Array|String} `value` Array or string.\r\n * @param {Number} `n` Number of items to return from the end of the array.\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nhelpers.last = function(value, n) {\r\n if (!Array.isArray(value) && typeof value !== 'string') {\r\n return '';\r\n }\r\n if (!utils.isNumber(n)) {\r\n return value[value.length - 1];\r\n }\r\n return value.slice(-Math.abs(n));\r\n};\r\n\r\n/**\r\n * Returns the length of the given string or array.\r\n *\r\n * ```handlebars\r\n * {{length '[\"a\", \"b\", \"c\"]'}}\r\n * \r\n *\r\n * \r\n * {{length myArray}}\r\n * \r\n *\r\n * \r\n * {{length myObject}}\r\n * \r\n * ```\r\n * @param {Array|Object|String} `value`\r\n * @return {Number} The length of the value.\r\n * @api public\r\n */\r\n\r\nhelpers.length = function(value) {\r\n if (util.isObject(value) && !util.isOptions(value)) {\r\n value = Object.keys(value);\r\n }\r\n if (typeof value === 'string' || Array.isArray(value)) {\r\n return value.length;\r\n }\r\n return 0;\r\n};\r\n\r\n/**\r\n * Alias for [equalsLength](#equalsLength)\r\n *\r\n * @api public\r\n */\r\n\r\nhelpers.lengthEqual = helpers.equalsLength;\r\n\r\n/**\r\n * Returns a new array, created by calling `function` on each\r\n * element of the given `array`. For example,\r\n *\r\n * ```handlebars\r\n * \r\n * {{map array double}}\r\n * \r\n * ```\r\n *\r\n * @param {Array} `array`\r\n * @param {Function} `fn`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.map = function(array, iter) {\r\n if (!Array.isArray(array)) return '';\r\n var len = array.length;\r\n var res = new Array(len);\r\n var i = -1;\r\n\r\n if (typeof iter !== 'function') {\r\n return array;\r\n }\r\n\r\n while (++i < len) {\r\n res[i] = iter(array[i], i, array);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Map over the given object or array or objects and create an array of values\r\n * from the given `prop`. Dot-notation may be used (as a string) to get\r\n * nested properties.\r\n *\r\n * ```handlebars\r\n * // {{pluck items \"data.title\"}}\r\n * \r\n * ```\r\n * @param {Array|Object} `collection`\r\n * @param {Function} `prop`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.pluck = function(arr, prop) {\r\n if (util.isUndefined(arr)) return '';\r\n var res = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n var val = utils.get(arr[i], prop);\r\n if (typeof val !== 'undefined') {\r\n res.push(val);\r\n }\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Reverse the elements in an array, or the characters in a string.\r\n *\r\n * ```handlebars\r\n * \r\n * {{reverse value}}\r\n * \r\n * \r\n * {{reverse value}}\r\n * \r\n * ```\r\n * @param {Array|String} `value`\r\n * @return {Array|String} Returns the reversed string or array.\r\n * @api public\r\n */\r\n\r\nhelpers.reverse = function(val) {\r\n if (Array.isArray(val)) {\r\n val.reverse();\r\n return val;\r\n }\r\n if (val && typeof val === 'string') {\r\n return val.split('').reverse().join('');\r\n }\r\n};\r\n\r\n/**\r\n * Block helper that returns the block if the callback returns true\r\n * for some value in the given array.\r\n *\r\n * ```handlebars\r\n * \r\n * {{#some array isString}}\r\n * Render me if the array has a string.\r\n * {{else}}\r\n * Render me if it doesn't.\r\n * {{/some}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {Function} `iter` Iteratee\r\n * @param {Options} Handlebars provided options object\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.some = function(array, iter, options) {\r\n if (Array.isArray(array)) {\r\n for (var i = 0; i < array.length; i++) {\r\n if (iter(array[i], i, array)) {\r\n return options.fn(this);\r\n }\r\n }\r\n }\r\n return options.inverse(this);\r\n};\r\n\r\n/**\r\n * Sort the given `array`. If an array of objects is passed,\r\n * you may optionally pass a `key` to sort on as the second\r\n * argument. You may alternatively pass a sorting function as\r\n * the second argument.\r\n *\r\n * ```handlebars\r\n * \r\n * {{sort array}}\r\n * \r\n * ```\r\n *\r\n * @param {Array} `array` the array to sort.\r\n * @param {String|Function} `key` The object key to sort by, or sorting function.\r\n * @api public\r\n */\r\n\r\nhelpers.sort = function(array, options) {\r\n if (!Array.isArray(array)) return '';\r\n if (utils.get(options, 'hash.reverse')) {\r\n return array.sort().reverse();\r\n }\r\n return array.sort();\r\n};\r\n\r\n/**\r\n * Sort an `array`. If an array of objects is passed,\r\n * you may optionally pass a `key` to sort on as the second\r\n * argument. You may alternatively pass a sorting function as\r\n * the second argument.\r\n *\r\n * ```handlebars\r\n * \r\n * {{sortBy array \"a\"}}\r\n * \r\n * ```\r\n *\r\n * @param {Array} `array` the array to sort.\r\n * @param {String|Function} `props` One or more properties to sort by, or sorting functions to use.\r\n * @api public\r\n */\r\n\r\nhelpers.sortBy = function(array, prop, options) {\r\n if (!Array.isArray(array)) return '';\r\n var args = [].slice.call(arguments);\r\n // remove handlebars options\r\n args.pop();\r\n\r\n if (!util.isString(prop) && typeof prop !== 'function') {\r\n return array.sort();\r\n }\r\n return utils.sortBy.apply(null, args);\r\n};\r\n\r\n/**\r\n * Use the items in the array _after_ the specified index\r\n * as context inside a block. Opposite of [withBefore](#withBefore).\r\n *\r\n * ```handlebars\r\n * \r\n * {{#withAfter array 3}}\r\n * {{this}}\r\n * {{/withAfter}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {Number} `idx`\r\n * @param {Object} `options`\r\n * @return {Array}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.withAfter = function(array, idx, options) {\r\n if (!Array.isArray(array)) return '';\r\n array = array.slice(idx);\r\n var result = '';\r\n\r\n for (var i = 0; i < array.length; i++) {\r\n result += options.fn(array[i]);\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Use the items in the array _before_ the specified index\r\n * as context inside a block. Opposite of [withAfter](#withAfter).\r\n *\r\n * ```handlebars\r\n * \r\n * {{#withBefore array 3}}\r\n * {{this}}\r\n * {{/withBefore}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {Number} `idx`\r\n * @param {Object} `options`\r\n * @return {Array}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.withBefore = function(array, idx, options) {\r\n if (!Array.isArray(array)) return '';\r\n array = array.slice(0, -idx);\r\n var result = '';\r\n\r\n for (var i = 0; i < array.length; i++) {\r\n result += options.fn(array[i]);\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Use the first item in a collection inside a handlebars\r\n * block expression. Opposite of [withLast](#withLast).\r\n *\r\n * ```handlebars\r\n * \r\n * {{#withFirst array}}\r\n * {{this}}\r\n * {{/withFirst}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {Number} `idx`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.withFirst = function(array, idx, options) {\r\n if (util.isUndefined(array)) return '';\r\n array = util.result(array);\r\n\r\n if (!util.isUndefined(idx)) {\r\n idx = parseFloat(util.result(idx));\r\n }\r\n\r\n if (util.isUndefined(idx)) {\r\n options = idx;\r\n return options.fn(array[0]);\r\n }\r\n\r\n array = array.slice(0, idx);\r\n var result = '';\r\n for (var i = 0; i < array.length; i++) {\r\n result += options.fn(array[i]);\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Block helper that groups array elements by given group `size`.\r\n *\r\n * ```handlebars\r\n * \r\n * {{#withGroup array 4}}\r\n * {{#each this}}\r\n * {{.}}\r\n * {{each}}\r\n *
          \r\n * {{/withGroup}}\r\n * \r\n * \r\n * \r\n * ```\r\n * @param {Array} `array` The array to iterate over\r\n * @param {Number} `size` The desired length of each array \"group\"\r\n * @param {Object} `options` Handlebars options\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.withGroup = function(array, size, options) {\r\n var result = '';\r\n if (Array.isArray(array) && array.length > 0) {\r\n var subcontext = [];\r\n for (var i = 0; i < array.length; i++) {\r\n if (i > 0 && (i % size) === 0) {\r\n result += options.fn(subcontext);\r\n subcontext = [];\r\n }\r\n subcontext.push(array[i]);\r\n }\r\n result += options.fn(subcontext);\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Use the last item or `n` items in an array as context inside a block.\r\n * Opposite of [withFirst](#withFirst).\r\n *\r\n * ```handlebars\r\n * \r\n * {{#withLast array}}\r\n * {{this}}\r\n * {{/withLast}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {Number} `idx` The starting index.\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.withLast = function(array, idx, options) {\r\n if (util.isUndefined(array)) return '';\r\n array = util.result(array);\r\n\r\n if (!util.isUndefined(idx)) {\r\n idx = parseFloat(util.result(idx));\r\n }\r\n\r\n if (util.isUndefined(idx)) {\r\n options = idx;\r\n return options.fn(array[array.length - 1]);\r\n }\r\n\r\n array = array.slice(-idx);\r\n var len = array.length, i = -1;\r\n var result = '';\r\n while (++i < len) {\r\n result += options.fn(array[i]);\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Block helper that sorts a collection and exposes the sorted\r\n * collection as context inside the block.\r\n *\r\n * ```handlebars\r\n * \r\n * {{#withSort array}}{{this}}{{/withSort}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {String} `prop`\r\n * @param {Object} `options` Specify `reverse=\"true\"` to reverse the array.\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.withSort = function(array, prop, options) {\r\n if (util.isUndefined(array)) return '';\r\n var result = '';\r\n\r\n if (util.isUndefined(prop)) {\r\n options = prop;\r\n\r\n array = array.sort();\r\n if (utils.get(options, 'hash.reverse')) {\r\n array = array.reverse();\r\n }\r\n\r\n for (var i = 0, len = array.length; i < len; i++) {\r\n result += options.fn(array[i]);\r\n }\r\n return result;\r\n }\r\n\r\n array.sort(function(a, b) {\r\n a = utils.get(a, prop);\r\n b = utils.get(b, prop);\r\n return a > b ? 1 : (a < b ? -1 : 0);\r\n });\r\n\r\n if (utils.get(options, 'hash.reverse')) {\r\n array = array.reverse();\r\n }\r\n\r\n var alen = array.length, j = -1;\r\n while (++j < alen) {\r\n result += options.fn(array[j]);\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Block helper that return an array with all duplicate\r\n * values removed. Best used along with a [each](#each) helper.\r\n *\r\n * ```handlebars\r\n * \r\n * {{#each (unique array)}}{{.}}{{/each}}\r\n * \r\n * ```\r\n * @param {Array} `array`\r\n * @param {Object} `options`\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nhelpers.unique = function(array, options) {\r\n if (util.isUndefined(array)) return '';\r\n\r\n return array.filter(function(item, index, arr) {\r\n return arr.indexOf(item) === index;\r\n });\r\n};\r\n","'use strict';\r\n\r\nvar fs = require('fs');\r\nvar path = require('path');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Embed code from an external file as preformatted text.\r\n *\r\n * ```handlebars\r\n * {{embed 'path/to/file.js'}}\r\n * \r\n * {{embed 'path/to/file.hbs' 'html')}}\r\n * ```\r\n *\r\n * @param {String} `filepath` filepath to the file to embed.\r\n * @param {String} `language` Optionally specify the language to use for syntax highlighting.\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.embed = function embed(filepath, ext) {\r\n ext = typeof ext !== 'string' ? path.extname(filepath).slice(1) : ext;\r\n var code = fs.readFileSync(filepath, 'utf8');\r\n if (ext === 'markdown' || ext === 'md') {\r\n ext = 'markdown';\r\n // if the string is markdown, escape backticks\r\n code = code.split('`').join('`');\r\n }\r\n return utils.block(code, ext).trim() + '\\n';\r\n};\r\n\r\n/**\r\n * Embed a GitHub Gist using only the id of the Gist\r\n *\r\n * ```handlebars\r\n * {{gist \"12345\"}}\r\n * ```\r\n * @param {String} `id`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.gist = function(id) {\r\n return utils.tag('script', {src: 'https://gist.github.com/' + id + '.js'});\r\n};\r\n\r\n/**\r\n * Generate the HTML for a jsFiddle link with the given `params`\r\n *\r\n * ```handlebars\r\n * {{jsfiddle id=\"0dfk10ks\" tabs=\"true\"}}\r\n * ```\r\n * @param {Object} `params`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.jsfiddle = function jsFiddle(options) {\r\n var attr = Object.assign({}, options && options.hash);\r\n\r\n if (typeof attr.id === 'undefined') {\r\n throw new Error('jsfiddle helper expects an `id`');\r\n }\r\n\r\n attr.id = 'http://jsfiddle.net/' + attr.id;\r\n attr.width = attr.width || '100%';\r\n attr.height = attr.height || '300';\r\n attr.skin = attr.skin || '/presentation/';\r\n attr.tabs = (attr.tabs || 'result,js,html,css') + attr.skin;\r\n attr.src = attr.id + '/embedded/' + attr.tabs;\r\n attr.allowfullscreen = attr.allowfullscreen || 'allowfullscreen';\r\n attr.frameborder = attr.frameborder || '0';\r\n\r\n delete attr.tabs;\r\n delete attr.skin;\r\n delete attr.id;\r\n return utils.tag('iframe', attr);\r\n};\r\n","'use strict';\r\n\r\nvar util = require('handlebars-utils');\r\nvar object = require('./object');\r\nvar array = require('./array');\r\nvar forEach = array.forEach;\r\nvar forOwn = object.forOwn;\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Inline, subexpression, or block helper that returns true (or the block)\r\n * if the given collection is empty, or false (or the inverse block, if\r\n * supplied) if the colleciton is not empty.\r\n *\r\n * ```handlebars\r\n * \r\n * {{#isEmpty array}}AAA{{else}}BBB{{/isEmpty}}\r\n * \r\n *\r\n * \r\n * {{isEmpty array}}\r\n * \r\n * ```\r\n * @param {Object} `collection`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.isEmpty = function(collection, options) {\r\n if (!util.isOptions(options)) {\r\n options = collection;\r\n return util.fn(true, this, options);\r\n }\r\n\r\n if (Array.isArray(collection) && !collection.length) {\r\n return util.fn(true, this, options);\r\n }\r\n\r\n var keys = Object.keys(collection);\r\n var isEmpty = typeof collection === 'object' && !keys.length;\r\n return util.value(isEmpty, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that iterates over an array or object. If\r\n * an array is given, `.forEach` is called, or if an object\r\n * is given, `.forOwn` is called, otherwise the inverse block\r\n * is returned.\r\n *\r\n * @param {Object|Array} `collection` The collection to iterate over\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.iterate = function(collection, options) {\r\n if (Array.isArray(collection)) {\r\n return forEach.apply(null, arguments);\r\n }\r\n if (util.isObject(collection)) {\r\n return forOwn.apply(null, arguments);\r\n }\r\n return options.inverse(this);\r\n};\r\n","'use strict';\r\n\r\nvar has = require('has-value');\r\nvar util = require('handlebars-utils');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Helper that renders the block if **both** of the given values\r\n * are truthy. If an inverse block is specified it will be rendered\r\n * when falsy. Works as a block helper, inline helper or\r\n * subexpression.\r\n *\r\n * ```handlebars\r\n * \r\n * {{#and great magnificent}}A{{else}}B{{/and}}\r\n * \r\n * ```\r\n * @param {any} `a`\r\n * @param {any} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.and = function() {\r\n var len = arguments.length - 1;\r\n var options = arguments[len];\r\n var val = true;\r\n\r\n for (var i = 0; i < len; i++) {\r\n if (!arguments[i]) {\r\n val = false;\r\n break;\r\n }\r\n }\r\n\r\n return util.value(val, this, options);\r\n};\r\n\r\n/**\r\n * Render a block when a comparison of the first and third\r\n * arguments returns true. The second argument is\r\n * the [arithemetic operator][operators] to use. You may also\r\n * optionally specify an inverse block to render when falsy.\r\n *\r\n * @param `a`\r\n * @param `operator` The operator to use. Operators must be enclosed in quotes: `\">\"`, `\"=\"`, `\"<=\"`, and so on.\r\n * @param `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or if specified the inverse block is rendered if falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.compare = function(a, operator, b, options) {\r\n /*eslint eqeqeq: 0*/\r\n\r\n if (arguments.length < 4) {\r\n throw new Error('handlebars Helper {{compare}} expects 4 arguments');\r\n }\r\n\r\n var result;\r\n switch (operator) {\r\n case '==':\r\n result = a == b;\r\n break;\r\n case '===':\r\n result = a === b;\r\n break;\r\n case '!=':\r\n result = a != b;\r\n break;\r\n case '!==':\r\n result = a !== b;\r\n break;\r\n case '<':\r\n result = a < b;\r\n break;\r\n case '>':\r\n result = a > b;\r\n break;\r\n case '<=':\r\n result = a <= b;\r\n break;\r\n case '>=':\r\n result = a >= b;\r\n break;\r\n case 'typeof':\r\n result = typeof a === b;\r\n break;\r\n default: {\r\n throw new Error('helper {{compare}}: invalid operator: `' + operator + '`');\r\n }\r\n }\r\n\r\n return util.value(result, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders the block if `collection` has the\r\n * given `value`, using strict equality (`===`) for comparison,\r\n * otherwise the inverse block is rendered (if specified). If a\r\n * `startIndex` is specified and is negative, it is used as the\r\n * offset from the end of the collection.\r\n *\r\n * ```handlebars\r\n * \r\n * {{#contains array \"d\"}}\r\n * This will not be rendered.\r\n * {{else}}\r\n * This will be rendered.\r\n * {{/contains}}\r\n * ```\r\n * @param {Array|Object|String} `collection` The collection to iterate over.\r\n * @param {any} `value` The value to check for.\r\n * @param {Number} `[startIndex=0]` Optionally define the starting index.\r\n * @param {Object} `options` Handlebars provided options object.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.contains = function(collection, value, startIndex, options) {\r\n if (typeof startIndex === 'object') {\r\n options = startIndex;\r\n startIndex = undefined;\r\n }\r\n var val = utils.contains(collection, value, startIndex);\r\n return util.value(val, this, options);\r\n};\r\n\r\n/**\r\n * Returns the first value that is not undefined, otherwise the \"default\" value is returned.\r\n *\r\n * @param {any} `value`\r\n * @param {any} `defaultValue`\r\n * @return {String}\r\n * @alias .or\r\n * @api public\r\n */\r\n\r\nhelpers.default = function() {\r\n for (var i = 0; i < arguments.length - 1; i++) {\r\n if (arguments[i] != null) return arguments[i];\r\n }\r\n return '';\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if `a` is **equal to** `b`.\r\n * If an inverse block is specified it will be rendered when falsy.\r\n * You may optionally use the `compare=\"\"` hash argument for the\r\n * second value.\r\n *\r\n * @param {String} `a`\r\n * @param {String} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @alias is\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.eq = function(a, b, options) {\r\n if (arguments.length === 2) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a === b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if `a` is **greater than** `b`.\r\n *\r\n * If an inverse block is specified it will be rendered when falsy.\r\n * You may optionally use the `compare=\"\"` hash argument for the\r\n * second value.\r\n *\r\n * @param {String} `a`\r\n * @param {String} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.gt = function(a, b, options) {\r\n if (arguments.length === 2) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a > b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if `a` is **greater than or\r\n * equal to** `b`.\r\n *\r\n * If an inverse block is specified it will be rendered when falsy.\r\n * You may optionally use the `compare=\"\"` hash argument for the\r\n * second value.\r\n *\r\n * @param {String} `a`\r\n * @param {String} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.gte = function(a, b, options) {\r\n if (arguments.length === 2) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a >= b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if `value` has `pattern`.\r\n * If an inverse block is specified it will be rendered when falsy.\r\n *\r\n * @param {any} `val` The value to check.\r\n * @param {any} `pattern` The pattern to check for.\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.has = function(value, pattern, options) {\r\n if (util.isOptions(value)) {\r\n options = value;\r\n pattern = null;\r\n value = null;\r\n }\r\n\r\n if (util.isOptions(pattern)) {\r\n options = pattern;\r\n pattern = null;\r\n }\r\n\r\n if (value === null) {\r\n return util.value(false, this, options);\r\n }\r\n\r\n if (arguments.length === 2) {\r\n return util.value(has(this, value), this, options);\r\n }\r\n\r\n if ((Array.isArray(value) || util.isString(value)) && util.isString(pattern)) {\r\n if (value.indexOf(pattern) > -1) {\r\n return util.fn(true, this, options);\r\n }\r\n }\r\n if (util.isObject(value) && util.isString(pattern) && pattern in value) {\r\n return util.fn(true, this, options);\r\n }\r\n return util.inverse(false, this, options);\r\n};\r\n\r\n/**\r\n * Returns true if the given `value` is falsey. Uses the [falsey][]\r\n * library for comparisons. Please see that library for more information\r\n * or to report bugs with this helper.\r\n *\r\n * @param {any} `val`\r\n * @param {Options} `options`\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nhelpers.isFalsey = function(val, options) {\r\n return util.value(utils.falsey(val), this, options);\r\n};\r\n\r\n/**\r\n * Returns true if the given `value` is truthy. Uses the [falsey][]\r\n * library for comparisons. Please see that library for more information\r\n * or to report bugs with this helper.\r\n *\r\n * @param {any} `val`\r\n * @param {Options} `options`\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nhelpers.isTruthy = function(val, options) {\r\n return util.value(!utils.falsey(val), this, options);\r\n};\r\n\r\n/**\r\n * Return true if the given value is an even number.\r\n *\r\n * ```handlebars\r\n * {{#ifEven value}}\r\n * render A\r\n * {{else}}\r\n * render B\r\n * {{/ifEven}}\r\n * ```\r\n * @param {Number} `number`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.ifEven = function(num, options) {\r\n return util.value(utils.isEven(num), this, options);\r\n};\r\n\r\n/**\r\n * Conditionally renders a block if the remainder is zero when\r\n * `a` operand is divided by `b`. If an inverse block is specified\r\n * it will be rendered when the remainder is **not zero**.\r\n *\r\n * @param {Number}\r\n * @param {Number}\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.ifNth = function(a, b, options) {\r\n var isNth = utils.isNumber(a) && utils.isNumber(b) && b % a === 0;\r\n return util.value(isNth, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if `value` is **an odd number**.\r\n * If an inverse block is specified it will be rendered when falsy.\r\n *\r\n * ```handlebars\r\n * {{#ifOdd value}}\r\n * render A\r\n * {{else}}\r\n * render B\r\n * {{/ifOdd}}\r\n * ```\r\n * @param {Object} `value`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.ifOdd = function(val, options) {\r\n return util.value(!utils.isEven(val), this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if `a` is **equal to** `b`.\r\n * If an inverse block is specified it will be rendered when falsy.\r\n * Similar to [eq](#eq) but does not do strict equality.\r\n *\r\n * @param {any} `a`\r\n * @param {any} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.is = function(a, b, options) {\r\n if (arguments.length === 2) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a == b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if `a` is **not equal to** `b`.\r\n * If an inverse block is specified it will be rendered when falsy.\r\n * Similar to [unlessEq](#unlesseq) but does not use strict equality for\r\n * comparisons.\r\n *\r\n * @param {String} `a`\r\n * @param {String} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.isnt = function(a, b, options) {\r\n if (arguments.length === 2) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a != b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if `a` is **less than** `b`.\r\n *\r\n * If an inverse block is specified it will be rendered when falsy.\r\n * You may optionally use the `compare=\"\"` hash argument for the\r\n * second value.\r\n *\r\n * @param {Object} `context`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.lt = function(a, b, options) {\r\n if (arguments.length === 2) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a < b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if `a` is **less than or\r\n * equal to** `b`.\r\n *\r\n * If an inverse block is specified it will be rendered when falsy.\r\n * You may optionally use the `compare=\"\"` hash argument for the\r\n * second value.\r\n *\r\n * @param {Sring} `a`\r\n * @param {Sring} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.lte = function(a, b, options) {\r\n if (arguments.length === 2) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a <= b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if **neither of** the given values\r\n * are truthy. If an inverse block is specified it will be rendered\r\n * when falsy.\r\n *\r\n * @param {any} `a`\r\n * @param {any} `b`\r\n * @param `options` Handlebars options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.neither = function(a, b, options) {\r\n return util.value(!a && !b, this, options);\r\n};\r\n\r\n/**\r\n * Returns true if `val` is falsey. Works as a block or inline helper.\r\n *\r\n * @param {String} `val`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.not = function(val, options) {\r\n return util.value(!val, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that renders a block if **any of** the given values\r\n * is truthy. If an inverse block is specified it will be rendered\r\n * when falsy.\r\n *\r\n * ```handlebars\r\n * {{#or a b c}}\r\n * If any value is true this will be rendered.\r\n * {{/or}}\r\n * ```\r\n *\r\n * @param {...any} `arguments` Variable number of arguments\r\n * @param {Object} `options` Handlebars options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.or = function(/* any, any, ..., options */) {\r\n var len = arguments.length - 1;\r\n var options = arguments[len];\r\n var val = false;\r\n\r\n for (var i = 0; i < len; i++) {\r\n if (arguments[i]) {\r\n val = true;\r\n break;\r\n }\r\n }\r\n return util.value(val, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that always renders the inverse block **unless `a` is\r\n * is equal to `b`**.\r\n *\r\n * @param {String} `a`\r\n * @param {String} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Inverse block by default, or block if falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.unlessEq = function(a, b, options) {\r\n if (util.isOptions(b)) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a !== b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that always renders the inverse block **unless `a` is\r\n * is greater than `b`**.\r\n *\r\n * @param {Object} `a` The default value\r\n * @param {Object} `b` The value to compare\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Inverse block by default, or block if falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.unlessGt = function(a, b, options) {\r\n if (util.isOptions(b)) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a <= b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that always renders the inverse block **unless `a` is\r\n * is less than `b`**.\r\n *\r\n * @param {Object} `a` The default value\r\n * @param {Object} `b` The value to compare\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.unlessLt = function(a, b, options) {\r\n if (util.isOptions(b)) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a >= b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that always renders the inverse block **unless `a` is\r\n * is greater than or equal to `b`**.\r\n *\r\n * @param {any} `a`\r\n * @param {any} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.unlessGteq = function(a, b, options) {\r\n if (util.isOptions(b)) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a < b, this, options);\r\n};\r\n\r\n/**\r\n * Block helper that always renders the inverse block **unless `a` is\r\n * is less than or equal to `b`**.\r\n *\r\n * @param {any} `a`\r\n * @param {any} `b`\r\n * @param {Object} `options` Handlebars provided options object\r\n * @return {String} Block, or inverse block if specified and falsey.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.unlessLteq = function(a, b, options) {\r\n if (util.isOptions(b)) {\r\n options = b;\r\n b = options.hash.compare;\r\n }\r\n return util.value(a > b, this, options);\r\n};\r\n","'use strict';\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Get the current year.\r\n *\r\n * ```handlebars\r\n * {{year}}\r\n * \r\n * ```\r\n * @exposes year as year\r\n * @api public\r\n */\r\n\r\nhelpers.year = require('year');\r\n\r\n/**\r\n * Use [moment][] as a helper. See [helper-date][] for more details.\r\n *\r\n * @exposes helper-date as moment\r\n * @api public\r\n */\r\n\r\nhelpers.moment = helpers.date = require('helper-date');\r\n","'use strict';\r\n\r\nvar fs = require('fs');\r\nvar path = require('path');\r\nvar util = require('handlebars-utils');\r\nvar utils = require('./utils');\r\nvar number = require('./number');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Helper `fileSize` is deprecated. Use `helper.prettyBytes` instead.\r\n */\r\n\r\nhelpers.fileSize = number.bytes;\r\n\r\n/**\r\n * Read a file from the file system. This is useful in composing\r\n * \"include\"-style helpers using sub-expressions.\r\n *\r\n * ```handlebars\r\n * {{read \"a/b/c.js\"}}\r\n * {{someHelper (read \"a/b/c.md\")}}\r\n * ```\r\n * @param {String} `filepath`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.read = function(filepath, options) {\r\n return fs.readFileSync(filepath, 'utf8');\r\n};\r\n\r\n/**\r\n * Return an array of files from the given\r\n * directory.\r\n *\r\n * @param {String} `directory`\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nhelpers.readdir = function(dir, filter) {\r\n var files = fs.readdirSync(dir);\r\n files = files.map(function(fp) {\r\n return path.join(dir, fp);\r\n });\r\n if (util.isOptions(filter)) {\r\n return files;\r\n }\r\n if (typeof filter === 'function') {\r\n return filter(files);\r\n }\r\n if (utils.typeOf(filter) === 'regexp') {\r\n return files.filter(function(fp) {\r\n return filter.test(fp);\r\n });\r\n }\r\n if (utils.isGlob(filter)) {\r\n return files.filter(utils.mm.matcher(filter));\r\n }\r\n if (['isFile', 'isDirectory'].indexOf(filter) !== -1) {\r\n return files.filter(function(fp) {\r\n var stat = fs.statSync(fp);\r\n return stat[filter]();\r\n });\r\n }\r\n return files;\r\n};\r\n","'use strict';\r\n\r\nvar path = require('path');\r\nvar util = require('handlebars-utils');\r\nvar html = require('./utils/html');\r\nvar utils = require('./utils');\r\nvar parseAttr = html.parseAttributes;\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Stringify attributes on the options `hash`.\r\n *\r\n * ```handlebars\r\n * \r\n *
          \r\n * \r\n * {{css stylesheets}}\r\n *\r\n * \r\n * \r\n * \r\n * ```\r\n * @param {String|Array} `list` One or more stylesheet urls.\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.css = function(list, options) {\r\n if (arguments.length < 2) {\r\n options = list;\r\n list = [];\r\n }\r\n\r\n var styles = util.arrayify(list);\r\n var assets = '';\r\n\r\n if (this && this.options) {\r\n assets = this.options.assets || '';\r\n }\r\n\r\n if (options.hash.href) {\r\n styles = util.arrayify(options.hash.href);\r\n }\r\n\r\n return styles.map(function(item) {\r\n var ext = path.extname(item);\r\n var fp = item;\r\n\r\n if (!/(^\\/\\/)|(:\\/\\/)/.test(item)) {\r\n fp = path.posix.join(assets, item);\r\n }\r\n\r\n if (ext === '.less') {\r\n return '';\r\n }\r\n return '';\r\n }).join('\\n');\r\n};\r\n\r\n/**\r\n * Generate one or more `` tags with paths/urls to\r\n * javascript or coffeescript files.\r\n *\r\n * ```handlebars\r\n * {{js scripts}}\r\n * ```\r\n * @param {Object} `context`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.js = function(context) {\r\n if (utils.typeOf(context) === 'object') {\r\n var attr = parseAttr(context.hash);\r\n return '';\r\n }\r\n\r\n if (utils.typeOf(context) === 'string') {\r\n return '';\r\n }\r\n\r\n context = util.arrayify(context);\r\n return context.map(function(fp) {\r\n return (path.extname(fp) === '.coffee')\r\n ? utils.tag('script', {type: 'text/coffeescript', src: fp})\r\n : utils.tag('script', {src: fp});\r\n }).join('\\n');\r\n};\r\n\r\n/**\r\n * Strip HTML tags from a string, so that only the text nodes\r\n * are preserved.\r\n *\r\n * ```handlebars\r\n * {{sanitize \"foo\"}}\r\n * \r\n * ```\r\n *\r\n * @param {String} `str` The string of HTML to sanitize.\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.sanitize = function(str) {\r\n return html.sanitize(str);\r\n};\r\n\r\n/**\r\n * Block helper for creating unordered lists (`
            `)\r\n *\r\n * @param {Object} `context`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.ul = function(context, options) {\r\n return ('
              ') + context.map(function(item) {\r\n if (typeof item !== 'string') {\r\n item = options.fn(item);\r\n }\r\n return '
            • ' + item + '
            • ';\r\n }).join('\\n') + '
            ';\r\n};\r\n\r\n/**\r\n * Block helper for creating ordered lists (`
              `)\r\n *\r\n * @param {Object} `context`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.ol = function(context, options) {\r\n return ('
                ') + context.map(function(item) {\r\n if (typeof item !== 'string') {\r\n item = options.fn(item);\r\n }\r\n return '
              1. ' + item + '
              2. ';\r\n }).join('\\n') + '
              ';\r\n};\r\n\r\n/**\r\n * Returns a `
              ` with a thumbnail linked to a full picture\r\n *\r\n * @param {Object} `context` Object with values/attributes to add to the generated elements:\r\n * @param {String} `context.alt`\r\n * @param {String} `context.src`\r\n * @param {Number} `context.width`\r\n * @param {Number} `context.height`\r\n * @return {String} HTML `
              ` element with image and optional caption/link.\r\n * @contributor: Marie Hogebrandt \r\n * @api public\r\n */\r\n\r\nhelpers.thumbnailImage = function(context) {\r\n var figure = '';\r\n var image = '';\r\n\r\n var link = context.full || false;\r\n var imageAttributes = {\r\n alt: context.alt,\r\n src: context.thumbnail,\r\n width: context.size.width,\r\n height: context.size.height\r\n };\r\n\r\n var figureAttributes = { id: 'image-' + context.id };\r\n var linkAttributes = { href: link, rel: 'thumbnail' };\r\n\r\n if (context.classes) {\r\n if (context.classes.image) {\r\n imageAttributes.class = context.classes.image.join(' ');\r\n }\r\n if (context.classes.figure) {\r\n figureAttributes.class = context.classes.figure.join(' ');\r\n }\r\n if (context.classes.link) {\r\n linkAttributes.class = context.classes.link.join(' ');\r\n }\r\n }\r\n\r\n figure += '
              \\n';\r\n image += '\\n';\r\n\r\n if (link) {\r\n figure += '\\n' + image + '\\n';\r\n } else {\r\n figure += image;\r\n }\r\n\r\n if (context.caption) {\r\n figure += '
              ' + context.caption + '
              \\n';\r\n }\r\n\r\n figure += '
              ';\r\n return figure;\r\n};\r\n","'use strict';\r\n\r\nvar util = require('handlebars-utils');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * i18n helper. See [button-i18n](https://github.com/assemble/buttons)\r\n * for a working example.\r\n *\r\n * @contributor Laurent Goderre \r\n * @param {String} `key`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.i18n = function(prop, locals, options) {\r\n if (util.isOptions(locals)) {\r\n options = locals;\r\n locals = {};\r\n }\r\n\r\n if (!util.isString(prop)) {\r\n throw new Error('{{i18n}} helper expected \"key\" to be a string');\r\n }\r\n\r\n var opts = util.options(this, locals, options);\r\n var context = Object.assign({}, this, opts);\r\n\r\n var lang = context.language || context.lang;\r\n\r\n if (!util.isString(lang)) {\r\n throw new TypeError('{{i18n}} helper expected \"language\" to be a string');\r\n }\r\n\r\n var cache = context[lang];\r\n if (typeof cache === 'undefined') {\r\n throw new Error('{{i18n}} helper cannot find language \"' + lang + '\"');\r\n }\r\n\r\n var result = utils.get(cache, prop);\r\n if (typeof result === 'undefined') {\r\n throw new Error('{{i18n}} helper cannot find property \"' + prop + '\" for language \"' + lang + '\"');\r\n }\r\n\r\n return result;\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n array: require('./array'),\r\n code: require('./code'),\r\n collection: require('./collection'),\r\n comparison: require('./comparison'),\r\n date: require('./date'),\r\n fs: require('./fs'),\r\n html: require('./html'),\r\n i18n: require('./i18n'),\r\n inflection: require('./inflection'),\r\n logging: require('./logging'),\r\n markdown: require('./markdown'),\r\n match: require('./match'),\r\n math: require('./math'),\r\n misc: require('./misc'),\r\n number: require('./number'),\r\n object: require('./object'),\r\n path: require('./path'),\r\n regex: require('./regex'),\r\n string: require('./string'),\r\n url: require('./url')\r\n};\r\n","'use strict';\r\n\r\nvar util = require('handlebars-utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Returns either the `singular` or `plural` inflection of a word based on\r\n * the given `count`.\r\n *\r\n * ```handlebars\r\n * {{inflect 0 \"string\" \"strings\"}}\r\n * \r\n * {{inflect 1 \"string\" \"strings\"}}\r\n * \r\n * {{inflect 1 \"string\" \"strings\" true}}\r\n * \r\n * {{inflect 2 \"string\" \"strings\"}}\r\n * \r\n * {{inflect 2 \"string\" \"strings\" true}}\r\n * \r\n * ```\r\n * @param {Number} `count`\r\n * @param {String} `singular` The singular form\r\n * @param {String} `plural` The plural form\r\n * @param {String} `includeCount`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.inflect = function(count, singular, plural, includeCount) {\r\n var word = (count > 1 || count === 0) ? plural : singular;\r\n if (includeCount === true) {\r\n return String(count) + ' ' + word;\r\n } else {\r\n return word;\r\n }\r\n};\r\n\r\n/**\r\n * Returns an ordinalized number as a string.\r\n *\r\n * ```handlebars\r\n * {{ordinalize 1}}\r\n * \r\n * {{ordinalize 21}}\r\n * \r\n * {{ordinalize 29}}\r\n * \r\n * {{ordinalize 22}}\r\n * \r\n * ```\r\n *\r\n * @param {String} `val` The value to ordinalize.\r\n * @return {String} The ordinalized number\r\n * @api public\r\n */\r\n\r\nhelpers.ordinalize = function(val) {\r\n var num = Math.abs(Math.round(val));\r\n var str = String(val);\r\n var res = num % 100;\r\n\r\n if (util.indexOf([11, 12, 13], res) >= 0) {\r\n return str + 'th';\r\n }\r\n\r\n switch (num % 10) {\r\n case 1:\r\n return str + 'st';\r\n case 2:\r\n return str + 'nd';\r\n case 3:\r\n return str + 'rd';\r\n default: {\r\n return str + 'th';\r\n }\r\n }\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * [logging-helpers](https://github.com/helpers/logging-helpers).\r\n * @api public\r\n */\r\n\r\nmodule.exports = require('logging-helpers');\r\n","'use strict';\r\n\r\n/**\r\n * Expose markdown `helpers` (for performance we're using getters so\r\n * that the helpers are only loaded if called)\r\n */\r\n\r\nvar helpers = module.exports;\r\nvar markdown;\r\n\r\n/**\r\n * Block helper that converts a string of inline markdown to HTML.\r\n *\r\n * ```handlebars\r\n * {{#markdown}}\r\n * # Foo\r\n * {{/markdown}}\r\n * \r\n * ```\r\n * @name .markdown\r\n * @param {Object} `context`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nObject.defineProperty(helpers, 'markdown', {\r\n configurable: true,\r\n enumerable: true,\r\n set: function(val) {\r\n markdown = val;\r\n },\r\n get: function() {\r\n // this is defined as a getter to avoid calling this function\r\n // unless the helper is actually used\r\n return markdown || (markdown = require('helper-markdown')());\r\n }\r\n});\r\n\r\n/**\r\n * Read a markdown file from the file system and inject its contents after\r\n * converting it to HTML.\r\n *\r\n * ```handlebars\r\n * {{md \"foo/bar.md\"}}\r\n * ```\r\n * @param {Object} `context`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.md = require('helper-md');\r\n","'use strict';\r\n\r\nvar util = require('handlebars-utils');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Returns an array of strings that match the given glob pattern(s).\r\n * Options may be passed on the options hash or locals.\r\n *\r\n * ```handlebars\r\n * {{match (readdir \"foo\") \"*.js\"}}\r\n * {{match (readdir \"foo\") (toRegex \"\\\\.js$\")}}\r\n * ```\r\n * @param {Array|String} `files`\r\n * @param {Array|String} `patterns` One or more glob patterns.\r\n * @param {Object} `locals`\r\n * @param {Object} `options`\r\n * @return {Array} Array of matches\r\n * @api public\r\n */\r\n\r\nhelpers.match = function(files, patterns, locals, options) {\r\n var opts = util.options(this, locals, options);\r\n if (typeof patterns === 'string') {\r\n patterns = patterns.split(/, */);\r\n }\r\n return utils.mm(files, patterns, opts);\r\n};\r\n\r\n/**\r\n * Returns true if a filepath contains the given pattern.\r\n * Options may be passed on the options hash or locals.\r\n *\r\n * ```handlebars\r\n * {{isMatch \"foo.md\" \"*.md\"}}\r\n * \r\n * ```\r\n *\r\n * @param {String} `filepath`\r\n * @param {String} `pattern`\r\n * @param {Object} `options`\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nhelpers.isMatch = function(files, patterns, locals, options) {\r\n var opts = util.options(this, locals, options);\r\n return utils.mm.isMatch(files, patterns, opts);\r\n};\r\n\r\n/**\r\n * Alias for micromatch helper. Deprecated in v0.9.0.\r\n */\r\n\r\nhelpers.mm = function() {\r\n console.log('the {{mm}} helper is depcrecated and will be removed');\r\n console.log('in handlebars-helpers v1.0.0, please use the {{match}}');\r\n console.log('helper instead.');\r\n return helpers.match.apply(this, arguments);\r\n};\r\n","'use strict';\r\n\r\nvar isNumber = require('is-number');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Return the magnitude of `a`.\r\n *\r\n * @param {Number} `a`\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.abs = function(num) {\r\n if (!isNumber(num)) {\r\n throw new TypeError('expected a number');\r\n }\r\n return Math.abs(num);\r\n};\r\n\r\n/**\r\n * Return the sum of `a` plus `b`.\r\n *\r\n * @param {Number} `a`\r\n * @param {Number} `b`\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.add = function(a, b) {\r\n if (isNumber(a) && isNumber(b)) {\r\n return Number(a) + Number(b);\r\n }\r\n if (typeof a === 'string' && typeof b === 'string') {\r\n return a + b;\r\n }\r\n return '';\r\n};\r\n\r\n/**\r\n * Returns the average of all numbers in the given array.\r\n *\r\n * ```handlebars\r\n * {{avg \"[1, 2, 3, 4, 5]\"}}\r\n * \r\n * ```\r\n *\r\n * @param {Array} `array` Array of numbers to add up.\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.avg = function() {\r\n var args = [].concat.apply([], arguments);\r\n // remove handlebars options object\r\n args.pop();\r\n return helpers.sum(args) / args.length;\r\n};\r\n\r\n/**\r\n * Get the `Math.ceil()` of the given value.\r\n *\r\n * @param {Number} `value`\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.ceil = function(num) {\r\n if (!isNumber(num)) {\r\n throw new TypeError('expected a number');\r\n }\r\n return Math.ceil(num);\r\n};\r\n\r\n/**\r\n * Divide `a` by `b`\r\n *\r\n * @param {Number} `a` numerator\r\n * @param {Number} `b` denominator\r\n * @api public\r\n */\r\n\r\nhelpers.divide = function(a, b) {\r\n if (!isNumber(a)) {\r\n throw new TypeError('expected the first argument to be a number');\r\n }\r\n if (!isNumber(b)) {\r\n throw new TypeError('expected the second argument to be a number');\r\n }\r\n return Number(a) / Number(b);\r\n};\r\n\r\n/**\r\n * Get the `Math.floor()` of the given value.\r\n *\r\n * @param {Number} `value`\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.floor = function(num) {\r\n if (!isNumber(num)) {\r\n throw new TypeError('expected a number');\r\n }\r\n return Math.floor(num);\r\n};\r\n\r\n/**\r\n * Return the difference of `a` minus `b`.\r\n *\r\n * @param {Number} `a`\r\n * @param {Number} `b`\r\n * @alias subtract\r\n * @api public\r\n */\r\n\r\nhelpers.minus = function(a, b) {\r\n if (!isNumber(a)) {\r\n throw new TypeError('expected the first argument to be a number');\r\n }\r\n if (!isNumber(b)) {\r\n throw new TypeError('expected the second argument to be a number');\r\n }\r\n return Number(a) - Number(b);\r\n};\r\n\r\n/**\r\n * Get the remainder of a division operation.\r\n *\r\n * @param {Number} `a`\r\n * @param {Number} `b`\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.modulo = function(a, b) {\r\n if (!isNumber(a)) {\r\n throw new TypeError('expected the first argument to be a number');\r\n }\r\n if (!isNumber(b)) {\r\n throw new TypeError('expected the second argument to be a number');\r\n }\r\n return Number(a) % Number(b);\r\n};\r\n\r\n/**\r\n * Return the product of `a` times `b`.\r\n *\r\n * @param {Number} `a` factor\r\n * @param {Number} `b` multiplier\r\n * @return {Number}\r\n * @alias times\r\n * @api public\r\n */\r\n\r\nhelpers.multiply = function(a, b) {\r\n if (!isNumber(a)) {\r\n throw new TypeError('expected the first argument to be a number');\r\n }\r\n if (!isNumber(b)) {\r\n throw new TypeError('expected the second argument to be a number');\r\n }\r\n return Number(a) * Number(b);\r\n};\r\n\r\n/**\r\n * Add `a` by `b`.\r\n *\r\n * @param {Number} `a` factor\r\n * @param {Number} `b` multiplier\r\n * @api public\r\n */\r\n\r\nhelpers.plus = function(a, b) {\r\n if (!isNumber(a)) {\r\n throw new TypeError('expected the first argument to be a number');\r\n }\r\n if (!isNumber(b)) {\r\n throw new TypeError('expected the second argument to be a number');\r\n }\r\n return Number(a) + Number(b);\r\n};\r\n\r\n/**\r\n * Generate a random number between two values\r\n *\r\n * @param {Number} `min`\r\n * @param {Number} `max`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.random = function(min, max) {\r\n if (!isNumber(min)) {\r\n throw new TypeError('expected minimum to be a number');\r\n }\r\n if (!isNumber(max)) {\r\n throw new TypeError('expected maximum to be a number');\r\n }\r\n return utils.random(min, max);\r\n};\r\n\r\n/**\r\n * Get the remainder when `a` is divided by `b`.\r\n *\r\n * @param {Number} `a` a\r\n * @param {Number} `b` b\r\n * @api public\r\n */\r\n\r\nhelpers.remainder = function(a, b) {\r\n return a % b;\r\n};\r\n\r\n/**\r\n * Round the given number.\r\n *\r\n * @param {Number} `number`\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.round = function(num) {\r\n if (!isNumber(num)) {\r\n throw new TypeError('expected a number');\r\n }\r\n return Math.round(num);\r\n};\r\n\r\n/**\r\n * Return the product of `a` minus `b`.\r\n *\r\n * @param {Number} `a`\r\n * @param {Number} `b`\r\n * @return {Number}\r\n * @alias minus\r\n * @api public\r\n */\r\n\r\nhelpers.subtract = function(a, b) {\r\n if (!isNumber(a)) {\r\n throw new TypeError('expected the first argument to be a number');\r\n }\r\n if (!isNumber(b)) {\r\n throw new TypeError('expected the second argument to be a number');\r\n }\r\n return Number(a) - Number(b);\r\n};\r\n\r\n/**\r\n * Returns the sum of all numbers in the given array.\r\n *\r\n * ```handlebars\r\n * {{sum \"[1, 2, 3, 4, 5]\"}}\r\n * \r\n * ```\r\n * @param {Array} `array` Array of numbers to add up.\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.sum = function() {\r\n var args = [].concat.apply([], arguments);\r\n var len = args.length;\r\n var sum = 0;\r\n\r\n while (len--) {\r\n if (utils.isNumber(args[len])) {\r\n sum += Number(args[len]);\r\n }\r\n }\r\n return sum;\r\n};\r\n\r\n/**\r\n * Multiply number `a` by number `b`.\r\n *\r\n * @param {Number} `a` factor\r\n * @param {Number} `b` multiplier\r\n * @return {Number}\r\n * @alias multiply\r\n * @api public\r\n */\r\n\r\nhelpers.times = function() {\r\n return helpers.multiply.apply(this, arguments);\r\n};\r\n","'use strict';\r\n\r\nvar util = require('handlebars-utils');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Block helper for exposing private `@` variables on the context\r\n */\r\n\r\nhelpers.frame = require('handlebars-helper-create-frame');\r\n\r\n/**\r\n * Return the given value of `prop` from `this.options`.\r\n *\r\n * ```handlebars\r\n * \r\n * {{option \"a.b.c\"}}\r\n * \r\n * ```\r\n * @param {String} `prop`\r\n * @return {any}\r\n * @api public\r\n */\r\n\r\nhelpers.option = function(prop, locals, options) {\r\n return utils.get(util.options(this, locals, options), prop);\r\n};\r\n\r\n/**\r\n * Block helper that renders the block without taking any arguments.\r\n *\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.noop = function(options) {\r\n return options.fn(this);\r\n};\r\n\r\n/**\r\n * Get the native type of the given `value`\r\n *\r\n * ```handlebars\r\n * {{typeOf 1}}\r\n * //=> 'number'\r\n * {{typeOf \"1\"}}\r\n * //=> 'string'\r\n * {{typeOf \"foo\"}}\r\n * //=> 'string'\r\n * ```\r\n * @param {any} `value`\r\n * @return {String} Returns the type of value.\r\n * @api public\r\n */\r\n\r\nhelpers.typeOf = require('kind-of');\r\n\r\n/**\r\n * Block helper that builds the context for the block\r\n * from the options hash.\r\n *\r\n * @param {Object} `options` Handlebars provided options object.\r\n * @contributor Vladimir Kuznetsov \r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.withHash = function(options) {\r\n if (options.hash && Object.keys(options.hash).length) {\r\n return options.fn(options.hash);\r\n } else {\r\n return options.inverse(this);\r\n }\r\n};\r\n","'use strict';\r\n\r\nvar isNumber = require('is-number');\r\nvar util = require('handlebars-utils');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Format a number to it's equivalent in bytes. If a string is passed,\r\n * it's length will be formatted and returned.\r\n *\r\n * **Examples:**\r\n *\r\n * - `'foo' => 3 B`\r\n * - `13661855 => 13.66 MB`\r\n * - `825399 => 825.39 kB`\r\n * - `1396 => 1.4 kB`\r\n *\r\n * @param {Number|String} `number`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.bytes = function(number, precision, options) {\r\n if (number == null) return '0 B';\r\n\r\n if (!utils.isNumber(number)) {\r\n number = number.length;\r\n if (!number) return '0 B';\r\n }\r\n\r\n if (!utils.isNumber(precision)) {\r\n precision = 2;\r\n }\r\n\r\n var abbr = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n precision = Math.pow(10, precision);\r\n number = Number(number);\r\n\r\n var len = abbr.length - 1;\r\n while (len-- >= 0) {\r\n var size = Math.pow(10, len * 3);\r\n if (size <= (number + 1)) {\r\n number = Math.round(number * precision / size) / precision;\r\n number += ' ' + abbr[len];\r\n break;\r\n }\r\n }\r\n\r\n return number;\r\n};\r\n\r\n/**\r\n * Add commas to numbers\r\n *\r\n * @param {Number} `num`\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.addCommas = function(num) {\r\n return num.toString().replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1,');\r\n};\r\n\r\n/**\r\n * Convert a string or number to a formatted phone number.\r\n *\r\n * @param {Number|String} `num` The phone number to format, e.g. `8005551212`\r\n * @return {Number} Formatted phone number: `(800) 555-1212`\r\n * @source http://bit.ly/QlPmPr\r\n * @api public\r\n */\r\n\r\nhelpers.phoneNumber = function(num) {\r\n num = num.toString();\r\n\r\n return '(' + num.substr(0, 3) + ') '\r\n + num.substr(3, 3) + '-'\r\n + num.substr(6, 4);\r\n};\r\n\r\n/**\r\n * Abbreviate numbers to the given number of `precision`. This is for\r\n * general numbers, not size in bytes.\r\n *\r\n * @param {Number} `number`\r\n * @param {Number} `precision`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.toAbbr = function(number, precision) {\r\n if (!utils.isNumber(number)) {\r\n number = 0;\r\n }\r\n if (util.isUndefined(precision)) {\r\n precision = 2;\r\n }\r\n\r\n number = Number(number);\r\n // 2 decimal places => 100, 3 => 1000, etc.\r\n precision = Math.pow(10, precision);\r\n var abbr = ['k', 'm', 'b', 't', 'q'];\r\n var len = abbr.length - 1;\r\n\r\n while (len >= 0) {\r\n var size = Math.pow(10, (len + 1) * 3);\r\n if (size <= (number + 1)) {\r\n number = Math.round(number * precision / size) / precision;\r\n number += abbr[len];\r\n break;\r\n }\r\n len--;\r\n }\r\n return number;\r\n};\r\n\r\n/**\r\n * Returns a string representing the given number in exponential notation.\r\n *\r\n * ```handlebars\r\n * {{toExponential number digits}};\r\n * ```\r\n * @param {Number} `number`\r\n * @param {Number} `fractionDigits` Optional. An integer specifying the number of digits to use after the decimal point. Defaults to as many digits as necessary to specify the number.\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.toExponential = function(number, digits) {\r\n if (!utils.isNumber(number)) {\r\n number = 0;\r\n }\r\n if (util.isUndefined(digits)) {\r\n digits = 0;\r\n }\r\n return Number(number).toExponential(digits);\r\n};\r\n\r\n/**\r\n * Formats the given number using fixed-point notation.\r\n *\r\n * ```handlebars\r\n * {{toFixed \"1.1234\" 2}}\r\n * //=> '1.12'\r\n * ```\r\n * @param {Number} `number`\r\n * @param {Number} `digits` (Optional) The number of digits to appear after the decimal point; this may be a value between 0 and 20. If this argument is omitted, it is treated as 0.\r\n * @return {String} A string representing the given number using fixed-point notation.\r\n * @api public\r\n */\r\n\r\nhelpers.toFixed = function(number, digits) {\r\n if (!utils.isNumber(number)) {\r\n number = 0;\r\n }\r\n if (!isNumber(digits)) {\r\n digits = 0;\r\n }\r\n return Number(number).toFixed(digits);\r\n};\r\n\r\n/**\r\n * @param {Number} `number`\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.toFloat = function(number) {\r\n return parseFloat(number);\r\n};\r\n\r\n/**\r\n * @param {Number} `number`\r\n * @return {Number}\r\n * @api public\r\n */\r\n\r\nhelpers.toInt = function(number) {\r\n return parseInt(number, 10);\r\n};\r\n\r\n/**\r\n * Returns a string representing the `Number` object to the specified precision.\r\n *\r\n * ```handlebars\r\n * {{toPrecision \"1.1234\" 2}}\r\n * //=> '1.1'\r\n * ```\r\n * @param {Number} `number`\r\n * @param {Number} `precision` (Optional) An integer specifying the number of significant digits. If precison is not between 1 and 100 (inclusive), it will be coerced to `0`.\r\n * @return {String} A string representing a Number object in fixed-point or exponential notation rounded to precision significant digits.\r\n * @api public\r\n */\r\n\r\nhelpers.toPrecision = function(number, precision) {\r\n if (!utils.isNumber(number)) {\r\n number = 0;\r\n }\r\n if (!isNumber(precision)) {\r\n precision = 1;\r\n }\r\n return Number(number).toPrecision(precision);\r\n};\r\n","'use strict';\r\n\r\nvar hasOwn = Object.hasOwnProperty;\r\nvar util = require('handlebars-utils');\r\nvar array = require('./array');\r\nvar utils = require('./utils/');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Extend the context with the properties of other objects.\r\n * A shallow merge is performed to avoid mutating the context.\r\n *\r\n * @param {Object} `objects` One or more objects to extend.\r\n * @return {Object}\r\n * @api public\r\n */\r\n\r\nhelpers.extend = function(/*objects*/) {\r\n var args = [].slice.call(arguments);\r\n var opts = {};\r\n\r\n if (util.isOptions(args[args.length - 1])) {\r\n // remove handlebars options object\r\n opts = args.pop().hash;\r\n // re-add handlebars options.hash object\r\n args.push(opts);\r\n }\r\n\r\n var context = {};\r\n for (var i = 0; i < args.length; i++) {\r\n var obj = args[i];\r\n if (util.isObject(obj)) {\r\n var keys = Object.keys(obj);\r\n for (var j = 0; j < keys.length; j++) {\r\n var key = keys[j];\r\n context[key] = obj[key];\r\n }\r\n }\r\n }\r\n\r\n return context;\r\n};\r\n\r\n/**\r\n * Block helper that iterates over the properties of\r\n * an object, exposing each key and value on the context.\r\n *\r\n * @param {Object} `context`\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.forIn = function(obj, options) {\r\n if (!util.isOptions(options)) {\r\n return obj.inverse(this);\r\n }\r\n\r\n var data = utils.createFrame(options, options.hash);\r\n var result = '';\r\n\r\n for (var key in obj) {\r\n data.key = key;\r\n result += options.fn(obj[key], {data: data});\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Block helper that iterates over the **own** properties of\r\n * an object, exposing each key and value on the context.\r\n *\r\n * @param {Object} `obj` The object to iterate over.\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.forOwn = function(obj, options) {\r\n if (!util.isOptions(options)) {\r\n return obj.inverse(this);\r\n }\r\n\r\n var data = utils.createFrame(options, options.hash);\r\n var result = '';\r\n\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n data.key = key;\r\n result += options.fn(obj[key], {data: data});\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Take arguments and, if they are string or number, convert them to a dot-delineated object property path.\r\n *\r\n * @param {String|Number} `prop` The property segments to assemble (can be multiple).\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.toPath = function(/*prop*/) {\r\n var prop = [];\r\n for (var i = 0; i < arguments.length; i++) {\r\n if (typeof arguments[i] === 'string' || typeof arguments[i] === 'number') {\r\n prop.push(arguments[i]);\r\n }\r\n }\r\n return prop.join('.');\r\n};\r\n\r\n/**\r\n * Use property paths (`a.b.c`) to get a value or nested value from\r\n * the context. Works as a regular helper or block helper.\r\n *\r\n * @param {String} `prop` The property to get, optionally using dot notation for nested properties.\r\n * @param {Object} `context` The context object\r\n * @param {Object} `options` The handlebars options object, if used as a block helper.\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.get = function(prop, context, options) {\r\n var val = utils.get(context, prop);\r\n if (options && options.fn) {\r\n return val ? options.fn(val) : options.inverse(context);\r\n }\r\n return val;\r\n};\r\n\r\n/**\r\n * Use property paths (`a.b.c`) to get an object from\r\n * the context. Differs from the `get` helper in that this\r\n * helper will return the actual object, including the\r\n * given property key. Also, this helper does not work as a\r\n * block helper.\r\n *\r\n * @param {String} `prop` The property to get, optionally using dot notation for nested properties.\r\n * @param {Object} `context` The context object\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.getObject = function(prop, context) {\r\n return utils.getObject(context, prop);\r\n};\r\n\r\n/**\r\n * Return true if `key` is an own, enumerable property\r\n * of the given `context` object.\r\n *\r\n * ```handlebars\r\n * {{hasOwn context key}}\r\n * ```\r\n *\r\n * @param {String} `key`\r\n * @param {Object} `context` The context object.\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nhelpers.hasOwn = function(context, key) {\r\n return hasOwn.call(context, key);\r\n};\r\n\r\n/**\r\n * Return true if `value` is an object.\r\n *\r\n * ```handlebars\r\n * {{isObject \"foo\"}}\r\n * //=> false\r\n * ```\r\n * @param {String} `value`\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nhelpers.isObject = function(value) {\r\n return utils.typeOf(value) === 'object';\r\n};\r\n\r\n/**\r\n * Parses the given string using `JSON.parse`.\r\n *\r\n * ```handlebars\r\n * \r\n * {{JSONparse string}}\r\n * \r\n * ```\r\n * @param {String} `string` The string to parse\r\n * @contributor github.com/keeganstreet\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.JSONparse = function(str, options) {\r\n return JSON.parse(str);\r\n};\r\n\r\n/**\r\n * Stringify an object using `JSON.stringify`.\r\n *\r\n * ```handlebars\r\n * \r\n * {{JSONstringify object}}\r\n * \r\n * ```\r\n * @param {Object} `obj` Object to stringify\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.JSONstringify = function(obj, indent) {\r\n if (!utils.isNumber(indent)) {\r\n indent = 0;\r\n }\r\n return JSON.stringify(obj, null, indent);\r\n};\r\n\r\n/**\r\n * Deeply merge the properties of the given `objects` with the\r\n * context object.\r\n *\r\n * @param {Object} `object` The target object. Pass an empty object to shallow clone.\r\n * @param {Object} `objects`\r\n * @return {Object}\r\n * @api public\r\n */\r\n\r\nhelpers.merge = function(context/*, objects, options*/) {\r\n var args = [].slice.call(arguments);\r\n var opts = {};\r\n\r\n if (util.isOptions(args[args.length - 1])) {\r\n // remove handlebars options object\r\n opts = args.pop().hash;\r\n // re-add options.hash\r\n args.push(opts);\r\n }\r\n\r\n return Object.assign.apply(null, args);\r\n};\r\n\r\n/**\r\n * Alias for parseJSON. this will be\r\n * deprecated in a future release\r\n */\r\n\r\nhelpers.parseJSON = helpers.JSONparse;\r\n\r\n/**\r\n * Pick properties from the context object.\r\n *\r\n * @param {Array|String} `properties` One or more properties to pick.\r\n * @param {Object} `context`\r\n * @param {Object} `options` Handlebars options object.\r\n * @return {Object} Returns an object with the picked values. If used as a block helper, the values are passed as context to the inner block. If no values are found, the context is passed to the inverse block.\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.pick = function(props, context, options) {\r\n var keys = array.arrayify(props);\r\n var len = keys.length, i = -1;\r\n var result = {};\r\n\r\n while (++i < len) {\r\n result = helpers.extend({}, result, utils.getObject(context, keys[i]));\r\n }\r\n\r\n if (options.fn) {\r\n if (Object.keys(result).length) {\r\n return options.fn(result);\r\n }\r\n return options.inverse(context);\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Alias for JSONstringify. this will be\r\n * deprecated in a future release\r\n */\r\n\r\nhelpers.stringify = helpers.JSONstringify;\r\n","'use strict';\r\n\r\nvar util = require('handlebars-utils');\r\nvar path = require('path');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Get the directory path segment from the given `filepath`.\r\n *\r\n * ```handlebars\r\n * {{absolute \"docs/toc.md\"}}\r\n * \r\n * ```\r\n * @param {String} `ext`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.absolute = function(filepath, options) {\r\n options = options || {data: {}};\r\n var context = util.options(this, options);\r\n var ctx = Object.assign({}, options.data.root, context);\r\n var cwd = ctx.cwd || process.cwd();\r\n return path.resolve(cwd, filepath);\r\n};\r\n\r\n/**\r\n * Get the directory path segment from the given `filepath`.\r\n *\r\n * ```handlebars\r\n * {{dirname \"docs/toc.md\"}}\r\n * \r\n * ```\r\n * @param {String} `ext`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.dirname = function(filepath, options) {\r\n if (typeof filepath !== 'string') {\r\n throw new TypeError(utils.expectedType('filepath', 'string', filepath));\r\n }\r\n return path.dirname(filepath);\r\n};\r\n\r\n/**\r\n * Get the relative filepath from `a` to `b`.\r\n *\r\n * ```handlebars\r\n * {{relative a b}}\r\n * ```\r\n * @param {String} `a`\r\n * @param {String} `b`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.relative = function(a, b) {\r\n if (typeof a !== 'string') {\r\n throw new TypeError(utils.expectedType('first path', 'string', a));\r\n }\r\n if (typeof b !== 'string') {\r\n throw new TypeError(utils.expectedType('second path', 'string', b));\r\n }\r\n return utils.relative(a, b);\r\n};\r\n\r\n/**\r\n * Get the file extension from the given `filepath`.\r\n *\r\n * ```handlebars\r\n * {{basename \"docs/toc.md\"}}\r\n * \r\n * ```\r\n * @param {String} `ext`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.basename = function(filepath) {\r\n if (typeof filepath !== 'string') {\r\n throw new TypeError(utils.expectedType('filepath', 'string', filepath));\r\n }\r\n return path.basename(filepath);\r\n};\r\n\r\n/**\r\n * Get the \"stem\" from the given `filepath`.\r\n *\r\n * ```handlebars\r\n * {{stem \"docs/toc.md\"}}\r\n * \r\n * ```\r\n * @param {String} `filepath`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.stem = function(filepath) {\r\n if (typeof filepath !== 'string') {\r\n throw new TypeError(utils.expectedType('filepath', 'string', filepath));\r\n }\r\n return path.basename(filepath, path.extname(filepath));\r\n};\r\n\r\n/**\r\n * Get the file extension from the given `filepath`.\r\n *\r\n * ```handlebars\r\n * {{extname \"docs/toc.md\"}}\r\n * \r\n * ```\r\n * @param {String} `filepath`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.extname = function(filepath) {\r\n if (typeof filepath !== 'string') {\r\n throw new TypeError(utils.expectedType('filepath', 'string', filepath));\r\n }\r\n return path.extname(filepath);\r\n};\r\n\r\n/**\r\n * Resolve an absolute path from the given `filepath`.\r\n *\r\n * ```handlebars\r\n * {{resolve \"docs/toc.md\"}}\r\n * \r\n * ```\r\n * @param {String} `filepath`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.resolve = function(filepath) {\r\n var args = [].slice.call(arguments);\r\n var opts = util.options(this, args.pop());\r\n var cwd = path.resolve(opts.cwd || process.cwd());\r\n args.unshift(cwd);\r\n return path.resolve.apply(path, args);\r\n};\r\n\r\n/**\r\n * Get specific (joined) segments of a file path by passing a\r\n * range of array indices.\r\n *\r\n * ```handlebars\r\n * {{segments \"a/b/c/d\" \"2\" \"3\"}}\r\n * \r\n *\r\n * {{segments \"a/b/c/d\" \"1\" \"3\"}}\r\n * \r\n *\r\n * {{segments \"a/b/c/d\" \"1\" \"2\"}}\r\n * \r\n * ```\r\n *\r\n * @param {String} `filepath` The file path to split into segments.\r\n * @return {String} Returns a single, joined file path.\r\n * @api public\r\n */\r\n\r\nhelpers.segments = function(filepath, a, b) {\r\n if (typeof filepath !== 'string') {\r\n throw new TypeError(utils.expectedType('filepath', 'string', filepath));\r\n }\r\n var segments = filepath.split(/[\\\\\\/]+/);\r\n return segments.slice(a, b).join('/');\r\n};\r\n","'use strict';\r\n\r\nvar util = require('handlebars-utils');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Convert the given string to a regular expression.\r\n *\r\n * ```handlebars\r\n * {{toRegex \"foo\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {RegExp}\r\n * @api public\r\n */\r\n\r\nhelpers.toRegex = function(str, locals, options) {\r\n var opts = util.options({}, locals, options);\r\n return new RegExp(str, opts.flags);\r\n};\r\n\r\n/**\r\n * Returns true if the given `str` matches the given regex. A regex can\r\n * be passed on the context, or using the [toRegex](#toregex) helper as a\r\n * subexpression.\r\n *\r\n * ```handlebars\r\n * {{test \"bar\" (toRegex \"foo\")}}\r\n * \r\n * {{test \"foobar\" (toRegex \"foo\")}}\r\n * \r\n * {{test \"foobar\" (toRegex \"^foo$\")}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {RegExp}\r\n * @api public\r\n */\r\n\r\nhelpers.test = function(str, regex) {\r\n if (!util.isString(str)) {\r\n return false;\r\n }\r\n if (!utils.typeOf(regex) === 'regexp') {\r\n throw new TypeError('expected a regular expression');\r\n }\r\n return regex.test(str);\r\n};\r\n","'use strict';\r\n\r\nvar isNumber = require('is-number');\r\nvar util = require('handlebars-utils');\r\nvar utils = require('./utils');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Append the specified `suffix` to the given string.\r\n *\r\n * ```handlebars\r\n * \r\n * {{append item.stem \".html\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {String} `suffix`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.append = function(str, suffix) {\r\n if (typeof str === 'string' && typeof suffix === 'string') {\r\n return str + suffix;\r\n }\r\n return str;\r\n};\r\n\r\n/**\r\n * camelCase the characters in the given `string`.\r\n *\r\n * ```handlebars\r\n * {{camelcase \"foo bar baz\"}};\r\n * \r\n * ```\r\n * @param {String} `string` The string to camelcase.\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.camelcase = function(str) {\r\n if (!util.isString(str)) return '';\r\n return utils.changecase(str, function(ch) {\r\n return ch.toUpperCase();\r\n });\r\n};\r\n\r\n/**\r\n * Capitalize the first word in a sentence.\r\n *\r\n * ```handlebars\r\n * {{capitalize \"foo bar baz\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.capitalize = function(str) {\r\n if (!util.isString(str)) return '';\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n};\r\n\r\n/**\r\n * Capitalize all words in a string.\r\n *\r\n * ```handlebars\r\n * {{capitalizeAll \"foo bar baz\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.capitalizeAll = function(str) {\r\n if (!util.isString(str)) return '';\r\n if (util.isString(str)) {\r\n return str.replace(/\\w\\S*/g, function(word) {\r\n return helpers.capitalize(word);\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * Center a string using non-breaking spaces\r\n *\r\n * @param {String} `str`\r\n * @param {String} `spaces`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.center = function(str, spaces) {\r\n if (!util.isString(str)) return '';\r\n var space = '';\r\n var i = 0;\r\n while (i < spaces) {\r\n space += ' ';\r\n i++;\r\n }\r\n return space + str + space;\r\n};\r\n\r\n/**\r\n * Like trim, but removes both extraneous whitespace **and\r\n * non-word characters** from the beginning and end of a string.\r\n *\r\n * ```handlebars\r\n * {{chop \"_ABC_\"}}\r\n * \r\n *\r\n * {{chop \"-ABC-\"}}\r\n * \r\n *\r\n * {{chop \" ABC \"}}\r\n * \r\n * ```\r\n * @param {String} `string` The string to chop.\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.chop = function(str) {\r\n if (!util.isString(str)) return '';\r\n return utils.chop(str);\r\n};\r\n\r\n/**\r\n * dash-case the characters in `string`. Replaces non-word\r\n * characters and periods with hyphens.\r\n *\r\n * ```handlebars\r\n * {{dashcase \"a-b-c d_e\"}}\r\n * \r\n * ```\r\n * @param {String} `string`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.dashcase = function(str) {\r\n if (!util.isString(str)) return '';\r\n return utils.changecase(str, function(ch) {\r\n return '-' + ch;\r\n });\r\n};\r\n\r\n/**\r\n * dot.case the characters in `string`.\r\n *\r\n * ```handlebars\r\n * {{dotcase \"a-b-c d_e\"}}\r\n * \r\n * ```\r\n * @param {String} `string`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.dotcase = function(str) {\r\n if (!util.isString(str)) return '';\r\n return utils.changecase(str, function(ch) {\r\n return '.' + ch;\r\n });\r\n};\r\n\r\n/**\r\n * Lowercase all of the characters in the given string. Alias for [lowercase](#lowercase).\r\n *\r\n * ```handlebars\r\n * {{downcase \"aBcDeF\"}}\r\n * \r\n * ```\r\n * @param {String} `string`\r\n * @return {String}\r\n * @alias lowercase\r\n * @api public\r\n */\r\n\r\nhelpers.downcase = function() {\r\n return helpers.lowercase.apply(this, arguments);\r\n};\r\n\r\n/**\r\n * Truncates a string to the specified `length`, and appends\r\n * it with an elipsis, `…`.\r\n *\r\n * ```handlebars\r\n * {{ellipsis (sanitize \"foo bar baz\"), 7}}\r\n * \r\n * {{ellipsis \"foo bar baz\", 7}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {Number} `length` The desired length of the returned string.\r\n * @return {String} The truncated string.\r\n * @api public\r\n */\r\n\r\nhelpers.ellipsis = function(str, limit) {\r\n if (util.isString(str)) {\r\n if (str.length <= limit) {\r\n return str;\r\n }\r\n return helpers.truncate(str, limit) + '…';\r\n }\r\n};\r\n\r\n/**\r\n * Replace spaces in a string with hyphens.\r\n *\r\n * ```handlebars\r\n * {{hyphenate \"foo bar baz qux\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.hyphenate = function(str) {\r\n if (!util.isString(str)) return '';\r\n return str.split(' ').join('-');\r\n};\r\n\r\n/**\r\n * Return true if `value` is a string.\r\n *\r\n * ```handlebars\r\n * {{isString \"foo\"}}\r\n * \r\n * ```\r\n * @param {String} `value`\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nhelpers.isString = function(value) {\r\n return typeof value === 'string';\r\n};\r\n\r\n/**\r\n * Lowercase all characters in the given string.\r\n *\r\n * ```handlebars\r\n * {{lowercase \"Foo BAR baZ\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.lowercase = function(str) {\r\n if (util.isObject(str) && str.fn) {\r\n return str.fn(this).toLowerCase();\r\n }\r\n if (!util.isString(str)) return '';\r\n return str.toLowerCase();\r\n};\r\n\r\n/**\r\n * Return the number of occurrences of `substring` within the\r\n * given `string`.\r\n *\r\n * ```handlebars\r\n * {{occurrences \"foo bar foo bar baz\" \"foo\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {String} `substring`\r\n * @return {Number} Number of occurrences\r\n * @api public\r\n */\r\n\r\nhelpers.occurrences = function(str, substring) {\r\n if (!util.isString(str)) return '';\r\n var len = substring.length;\r\n var pos = 0;\r\n var n = 0;\r\n\r\n while ((pos = str.indexOf(substring, pos)) > -1) {\r\n n++;\r\n pos += len;\r\n }\r\n return n;\r\n};\r\n\r\n/**\r\n * PascalCase the characters in `string`.\r\n *\r\n * ```handlebars\r\n * {{pascalcase \"foo bar baz\"}}\r\n * \r\n * ```\r\n * @param {String} `string`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.pascalcase = function(str) {\r\n if (!util.isString(str)) return '';\r\n str = utils.changecase(str, function(ch) {\r\n return ch.toUpperCase();\r\n });\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n};\r\n\r\n/**\r\n * path/case the characters in `string`.\r\n *\r\n * ```handlebars\r\n * {{pathcase \"a-b-c d_e\"}}\r\n * \r\n * ```\r\n * @param {String} `string`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.pathcase = function(str) {\r\n if (!util.isString(str)) return '';\r\n return utils.changecase(str, function(ch) {\r\n return '/' + ch;\r\n });\r\n};\r\n\r\n/**\r\n * Replace spaces in the given string with pluses.\r\n *\r\n * ```handlebars\r\n * {{plusify \"foo bar baz\"}}\r\n * \r\n * ```\r\n * @param {String} `str` The input string\r\n * @return {String} Input string with spaces replaced by plus signs\r\n * @source Stephen Way \r\n * @api public\r\n */\r\n\r\nhelpers.plusify = function(str, ch) {\r\n if (!util.isString(str)) return '';\r\n if (!util.isString(ch)) ch = ' ';\r\n return str.split(ch).join('+');\r\n};\r\n\r\n/**\r\n * Prepends the given `string` with the specified `prefix`.\r\n *\r\n * ```handlebars\r\n * \r\n * {{prepend val \"foo-\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {String} `prefix`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.prepend = function(str, prefix) {\r\n return typeof str === 'string' && typeof prefix === 'string'\r\n ? (prefix + str)\r\n : str;\r\n};\r\n\r\n/**\r\n * Render a block without processing mustache templates inside the block.\r\n *\r\n * ```handlebars\r\n * {{{{#raw}}}}\r\n * {{foo}}\r\n * {{{{/raw}}}}\r\n * \r\n * ```\r\n *\r\n * @param {Object} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.raw = function(options) {\r\n var str = options.fn();\r\n var opts = util.options(this, options);\r\n if (opts.escape !== false) {\r\n var idx = 0;\r\n while (((idx = str.indexOf('{{', idx)) !== -1)) {\r\n if (str[idx - 1] !== '\\\\') {\r\n str = str.slice(0, idx) + '\\\\' + str.slice(idx);\r\n }\r\n idx += 3;\r\n }\r\n }\r\n return str;\r\n};\r\n\r\n/**\r\n * Remove all occurrences of `substring` from the given `str`.\r\n *\r\n * ```handlebars\r\n * {{remove \"a b a b a b\" \"a \"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {String} `substring`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.remove = function(str, ch) {\r\n if (!util.isString(str)) return '';\r\n if (!util.isString(ch)) return str;\r\n return str.split(ch).join('');\r\n};\r\n\r\n/**\r\n * Remove the first occurrence of `substring` from the given `str`.\r\n *\r\n * ```handlebars\r\n * {{remove \"a b a b a b\" \"a\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {String} `substring`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.removeFirst = function(str, ch) {\r\n if (!util.isString(str)) return '';\r\n if (!util.isString(ch)) return str;\r\n return str.replace(ch, '');\r\n};\r\n\r\n/**\r\n * Replace all occurrences of substring `a` with substring `b`.\r\n *\r\n * ```handlebars\r\n * {{replace \"a b a b a b\" \"a\" \"z\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {String} `a`\r\n * @param {String} `b`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.replace = function(str, a, b) {\r\n if (!util.isString(str)) return '';\r\n if (!util.isString(a)) return str;\r\n if (!util.isString(b)) b = '';\r\n return str.split(a).join(b);\r\n};\r\n\r\n/**\r\n * Replace the first occurrence of substring `a` with substring `b`.\r\n *\r\n * ```handlebars\r\n * {{replace \"a b a b a b\" \"a\" \"z\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {String} `a`\r\n * @param {String} `b`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.replaceFirst = function(str, a, b) {\r\n if (!util.isString(str)) return '';\r\n if (!util.isString(a)) return str;\r\n if (!util.isString(b)) b = '';\r\n return str.replace(a, b);\r\n};\r\n\r\n/**\r\n * Reverse a string.\r\n *\r\n * ```handlebars\r\n * {{reverse \"abcde\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.reverse = function(str) {\r\n if (!util.isString(str)) return '';\r\n return str.split('').reverse().join('');\r\n};\r\n\r\n/**\r\n * Sentence case the given string\r\n *\r\n * ```handlebars\r\n * {{sentence \"hello world. goodbye world.\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.sentence = function(str) {\r\n if (!util.isString(str)) return '';\r\n return str.replace(/((?:\\S[^\\.\\?\\!]*)[\\.\\?\\!]*)/g, function(txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n};\r\n\r\n/**\r\n * snake_case the characters in the given `string`.\r\n *\r\n * ```handlebars\r\n * {{snakecase \"a-b-c d_e\"}}\r\n * \r\n * ```\r\n * @param {String} `string`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.snakecase = function(str) {\r\n if (!util.isString(str)) return '';\r\n return utils.changecase(str, function(ch) {\r\n return '_' + ch;\r\n });\r\n};\r\n\r\n/**\r\n * Split `string` by the given `character`.\r\n *\r\n * ```handlebars\r\n * {{split \"a,b,c\" \",\"}}\r\n * \r\n * ```\r\n * @param {String} `string` The string to split.\r\n * @return {String} `character` Default is an empty string.\r\n * @api public\r\n */\r\n\r\nhelpers.split = function(str, ch) {\r\n if (!util.isString(str)) return '';\r\n if (!util.isString(ch)) ch = ',';\r\n return str.split(ch);\r\n};\r\n\r\n/**\r\n * Tests whether a string begins with the given prefix.\r\n *\r\n * ```handlebars\r\n * {{#startsWith \"Goodbye\" \"Hello, world!\"}}\r\n * Whoops\r\n * {{else}}\r\n * Bro, do you even hello world?\r\n * {{/startsWith}}\r\n * ```\r\n * @contributor Dan Fox \r\n * @param {String} `prefix`\r\n * @param {String} `testString`\r\n * @param {String} `options`\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.startsWith = function(prefix, str, options) {\r\n var args = [].slice.call(arguments);\r\n options = args.pop();\r\n if (util.isString(str) && str.indexOf(prefix) === 0) {\r\n return options.fn(this);\r\n }\r\n if (typeof options.inverse === 'function') {\r\n return options.inverse(this);\r\n }\r\n return '';\r\n};\r\n\r\n/**\r\n * Title case the given string.\r\n *\r\n * ```handlebars\r\n * {{titleize \"this is title case\"}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.titleize = function(str) {\r\n if (!util.isString(str)) return '';\r\n var title = str.replace(/[- _]+/g, ' ');\r\n var words = title.split(' ');\r\n var len = words.length;\r\n var res = [];\r\n var i = 0;\r\n while (len--) {\r\n var word = words[i++];\r\n res.push(exports.capitalize(word));\r\n }\r\n return res.join(' ');\r\n};\r\n\r\n/**\r\n * Removes extraneous whitespace from the beginning and end\r\n * of a string.\r\n *\r\n * ```handlebars\r\n * {{trim \" ABC \"}}\r\n * \r\n * ```\r\n * @param {String} `string` The string to trim.\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.trim = function(str) {\r\n return typeof str === 'string' ? str.trim() : '';\r\n};\r\n\r\n/**\r\n * Removes extraneous whitespace from the beginning of a string.\r\n *\r\n * ```handlebars\r\n * {{trim \" ABC \"}}\r\n * \r\n * ```\r\n * @param {String} `string` The string to trim.\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.trimLeft = function(str) {\r\n if (util.isString(str)) {\r\n return str.replace(/^\\s+/, '');\r\n }\r\n};\r\n\r\n/**\r\n * Removes extraneous whitespace from the end of a string.\r\n *\r\n * ```handlebars\r\n * {{trimRight \" ABC \"}}\r\n * \r\n * ```\r\n * @param {String} `string` The string to trim.\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.trimRight = function(str) {\r\n if (util.isString(str)) {\r\n return str.replace(/\\s+$/, '');\r\n }\r\n};\r\n\r\n/**\r\n * Truncate a string to the specified `length`. Also see [ellipsis](#ellipsis).\r\n *\r\n * ```handlebars\r\n * truncate(\"foo bar baz\", 7);\r\n * \r\n * truncate(sanitize(\"foo bar baz\", 7));\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {Number} `limit` The desired length of the returned string.\r\n * @param {String} `suffix` Optionally supply a string to use as a suffix to\r\n * denote when the string has been truncated. Otherwise an ellipsis (`…`) will be used.\r\n * @return {String} The truncated string.\r\n * @api public\r\n */\r\n\r\nhelpers.truncate = function(str, limit, suffix) {\r\n if (util.isString(str)) {\r\n if (typeof suffix !== 'string') {\r\n suffix = '';\r\n }\r\n if (str.length > limit) {\r\n return str.slice(0, limit - suffix.length) + suffix;\r\n }\r\n return str;\r\n }\r\n};\r\n\r\n/**\r\n * Truncate a string to have the specified number of words.\r\n * Also see [truncate](#truncate).\r\n *\r\n * ```handlebars\r\n * truncateWords(\"foo bar baz\", 1);\r\n * \r\n * truncateWords(\"foo bar baz\", 2);\r\n * \r\n * truncateWords(\"foo bar baz\", 3);\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @param {Number} `limit` The desired length of the returned string.\r\n * @param {String} `suffix` Optionally supply a string to use as a suffix to\r\n * denote when the string has been truncated.\r\n * @return {String} The truncated string.\r\n * @api public\r\n */\r\n\r\nhelpers.truncateWords = function(str, count, suffix) {\r\n if (util.isString(str) && isNumber(count)) {\r\n if (typeof suffix !== 'string') {\r\n suffix = '…';\r\n }\r\n\r\n var num = Number(count);\r\n var arr = str.split(/[ \\t]/);\r\n if (num > arr.length) {\r\n arr = arr.slice(0, num);\r\n }\r\n\r\n var val = arr.join(' ').trim();\r\n return val + suffix;\r\n }\r\n};\r\n\r\n/**\r\n * Uppercase all of the characters in the given string. Alias for [uppercase](#uppercase).\r\n *\r\n * ```handlebars\r\n * {{upcase \"aBcDeF\"}}\r\n * \r\n * ```\r\n * @param {String} `string`\r\n * @return {String}\r\n * @alias uppercase\r\n * @api public\r\n */\r\n\r\nhelpers.upcase = function() {\r\n return helpers.uppercase.apply(this, arguments);\r\n};\r\n\r\n/**\r\n * Uppercase all of the characters in the given string. If used as a\r\n * block helper it will uppercase the entire block. This helper\r\n * does not support inverse blocks.\r\n *\r\n * ```handlebars\r\n * {{uppercase \"aBcDeF\"}}\r\n * \r\n * ```\r\n * @related capitalize capitalizeAll\r\n * @param {String} `str` The string to uppercase\r\n * @param {Object} `options` Handlebars options object\r\n * @return {String}\r\n * @block\r\n * @api public\r\n */\r\n\r\nhelpers.uppercase = function(str) {\r\n if (util.isObject(str) && str.fn) {\r\n return str.fn(this).toUpperCase();\r\n }\r\n if (!util.isString(str)) return '';\r\n return str.toUpperCase();\r\n};\r\n","'use strict';\r\n\r\nvar url = require('url');\r\nvar util = require('handlebars-utils');\r\nvar querystring = require('querystring');\r\nvar helpers = module.exports;\r\n\r\n/**\r\n * Encodes a Uniform Resource Identifier (URI) component\r\n * by replacing each instance of certain characters by\r\n * one, two, three, or four escape sequences representing\r\n * the UTF-8 encoding of the character.\r\n *\r\n * @param {String} `str` The un-encoded string\r\n * @return {String} The endcoded string\r\n * @api public\r\n */\r\n\r\nhelpers.encodeURI = function(str) {\r\n if (util.isString(str)) {\r\n return encodeURIComponent(str);\r\n }\r\n};\r\n\r\n/**\r\n * Escape the given string by replacing characters with escape sequences.\r\n * Useful for allowing the string to be used in a URL, etc.\r\n *\r\n * @param {String} `str`\r\n * @return {String} Escaped string.\r\n * @api public\r\n */\r\n\r\nhelpers.escape = function(str) {\r\n if (util.isString(str)) {\r\n return querystring.escape(str);\r\n }\r\n};\r\n\r\n/**\r\n * Decode a Uniform Resource Identifier (URI) component.\r\n *\r\n * @param {String} `str`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.decodeURI = function(str) {\r\n if (util.isString(str)) {\r\n return decodeURIComponent(str);\r\n }\r\n};\r\n\r\n/**\r\n * Alias for [encodeURI](#encodeuri).\r\n * @api public\r\n */\r\n\r\nhelpers.url_encode = function() {\r\n return helpers.encodeURI.apply(this, arguments);\r\n};\r\n\r\n/**\r\n * Alias for [decodeURI](#decodeuri).\r\n * @api public\r\n */\r\n\r\nhelpers.url_decode = function(val) {\r\n return helpers.decodeURI.apply(this, arguments);\r\n};\r\n\r\n/**\r\n * Take a base URL, and a href URL, and resolve them as a\r\n * browser would for an anchor tag.\r\n *\r\n * @param {String} `base`\r\n * @param {String} `href`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhelpers.urlResolve = function(base, href) {\r\n return url.resolve(base, href);\r\n};\r\n\r\n/**\r\n * Parses a `url` string into an object.\r\n *\r\n * @param {String} `str` URL string\r\n * @return {String} Returns stringified JSON\r\n * @api public\r\n */\r\n\r\nhelpers.urlParse = function(str) {\r\n return url.parse(str);\r\n};\r\n\r\n/**\r\n * Strip the query string from the given `url`.\r\n *\r\n * @param {String} `url`\r\n * @return {String} the url without the queryString\r\n * @api public\r\n */\r\n\r\nhelpers.stripQuerystring = function(str) {\r\n if (util.isString(str)) {\r\n return str.split('?')[0];\r\n }\r\n};\r\n\r\n/**\r\n * Strip protocol from a `url`. Useful for displaying media that\r\n * may have an 'http' protocol on secure connections.\r\n *\r\n * ```handlebars\r\n * \r\n * {{stripProtocol url}}\r\n * \r\n * ```\r\n * @param {String} `str`\r\n * @return {String} the url with http protocol stripped\r\n * @api public\r\n */\r\n\r\nhelpers.stripProtocol = function(str) {\r\n if (util.isString(str)) {\r\n var parsed = url.parse(str);\r\n parsed.protocol = '';\r\n return parsed.format();\r\n }\r\n};\r\n","'use strict';\r\n\r\nvar util = require('handlebars-utils');\r\nvar striptags = require('striptags');\r\n\r\n/**\r\n * Expose `utils`\r\n */\r\n\r\nvar html = module.exports;\r\n\r\n/**\r\n * Remove extra newlines from HTML, respect indentation.\r\n *\r\n * @param {String} html\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhtml.condense = function(str) {\r\n return str.replace(/(\\r\\n|\\r|\\n|\\u2028|\\u2029) {2,}/g, '\\n');\r\n};\r\n\r\n/**\r\n * Add a single newline above code comments in HTML\r\n *\r\n * @param {String} `html`\r\n * @return {String}\r\n * @api public\r\n */\r\n\r\nhtml.padcomments = function(str) {\r\n return str.replace(/(\\s*'\r\n },\r\n {\r\n begin: ''\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ),\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {\r\n className: 'meta',\r\n begin: '#', end: '$',\r\n keywords: {\r\n 'meta-keyword': 'if else elif endif define undef warning error line region endregion pragma checksum'\r\n }\r\n },\r\n STRING,\r\n NUMBERS,\r\n {\r\n beginKeywords: 'class interface', end: /[{;=]/,\r\n illegal: /[^\\s:,]/,\r\n contains: [\r\n hljs.TITLE_MODE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n },\r\n {\r\n beginKeywords: 'namespace', end: /[{;=]/,\r\n illegal: /[^\\s:]/,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: '[a-zA-Z](\\\\.?\\\\w)*'}),\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n },\r\n {\r\n // [Attributes(\"\")]\r\n className: 'meta',\r\n begin: '^\\\\s*\\\\[', excludeBegin: true, end: '\\\\]', excludeEnd: true,\r\n contains: [\r\n {className: 'meta-string', begin: /\"/, end: /\"/}\r\n ]\r\n },\r\n {\r\n // Expression keywords prevent 'keyword Name(...)' from being\r\n // recognized as a function definition\r\n beginKeywords: 'new return throw await else',\r\n relevance: 0\r\n },\r\n {\r\n className: 'function',\r\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\r\n end: /\\s*[{;=]/, excludeEnd: true,\r\n keywords: KEYWORDS,\r\n contains: [\r\n {\r\n begin: hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\r\n contains: [hljs.TITLE_MODE],\r\n relevance: 0\r\n },\r\n {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n keywords: KEYWORDS,\r\n relevance: 0,\r\n contains: [\r\n STRING,\r\n NUMBERS,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n },\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n case_insensitive: false,\r\n lexemes: '[a-zA-Z][a-zA-Z0-9_-]*',\r\n keywords: {\r\n keyword: 'base-uri child-src connect-src default-src font-src form-action' +\r\n ' frame-ancestors frame-src img-src media-src object-src plugin-types' +\r\n ' report-uri sandbox script-src style-src',\r\n },\r\n contains: [\r\n {\r\n className: 'string',\r\n begin: \"'\", end: \"'\"\r\n },\r\n {\r\n className: 'attribute',\r\n begin: '^Content', end: ':', excludeEnd: true,\r\n },\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var FUNCTION_LIKE = {\r\n begin: /[\\w-]+\\(/, returnBegin: true,\r\n contains: [\r\n {\r\n className: 'built_in',\r\n begin: /[\\w-]+/\r\n },\r\n {\r\n begin: /\\(/, end: /\\)/,\r\n contains: [\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.CSS_NUMBER_MODE,\r\n ]\r\n }\r\n ]\r\n }\r\n var ATTRIBUTE = {\r\n className: 'attribute',\r\n begin: /\\S/, end: ':', excludeEnd: true,\r\n starts: {\r\n endsWithParent: true, excludeEnd: true,\r\n contains: [\r\n FUNCTION_LIKE,\r\n hljs.CSS_NUMBER_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {\r\n className: 'number', begin: '#[0-9A-Fa-f]+'\r\n },\r\n {\r\n className: 'meta', begin: '!important'\r\n }\r\n ]\r\n }\r\n }\r\n var AT_IDENTIFIER = '@[a-z-]+' // @font-face\r\n var AT_MODIFIERS = \"and or not only\"\r\n var MEDIA_TYPES = \"all print screen speech\"\r\n var AT_PROPERTY_RE = /@\\-?\\w[\\w]*(\\-\\w+)*/ // @-webkit-keyframes\r\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\r\n var RULE = {\r\n begin: /(?:[A-Z\\_\\.\\-]+|--[a-zA-Z0-9_-]+)\\s*:/, returnBegin: true, end: ';', endsWithParent: true,\r\n contains: [\r\n ATTRIBUTE\r\n ]\r\n };\r\n\r\n return {\r\n case_insensitive: true,\r\n illegal: /[=\\/|'\\$]/,\r\n contains: [\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {\r\n className: 'selector-id', begin: /#[A-Za-z0-9_-]+/\r\n },\r\n {\r\n className: 'selector-class', begin: /\\.[A-Za-z0-9_-]+/\r\n },\r\n {\r\n className: 'selector-attr',\r\n begin: /\\[/, end: /\\]/,\r\n illegal: '$',\r\n contains: [\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n ]\r\n },\r\n {\r\n className: 'selector-pseudo',\r\n begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/\r\n },\r\n // matching these here allows us to treat them more like regular CSS\r\n // rules so everything between the {} gets regular rule highlighting,\r\n // which is what we want for page and font-face\r\n {\r\n begin: '@(page|font-face)',\r\n lexemes: AT_IDENTIFIER,\r\n keywords: '@page @font-face'\r\n },\r\n {\r\n begin: '@', end: '[{;]', // at_rule eating first \"{\" is a good thing\r\n // because it doesn’t let it to be parsed as\r\n // a rule set but instead drops parser into\r\n // the default mode which is how it should be.\r\n illegal: /:/, // break on Less variables @var: ...\r\n returnBegin: true,\r\n contains: [\r\n {\r\n className: 'keyword',\r\n begin: AT_PROPERTY_RE\r\n },\r\n {\r\n begin: /\\s/, endsWithParent: true, excludeEnd: true,\r\n relevance: 0,\r\n keywords: AT_MODIFIERS,\r\n contains: [\r\n {\r\n begin: /[a-z-]+:/,\r\n className:\"attribute\"\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.CSS_NUMBER_MODE\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n className: 'selector-tag', begin: IDENT_RE,\r\n relevance: 0\r\n },\r\n {\r\n begin: '{', end: '}',\r\n illegal: /\\S/,\r\n contains: [\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n RULE,\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = /**\r\n * Known issues:\r\n *\r\n * - invalid hex string literals will be recognized as a double quoted strings\r\n * but 'x' at the beginning of string will not be matched\r\n *\r\n * - delimited string literals are not checked for matching end delimiter\r\n * (not possible to do with js regexp)\r\n *\r\n * - content of token string is colored as a string (i.e. no keyword coloring inside a token string)\r\n * also, content of token string is not validated to contain only valid D tokens\r\n *\r\n * - special token sequence rule is not strictly following D grammar (anything following #line\r\n * up to the end of line is matched as special token sequence)\r\n */\r\n\r\nfunction(hljs) {\r\n /**\r\n * Language keywords\r\n *\r\n * @type {Object}\r\n */\r\n var D_KEYWORDS = {\r\n keyword:\r\n 'abstract alias align asm assert auto body break byte case cast catch class ' +\r\n 'const continue debug default delete deprecated do else enum export extern final ' +\r\n 'finally for foreach foreach_reverse|10 goto if immutable import in inout int ' +\r\n 'interface invariant is lazy macro mixin module new nothrow out override package ' +\r\n 'pragma private protected public pure ref return scope shared static struct ' +\r\n 'super switch synchronized template this throw try typedef typeid typeof union ' +\r\n 'unittest version void volatile while with __FILE__ __LINE__ __gshared|10 ' +\r\n '__thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__',\r\n built_in:\r\n 'bool cdouble cent cfloat char creal dchar delegate double dstring float function ' +\r\n 'idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar ' +\r\n 'wstring',\r\n literal:\r\n 'false null true'\r\n };\r\n\r\n /**\r\n * Number literal regexps\r\n *\r\n * @type {String}\r\n */\r\n var decimal_integer_re = '(0|[1-9][\\\\d_]*)',\r\n decimal_integer_nosus_re = '(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)',\r\n binary_integer_re = '0[bB][01_]+',\r\n hexadecimal_digits_re = '([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*)',\r\n hexadecimal_integer_re = '0[xX]' + hexadecimal_digits_re,\r\n\r\n decimal_exponent_re = '([eE][+-]?' + decimal_integer_nosus_re + ')',\r\n decimal_float_re = '(' + decimal_integer_nosus_re + '(\\\\.\\\\d*|' + decimal_exponent_re + ')|' +\r\n '\\\\d+\\\\.' + decimal_integer_nosus_re + decimal_integer_nosus_re + '|' +\r\n '\\\\.' + decimal_integer_re + decimal_exponent_re + '?' +\r\n ')',\r\n hexadecimal_float_re = '(0[xX](' +\r\n hexadecimal_digits_re + '\\\\.' + hexadecimal_digits_re + '|'+\r\n '\\\\.?' + hexadecimal_digits_re +\r\n ')[pP][+-]?' + decimal_integer_nosus_re + ')',\r\n\r\n integer_re = '(' +\r\n decimal_integer_re + '|' +\r\n binary_integer_re + '|' +\r\n hexadecimal_integer_re +\r\n ')',\r\n\r\n float_re = '(' +\r\n hexadecimal_float_re + '|' +\r\n decimal_float_re +\r\n ')';\r\n\r\n /**\r\n * Escape sequence supported in D string and character literals\r\n *\r\n * @type {String}\r\n */\r\n var escape_sequence_re = '\\\\\\\\(' +\r\n '[\\'\"\\\\?\\\\\\\\abfnrtv]|' + // common escapes\r\n 'u[\\\\dA-Fa-f]{4}|' + // four hex digit unicode codepoint\r\n '[0-7]{1,3}|' + // one to three octal digit ascii char code\r\n 'x[\\\\dA-Fa-f]{2}|' + // two hex digit ascii char code\r\n 'U[\\\\dA-Fa-f]{8}' + // eight hex digit unicode codepoint\r\n ')|' +\r\n '&[a-zA-Z\\\\d]{2,};'; // named character entity\r\n\r\n /**\r\n * D integer number literals\r\n *\r\n * @type {Object}\r\n */\r\n var D_INTEGER_MODE = {\r\n className: 'number',\r\n begin: '\\\\b' + integer_re + '(L|u|U|Lu|LU|uL|UL)?',\r\n relevance: 0\r\n };\r\n\r\n /**\r\n * [D_FLOAT_MODE description]\r\n * @type {Object}\r\n */\r\n var D_FLOAT_MODE = {\r\n className: 'number',\r\n begin: '\\\\b(' +\r\n float_re + '([fF]|L|i|[fF]i|Li)?|' +\r\n integer_re + '(i|[fF]i|Li)' +\r\n ')',\r\n relevance: 0\r\n };\r\n\r\n /**\r\n * D character literal\r\n *\r\n * @type {Object}\r\n */\r\n var D_CHARACTER_MODE = {\r\n className: 'string',\r\n begin: '\\'(' + escape_sequence_re + '|.)', end: '\\'',\r\n illegal: '.'\r\n };\r\n\r\n /**\r\n * D string escape sequence\r\n *\r\n * @type {Object}\r\n */\r\n var D_ESCAPE_SEQUENCE = {\r\n begin: escape_sequence_re,\r\n relevance: 0\r\n };\r\n\r\n /**\r\n * D double quoted string literal\r\n *\r\n * @type {Object}\r\n */\r\n var D_STRING_MODE = {\r\n className: 'string',\r\n begin: '\"',\r\n contains: [D_ESCAPE_SEQUENCE],\r\n end: '\"[cwd]?'\r\n };\r\n\r\n /**\r\n * D wysiwyg and delimited string literals\r\n *\r\n * @type {Object}\r\n */\r\n var D_WYSIWYG_DELIMITED_STRING_MODE = {\r\n className: 'string',\r\n begin: '[rq]\"',\r\n end: '\"[cwd]?',\r\n relevance: 5\r\n };\r\n\r\n /**\r\n * D alternate wysiwyg string literal\r\n *\r\n * @type {Object}\r\n */\r\n var D_ALTERNATE_WYSIWYG_STRING_MODE = {\r\n className: 'string',\r\n begin: '`',\r\n end: '`[cwd]?'\r\n };\r\n\r\n /**\r\n * D hexadecimal string literal\r\n *\r\n * @type {Object}\r\n */\r\n var D_HEX_STRING_MODE = {\r\n className: 'string',\r\n begin: 'x\"[\\\\da-fA-F\\\\s\\\\n\\\\r]*\"[cwd]?',\r\n relevance: 10\r\n };\r\n\r\n /**\r\n * D delimited string literal\r\n *\r\n * @type {Object}\r\n */\r\n var D_TOKEN_STRING_MODE = {\r\n className: 'string',\r\n begin: 'q\"\\\\{',\r\n end: '\\\\}\"'\r\n };\r\n\r\n /**\r\n * Hashbang support\r\n *\r\n * @type {Object}\r\n */\r\n var D_HASHBANG_MODE = {\r\n className: 'meta',\r\n begin: '^#!',\r\n end: '$',\r\n relevance: 5\r\n };\r\n\r\n /**\r\n * D special token sequence\r\n *\r\n * @type {Object}\r\n */\r\n var D_SPECIAL_TOKEN_SEQUENCE_MODE = {\r\n className: 'meta',\r\n begin: '#(line)',\r\n end: '$',\r\n relevance: 5\r\n };\r\n\r\n /**\r\n * D attributes\r\n *\r\n * @type {Object}\r\n */\r\n var D_ATTRIBUTE_MODE = {\r\n className: 'keyword',\r\n begin: '@[a-zA-Z_][a-zA-Z_\\\\d]*'\r\n };\r\n\r\n /**\r\n * D nesting comment\r\n *\r\n * @type {Object}\r\n */\r\n var D_NESTING_COMMENT_MODE = hljs.COMMENT(\r\n '\\\\/\\\\+',\r\n '\\\\+\\\\/',\r\n {\r\n contains: ['self'],\r\n relevance: 10\r\n }\r\n );\r\n\r\n return {\r\n lexemes: hljs.UNDERSCORE_IDENT_RE,\r\n keywords: D_KEYWORDS,\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n D_NESTING_COMMENT_MODE,\r\n D_HEX_STRING_MODE,\r\n D_STRING_MODE,\r\n D_WYSIWYG_DELIMITED_STRING_MODE,\r\n D_ALTERNATE_WYSIWYG_STRING_MODE,\r\n D_TOKEN_STRING_MODE,\r\n D_FLOAT_MODE,\r\n D_INTEGER_MODE,\r\n D_CHARACTER_MODE,\r\n D_HASHBANG_MODE,\r\n D_SPECIAL_TOKEN_SEQUENCE_MODE,\r\n D_ATTRIBUTE_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var SUBST = {\r\n className: 'subst',\r\n variants: [{\r\n begin: '\\\\$[A-Za-z0-9_]+'\r\n }],\r\n };\r\n\r\n var BRACED_SUBST = {\r\n className: 'subst',\r\n variants: [{\r\n begin: '\\\\${',\r\n end: '}'\r\n }, ],\r\n keywords: 'true false null this is new super',\r\n };\r\n\r\n var STRING = {\r\n className: 'string',\r\n variants: [{\r\n begin: 'r\\'\\'\\'',\r\n end: '\\'\\'\\''\r\n },\r\n {\r\n begin: 'r\"\"\"',\r\n end: '\"\"\"'\r\n },\r\n {\r\n begin: 'r\\'',\r\n end: '\\'',\r\n illegal: '\\\\n'\r\n },\r\n {\r\n begin: 'r\"',\r\n end: '\"',\r\n illegal: '\\\\n'\r\n },\r\n {\r\n begin: '\\'\\'\\'',\r\n end: '\\'\\'\\'',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]\r\n },\r\n {\r\n begin: '\"\"\"',\r\n end: '\"\"\"',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]\r\n },\r\n {\r\n begin: '\\'',\r\n end: '\\'',\r\n illegal: '\\\\n',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]\r\n },\r\n {\r\n begin: '\"',\r\n end: '\"',\r\n illegal: '\\\\n',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]\r\n }\r\n ]\r\n };\r\n BRACED_SUBST.contains = [\r\n hljs.C_NUMBER_MODE, STRING\r\n ];\r\n\r\n var KEYWORDS = {\r\n keyword: 'abstract as assert async await break case catch class const continue covariant default deferred do ' +\r\n 'dynamic else enum export extends extension external factory false final finally for Function get hide if ' +\r\n 'implements import in inferface is library mixin new null on operator part rethrow return set show static ' +\r\n 'super switch sync this throw true try typedef var void while with yield',\r\n built_in:\r\n // dart:core\r\n 'Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set ' +\r\n 'Stopwatch String StringBuffer StringSink Symbol Type Uri bool double dynamic int num print ' +\r\n // dart:html\r\n 'Element ElementList document querySelector querySelectorAll window'\r\n };\r\n\r\n return {\r\n keywords: KEYWORDS,\r\n contains: [\r\n STRING,\r\n hljs.COMMENT(\r\n '/\\\\*\\\\*',\r\n '\\\\*/', {\r\n subLanguage: 'markdown'\r\n }\r\n ),\r\n hljs.COMMENT(\r\n '///+\\\\s*',\r\n '$', {\r\n contains: [{\r\n subLanguage: 'markdown',\r\n begin: '.',\r\n end: '$',\r\n }]\r\n }\r\n ),\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {\r\n className: 'class',\r\n beginKeywords: 'class interface',\r\n end: '{',\r\n excludeEnd: true,\r\n contains: [{\r\n beginKeywords: 'extends implements'\r\n },\r\n hljs.UNDERSCORE_TITLE_MODE\r\n ]\r\n },\r\n hljs.C_NUMBER_MODE,\r\n {\r\n className: 'meta',\r\n begin: '@[A-Za-z]+'\r\n },\r\n {\r\n begin: '=>' // No markup, just a relevance booster\r\n }\r\n ]\r\n }\r\n};","module.exports = function(hljs) {\r\n var KEYWORDS =\r\n 'exports register file shl array record property for mod while set ally label uses raise not ' +\r\n 'stored class safecall var interface or private static exit index inherited to else stdcall ' +\r\n 'override shr asm far resourcestring finalization packed virtual out and protected library do ' +\r\n 'xorwrite goto near function end div overload object unit begin string on inline repeat until ' +\r\n 'destructor write message program with read initialization except default nil if case cdecl in ' +\r\n 'downto threadvar of try pascal const external constructor type public then implementation ' +\r\n 'finally published procedure absolute reintroduce operator as is abstract alias assembler ' +\r\n 'bitpacked break continue cppdecl cvar enumerator experimental platform deprecated ' +\r\n 'unimplemented dynamic export far16 forward generic helper implements interrupt iochecks ' +\r\n 'local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat ' +\r\n 'specialize strict unaligned varargs ';\r\n var COMMENT_MODES = [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.COMMENT(/\\{/, /\\}/, {relevance: 0}),\r\n hljs.COMMENT(/\\(\\*/, /\\*\\)/, {relevance: 10})\r\n ];\r\n var DIRECTIVE = {\r\n className: 'meta',\r\n variants: [\r\n {begin: /\\{\\$/, end: /\\}/},\r\n {begin: /\\(\\*\\$/, end: /\\*\\)/}\r\n ]\r\n };\r\n var STRING = {\r\n className: 'string',\r\n begin: /'/, end: /'/,\r\n contains: [{begin: /''/}]\r\n };\r\n var CHAR_STRING = {\r\n className: 'string', begin: /(#\\d+)+/\r\n };\r\n var CLASS = {\r\n begin: hljs.IDENT_RE + '\\\\s*=\\\\s*class\\\\s*\\\\(', returnBegin: true,\r\n contains: [\r\n hljs.TITLE_MODE\r\n ]\r\n };\r\n var FUNCTION = {\r\n className: 'function',\r\n beginKeywords: 'function constructor destructor procedure', end: /[:;]/,\r\n keywords: 'function constructor|10 destructor|10 procedure|10',\r\n contains: [\r\n hljs.TITLE_MODE,\r\n {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n keywords: KEYWORDS,\r\n contains: [STRING, CHAR_STRING, DIRECTIVE].concat(COMMENT_MODES)\r\n },\r\n DIRECTIVE\r\n ].concat(COMMENT_MODES)\r\n };\r\n return {\r\n aliases: ['dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm'],\r\n case_insensitive: true,\r\n keywords: KEYWORDS,\r\n illegal: /\"|\\$[G-Zg-z]|\\/\\*|<\\/|\\|/,\r\n contains: [\r\n STRING, CHAR_STRING,\r\n hljs.NUMBER_MODE,\r\n CLASS,\r\n FUNCTION,\r\n DIRECTIVE\r\n ].concat(COMMENT_MODES)\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['patch'],\r\n contains: [\r\n {\r\n className: 'meta',\r\n relevance: 10,\r\n variants: [\r\n {begin: /^@@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +@@$/},\r\n {begin: /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/},\r\n {begin: /^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$/}\r\n ]\r\n },\r\n {\r\n className: 'comment',\r\n variants: [\r\n {begin: /Index: /, end: /$/},\r\n {begin: /={3,}/, end: /$/},\r\n {begin: /^\\-{3}/, end: /$/},\r\n {begin: /^\\*{3} /, end: /$/},\r\n {begin: /^\\+{3}/, end: /$/},\r\n {begin: /^\\*{15}$/ }\r\n ]\r\n },\r\n {\r\n className: 'addition',\r\n begin: '^\\\\+', end: '$'\r\n },\r\n {\r\n className: 'deletion',\r\n begin: '^\\\\-', end: '$'\r\n },\r\n {\r\n className: 'addition',\r\n begin: '^\\\\!', end: '$'\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var FILTER = {\r\n begin: /\\|[A-Za-z]+:?/,\r\n keywords: {\r\n name:\r\n 'truncatewords removetags linebreaksbr yesno get_digit timesince random striptags ' +\r\n 'filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands ' +\r\n 'title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode ' +\r\n 'timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort ' +\r\n 'dictsortreversed default_if_none pluralize lower join center default ' +\r\n 'truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first ' +\r\n 'escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize ' +\r\n 'localtime utc timezone'\r\n },\r\n contains: [\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE\r\n ]\r\n };\r\n\r\n return {\r\n aliases: ['jinja'],\r\n case_insensitive: true,\r\n subLanguage: 'xml',\r\n contains: [\r\n hljs.COMMENT(/\\{%\\s*comment\\s*%}/, /\\{%\\s*endcomment\\s*%}/),\r\n hljs.COMMENT(/\\{#/, /#}/),\r\n {\r\n className: 'template-tag',\r\n begin: /\\{%/, end: /%}/,\r\n contains: [\r\n {\r\n className: 'name',\r\n begin: /\\w+/,\r\n keywords: {\r\n name:\r\n 'comment endcomment load templatetag ifchanged endifchanged if endif firstof for ' +\r\n 'endfor ifnotequal endifnotequal widthratio extends include spaceless ' +\r\n 'endspaceless regroup ifequal endifequal ssi now with cycle url filter ' +\r\n 'endfilter debug block endblock else autoescape endautoescape csrf_token empty elif ' +\r\n 'endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix ' +\r\n 'plural get_current_language language get_available_languages ' +\r\n 'get_current_language_bidi get_language_info get_language_info_list localize ' +\r\n 'endlocalize localtime endlocaltime timezone endtimezone get_current_timezone ' +\r\n 'verbatim'\r\n },\r\n starts: {\r\n endsWithParent: true,\r\n keywords: 'in by as',\r\n contains: [FILTER],\r\n relevance: 0\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n className: 'template-variable',\r\n begin: /\\{\\{/, end: /}}/,\r\n contains: [FILTER]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['bind', 'zone'],\r\n keywords: {\r\n keyword:\r\n 'IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX ' +\r\n 'LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT'\r\n },\r\n contains: [\r\n hljs.COMMENT(';', '$', {relevance: 0}),\r\n {\r\n className: 'meta',\r\n begin: /^\\$(TTL|GENERATE|INCLUDE|ORIGIN)\\b/\r\n },\r\n // IPv6\r\n {\r\n className: 'number',\r\n begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))\\\\b'\r\n },\r\n // IPv4\r\n {\r\n className: 'number',\r\n begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b'\r\n },\r\n hljs.inherit(hljs.NUMBER_MODE, {begin: /\\b\\d+[dhwm]?/})\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['docker'],\r\n case_insensitive: true,\r\n keywords: 'from maintainer expose env arg user onbuild stopsignal',\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.NUMBER_MODE,\r\n {\r\n beginKeywords: 'run cmd entrypoint volume add copy workdir label healthcheck shell',\r\n starts: {\r\n end: /[^\\\\]$/,\r\n subLanguage: 'bash'\r\n }\r\n }\r\n ],\r\n illegal: '',\r\n illegal: '\\\\n'\r\n }\r\n ]\r\n },\r\n STRINGS,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n };\r\n\r\n var DTS_REFERENCE = {\r\n className: 'variable',\r\n begin: '\\\\&[a-z\\\\d_]*\\\\b'\r\n };\r\n\r\n var DTS_KEYWORD = {\r\n className: 'meta-keyword',\r\n begin: '/[a-z][a-z\\\\d-]*/'\r\n };\r\n\r\n var DTS_LABEL = {\r\n className: 'symbol',\r\n begin: '^\\\\s*[a-zA-Z_][a-zA-Z\\\\d_]*:'\r\n };\r\n\r\n var DTS_CELL_PROPERTY = {\r\n className: 'params',\r\n begin: '<',\r\n end: '>',\r\n contains: [\r\n NUMBERS,\r\n DTS_REFERENCE\r\n ]\r\n };\r\n\r\n var DTS_NODE = {\r\n className: 'class',\r\n begin: /[a-zA-Z_][a-zA-Z\\d_@]*\\s{/,\r\n end: /[{;=]/,\r\n returnBegin: true,\r\n excludeEnd: true\r\n };\r\n\r\n var DTS_ROOT_NODE = {\r\n className: 'class',\r\n begin: '/\\\\s*{',\r\n end: '};',\r\n relevance: 10,\r\n contains: [\r\n DTS_REFERENCE,\r\n DTS_KEYWORD,\r\n DTS_LABEL,\r\n DTS_NODE,\r\n DTS_CELL_PROPERTY,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n NUMBERS,\r\n STRINGS\r\n ]\r\n };\r\n\r\n return {\r\n keywords: \"\",\r\n contains: [\r\n DTS_ROOT_NODE,\r\n DTS_REFERENCE,\r\n DTS_KEYWORD,\r\n DTS_LABEL,\r\n DTS_NODE,\r\n DTS_CELL_PROPERTY,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n NUMBERS,\r\n STRINGS,\r\n PREPROCESSOR,\r\n {\r\n begin: hljs.IDENT_RE + '::',\r\n keywords: \"\"\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var EXPRESSION_KEYWORDS = 'if eq ne lt lte gt gte select default math sep';\r\n return {\r\n aliases: ['dst'],\r\n case_insensitive: true,\r\n subLanguage: 'xml',\r\n contains: [\r\n {\r\n className: 'template-tag',\r\n begin: /\\{[#\\/]/, end: /\\}/, illegal: /;/,\r\n contains: [\r\n {\r\n className: 'name',\r\n begin: /[a-zA-Z\\.-]+/,\r\n starts: {\r\n endsWithParent: true, relevance: 0,\r\n contains: [\r\n hljs.QUOTE_STRING_MODE\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n className: 'template-variable',\r\n begin: /\\{/, end: /\\}/, illegal: /;/,\r\n keywords: EXPRESSION_KEYWORDS\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var commentMode = hljs.COMMENT(/\\(\\*/, /\\*\\)/);\r\n\r\n var nonTerminalMode = {\r\n className: \"attribute\",\r\n begin: /^[ ]*[a-zA-Z][a-zA-Z-_]*([\\s-_]+[a-zA-Z][a-zA-Z]*)*/\r\n };\r\n\r\n var specialSequenceMode = {\r\n className: \"meta\",\r\n begin: /\\?.*\\?/\r\n };\r\n\r\n var ruleBodyMode = {\r\n begin: /=/, end: /[.;]/,\r\n contains: [\r\n commentMode,\r\n specialSequenceMode,\r\n {\r\n // terminals\r\n className: 'string',\r\n variants: [\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n {begin: '`', end: '`'},\r\n ]\r\n },\r\n ]\r\n };\r\n\r\n return {\r\n illegal: /\\S/,\r\n contains: [\r\n commentMode,\r\n nonTerminalMode,\r\n ruleBodyMode\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(\\\\!|\\\\?)?';\r\n var ELIXIR_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\r\n var ELIXIR_KEYWORDS =\r\n 'and false then defined module in return redo retry end for true self when ' +\r\n 'next until do begin unless nil break not case cond alias while ensure or ' +\r\n 'include use alias fn quote require import with|0';\r\n var SUBST = {\r\n className: 'subst',\r\n begin: '#\\\\{', end: '}',\r\n lexemes: ELIXIR_IDENT_RE,\r\n keywords: ELIXIR_KEYWORDS\r\n };\r\n\r\n var SIGIL_DELIMITERS = '[/|([{<\"\\']'\r\n var LOWERCASE_SIGIL = {\r\n className: 'string',\r\n begin: '~[a-z]' + '(?=' + SIGIL_DELIMITERS + ')',\r\n contains: [\r\n {\r\n endsParent:true,\r\n contains: [{\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\r\n variants: [\r\n { begin: /\"/, end: /\"/ },\r\n { begin: /'/, end: /'/ },\r\n { begin: /\\//, end: /\\// },\r\n { begin: /\\|/, end: /\\|/ },\r\n { begin: /\\(/, end: /\\)/ },\r\n { begin: /\\[/, end: /\\]/ },\r\n { begin: /\\{/, end: /\\}/ },\r\n { begin: // }\r\n ]\r\n }]\r\n },\r\n ],\r\n };\r\n\r\n var UPCASE_SIGIL = {\r\n className: 'string',\r\n begin: '~[A-Z]' + '(?=' + SIGIL_DELIMITERS + ')',\r\n contains: [\r\n { begin: /\"/, end: /\"/ },\r\n { begin: /'/, end: /'/ },\r\n { begin: /\\//, end: /\\// },\r\n { begin: /\\|/, end: /\\|/ },\r\n { begin: /\\(/, end: /\\)/ },\r\n { begin: /\\[/, end: /\\]/ },\r\n { begin: /\\{/, end: /\\}/ },\r\n { begin: /\\/ }\r\n ]\r\n };\r\n\r\n var STRING = {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\r\n variants: [\r\n {\r\n begin: /\"\"\"/, end: /\"\"\"/,\r\n },\r\n {\r\n begin: /'''/, end: /'''/,\r\n },\r\n {\r\n begin: /~S\"\"\"/, end: /\"\"\"/,\r\n contains: []\r\n },\r\n {\r\n begin: /~S\"/, end: /\"/,\r\n contains: []\r\n },\r\n {\r\n begin: /~S'''/, end: /'''/,\r\n contains: []\r\n },\r\n {\r\n begin: /~S'/, end: /'/,\r\n contains: []\r\n },\r\n {\r\n begin: /'/, end: /'/\r\n },\r\n {\r\n begin: /\"/, end: /\"/\r\n },\r\n ]\r\n };\r\n var FUNCTION = {\r\n className: 'function',\r\n beginKeywords: 'def defp defmacro', end: /\\B\\b/, // the mode is ended by the title\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {\r\n begin: ELIXIR_IDENT_RE,\r\n endsParent: true\r\n })\r\n ]\r\n };\r\n var CLASS = hljs.inherit(FUNCTION, {\r\n className: 'class',\r\n beginKeywords: 'defimpl defmodule defprotocol defrecord', end: /\\bdo\\b|$|;/\r\n });\r\n var ELIXIR_DEFAULT_CONTAINS = [\r\n STRING,\r\n UPCASE_SIGIL,\r\n LOWERCASE_SIGIL,\r\n hljs.HASH_COMMENT_MODE,\r\n CLASS,\r\n FUNCTION,\r\n {\r\n begin: '::'\r\n },\r\n {\r\n className: 'symbol',\r\n begin: ':(?![\\\\s:])',\r\n contains: [STRING, {begin: ELIXIR_METHOD_RE}],\r\n relevance: 0\r\n },\r\n {\r\n className: 'symbol',\r\n begin: ELIXIR_IDENT_RE + ':(?!:)',\r\n relevance: 0\r\n },\r\n {\r\n className: 'number',\r\n begin: '(\\\\b0o[0-7_]+)|(\\\\b0b[01_]+)|(\\\\b0x[0-9a-fA-F_]+)|(-?\\\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)',\r\n relevance: 0\r\n },\r\n {\r\n className: 'variable',\r\n begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))'\r\n },\r\n {\r\n begin: '->'\r\n },\r\n { // regexp container\r\n begin: '(' + hljs.RE_STARTERS_RE + ')\\\\s*',\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n {\r\n className: 'regexp',\r\n illegal: '\\\\n',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\r\n variants: [\r\n {\r\n begin: '/', end: '/[a-z]*'\r\n },\r\n {\r\n begin: '%r\\\\[', end: '\\\\][a-z]*'\r\n }\r\n ]\r\n }\r\n ],\r\n relevance: 0\r\n }\r\n ];\r\n SUBST.contains = ELIXIR_DEFAULT_CONTAINS;\r\n\r\n return {\r\n lexemes: ELIXIR_IDENT_RE,\r\n keywords: ELIXIR_KEYWORDS,\r\n contains: ELIXIR_DEFAULT_CONTAINS\r\n };\r\n};","module.exports = function(hljs) {\r\n var COMMENT = {\r\n variants: [\r\n hljs.COMMENT('--', '$'),\r\n hljs.COMMENT(\r\n '{-',\r\n '-}',\r\n {\r\n contains: ['self']\r\n }\r\n )\r\n ]\r\n };\r\n\r\n var CONSTRUCTOR = {\r\n className: 'type',\r\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (built-in, infix).\r\n relevance: 0\r\n };\r\n\r\n var LIST = {\r\n begin: '\\\\(', end: '\\\\)',\r\n illegal: '\"',\r\n contains: [\r\n {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\r\n COMMENT\r\n ]\r\n };\r\n\r\n var RECORD = {\r\n begin: '{', end: '}',\r\n contains: LIST.contains\r\n };\r\n\r\n var CHARACTER = {\r\n className: 'string',\r\n begin: '\\'\\\\\\\\?.', end: '\\'',\r\n illegal: '.'\r\n };\r\n\r\n return {\r\n keywords:\r\n 'let in if then else case of where module import exposing ' +\r\n 'type alias as infix infixl infixr port effect command subscription',\r\n contains: [\r\n\r\n // Top-level constructions.\r\n\r\n {\r\n beginKeywords: 'port effect module', end: 'exposing',\r\n keywords: 'port effect module where command subscription exposing',\r\n contains: [LIST, COMMENT],\r\n illegal: '\\\\W\\\\.|;'\r\n },\r\n {\r\n begin: 'import', end: '$',\r\n keywords: 'import as exposing',\r\n contains: [LIST, COMMENT],\r\n illegal: '\\\\W\\\\.|;'\r\n },\r\n {\r\n begin: 'type', end: '$',\r\n keywords: 'type alias',\r\n contains: [CONSTRUCTOR, LIST, RECORD, COMMENT]\r\n },\r\n {\r\n beginKeywords: 'infix infixl infixr', end: '$',\r\n contains: [hljs.C_NUMBER_MODE, COMMENT]\r\n },\r\n {\r\n begin: 'port', end: '$',\r\n keywords: 'port',\r\n contains: [COMMENT]\r\n },\r\n\r\n // Literals and names.\r\n\r\n CHARACTER,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE,\r\n CONSTRUCTOR,\r\n hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\r\n COMMENT,\r\n\r\n {begin: '->|<-'} // No markup, relevance booster\r\n ],\r\n illegal: /;/\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n subLanguage: 'xml',\r\n contains: [\r\n hljs.COMMENT('<%#', '%>'),\r\n {\r\n begin: '<%[%=-]?', end: '[%-]?%>',\r\n subLanguage: 'ruby',\r\n excludeBegin: true,\r\n excludeEnd: true\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords: {\r\n built_in:\r\n 'spawn spawn_link self',\r\n keyword:\r\n 'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' +\r\n 'let not of or orelse|10 query receive rem try when xor'\r\n },\r\n contains: [\r\n {\r\n className: 'meta', begin: '^[0-9]+> ',\r\n relevance: 10\r\n },\r\n hljs.COMMENT('%', '$'),\r\n {\r\n className: 'number',\r\n begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\r\n relevance: 0\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n begin: '\\\\?(::)?([A-Z]\\\\w*(::)?)+'\r\n },\r\n {\r\n begin: '->'\r\n },\r\n {\r\n begin: 'ok'\r\n },\r\n {\r\n begin: '!'\r\n },\r\n {\r\n begin: '(\\\\b[a-z\\'][a-zA-Z0-9_\\']*:[a-z\\'][a-zA-Z0-9_\\']*)|(\\\\b[a-z\\'][a-zA-Z0-9_\\']*)',\r\n relevance: 0\r\n },\r\n {\r\n begin: '[A-Z][a-zA-Z0-9_\\']*',\r\n relevance: 0\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var BASIC_ATOM_RE = '[a-z\\'][a-zA-Z0-9_\\']*';\r\n var FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')';\r\n var ERLANG_RESERVED = {\r\n keyword:\r\n 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' +\r\n 'let not of orelse|10 query receive rem try when xor',\r\n literal:\r\n 'false true'\r\n };\r\n\r\n var COMMENT = hljs.COMMENT('%', '$');\r\n var NUMBER = {\r\n className: 'number',\r\n begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\r\n relevance: 0\r\n };\r\n var NAMED_FUN = {\r\n begin: 'fun\\\\s+' + BASIC_ATOM_RE + '/\\\\d+'\r\n };\r\n var FUNCTION_CALL = {\r\n begin: FUNCTION_NAME_RE + '\\\\(', end: '\\\\)',\r\n returnBegin: true,\r\n relevance: 0,\r\n contains: [\r\n {\r\n begin: FUNCTION_NAME_RE, relevance: 0\r\n },\r\n {\r\n begin: '\\\\(', end: '\\\\)', endsWithParent: true,\r\n returnEnd: true,\r\n relevance: 0\r\n // \"contains\" defined later\r\n }\r\n ]\r\n };\r\n var TUPLE = {\r\n begin: '{', end: '}',\r\n relevance: 0\r\n // \"contains\" defined later\r\n };\r\n var VAR1 = {\r\n begin: '\\\\b_([A-Z][A-Za-z0-9_]*)?',\r\n relevance: 0\r\n };\r\n var VAR2 = {\r\n begin: '[A-Z][a-zA-Z0-9_]*',\r\n relevance: 0\r\n };\r\n var RECORD_ACCESS = {\r\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\r\n relevance: 0,\r\n returnBegin: true,\r\n contains: [\r\n {\r\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\r\n relevance: 0\r\n },\r\n {\r\n begin: '{', end: '}',\r\n relevance: 0\r\n // \"contains\" defined later\r\n }\r\n ]\r\n };\r\n\r\n var BLOCK_STATEMENTS = {\r\n beginKeywords: 'fun receive if try case', end: 'end',\r\n keywords: ERLANG_RESERVED\r\n };\r\n BLOCK_STATEMENTS.contains = [\r\n COMMENT,\r\n NAMED_FUN,\r\n hljs.inherit(hljs.APOS_STRING_MODE, {className: ''}),\r\n BLOCK_STATEMENTS,\r\n FUNCTION_CALL,\r\n hljs.QUOTE_STRING_MODE,\r\n NUMBER,\r\n TUPLE,\r\n VAR1, VAR2,\r\n RECORD_ACCESS\r\n ];\r\n\r\n var BASIC_MODES = [\r\n COMMENT,\r\n NAMED_FUN,\r\n BLOCK_STATEMENTS,\r\n FUNCTION_CALL,\r\n hljs.QUOTE_STRING_MODE,\r\n NUMBER,\r\n TUPLE,\r\n VAR1, VAR2,\r\n RECORD_ACCESS\r\n ];\r\n FUNCTION_CALL.contains[1].contains = BASIC_MODES;\r\n TUPLE.contains = BASIC_MODES;\r\n RECORD_ACCESS.contains[1].contains = BASIC_MODES;\r\n\r\n var PARAMS = {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)',\r\n contains: BASIC_MODES\r\n };\r\n return {\r\n aliases: ['erl'],\r\n keywords: ERLANG_RESERVED,\r\n illegal: '(',\r\n returnBegin: true,\r\n illegal: '\\\\(|#|//|/\\\\*|\\\\\\\\|:|;',\r\n contains: [\r\n PARAMS,\r\n hljs.inherit(hljs.TITLE_MODE, {begin: BASIC_ATOM_RE})\r\n ],\r\n starts: {\r\n end: ';|\\\\.',\r\n keywords: ERLANG_RESERVED,\r\n contains: BASIC_MODES\r\n }\r\n },\r\n COMMENT,\r\n {\r\n begin: '^-', end: '\\\\.',\r\n relevance: 0,\r\n excludeEnd: true,\r\n returnBegin: true,\r\n lexemes: '-' + hljs.IDENT_RE,\r\n keywords:\r\n '-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn ' +\r\n '-import -include -include_lib -compile -define -else -endif -file -behaviour ' +\r\n '-behavior -spec',\r\n contains: [PARAMS]\r\n },\r\n NUMBER,\r\n hljs.QUOTE_STRING_MODE,\r\n RECORD_ACCESS,\r\n VAR1, VAR2,\r\n TUPLE,\r\n {begin: /\\.$/} // relevance booster\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['xlsx', 'xls'],\r\n case_insensitive: true,\r\n lexemes: /[a-zA-Z][\\w\\.]*/,\r\n // built-in functions imported from https://web.archive.org/web/20160513042710/https://support.office.com/en-us/article/Excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188\r\n keywords: {\r\n built_in: 'ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST'\r\n },\r\n contains: [\r\n {\r\n /* matches a beginning equal sign found in Excel formula examples */\r\n begin: /^=/,\r\n end: /[^=]/, returnEnd: true, illegal: /=/, /* only allow single equal sign at front of line */\r\n relevance: 10\r\n },\r\n /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */\r\n {\r\n /* matches a reference to a single cell */\r\n className: 'symbol',\r\n begin: /\\b[A-Z]{1,2}\\d+\\b/,\r\n end: /[^\\d]/, excludeEnd: true,\r\n relevance: 0\r\n },\r\n {\r\n /* matches a reference to a range of cells */\r\n className: 'symbol',\r\n begin: /[A-Z]{0,2}\\d*:[A-Z]{0,2}\\d*/,\r\n relevance: 0\r\n },\r\n hljs.BACKSLASH_ESCAPE,\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'number',\r\n begin: hljs.NUMBER_RE + '(%)?',\r\n relevance: 0\r\n },\r\n /* Excel formula comments are done by putting the comment in a function call to N() */\r\n hljs.COMMENT(/\\bN\\(/,/\\)/,\r\n {\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n illegal: /\\n/\r\n })\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n contains: [\r\n {\r\n begin: /[^\\u2401\\u0001]+/,\r\n end: /[\\u2401\\u0001]/,\r\n excludeEnd: true,\r\n returnBegin: true,\r\n returnEnd: false,\r\n contains: [\r\n {\r\n begin: /([^\\u2401\\u0001=]+)/,\r\n end: /=([^\\u2401\\u0001=]+)/,\r\n returnEnd: true,\r\n returnBegin: false,\r\n className: 'attr'\r\n },\r\n {\r\n begin: /=/,\r\n end: /([\\u2401\\u0001])/,\r\n excludeEnd: true,\r\n excludeBegin: true,\r\n className: 'string'\r\n }]\r\n }],\r\n case_insensitive: true\r\n };\r\n};","module.exports = function (hljs) {\r\n\r\n var CHAR = {\r\n className: 'string',\r\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\r\n };\r\n\r\n var STRING = {\r\n className: 'string',\r\n variants: [\r\n {\r\n begin: '\"', end: '\"'\r\n }\r\n ]\r\n };\r\n\r\n var NAME = {\r\n className: 'title',\r\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/\r\n };\r\n\r\n var METHOD = {\r\n className: 'function',\r\n beginKeywords: 'def',\r\n end: /[:={\\[(\\n;]/,\r\n excludeEnd: true,\r\n contains: [NAME]\r\n };\r\n\r\n return {\r\n keywords: {\r\n literal: 'true false',\r\n keyword: 'case class def else enum if impl import in lat rel index let match namespace switch type yield with'\r\n },\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n CHAR,\r\n STRING,\r\n METHOD,\r\n hljs.C_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var PARAMS = {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)'\r\n };\r\n\r\n var F_KEYWORDS = {\r\n literal: '.False. .True.',\r\n keyword: 'kind do while private call intrinsic where elsewhere ' +\r\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then block endblock ' +\r\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\r\n 'goto save else use module select case ' +\r\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\r\n 'continue format pause cycle exit ' +\r\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\r\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\r\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\r\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\r\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\r\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\r\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\r\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\r\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\r\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\r\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\r\n 'integer real character complex logical dimension allocatable|10 parameter ' +\r\n 'external implicit|10 none double precision assign intent optional pointer ' +\r\n 'target in out common equivalence data',\r\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\r\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\r\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\r\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\r\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\r\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\r\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\r\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\r\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\r\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\r\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\r\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\r\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\r\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\r\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\r\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\r\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\r\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image'\r\n };\r\n return {\r\n case_insensitive: true,\r\n aliases: ['f90', 'f95'],\r\n keywords: F_KEYWORDS,\r\n illegal: /\\/\\*/,\r\n contains: [\r\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\r\n {\r\n className: 'function',\r\n beginKeywords: 'subroutine function program',\r\n illegal: '[${=\\\\n]',\r\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\r\n },\r\n hljs.COMMENT('!', '$', {relevance: 0}),\r\n {\r\n className: 'number',\r\n begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\r\n relevance: 0\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var TYPEPARAM = {\r\n begin: '<', end: '>',\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: /'[a-zA-Z0-9_]+/})\r\n ]\r\n };\r\n\r\n return {\r\n aliases: ['fs'],\r\n keywords:\r\n 'abstract and as assert base begin class default delegate do done ' +\r\n 'downcast downto elif else end exception extern false finally for ' +\r\n 'fun function global if in inherit inline interface internal lazy let ' +\r\n 'match member module mutable namespace new null of open or ' +\r\n 'override private public rec return sig static struct then to ' +\r\n 'true try type upcast use val void when while with yield',\r\n illegal: /\\/\\*/,\r\n contains: [\r\n {\r\n // monad builder keywords (matches before non-bang kws)\r\n className: 'keyword',\r\n begin: /\\b(yield|return|let|do)!/\r\n },\r\n {\r\n className: 'string',\r\n begin: '@\"', end: '\"',\r\n contains: [{begin: '\"\"'}]\r\n },\r\n {\r\n className: 'string',\r\n begin: '\"\"\"', end: '\"\"\"'\r\n },\r\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\r\n {\r\n className: 'class',\r\n beginKeywords: 'type', end: '\\\\(|=|$', excludeEnd: true,\r\n contains: [\r\n hljs.UNDERSCORE_TITLE_MODE,\r\n TYPEPARAM\r\n ]\r\n },\r\n {\r\n className: 'meta',\r\n begin: '\\\\[<', end: '>\\\\]',\r\n relevance: 10\r\n },\r\n {\r\n className: 'symbol',\r\n begin: '\\\\B(\\'[A-Za-z])\\\\b',\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\r\n hljs.C_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function (hljs) {\r\n var KEYWORDS = {\r\n 'keyword':\r\n 'abort acronym acronyms alias all and assign binary card diag display ' +\r\n 'else eq file files for free ge gt if integer le loop lt maximizing ' +\r\n 'minimizing model models ne negative no not option options or ord ' +\r\n 'positive prod put putpage puttl repeat sameas semicont semiint smax ' +\r\n 'smin solve sos1 sos2 sum system table then until using while xor yes',\r\n 'literal': 'eps inf na',\r\n 'built-in':\r\n 'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +\r\n 'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +\r\n 'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +\r\n 'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +\r\n 'randBinomial randLinear randTriangle round rPower sigmoid sign ' +\r\n 'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +\r\n 'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +\r\n 'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +\r\n 'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +\r\n 'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +\r\n 'handleCollect handleDelete handleStatus handleSubmit heapFree ' +\r\n 'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +\r\n 'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +\r\n 'timeElapsed timeExec timeStart'\r\n };\r\n var PARAMS = {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n };\r\n var SYMBOLS = {\r\n className: 'symbol',\r\n variants: [\r\n {begin: /\\=[lgenxc]=/},\r\n {begin: /\\$/},\r\n ]\r\n };\r\n var QSTR = { // One-line quoted comment string\r\n className: 'comment',\r\n variants: [\r\n {begin: '\\'', end: '\\''},\r\n {begin: '\"', end: '\"'},\r\n ],\r\n illegal: '\\\\n',\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n };\r\n var ASSIGNMENT = {\r\n begin: '/',\r\n end: '/',\r\n keywords: KEYWORDS,\r\n contains: [\r\n QSTR,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.C_NUMBER_MODE,\r\n ],\r\n };\r\n var DESCTEXT = { // Parameter/set/variable description text\r\n begin: /[a-z][a-z0-9_]*(\\([a-z0-9_, ]*\\))?[ \\t]+/,\r\n excludeBegin: true,\r\n end: '$',\r\n endsWithParent: true,\r\n contains: [\r\n QSTR,\r\n ASSIGNMENT,\r\n {\r\n className: 'comment',\r\n begin: /([ ]*[a-z0-9&#*=?@>\\\\<:\\-,()$\\[\\]_.{}!+%^]+)+/,\r\n relevance: 0\r\n },\r\n ],\r\n };\r\n\r\n return {\r\n aliases: ['gms'],\r\n case_insensitive: true,\r\n keywords: KEYWORDS,\r\n contains: [\r\n hljs.COMMENT(/^\\$ontext/, /^\\$offtext/),\r\n {\r\n className: 'meta',\r\n begin: '^\\\\$[a-z0-9]+',\r\n end: '$',\r\n returnBegin: true,\r\n contains: [\r\n {\r\n className: 'meta-keyword',\r\n begin: '^\\\\$[a-z0-9]+',\r\n }\r\n ]\r\n },\r\n hljs.COMMENT('^\\\\*', '$'),\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n // Declarations\r\n {\r\n beginKeywords:\r\n 'set sets parameter parameters variable variables ' +\r\n 'scalar scalars equation equations',\r\n end: ';',\r\n contains: [\r\n hljs.COMMENT('^\\\\*', '$'),\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n ASSIGNMENT,\r\n DESCTEXT,\r\n ]\r\n },\r\n { // table environment\r\n beginKeywords: 'table',\r\n end: ';',\r\n returnBegin: true,\r\n contains: [\r\n { // table header row\r\n beginKeywords: 'table',\r\n end: '$',\r\n contains: [DESCTEXT],\r\n },\r\n hljs.COMMENT('^\\\\*', '$'),\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.C_NUMBER_MODE,\r\n // Table does not contain DESCTEXT or ASSIGNMENT\r\n ]\r\n },\r\n // Function definitions\r\n {\r\n className: 'function',\r\n begin: /^[a-z][a-z0-9_,\\-+' ()$]+\\.{2}/,\r\n returnBegin: true,\r\n contains: [\r\n { // Function title\r\n className: 'title',\r\n begin: /^[a-z0-9_]+/,\r\n },\r\n PARAMS,\r\n SYMBOLS,\r\n ],\r\n },\r\n hljs.C_NUMBER_MODE,\r\n SYMBOLS,\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var KEYWORDS = {\r\n keyword: 'bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' +\r\n 'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' +\r\n 'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' +\r\n 'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' +\r\n 'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' +\r\n 'matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print ' +\r\n 'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' +\r\n 'scroll setarray show sparse stop string struct system trace trap threadfor ' +\r\n 'threadendfor threadbegin threadjoin threadstat threadend until use while winprint ' +\r\n 'ne ge le gt lt and xor or not eq eqv',\r\n built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' +\r\n 'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' +\r\n 'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' +\r\n 'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' +\r\n 'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' +\r\n 'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' +\r\n 'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' +\r\n 'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' +\r\n 'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' +\r\n 'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' +\r\n 'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' +\r\n 'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' +\r\n 'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' +\r\n 'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' +\r\n 'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' +\r\n 'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' +\r\n 'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' +\r\n 'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' +\r\n 'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' +\r\n 'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' +\r\n 'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' +\r\n 'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' +\r\n 'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' +\r\n 'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' +\r\n 'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' +\r\n 'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' +\r\n 'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' +\r\n 'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' +\r\n 'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' +\r\n 'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' +\r\n 'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' +\r\n 'EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq ' +\r\n 'feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt ' +\r\n 'floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC ' +\r\n 'gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders ' +\r\n 'gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse ' +\r\n 'gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray ' +\r\n 'getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders ' +\r\n 'getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT ' +\r\n 'gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm ' +\r\n 'hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 ' +\r\n 'indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 ' +\r\n 'inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf ' +\r\n 'isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv ' +\r\n 'lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn ' +\r\n 'lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind ' +\r\n 'loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars ' +\r\n 'makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli ' +\r\n 'mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave ' +\r\n 'movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate ' +\r\n 'olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto ' +\r\n 'pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox ' +\r\n 'plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea ' +\r\n 'plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout ' +\r\n 'plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill ' +\r\n 'plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol ' +\r\n 'plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange ' +\r\n 'plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel ' +\r\n 'plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot ' +\r\n 'pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames ' +\r\n 'pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector ' +\r\n 'pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate ' +\r\n 'qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr ' +\r\n 'real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn ' +\r\n 'rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel ' +\r\n 'rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn ' +\r\n 'rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh ' +\r\n 'rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind ' +\r\n 'scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa ' +\r\n 'setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind ' +\r\n 'sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL ' +\r\n 'spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense ' +\r\n 'spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet ' +\r\n 'sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt ' +\r\n 'strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr ' +\r\n 'surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname ' +\r\n 'time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk ' +\r\n 'trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt ' +\r\n 'utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs ' +\r\n 'vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window ' +\r\n 'writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM ' +\r\n 'xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute ' +\r\n 'h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels ' +\r\n 'plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester ' +\r\n 'strtrim',\r\n literal: 'DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS ' +\r\n 'DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 ' +\r\n 'DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS ' +\r\n 'DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES ' +\r\n 'DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR'\r\n };\r\n\r\n\r\n var AT_COMMENT_MODE = hljs.COMMENT('@', '@');\r\n\r\n var PREPROCESSOR =\r\n {\r\n className: 'meta',\r\n begin: '#', end: '$',\r\n keywords: {'meta-keyword': 'define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline'},\r\n contains: [\r\n {\r\n begin: /\\\\\\n/, relevance: 0\r\n },\r\n {\r\n beginKeywords: 'include', end: '$',\r\n keywords: {'meta-keyword': 'include'},\r\n contains: [\r\n {\r\n className: 'meta-string',\r\n begin: '\"', end: '\"',\r\n illegal: '\\\\n'\r\n }\r\n ]\r\n },\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n AT_COMMENT_MODE,\r\n ]\r\n };\r\n\r\n var STRUCT_TYPE =\r\n {\r\n begin: /\\bstruct\\s+/,\r\n end: /\\s/,\r\n keywords: \"struct\",\r\n contains: [\r\n {\r\n className: \"type\",\r\n begin: hljs.UNDERSCORE_IDENT_RE,\r\n relevance: 0,\r\n },\r\n ],\r\n };\r\n\r\n // only for definitions\r\n var PARSE_PARAMS = [\r\n {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n endsWithParent: true,\r\n relevance: 0,\r\n contains: [\r\n { // dots\r\n className: 'literal',\r\n begin: /\\.\\.\\./,\r\n },\r\n hljs.C_NUMBER_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n AT_COMMENT_MODE,\r\n STRUCT_TYPE,\r\n ]\r\n }\r\n ];\r\n\r\n var FUNCTION_DEF =\r\n {\r\n className: \"title\",\r\n begin: hljs.UNDERSCORE_IDENT_RE,\r\n relevance: 0,\r\n };\r\n\r\n var DEFINITION = function (beginKeywords, end, inherits) {\r\n var mode = hljs.inherit(\r\n {\r\n className: \"function\",\r\n beginKeywords: beginKeywords,\r\n end: end,\r\n excludeEnd: true,\r\n contains: [].concat(PARSE_PARAMS),\r\n },\r\n inherits || {}\r\n );\r\n mode.contains.push(FUNCTION_DEF);\r\n mode.contains.push(hljs.C_NUMBER_MODE);\r\n mode.contains.push(hljs.C_BLOCK_COMMENT_MODE);\r\n mode.contains.push(AT_COMMENT_MODE);\r\n return mode;\r\n };\r\n\r\n var BUILT_IN_REF =\r\n { // these are explicitly named internal function calls\r\n className: 'built_in',\r\n begin: '\\\\b(' + KEYWORDS.built_in.split(' ').join('|') + ')\\\\b',\r\n };\r\n\r\n var STRING_REF =\r\n {\r\n className: 'string',\r\n begin: '\"', end: '\"',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n relevance: 0,\r\n };\r\n\r\n var FUNCTION_REF =\r\n {\r\n //className: \"fn_ref\",\r\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\r\n returnBegin: true,\r\n keywords: KEYWORDS,\r\n relevance: 0,\r\n contains: [\r\n {\r\n beginKeywords: KEYWORDS.keyword,\r\n },\r\n BUILT_IN_REF,\r\n { // ambiguously named function calls get a relevance of 0\r\n className: 'built_in',\r\n begin: hljs.UNDERSCORE_IDENT_RE,\r\n relevance: 0,\r\n },\r\n ],\r\n };\r\n\r\n var FUNCTION_REF_PARAMS =\r\n {\r\n //className: \"fn_ref_params\",\r\n begin: /\\(/,\r\n end: /\\)/,\r\n relevance: 0,\r\n keywords: { built_in: KEYWORDS.built_in, literal: KEYWORDS.literal },\r\n contains: [\r\n hljs.C_NUMBER_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n AT_COMMENT_MODE,\r\n BUILT_IN_REF,\r\n FUNCTION_REF,\r\n STRING_REF,\r\n 'self',\r\n ],\r\n };\r\n\r\n FUNCTION_REF.contains.push(FUNCTION_REF_PARAMS);\r\n\r\n return {\r\n aliases: ['gss'],\r\n case_insensitive: true, // language is case-insensitive\r\n keywords: KEYWORDS,\r\n illegal: /(\\{[%#]|[%#]\\}| <- )/,\r\n contains: [\r\n hljs.C_NUMBER_MODE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n AT_COMMENT_MODE,\r\n STRING_REF,\r\n PREPROCESSOR,\r\n {\r\n className: 'keyword',\r\n begin: /\\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/,\r\n },\r\n DEFINITION('proc keyword', ';'),\r\n DEFINITION('fn', '='),\r\n {\r\n beginKeywords: 'for threadfor',\r\n end: /;/,\r\n //end: /\\(/,\r\n relevance: 0,\r\n contains: [\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n AT_COMMENT_MODE,\r\n FUNCTION_REF_PARAMS,\r\n ],\r\n },\r\n { // custom method guard\r\n // excludes method names from keyword processing\r\n variants: [\r\n { begin: hljs.UNDERSCORE_IDENT_RE + '\\\\.' + hljs.UNDERSCORE_IDENT_RE, },\r\n { begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*=', },\r\n ],\r\n relevance: 0,\r\n },\r\n FUNCTION_REF,\r\n STRUCT_TYPE,\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\r\n var GCODE_CLOSE_RE = '\\\\%';\r\n var GCODE_KEYWORDS =\r\n 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +\r\n 'EQ LT GT NE GE LE OR XOR';\r\n var GCODE_START = {\r\n className: 'meta',\r\n begin: '([O])([0-9]+)'\r\n };\r\n var GCODE_CODE = [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.COMMENT(/\\(/, /\\)/),\r\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))|' + hljs.C_NUMBER_RE}),\r\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\r\n {\r\n className: 'name',\r\n begin: '([G])([0-9]+\\\\.?[0-9]?)'\r\n },\r\n {\r\n className: 'name',\r\n begin: '([M])([0-9]+\\\\.?[0-9]?)'\r\n },\r\n {\r\n className: 'attr',\r\n begin: '(VC|VS|#)',\r\n end: '(\\\\d+)'\r\n },\r\n {\r\n className: 'attr',\r\n begin: '(VZOFX|VZOFY|VZOFZ)'\r\n },\r\n {\r\n className: 'built_in',\r\n begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\\\[)',\r\n end: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))(\\\\])'\r\n },\r\n {\r\n className: 'symbol',\r\n variants: [\r\n {\r\n begin: 'N', end: '\\\\d+',\r\n illegal: '\\\\W'\r\n }\r\n ]\r\n }\r\n ];\r\n\r\n return {\r\n aliases: ['nc'],\r\n // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.\r\n // However, most prefer all uppercase and uppercase is customary.\r\n case_insensitive: true,\r\n lexemes: GCODE_IDENT_RE,\r\n keywords: GCODE_KEYWORDS,\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: GCODE_CLOSE_RE\r\n },\r\n GCODE_START\r\n ].concat(GCODE_CODE)\r\n };\r\n};","module.exports = function (hljs) {\r\n return {\r\n aliases: ['feature'],\r\n keywords: 'Feature Background Ability Business\\ Need Scenario Scenarios Scenario\\ Outline Scenario\\ Template Examples Given And Then But When',\r\n contains: [\r\n {\r\n className: 'symbol',\r\n begin: '\\\\*',\r\n relevance: 0\r\n },\r\n {\r\n className: 'meta',\r\n begin: '@[^@\\\\s]+'\r\n },\r\n {\r\n begin: '\\\\|', end: '\\\\|\\\\w*$',\r\n contains: [\r\n {\r\n className: 'string',\r\n begin: '[^|]+'\r\n }\r\n ]\r\n },\r\n {\r\n className: 'variable',\r\n begin: '<', end: '>'\r\n },\r\n hljs.HASH_COMMENT_MODE,\r\n {\r\n className: 'string',\r\n begin: '\"\"\"', end: '\"\"\"'\r\n },\r\n hljs.QUOTE_STRING_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords: {\r\n keyword:\r\n // Statements\r\n 'break continue discard do else for if return while switch case default ' +\r\n // Qualifiers\r\n 'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' +\r\n 'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' +\r\n 'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' +\r\n 'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' +\r\n 'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' +\r\n 'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f '+\r\n 'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' +\r\n 'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' +\r\n 'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' +\r\n 'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' +\r\n 'triangles triangles_adjacency uniform varying vertices volatile writeonly',\r\n type:\r\n 'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' +\r\n 'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' +\r\n 'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer' +\r\n 'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' +\r\n 'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' +\r\n 'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' +\r\n 'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' +\r\n 'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' +\r\n 'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' +\r\n 'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' +\r\n 'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' +\r\n 'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' +\r\n 'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' +\r\n 'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' +\r\n 'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void',\r\n built_in:\r\n // Constants\r\n 'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' +\r\n 'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' +\r\n 'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' +\r\n 'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' +\r\n 'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' +\r\n 'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' +\r\n 'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' +\r\n 'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' +\r\n 'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' +\r\n 'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' +\r\n 'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' +\r\n 'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' +\r\n 'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' +\r\n 'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' +\r\n 'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' +\r\n 'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' +\r\n 'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' +\r\n 'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' +\r\n 'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' +\r\n 'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' +\r\n 'gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms ' +\r\n 'gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits ' +\r\n 'gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset ' +\r\n // Variables\r\n 'gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial ' +\r\n 'gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color ' +\r\n 'gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord ' +\r\n 'gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor ' +\r\n 'gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial ' +\r\n 'gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel ' +\r\n 'gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix ' +\r\n 'gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose ' +\r\n 'gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose ' +\r\n 'gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 ' +\r\n 'gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 ' +\r\n 'gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ ' +\r\n 'gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord ' +\r\n 'gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse ' +\r\n 'gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask ' +\r\n 'gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter ' +\r\n 'gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose ' +\r\n 'gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out ' +\r\n // Functions\r\n 'EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin ' +\r\n 'asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement ' +\r\n 'atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier ' +\r\n 'bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross ' +\r\n 'dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB ' +\r\n 'floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan ' +\r\n 'greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap ' +\r\n 'imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad ' +\r\n 'imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset ' +\r\n 'interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log ' +\r\n 'log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer ' +\r\n 'memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 ' +\r\n 'normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 ' +\r\n 'packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod ' +\r\n 'shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh ' +\r\n 'smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod ' +\r\n 'texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod ' +\r\n 'texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod ' +\r\n 'textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset ' +\r\n 'textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset ' +\r\n 'textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod ' +\r\n 'textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 ' +\r\n 'unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow',\r\n literal: 'true false'\r\n },\r\n illegal: '\"',\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.C_NUMBER_MODE,\r\n {\r\n className: 'meta',\r\n begin: '#', end: '$'\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var GML_KEYWORDS = {\r\n keyword: 'begin end if then else while do for break continue with until ' +\r\n 'repeat exit and or xor not return mod div switch case default var ' +\r\n 'globalvar enum #macro #region #endregion',\r\n built_in: 'is_real is_string is_array is_undefined is_int32 is_int64 ' +\r\n 'is_ptr is_vec3 is_vec4 is_matrix is_bool typeof ' +\r\n 'variable_global_exists variable_global_get variable_global_set ' +\r\n 'variable_instance_exists variable_instance_get variable_instance_set ' +\r\n 'variable_instance_get_names array_length_1d array_length_2d ' +\r\n 'array_height_2d array_equals array_create array_copy random ' +\r\n 'random_range irandom irandom_range random_set_seed random_get_seed ' +\r\n 'randomize randomise choose abs round floor ceil sign frac sqrt sqr ' +\r\n 'exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos ' +\r\n 'dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn ' +\r\n 'min max mean median clamp lerp dot_product dot_product_3d ' +\r\n 'dot_product_normalised dot_product_3d_normalised ' +\r\n 'dot_product_normalized dot_product_3d_normalized math_set_epsilon ' +\r\n 'math_get_epsilon angle_difference point_distance_3d point_distance ' +\r\n 'point_direction lengthdir_x lengthdir_y real string int64 ptr ' +\r\n 'string_format chr ansi_char ord string_length string_byte_length ' +\r\n 'string_pos string_copy string_char_at string_ord_at string_byte_at ' +\r\n 'string_set_byte_at string_delete string_insert string_lower ' +\r\n 'string_upper string_repeat string_letters string_digits ' +\r\n 'string_lettersdigits string_replace string_replace_all string_count ' +\r\n 'string_hash_to_newline clipboard_has_text clipboard_set_text ' +\r\n 'clipboard_get_text date_current_datetime date_create_datetime ' +\r\n 'date_valid_datetime date_inc_year date_inc_month date_inc_week ' +\r\n 'date_inc_day date_inc_hour date_inc_minute date_inc_second ' +\r\n 'date_get_year date_get_month date_get_week date_get_day ' +\r\n 'date_get_hour date_get_minute date_get_second date_get_weekday ' +\r\n 'date_get_day_of_year date_get_hour_of_year date_get_minute_of_year ' +\r\n 'date_get_second_of_year date_year_span date_month_span ' +\r\n 'date_week_span date_day_span date_hour_span date_minute_span ' +\r\n 'date_second_span date_compare_datetime date_compare_date ' +\r\n 'date_compare_time date_date_of date_time_of date_datetime_string ' +\r\n 'date_date_string date_time_string date_days_in_month ' +\r\n 'date_days_in_year date_leap_year date_is_today date_set_timezone ' +\r\n 'date_get_timezone game_set_speed game_get_speed motion_set ' +\r\n 'motion_add place_free place_empty place_meeting place_snapped ' +\r\n 'move_random move_snap move_towards_point move_contact_solid ' +\r\n 'move_contact_all move_outside_solid move_outside_all ' +\r\n 'move_bounce_solid move_bounce_all move_wrap distance_to_point ' +\r\n 'distance_to_object position_empty position_meeting path_start ' +\r\n 'path_end mp_linear_step mp_potential_step mp_linear_step_object ' +\r\n 'mp_potential_step_object mp_potential_settings mp_linear_path ' +\r\n 'mp_potential_path mp_linear_path_object mp_potential_path_object ' +\r\n 'mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell ' +\r\n 'mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell ' +\r\n 'mp_grid_add_rectangle mp_grid_add_instances mp_grid_path ' +\r\n 'mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle ' +\r\n 'collision_circle collision_ellipse collision_line ' +\r\n 'collision_point_list collision_rectangle_list collision_circle_list ' +\r\n 'collision_ellipse_list collision_line_list instance_position_list ' +\r\n 'instance_place_list point_in_rectangle ' +\r\n 'point_in_triangle point_in_circle rectangle_in_rectangle ' +\r\n 'rectangle_in_triangle rectangle_in_circle instance_find ' +\r\n 'instance_exists instance_number instance_position instance_nearest ' +\r\n 'instance_furthest instance_place instance_create_depth ' +\r\n 'instance_create_layer instance_copy instance_change instance_destroy ' +\r\n 'position_destroy position_change instance_id_get ' +\r\n 'instance_deactivate_all instance_deactivate_object ' +\r\n 'instance_deactivate_region instance_activate_all ' +\r\n 'instance_activate_object instance_activate_region room_goto ' +\r\n 'room_goto_previous room_goto_next room_previous room_next ' +\r\n 'room_restart game_end game_restart game_load game_save ' +\r\n 'game_save_buffer game_load_buffer event_perform event_user ' +\r\n 'event_perform_object event_inherited show_debug_message ' +\r\n 'show_debug_overlay debug_event debug_get_callstack alarm_get ' +\r\n 'alarm_set font_texture_page_size keyboard_set_map keyboard_get_map ' +\r\n 'keyboard_unset_map keyboard_check keyboard_check_pressed ' +\r\n 'keyboard_check_released keyboard_check_direct keyboard_get_numlock ' +\r\n 'keyboard_set_numlock keyboard_key_press keyboard_key_release ' +\r\n 'keyboard_clear io_clear mouse_check_button ' +\r\n 'mouse_check_button_pressed mouse_check_button_released ' +\r\n 'mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite ' +\r\n 'draw_sprite_pos draw_sprite_ext draw_sprite_stretched ' +\r\n 'draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext ' +\r\n 'draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear ' +\r\n 'draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle ' +\r\n 'draw_roundrect draw_roundrect_ext draw_triangle draw_circle ' +\r\n 'draw_ellipse draw_set_circle_precision draw_arrow draw_button ' +\r\n 'draw_path draw_healthbar draw_getpixel draw_getpixel_ext ' +\r\n 'draw_set_colour draw_set_color draw_set_alpha draw_get_colour ' +\r\n 'draw_get_color draw_get_alpha merge_colour make_colour_rgb ' +\r\n 'make_colour_hsv colour_get_red colour_get_green colour_get_blue ' +\r\n 'colour_get_hue colour_get_saturation colour_get_value merge_color ' +\r\n 'make_color_rgb make_color_hsv color_get_red color_get_green ' +\r\n 'color_get_blue color_get_hue color_get_saturation color_get_value ' +\r\n 'merge_color screen_save screen_save_part draw_set_font ' +\r\n 'draw_set_halign draw_set_valign draw_text draw_text_ext string_width ' +\r\n 'string_height string_width_ext string_height_ext ' +\r\n 'draw_text_transformed draw_text_ext_transformed draw_text_colour ' +\r\n 'draw_text_ext_colour draw_text_transformed_colour ' +\r\n 'draw_text_ext_transformed_colour draw_text_color draw_text_ext_color ' +\r\n 'draw_text_transformed_color draw_text_ext_transformed_color ' +\r\n 'draw_point_colour draw_line_colour draw_line_width_colour ' +\r\n 'draw_rectangle_colour draw_roundrect_colour ' +\r\n 'draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour ' +\r\n 'draw_ellipse_colour draw_point_color draw_line_color ' +\r\n 'draw_line_width_color draw_rectangle_color draw_roundrect_color ' +\r\n 'draw_roundrect_color_ext draw_triangle_color draw_circle_color ' +\r\n 'draw_ellipse_color draw_primitive_begin draw_vertex ' +\r\n 'draw_vertex_colour draw_vertex_color draw_primitive_end ' +\r\n 'sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture ' +\r\n 'texture_get_width texture_get_height texture_get_uvs ' +\r\n 'draw_primitive_begin_texture draw_vertex_texture ' +\r\n 'draw_vertex_texture_colour draw_vertex_texture_color ' +\r\n 'texture_global_scale surface_create surface_create_ext ' +\r\n 'surface_resize surface_free surface_exists surface_get_width ' +\r\n 'surface_get_height surface_get_texture surface_set_target ' +\r\n 'surface_set_target_ext surface_reset_target surface_depth_disable ' +\r\n 'surface_get_depth_disable draw_surface draw_surface_stretched ' +\r\n 'draw_surface_tiled draw_surface_part draw_surface_ext ' +\r\n 'draw_surface_stretched_ext draw_surface_tiled_ext ' +\r\n 'draw_surface_part_ext draw_surface_general surface_getpixel ' +\r\n 'surface_getpixel_ext surface_save surface_save_part surface_copy ' +\r\n 'surface_copy_part application_surface_draw_enable ' +\r\n 'application_get_position application_surface_enable ' +\r\n 'application_surface_is_enabled display_get_width display_get_height ' +\r\n 'display_get_orientation display_get_gui_width display_get_gui_height ' +\r\n 'display_reset display_mouse_get_x display_mouse_get_y ' +\r\n 'display_mouse_set display_set_ui_visibility ' +\r\n 'window_set_fullscreen window_get_fullscreen ' +\r\n 'window_set_caption window_set_min_width window_set_max_width ' +\r\n 'window_set_min_height window_set_max_height window_get_visible_rects ' +\r\n 'window_get_caption window_set_cursor window_get_cursor ' +\r\n 'window_set_colour window_get_colour window_set_color ' +\r\n 'window_get_color window_set_position window_set_size ' +\r\n 'window_set_rectangle window_center window_get_x window_get_y ' +\r\n 'window_get_width window_get_height window_mouse_get_x ' +\r\n 'window_mouse_get_y window_mouse_set window_view_mouse_get_x ' +\r\n 'window_view_mouse_get_y window_views_mouse_get_x ' +\r\n 'window_views_mouse_get_y audio_listener_position ' +\r\n 'audio_listener_velocity audio_listener_orientation ' +\r\n 'audio_emitter_position audio_emitter_create audio_emitter_free ' +\r\n 'audio_emitter_exists audio_emitter_pitch audio_emitter_velocity ' +\r\n 'audio_emitter_falloff audio_emitter_gain audio_play_sound ' +\r\n 'audio_play_sound_on audio_play_sound_at audio_stop_sound ' +\r\n 'audio_resume_music audio_music_is_playing audio_resume_sound ' +\r\n 'audio_pause_sound audio_pause_music audio_channel_num ' +\r\n 'audio_sound_length audio_get_type audio_falloff_set_model ' +\r\n 'audio_play_music audio_stop_music audio_master_gain audio_music_gain ' +\r\n 'audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all ' +\r\n 'audio_pause_all audio_is_playing audio_is_paused audio_exists ' +\r\n 'audio_sound_set_track_position audio_sound_get_track_position ' +\r\n 'audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x ' +\r\n 'audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx ' +\r\n 'audio_emitter_get_vy audio_emitter_get_vz ' +\r\n 'audio_listener_set_position audio_listener_set_velocity ' +\r\n 'audio_listener_set_orientation audio_listener_get_data ' +\r\n 'audio_set_master_gain audio_get_master_gain audio_sound_get_gain ' +\r\n 'audio_sound_get_pitch audio_get_name audio_sound_set_track_position ' +\r\n 'audio_sound_get_track_position audio_create_stream ' +\r\n 'audio_destroy_stream audio_create_sync_group ' +\r\n 'audio_destroy_sync_group audio_play_in_sync_group ' +\r\n 'audio_start_sync_group audio_stop_sync_group audio_pause_sync_group ' +\r\n 'audio_resume_sync_group audio_sync_group_get_track_pos ' +\r\n 'audio_sync_group_debug audio_sync_group_is_playing audio_debug ' +\r\n 'audio_group_load audio_group_unload audio_group_is_loaded ' +\r\n 'audio_group_load_progress audio_group_name audio_group_stop_all ' +\r\n 'audio_group_set_gain audio_create_buffer_sound ' +\r\n 'audio_free_buffer_sound audio_create_play_queue ' +\r\n 'audio_free_play_queue audio_queue_sound audio_get_recorder_count ' +\r\n 'audio_get_recorder_info audio_start_recording audio_stop_recording ' +\r\n 'audio_sound_get_listener_mask audio_emitter_get_listener_mask ' +\r\n 'audio_get_listener_mask audio_sound_set_listener_mask ' +\r\n 'audio_emitter_set_listener_mask audio_set_listener_mask ' +\r\n 'audio_get_listener_count audio_get_listener_info audio_system ' +\r\n 'show_message show_message_async clickable_add clickable_add_ext ' +\r\n 'clickable_change clickable_change_ext clickable_delete ' +\r\n 'clickable_exists clickable_set_style show_question ' +\r\n 'show_question_async get_integer get_string get_integer_async ' +\r\n 'get_string_async get_login_async get_open_filename get_save_filename ' +\r\n 'get_open_filename_ext get_save_filename_ext show_error ' +\r\n 'highscore_clear highscore_add highscore_value highscore_name ' +\r\n 'draw_highscore sprite_exists sprite_get_name sprite_get_number ' +\r\n 'sprite_get_width sprite_get_height sprite_get_xoffset ' +\r\n 'sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right ' +\r\n 'sprite_get_bbox_top sprite_get_bbox_bottom sprite_save ' +\r\n 'sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext ' +\r\n 'sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush ' +\r\n 'sprite_flush_multi sprite_set_speed sprite_get_speed_type ' +\r\n 'sprite_get_speed font_exists font_get_name font_get_fontname ' +\r\n 'font_get_bold font_get_italic font_get_first font_get_last ' +\r\n 'font_get_size font_set_cache_size path_exists path_get_name ' +\r\n 'path_get_length path_get_time path_get_kind path_get_closed ' +\r\n 'path_get_precision path_get_number path_get_point_x path_get_point_y ' +\r\n 'path_get_point_speed path_get_x path_get_y path_get_speed ' +\r\n 'script_exists script_get_name timeline_add timeline_delete ' +\r\n 'timeline_clear timeline_exists timeline_get_name ' +\r\n 'timeline_moment_clear timeline_moment_add_script timeline_size ' +\r\n 'timeline_max_moment object_exists object_get_name object_get_sprite ' +\r\n 'object_get_solid object_get_visible object_get_persistent ' +\r\n 'object_get_mask object_get_parent object_get_physics ' +\r\n 'object_is_ancestor room_exists room_get_name sprite_set_offset ' +\r\n 'sprite_duplicate sprite_assign sprite_merge sprite_add ' +\r\n 'sprite_replace sprite_create_from_surface sprite_add_from_surface ' +\r\n 'sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask ' +\r\n 'font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite ' +\r\n 'font_add_sprite_ext font_replace font_replace_sprite ' +\r\n 'font_replace_sprite_ext font_delete path_set_kind path_set_closed ' +\r\n 'path_set_precision path_add path_assign path_duplicate path_append ' +\r\n 'path_delete path_add_point path_insert_point path_change_point ' +\r\n 'path_delete_point path_clear_points path_reverse path_mirror ' +\r\n 'path_flip path_rotate path_rescale path_shift script_execute ' +\r\n 'object_set_sprite object_set_solid object_set_visible ' +\r\n 'object_set_persistent object_set_mask room_set_width room_set_height ' +\r\n 'room_set_persistent room_set_background_colour ' +\r\n 'room_set_background_color room_set_view room_set_viewport ' +\r\n 'room_get_viewport room_set_view_enabled room_add room_duplicate ' +\r\n 'room_assign room_instance_add room_instance_clear room_get_camera ' +\r\n 'room_set_camera asset_get_index asset_get_type ' +\r\n 'file_text_open_from_string file_text_open_read file_text_open_write ' +\r\n 'file_text_open_append file_text_close file_text_write_string ' +\r\n 'file_text_write_real file_text_writeln file_text_read_string ' +\r\n 'file_text_read_real file_text_readln file_text_eof file_text_eoln ' +\r\n 'file_exists file_delete file_rename file_copy directory_exists ' +\r\n 'directory_create directory_destroy file_find_first file_find_next ' +\r\n 'file_find_close file_attributes filename_name filename_path ' +\r\n 'filename_dir filename_drive filename_ext filename_change_ext ' +\r\n 'file_bin_open file_bin_rewrite file_bin_close file_bin_position ' +\r\n 'file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte ' +\r\n 'parameter_count parameter_string environment_get_variable ' +\r\n 'ini_open_from_string ini_open ini_close ini_read_string ' +\r\n 'ini_read_real ini_write_string ini_write_real ini_key_exists ' +\r\n 'ini_section_exists ini_key_delete ini_section_delete ' +\r\n 'ds_set_precision ds_exists ds_stack_create ds_stack_destroy ' +\r\n 'ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ' +\r\n 'ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ' +\r\n 'ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ' +\r\n 'ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ' +\r\n 'ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ' +\r\n 'ds_list_create ds_list_destroy ds_list_clear ds_list_copy ' +\r\n 'ds_list_size ds_list_empty ds_list_add ds_list_insert ' +\r\n 'ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ' +\r\n 'ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ' +\r\n 'ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ' +\r\n 'ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ' +\r\n 'ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ' +\r\n 'ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ' +\r\n 'ds_map_find_value ds_map_find_previous ds_map_find_next ' +\r\n 'ds_map_find_first ds_map_find_last ds_map_write ds_map_read ' +\r\n 'ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ' +\r\n 'ds_map_secure_save_buffer ds_map_set ds_priority_create ' +\r\n 'ds_priority_destroy ds_priority_clear ds_priority_copy ' +\r\n 'ds_priority_size ds_priority_empty ds_priority_add ' +\r\n 'ds_priority_change_priority ds_priority_find_priority ' +\r\n 'ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ' +\r\n 'ds_priority_delete_max ds_priority_find_max ds_priority_write ' +\r\n 'ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ' +\r\n 'ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ' +\r\n 'ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ' +\r\n 'ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ' +\r\n 'ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ' +\r\n 'ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ' +\r\n 'ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ' +\r\n 'ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ' +\r\n 'ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ' +\r\n 'ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ' +\r\n 'ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ' +\r\n 'ds_grid_sort ds_grid_set ds_grid_get effect_create_below ' +\r\n 'effect_create_above effect_clear part_type_create part_type_destroy ' +\r\n 'part_type_exists part_type_clear part_type_shape part_type_sprite ' +\r\n 'part_type_size part_type_scale part_type_orientation part_type_life ' +\r\n 'part_type_step part_type_death part_type_speed part_type_direction ' +\r\n 'part_type_gravity part_type_colour1 part_type_colour2 ' +\r\n 'part_type_colour3 part_type_colour_mix part_type_colour_rgb ' +\r\n 'part_type_colour_hsv part_type_color1 part_type_color2 ' +\r\n 'part_type_color3 part_type_color_mix part_type_color_rgb ' +\r\n 'part_type_color_hsv part_type_alpha1 part_type_alpha2 ' +\r\n 'part_type_alpha3 part_type_blend part_system_create ' +\r\n 'part_system_create_layer part_system_destroy part_system_exists ' +\r\n 'part_system_clear part_system_draw_order part_system_depth ' +\r\n 'part_system_position part_system_automatic_update ' +\r\n 'part_system_automatic_draw part_system_update part_system_drawit ' +\r\n 'part_system_get_layer part_system_layer part_particles_create ' +\r\n 'part_particles_create_colour part_particles_create_color ' +\r\n 'part_particles_clear part_particles_count part_emitter_create ' +\r\n 'part_emitter_destroy part_emitter_destroy_all part_emitter_exists ' +\r\n 'part_emitter_clear part_emitter_region part_emitter_burst ' +\r\n 'part_emitter_stream external_call external_define external_free ' +\r\n 'window_handle window_device matrix_get matrix_set ' +\r\n 'matrix_build_identity matrix_build matrix_build_lookat ' +\r\n 'matrix_build_projection_ortho matrix_build_projection_perspective ' +\r\n 'matrix_build_projection_perspective_fov matrix_multiply ' +\r\n 'matrix_transform_vertex matrix_stack_push matrix_stack_pop ' +\r\n 'matrix_stack_multiply matrix_stack_set matrix_stack_clear ' +\r\n 'matrix_stack_top matrix_stack_is_empty browser_input_capture ' +\r\n 'os_get_config os_get_info os_get_language os_get_region ' +\r\n 'os_lock_orientation display_get_dpi_x display_get_dpi_y ' +\r\n 'display_set_gui_size display_set_gui_maximise ' +\r\n 'display_set_gui_maximize device_mouse_dbclick_enable ' +\r\n 'display_set_timing_method display_get_timing_method ' +\r\n 'display_set_sleep_margin display_get_sleep_margin virtual_key_add ' +\r\n 'virtual_key_hide virtual_key_delete virtual_key_show ' +\r\n 'draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level ' +\r\n 'draw_get_swf_aa_level draw_texture_flush draw_flush ' +\r\n 'gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc ' +\r\n 'gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog ' +\r\n 'gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext ' +\r\n 'gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable ' +\r\n 'gpu_set_colourwriteenable gpu_set_alphatestenable ' +\r\n 'gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter ' +\r\n 'gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext ' +\r\n 'gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat ' +\r\n 'gpu_set_tex_repeat_ext gpu_set_tex_mip_filter ' +\r\n 'gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias ' +\r\n 'gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext ' +\r\n 'gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso ' +\r\n 'gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable ' +\r\n 'gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable ' +\r\n 'gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable ' +\r\n 'gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext ' +\r\n 'gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src ' +\r\n 'gpu_get_blendmode_dest gpu_get_blendmode_srcalpha ' +\r\n 'gpu_get_blendmode_destalpha gpu_get_colorwriteenable ' +\r\n 'gpu_get_colourwriteenable gpu_get_alphatestenable ' +\r\n 'gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter ' +\r\n 'gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext ' +\r\n 'gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat ' +\r\n 'gpu_get_tex_repeat_ext gpu_get_tex_mip_filter ' +\r\n 'gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias ' +\r\n 'gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext ' +\r\n 'gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso ' +\r\n 'gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable ' +\r\n 'gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state ' +\r\n 'gpu_get_state gpu_set_state draw_light_define_ambient ' +\r\n 'draw_light_define_direction draw_light_define_point ' +\r\n 'draw_light_enable draw_set_lighting draw_light_get_ambient ' +\r\n 'draw_light_get draw_get_lighting shop_leave_rating url_get_domain ' +\r\n 'url_open url_open_ext url_open_full get_timer achievement_login ' +\r\n 'achievement_logout achievement_post achievement_increment ' +\r\n 'achievement_post_score achievement_available ' +\r\n 'achievement_show_achievements achievement_show_leaderboards ' +\r\n 'achievement_load_friends achievement_load_leaderboard ' +\r\n 'achievement_send_challenge achievement_load_progress ' +\r\n 'achievement_reset achievement_login_status achievement_get_pic ' +\r\n 'achievement_show_challenge_notifications achievement_get_challenges ' +\r\n 'achievement_event achievement_show achievement_get_info ' +\r\n 'cloud_file_save cloud_string_save cloud_synchronise ads_enable ' +\r\n 'ads_disable ads_setup ads_engagement_launch ads_engagement_available ' +\r\n 'ads_engagement_active ads_event ads_event_preload ' +\r\n 'ads_set_reward_callback ads_get_display_height ads_get_display_width ' +\r\n 'ads_move ads_interstitial_available ads_interstitial_display ' +\r\n 'device_get_tilt_x device_get_tilt_y device_get_tilt_z ' +\r\n 'device_is_keypad_open device_mouse_check_button ' +\r\n 'device_mouse_check_button_pressed device_mouse_check_button_released ' +\r\n 'device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y ' +\r\n 'device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status ' +\r\n 'iap_enumerate_products iap_restore_all iap_acquire iap_consume ' +\r\n 'iap_product_details iap_purchase_details facebook_init ' +\r\n 'facebook_login facebook_status facebook_graph_request ' +\r\n 'facebook_dialog facebook_logout facebook_launch_offerwall ' +\r\n 'facebook_post_message facebook_send_invite facebook_user_id ' +\r\n 'facebook_accesstoken facebook_check_permission ' +\r\n 'facebook_request_read_permissions ' +\r\n 'facebook_request_publish_permissions gamepad_is_supported ' +\r\n 'gamepad_get_device_count gamepad_is_connected ' +\r\n 'gamepad_get_description gamepad_get_button_threshold ' +\r\n 'gamepad_set_button_threshold gamepad_get_axis_deadzone ' +\r\n 'gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check ' +\r\n 'gamepad_button_check_pressed gamepad_button_check_released ' +\r\n 'gamepad_button_value gamepad_axis_count gamepad_axis_value ' +\r\n 'gamepad_set_vibration gamepad_set_colour gamepad_set_color ' +\r\n 'os_is_paused window_has_focus code_is_compiled http_get ' +\r\n 'http_get_file http_post_string http_request json_encode json_decode ' +\r\n 'zip_unzip load_csv base64_encode base64_decode md5_string_unicode ' +\r\n 'md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode ' +\r\n 'sha1_string_utf8 sha1_file os_powersave_enable analytics_event ' +\r\n 'analytics_event_ext win8_livetile_tile_notification ' +\r\n 'win8_livetile_tile_clear win8_livetile_badge_notification ' +\r\n 'win8_livetile_badge_clear win8_livetile_queue_enable ' +\r\n 'win8_secondarytile_pin win8_secondarytile_badge_notification ' +\r\n 'win8_secondarytile_delete win8_livetile_notification_begin ' +\r\n 'win8_livetile_notification_secondary_begin ' +\r\n 'win8_livetile_notification_expiry win8_livetile_notification_tag ' +\r\n 'win8_livetile_notification_text_add ' +\r\n 'win8_livetile_notification_image_add win8_livetile_notification_end ' +\r\n 'win8_appbar_enable win8_appbar_add_element ' +\r\n 'win8_appbar_remove_element win8_settingscharm_add_entry ' +\r\n 'win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry ' +\r\n 'win8_settingscharm_set_xaml_property ' +\r\n 'win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry ' +\r\n 'win8_share_image win8_share_screenshot win8_share_file ' +\r\n 'win8_share_url win8_share_text win8_search_enable ' +\r\n 'win8_search_disable win8_search_add_suggestions ' +\r\n 'win8_device_touchscreen_available win8_license_initialize_sandbox ' +\r\n 'win8_license_trial_version winphone_license_trial_version ' +\r\n 'winphone_tile_title winphone_tile_count winphone_tile_back_title ' +\r\n 'winphone_tile_back_content winphone_tile_back_content_wide ' +\r\n 'winphone_tile_front_image winphone_tile_front_image_small ' +\r\n 'winphone_tile_front_image_wide winphone_tile_back_image ' +\r\n 'winphone_tile_back_image_wide winphone_tile_background_colour ' +\r\n 'winphone_tile_background_color winphone_tile_icon_image ' +\r\n 'winphone_tile_small_icon_image winphone_tile_wide_content ' +\r\n 'winphone_tile_cycle_images winphone_tile_small_background_image ' +\r\n 'physics_world_create physics_world_gravity ' +\r\n 'physics_world_update_speed physics_world_update_iterations ' +\r\n 'physics_world_draw_debug physics_pause_enable physics_fixture_create ' +\r\n 'physics_fixture_set_kinematic physics_fixture_set_density ' +\r\n 'physics_fixture_set_awake physics_fixture_set_restitution ' +\r\n 'physics_fixture_set_friction physics_fixture_set_collision_group ' +\r\n 'physics_fixture_set_sensor physics_fixture_set_linear_damping ' +\r\n 'physics_fixture_set_angular_damping physics_fixture_set_circle_shape ' +\r\n 'physics_fixture_set_box_shape physics_fixture_set_edge_shape ' +\r\n 'physics_fixture_set_polygon_shape physics_fixture_set_chain_shape ' +\r\n 'physics_fixture_add_point physics_fixture_bind ' +\r\n 'physics_fixture_bind_ext physics_fixture_delete physics_apply_force ' +\r\n 'physics_apply_impulse physics_apply_angular_impulse ' +\r\n 'physics_apply_local_force physics_apply_local_impulse ' +\r\n 'physics_apply_torque physics_mass_properties physics_draw_debug ' +\r\n 'physics_test_overlap physics_remove_fixture physics_set_friction ' +\r\n 'physics_set_density physics_set_restitution physics_get_friction ' +\r\n 'physics_get_density physics_get_restitution ' +\r\n 'physics_joint_distance_create physics_joint_rope_create ' +\r\n 'physics_joint_revolute_create physics_joint_prismatic_create ' +\r\n 'physics_joint_pulley_create physics_joint_wheel_create ' +\r\n 'physics_joint_weld_create physics_joint_friction_create ' +\r\n 'physics_joint_gear_create physics_joint_enable_motor ' +\r\n 'physics_joint_get_value physics_joint_set_value physics_joint_delete ' +\r\n 'physics_particle_create physics_particle_delete ' +\r\n 'physics_particle_delete_region_circle ' +\r\n 'physics_particle_delete_region_box ' +\r\n 'physics_particle_delete_region_poly physics_particle_set_flags ' +\r\n 'physics_particle_set_category_flags physics_particle_draw ' +\r\n 'physics_particle_draw_ext physics_particle_count ' +\r\n 'physics_particle_get_data physics_particle_get_data_particle ' +\r\n 'physics_particle_group_begin physics_particle_group_circle ' +\r\n 'physics_particle_group_box physics_particle_group_polygon ' +\r\n 'physics_particle_group_add_point physics_particle_group_end ' +\r\n 'physics_particle_group_join physics_particle_group_delete ' +\r\n 'physics_particle_group_count physics_particle_group_get_data ' +\r\n 'physics_particle_group_get_mass physics_particle_group_get_inertia ' +\r\n 'physics_particle_group_get_centre_x ' +\r\n 'physics_particle_group_get_centre_y physics_particle_group_get_vel_x ' +\r\n 'physics_particle_group_get_vel_y physics_particle_group_get_ang_vel ' +\r\n 'physics_particle_group_get_x physics_particle_group_get_y ' +\r\n 'physics_particle_group_get_angle physics_particle_set_group_flags ' +\r\n 'physics_particle_get_group_flags physics_particle_get_max_count ' +\r\n 'physics_particle_get_radius physics_particle_get_density ' +\r\n 'physics_particle_get_damping physics_particle_get_gravity_scale ' +\r\n 'physics_particle_set_max_count physics_particle_set_radius ' +\r\n 'physics_particle_set_density physics_particle_set_damping ' +\r\n 'physics_particle_set_gravity_scale network_create_socket ' +\r\n 'network_create_socket_ext network_create_server ' +\r\n 'network_create_server_raw network_connect network_connect_raw ' +\r\n 'network_send_packet network_send_raw network_send_broadcast ' +\r\n 'network_send_udp network_send_udp_raw network_set_timeout ' +\r\n 'network_set_config network_resolve network_destroy buffer_create ' +\r\n 'buffer_write buffer_read buffer_seek buffer_get_surface ' +\r\n 'buffer_set_surface buffer_delete buffer_exists buffer_get_type ' +\r\n 'buffer_get_alignment buffer_poke buffer_peek buffer_save ' +\r\n 'buffer_save_ext buffer_load buffer_load_ext buffer_load_partial ' +\r\n 'buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize ' +\r\n 'buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode ' +\r\n 'buffer_base64_decode_ext buffer_sizeof buffer_get_address ' +\r\n 'buffer_create_from_vertex_buffer ' +\r\n 'buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer ' +\r\n 'buffer_async_group_begin buffer_async_group_option ' +\r\n 'buffer_async_group_end buffer_load_async buffer_save_async ' +\r\n 'gml_release_mode gml_pragma steam_activate_overlay ' +\r\n 'steam_is_overlay_enabled steam_is_overlay_activated ' +\r\n 'steam_get_persona_name steam_initialised ' +\r\n 'steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account ' +\r\n 'steam_file_persisted steam_get_quota_total steam_get_quota_free ' +\r\n 'steam_file_write steam_file_write_file steam_file_read ' +\r\n 'steam_file_delete steam_file_exists steam_file_size steam_file_share ' +\r\n 'steam_is_screenshot_requested steam_send_screenshot ' +\r\n 'steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc ' +\r\n 'steam_user_installed_dlc steam_set_achievement steam_get_achievement ' +\r\n 'steam_clear_achievement steam_set_stat_int steam_set_stat_float ' +\r\n 'steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float ' +\r\n 'steam_get_stat_avg_rate steam_reset_all_stats ' +\r\n 'steam_reset_all_stats_achievements steam_stats_ready ' +\r\n 'steam_create_leaderboard steam_upload_score steam_upload_score_ext ' +\r\n 'steam_download_scores_around_user steam_download_scores ' +\r\n 'steam_download_friends_scores steam_upload_score_buffer ' +\r\n 'steam_upload_score_buffer_ext steam_current_game_language ' +\r\n 'steam_available_languages steam_activate_overlay_browser ' +\r\n 'steam_activate_overlay_user steam_activate_overlay_store ' +\r\n 'steam_get_user_persona_name steam_get_app_id ' +\r\n 'steam_get_user_account_id steam_ugc_download steam_ugc_create_item ' +\r\n 'steam_ugc_start_item_update steam_ugc_set_item_title ' +\r\n 'steam_ugc_set_item_description steam_ugc_set_item_visibility ' +\r\n 'steam_ugc_set_item_tags steam_ugc_set_item_content ' +\r\n 'steam_ugc_set_item_preview steam_ugc_submit_item_update ' +\r\n 'steam_ugc_get_item_update_progress steam_ugc_subscribe_item ' +\r\n 'steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items ' +\r\n 'steam_ugc_get_subscribed_items steam_ugc_get_item_install_info ' +\r\n 'steam_ugc_get_item_update_info steam_ugc_request_item_details ' +\r\n 'steam_ugc_create_query_user steam_ugc_create_query_user_ex ' +\r\n 'steam_ugc_create_query_all steam_ugc_create_query_all_ex ' +\r\n 'steam_ugc_query_set_cloud_filename_filter ' +\r\n 'steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text ' +\r\n 'steam_ugc_query_set_ranked_by_trend_days ' +\r\n 'steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag ' +\r\n 'steam_ugc_query_set_return_long_description ' +\r\n 'steam_ugc_query_set_return_total_only ' +\r\n 'steam_ugc_query_set_allow_cached_response steam_ugc_send_query ' +\r\n 'shader_set shader_get_name shader_reset shader_current ' +\r\n 'shader_is_compiled shader_get_sampler_index shader_get_uniform ' +\r\n 'shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f ' +\r\n 'shader_set_uniform_f_array shader_set_uniform_matrix ' +\r\n 'shader_set_uniform_matrix_array shader_enable_corner_id ' +\r\n 'texture_set_stage texture_get_texel_width texture_get_texel_height ' +\r\n 'shaders_are_supported vertex_format_begin vertex_format_end ' +\r\n 'vertex_format_delete vertex_format_add_position ' +\r\n 'vertex_format_add_position_3d vertex_format_add_colour ' +\r\n 'vertex_format_add_color vertex_format_add_normal ' +\r\n 'vertex_format_add_texcoord vertex_format_add_textcoord ' +\r\n 'vertex_format_add_custom vertex_create_buffer ' +\r\n 'vertex_create_buffer_ext vertex_delete_buffer vertex_begin ' +\r\n 'vertex_end vertex_position vertex_position_3d vertex_colour ' +\r\n 'vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 ' +\r\n 'vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 ' +\r\n 'vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size ' +\r\n 'vertex_create_buffer_from_buffer ' +\r\n 'vertex_create_buffer_from_buffer_ext push_local_notification ' +\r\n 'push_get_first_local_notification push_get_next_local_notification ' +\r\n 'push_cancel_local_notification skeleton_animation_set ' +\r\n 'skeleton_animation_get skeleton_animation_mix ' +\r\n 'skeleton_animation_set_ext skeleton_animation_get_ext ' +\r\n 'skeleton_animation_get_duration skeleton_animation_get_frames ' +\r\n 'skeleton_animation_clear skeleton_skin_set skeleton_skin_get ' +\r\n 'skeleton_attachment_set skeleton_attachment_get ' +\r\n 'skeleton_attachment_create skeleton_collision_draw_set ' +\r\n 'skeleton_bone_data_get skeleton_bone_data_set ' +\r\n 'skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax ' +\r\n 'skeleton_get_num_bounds skeleton_get_bounds ' +\r\n 'skeleton_animation_get_frame skeleton_animation_set_frame ' +\r\n 'draw_skeleton draw_skeleton_time draw_skeleton_instance ' +\r\n 'draw_skeleton_collision skeleton_animation_list skeleton_skin_list ' +\r\n 'skeleton_slot_data layer_get_id layer_get_id_at_depth ' +\r\n 'layer_get_depth layer_create layer_destroy layer_destroy_instances ' +\r\n 'layer_add_instance layer_has_instance layer_set_visible ' +\r\n 'layer_get_visible layer_exists layer_x layer_y layer_get_x ' +\r\n 'layer_get_y layer_hspeed layer_vspeed layer_get_hspeed ' +\r\n 'layer_get_vspeed layer_script_begin layer_script_end layer_shader ' +\r\n 'layer_get_script_begin layer_get_script_end layer_get_shader ' +\r\n 'layer_set_target_room layer_get_target_room layer_reset_target_room ' +\r\n 'layer_get_all layer_get_all_elements layer_get_name layer_depth ' +\r\n 'layer_get_element_layer layer_get_element_type layer_element_move ' +\r\n 'layer_force_draw_depth layer_is_draw_depth_forced ' +\r\n 'layer_get_forced_depth layer_background_get_id ' +\r\n 'layer_background_exists layer_background_create ' +\r\n 'layer_background_destroy layer_background_visible ' +\r\n 'layer_background_change layer_background_sprite ' +\r\n 'layer_background_htiled layer_background_vtiled ' +\r\n 'layer_background_stretch layer_background_yscale ' +\r\n 'layer_background_xscale layer_background_blend ' +\r\n 'layer_background_alpha layer_background_index layer_background_speed ' +\r\n 'layer_background_get_visible layer_background_get_sprite ' +\r\n 'layer_background_get_htiled layer_background_get_vtiled ' +\r\n 'layer_background_get_stretch layer_background_get_yscale ' +\r\n 'layer_background_get_xscale layer_background_get_blend ' +\r\n 'layer_background_get_alpha layer_background_get_index ' +\r\n 'layer_background_get_speed layer_sprite_get_id layer_sprite_exists ' +\r\n 'layer_sprite_create layer_sprite_destroy layer_sprite_change ' +\r\n 'layer_sprite_index layer_sprite_speed layer_sprite_xscale ' +\r\n 'layer_sprite_yscale layer_sprite_angle layer_sprite_blend ' +\r\n 'layer_sprite_alpha layer_sprite_x layer_sprite_y ' +\r\n 'layer_sprite_get_sprite layer_sprite_get_index ' +\r\n 'layer_sprite_get_speed layer_sprite_get_xscale ' +\r\n 'layer_sprite_get_yscale layer_sprite_get_angle ' +\r\n 'layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x ' +\r\n 'layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists ' +\r\n 'layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x ' +\r\n 'tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset ' +\r\n 'tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width ' +\r\n 'tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get ' +\r\n 'tilemap_get_at_pixel tilemap_get_cell_x_at_pixel ' +\r\n 'tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile ' +\r\n 'tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask ' +\r\n 'tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index ' +\r\n 'tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty ' +\r\n 'tile_get_index tile_get_flip tile_get_mirror tile_get_rotate ' +\r\n 'layer_tile_exists layer_tile_create layer_tile_destroy ' +\r\n 'layer_tile_change layer_tile_xscale layer_tile_yscale ' +\r\n 'layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y ' +\r\n 'layer_tile_region layer_tile_visible layer_tile_get_sprite ' +\r\n 'layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend ' +\r\n 'layer_tile_get_alpha layer_tile_get_x layer_tile_get_y ' +\r\n 'layer_tile_get_region layer_tile_get_visible ' +\r\n 'layer_instance_get_instance instance_activate_layer ' +\r\n 'instance_deactivate_layer camera_create camera_create_view ' +\r\n 'camera_destroy camera_apply camera_get_active camera_get_default ' +\r\n 'camera_set_default camera_set_view_mat camera_set_proj_mat ' +\r\n 'camera_set_update_script camera_set_begin_script ' +\r\n 'camera_set_end_script camera_set_view_pos camera_set_view_size ' +\r\n 'camera_set_view_speed camera_set_view_border camera_set_view_angle ' +\r\n 'camera_set_view_target camera_get_view_mat camera_get_proj_mat ' +\r\n 'camera_get_update_script camera_get_begin_script ' +\r\n 'camera_get_end_script camera_get_view_x camera_get_view_y ' +\r\n 'camera_get_view_width camera_get_view_height camera_get_view_speed_x ' +\r\n 'camera_get_view_speed_y camera_get_view_border_x ' +\r\n 'camera_get_view_border_y camera_get_view_angle ' +\r\n 'camera_get_view_target view_get_camera view_get_visible ' +\r\n 'view_get_xport view_get_yport view_get_wport view_get_hport ' +\r\n 'view_get_surface_id view_set_camera view_set_visible view_set_xport ' +\r\n 'view_set_yport view_set_wport view_set_hport view_set_surface_id ' +\r\n 'gesture_drag_time gesture_drag_distance gesture_flick_speed ' +\r\n 'gesture_double_tap_time gesture_double_tap_distance ' +\r\n 'gesture_pinch_distance gesture_pinch_angle_towards ' +\r\n 'gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle ' +\r\n 'gesture_tap_count gesture_get_drag_time gesture_get_drag_distance ' +\r\n 'gesture_get_flick_speed gesture_get_double_tap_time ' +\r\n 'gesture_get_double_tap_distance gesture_get_pinch_distance ' +\r\n 'gesture_get_pinch_angle_towards gesture_get_pinch_angle_away ' +\r\n 'gesture_get_rotate_time gesture_get_rotate_angle ' +\r\n 'gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide ' +\r\n 'keyboard_virtual_status keyboard_virtual_height',\r\n literal: 'self other all noone global local undefined pointer_invalid ' +\r\n 'pointer_null path_action_stop path_action_restart ' +\r\n 'path_action_continue path_action_reverse true false pi GM_build_date ' +\r\n 'GM_version GM_runtime_version timezone_local timezone_utc ' +\r\n 'gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ' +\r\n 'ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ' +\r\n 'ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ' +\r\n 'ev_keyrelease ev_trigger ev_left_button ev_right_button ' +\r\n 'ev_middle_button ev_no_button ev_left_press ev_right_press ' +\r\n 'ev_middle_press ev_left_release ev_right_release ev_middle_release ' +\r\n 'ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ' +\r\n 'ev_global_left_button ev_global_right_button ev_global_middle_button ' +\r\n 'ev_global_left_press ev_global_right_press ev_global_middle_press ' +\r\n 'ev_global_left_release ev_global_right_release ' +\r\n 'ev_global_middle_release ev_joystick1_left ev_joystick1_right ' +\r\n 'ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ' +\r\n 'ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ' +\r\n 'ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ' +\r\n 'ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ' +\r\n 'ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ' +\r\n 'ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ' +\r\n 'ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ' +\r\n 'ev_joystick2_button8 ev_outside ev_boundary ev_game_start ' +\r\n 'ev_game_end ev_room_start ev_room_end ev_no_more_lives ' +\r\n 'ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ' +\r\n 'ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ' +\r\n 'ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ' +\r\n 'ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ' +\r\n 'ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ' +\r\n 'ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ' +\r\n 'ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ' +\r\n 'ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ' +\r\n 'ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ' +\r\n 'ev_global_gesture_tap ev_global_gesture_double_tap ' +\r\n 'ev_global_gesture_drag_start ev_global_gesture_dragging ' +\r\n 'ev_global_gesture_drag_end ev_global_gesture_flick ' +\r\n 'ev_global_gesture_pinch_start ev_global_gesture_pinch_in ' +\r\n 'ev_global_gesture_pinch_out ev_global_gesture_pinch_end ' +\r\n 'ev_global_gesture_rotate_start ev_global_gesture_rotating ' +\r\n 'ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return ' +\r\n 'vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab ' +\r\n 'vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home ' +\r\n 'vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 ' +\r\n 'vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 ' +\r\n 'vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 ' +\r\n 'vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract ' +\r\n 'vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift ' +\r\n 'vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle ' +\r\n 'c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime ' +\r\n 'c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal ' +\r\n 'c_white c_yellow c_orange fa_left fa_center fa_right fa_top ' +\r\n 'fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip ' +\r\n 'pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal ' +\r\n 'bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour ' +\r\n 'bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha ' +\r\n 'bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour ' +\r\n 'bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat ' +\r\n 'tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly ' +\r\n 'audio_falloff_none audio_falloff_inverse_distance ' +\r\n 'audio_falloff_inverse_distance_clamped audio_falloff_linear_distance ' +\r\n 'audio_falloff_linear_distance_clamped ' +\r\n 'audio_falloff_exponent_distance ' +\r\n 'audio_falloff_exponent_distance_clamped audio_old_system ' +\r\n 'audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none ' +\r\n 'cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse ' +\r\n 'cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint ' +\r\n 'cr_size_all spritespeed_framespersecond ' +\r\n 'spritespeed_framespergameframe asset_object asset_unknown ' +\r\n 'asset_sprite asset_sound asset_room asset_path asset_script ' +\r\n 'asset_font asset_timeline asset_tiles asset_shader fa_readonly ' +\r\n 'fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ' +\r\n 'ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ' +\r\n 'ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ' +\r\n 'ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ' +\r\n 'ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line ' +\r\n 'pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere ' +\r\n 'pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud ' +\r\n 'pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ' +\r\n 'ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ' +\r\n 'ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl ' +\r\n 'dll_stdcall matrix_view matrix_projection matrix_world os_win32 ' +\r\n 'os_windows os_macosx os_ios os_android os_symbian os_linux ' +\r\n 'os_unknown os_winphone os_tizen os_win8native ' +\r\n 'os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone ' +\r\n 'os_ps3 os_xbox360 os_uwp os_tvos os_switch ' +\r\n 'browser_not_a_browser browser_unknown browser_ie browser_firefox ' +\r\n 'browser_chrome browser_safari browser_safari_mobile browser_opera ' +\r\n 'browser_tizen browser_edge browser_windows_store browser_ie_mobile ' +\r\n 'device_ios_unknown device_ios_iphone device_ios_iphone_retina ' +\r\n 'device_ios_ipad device_ios_ipad_retina device_ios_iphone5 ' +\r\n 'device_ios_iphone6 device_ios_iphone6plus device_emulator ' +\r\n 'device_tablet display_landscape display_landscape_flipped ' +\r\n 'display_portrait display_portrait_flipped tm_sleep tm_countvsyncs ' +\r\n 'of_challenge_win of_challen ge_lose of_challenge_tie ' +\r\n 'leaderboard_type_number leaderboard_type_time_mins_secs ' +\r\n 'cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal ' +\r\n 'cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always ' +\r\n 'cull_noculling cull_clockwise cull_counterclockwise lighttype_dir ' +\r\n 'lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase ' +\r\n 'iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed ' +\r\n 'iap_status_uninitialised iap_status_unavailable iap_status_loading ' +\r\n 'iap_status_available iap_status_processing iap_status_restoring ' +\r\n 'iap_failed iap_unavailable iap_available iap_purchased iap_canceled ' +\r\n 'iap_refunded fb_login_default fb_login_fallback_to_webview ' +\r\n 'fb_login_no_fallback_to_webview fb_login_forcing_webview ' +\r\n 'fb_login_use_system_account fb_login_forcing_safari ' +\r\n 'phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x ' +\r\n 'phy_joint_anchor_2_y phy_joint_reaction_force_x ' +\r\n 'phy_joint_reaction_force_y phy_joint_reaction_torque ' +\r\n 'phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque ' +\r\n 'phy_joint_max_motor_torque phy_joint_translation phy_joint_speed ' +\r\n 'phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 ' +\r\n 'phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency ' +\r\n 'phy_joint_lower_angle_limit phy_joint_upper_angle_limit ' +\r\n 'phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque ' +\r\n 'phy_joint_max_force phy_debug_render_aabb ' +\r\n 'phy_debug_render_collision_pairs phy_debug_render_coms ' +\r\n 'phy_debug_render_core_shapes phy_debug_render_joints ' +\r\n 'phy_debug_render_obb phy_debug_render_shapes ' +\r\n 'phy_particle_flag_water phy_particle_flag_zombie ' +\r\n 'phy_particle_flag_wall phy_particle_flag_spring ' +\r\n 'phy_particle_flag_elastic phy_particle_flag_viscous ' +\r\n 'phy_particle_flag_powder phy_particle_flag_tensile ' +\r\n 'phy_particle_flag_colourmixing phy_particle_flag_colormixing ' +\r\n 'phy_particle_group_flag_solid phy_particle_group_flag_rigid ' +\r\n 'phy_particle_data_flag_typeflags phy_particle_data_flag_position ' +\r\n 'phy_particle_data_flag_velocity phy_particle_data_flag_colour ' +\r\n 'phy_particle_data_flag_color phy_particle_data_flag_category ' +\r\n 'achievement_our_info achievement_friends_info ' +\r\n 'achievement_leaderboard_info achievement_achievement_info ' +\r\n 'achievement_filter_all_players achievement_filter_friends_only ' +\r\n 'achievement_filter_favorites_only ' +\r\n 'achievement_type_achievement_challenge ' +\r\n 'achievement_type_score_challenge achievement_pic_loaded ' +\r\n 'achievement_show_ui achievement_show_profile ' +\r\n 'achievement_show_leaderboard achievement_show_achievement ' +\r\n 'achievement_show_bank achievement_show_friend_picker ' +\r\n 'achievement_show_purchase_prompt network_socket_tcp ' +\r\n 'network_socket_udp network_socket_bluetooth network_type_connect ' +\r\n 'network_type_disconnect network_type_data ' +\r\n 'network_type_non_blocking_connect network_config_connect_timeout ' +\r\n 'network_config_use_non_blocking_socket ' +\r\n 'network_config_enable_reliable_udp ' +\r\n 'network_config_disable_reliable_udp buffer_fixed buffer_grow ' +\r\n 'buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 ' +\r\n 'buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 ' +\r\n 'buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text ' +\r\n 'buffer_string buffer_surface_copy buffer_seek_start ' +\r\n 'buffer_seek_relative buffer_seek_end ' +\r\n 'buffer_generalerror buffer_outofspace buffer_outofbounds ' +\r\n 'buffer_invalidtype text_type button_type input_type ANSI_CHARSET ' +\r\n 'DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET ' +\r\n 'SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET ' +\r\n 'JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET ' +\r\n 'TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET ' +\r\n 'BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 ' +\r\n 'gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select ' +\r\n 'gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr ' +\r\n 'gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ' +\r\n 'ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none ' +\r\n 'lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric ' +\r\n 'lb_disp_time_sec lb_disp_time_ms ugc_result_success ' +\r\n 'ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ' +\r\n 'ugc_visibility_friends_only ugc_visibility_private ' +\r\n 'ugc_query_RankedByVote ugc_query_RankedByPublicationDate ' +\r\n 'ugc_query_AcceptedForGameRankedByAcceptanceDate ' +\r\n 'ugc_query_RankedByTrend ' +\r\n 'ugc_query_FavoritedByFriendsRankedByPublicationDate ' +\r\n 'ugc_query_CreatedByFriendsRankedByPublicationDate ' +\r\n 'ugc_query_RankedByNumTimesReported ' +\r\n 'ugc_query_CreatedByFollowedUsersRankedByPublicationDate ' +\r\n 'ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ' +\r\n 'ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ' +\r\n 'ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ' +\r\n 'ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ' +\r\n 'ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ' +\r\n 'ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ' +\r\n 'ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ' +\r\n 'ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ' +\r\n 'ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ' +\r\n 'ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ' +\r\n 'ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ' +\r\n 'ugc_match_WebGuides ugc_match_IntegratedGuides ' +\r\n 'ugc_match_UsableInGame ugc_match_ControllerBindings ' +\r\n 'vertex_usage_position vertex_usage_colour vertex_usage_color ' +\r\n 'vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord ' +\r\n 'vertex_usage_blendweight vertex_usage_blendindices ' +\r\n 'vertex_usage_psize vertex_usage_tangent vertex_usage_binormal ' +\r\n 'vertex_usage_fog vertex_usage_depth vertex_usage_sample ' +\r\n 'vertex_type_float1 vertex_type_float2 vertex_type_float3 ' +\r\n 'vertex_type_float4 vertex_type_colour vertex_type_color ' +\r\n 'vertex_type_ubyte4 layerelementtype_undefined ' +\r\n 'layerelementtype_background layerelementtype_instance ' +\r\n 'layerelementtype_oldtilemap layerelementtype_sprite ' +\r\n 'layerelementtype_tilemap layerelementtype_particlesystem ' +\r\n 'layerelementtype_tile tile_rotate tile_flip tile_mirror ' +\r\n 'tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url ' +\r\n 'kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name ' +\r\n 'kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google ' +\r\n 'kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route ' +\r\n 'kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo ' +\r\n 'kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency ' +\r\n 'kbv_autocapitalize_none kbv_autocapitalize_words ' +\r\n 'kbv_autocapitalize_sentences kbv_autocapitalize_characters',\r\n symbol: 'argument_relative argument argument0 argument1 argument2 ' +\r\n 'argument3 argument4 argument5 argument6 argument7 argument8 ' +\r\n 'argument9 argument10 argument11 argument12 argument13 argument14 ' +\r\n 'argument15 argument_count x y xprevious yprevious xstart ystart ' +\r\n 'hspeed vspeed direction speed friction gravity gravity_direction ' +\r\n 'path_index path_position path_positionprevious path_speed ' +\r\n 'path_scale path_orientation path_endaction object_index id solid ' +\r\n 'persistent mask_index instance_count instance_id room_speed fps ' +\r\n 'fps_real current_time current_year current_month current_day ' +\r\n 'current_weekday current_hour current_minute current_second alarm ' +\r\n 'timeline_index timeline_position timeline_speed timeline_running ' +\r\n 'timeline_loop room room_first room_last room_width room_height ' +\r\n 'room_caption room_persistent score lives health show_score ' +\r\n 'show_lives show_health caption_score caption_lives caption_health ' +\r\n 'event_type event_number event_object event_action ' +\r\n 'application_surface gamemaker_pro gamemaker_registered ' +\r\n 'gamemaker_version error_occurred error_last debug_mode ' +\r\n 'keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string ' +\r\n 'mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite ' +\r\n 'visible sprite_index sprite_width sprite_height sprite_xoffset ' +\r\n 'sprite_yoffset image_number image_index image_speed depth ' +\r\n 'image_xscale image_yscale image_angle image_alpha image_blend ' +\r\n 'bbox_left bbox_right bbox_top bbox_bottom layer background_colour ' +\r\n 'background_showcolour background_color background_showcolor ' +\r\n 'view_enabled view_current view_visible view_xview view_yview ' +\r\n 'view_wview view_hview view_xport view_yport view_wport view_hport ' +\r\n 'view_angle view_hborder view_vborder view_hspeed view_vspeed ' +\r\n 'view_object view_surface_id view_camera game_id game_display_name ' +\r\n 'game_project_name game_save_id working_directory temp_directory ' +\r\n 'program_directory browser_width browser_height os_type os_device ' +\r\n 'os_browser os_version display_aa async_load delta_time ' +\r\n 'webgl_enabled event_data iap_data phy_rotation phy_position_x ' +\r\n 'phy_position_y phy_angular_velocity phy_linear_velocity_x ' +\r\n 'phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed ' +\r\n 'phy_angular_damping phy_linear_damping phy_bullet ' +\r\n 'phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x ' +\r\n 'phy_com_y phy_dynamic phy_kinematic phy_sleeping ' +\r\n 'phy_collision_points phy_collision_x phy_collision_y ' +\r\n 'phy_col_normal_x phy_col_normal_y phy_position_xprevious ' +\r\n 'phy_position_yprevious'\r\n };\r\n\r\n return {\r\n aliases: ['gml', 'GML'],\r\n case_insensitive: false, // language is case-insensitive\r\n keywords: GML_KEYWORDS,\r\n\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var GO_KEYWORDS = {\r\n keyword:\r\n 'break default func interface select case map struct chan else goto package switch ' +\r\n 'const fallthrough if range type continue for import return var go defer ' +\r\n 'bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 ' +\r\n 'uint16 uint32 uint64 int uint uintptr rune',\r\n literal:\r\n 'true false iota nil',\r\n built_in:\r\n 'append cap close complex copy imag len make new panic print println real recover delete'\r\n };\r\n return {\r\n aliases: ['golang'],\r\n keywords: GO_KEYWORDS,\r\n illegal: '',\r\n end: ',\\\\s+',\r\n returnBegin: true,\r\n endsWithParent: true,\r\n contains: [\r\n {\r\n className: 'attr',\r\n begin: ':\\\\w+'\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n begin: '\\\\w+',\r\n relevance: 0\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n begin: '\\\\(\\\\s*',\r\n end: '\\\\s*\\\\)',\r\n excludeEnd: true,\r\n contains: [\r\n {\r\n begin: '\\\\w+\\\\s*=',\r\n end: '\\\\s+',\r\n returnBegin: true,\r\n endsWithParent: true,\r\n contains: [\r\n {\r\n className: 'attr',\r\n begin: '\\\\w+',\r\n relevance: 0\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n begin: '\\\\w+',\r\n relevance: 0\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n begin: '^\\\\s*[=~]\\\\s*'\r\n },\r\n {\r\n begin: '#{',\r\n starts: {\r\n end: '}',\r\n subLanguage: 'ruby'\r\n }\r\n }\r\n ]\r\n };\r\n};","module.exports = function (hljs) {\r\n var BUILT_INS = {'builtin-name': 'each in with if else unless bindattr action collection debugger log outlet template unbound view yield lookup'};\r\n\r\n var IDENTIFIER_PLAIN_OR_QUOTED = {\r\n begin: /\".*?\"|'.*?'|\\[.*?\\]|\\w+/\r\n };\r\n\r\n var EXPRESSION_OR_HELPER_CALL = hljs.inherit(IDENTIFIER_PLAIN_OR_QUOTED, {\r\n keywords: BUILT_INS,\r\n starts: {\r\n // helper params\r\n endsWithParent: true,\r\n relevance: 0,\r\n contains: [hljs.inherit(IDENTIFIER_PLAIN_OR_QUOTED, {relevance: 0})]\r\n }\r\n });\r\n\r\n var BLOCK_MUSTACHE_CONTENTS = hljs.inherit(EXPRESSION_OR_HELPER_CALL, {\r\n className: 'name'\r\n });\r\n\r\n var BASIC_MUSTACHE_CONTENTS = hljs.inherit(EXPRESSION_OR_HELPER_CALL, {\r\n // relevance 0 for backward compatibility concerning auto-detection\r\n relevance: 0\r\n });\r\n\r\n var ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH = {begin: /\\\\\\{\\{/, skip: true};\r\n var PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH = {begin: /\\\\\\\\(?=\\{\\{)/, skip: true};\r\n\r\n return {\r\n aliases: ['hbs', 'html.hbs', 'html.handlebars'],\r\n case_insensitive: true,\r\n subLanguage: 'xml',\r\n contains: [\r\n ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH,\r\n PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH,\r\n hljs.COMMENT(/\\{\\{!--/, /--\\}\\}/),\r\n hljs.COMMENT(/\\{\\{!/, /\\}\\}/),\r\n {\r\n // open raw block \"{{{{raw}}}} content not evaluated {{{{/raw}}}}\"\r\n className: 'template-tag',\r\n begin: /\\{\\{\\{\\{(?!\\/)/, end: /\\}\\}\\}\\}/,\r\n contains: [BLOCK_MUSTACHE_CONTENTS],\r\n starts: {end: /\\{\\{\\{\\{\\//, returnEnd: true, subLanguage: 'xml'}\r\n },\r\n {\r\n // close raw block\r\n className: 'template-tag',\r\n begin: /\\{\\{\\{\\{\\//, end: /\\}\\}\\}\\}/,\r\n contains: [BLOCK_MUSTACHE_CONTENTS]\r\n },\r\n {\r\n // open block statement\r\n className: 'template-tag',\r\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\r\n contains: [BLOCK_MUSTACHE_CONTENTS],\r\n },\r\n {\r\n // template variable or helper-call that is NOT html-escaped\r\n className: 'template-variable',\r\n begin: /\\{\\{\\{/, end: /\\}\\}\\}/,\r\n keywords: BUILT_INS,\r\n contains: [BASIC_MUSTACHE_CONTENTS]\r\n },\r\n {\r\n // template variable or helper-call that is html-escaped\r\n className: 'template-variable',\r\n begin: /\\{\\{/, end: /\\}\\}/,\r\n keywords: BUILT_INS,\r\n contains: [BASIC_MUSTACHE_CONTENTS]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var COMMENT = {\r\n variants: [\r\n hljs.COMMENT('--', '$'),\r\n hljs.COMMENT(\r\n '{-',\r\n '-}',\r\n {\r\n contains: ['self']\r\n }\r\n )\r\n ]\r\n };\r\n\r\n var PRAGMA = {\r\n className: 'meta',\r\n begin: '{-#', end: '#-}'\r\n };\r\n\r\n var PREPROCESSOR = {\r\n className: 'meta',\r\n begin: '^#', end: '$'\r\n };\r\n\r\n var CONSTRUCTOR = {\r\n className: 'type',\r\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (build-in, infix).\r\n relevance: 0\r\n };\r\n\r\n var LIST = {\r\n begin: '\\\\(', end: '\\\\)',\r\n illegal: '\"',\r\n contains: [\r\n PRAGMA,\r\n PREPROCESSOR,\r\n {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\r\n hljs.inherit(hljs.TITLE_MODE, {begin: '[_a-z][\\\\w\\']*'}),\r\n COMMENT\r\n ]\r\n };\r\n\r\n var RECORD = {\r\n begin: '{', end: '}',\r\n contains: LIST.contains\r\n };\r\n\r\n return {\r\n aliases: ['hs'],\r\n keywords:\r\n 'let in if then else case of where do module import hiding ' +\r\n 'qualified type data newtype deriving class instance as default ' +\r\n 'infix infixl infixr foreign export ccall stdcall cplusplus ' +\r\n 'jvm dotnet safe unsafe family forall mdo proc rec',\r\n contains: [\r\n\r\n // Top-level constructions.\r\n\r\n {\r\n beginKeywords: 'module', end: 'where',\r\n keywords: 'module where',\r\n contains: [LIST, COMMENT],\r\n illegal: '\\\\W\\\\.|;'\r\n },\r\n {\r\n begin: '\\\\bimport\\\\b', end: '$',\r\n keywords: 'import qualified as hiding',\r\n contains: [LIST, COMMENT],\r\n illegal: '\\\\W\\\\.|;'\r\n },\r\n\r\n {\r\n className: 'class',\r\n begin: '^(\\\\s*)?(class|instance)\\\\b', end: 'where',\r\n keywords: 'class family instance where',\r\n contains: [CONSTRUCTOR, LIST, COMMENT]\r\n },\r\n {\r\n className: 'class',\r\n begin: '\\\\b(data|(new)?type)\\\\b', end: '$',\r\n keywords: 'data family type newtype deriving',\r\n contains: [PRAGMA, CONSTRUCTOR, LIST, RECORD, COMMENT]\r\n },\r\n {\r\n beginKeywords: 'default', end: '$',\r\n contains: [CONSTRUCTOR, LIST, COMMENT]\r\n },\r\n {\r\n beginKeywords: 'infix infixl infixr', end: '$',\r\n contains: [hljs.C_NUMBER_MODE, COMMENT]\r\n },\r\n {\r\n begin: '\\\\bforeign\\\\b', end: '$',\r\n keywords: 'foreign import export ccall stdcall cplusplus jvm ' +\r\n 'dotnet safe unsafe',\r\n contains: [CONSTRUCTOR, hljs.QUOTE_STRING_MODE, COMMENT]\r\n },\r\n {\r\n className: 'meta',\r\n begin: '#!\\\\/usr\\\\/bin\\\\/env\\ runhaskell', end: '$'\r\n },\r\n\r\n // \"Whitespaces\".\r\n\r\n PRAGMA,\r\n PREPROCESSOR,\r\n\r\n // Literals and names.\r\n\r\n // TODO: characters.\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE,\r\n CONSTRUCTOR,\r\n hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\r\n\r\n COMMENT,\r\n\r\n {begin: '->|<-'} // No markup, relevance booster\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';\r\n var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';\r\n\r\n var HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array ';\r\n\r\n return {\r\n aliases: ['hx'],\r\n keywords: {\r\n keyword: 'break case cast catch continue default do dynamic else enum extern ' +\r\n 'for function here if import in inline never new override package private get set ' +\r\n 'public return static super switch this throw trace try typedef untyped using var while ' +\r\n HAXE_BASIC_TYPES,\r\n built_in:\r\n 'trace this',\r\n literal:\r\n 'true false null _'\r\n },\r\n contains: [\r\n { className: 'string', // interpolate-able strings\r\n begin: '\\'', end: '\\'',\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n { className: 'subst', // interpolation\r\n begin: '\\\\$\\\\{', end: '\\\\}'\r\n },\r\n { className: 'subst', // interpolation\r\n begin: '\\\\$', end: '\\\\W}'\r\n }\r\n ]\r\n },\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.C_NUMBER_MODE,\r\n { className: 'meta', // compiler meta\r\n begin: '@:', end: '$'\r\n },\r\n { className: 'meta', // compiler conditionals\r\n begin: '#', end: '$',\r\n keywords: {'meta-keyword': 'if else elseif end error'}\r\n },\r\n { className: 'type', // function types\r\n begin: ':[ \\t]*', end: '[^A-Za-z0-9_ \\t\\\\->]',\r\n excludeBegin: true, excludeEnd: true,\r\n relevance: 0\r\n },\r\n { className: 'type', // types\r\n begin: ':[ \\t]*', end: '\\\\W',\r\n excludeBegin: true, excludeEnd: true\r\n },\r\n { className: 'type', // instantiation\r\n begin: 'new *', end: '\\\\W',\r\n excludeBegin: true, excludeEnd: true\r\n },\r\n { className: 'class', // enums\r\n beginKeywords: 'enum', end: '\\\\{',\r\n contains: [\r\n hljs.TITLE_MODE\r\n ]\r\n },\r\n { className: 'class', // abstracts\r\n beginKeywords: 'abstract', end: '[\\\\{$]',\r\n contains: [\r\n { className: 'type',\r\n begin: '\\\\(', end: '\\\\)',\r\n excludeBegin: true, excludeEnd: true\r\n },\r\n { className: 'type',\r\n begin: 'from +', end: '\\\\W',\r\n excludeBegin: true, excludeEnd: true\r\n },\r\n { className: 'type',\r\n begin: 'to +', end: '\\\\W',\r\n excludeBegin: true, excludeEnd: true\r\n },\r\n hljs.TITLE_MODE\r\n ],\r\n keywords: {\r\n keyword: 'abstract from to'\r\n }\r\n },\r\n { className: 'class', // classes\r\n begin: '\\\\b(class|interface) +', end: '[\\\\{$]', excludeEnd: true,\r\n keywords: 'class interface',\r\n contains: [\r\n { className: 'keyword',\r\n begin: '\\\\b(extends|implements) +',\r\n keywords: 'extends implements',\r\n contains: [\r\n {\r\n className: 'type',\r\n begin: hljs.IDENT_RE,\r\n relevance: 0\r\n }\r\n ]\r\n },\r\n hljs.TITLE_MODE\r\n ]\r\n },\r\n { className: 'function',\r\n beginKeywords: 'function', end: '\\\\(', excludeEnd: true,\r\n illegal: '\\\\S',\r\n contains: [\r\n hljs.TITLE_MODE\r\n ]\r\n }\r\n ],\r\n illegal: /<\\//\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n case_insensitive: true,\r\n lexemes: /[\\w\\._]+/,\r\n keywords: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop',\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n\r\n {\r\n // multi-line string\r\n className: 'string',\r\n begin: '{\"', end: '\"}',\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n\r\n hljs.COMMENT(';', '$', {relevance: 0}),\r\n\r\n {\r\n // pre-processor\r\n className: 'meta',\r\n begin: '#', end: '$',\r\n keywords: {'meta-keyword': 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib'},\r\n contains: [\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'}),\r\n hljs.NUMBER_MODE,\r\n hljs.C_NUMBER_MODE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n },\r\n\r\n {\r\n // label\r\n className: 'symbol',\r\n begin: '^\\\\*(\\\\w+|@)'\r\n },\r\n\r\n hljs.NUMBER_MODE,\r\n hljs.C_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var BUILT_INS = 'action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view';\r\n\r\n var ATTR_ASSIGNMENT = {\r\n illegal: /\\}\\}/,\r\n begin: /[a-zA-Z0-9_]+=/,\r\n returnBegin: true,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'attr', begin: /[a-zA-Z0-9_]+/\r\n }\r\n ]\r\n };\r\n\r\n var SUB_EXPR = {\r\n illegal: /\\}\\}/,\r\n begin: /\\)/, end: /\\)/,\r\n contains: [\r\n {\r\n begin: /[a-zA-Z\\.\\-]+/,\r\n keywords: {built_in: BUILT_INS},\r\n starts: {\r\n endsWithParent: true, relevance: 0,\r\n contains: [\r\n hljs.QUOTE_STRING_MODE,\r\n ]\r\n }\r\n }\r\n ]\r\n };\r\n\r\n var TAG_INNARDS = {\r\n endsWithParent: true, relevance: 0,\r\n keywords: {keyword: 'as', built_in: BUILT_INS},\r\n contains: [\r\n hljs.QUOTE_STRING_MODE,\r\n ATTR_ASSIGNMENT,\r\n hljs.NUMBER_MODE\r\n ]\r\n };\r\n\r\n return {\r\n case_insensitive: true,\r\n subLanguage: 'xml',\r\n contains: [\r\n hljs.COMMENT('{{!(--)?', '(--)?}}'),\r\n {\r\n className: 'template-tag',\r\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\r\n contains: [\r\n {\r\n className: 'name',\r\n begin: /[a-zA-Z\\.\\-]+/,\r\n keywords: {'builtin-name': BUILT_INS},\r\n starts: TAG_INNARDS\r\n }\r\n ]\r\n },\r\n {\r\n className: 'template-variable',\r\n begin: /\\{\\{[a-zA-Z][a-zA-Z\\-]+/, end: /\\}\\}/,\r\n keywords: {keyword: 'as', built_in: BUILT_INS},\r\n contains: [\r\n hljs.QUOTE_STRING_MODE\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var VERSION = 'HTTP/[0-9\\\\.]+';\r\n return {\r\n aliases: ['https'],\r\n illegal: '\\\\S',\r\n contains: [\r\n {\r\n begin: '^' + VERSION, end: '$',\r\n contains: [{className: 'number', begin: '\\\\b\\\\d{3}\\\\b'}]\r\n },\r\n {\r\n begin: '^[A-Z]+ (.*?) ' + VERSION + '$', returnBegin: true, end: '$',\r\n contains: [\r\n {\r\n className: 'string',\r\n begin: ' ', end: ' ',\r\n excludeBegin: true, excludeEnd: true\r\n },\r\n {\r\n begin: VERSION\r\n },\r\n {\r\n className: 'keyword',\r\n begin: '[A-Z]+'\r\n }\r\n ]\r\n },\r\n {\r\n className: 'attribute',\r\n begin: '^\\\\w', end: ': ', excludeEnd: true,\r\n illegal: '\\\\n|\\\\s|=',\r\n starts: {end: '$', relevance: 0}\r\n },\r\n {\r\n begin: '\\\\n\\\\n',\r\n starts: {subLanguage: [], endsWithParent: true}\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var keywords = {\r\n 'builtin-name':\r\n // keywords\r\n '!= % %= & &= * ** **= *= *map ' +\r\n '+ += , --build-class-- --import-- -= . / // //= ' +\r\n '/= < << <<= <= = > >= >> >>= ' +\r\n '@ @= ^ ^= abs accumulate all and any ap-compose ' +\r\n 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' +\r\n 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' +\r\n 'callable calling-module-name car case cdr chain chr coll? combinations compile ' +\r\n 'compress cond cons cons? continue count curry cut cycle dec ' +\r\n 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' +\r\n 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' +\r\n 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' +\r\n 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' +\r\n 'flatten float? fn fnc fnr for for* format fraction genexpr ' +\r\n 'gensym get getattr global globals group-by hasattr hash hex id ' +\r\n 'identity if if* if-not if-python2 import in inc input instance? ' +\r\n 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' +\r\n 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' +\r\n 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' +\r\n 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' +\r\n 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' +\r\n 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' +\r\n 'none? nonlocal not not-in not? nth numeric? oct odd? open ' +\r\n 'or ord partition permutations pos? post-route postwalk pow prewalk print ' +\r\n 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' +\r\n 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' +\r\n 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' +\r\n 'string? sum switch symbol? take take-nth take-while tee try unless ' +\r\n 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' +\r\n 'xi xor yield yield-from zero? zip zip-longest | |= ~'\r\n };\r\n\r\n var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\r\n var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\r\n var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\r\n\r\n var SHEBANG = {\r\n className: 'meta',\r\n begin: '^#!', end: '$'\r\n };\r\n\r\n var SYMBOL = {\r\n begin: SYMBOL_RE,\r\n relevance: 0\r\n };\r\n var NUMBER = {\r\n className: 'number', begin: SIMPLE_NUMBER_RE,\r\n relevance: 0\r\n };\r\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\r\n var COMMENT = hljs.COMMENT(\r\n ';',\r\n '$',\r\n {\r\n relevance: 0\r\n }\r\n );\r\n var LITERAL = {\r\n className: 'literal',\r\n begin: /\\b([Tt]rue|[Ff]alse|nil|None)\\b/\r\n };\r\n var COLLECTION = {\r\n begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\r\n };\r\n var HINT = {\r\n className: 'comment',\r\n begin: '\\\\^' + SYMBOL_RE\r\n };\r\n var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\r\n var KEY = {\r\n className: 'symbol',\r\n begin: '[:]{1,2}' + SYMBOL_RE\r\n };\r\n var LIST = {\r\n begin: '\\\\(', end: '\\\\)'\r\n };\r\n var BODY = {\r\n endsWithParent: true,\r\n relevance: 0\r\n };\r\n var NAME = {\r\n keywords: keywords,\r\n lexemes: SYMBOL_RE,\r\n className: 'name', begin: SYMBOL_RE,\r\n starts: BODY\r\n };\r\n var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\r\n\r\n LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\r\n BODY.contains = DEFAULT_CONTAINS;\r\n COLLECTION.contains = DEFAULT_CONTAINS;\r\n\r\n return {\r\n aliases: ['hylang'],\r\n illegal: /\\S/,\r\n contains: [SHEBANG, LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\r\n }\r\n};","module.exports = function(hljs) {\r\n var START_BRACKET = '\\\\[';\r\n var END_BRACKET = '\\\\]';\r\n return {\r\n aliases: ['i7'],\r\n case_insensitive: true,\r\n keywords: {\r\n // Some keywords more or less unique to I7, for relevance.\r\n keyword:\r\n // kind:\r\n 'thing room person man woman animal container ' +\r\n 'supporter backdrop door ' +\r\n // characteristic:\r\n 'scenery open closed locked inside gender ' +\r\n // verb:\r\n 'is are say understand ' +\r\n // misc keyword:\r\n 'kind of rule'\r\n },\r\n contains: [\r\n {\r\n className: 'string',\r\n begin: '\"', end: '\"',\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'subst',\r\n begin: START_BRACKET, end: END_BRACKET\r\n }\r\n ]\r\n },\r\n {\r\n className: 'section',\r\n begin: /^(Volume|Book|Part|Chapter|Section|Table)\\b/,\r\n end: '$'\r\n },\r\n {\r\n // Rule definition\r\n // This is here for relevance.\r\n begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\b/,\r\n end: ':',\r\n contains: [\r\n {\r\n //Rule name\r\n begin: '\\\\(This', end: '\\\\)'\r\n }\r\n ]\r\n },\r\n {\r\n className: 'comment',\r\n begin: START_BRACKET, end: END_BRACKET,\r\n contains: ['self']\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var NUMBERS = {\r\n className: 'number',\r\n relevance: 0,\r\n variants: [\r\n { begin: /([\\+\\-]+)?[\\d]+_[\\d_]+/ },\r\n { begin: hljs.NUMBER_RE }\r\n ]\r\n };\r\n var COMMENTS = hljs.COMMENT();\r\n COMMENTS.variants = [\r\n {begin: /;/, end: /$/},\r\n {begin: /#/, end: /$/},\r\n ];\r\n var VARIABLES = {\r\n className: 'variable',\r\n variants: [\r\n { begin: /\\$[\\w\\d\"][\\w\\d_]*/ },\r\n { begin: /\\$\\{(.*?)}/ }\r\n ]\r\n };\r\n var LITERALS = {\r\n className: 'literal',\r\n begin: /\\bon|off|true|false|yes|no\\b/\r\n };\r\n var STRINGS = {\r\n className: \"string\",\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n variants: [\r\n { begin: \"'''\", end: \"'''\", relevance: 10 },\r\n { begin: '\"\"\"', end: '\"\"\"', relevance: 10 },\r\n { begin: '\"', end: '\"' },\r\n { begin: \"'\", end: \"'\" }\r\n ]\r\n };\r\n var ARRAY = {\r\n begin: /\\[/, end: /\\]/,\r\n contains: [\r\n COMMENTS,\r\n LITERALS,\r\n VARIABLES,\r\n STRINGS,\r\n NUMBERS,\r\n 'self'\r\n ],\r\n relevance:0\r\n };\r\n\r\n return {\r\n aliases: ['toml'],\r\n case_insensitive: true,\r\n illegal: /\\S/,\r\n contains: [\r\n COMMENTS,\r\n {\r\n className: 'section',\r\n begin: /\\[+/, end: /\\]+/\r\n },\r\n {\r\n begin: /^[a-z0-9\\[\\]_\\.-]+(?=\\s*=\\s*)/,\r\n className: 'attr',\r\n starts: {\r\n end: /$/,\r\n contains: [\r\n COMMENTS,\r\n ARRAY,\r\n LITERALS,\r\n VARIABLES,\r\n STRINGS,\r\n NUMBERS\r\n ]\r\n }\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var PARAMS = {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)'\r\n };\r\n\r\n var F_KEYWORDS = {\r\n literal: '.False. .True.',\r\n keyword: 'kind do while private call intrinsic where elsewhere ' +\r\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\r\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\r\n 'goto save else use module select case ' +\r\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\r\n 'continue format pause cycle exit ' +\r\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\r\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\r\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\r\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\r\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\r\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\r\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\r\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\r\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\r\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\r\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\r\n 'integer real character complex logical dimension allocatable|10 parameter ' +\r\n 'external implicit|10 none double precision assign intent optional pointer ' +\r\n 'target in out common equivalence data ' +\r\n // IRPF90 special keywords\r\n 'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' +\r\n 'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read',\r\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\r\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\r\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\r\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\r\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\r\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\r\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\r\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\r\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\r\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\r\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\r\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\r\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\r\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\r\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\r\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\r\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\r\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image ' +\r\n // IRPF90 special built_ins\r\n 'IRP_ALIGN irp_here'\r\n };\r\n return {\r\n case_insensitive: true,\r\n keywords: F_KEYWORDS,\r\n illegal: /\\/\\*/,\r\n contains: [\r\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\r\n {\r\n className: 'function',\r\n beginKeywords: 'subroutine function program',\r\n illegal: '[${=\\\\n]',\r\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\r\n },\r\n hljs.COMMENT('!', '$', {relevance: 0}),\r\n hljs.COMMENT('begin_doc', 'end_doc', {relevance: 10}),\r\n {\r\n className: 'number',\r\n begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\r\n relevance: 0\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n // Определение идентификаторов\r\n var UNDERSCORE_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*\";\r\n\r\n // Определение имен функций\r\n var FUNCTION_NAME_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\";\r\n\r\n // keyword : ключевые слова\r\n var KEYWORD =\r\n \"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока \" +\r\n \"except exitfor finally foreach все if если in в not не or или try while пока \";\r\n\r\n // SYSRES Constants\r\n var sysres_constants =\r\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT \" +\r\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_FULL \" +\r\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW \" +\r\n \"SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW \" +\r\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE \" +\r\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE \" +\r\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE \" +\r\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS \" +\r\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE \" +\r\n \"SYSRES_CONST_ACCESS_TYPE_FULL \" +\r\n \"SYSRES_CONST_ACCESS_TYPE_FULL_CODE \" +\r\n \"SYSRES_CONST_ACCESS_TYPE_VIEW \" +\r\n \"SYSRES_CONST_ACCESS_TYPE_VIEW_CODE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_ABORT \" +\r\n \"SYSRES_CONST_ACTION_TYPE_ACCEPT \" +\r\n \"SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS \" +\r\n \"SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT \" +\r\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_CARD \" +\r\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_KIND \" +\r\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_CONTINUE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_COPY \" +\r\n \"SYSRES_CONST_ACTION_TYPE_CREATE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_CREATE_VERSION \" +\r\n \"SYSRES_CONST_ACTION_TYPE_DELETE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT \" +\r\n \"SYSRES_CONST_ACTION_TYPE_DELETE_VERSION \" +\r\n \"SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS \" +\r\n \"SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS \" +\r\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD \" +\r\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD \" +\r\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK \" +\r\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK \" +\r\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK \" +\r\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK \" +\r\n \"SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_LOCK \" +\r\n \"SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER \" +\r\n \"SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY \" +\r\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_READED \" +\r\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED \" +\r\n \"SYSRES_CONST_ACTION_TYPE_MODIFY \" +\r\n \"SYSRES_CONST_ACTION_TYPE_MODIFY_CARD \" +\r\n \"SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION \" +\r\n \"SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_PERFORM \" +\r\n \"SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY \" +\r\n \"SYSRES_CONST_ACTION_TYPE_RESTART \" +\r\n \"SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_REVISION \" +\r\n \"SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL \" +\r\n \"SYSRES_CONST_ACTION_TYPE_SIGN \" +\r\n \"SYSRES_CONST_ACTION_TYPE_START \" +\r\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK \" +\r\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER \" +\r\n \"SYSRES_CONST_ACTION_TYPE_VERSION_STATE \" +\r\n \"SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY \" +\r\n \"SYSRES_CONST_ACTION_TYPE_VIEW \" +\r\n \"SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY \" +\r\n \"SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY \" +\r\n \"SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY \" +\r\n \"SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE \" +\r\n \"SYSRES_CONST_ADD_REFERENCE_MODE_NAME \" +\r\n \"SYSRES_CONST_ADDITION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE \" +\r\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION \" +\r\n \"SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS \" +\r\n \"SYSRES_CONST_ALL_USERS_GROUP \" +\r\n \"SYSRES_CONST_ALL_USERS_GROUP_NAME \" +\r\n \"SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME \" +\r\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE \" +\r\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME \" +\r\n \"SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_APPROVING_SIGNATURE_NAME \" +\r\n \"SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE \" +\r\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE \" +\r\n \"SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN \" +\r\n \"SYSRES_CONST_ATTACH_TYPE_DOC \" +\r\n \"SYSRES_CONST_ATTACH_TYPE_EDOC \" +\r\n \"SYSRES_CONST_ATTACH_TYPE_FOLDER \" +\r\n \"SYSRES_CONST_ATTACH_TYPE_JOB \" +\r\n \"SYSRES_CONST_ATTACH_TYPE_REFERENCE \" +\r\n \"SYSRES_CONST_ATTACH_TYPE_TASK \" +\r\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD \" +\r\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE \" +\r\n \"SYSRES_CONST_AUTH_NOVELL \" +\r\n \"SYSRES_CONST_AUTH_PASSWORD \" +\r\n \"SYSRES_CONST_AUTH_PASSWORD_CODE \" +\r\n \"SYSRES_CONST_AUTH_WINDOWS \" +\r\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME \" +\r\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_AUTO_ENUM_METHOD_FLAG \" +\r\n \"SYSRES_CONST_AUTO_NUMERATION_CODE \" +\r\n \"SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG \" +\r\n \"SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL \" +\r\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE \" +\r\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN \" +\r\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE \" +\r\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK \" +\r\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE \" +\r\n \"SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE \" +\r\n \"SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE \" +\r\n \"SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE \" +\r\n \"SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR \" +\r\n \"SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\r\n \"SYSRES_CONST_BTN_PART \" +\r\n \"SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE \" +\r\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE \" +\r\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE \" +\r\n \"SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT \" +\r\n \"SYSRES_CONST_CARD_PART \" +\r\n \"SYSRES_CONST_CARD_REFERENCE_MODE_NAME \" +\r\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE \" +\r\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE \" +\r\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE \" +\r\n \"SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE \" +\r\n \"SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE \" +\r\n \"SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE \" +\r\n \"SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE \" +\r\n \"SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE \" +\r\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE \" +\r\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT \" +\r\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_URL \" +\r\n \"SYSRES_CONST_CODE_REQUISITE_ACCESS \" +\r\n \"SYSRES_CONST_CODE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_CODE_REQUISITE_COMPONENT \" +\r\n \"SYSRES_CONST_CODE_REQUISITE_DESCRIPTION \" +\r\n \"SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT \" +\r\n \"SYSRES_CONST_CODE_REQUISITE_RECORD \" +\r\n \"SYSRES_CONST_COMMENT_REQ_CODE \" +\r\n \"SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_COMP_CODE_GRD \" +\r\n \"SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_DOCS \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_EDOCS \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_OTHER \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCES \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_REPORTS \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_SCRIPTS \" +\r\n \"SYSRES_CONST_COMPONENT_TYPE_URL \" +\r\n \"SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE \" +\r\n \"SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION \" +\r\n \"SYSRES_CONST_CONST_FIRM_STATUS_COMMON \" +\r\n \"SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL \" +\r\n \"SYSRES_CONST_CONST_NEGATIVE_VALUE \" +\r\n \"SYSRES_CONST_CONST_POSITIVE_VALUE \" +\r\n \"SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE \" +\r\n \"SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE \" +\r\n \"SYSRES_CONST_CONTENTS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_DATA_TYPE_BOOLEAN \" +\r\n \"SYSRES_CONST_DATA_TYPE_DATE \" +\r\n \"SYSRES_CONST_DATA_TYPE_FLOAT \" +\r\n \"SYSRES_CONST_DATA_TYPE_INTEGER \" +\r\n \"SYSRES_CONST_DATA_TYPE_PICK \" +\r\n \"SYSRES_CONST_DATA_TYPE_REFERENCE \" +\r\n \"SYSRES_CONST_DATA_TYPE_STRING \" +\r\n \"SYSRES_CONST_DATA_TYPE_TEXT \" +\r\n \"SYSRES_CONST_DATA_TYPE_VARIANT \" +\r\n \"SYSRES_CONST_DATE_CLOSE_REQ_CODE \" +\r\n \"SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR \" +\r\n \"SYSRES_CONST_DATE_OPEN_REQ_CODE \" +\r\n \"SYSRES_CONST_DATE_REQUISITE \" +\r\n \"SYSRES_CONST_DATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_DATE_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_DATE_REQUISITE_TYPE \" +\r\n \"SYSRES_CONST_DATE_TYPE_CHAR \" +\r\n \"SYSRES_CONST_DATETIME_FORMAT_VALUE \" +\r\n \"SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE \" +\r\n \"SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_DESCRIPTION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_DET1_PART \" +\r\n \"SYSRES_CONST_DET2_PART \" +\r\n \"SYSRES_CONST_DET3_PART \" +\r\n \"SYSRES_CONST_DET4_PART \" +\r\n \"SYSRES_CONST_DET5_PART \" +\r\n \"SYSRES_CONST_DET6_PART \" +\r\n \"SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_DETAIL_REQ_CODE \" +\r\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE \" +\r\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME \" +\r\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE \" +\r\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME \" +\r\n \"SYSRES_CONST_DOCUMENT_STORAGES_CODE \" +\r\n \"SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME \" +\r\n \"SYSRES_CONST_DOUBLE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE \" +\r\n \"SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE \" +\r\n \"SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE \" +\r\n \"SYSRES_CONST_EDITORS_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE \" +\r\n \"SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE \" +\r\n \"SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE \" +\r\n \"SYSRES_CONST_EDOC_DATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_KIND_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE \" +\r\n \"SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE \" +\r\n \"SYSRES_CONST_EDOC_NONE_ENCODE_CODE \" +\r\n \"SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE \" +\r\n \"SYSRES_CONST_EDOC_READONLY_ACCESS_CODE \" +\r\n \"SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE \" +\r\n \"SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE \" +\r\n \"SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE \" +\r\n \"SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE \" +\r\n \"SYSRES_CONST_EDOC_WRITE_ACCES_CODE \" +\r\n \"SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\r\n \"SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE \" +\r\n \"SYSRES_CONST_END_DATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE \" +\r\n \"SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE \" +\r\n \"SYSRES_CONST_EXIST_CONST \" +\r\n \"SYSRES_CONST_EXIST_VALUE \" +\r\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_ASK \" +\r\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK \" +\r\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK \" +\r\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_ASK \" +\r\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST \" +\r\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE \" +\r\n \"SYSRES_CONST_EXTENSION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_FILTER_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_FILTER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_FILTER_TYPE_COMMON_CODE \" +\r\n \"SYSRES_CONST_FILTER_TYPE_COMMON_NAME \" +\r\n \"SYSRES_CONST_FILTER_TYPE_USER_CODE \" +\r\n \"SYSRES_CONST_FILTER_TYPE_USER_NAME \" +\r\n \"SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR \" +\r\n \"SYSRES_CONST_FLOAT_REQUISITE_TYPE \" +\r\n \"SYSRES_CONST_FOLDER_AUTHOR_VALUE \" +\r\n \"SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS \" +\r\n \"SYSRES_CONST_FOLDER_KIND_COMPONENTS \" +\r\n \"SYSRES_CONST_FOLDER_KIND_EDOCS \" +\r\n \"SYSRES_CONST_FOLDER_KIND_JOBS \" +\r\n \"SYSRES_CONST_FOLDER_KIND_TASKS \" +\r\n \"SYSRES_CONST_FOLDER_TYPE_COMMON \" +\r\n \"SYSRES_CONST_FOLDER_TYPE_COMPONENT \" +\r\n \"SYSRES_CONST_FOLDER_TYPE_FAVORITES \" +\r\n \"SYSRES_CONST_FOLDER_TYPE_INBOX \" +\r\n \"SYSRES_CONST_FOLDER_TYPE_OUTBOX \" +\r\n \"SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH \" +\r\n \"SYSRES_CONST_FOLDER_TYPE_SEARCH \" +\r\n \"SYSRES_CONST_FOLDER_TYPE_SHORTCUTS \" +\r\n \"SYSRES_CONST_FOLDER_TYPE_USER \" +\r\n \"SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG \" +\r\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE \" +\r\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE \" +\r\n \"SYSRES_CONST_FUNCTION_CANCEL_RESULT \" +\r\n \"SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM \" +\r\n \"SYSRES_CONST_FUNCTION_CATEGORY_USER \" +\r\n \"SYSRES_CONST_FUNCTION_FAILURE_RESULT \" +\r\n \"SYSRES_CONST_FUNCTION_SAVE_RESULT \" +\r\n \"SYSRES_CONST_GENERATED_REQUISITE \" +\r\n \"SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR \" +\r\n \"SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE \" +\r\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE \" +\r\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME \" +\r\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE \" +\r\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME \" +\r\n \"SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE \" +\r\n \"SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_GROUP_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE \" +\r\n \"SYSRES_CONST_GROUP_USER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_GROUPS_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_GROUPS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_HIDDEN_MODE_NAME \" +\r\n \"SYSRES_CONST_HIGH_LVL_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_HISTORY_ACTION_CREATE_CODE \" +\r\n \"SYSRES_CONST_HISTORY_ACTION_DELETE_CODE \" +\r\n \"SYSRES_CONST_HISTORY_ACTION_EDIT_CODE \" +\r\n \"SYSRES_CONST_HOUR_CHAR \" +\r\n \"SYSRES_CONST_ID_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_IDSPS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_IMAGE_MODE_COLOR \" +\r\n \"SYSRES_CONST_IMAGE_MODE_GREYSCALE \" +\r\n \"SYSRES_CONST_IMAGE_MODE_MONOCHROME \" +\r\n \"SYSRES_CONST_IMPORTANCE_HIGH \" +\r\n \"SYSRES_CONST_IMPORTANCE_LOW \" +\r\n \"SYSRES_CONST_IMPORTANCE_NORMAL \" +\r\n \"SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE \" +\r\n \"SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE \" +\r\n \"SYSRES_CONST_INT_REQUISITE \" +\r\n \"SYSRES_CONST_INT_REQUISITE_TYPE \" +\r\n \"SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR \" +\r\n \"SYSRES_CONST_INTEGER_TYPE_CHAR \" +\r\n \"SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE \" +\r\n \"SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE \" +\r\n \"SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE \" +\r\n \"SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE \" +\r\n \"SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE \" +\r\n \"SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\r\n \"SYSRES_CONST_JOB_BLOCK_DESCRIPTION \" +\r\n \"SYSRES_CONST_JOB_KIND_CONTROL_JOB \" +\r\n \"SYSRES_CONST_JOB_KIND_JOB \" +\r\n \"SYSRES_CONST_JOB_KIND_NOTICE \" +\r\n \"SYSRES_CONST_JOB_STATE_ABORTED \" +\r\n \"SYSRES_CONST_JOB_STATE_COMPLETE \" +\r\n \"SYSRES_CONST_JOB_STATE_WORKING \" +\r\n \"SYSRES_CONST_KIND_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_KIND_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE \" +\r\n \"SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE \" +\r\n \"SYSRES_CONST_KOD_INPUT_TYPE \" +\r\n \"SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR \" +\r\n \"SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT \" +\r\n \"SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT \" +\r\n \"SYSRES_CONST_LINK_OBJECT_KIND_EDOC \" +\r\n \"SYSRES_CONST_LINK_OBJECT_KIND_FOLDER \" +\r\n \"SYSRES_CONST_LINK_OBJECT_KIND_JOB \" +\r\n \"SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE \" +\r\n \"SYSRES_CONST_LINK_OBJECT_KIND_TASK \" +\r\n \"SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_LIST_REFERENCE_MODE_NAME \" +\r\n \"SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE \" +\r\n \"SYSRES_CONST_MAIN_VIEW_CODE \" +\r\n \"SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG \" +\r\n \"SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_MAXIMIZED_MODE_NAME \" +\r\n \"SYSRES_CONST_ME_VALUE \" +\r\n \"SYSRES_CONST_MESSAGE_ATTENTION_CAPTION \" +\r\n \"SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION \" +\r\n \"SYSRES_CONST_MESSAGE_ERROR_CAPTION \" +\r\n \"SYSRES_CONST_MESSAGE_INFORMATION_CAPTION \" +\r\n \"SYSRES_CONST_MINIMIZED_MODE_NAME \" +\r\n \"SYSRES_CONST_MINUTE_CHAR \" +\r\n \"SYSRES_CONST_MODULE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION \" +\r\n \"SYSRES_CONST_MONTH_FORMAT_VALUE \" +\r\n \"SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_NAMEAN_INPUT_TYPE \" +\r\n \"SYSRES_CONST_NEGATIVE_PICK_VALUE \" +\r\n \"SYSRES_CONST_NEGATIVE_VALUE \" +\r\n \"SYSRES_CONST_NO \" +\r\n \"SYSRES_CONST_NO_PICK_VALUE \" +\r\n \"SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_NO_VALUE \" +\r\n \"SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE \" +\r\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE \" +\r\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\r\n \"SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE \" +\r\n \"SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\r\n \"SYSRES_CONST_NORMAL_MODE_NAME \" +\r\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE \" +\r\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME \" +\r\n \"SYSRES_CONST_NOTE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION \" +\r\n \"SYSRES_CONST_NUM_REQUISITE \" +\r\n \"SYSRES_CONST_NUM_STR_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG \" +\r\n \"SYSRES_CONST_NUMERATION_AUTO_STRONG \" +\r\n \"SYSRES_CONST_NUMERATION_FROM_DICTONARY \" +\r\n \"SYSRES_CONST_NUMERATION_MANUAL \" +\r\n \"SYSRES_CONST_NUMERIC_TYPE_CHAR \" +\r\n \"SYSRES_CONST_NUMREQ_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE \" +\r\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE \" +\r\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE \" +\r\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE \" +\r\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\r\n \"SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX \" +\r\n \"SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\r\n \"SYSRES_CONST_ORIGINALREF_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_OURFIRM_REF_CODE \" +\r\n \"SYSRES_CONST_OURFIRM_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_OURFIRM_VAR \" +\r\n \"SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE \" +\r\n \"SYSRES_CONST_PICK_NEGATIVE_RESULT \" +\r\n \"SYSRES_CONST_PICK_POSITIVE_RESULT \" +\r\n \"SYSRES_CONST_PICK_REQUISITE \" +\r\n \"SYSRES_CONST_PICK_REQUISITE_TYPE \" +\r\n \"SYSRES_CONST_PICK_TYPE_CHAR \" +\r\n \"SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_PLATFORM_VERSION_COMMENT \" +\r\n \"SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_POSITIVE_PICK_VALUE \" +\r\n \"SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE \" +\r\n \"SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE \" +\r\n \"SYSRES_CONST_PRIORITY_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE \" +\r\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE \" +\r\n \"SYSRES_CONST_RECSTAT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\r\n \"SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REF_REQUISITE \" +\r\n \"SYSRES_CONST_REF_REQUISITE_TYPE \" +\r\n \"SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\r\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE \" +\r\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE \" +\r\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE \" +\r\n \"SYSRES_CONST_REFERENCE_TYPE_CHAR \" +\r\n \"SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING \" +\r\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN \" +\r\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY \" +\r\n \"SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE \" +\r\n \"SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL \" +\r\n \"SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE \" +\r\n \"SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE \" +\r\n \"SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE \" +\r\n \"SYSRES_CONST_REQ_MODE_AVAILABLE_CODE \" +\r\n \"SYSRES_CONST_REQ_MODE_EDIT_CODE \" +\r\n \"SYSRES_CONST_REQ_MODE_HIDDEN_CODE \" +\r\n \"SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE \" +\r\n \"SYSRES_CONST_REQ_MODE_VIEW_CODE \" +\r\n \"SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REQ_SECTION_VALUE \" +\r\n \"SYSRES_CONST_REQ_TYPE_VALUE \" +\r\n \"SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT \" +\r\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL \" +\r\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME \" +\r\n \"SYSRES_CONST_REQUISITE_FORMAT_LEFT \" +\r\n \"SYSRES_CONST_REQUISITE_FORMAT_RIGHT \" +\r\n \"SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT \" +\r\n \"SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_ACTIONS \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTON \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTONS \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_CARD \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE10 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE11 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE12 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE13 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE14 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE15 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE16 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE17 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE18 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE19 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE2 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE20 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE21 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE22 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE23 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE24 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE3 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE4 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE5 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE6 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE7 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE8 \" +\r\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE9 \" +\r\n \"SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_RIGHT_ALIGNMENT_CODE \" +\r\n \"SYSRES_CONST_ROLES_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_ROUTE_STEP_AFTER_RUS \" +\r\n \"SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS \" +\r\n \"SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS \" +\r\n \"SYSRES_CONST_ROUTE_TYPE_COMPLEX \" +\r\n \"SYSRES_CONST_ROUTE_TYPE_PARALLEL \" +\r\n \"SYSRES_CONST_ROUTE_TYPE_SERIAL \" +\r\n \"SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE \" +\r\n \"SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE \" +\r\n \"SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE \" +\r\n \"SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION \" +\r\n \"SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_SEARCHES_COMPONENT_CONTENT \" +\r\n \"SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME \" +\r\n \"SYSRES_CONST_SEARCHES_EDOC_CONTENT \" +\r\n \"SYSRES_CONST_SEARCHES_FOLDER_CONTENT \" +\r\n \"SYSRES_CONST_SEARCHES_JOB_CONTENT \" +\r\n \"SYSRES_CONST_SEARCHES_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_SEARCHES_TASK_CONTENT \" +\r\n \"SYSRES_CONST_SECOND_CHAR \" +\r\n \"SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE \" +\r\n \"SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE \" +\r\n \"SYSRES_CONST_SECTION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE \" +\r\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE \" +\r\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE \" +\r\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE \" +\r\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE \" +\r\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE \" +\r\n \"SYSRES_CONST_SELECT_REFERENCE_MODE_NAME \" +\r\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE \" +\r\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD \" +\r\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD \" +\r\n \"SYSRES_CONST_SELECT_TYPE_UNSLECTABLE \" +\r\n \"SYSRES_CONST_SERVER_TYPE_MAIN \" +\r\n \"SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE \" +\r\n \"SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE \" +\r\n \"SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE \" +\r\n \"SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\r\n \"SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\r\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_STATE_REQ_NAME \" +\r\n \"SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE \" +\r\n \"SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE \" +\r\n \"SYSRES_CONST_STATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_STATIC_ROLE_TYPE_CODE \" +\r\n \"SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE \" +\r\n \"SYSRES_CONST_STATUS_VALUE_AUTOCLEANING \" +\r\n \"SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE \" +\r\n \"SYSRES_CONST_STATUS_VALUE_COMPLETE \" +\r\n \"SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE \" +\r\n \"SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE \" +\r\n \"SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE \" +\r\n \"SYSRES_CONST_STATUS_VALUE_RED_SQUARE \" +\r\n \"SYSRES_CONST_STATUS_VALUE_SUSPEND \" +\r\n \"SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE \" +\r\n \"SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_STORAGE_TYPE_FILE \" +\r\n \"SYSRES_CONST_STORAGE_TYPE_SQL_SERVER \" +\r\n \"SYSRES_CONST_STR_REQUISITE \" +\r\n \"SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\r\n \"SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR \" +\r\n \"SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR \" +\r\n \"SYSRES_CONST_STRING_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_STRING_REQUISITE_TYPE \" +\r\n \"SYSRES_CONST_STRING_TYPE_CHAR \" +\r\n \"SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\r\n \"SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION \" +\r\n \"SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE \" +\r\n \"SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE \" +\r\n \"SYSRES_CONST_SYSTEM_VERSION_COMMENT \" +\r\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL \" +\r\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS \" +\r\n \"SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL \" +\r\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION \" +\r\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD \" +\r\n \"SYSRES_CONST_TASK_ENCODE_TYPE_NONE \" +\r\n \"SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD \" +\r\n \"SYSRES_CONST_TASK_ROUTE_ALL_CONDITION \" +\r\n \"SYSRES_CONST_TASK_ROUTE_AND_CONDITION \" +\r\n \"SYSRES_CONST_TASK_ROUTE_OR_CONDITION \" +\r\n \"SYSRES_CONST_TASK_STATE_ABORTED \" +\r\n \"SYSRES_CONST_TASK_STATE_COMPLETE \" +\r\n \"SYSRES_CONST_TASK_STATE_CONTINUED \" +\r\n \"SYSRES_CONST_TASK_STATE_CONTROL \" +\r\n \"SYSRES_CONST_TASK_STATE_INIT \" +\r\n \"SYSRES_CONST_TASK_STATE_WORKING \" +\r\n \"SYSRES_CONST_TASK_TITLE \" +\r\n \"SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_TASK_TYPES_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_TEMPLATES_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_TEST_DATE_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_TEST_DEV_DATABASE_NAME \" +\r\n \"SYSRES_CONST_TEST_DEV_SYSTEM_CODE \" +\r\n \"SYSRES_CONST_TEST_EDMS_DATABASE_NAME \" +\r\n \"SYSRES_CONST_TEST_EDMS_MAIN_CODE \" +\r\n \"SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME \" +\r\n \"SYSRES_CONST_TEST_EDMS_SECOND_CODE \" +\r\n \"SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME \" +\r\n \"SYSRES_CONST_TEST_EDMS_SYSTEM_CODE \" +\r\n \"SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_TEXT_REQUISITE \" +\r\n \"SYSRES_CONST_TEXT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_TEXT_REQUISITE_TYPE \" +\r\n \"SYSRES_CONST_TEXT_TYPE_CHAR \" +\r\n \"SYSRES_CONST_TYPE_CODE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\r\n \"SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE \" +\r\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME \" +\r\n \"SYSRES_CONST_USE_ACCESS_TYPE_CODE \" +\r\n \"SYSRES_CONST_USE_ACCESS_TYPE_NAME \" +\r\n \"SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE \" +\r\n \"SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_CATEGORY_NORMAL \" +\r\n \"SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_COMMON_CATEGORY \" +\r\n \"SYSRES_CONST_USER_COMMON_CATEGORY_CODE \" +\r\n \"SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_LOGIN_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USER_SERVICE_CATEGORY \" +\r\n \"SYSRES_CONST_USER_SERVICE_CATEGORY_CODE \" +\r\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE \" +\r\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME \" +\r\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_CODE \" +\r\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_NAME \" +\r\n \"SYSRES_CONST_USER_STATUS_DISABLED_CODE \" +\r\n \"SYSRES_CONST_USER_STATUS_DISABLED_NAME \" +\r\n \"SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE \" +\r\n \"SYSRES_CONST_USER_STATUS_USER_CODE \" +\r\n \"SYSRES_CONST_USER_STATUS_USER_NAME \" +\r\n \"SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED \" +\r\n \"SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER \" +\r\n \"SYSRES_CONST_USER_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USERS_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME \" +\r\n \"SYSRES_CONST_USERS_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME \" +\r\n \"SYSRES_CONST_VIEW_DEFAULT_CODE \" +\r\n \"SYSRES_CONST_VIEW_DEFAULT_NAME \" +\r\n \"SYSRES_CONST_VIEWER_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_WAITING_BLOCK_DESCRIPTION \" +\r\n \"SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING \" +\r\n \"SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING \" +\r\n \"SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE \" +\r\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE \" +\r\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE \" +\r\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS \" +\r\n \"SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS \" +\r\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD \" +\r\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT \" +\r\n \"SYSRES_CONST_XML_ENCODING \" +\r\n \"SYSRES_CONST_XREC_STAT_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_XRECID_FIELD_NAME \" +\r\n \"SYSRES_CONST_YES \" +\r\n \"SYSRES_CONST_YES_NO_2_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_YES_NO_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE \" +\r\n \"SYSRES_CONST_YES_PICK_VALUE \" +\r\n \"SYSRES_CONST_YES_VALUE \";\r\n\r\n // Base constant\r\n var base_constants = \"CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE \";\r\n\r\n // Base group name\r\n var base_group_name_constants =\r\n \"ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME \";\r\n\r\n // Decision block properties\r\n var decision_block_properties_constants =\r\n \"DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY \" +\r\n \"DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY \";\r\n\r\n // File extension\r\n var file_extension_constants =\r\n \"ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION \" +\r\n \"SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION \";\r\n\r\n // Job block properties\r\n var job_block_properties_constants =\r\n \"JOB_BLOCK_ABORT_DEADLINE_PROPERTY \" +\r\n \"JOB_BLOCK_AFTER_FINISH_EVENT \" +\r\n \"JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT \" +\r\n \"JOB_BLOCK_ATTACHMENT_PROPERTY \" +\r\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\r\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\r\n \"JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT \" +\r\n \"JOB_BLOCK_BEFORE_START_EVENT \" +\r\n \"JOB_BLOCK_CREATED_JOBS_PROPERTY \" +\r\n \"JOB_BLOCK_DEADLINE_PROPERTY \" +\r\n \"JOB_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\r\n \"JOB_BLOCK_IS_PARALLEL_PROPERTY \" +\r\n \"JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\r\n \"JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\r\n \"JOB_BLOCK_JOB_TEXT_PROPERTY \" +\r\n \"JOB_BLOCK_NAME_PROPERTY \" +\r\n \"JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY \" +\r\n \"JOB_BLOCK_PERFORMER_PROPERTY \" +\r\n \"JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\r\n \"JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\r\n \"JOB_BLOCK_SUBJECT_PROPERTY \";\r\n\r\n // Language code\r\n var language_code_constants = \"ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE \";\r\n\r\n // Launching external applications\r\n var launching_external_applications_constants =\r\n \"smHidden smMaximized smMinimized smNormal wmNo wmYes \";\r\n\r\n // Link kind\r\n var link_kind_constants =\r\n \"COMPONENT_TOKEN_LINK_KIND \" +\r\n \"DOCUMENT_LINK_KIND \" +\r\n \"EDOCUMENT_LINK_KIND \" +\r\n \"FOLDER_LINK_KIND \" +\r\n \"JOB_LINK_KIND \" +\r\n \"REFERENCE_LINK_KIND \" +\r\n \"TASK_LINK_KIND \";\r\n\r\n // Lock type\r\n var lock_type_constants =\r\n \"COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE \";\r\n\r\n // Monitor block properties\r\n var monitor_block_properties_constants =\r\n \"MONITOR_BLOCK_AFTER_FINISH_EVENT \" +\r\n \"MONITOR_BLOCK_BEFORE_START_EVENT \" +\r\n \"MONITOR_BLOCK_DEADLINE_PROPERTY \" +\r\n \"MONITOR_BLOCK_INTERVAL_PROPERTY \" +\r\n \"MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY \" +\r\n \"MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\r\n \"MONITOR_BLOCK_NAME_PROPERTY \" +\r\n \"MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\r\n \"MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY \";\r\n\r\n // Notice block properties\r\n var notice_block_properties_constants =\r\n \"NOTICE_BLOCK_AFTER_FINISH_EVENT \" +\r\n \"NOTICE_BLOCK_ATTACHMENT_PROPERTY \" +\r\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\r\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\r\n \"NOTICE_BLOCK_BEFORE_START_EVENT \" +\r\n \"NOTICE_BLOCK_CREATED_NOTICES_PROPERTY \" +\r\n \"NOTICE_BLOCK_DEADLINE_PROPERTY \" +\r\n \"NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\r\n \"NOTICE_BLOCK_NAME_PROPERTY \" +\r\n \"NOTICE_BLOCK_NOTICE_TEXT_PROPERTY \" +\r\n \"NOTICE_BLOCK_PERFORMER_PROPERTY \" +\r\n \"NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\r\n \"NOTICE_BLOCK_SUBJECT_PROPERTY \";\r\n\r\n // Object events\r\n var object_events_constants =\r\n \"dseAfterCancel \" +\r\n \"dseAfterClose \" +\r\n \"dseAfterDelete \" +\r\n \"dseAfterDeleteOutOfTransaction \" +\r\n \"dseAfterInsert \" +\r\n \"dseAfterOpen \" +\r\n \"dseAfterScroll \" +\r\n \"dseAfterUpdate \" +\r\n \"dseAfterUpdateOutOfTransaction \" +\r\n \"dseBeforeCancel \" +\r\n \"dseBeforeClose \" +\r\n \"dseBeforeDelete \" +\r\n \"dseBeforeDetailUpdate \" +\r\n \"dseBeforeInsert \" +\r\n \"dseBeforeOpen \" +\r\n \"dseBeforeUpdate \" +\r\n \"dseOnAnyRequisiteChange \" +\r\n \"dseOnCloseRecord \" +\r\n \"dseOnDeleteError \" +\r\n \"dseOnOpenRecord \" +\r\n \"dseOnPrepareUpdate \" +\r\n \"dseOnUpdateError \" +\r\n \"dseOnUpdateRatifiedRecord \" +\r\n \"dseOnValidDelete \" +\r\n \"dseOnValidUpdate \" +\r\n \"reOnChange \" +\r\n \"reOnChangeValues \" +\r\n \"SELECTION_BEGIN_ROUTE_EVENT \" +\r\n \"SELECTION_END_ROUTE_EVENT \";\r\n\r\n // Object params\r\n var object_params_constants =\r\n \"CURRENT_PERIOD_IS_REQUIRED \" +\r\n \"PREVIOUS_CARD_TYPE_NAME \" +\r\n \"SHOW_RECORD_PROPERTIES_FORM \";\r\n\r\n // Other\r\n var other_constants =\r\n \"ACCESS_RIGHTS_SETTING_DIALOG_CODE \" +\r\n \"ADMINISTRATOR_USER_CODE \" +\r\n \"ANALYTIC_REPORT_TYPE \" +\r\n \"asrtHideLocal \" +\r\n \"asrtHideRemote \" +\r\n \"CALCULATED_ROLE_TYPE_CODE \" +\r\n \"COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE \" +\r\n \"DCTS_TEST_PROTOCOLS_FOLDER_PATH \" +\r\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED \" +\r\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER \" +\r\n \"E_EDOC_VERSION_ALREDY_SIGNED \" +\r\n \"E_EDOC_VERSION_ALREDY_SIGNED_BY_USER \" +\r\n \"EDOC_TYPES_CODE_REQUISITE_FIELD_NAME \" +\r\n \"EDOCUMENTS_ALIAS_NAME \" +\r\n \"FILES_FOLDER_PATH \" +\r\n \"FILTER_OPERANDS_DELIMITER \" +\r\n \"FILTER_OPERATIONS_DELIMITER \" +\r\n \"FORMCARD_NAME \" +\r\n \"FORMLIST_NAME \" +\r\n \"GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE \" +\r\n \"GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE \" +\r\n \"INTEGRATED_REPORT_TYPE \" +\r\n \"IS_BUILDER_APPLICATION_ROLE \" +\r\n \"IS_BUILDER_APPLICATION_ROLE2 \" +\r\n \"IS_BUILDER_USERS \" +\r\n \"ISBSYSDEV \" +\r\n \"LOG_FOLDER_PATH \" +\r\n \"mbCancel \" +\r\n \"mbNo \" +\r\n \"mbNoToAll \" +\r\n \"mbOK \" +\r\n \"mbYes \" +\r\n \"mbYesToAll \" +\r\n \"MEMORY_DATASET_DESRIPTIONS_FILENAME \" +\r\n \"mrNo \" +\r\n \"mrNoToAll \" +\r\n \"mrYes \" +\r\n \"mrYesToAll \" +\r\n \"MULTIPLE_SELECT_DIALOG_CODE \" +\r\n \"NONOPERATING_RECORD_FLAG_FEMININE \" +\r\n \"NONOPERATING_RECORD_FLAG_MASCULINE \" +\r\n \"OPERATING_RECORD_FLAG_FEMININE \" +\r\n \"OPERATING_RECORD_FLAG_MASCULINE \" +\r\n \"PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE \" +\r\n \"PROGRAM_INITIATED_LOOKUP_ACTION \" +\r\n \"ratDelete \" +\r\n \"ratEdit \" +\r\n \"ratInsert \" +\r\n \"REPORT_TYPE \" +\r\n \"REQUIRED_PICK_VALUES_VARIABLE \" +\r\n \"rmCard \" +\r\n \"rmList \" +\r\n \"SBRTE_PROGID_DEV \" +\r\n \"SBRTE_PROGID_RELEASE \" +\r\n \"STATIC_ROLE_TYPE_CODE \" +\r\n \"SUPPRESS_EMPTY_TEMPLATE_CREATION \" +\r\n \"SYSTEM_USER_CODE \" +\r\n \"UPDATE_DIALOG_DATASET \" +\r\n \"USED_IN_OBJECT_HINT_PARAM \" +\r\n \"USER_INITIATED_LOOKUP_ACTION \" +\r\n \"USER_NAME_FORMAT \" +\r\n \"USER_SELECTION_RESTRICTIONS \" +\r\n \"WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH \" +\r\n \"ELS_SUBTYPE_CONTROL_NAME \" +\r\n \"ELS_FOLDER_KIND_CONTROL_NAME \" +\r\n \"REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME \";\r\n\r\n // Privileges\r\n var privileges_constants =\r\n \"PRIVILEGE_COMPONENT_FULL_ACCESS \" +\r\n \"PRIVILEGE_DEVELOPMENT_EXPORT \" +\r\n \"PRIVILEGE_DEVELOPMENT_IMPORT \" +\r\n \"PRIVILEGE_DOCUMENT_DELETE \" +\r\n \"PRIVILEGE_ESD \" +\r\n \"PRIVILEGE_FOLDER_DELETE \" +\r\n \"PRIVILEGE_MANAGE_ACCESS_RIGHTS \" +\r\n \"PRIVILEGE_MANAGE_REPLICATION \" +\r\n \"PRIVILEGE_MANAGE_SESSION_SERVER \" +\r\n \"PRIVILEGE_OBJECT_FULL_ACCESS \" +\r\n \"PRIVILEGE_OBJECT_VIEW \" +\r\n \"PRIVILEGE_RESERVE_LICENSE \" +\r\n \"PRIVILEGE_SYSTEM_CUSTOMIZE \" +\r\n \"PRIVILEGE_SYSTEM_DEVELOP \" +\r\n \"PRIVILEGE_SYSTEM_INSTALL \" +\r\n \"PRIVILEGE_TASK_DELETE \" +\r\n \"PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE \" +\r\n \"PRIVILEGES_PSEUDOREFERENCE_CODE \";\r\n\r\n // Pseudoreference code\r\n var pseudoreference_code_constants =\r\n \"ACCESS_TYPES_PSEUDOREFERENCE_CODE \" +\r\n \"ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\r\n \"ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE \" +\r\n \"ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\r\n \"AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE \" +\r\n \"COMPONENTS_PSEUDOREFERENCE_CODE \" +\r\n \"FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE \" +\r\n \"GROUPS_PSEUDOREFERENCE_CODE \" +\r\n \"RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE \" +\r\n \"REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE \" +\r\n \"REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE \" +\r\n \"REFTYPES_PSEUDOREFERENCE_CODE \" +\r\n \"REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE \" +\r\n \"SEND_PROTOCOL_PSEUDOREFERENCE_CODE \" +\r\n \"SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\r\n \"SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE \" +\r\n \"UNITS_PSEUDOREFERENCE_CODE \" +\r\n \"USERS_PSEUDOREFERENCE_CODE \" +\r\n \"VIEWERS_PSEUDOREFERENCE_CODE \";\r\n\r\n // Requisite ISBCertificateType values\r\n var requisite_ISBCertificateType_values_constants =\r\n \"CERTIFICATE_TYPE_ENCRYPT \" +\r\n \"CERTIFICATE_TYPE_SIGN \" +\r\n \"CERTIFICATE_TYPE_SIGN_AND_ENCRYPT \";\r\n\r\n // Requisite ISBEDocStorageType values\r\n var requisite_ISBEDocStorageType_values_constants =\r\n \"STORAGE_TYPE_FILE \" +\r\n \"STORAGE_TYPE_NAS_CIFS \" +\r\n \"STORAGE_TYPE_SAPERION \" +\r\n \"STORAGE_TYPE_SQL_SERVER \";\r\n\r\n // Requisite CompType2 values\r\n var requisite_compType2_values_constants =\r\n \"COMPTYPE2_REQUISITE_DOCUMENTS_VALUE \" +\r\n \"COMPTYPE2_REQUISITE_TASKS_VALUE \" +\r\n \"COMPTYPE2_REQUISITE_FOLDERS_VALUE \" +\r\n \"COMPTYPE2_REQUISITE_REFERENCES_VALUE \";\r\n\r\n // Requisite name\r\n var requisite_name_constants =\r\n \"SYSREQ_CODE \" +\r\n \"SYSREQ_COMPTYPE2 \" +\r\n \"SYSREQ_CONST_AVAILABLE_FOR_WEB \" +\r\n \"SYSREQ_CONST_COMMON_CODE \" +\r\n \"SYSREQ_CONST_COMMON_VALUE \" +\r\n \"SYSREQ_CONST_FIRM_CODE \" +\r\n \"SYSREQ_CONST_FIRM_STATUS \" +\r\n \"SYSREQ_CONST_FIRM_VALUE \" +\r\n \"SYSREQ_CONST_SERVER_STATUS \" +\r\n \"SYSREQ_CONTENTS \" +\r\n \"SYSREQ_DATE_OPEN \" +\r\n \"SYSREQ_DATE_CLOSE \" +\r\n \"SYSREQ_DESCRIPTION \" +\r\n \"SYSREQ_DESCRIPTION_LOCALIZE_ID \" +\r\n \"SYSREQ_DOUBLE \" +\r\n \"SYSREQ_EDOC_ACCESS_TYPE \" +\r\n \"SYSREQ_EDOC_AUTHOR \" +\r\n \"SYSREQ_EDOC_CREATED \" +\r\n \"SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE \" +\r\n \"SYSREQ_EDOC_EDITOR \" +\r\n \"SYSREQ_EDOC_ENCODE_TYPE \" +\r\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME \" +\r\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION \" +\r\n \"SYSREQ_EDOC_EXPORT_DATE \" +\r\n \"SYSREQ_EDOC_EXPORTER \" +\r\n \"SYSREQ_EDOC_KIND \" +\r\n \"SYSREQ_EDOC_LIFE_STAGE_NAME \" +\r\n \"SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE \" +\r\n \"SYSREQ_EDOC_MODIFIED \" +\r\n \"SYSREQ_EDOC_NAME \" +\r\n \"SYSREQ_EDOC_NOTE \" +\r\n \"SYSREQ_EDOC_QUALIFIED_ID \" +\r\n \"SYSREQ_EDOC_SESSION_KEY \" +\r\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME \" +\r\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION \" +\r\n \"SYSREQ_EDOC_SIGNATURE_TYPE \" +\r\n \"SYSREQ_EDOC_SIGNED \" +\r\n \"SYSREQ_EDOC_STORAGE \" +\r\n \"SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE \" +\r\n \"SYSREQ_EDOC_STORAGES_CHECK_RIGHTS \" +\r\n \"SYSREQ_EDOC_STORAGES_COMPUTER_NAME \" +\r\n \"SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE \" +\r\n \"SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE \" +\r\n \"SYSREQ_EDOC_STORAGES_FUNCTION \" +\r\n \"SYSREQ_EDOC_STORAGES_INITIALIZED \" +\r\n \"SYSREQ_EDOC_STORAGES_LOCAL_PATH \" +\r\n \"SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME \" +\r\n \"SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT \" +\r\n \"SYSREQ_EDOC_STORAGES_SERVER_NAME \" +\r\n \"SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME \" +\r\n \"SYSREQ_EDOC_STORAGES_TYPE \" +\r\n \"SYSREQ_EDOC_TEXT_MODIFIED \" +\r\n \"SYSREQ_EDOC_TYPE_ACT_CODE \" +\r\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION \" +\r\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\r\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE \" +\r\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS \" +\r\n \"SYSREQ_EDOC_TYPE_ACT_SECTION \" +\r\n \"SYSREQ_EDOC_TYPE_ADD_PARAMS \" +\r\n \"SYSREQ_EDOC_TYPE_COMMENT \" +\r\n \"SYSREQ_EDOC_TYPE_EVENT_TEXT \" +\r\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR \" +\r\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\r\n \"SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID \" +\r\n \"SYSREQ_EDOC_TYPE_NUMERATION_METHOD \" +\r\n \"SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_CODE \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_IS_LEADING \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_NUMBER \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND \" +\r\n \"SYSREQ_EDOC_TYPE_REQ_SECTION \" +\r\n \"SYSREQ_EDOC_TYPE_VIEW_CARD \" +\r\n \"SYSREQ_EDOC_TYPE_VIEW_CODE \" +\r\n \"SYSREQ_EDOC_TYPE_VIEW_COMMENT \" +\r\n \"SYSREQ_EDOC_TYPE_VIEW_IS_MAIN \" +\r\n \"SYSREQ_EDOC_TYPE_VIEW_NAME \" +\r\n \"SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID \" +\r\n \"SYSREQ_EDOC_VERSION_AUTHOR \" +\r\n \"SYSREQ_EDOC_VERSION_CRC \" +\r\n \"SYSREQ_EDOC_VERSION_DATA \" +\r\n \"SYSREQ_EDOC_VERSION_EDITOR \" +\r\n \"SYSREQ_EDOC_VERSION_EXPORT_DATE \" +\r\n \"SYSREQ_EDOC_VERSION_EXPORTER \" +\r\n \"SYSREQ_EDOC_VERSION_HIDDEN \" +\r\n \"SYSREQ_EDOC_VERSION_LIFE_STAGE \" +\r\n \"SYSREQ_EDOC_VERSION_MODIFIED \" +\r\n \"SYSREQ_EDOC_VERSION_NOTE \" +\r\n \"SYSREQ_EDOC_VERSION_SIGNATURE_TYPE \" +\r\n \"SYSREQ_EDOC_VERSION_SIGNED \" +\r\n \"SYSREQ_EDOC_VERSION_SIZE \" +\r\n \"SYSREQ_EDOC_VERSION_SOURCE \" +\r\n \"SYSREQ_EDOC_VERSION_TEXT_MODIFIED \" +\r\n \"SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE \" +\r\n \"SYSREQ_FOLDER_KIND \" +\r\n \"SYSREQ_FUNC_CATEGORY \" +\r\n \"SYSREQ_FUNC_COMMENT \" +\r\n \"SYSREQ_FUNC_GROUP \" +\r\n \"SYSREQ_FUNC_GROUP_COMMENT \" +\r\n \"SYSREQ_FUNC_GROUP_NUMBER \" +\r\n \"SYSREQ_FUNC_HELP \" +\r\n \"SYSREQ_FUNC_PARAM_DEF_VALUE \" +\r\n \"SYSREQ_FUNC_PARAM_IDENT \" +\r\n \"SYSREQ_FUNC_PARAM_NUMBER \" +\r\n \"SYSREQ_FUNC_PARAM_TYPE \" +\r\n \"SYSREQ_FUNC_TEXT \" +\r\n \"SYSREQ_GROUP_CATEGORY \" +\r\n \"SYSREQ_ID \" +\r\n \"SYSREQ_LAST_UPDATE \" +\r\n \"SYSREQ_LEADER_REFERENCE \" +\r\n \"SYSREQ_LINE_NUMBER \" +\r\n \"SYSREQ_MAIN_RECORD_ID \" +\r\n \"SYSREQ_NAME \" +\r\n \"SYSREQ_NAME_LOCALIZE_ID \" +\r\n \"SYSREQ_NOTE \" +\r\n \"SYSREQ_ORIGINAL_RECORD \" +\r\n \"SYSREQ_OUR_FIRM \" +\r\n \"SYSREQ_PROFILING_SETTINGS_BATCH_LOGING \" +\r\n \"SYSREQ_PROFILING_SETTINGS_BATCH_SIZE \" +\r\n \"SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED \" +\r\n \"SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED \" +\r\n \"SYSREQ_PROFILING_SETTINGS_START_LOGGED \" +\r\n \"SYSREQ_RECORD_STATUS \" +\r\n \"SYSREQ_REF_REQ_FIELD_NAME \" +\r\n \"SYSREQ_REF_REQ_FORMAT \" +\r\n \"SYSREQ_REF_REQ_GENERATED \" +\r\n \"SYSREQ_REF_REQ_LENGTH \" +\r\n \"SYSREQ_REF_REQ_PRECISION \" +\r\n \"SYSREQ_REF_REQ_REFERENCE \" +\r\n \"SYSREQ_REF_REQ_SECTION \" +\r\n \"SYSREQ_REF_REQ_STORED \" +\r\n \"SYSREQ_REF_REQ_TOKENS \" +\r\n \"SYSREQ_REF_REQ_TYPE \" +\r\n \"SYSREQ_REF_REQ_VIEW \" +\r\n \"SYSREQ_REF_TYPE_ACT_CODE \" +\r\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION \" +\r\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\r\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE \" +\r\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS \" +\r\n \"SYSREQ_REF_TYPE_ACT_SECTION \" +\r\n \"SYSREQ_REF_TYPE_ADD_PARAMS \" +\r\n \"SYSREQ_REF_TYPE_COMMENT \" +\r\n \"SYSREQ_REF_TYPE_COMMON_SETTINGS \" +\r\n \"SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME \" +\r\n \"SYSREQ_REF_TYPE_EVENT_TEXT \" +\r\n \"SYSREQ_REF_TYPE_MAIN_LEADING_REF \" +\r\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR \" +\r\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\r\n \"SYSREQ_REF_TYPE_NAME_LOCALIZE_ID \" +\r\n \"SYSREQ_REF_TYPE_NUMERATION_METHOD \" +\r\n \"SYSREQ_REF_TYPE_REQ_CODE \" +\r\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION \" +\r\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\r\n \"SYSREQ_REF_TYPE_REQ_IS_CONTROL \" +\r\n \"SYSREQ_REF_TYPE_REQ_IS_FILTER \" +\r\n \"SYSREQ_REF_TYPE_REQ_IS_LEADING \" +\r\n \"SYSREQ_REF_TYPE_REQ_IS_REQUIRED \" +\r\n \"SYSREQ_REF_TYPE_REQ_NUMBER \" +\r\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE \" +\r\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS \" +\r\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT \" +\r\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND \" +\r\n \"SYSREQ_REF_TYPE_REQ_SECTION \" +\r\n \"SYSREQ_REF_TYPE_VIEW_CARD \" +\r\n \"SYSREQ_REF_TYPE_VIEW_CODE \" +\r\n \"SYSREQ_REF_TYPE_VIEW_COMMENT \" +\r\n \"SYSREQ_REF_TYPE_VIEW_IS_MAIN \" +\r\n \"SYSREQ_REF_TYPE_VIEW_NAME \" +\r\n \"SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID \" +\r\n \"SYSREQ_REFERENCE_TYPE_ID \" +\r\n \"SYSREQ_STATE \" +\r\n \"SYSREQ_STATЕ \" +\r\n \"SYSREQ_SYSTEM_SETTINGS_VALUE \" +\r\n \"SYSREQ_TYPE \" +\r\n \"SYSREQ_UNIT \" +\r\n \"SYSREQ_UNIT_ID \" +\r\n \"SYSREQ_USER_GROUPS_GROUP_FULL_NAME \" +\r\n \"SYSREQ_USER_GROUPS_GROUP_NAME \" +\r\n \"SYSREQ_USER_GROUPS_GROUP_SERVER_NAME \" +\r\n \"SYSREQ_USERS_ACCESS_RIGHTS \" +\r\n \"SYSREQ_USERS_AUTHENTICATION \" +\r\n \"SYSREQ_USERS_CATEGORY \" +\r\n \"SYSREQ_USERS_COMPONENT \" +\r\n \"SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC \" +\r\n \"SYSREQ_USERS_DOMAIN \" +\r\n \"SYSREQ_USERS_FULL_USER_NAME \" +\r\n \"SYSREQ_USERS_GROUP \" +\r\n \"SYSREQ_USERS_IS_MAIN_SERVER \" +\r\n \"SYSREQ_USERS_LOGIN \" +\r\n \"SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC \" +\r\n \"SYSREQ_USERS_STATUS \" +\r\n \"SYSREQ_USERS_USER_CERTIFICATE \" +\r\n \"SYSREQ_USERS_USER_CERTIFICATE_INFO \" +\r\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME \" +\r\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION \" +\r\n \"SYSREQ_USERS_USER_CERTIFICATE_STATE \" +\r\n \"SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME \" +\r\n \"SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT \" +\r\n \"SYSREQ_USERS_USER_DEFAULT_CERTIFICATE \" +\r\n \"SYSREQ_USERS_USER_DESCRIPTION \" +\r\n \"SYSREQ_USERS_USER_GLOBAL_NAME \" +\r\n \"SYSREQ_USERS_USER_LOGIN \" +\r\n \"SYSREQ_USERS_USER_MAIN_SERVER \" +\r\n \"SYSREQ_USERS_USER_TYPE \" +\r\n \"SYSREQ_WORK_RULES_FOLDER_ID \";\r\n\r\n // Result\r\n var result_constants = \"RESULT_VAR_NAME RESULT_VAR_NAME_ENG \";\r\n\r\n // Rule identification\r\n var rule_identification_constants =\r\n \"AUTO_NUMERATION_RULE_ID \" +\r\n \"CANT_CHANGE_ID_REQUISITE_RULE_ID \" +\r\n \"CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID \" +\r\n \"CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID \" +\r\n \"CHECK_CODE_REQUISITE_RULE_ID \" +\r\n \"CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID \" +\r\n \"CHECK_FILTRATER_CHANGES_RULE_ID \" +\r\n \"CHECK_RECORD_INTERVAL_RULE_ID \" +\r\n \"CHECK_REFERENCE_INTERVAL_RULE_ID \" +\r\n \"CHECK_REQUIRED_DATA_FULLNESS_RULE_ID \" +\r\n \"CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID \" +\r\n \"MAKE_RECORD_UNRATIFIED_RULE_ID \" +\r\n \"RESTORE_AUTO_NUMERATION_RULE_ID \" +\r\n \"SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID \" +\r\n \"SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID \" +\r\n \"SET_IDSPS_VALUE_RULE_ID \" +\r\n \"SET_NEXT_CODE_VALUE_RULE_ID \" +\r\n \"SET_OURFIRM_BOUNDS_RULE_ID \" +\r\n \"SET_OURFIRM_REQUISITE_RULE_ID \";\r\n\r\n // Script block properties\r\n var script_block_properties_constants =\r\n \"SCRIPT_BLOCK_AFTER_FINISH_EVENT \" +\r\n \"SCRIPT_BLOCK_BEFORE_START_EVENT \" +\r\n \"SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\r\n \"SCRIPT_BLOCK_NAME_PROPERTY \" +\r\n \"SCRIPT_BLOCK_SCRIPT_PROPERTY \";\r\n\r\n // Subtask block properties\r\n var subtask_block_properties_constants =\r\n \"SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_AFTER_FINISH_EVENT \" +\r\n \"SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT \" +\r\n \"SUBTASK_BLOCK_ATTACHMENTS_PROPERTY \" +\r\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\r\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_BEFORE_START_EVENT \" +\r\n \"SUBTASK_BLOCK_CREATED_TASK_PROPERTY \" +\r\n \"SUBTASK_BLOCK_CREATION_EVENT \" +\r\n \"SUBTASK_BLOCK_DEADLINE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_IMPORTANCE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_INITIATOR_PROPERTY \" +\r\n \"SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_JOBS_TYPE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_NAME_PROPERTY \" +\r\n \"SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_PERFORMERS_PROPERTY \" +\r\n \"SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY \" +\r\n \"SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_START_EVENT \" +\r\n \"SUBTASK_BLOCK_STEP_CONTROL_PROPERTY \" +\r\n \"SUBTASK_BLOCK_SUBJECT_PROPERTY \" +\r\n \"SUBTASK_BLOCK_TASK_CONTROL_PROPERTY \" +\r\n \"SUBTASK_BLOCK_TEXT_PROPERTY \" +\r\n \"SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY \" +\r\n \"SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY \" +\r\n \"SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY \";\r\n\r\n // System component\r\n var system_component_constants =\r\n \"SYSCOMP_CONTROL_JOBS \" +\r\n \"SYSCOMP_FOLDERS \" +\r\n \"SYSCOMP_JOBS \" +\r\n \"SYSCOMP_NOTICES \" +\r\n \"SYSCOMP_TASKS \";\r\n\r\n // System dialogs\r\n var system_dialogs_constants =\r\n \"SYSDLG_CREATE_EDOCUMENT \" +\r\n \"SYSDLG_CREATE_EDOCUMENT_VERSION \" +\r\n \"SYSDLG_CURRENT_PERIOD \" +\r\n \"SYSDLG_EDIT_FUNCTION_HELP \" +\r\n \"SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE \" +\r\n \"SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS \" +\r\n \"SYSDLG_EXPORT_SINGLE_EDOCUMENT \" +\r\n \"SYSDLG_IMPORT_EDOCUMENT \" +\r\n \"SYSDLG_MULTIPLE_SELECT \" +\r\n \"SYSDLG_SETUP_ACCESS_RIGHTS \" +\r\n \"SYSDLG_SETUP_DEFAULT_RIGHTS \" +\r\n \"SYSDLG_SETUP_FILTER_CONDITION \" +\r\n \"SYSDLG_SETUP_SIGN_RIGHTS \" +\r\n \"SYSDLG_SETUP_TASK_OBSERVERS \" +\r\n \"SYSDLG_SETUP_TASK_ROUTE \" +\r\n \"SYSDLG_SETUP_USERS_LIST \" +\r\n \"SYSDLG_SIGN_EDOCUMENT \" +\r\n \"SYSDLG_SIGN_MULTIPLE_EDOCUMENTS \";\r\n\r\n // System reference names\r\n var system_reference_names_constants =\r\n \"SYSREF_ACCESS_RIGHTS_TYPES \" +\r\n \"SYSREF_ADMINISTRATION_HISTORY \" +\r\n \"SYSREF_ALL_AVAILABLE_COMPONENTS \" +\r\n \"SYSREF_ALL_AVAILABLE_PRIVILEGES \" +\r\n \"SYSREF_ALL_REPLICATING_COMPONENTS \" +\r\n \"SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS \" +\r\n \"SYSREF_CALENDAR_EVENTS \" +\r\n \"SYSREF_COMPONENT_TOKEN_HISTORY \" +\r\n \"SYSREF_COMPONENT_TOKENS \" +\r\n \"SYSREF_COMPONENTS \" +\r\n \"SYSREF_CONSTANTS \" +\r\n \"SYSREF_DATA_RECEIVE_PROTOCOL \" +\r\n \"SYSREF_DATA_SEND_PROTOCOL \" +\r\n \"SYSREF_DIALOGS \" +\r\n \"SYSREF_DIALOGS_REQUISITES \" +\r\n \"SYSREF_EDITORS \" +\r\n \"SYSREF_EDOC_CARDS \" +\r\n \"SYSREF_EDOC_TYPES \" +\r\n \"SYSREF_EDOCUMENT_CARD_REQUISITES \" +\r\n \"SYSREF_EDOCUMENT_CARD_TYPES \" +\r\n \"SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE \" +\r\n \"SYSREF_EDOCUMENT_CARDS \" +\r\n \"SYSREF_EDOCUMENT_HISTORY \" +\r\n \"SYSREF_EDOCUMENT_KINDS \" +\r\n \"SYSREF_EDOCUMENT_REQUISITES \" +\r\n \"SYSREF_EDOCUMENT_SIGNATURES \" +\r\n \"SYSREF_EDOCUMENT_TEMPLATES \" +\r\n \"SYSREF_EDOCUMENT_TEXT_STORAGES \" +\r\n \"SYSREF_EDOCUMENT_VIEWS \" +\r\n \"SYSREF_FILTERER_SETUP_CONFLICTS \" +\r\n \"SYSREF_FILTRATER_SETTING_CONFLICTS \" +\r\n \"SYSREF_FOLDER_HISTORY \" +\r\n \"SYSREF_FOLDERS \" +\r\n \"SYSREF_FUNCTION_GROUPS \" +\r\n \"SYSREF_FUNCTION_PARAMS \" +\r\n \"SYSREF_FUNCTIONS \" +\r\n \"SYSREF_JOB_HISTORY \" +\r\n \"SYSREF_LINKS \" +\r\n \"SYSREF_LOCALIZATION_DICTIONARY \" +\r\n \"SYSREF_LOCALIZATION_LANGUAGES \" +\r\n \"SYSREF_MODULES \" +\r\n \"SYSREF_PRIVILEGES \" +\r\n \"SYSREF_RECORD_HISTORY \" +\r\n \"SYSREF_REFERENCE_REQUISITES \" +\r\n \"SYSREF_REFERENCE_TYPE_VIEWS \" +\r\n \"SYSREF_REFERENCE_TYPES \" +\r\n \"SYSREF_REFERENCES \" +\r\n \"SYSREF_REFERENCES_REQUISITES \" +\r\n \"SYSREF_REMOTE_SERVERS \" +\r\n \"SYSREF_REPLICATION_SESSIONS_LOG \" +\r\n \"SYSREF_REPLICATION_SESSIONS_PROTOCOL \" +\r\n \"SYSREF_REPORTS \" +\r\n \"SYSREF_ROLES \" +\r\n \"SYSREF_ROUTE_BLOCK_GROUPS \" +\r\n \"SYSREF_ROUTE_BLOCKS \" +\r\n \"SYSREF_SCRIPTS \" +\r\n \"SYSREF_SEARCHES \" +\r\n \"SYSREF_SERVER_EVENTS \" +\r\n \"SYSREF_SERVER_EVENTS_HISTORY \" +\r\n \"SYSREF_STANDARD_ROUTE_GROUPS \" +\r\n \"SYSREF_STANDARD_ROUTES \" +\r\n \"SYSREF_STATUSES \" +\r\n \"SYSREF_SYSTEM_SETTINGS \" +\r\n \"SYSREF_TASK_HISTORY \" +\r\n \"SYSREF_TASK_KIND_GROUPS \" +\r\n \"SYSREF_TASK_KINDS \" +\r\n \"SYSREF_TASK_RIGHTS \" +\r\n \"SYSREF_TASK_SIGNATURES \" +\r\n \"SYSREF_TASKS \" +\r\n \"SYSREF_UNITS \" +\r\n \"SYSREF_USER_GROUPS \" +\r\n \"SYSREF_USER_GROUPS_REFERENCE \" +\r\n \"SYSREF_USER_SUBSTITUTION \" +\r\n \"SYSREF_USERS \" +\r\n \"SYSREF_USERS_REFERENCE \" +\r\n \"SYSREF_VIEWERS \" +\r\n \"SYSREF_WORKING_TIME_CALENDARS \";\r\n\r\n // Table name\r\n var table_name_constants =\r\n \"ACCESS_RIGHTS_TABLE_NAME \" +\r\n \"EDMS_ACCESS_TABLE_NAME \" +\r\n \"EDOC_TYPES_TABLE_NAME \";\r\n\r\n // Test\r\n var test_constants =\r\n \"TEST_DEV_DB_NAME \" +\r\n \"TEST_DEV_SYSTEM_CODE \" +\r\n \"TEST_EDMS_DB_NAME \" +\r\n \"TEST_EDMS_MAIN_CODE \" +\r\n \"TEST_EDMS_MAIN_DB_NAME \" +\r\n \"TEST_EDMS_SECOND_CODE \" +\r\n \"TEST_EDMS_SECOND_DB_NAME \" +\r\n \"TEST_EDMS_SYSTEM_CODE \" +\r\n \"TEST_ISB5_MAIN_CODE \" +\r\n \"TEST_ISB5_SECOND_CODE \" +\r\n \"TEST_SQL_SERVER_2005_NAME \" +\r\n \"TEST_SQL_SERVER_NAME \";\r\n\r\n // Using the dialog windows\r\n var using_the_dialog_windows_constants =\r\n \"ATTENTION_CAPTION \" +\r\n \"cbsCommandLinks \" +\r\n \"cbsDefault \" +\r\n \"CONFIRMATION_CAPTION \" +\r\n \"ERROR_CAPTION \" +\r\n \"INFORMATION_CAPTION \" +\r\n \"mrCancel \" +\r\n \"mrOk \";\r\n\r\n // Using the document\r\n var using_the_document_constants =\r\n \"EDOC_VERSION_ACTIVE_STAGE_CODE \" +\r\n \"EDOC_VERSION_DESIGN_STAGE_CODE \" +\r\n \"EDOC_VERSION_OBSOLETE_STAGE_CODE \";\r\n\r\n // Using the EA and encryption\r\n var using_the_EA_and_encryption_constants =\r\n \"cpDataEnciphermentEnabled \" +\r\n \"cpDigitalSignatureEnabled \" +\r\n \"cpID \" +\r\n \"cpIssuer \" +\r\n \"cpPluginVersion \" +\r\n \"cpSerial \" +\r\n \"cpSubjectName \" +\r\n \"cpSubjSimpleName \" +\r\n \"cpValidFromDate \" +\r\n \"cpValidToDate \";\r\n\r\n // Using the ISBL-editor\r\n var using_the_ISBL_editor_constants =\r\n \"ISBL_SYNTAX \" + \"NO_SYNTAX \" + \"XML_SYNTAX \";\r\n\r\n // Wait block properties\r\n var wait_block_properties_constants =\r\n \"WAIT_BLOCK_AFTER_FINISH_EVENT \" +\r\n \"WAIT_BLOCK_BEFORE_START_EVENT \" +\r\n \"WAIT_BLOCK_DEADLINE_PROPERTY \" +\r\n \"WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\r\n \"WAIT_BLOCK_NAME_PROPERTY \" +\r\n \"WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \";\r\n\r\n // SYSRES Common\r\n var sysres_common_constants =\r\n \"SYSRES_COMMON \" +\r\n \"SYSRES_CONST \" +\r\n \"SYSRES_MBFUNC \" +\r\n \"SYSRES_SBDATA \" +\r\n \"SYSRES_SBGUI \" +\r\n \"SYSRES_SBINTF \" +\r\n \"SYSRES_SBREFDSC \" +\r\n \"SYSRES_SQLERRORS \" +\r\n \"SYSRES_SYSCOMP \";\r\n\r\n // Константы ==> built_in\r\n var CONSTANTS =\r\n sysres_constants +\r\n base_constants +\r\n base_group_name_constants +\r\n decision_block_properties_constants +\r\n file_extension_constants +\r\n job_block_properties_constants +\r\n language_code_constants +\r\n launching_external_applications_constants +\r\n link_kind_constants +\r\n lock_type_constants +\r\n monitor_block_properties_constants +\r\n notice_block_properties_constants +\r\n object_events_constants +\r\n object_params_constants +\r\n other_constants +\r\n privileges_constants +\r\n pseudoreference_code_constants +\r\n requisite_ISBCertificateType_values_constants +\r\n requisite_ISBEDocStorageType_values_constants +\r\n requisite_compType2_values_constants +\r\n requisite_name_constants +\r\n result_constants +\r\n rule_identification_constants +\r\n script_block_properties_constants +\r\n subtask_block_properties_constants +\r\n system_component_constants +\r\n system_dialogs_constants +\r\n system_reference_names_constants +\r\n table_name_constants +\r\n test_constants +\r\n using_the_dialog_windows_constants +\r\n using_the_document_constants +\r\n using_the_EA_and_encryption_constants +\r\n using_the_ISBL_editor_constants +\r\n wait_block_properties_constants +\r\n sysres_common_constants;\r\n\r\n // enum TAccountType\r\n var TAccountType = \"atUser atGroup atRole \";\r\n\r\n // enum TActionEnabledMode\r\n var TActionEnabledMode =\r\n \"aemEnabledAlways \" +\r\n \"aemDisabledAlways \" +\r\n \"aemEnabledOnBrowse \" +\r\n \"aemEnabledOnEdit \" +\r\n \"aemDisabledOnBrowseEmpty \";\r\n\r\n // enum TAddPosition\r\n var TAddPosition = \"apBegin apEnd \";\r\n\r\n // enum TAlignment\r\n var TAlignment = \"alLeft alRight \";\r\n\r\n // enum TAreaShowMode\r\n var TAreaShowMode =\r\n \"asmNever \" +\r\n \"asmNoButCustomize \" +\r\n \"asmAsLastTime \" +\r\n \"asmYesButCustomize \" +\r\n \"asmAlways \";\r\n\r\n // enum TCertificateInvalidationReason\r\n var TCertificateInvalidationReason = \"cirCommon cirRevoked \";\r\n\r\n // enum TCertificateType\r\n var TCertificateType = \"ctSignature ctEncode ctSignatureEncode \";\r\n\r\n // enum TCheckListBoxItemState\r\n var TCheckListBoxItemState = \"clbUnchecked clbChecked clbGrayed \";\r\n\r\n // enum TCloseOnEsc\r\n var TCloseOnEsc = \"ceISB ceAlways ceNever \";\r\n\r\n // enum TCompType\r\n var TCompType =\r\n \"ctDocument \" +\r\n \"ctReference \" +\r\n \"ctScript \" +\r\n \"ctUnknown \" +\r\n \"ctReport \" +\r\n \"ctDialog \" +\r\n \"ctFunction \" +\r\n \"ctFolder \" +\r\n \"ctEDocument \" +\r\n \"ctTask \" +\r\n \"ctJob \" +\r\n \"ctNotice \" +\r\n \"ctControlJob \";\r\n\r\n // enum TConditionFormat\r\n var TConditionFormat = \"cfInternal cfDisplay \";\r\n\r\n // enum TConnectionIntent\r\n var TConnectionIntent = \"ciUnspecified ciWrite ciRead \";\r\n\r\n // enum TContentKind\r\n var TContentKind =\r\n \"ckFolder \" +\r\n \"ckEDocument \" +\r\n \"ckTask \" +\r\n \"ckJob \" +\r\n \"ckComponentToken \" +\r\n \"ckAny \" +\r\n \"ckReference \" +\r\n \"ckScript \" +\r\n \"ckReport \" +\r\n \"ckDialog \";\r\n\r\n // enum TControlType\r\n var TControlType =\r\n \"ctISBLEditor \" +\r\n \"ctBevel \" +\r\n \"ctButton \" +\r\n \"ctCheckListBox \" +\r\n \"ctComboBox \" +\r\n \"ctComboEdit \" +\r\n \"ctGrid \" +\r\n \"ctDBCheckBox \" +\r\n \"ctDBComboBox \" +\r\n \"ctDBEdit \" +\r\n \"ctDBEllipsis \" +\r\n \"ctDBMemo \" +\r\n \"ctDBNavigator \" +\r\n \"ctDBRadioGroup \" +\r\n \"ctDBStatusLabel \" +\r\n \"ctEdit \" +\r\n \"ctGroupBox \" +\r\n \"ctInplaceHint \" +\r\n \"ctMemo \" +\r\n \"ctPanel \" +\r\n \"ctListBox \" +\r\n \"ctRadioButton \" +\r\n \"ctRichEdit \" +\r\n \"ctTabSheet \" +\r\n \"ctWebBrowser \" +\r\n \"ctImage \" +\r\n \"ctHyperLink \" +\r\n \"ctLabel \" +\r\n \"ctDBMultiEllipsis \" +\r\n \"ctRibbon \" +\r\n \"ctRichView \" +\r\n \"ctInnerPanel \" +\r\n \"ctPanelGroup \" +\r\n \"ctBitButton \";\r\n\r\n // enum TCriterionContentType\r\n var TCriterionContentType =\r\n \"cctDate \" +\r\n \"cctInteger \" +\r\n \"cctNumeric \" +\r\n \"cctPick \" +\r\n \"cctReference \" +\r\n \"cctString \" +\r\n \"cctText \";\r\n\r\n // enum TCultureType\r\n var TCultureType = \"cltInternal cltPrimary cltGUI \";\r\n\r\n // enum TDataSetEventType\r\n var TDataSetEventType =\r\n \"dseBeforeOpen \" +\r\n \"dseAfterOpen \" +\r\n \"dseBeforeClose \" +\r\n \"dseAfterClose \" +\r\n \"dseOnValidDelete \" +\r\n \"dseBeforeDelete \" +\r\n \"dseAfterDelete \" +\r\n \"dseAfterDeleteOutOfTransaction \" +\r\n \"dseOnDeleteError \" +\r\n \"dseBeforeInsert \" +\r\n \"dseAfterInsert \" +\r\n \"dseOnValidUpdate \" +\r\n \"dseBeforeUpdate \" +\r\n \"dseOnUpdateRatifiedRecord \" +\r\n \"dseAfterUpdate \" +\r\n \"dseAfterUpdateOutOfTransaction \" +\r\n \"dseOnUpdateError \" +\r\n \"dseAfterScroll \" +\r\n \"dseOnOpenRecord \" +\r\n \"dseOnCloseRecord \" +\r\n \"dseBeforeCancel \" +\r\n \"dseAfterCancel \" +\r\n \"dseOnUpdateDeadlockError \" +\r\n \"dseBeforeDetailUpdate \" +\r\n \"dseOnPrepareUpdate \" +\r\n \"dseOnAnyRequisiteChange \";\r\n\r\n // enum TDataSetState\r\n var TDataSetState = \"dssEdit dssInsert dssBrowse dssInActive \";\r\n\r\n // enum TDateFormatType\r\n var TDateFormatType = \"dftDate dftShortDate dftDateTime dftTimeStamp \";\r\n\r\n // enum TDateOffsetType\r\n var TDateOffsetType = \"dotDays dotHours dotMinutes dotSeconds \";\r\n\r\n // enum TDateTimeKind\r\n var TDateTimeKind = \"dtkndLocal dtkndUTC \";\r\n\r\n // enum TDeaAccessRights\r\n var TDeaAccessRights = \"arNone arView arEdit arFull \";\r\n\r\n // enum TDocumentDefaultAction\r\n var TDocumentDefaultAction = \"ddaView ddaEdit \";\r\n\r\n // enum TEditMode\r\n var TEditMode =\r\n \"emLock \" +\r\n \"emEdit \" +\r\n \"emSign \" +\r\n \"emExportWithLock \" +\r\n \"emImportWithUnlock \" +\r\n \"emChangeVersionNote \" +\r\n \"emOpenForModify \" +\r\n \"emChangeLifeStage \" +\r\n \"emDelete \" +\r\n \"emCreateVersion \" +\r\n \"emImport \" +\r\n \"emUnlockExportedWithLock \" +\r\n \"emStart \" +\r\n \"emAbort \" +\r\n \"emReInit \" +\r\n \"emMarkAsReaded \" +\r\n \"emMarkAsUnreaded \" +\r\n \"emPerform \" +\r\n \"emAccept \" +\r\n \"emResume \" +\r\n \"emChangeRights \" +\r\n \"emEditRoute \" +\r\n \"emEditObserver \" +\r\n \"emRecoveryFromLocalCopy \" +\r\n \"emChangeWorkAccessType \" +\r\n \"emChangeEncodeTypeToCertificate \" +\r\n \"emChangeEncodeTypeToPassword \" +\r\n \"emChangeEncodeTypeToNone \" +\r\n \"emChangeEncodeTypeToCertificatePassword \" +\r\n \"emChangeStandardRoute \" +\r\n \"emGetText \" +\r\n \"emOpenForView \" +\r\n \"emMoveToStorage \" +\r\n \"emCreateObject \" +\r\n \"emChangeVersionHidden \" +\r\n \"emDeleteVersion \" +\r\n \"emChangeLifeCycleStage \" +\r\n \"emApprovingSign \" +\r\n \"emExport \" +\r\n \"emContinue \" +\r\n \"emLockFromEdit \" +\r\n \"emUnLockForEdit \" +\r\n \"emLockForServer \" +\r\n \"emUnlockFromServer \" +\r\n \"emDelegateAccessRights \" +\r\n \"emReEncode \";\r\n\r\n // enum TEditorCloseObservType\r\n var TEditorCloseObservType = \"ecotFile ecotProcess \";\r\n\r\n // enum TEdmsApplicationAction\r\n var TEdmsApplicationAction = \"eaGet eaCopy eaCreate eaCreateStandardRoute \";\r\n\r\n // enum TEDocumentLockType\r\n var TEDocumentLockType = \"edltAll edltNothing edltQuery \";\r\n\r\n // enum TEDocumentStepShowMode\r\n var TEDocumentStepShowMode = \"essmText essmCard \";\r\n\r\n // enum TEDocumentStepVersionType\r\n var TEDocumentStepVersionType = \"esvtLast esvtLastActive esvtSpecified \";\r\n\r\n // enum TEDocumentStorageFunction\r\n var TEDocumentStorageFunction = \"edsfExecutive edsfArchive \";\r\n\r\n // enum TEDocumentStorageType\r\n var TEDocumentStorageType = \"edstSQLServer edstFile \";\r\n\r\n // enum TEDocumentVersionSourceType\r\n var TEDocumentVersionSourceType =\r\n \"edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile \";\r\n\r\n // enum TEDocumentVersionState\r\n var TEDocumentVersionState = \"vsDefault vsDesign vsActive vsObsolete \";\r\n\r\n // enum TEncodeType\r\n var TEncodeType = \"etNone etCertificate etPassword etCertificatePassword \";\r\n\r\n // enum TExceptionCategory\r\n var TExceptionCategory = \"ecException ecWarning ecInformation \";\r\n\r\n // enum TExportedSignaturesType\r\n var TExportedSignaturesType = \"estAll estApprovingOnly \";\r\n\r\n // enum TExportedVersionType\r\n var TExportedVersionType = \"evtLast evtLastActive evtQuery \";\r\n\r\n // enum TFieldDataType\r\n var TFieldDataType =\r\n \"fdtString \" +\r\n \"fdtNumeric \" +\r\n \"fdtInteger \" +\r\n \"fdtDate \" +\r\n \"fdtText \" +\r\n \"fdtUnknown \" +\r\n \"fdtWideString \" +\r\n \"fdtLargeInteger \";\r\n\r\n // enum TFolderType\r\n var TFolderType =\r\n \"ftInbox \" +\r\n \"ftOutbox \" +\r\n \"ftFavorites \" +\r\n \"ftCommonFolder \" +\r\n \"ftUserFolder \" +\r\n \"ftComponents \" +\r\n \"ftQuickLaunch \" +\r\n \"ftShortcuts \" +\r\n \"ftSearch \";\r\n\r\n // enum TGridRowHeight\r\n var TGridRowHeight = \"grhAuto \" + \"grhX1 \" + \"grhX2 \" + \"grhX3 \";\r\n\r\n // enum THyperlinkType\r\n var THyperlinkType = \"hltText \" + \"hltRTF \" + \"hltHTML \";\r\n\r\n // enum TImageFileFormat\r\n var TImageFileFormat =\r\n \"iffBMP \" +\r\n \"iffJPEG \" +\r\n \"iffMultiPageTIFF \" +\r\n \"iffSinglePageTIFF \" +\r\n \"iffTIFF \" +\r\n \"iffPNG \";\r\n\r\n // enum TImageMode\r\n var TImageMode = \"im8bGrayscale \" + \"im24bRGB \" + \"im1bMonochrome \";\r\n\r\n // enum TImageType\r\n var TImageType = \"itBMP \" + \"itJPEG \" + \"itWMF \" + \"itPNG \";\r\n\r\n // enum TInplaceHintKind\r\n var TInplaceHintKind =\r\n \"ikhInformation \" + \"ikhWarning \" + \"ikhError \" + \"ikhNoIcon \";\r\n\r\n // enum TISBLContext\r\n var TISBLContext =\r\n \"icUnknown \" +\r\n \"icScript \" +\r\n \"icFunction \" +\r\n \"icIntegratedReport \" +\r\n \"icAnalyticReport \" +\r\n \"icDataSetEventHandler \" +\r\n \"icActionHandler \" +\r\n \"icFormEventHandler \" +\r\n \"icLookUpEventHandler \" +\r\n \"icRequisiteChangeEventHandler \" +\r\n \"icBeforeSearchEventHandler \" +\r\n \"icRoleCalculation \" +\r\n \"icSelectRouteEventHandler \" +\r\n \"icBlockPropertyCalculation \" +\r\n \"icBlockQueryParamsEventHandler \" +\r\n \"icChangeSearchResultEventHandler \" +\r\n \"icBlockEventHandler \" +\r\n \"icSubTaskInitEventHandler \" +\r\n \"icEDocDataSetEventHandler \" +\r\n \"icEDocLookUpEventHandler \" +\r\n \"icEDocActionHandler \" +\r\n \"icEDocFormEventHandler \" +\r\n \"icEDocRequisiteChangeEventHandler \" +\r\n \"icStructuredConversionRule \" +\r\n \"icStructuredConversionEventBefore \" +\r\n \"icStructuredConversionEventAfter \" +\r\n \"icWizardEventHandler \" +\r\n \"icWizardFinishEventHandler \" +\r\n \"icWizardStepEventHandler \" +\r\n \"icWizardStepFinishEventHandler \" +\r\n \"icWizardActionEnableEventHandler \" +\r\n \"icWizardActionExecuteEventHandler \" +\r\n \"icCreateJobsHandler \" +\r\n \"icCreateNoticesHandler \" +\r\n \"icBeforeLookUpEventHandler \" +\r\n \"icAfterLookUpEventHandler \" +\r\n \"icTaskAbortEventHandler \" +\r\n \"icWorkflowBlockActionHandler \" +\r\n \"icDialogDataSetEventHandler \" +\r\n \"icDialogActionHandler \" +\r\n \"icDialogLookUpEventHandler \" +\r\n \"icDialogRequisiteChangeEventHandler \" +\r\n \"icDialogFormEventHandler \" +\r\n \"icDialogValidCloseEventHandler \" +\r\n \"icBlockFormEventHandler \" +\r\n \"icTaskFormEventHandler \" +\r\n \"icReferenceMethod \" +\r\n \"icEDocMethod \" +\r\n \"icDialogMethod \" +\r\n \"icProcessMessageHandler \";\r\n\r\n // enum TItemShow\r\n var TItemShow = \"isShow \" + \"isHide \" + \"isByUserSettings \";\r\n\r\n // enum TJobKind\r\n var TJobKind = \"jkJob \" + \"jkNotice \" + \"jkControlJob \";\r\n\r\n // enum TJoinType\r\n var TJoinType = \"jtInner \" + \"jtLeft \" + \"jtRight \" + \"jtFull \" + \"jtCross \";\r\n\r\n // enum TLabelPos\r\n var TLabelPos = \"lbpAbove \" + \"lbpBelow \" + \"lbpLeft \" + \"lbpRight \";\r\n\r\n // enum TLicensingType\r\n var TLicensingType = \"eltPerConnection \" + \"eltPerUser \";\r\n\r\n // enum TLifeCycleStageFontColor\r\n var TLifeCycleStageFontColor =\r\n \"sfcUndefined \" +\r\n \"sfcBlack \" +\r\n \"sfcGreen \" +\r\n \"sfcRed \" +\r\n \"sfcBlue \" +\r\n \"sfcOrange \" +\r\n \"sfcLilac \";\r\n\r\n // enum TLifeCycleStageFontStyle\r\n var TLifeCycleStageFontStyle = \"sfsItalic \" + \"sfsStrikeout \" + \"sfsNormal \";\r\n\r\n // enum TLockableDevelopmentComponentType\r\n var TLockableDevelopmentComponentType =\r\n \"ldctStandardRoute \" +\r\n \"ldctWizard \" +\r\n \"ldctScript \" +\r\n \"ldctFunction \" +\r\n \"ldctRouteBlock \" +\r\n \"ldctIntegratedReport \" +\r\n \"ldctAnalyticReport \" +\r\n \"ldctReferenceType \" +\r\n \"ldctEDocumentType \" +\r\n \"ldctDialog \" +\r\n \"ldctServerEvents \";\r\n\r\n // enum TMaxRecordCountRestrictionType\r\n var TMaxRecordCountRestrictionType =\r\n \"mrcrtNone \" + \"mrcrtUser \" + \"mrcrtMaximal \" + \"mrcrtCustom \";\r\n\r\n // enum TRangeValueType\r\n var TRangeValueType =\r\n \"vtEqual \" + \"vtGreaterOrEqual \" + \"vtLessOrEqual \" + \"vtRange \";\r\n\r\n // enum TRelativeDate\r\n var TRelativeDate =\r\n \"rdYesterday \" +\r\n \"rdToday \" +\r\n \"rdTomorrow \" +\r\n \"rdThisWeek \" +\r\n \"rdThisMonth \" +\r\n \"rdThisYear \" +\r\n \"rdNextMonth \" +\r\n \"rdNextWeek \" +\r\n \"rdLastWeek \" +\r\n \"rdLastMonth \";\r\n\r\n // enum TReportDestination\r\n var TReportDestination = \"rdWindow \" + \"rdFile \" + \"rdPrinter \";\r\n\r\n // enum TReqDataType\r\n var TReqDataType =\r\n \"rdtString \" +\r\n \"rdtNumeric \" +\r\n \"rdtInteger \" +\r\n \"rdtDate \" +\r\n \"rdtReference \" +\r\n \"rdtAccount \" +\r\n \"rdtText \" +\r\n \"rdtPick \" +\r\n \"rdtUnknown \" +\r\n \"rdtLargeInteger \" +\r\n \"rdtDocument \";\r\n\r\n // enum TRequisiteEventType\r\n var TRequisiteEventType = \"reOnChange \" + \"reOnChangeValues \";\r\n\r\n // enum TSBTimeType\r\n var TSBTimeType = \"ttGlobal \" + \"ttLocal \" + \"ttUser \" + \"ttSystem \";\r\n\r\n // enum TSearchShowMode\r\n var TSearchShowMode =\r\n \"ssmBrowse \" + \"ssmSelect \" + \"ssmMultiSelect \" + \"ssmBrowseModal \";\r\n\r\n // enum TSelectMode\r\n var TSelectMode = \"smSelect \" + \"smLike \" + \"smCard \";\r\n\r\n // enum TSignatureType\r\n var TSignatureType = \"stNone \" + \"stAuthenticating \" + \"stApproving \";\r\n\r\n // enum TSignerContentType\r\n var TSignerContentType = \"sctString \" + \"sctStream \";\r\n\r\n // enum TStringsSortType\r\n var TStringsSortType = \"sstAnsiSort \" + \"sstNaturalSort \";\r\n\r\n // enum TStringValueType\r\n var TStringValueType = \"svtEqual \" + \"svtContain \";\r\n\r\n // enum TStructuredObjectAttributeType\r\n var TStructuredObjectAttributeType =\r\n \"soatString \" +\r\n \"soatNumeric \" +\r\n \"soatInteger \" +\r\n \"soatDatetime \" +\r\n \"soatReferenceRecord \" +\r\n \"soatText \" +\r\n \"soatPick \" +\r\n \"soatBoolean \" +\r\n \"soatEDocument \" +\r\n \"soatAccount \" +\r\n \"soatIntegerCollection \" +\r\n \"soatNumericCollection \" +\r\n \"soatStringCollection \" +\r\n \"soatPickCollection \" +\r\n \"soatDatetimeCollection \" +\r\n \"soatBooleanCollection \" +\r\n \"soatReferenceRecordCollection \" +\r\n \"soatEDocumentCollection \" +\r\n \"soatAccountCollection \" +\r\n \"soatContents \" +\r\n \"soatUnknown \";\r\n\r\n // enum TTaskAbortReason\r\n var TTaskAbortReason = \"tarAbortByUser \" + \"tarAbortByWorkflowException \";\r\n\r\n // enum TTextValueType\r\n var TTextValueType = \"tvtAllWords \" + \"tvtExactPhrase \" + \"tvtAnyWord \";\r\n\r\n // enum TUserObjectStatus\r\n var TUserObjectStatus =\r\n \"usNone \" +\r\n \"usCompleted \" +\r\n \"usRedSquare \" +\r\n \"usBlueSquare \" +\r\n \"usYellowSquare \" +\r\n \"usGreenSquare \" +\r\n \"usOrangeSquare \" +\r\n \"usPurpleSquare \" +\r\n \"usFollowUp \";\r\n\r\n // enum TUserType\r\n var TUserType =\r\n \"utUnknown \" +\r\n \"utUser \" +\r\n \"utDeveloper \" +\r\n \"utAdministrator \" +\r\n \"utSystemDeveloper \" +\r\n \"utDisconnected \";\r\n\r\n // enum TValuesBuildType\r\n var TValuesBuildType =\r\n \"btAnd \" + \"btDetailAnd \" + \"btOr \" + \"btNotOr \" + \"btOnly \";\r\n\r\n // enum TViewMode\r\n var TViewMode = \"vmView \" + \"vmSelect \" + \"vmNavigation \";\r\n\r\n // enum TViewSelectionMode\r\n var TViewSelectionMode =\r\n \"vsmSingle \" + \"vsmMultiple \" + \"vsmMultipleCheck \" + \"vsmNoSelection \";\r\n\r\n // enum TWizardActionType\r\n var TWizardActionType =\r\n \"wfatPrevious \" + \"wfatNext \" + \"wfatCancel \" + \"wfatFinish \";\r\n\r\n // enum TWizardFormElementProperty\r\n var TWizardFormElementProperty =\r\n \"wfepUndefined \" +\r\n \"wfepText3 \" +\r\n \"wfepText6 \" +\r\n \"wfepText9 \" +\r\n \"wfepSpinEdit \" +\r\n \"wfepDropDown \" +\r\n \"wfepRadioGroup \" +\r\n \"wfepFlag \" +\r\n \"wfepText12 \" +\r\n \"wfepText15 \" +\r\n \"wfepText18 \" +\r\n \"wfepText21 \" +\r\n \"wfepText24 \" +\r\n \"wfepText27 \" +\r\n \"wfepText30 \" +\r\n \"wfepRadioGroupColumn1 \" +\r\n \"wfepRadioGroupColumn2 \" +\r\n \"wfepRadioGroupColumn3 \";\r\n\r\n // enum TWizardFormElementType\r\n var TWizardFormElementType =\r\n \"wfetQueryParameter \" + \"wfetText \" + \"wfetDelimiter \" + \"wfetLabel \";\r\n\r\n // enum TWizardParamType\r\n var TWizardParamType =\r\n \"wptString \" +\r\n \"wptInteger \" +\r\n \"wptNumeric \" +\r\n \"wptBoolean \" +\r\n \"wptDateTime \" +\r\n \"wptPick \" +\r\n \"wptText \" +\r\n \"wptUser \" +\r\n \"wptUserList \" +\r\n \"wptEDocumentInfo \" +\r\n \"wptEDocumentInfoList \" +\r\n \"wptReferenceRecordInfo \" +\r\n \"wptReferenceRecordInfoList \" +\r\n \"wptFolderInfo \" +\r\n \"wptTaskInfo \" +\r\n \"wptContents \" +\r\n \"wptFileName \" +\r\n \"wptDate \";\r\n\r\n // enum TWizardStepResult\r\n var TWizardStepResult =\r\n \"wsrComplete \" +\r\n \"wsrGoNext \" +\r\n \"wsrGoPrevious \" +\r\n \"wsrCustom \" +\r\n \"wsrCancel \" +\r\n \"wsrGoFinal \";\r\n\r\n // enum TWizardStepType\r\n var TWizardStepType =\r\n \"wstForm \" +\r\n \"wstEDocument \" +\r\n \"wstTaskCard \" +\r\n \"wstReferenceRecordCard \" +\r\n \"wstFinal \";\r\n\r\n // enum TWorkAccessType\r\n var TWorkAccessType = \"waAll \" + \"waPerformers \" + \"waManual \";\r\n\r\n // enum TWorkflowBlockType\r\n var TWorkflowBlockType =\r\n \"wsbStart \" +\r\n \"wsbFinish \" +\r\n \"wsbNotice \" +\r\n \"wsbStep \" +\r\n \"wsbDecision \" +\r\n \"wsbWait \" +\r\n \"wsbMonitor \" +\r\n \"wsbScript \" +\r\n \"wsbConnector \" +\r\n \"wsbSubTask \" +\r\n \"wsbLifeCycleStage \" +\r\n \"wsbPause \";\r\n\r\n // enum TWorkflowDataType\r\n var TWorkflowDataType =\r\n \"wdtInteger \" +\r\n \"wdtFloat \" +\r\n \"wdtString \" +\r\n \"wdtPick \" +\r\n \"wdtDateTime \" +\r\n \"wdtBoolean \" +\r\n \"wdtTask \" +\r\n \"wdtJob \" +\r\n \"wdtFolder \" +\r\n \"wdtEDocument \" +\r\n \"wdtReferenceRecord \" +\r\n \"wdtUser \" +\r\n \"wdtGroup \" +\r\n \"wdtRole \" +\r\n \"wdtIntegerCollection \" +\r\n \"wdtFloatCollection \" +\r\n \"wdtStringCollection \" +\r\n \"wdtPickCollection \" +\r\n \"wdtDateTimeCollection \" +\r\n \"wdtBooleanCollection \" +\r\n \"wdtTaskCollection \" +\r\n \"wdtJobCollection \" +\r\n \"wdtFolderCollection \" +\r\n \"wdtEDocumentCollection \" +\r\n \"wdtReferenceRecordCollection \" +\r\n \"wdtUserCollection \" +\r\n \"wdtGroupCollection \" +\r\n \"wdtRoleCollection \" +\r\n \"wdtContents \" +\r\n \"wdtUserList \" +\r\n \"wdtSearchDescription \" +\r\n \"wdtDeadLine \" +\r\n \"wdtPickSet \" +\r\n \"wdtAccountCollection \";\r\n\r\n // enum TWorkImportance\r\n var TWorkImportance = \"wiLow \" + \"wiNormal \" + \"wiHigh \";\r\n\r\n // enum TWorkRouteType\r\n var TWorkRouteType = \"wrtSoft \" + \"wrtHard \";\r\n\r\n // enum TWorkState\r\n var TWorkState =\r\n \"wsInit \" +\r\n \"wsRunning \" +\r\n \"wsDone \" +\r\n \"wsControlled \" +\r\n \"wsAborted \" +\r\n \"wsContinued \";\r\n\r\n // enum TWorkTextBuildingMode\r\n var TWorkTextBuildingMode =\r\n \"wtmFull \" + \"wtmFromCurrent \" + \"wtmOnlyCurrent \";\r\n\r\n // Перечисления\r\n var ENUMS =\r\n TAccountType +\r\n TActionEnabledMode +\r\n TAddPosition +\r\n TAlignment +\r\n TAreaShowMode +\r\n TCertificateInvalidationReason +\r\n TCertificateType +\r\n TCheckListBoxItemState +\r\n TCloseOnEsc +\r\n TCompType +\r\n TConditionFormat +\r\n TConnectionIntent +\r\n TContentKind +\r\n TControlType +\r\n TCriterionContentType +\r\n TCultureType +\r\n TDataSetEventType +\r\n TDataSetState +\r\n TDateFormatType +\r\n TDateOffsetType +\r\n TDateTimeKind +\r\n TDeaAccessRights +\r\n TDocumentDefaultAction +\r\n TEditMode +\r\n TEditorCloseObservType +\r\n TEdmsApplicationAction +\r\n TEDocumentLockType +\r\n TEDocumentStepShowMode +\r\n TEDocumentStepVersionType +\r\n TEDocumentStorageFunction +\r\n TEDocumentStorageType +\r\n TEDocumentVersionSourceType +\r\n TEDocumentVersionState +\r\n TEncodeType +\r\n TExceptionCategory +\r\n TExportedSignaturesType +\r\n TExportedVersionType +\r\n TFieldDataType +\r\n TFolderType +\r\n TGridRowHeight +\r\n THyperlinkType +\r\n TImageFileFormat +\r\n TImageMode +\r\n TImageType +\r\n TInplaceHintKind +\r\n TISBLContext +\r\n TItemShow +\r\n TJobKind +\r\n TJoinType +\r\n TLabelPos +\r\n TLicensingType +\r\n TLifeCycleStageFontColor +\r\n TLifeCycleStageFontStyle +\r\n TLockableDevelopmentComponentType +\r\n TMaxRecordCountRestrictionType +\r\n TRangeValueType +\r\n TRelativeDate +\r\n TReportDestination +\r\n TReqDataType +\r\n TRequisiteEventType +\r\n TSBTimeType +\r\n TSearchShowMode +\r\n TSelectMode +\r\n TSignatureType +\r\n TSignerContentType +\r\n TStringsSortType +\r\n TStringValueType +\r\n TStructuredObjectAttributeType +\r\n TTaskAbortReason +\r\n TTextValueType +\r\n TUserObjectStatus +\r\n TUserType +\r\n TValuesBuildType +\r\n TViewMode +\r\n TViewSelectionMode +\r\n TWizardActionType +\r\n TWizardFormElementProperty +\r\n TWizardFormElementType +\r\n TWizardParamType +\r\n TWizardStepResult +\r\n TWizardStepType +\r\n TWorkAccessType +\r\n TWorkflowBlockType +\r\n TWorkflowDataType +\r\n TWorkImportance +\r\n TWorkRouteType +\r\n TWorkState +\r\n TWorkTextBuildingMode;\r\n\r\n // Системные функции ==> SYSFUNCTIONS\r\n var system_functions =\r\n \"AddSubString \" +\r\n \"AdjustLineBreaks \" +\r\n \"AmountInWords \" +\r\n \"Analysis \" +\r\n \"ArrayDimCount \" +\r\n \"ArrayHighBound \" +\r\n \"ArrayLowBound \" +\r\n \"ArrayOf \" +\r\n \"ArrayReDim \" +\r\n \"Assert \" +\r\n \"Assigned \" +\r\n \"BeginOfMonth \" +\r\n \"BeginOfPeriod \" +\r\n \"BuildProfilingOperationAnalysis \" +\r\n \"CallProcedure \" +\r\n \"CanReadFile \" +\r\n \"CArrayElement \" +\r\n \"CDataSetRequisite \" +\r\n \"ChangeDate \" +\r\n \"ChangeReferenceDataset \" +\r\n \"Char \" +\r\n \"CharPos \" +\r\n \"CheckParam \" +\r\n \"CheckParamValue \" +\r\n \"CompareStrings \" +\r\n \"ConstantExists \" +\r\n \"ControlState \" +\r\n \"ConvertDateStr \" +\r\n \"Copy \" +\r\n \"CopyFile \" +\r\n \"CreateArray \" +\r\n \"CreateCachedReference \" +\r\n \"CreateConnection \" +\r\n \"CreateDialog \" +\r\n \"CreateDualListDialog \" +\r\n \"CreateEditor \" +\r\n \"CreateException \" +\r\n \"CreateFile \" +\r\n \"CreateFolderDialog \" +\r\n \"CreateInputDialog \" +\r\n \"CreateLinkFile \" +\r\n \"CreateList \" +\r\n \"CreateLock \" +\r\n \"CreateMemoryDataSet \" +\r\n \"CreateObject \" +\r\n \"CreateOpenDialog \" +\r\n \"CreateProgress \" +\r\n \"CreateQuery \" +\r\n \"CreateReference \" +\r\n \"CreateReport \" +\r\n \"CreateSaveDialog \" +\r\n \"CreateScript \" +\r\n \"CreateSQLPivotFunction \" +\r\n \"CreateStringList \" +\r\n \"CreateTreeListSelectDialog \" +\r\n \"CSelectSQL \" +\r\n \"CSQL \" +\r\n \"CSubString \" +\r\n \"CurrentUserID \" +\r\n \"CurrentUserName \" +\r\n \"CurrentVersion \" +\r\n \"DataSetLocateEx \" +\r\n \"DateDiff \" +\r\n \"DateTimeDiff \" +\r\n \"DateToStr \" +\r\n \"DayOfWeek \" +\r\n \"DeleteFile \" +\r\n \"DirectoryExists \" +\r\n \"DisableCheckAccessRights \" +\r\n \"DisableCheckFullShowingRestriction \" +\r\n \"DisableMassTaskSendingRestrictions \" +\r\n \"DropTable \" +\r\n \"DupeString \" +\r\n \"EditText \" +\r\n \"EnableCheckAccessRights \" +\r\n \"EnableCheckFullShowingRestriction \" +\r\n \"EnableMassTaskSendingRestrictions \" +\r\n \"EndOfMonth \" +\r\n \"EndOfPeriod \" +\r\n \"ExceptionExists \" +\r\n \"ExceptionsOff \" +\r\n \"ExceptionsOn \" +\r\n \"Execute \" +\r\n \"ExecuteProcess \" +\r\n \"Exit \" +\r\n \"ExpandEnvironmentVariables \" +\r\n \"ExtractFileDrive \" +\r\n \"ExtractFileExt \" +\r\n \"ExtractFileName \" +\r\n \"ExtractFilePath \" +\r\n \"ExtractParams \" +\r\n \"FileExists \" +\r\n \"FileSize \" +\r\n \"FindFile \" +\r\n \"FindSubString \" +\r\n \"FirmContext \" +\r\n \"ForceDirectories \" +\r\n \"Format \" +\r\n \"FormatDate \" +\r\n \"FormatNumeric \" +\r\n \"FormatSQLDate \" +\r\n \"FormatString \" +\r\n \"FreeException \" +\r\n \"GetComponent \" +\r\n \"GetComponentLaunchParam \" +\r\n \"GetConstant \" +\r\n \"GetLastException \" +\r\n \"GetReferenceRecord \" +\r\n \"GetRefTypeByRefID \" +\r\n \"GetTableID \" +\r\n \"GetTempFolder \" +\r\n \"IfThen \" +\r\n \"In \" +\r\n \"IndexOf \" +\r\n \"InputDialog \" +\r\n \"InputDialogEx \" +\r\n \"InteractiveMode \" +\r\n \"IsFileLocked \" +\r\n \"IsGraphicFile \" +\r\n \"IsNumeric \" +\r\n \"Length \" +\r\n \"LoadString \" +\r\n \"LoadStringFmt \" +\r\n \"LocalTimeToUTC \" +\r\n \"LowerCase \" +\r\n \"Max \" +\r\n \"MessageBox \" +\r\n \"MessageBoxEx \" +\r\n \"MimeDecodeBinary \" +\r\n \"MimeDecodeString \" +\r\n \"MimeEncodeBinary \" +\r\n \"MimeEncodeString \" +\r\n \"Min \" +\r\n \"MoneyInWords \" +\r\n \"MoveFile \" +\r\n \"NewID \" +\r\n \"Now \" +\r\n \"OpenFile \" +\r\n \"Ord \" +\r\n \"Precision \" +\r\n \"Raise \" +\r\n \"ReadCertificateFromFile \" +\r\n \"ReadFile \" +\r\n \"ReferenceCodeByID \" +\r\n \"ReferenceNumber \" +\r\n \"ReferenceRequisiteMode \" +\r\n \"ReferenceRequisiteValue \" +\r\n \"RegionDateSettings \" +\r\n \"RegionNumberSettings \" +\r\n \"RegionTimeSettings \" +\r\n \"RegRead \" +\r\n \"RegWrite \" +\r\n \"RenameFile \" +\r\n \"Replace \" +\r\n \"Round \" +\r\n \"SelectServerCode \" +\r\n \"SelectSQL \" +\r\n \"ServerDateTime \" +\r\n \"SetConstant \" +\r\n \"SetManagedFolderFieldsState \" +\r\n \"ShowConstantsInputDialog \" +\r\n \"ShowMessage \" +\r\n \"Sleep \" +\r\n \"Split \" +\r\n \"SQL \" +\r\n \"SQL2XLSTAB \" +\r\n \"SQLProfilingSendReport \" +\r\n \"StrToDate \" +\r\n \"SubString \" +\r\n \"SubStringCount \" +\r\n \"SystemSetting \" +\r\n \"Time \" +\r\n \"TimeDiff \" +\r\n \"Today \" +\r\n \"Transliterate \" +\r\n \"Trim \" +\r\n \"UpperCase \" +\r\n \"UserStatus \" +\r\n \"UTCToLocalTime \" +\r\n \"ValidateXML \" +\r\n \"VarIsClear \" +\r\n \"VarIsEmpty \" +\r\n \"VarIsNull \" +\r\n \"WorkTimeDiff \" +\r\n \"WriteFile \" +\r\n \"WriteFileEx \" +\r\n \"WriteObjectHistory \" +\r\n \"Анализ \" +\r\n \"БазаДанных \" +\r\n \"БлокЕсть \" +\r\n \"БлокЕстьРасш \" +\r\n \"БлокИнфо \" +\r\n \"БлокСнять \" +\r\n \"БлокСнятьРасш \" +\r\n \"БлокУстановить \" +\r\n \"Ввод \" +\r\n \"ВводМеню \" +\r\n \"ВедС \" +\r\n \"ВедСпр \" +\r\n \"ВерхняяГраницаМассива \" +\r\n \"ВнешПрогр \" +\r\n \"Восст \" +\r\n \"ВременнаяПапка \" +\r\n \"Время \" +\r\n \"ВыборSQL \" +\r\n \"ВыбратьЗапись \" +\r\n \"ВыделитьСтр \" +\r\n \"Вызвать \" +\r\n \"Выполнить \" +\r\n \"ВыпПрогр \" +\r\n \"ГрафическийФайл \" +\r\n \"ГруппаДополнительно \" +\r\n \"ДатаВремяСерв \" +\r\n \"ДеньНедели \" +\r\n \"ДиалогДаНет \" +\r\n \"ДлинаСтр \" +\r\n \"ДобПодстр \" +\r\n \"ЕПусто \" +\r\n \"ЕслиТо \" +\r\n \"ЕЧисло \" +\r\n \"ЗамПодстр \" +\r\n \"ЗаписьСправочника \" +\r\n \"ЗначПоляСпр \" +\r\n \"ИДТипСпр \" +\r\n \"ИзвлечьДиск \" +\r\n \"ИзвлечьИмяФайла \" +\r\n \"ИзвлечьПуть \" +\r\n \"ИзвлечьРасширение \" +\r\n \"ИзмДат \" +\r\n \"ИзменитьРазмерМассива \" +\r\n \"ИзмеренийМассива \" +\r\n \"ИмяОрг \" +\r\n \"ИмяПоляСпр \" +\r\n \"Индекс \" +\r\n \"ИндикаторЗакрыть \" +\r\n \"ИндикаторОткрыть \" +\r\n \"ИндикаторШаг \" +\r\n \"ИнтерактивныйРежим \" +\r\n \"ИтогТблСпр \" +\r\n \"КодВидВедСпр \" +\r\n \"КодВидСпрПоИД \" +\r\n \"КодПоAnalit \" +\r\n \"КодСимвола \" +\r\n \"КодСпр \" +\r\n \"КолПодстр \" +\r\n \"КолПроп \" +\r\n \"КонМес \" +\r\n \"Конст \" +\r\n \"КонстЕсть \" +\r\n \"КонстЗнач \" +\r\n \"КонТран \" +\r\n \"КопироватьФайл \" +\r\n \"КопияСтр \" +\r\n \"КПериод \" +\r\n \"КСтрТблСпр \" +\r\n \"Макс \" +\r\n \"МаксСтрТблСпр \" +\r\n \"Массив \" +\r\n \"Меню \" +\r\n \"МенюРасш \" +\r\n \"Мин \" +\r\n \"НаборДанныхНайтиРасш \" +\r\n \"НаимВидСпр \" +\r\n \"НаимПоAnalit \" +\r\n \"НаимСпр \" +\r\n \"НастроитьПереводыСтрок \" +\r\n \"НачМес \" +\r\n \"НачТран \" +\r\n \"НижняяГраницаМассива \" +\r\n \"НомерСпр \" +\r\n \"НПериод \" +\r\n \"Окно \" +\r\n \"Окр \" +\r\n \"Окружение \" +\r\n \"ОтлИнфДобавить \" +\r\n \"ОтлИнфУдалить \" +\r\n \"Отчет \" +\r\n \"ОтчетАнал \" +\r\n \"ОтчетИнт \" +\r\n \"ПапкаСуществует \" +\r\n \"Пауза \" +\r\n \"ПВыборSQL \" +\r\n \"ПереименоватьФайл \" +\r\n \"Переменные \" +\r\n \"ПереместитьФайл \" +\r\n \"Подстр \" +\r\n \"ПоискПодстр \" +\r\n \"ПоискСтр \" +\r\n \"ПолучитьИДТаблицы \" +\r\n \"ПользовательДополнительно \" +\r\n \"ПользовательИД \" +\r\n \"ПользовательИмя \" +\r\n \"ПользовательСтатус \" +\r\n \"Прервать \" +\r\n \"ПроверитьПараметр \" +\r\n \"ПроверитьПараметрЗнач \" +\r\n \"ПроверитьУсловие \" +\r\n \"РазбСтр \" +\r\n \"РазнВремя \" +\r\n \"РазнДат \" +\r\n \"РазнДатаВремя \" +\r\n \"РазнРабВремя \" +\r\n \"РегУстВрем \" +\r\n \"РегУстДат \" +\r\n \"РегУстЧсл \" +\r\n \"РедТекст \" +\r\n \"РеестрЗапись \" +\r\n \"РеестрСписокИменПарам \" +\r\n \"РеестрЧтение \" +\r\n \"РеквСпр \" +\r\n \"РеквСпрПр \" +\r\n \"Сегодня \" +\r\n \"Сейчас \" +\r\n \"Сервер \" +\r\n \"СерверПроцессИД \" +\r\n \"СертификатФайлСчитать \" +\r\n \"СжПроб \" +\r\n \"Символ \" +\r\n \"СистемаДиректумКод \" +\r\n \"СистемаИнформация \" +\r\n \"СистемаКод \" +\r\n \"Содержит \" +\r\n \"СоединениеЗакрыть \" +\r\n \"СоединениеОткрыть \" +\r\n \"СоздатьДиалог \" +\r\n \"СоздатьДиалогВыбораИзДвухСписков \" +\r\n \"СоздатьДиалогВыбораПапки \" +\r\n \"СоздатьДиалогОткрытияФайла \" +\r\n \"СоздатьДиалогСохраненияФайла \" +\r\n \"СоздатьЗапрос \" +\r\n \"СоздатьИндикатор \" +\r\n \"СоздатьИсключение \" +\r\n \"СоздатьКэшированныйСправочник \" +\r\n \"СоздатьМассив \" +\r\n \"СоздатьНаборДанных \" +\r\n \"СоздатьОбъект \" +\r\n \"СоздатьОтчет \" +\r\n \"СоздатьПапку \" +\r\n \"СоздатьРедактор \" +\r\n \"СоздатьСоединение \" +\r\n \"СоздатьСписок \" +\r\n \"СоздатьСписокСтрок \" +\r\n \"СоздатьСправочник \" +\r\n \"СоздатьСценарий \" +\r\n \"СоздСпр \" +\r\n \"СостСпр \" +\r\n \"Сохр \" +\r\n \"СохрСпр \" +\r\n \"СписокСистем \" +\r\n \"Спр \" +\r\n \"Справочник \" +\r\n \"СпрБлокЕсть \" +\r\n \"СпрБлокСнять \" +\r\n \"СпрБлокСнятьРасш \" +\r\n \"СпрБлокУстановить \" +\r\n \"СпрИзмНабДан \" +\r\n \"СпрКод \" +\r\n \"СпрНомер \" +\r\n \"СпрОбновить \" +\r\n \"СпрОткрыть \" +\r\n \"СпрОтменить \" +\r\n \"СпрПарам \" +\r\n \"СпрПолеЗнач \" +\r\n \"СпрПолеИмя \" +\r\n \"СпрРекв \" +\r\n \"СпрРеквВведЗн \" +\r\n \"СпрРеквНовые \" +\r\n \"СпрРеквПр \" +\r\n \"СпрРеквПредЗн \" +\r\n \"СпрРеквРежим \" +\r\n \"СпрРеквТипТекст \" +\r\n \"СпрСоздать \" +\r\n \"СпрСост \" +\r\n \"СпрСохранить \" +\r\n \"СпрТблИтог \" +\r\n \"СпрТблСтр \" +\r\n \"СпрТблСтрКол \" +\r\n \"СпрТблСтрМакс \" +\r\n \"СпрТблСтрМин \" +\r\n \"СпрТблСтрПред \" +\r\n \"СпрТблСтрСлед \" +\r\n \"СпрТблСтрСозд \" +\r\n \"СпрТблСтрУд \" +\r\n \"СпрТекПредст \" +\r\n \"СпрУдалить \" +\r\n \"СравнитьСтр \" +\r\n \"СтрВерхРегистр \" +\r\n \"СтрНижнРегистр \" +\r\n \"СтрТблСпр \" +\r\n \"СумПроп \" +\r\n \"Сценарий \" +\r\n \"СценарийПарам \" +\r\n \"ТекВерсия \" +\r\n \"ТекОрг \" +\r\n \"Точн \" +\r\n \"Тран \" +\r\n \"Транслитерация \" +\r\n \"УдалитьТаблицу \" +\r\n \"УдалитьФайл \" +\r\n \"УдСпр \" +\r\n \"УдСтрТблСпр \" +\r\n \"Уст \" +\r\n \"УстановкиКонстант \" +\r\n \"ФайлАтрибутСчитать \" +\r\n \"ФайлАтрибутУстановить \" +\r\n \"ФайлВремя \" +\r\n \"ФайлВремяУстановить \" +\r\n \"ФайлВыбрать \" +\r\n \"ФайлЗанят \" +\r\n \"ФайлЗаписать \" +\r\n \"ФайлИскать \" +\r\n \"ФайлКопировать \" +\r\n \"ФайлМожноЧитать \" +\r\n \"ФайлОткрыть \" +\r\n \"ФайлПереименовать \" +\r\n \"ФайлПерекодировать \" +\r\n \"ФайлПереместить \" +\r\n \"ФайлПросмотреть \" +\r\n \"ФайлРазмер \" +\r\n \"ФайлСоздать \" +\r\n \"ФайлСсылкаСоздать \" +\r\n \"ФайлСуществует \" +\r\n \"ФайлСчитать \" +\r\n \"ФайлУдалить \" +\r\n \"ФмтSQLДат \" +\r\n \"ФмтДат \" +\r\n \"ФмтСтр \" +\r\n \"ФмтЧсл \" +\r\n \"Формат \" +\r\n \"ЦМассивЭлемент \" +\r\n \"ЦНаборДанныхРеквизит \" +\r\n \"ЦПодстр \";\r\n\r\n // Предопределенные переменные ==> built_in\r\n var predefined_variables =\r\n \"AltState \" +\r\n \"Application \" +\r\n \"CallType \" +\r\n \"ComponentTokens \" +\r\n \"CreatedJobs \" +\r\n \"CreatedNotices \" +\r\n \"ControlState \" +\r\n \"DialogResult \" +\r\n \"Dialogs \" +\r\n \"EDocuments \" +\r\n \"EDocumentVersionSource \" +\r\n \"Folders \" +\r\n \"GlobalIDs \" +\r\n \"Job \" +\r\n \"Jobs \" +\r\n \"InputValue \" +\r\n \"LookUpReference \" +\r\n \"LookUpRequisiteNames \" +\r\n \"LookUpSearch \" +\r\n \"Object \" +\r\n \"ParentComponent \" +\r\n \"Processes \" +\r\n \"References \" +\r\n \"Requisite \" +\r\n \"ReportName \" +\r\n \"Reports \" +\r\n \"Result \" +\r\n \"Scripts \" +\r\n \"Searches \" +\r\n \"SelectedAttachments \" +\r\n \"SelectedItems \" +\r\n \"SelectMode \" +\r\n \"Sender \" +\r\n \"ServerEvents \" +\r\n \"ServiceFactory \" +\r\n \"ShiftState \" +\r\n \"SubTask \" +\r\n \"SystemDialogs \" +\r\n \"Tasks \" +\r\n \"Wizard \" +\r\n \"Wizards \" +\r\n \"Work \" +\r\n \"ВызовСпособ \" +\r\n \"ИмяОтчета \" +\r\n \"РеквЗнач \";\r\n\r\n // Интерфейсы ==> type\r\n var interfaces =\r\n \"IApplication \" +\r\n \"IAccessRights \" +\r\n \"IAccountRepository \" +\r\n \"IAccountSelectionRestrictions \" +\r\n \"IAction \" +\r\n \"IActionList \" +\r\n \"IAdministrationHistoryDescription \" +\r\n \"IAnchors \" +\r\n \"IApplication \" +\r\n \"IArchiveInfo \" +\r\n \"IAttachment \" +\r\n \"IAttachmentList \" +\r\n \"ICheckListBox \" +\r\n \"ICheckPointedList \" +\r\n \"IColumn \" +\r\n \"IComponent \" +\r\n \"IComponentDescription \" +\r\n \"IComponentToken \" +\r\n \"IComponentTokenFactory \" +\r\n \"IComponentTokenInfo \" +\r\n \"ICompRecordInfo \" +\r\n \"IConnection \" +\r\n \"IContents \" +\r\n \"IControl \" +\r\n \"IControlJob \" +\r\n \"IControlJobInfo \" +\r\n \"IControlList \" +\r\n \"ICrypto \" +\r\n \"ICrypto2 \" +\r\n \"ICustomJob \" +\r\n \"ICustomJobInfo \" +\r\n \"ICustomListBox \" +\r\n \"ICustomObjectWizardStep \" +\r\n \"ICustomWork \" +\r\n \"ICustomWorkInfo \" +\r\n \"IDataSet \" +\r\n \"IDataSetAccessInfo \" +\r\n \"IDataSigner \" +\r\n \"IDateCriterion \" +\r\n \"IDateRequisite \" +\r\n \"IDateRequisiteDescription \" +\r\n \"IDateValue \" +\r\n \"IDeaAccessRights \" +\r\n \"IDeaObjectInfo \" +\r\n \"IDevelopmentComponentLock \" +\r\n \"IDialog \" +\r\n \"IDialogFactory \" +\r\n \"IDialogPickRequisiteItems \" +\r\n \"IDialogsFactory \" +\r\n \"IDICSFactory \" +\r\n \"IDocRequisite \" +\r\n \"IDocumentInfo \" +\r\n \"IDualListDialog \" +\r\n \"IECertificate \" +\r\n \"IECertificateInfo \" +\r\n \"IECertificates \" +\r\n \"IEditControl \" +\r\n \"IEditorForm \" +\r\n \"IEdmsExplorer \" +\r\n \"IEdmsObject \" +\r\n \"IEdmsObjectDescription \" +\r\n \"IEdmsObjectFactory \" +\r\n \"IEdmsObjectInfo \" +\r\n \"IEDocument \" +\r\n \"IEDocumentAccessRights \" +\r\n \"IEDocumentDescription \" +\r\n \"IEDocumentEditor \" +\r\n \"IEDocumentFactory \" +\r\n \"IEDocumentInfo \" +\r\n \"IEDocumentStorage \" +\r\n \"IEDocumentVersion \" +\r\n \"IEDocumentVersionListDialog \" +\r\n \"IEDocumentVersionSource \" +\r\n \"IEDocumentWizardStep \" +\r\n \"IEDocVerSignature \" +\r\n \"IEDocVersionState \" +\r\n \"IEnabledMode \" +\r\n \"IEncodeProvider \" +\r\n \"IEncrypter \" +\r\n \"IEvent \" +\r\n \"IEventList \" +\r\n \"IException \" +\r\n \"IExternalEvents \" +\r\n \"IExternalHandler \" +\r\n \"IFactory \" +\r\n \"IField \" +\r\n \"IFileDialog \" +\r\n \"IFolder \" +\r\n \"IFolderDescription \" +\r\n \"IFolderDialog \" +\r\n \"IFolderFactory \" +\r\n \"IFolderInfo \" +\r\n \"IForEach \" +\r\n \"IForm \" +\r\n \"IFormTitle \" +\r\n \"IFormWizardStep \" +\r\n \"IGlobalIDFactory \" +\r\n \"IGlobalIDInfo \" +\r\n \"IGrid \" +\r\n \"IHasher \" +\r\n \"IHistoryDescription \" +\r\n \"IHyperLinkControl \" +\r\n \"IImageButton \" +\r\n \"IImageControl \" +\r\n \"IInnerPanel \" +\r\n \"IInplaceHint \" +\r\n \"IIntegerCriterion \" +\r\n \"IIntegerList \" +\r\n \"IIntegerRequisite \" +\r\n \"IIntegerValue \" +\r\n \"IISBLEditorForm \" +\r\n \"IJob \" +\r\n \"IJobDescription \" +\r\n \"IJobFactory \" +\r\n \"IJobForm \" +\r\n \"IJobInfo \" +\r\n \"ILabelControl \" +\r\n \"ILargeIntegerCriterion \" +\r\n \"ILargeIntegerRequisite \" +\r\n \"ILargeIntegerValue \" +\r\n \"ILicenseInfo \" +\r\n \"ILifeCycleStage \" +\r\n \"IList \" +\r\n \"IListBox \" +\r\n \"ILocalIDInfo \" +\r\n \"ILocalization \" +\r\n \"ILock \" +\r\n \"IMemoryDataSet \" +\r\n \"IMessagingFactory \" +\r\n \"IMetadataRepository \" +\r\n \"INotice \" +\r\n \"INoticeInfo \" +\r\n \"INumericCriterion \" +\r\n \"INumericRequisite \" +\r\n \"INumericValue \" +\r\n \"IObject \" +\r\n \"IObjectDescription \" +\r\n \"IObjectImporter \" +\r\n \"IObjectInfo \" +\r\n \"IObserver \" +\r\n \"IPanelGroup \" +\r\n \"IPickCriterion \" +\r\n \"IPickProperty \" +\r\n \"IPickRequisite \" +\r\n \"IPickRequisiteDescription \" +\r\n \"IPickRequisiteItem \" +\r\n \"IPickRequisiteItems \" +\r\n \"IPickValue \" +\r\n \"IPrivilege \" +\r\n \"IPrivilegeList \" +\r\n \"IProcess \" +\r\n \"IProcessFactory \" +\r\n \"IProcessMessage \" +\r\n \"IProgress \" +\r\n \"IProperty \" +\r\n \"IPropertyChangeEvent \" +\r\n \"IQuery \" +\r\n \"IReference \" +\r\n \"IReferenceCriterion \" +\r\n \"IReferenceEnabledMode \" +\r\n \"IReferenceFactory \" +\r\n \"IReferenceHistoryDescription \" +\r\n \"IReferenceInfo \" +\r\n \"IReferenceRecordCardWizardStep \" +\r\n \"IReferenceRequisiteDescription \" +\r\n \"IReferencesFactory \" +\r\n \"IReferenceValue \" +\r\n \"IRefRequisite \" +\r\n \"IReport \" +\r\n \"IReportFactory \" +\r\n \"IRequisite \" +\r\n \"IRequisiteDescription \" +\r\n \"IRequisiteDescriptionList \" +\r\n \"IRequisiteFactory \" +\r\n \"IRichEdit \" +\r\n \"IRouteStep \" +\r\n \"IRule \" +\r\n \"IRuleList \" +\r\n \"ISchemeBlock \" +\r\n \"IScript \" +\r\n \"IScriptFactory \" +\r\n \"ISearchCriteria \" +\r\n \"ISearchCriterion \" +\r\n \"ISearchDescription \" +\r\n \"ISearchFactory \" +\r\n \"ISearchFolderInfo \" +\r\n \"ISearchForObjectDescription \" +\r\n \"ISearchResultRestrictions \" +\r\n \"ISecuredContext \" +\r\n \"ISelectDialog \" +\r\n \"IServerEvent \" +\r\n \"IServerEventFactory \" +\r\n \"IServiceDialog \" +\r\n \"IServiceFactory \" +\r\n \"ISignature \" +\r\n \"ISignProvider \" +\r\n \"ISignProvider2 \" +\r\n \"ISignProvider3 \" +\r\n \"ISimpleCriterion \" +\r\n \"IStringCriterion \" +\r\n \"IStringList \" +\r\n \"IStringRequisite \" +\r\n \"IStringRequisiteDescription \" +\r\n \"IStringValue \" +\r\n \"ISystemDialogsFactory \" +\r\n \"ISystemInfo \" +\r\n \"ITabSheet \" +\r\n \"ITask \" +\r\n \"ITaskAbortReasonInfo \" +\r\n \"ITaskCardWizardStep \" +\r\n \"ITaskDescription \" +\r\n \"ITaskFactory \" +\r\n \"ITaskInfo \" +\r\n \"ITaskRoute \" +\r\n \"ITextCriterion \" +\r\n \"ITextRequisite \" +\r\n \"ITextValue \" +\r\n \"ITreeListSelectDialog \" +\r\n \"IUser \" +\r\n \"IUserList \" +\r\n \"IValue \" +\r\n \"IView \" +\r\n \"IWebBrowserControl \" +\r\n \"IWizard \" +\r\n \"IWizardAction \" +\r\n \"IWizardFactory \" +\r\n \"IWizardFormElement \" +\r\n \"IWizardParam \" +\r\n \"IWizardPickParam \" +\r\n \"IWizardReferenceParam \" +\r\n \"IWizardStep \" +\r\n \"IWorkAccessRights \" +\r\n \"IWorkDescription \" +\r\n \"IWorkflowAskableParam \" +\r\n \"IWorkflowAskableParams \" +\r\n \"IWorkflowBlock \" +\r\n \"IWorkflowBlockResult \" +\r\n \"IWorkflowEnabledMode \" +\r\n \"IWorkflowParam \" +\r\n \"IWorkflowPickParam \" +\r\n \"IWorkflowReferenceParam \" +\r\n \"IWorkState \" +\r\n \"IWorkTreeCustomNode \" +\r\n \"IWorkTreeJobNode \" +\r\n \"IWorkTreeTaskNode \" +\r\n \"IXMLEditorForm \" +\r\n \"SBCrypto \";\r\n\r\n // built_in : встроенные или библиотечные объекты (константы, перечисления)\r\n var BUILTIN = CONSTANTS + ENUMS;\r\n\r\n // class: встроенные наборы значений, системные объекты, фабрики\r\n var CLASS = predefined_variables;\r\n\r\n // literal : примитивные типы\r\n var LITERAL = \"null true false nil \";\r\n\r\n // number : числа\r\n var NUMBERS = {\r\n className: \"number\",\r\n begin: hljs.NUMBER_RE,\r\n relevance: 0,\r\n };\r\n\r\n // string : строки\r\n var STRINGS = {\r\n className: \"string\",\r\n variants: [{ begin: '\"', end: '\"' }, { begin: \"'\", end: \"'\" }],\r\n };\r\n\r\n // Токены\r\n var DOCTAGS = {\r\n className: \"doctag\",\r\n begin: \"\\\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\\\b\",\r\n relevance: 0,\r\n };\r\n\r\n // Однострочный комментарий\r\n var ISBL_LINE_COMMENT_MODE = {\r\n className: \"comment\",\r\n begin: \"//\",\r\n end: \"$\",\r\n relevance: 0,\r\n contains: [hljs.PHRASAL_WORDS_MODE, DOCTAGS],\r\n };\r\n\r\n // Многострочный комментарий\r\n var ISBL_BLOCK_COMMENT_MODE = {\r\n className: \"comment\",\r\n begin: \"/\\\\*\",\r\n end: \"\\\\*/\",\r\n relevance: 0,\r\n contains: [hljs.PHRASAL_WORDS_MODE, DOCTAGS],\r\n };\r\n\r\n // comment : комментарии\r\n var COMMENTS = {\r\n variants: [ISBL_LINE_COMMENT_MODE, ISBL_BLOCK_COMMENT_MODE],\r\n };\r\n\r\n // keywords : ключевые слова\r\n var KEYWORDS = {\r\n keyword: KEYWORD,\r\n built_in: BUILTIN,\r\n class: CLASS,\r\n literal: LITERAL,\r\n };\r\n\r\n // methods : методы\r\n var METHODS = {\r\n begin: \"\\\\.\\\\s*\" + hljs.UNDERSCORE_IDENT_RE,\r\n keywords: KEYWORDS,\r\n relevance: 0,\r\n };\r\n\r\n // type : встроенные типы\r\n var TYPES = {\r\n className: \"type\",\r\n begin: \":[ \\\\t]*(\" + interfaces.trim().replace(/\\s/g, \"|\") + \")\",\r\n end: \"[ \\\\t]*=\",\r\n excludeEnd: true,\r\n };\r\n\r\n // variables : переменные\r\n var VARIABLES = {\r\n className: \"variable\",\r\n lexemes: UNDERSCORE_IDENT_RE,\r\n keywords: KEYWORDS,\r\n begin: UNDERSCORE_IDENT_RE,\r\n relevance: 0,\r\n contains: [TYPES, METHODS],\r\n };\r\n\r\n // Имена функций\r\n var FUNCTION_TITLE = FUNCTION_NAME_IDENT_RE + \"\\\\(\";\r\n\r\n var TITLE_MODE = {\r\n className: \"title\",\r\n lexemes: UNDERSCORE_IDENT_RE,\r\n keywords: {\r\n built_in: system_functions,\r\n },\r\n begin: FUNCTION_TITLE,\r\n end: \"\\\\(\",\r\n returnBegin: true,\r\n excludeEnd: true,\r\n };\r\n\r\n // function : функции\r\n var FUNCTIONS = {\r\n className: \"function\",\r\n begin: FUNCTION_TITLE,\r\n end: \"\\\\)$\",\r\n returnBegin: true,\r\n lexemes: UNDERSCORE_IDENT_RE,\r\n keywords: KEYWORDS,\r\n illegal: \"[\\\\[\\\\]\\\\|\\\\$\\\\?%,~#@]\",\r\n contains: [TITLE_MODE, METHODS, VARIABLES, STRINGS, NUMBERS, COMMENTS],\r\n };\r\n\r\n return {\r\n aliases: [\"isbl\"],\r\n case_insensitive: true,\r\n lexemes: UNDERSCORE_IDENT_RE,\r\n keywords: KEYWORDS,\r\n illegal: \"\\\\$|\\\\?|%|,|;$|~|#|@|)?';\r\n var KEYWORDS =\r\n 'false synchronized int abstract float private char boolean var static null if const ' +\r\n 'for true while long strictfp finally protected import native final void ' +\r\n 'enum else break transient catch instanceof byte super volatile case assert short ' +\r\n 'package default double public try this switch continue throws protected public private ' +\r\n 'module requires exports do';\r\n\r\n // https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html\r\n var JAVA_NUMBER_RE = '\\\\b' +\r\n '(' +\r\n '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...\r\n '|' +\r\n '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...\r\n '|' +\r\n '(' +\r\n '([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?' +\r\n '|' +\r\n '\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)' +\r\n ')' +\r\n '([eE][-+]?\\\\d+)?' + // octal, decimal, float\r\n ')' +\r\n '[lLfF]?';\r\n var JAVA_NUMBER_MODE = {\r\n className: 'number',\r\n begin: JAVA_NUMBER_RE,\r\n relevance: 0\r\n };\r\n\r\n return {\r\n aliases: ['jsp'],\r\n keywords: KEYWORDS,\r\n illegal: /<\\/|#/,\r\n contains: [\r\n hljs.COMMENT(\r\n '/\\\\*\\\\*',\r\n '\\\\*/',\r\n {\r\n relevance : 0,\r\n contains : [\r\n {\r\n // eat up @'s in emails to prevent them to be recognized as doctags\r\n begin: /\\w+@/, relevance: 0\r\n },\r\n {\r\n className : 'doctag',\r\n begin : '@[A-Za-z]+'\r\n }\r\n ]\r\n }\r\n ),\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'class',\r\n beginKeywords: 'class interface', end: /[{;=]/, excludeEnd: true,\r\n keywords: 'class interface',\r\n illegal: /[:\"\\[\\]]/,\r\n contains: [\r\n {beginKeywords: 'extends implements'},\r\n hljs.UNDERSCORE_TITLE_MODE\r\n ]\r\n },\r\n {\r\n // Expression keywords prevent 'keyword Name(...)' from being\r\n // recognized as a function definition\r\n beginKeywords: 'new throw return else',\r\n relevance: 0\r\n },\r\n {\r\n className: 'function',\r\n begin: '(' + GENERIC_IDENT_RE + '\\\\s+)+' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true, end: /[{;=]/,\r\n excludeEnd: true,\r\n keywords: KEYWORDS,\r\n contains: [\r\n {\r\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\r\n relevance: 0,\r\n contains: [hljs.UNDERSCORE_TITLE_MODE]\r\n },\r\n {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n keywords: KEYWORDS,\r\n relevance: 0,\r\n contains: [\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n },\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n },\r\n JAVA_NUMBER_MODE,\r\n {\r\n className: 'meta', begin: '@[A-Za-z]+'\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var FRAGMENT = {\r\n begin: '<>',\r\n end: ''\r\n };\r\n var XML_TAG = {\r\n begin: /<[A-Za-z0-9\\\\._:-]+/,\r\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/\r\n };\r\n var IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\r\n var KEYWORDS = {\r\n keyword:\r\n 'in of if for while finally var new function do return void else break catch ' +\r\n 'instanceof with throw case default try this switch continue typeof delete ' +\r\n 'let yield const export super debugger as async await static ' +\r\n // ECMAScript 6 modules import\r\n 'import from as'\r\n ,\r\n literal:\r\n 'true false null undefined NaN Infinity',\r\n built_in:\r\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\r\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\r\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\r\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\r\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\r\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\r\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\r\n 'Promise'\r\n };\r\n var NUMBER = {\r\n className: 'number',\r\n variants: [\r\n { begin: '\\\\b(0[bB][01]+)n?' },\r\n { begin: '\\\\b(0[oO][0-7]+)n?' },\r\n { begin: hljs.C_NUMBER_RE + 'n?' }\r\n ],\r\n relevance: 0\r\n };\r\n var SUBST = {\r\n className: 'subst',\r\n begin: '\\\\$\\\\{', end: '\\\\}',\r\n keywords: KEYWORDS,\r\n contains: [] // defined later\r\n };\r\n var HTML_TEMPLATE = {\r\n begin: 'html`', end: '',\r\n starts: {\r\n end: '`', returnEnd: false,\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n SUBST\r\n ],\r\n subLanguage: 'xml',\r\n }\r\n };\r\n var CSS_TEMPLATE = {\r\n begin: 'css`', end: '',\r\n starts: {\r\n end: '`', returnEnd: false,\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n SUBST\r\n ],\r\n subLanguage: 'css',\r\n }\r\n };\r\n var TEMPLATE_STRING = {\r\n className: 'string',\r\n begin: '`', end: '`',\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n SUBST\r\n ]\r\n };\r\n SUBST.contains = [\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n HTML_TEMPLATE,\r\n CSS_TEMPLATE,\r\n TEMPLATE_STRING,\r\n NUMBER,\r\n hljs.REGEXP_MODE\r\n ];\r\n var PARAMS_CONTAINS = SUBST.contains.concat([\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.C_LINE_COMMENT_MODE\r\n ]);\r\n\r\n return {\r\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\r\n keywords: KEYWORDS,\r\n contains: [\r\n {\r\n className: 'meta',\r\n relevance: 10,\r\n begin: /^\\s*['\"]use (strict|asm)['\"]/\r\n },\r\n {\r\n className: 'meta',\r\n begin: /^#!/, end: /$/\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n HTML_TEMPLATE,\r\n CSS_TEMPLATE,\r\n TEMPLATE_STRING,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.COMMENT(\r\n '/\\\\*\\\\*',\r\n '\\\\*/',\r\n {\r\n relevance : 0,\r\n contains : [\r\n {\r\n className : 'doctag',\r\n begin : '@[A-Za-z]+',\r\n contains : [\r\n {\r\n className: 'type',\r\n begin: '\\\\{',\r\n end: '\\\\}',\r\n relevance: 0\r\n },\r\n {\r\n className: 'variable',\r\n begin: IDENT_RE + '(?=\\\\s*(-)|$)',\r\n endsParent: true,\r\n relevance: 0\r\n },\r\n // eat spaces (not newlines) so we can find\r\n // types or variables\r\n {\r\n begin: /(?=[^\\n])\\s/,\r\n relevance: 0\r\n },\r\n ]\r\n }\r\n ]\r\n }\r\n ),\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n NUMBER,\r\n { // object attr container\r\n begin: /[{,\\n]\\s*/, relevance: 0,\r\n contains: [\r\n {\r\n begin: IDENT_RE + '\\\\s*:', returnBegin: true,\r\n relevance: 0,\r\n contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]\r\n }\r\n ]\r\n },\r\n { // \"value\" container\r\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\r\n keywords: 'return throw case',\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.REGEXP_MODE,\r\n {\r\n className: 'function',\r\n begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>', returnBegin: true,\r\n end: '\\\\s*=>',\r\n contains: [\r\n {\r\n className: 'params',\r\n variants: [\r\n {\r\n begin: IDENT_RE\r\n },\r\n {\r\n begin: /\\(\\s*\\)/,\r\n },\r\n {\r\n begin: /\\(/, end: /\\)/,\r\n excludeBegin: true, excludeEnd: true,\r\n keywords: KEYWORDS,\r\n contains: PARAMS_CONTAINS\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n className: '',\r\n begin: /\\s/,\r\n end: /\\s*/,\r\n skip: true,\r\n },\r\n { // JSX\r\n variants: [\r\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\r\n { begin: XML_TAG.begin, end: XML_TAG.end }\r\n ],\r\n subLanguage: 'xml',\r\n contains: [\r\n {\r\n begin: XML_TAG.begin, end: XML_TAG.end, skip: true,\r\n contains: ['self']\r\n }\r\n ]\r\n },\r\n ],\r\n relevance: 0\r\n },\r\n {\r\n className: 'function',\r\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),\r\n {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n contains: PARAMS_CONTAINS\r\n }\r\n ],\r\n illegal: /\\[|%/\r\n },\r\n {\r\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\r\n },\r\n hljs.METHOD_GUARD,\r\n { // ES6 class\r\n className: 'class',\r\n beginKeywords: 'class', end: /[{;=]/, excludeEnd: true,\r\n illegal: /[:\"\\[\\]]/,\r\n contains: [\r\n {beginKeywords: 'extends'},\r\n hljs.UNDERSCORE_TITLE_MODE\r\n ]\r\n },\r\n {\r\n beginKeywords: 'constructor get set', end: /\\{/, excludeEnd: true\r\n }\r\n ],\r\n illegal: /#(?!!)/\r\n };\r\n};","module.exports = function (hljs) {\r\n var PARAM = {\r\n begin: /[\\w-]+ *=/, returnBegin: true,\r\n relevance: 0,\r\n contains: [{className: 'attr', begin: /[\\w-]+/}]\r\n };\r\n var PARAMSBLOCK = {\r\n className: 'params',\r\n begin: /\\(/,\r\n end: /\\)/,\r\n contains: [PARAM],\r\n relevance : 0\r\n };\r\n var OPERATION = {\r\n className: 'function',\r\n begin: /:[\\w\\-.]+/,\r\n relevance: 0\r\n };\r\n var PATH = {\r\n className: 'string',\r\n begin: /\\B(([\\/.])[\\w\\-.\\/=]+)+/,\r\n };\r\n var COMMAND_PARAMS = {\r\n className: 'params',\r\n begin: /--[\\w\\-=\\/]+/,\r\n };\r\n return {\r\n aliases: ['wildfly-cli'],\r\n lexemes: '[a-z\\-]+',\r\n keywords: {\r\n keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy ' +\r\n 'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls ' +\r\n 'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias ' +\r\n 'undeploy unset version xa-data-source', // module\r\n literal: 'true false'\r\n },\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n COMMAND_PARAMS,\r\n OPERATION,\r\n PATH,\r\n PARAMSBLOCK\r\n ]\r\n }\r\n};","module.exports = function(hljs) {\r\n var LITERALS = {literal: 'true false null'};\r\n var ALLOWED_COMMENTS = [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n var TYPES = [\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE\r\n ];\r\n var VALUE_CONTAINER = {\r\n end: ',', endsWithParent: true, excludeEnd: true,\r\n contains: TYPES,\r\n keywords: LITERALS\r\n };\r\n var OBJECT = {\r\n begin: '{', end: '}',\r\n contains: [\r\n {\r\n className: 'attr',\r\n begin: /\"/, end: /\"/,\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n illegal: '\\\\n',\r\n },\r\n hljs.inherit(VALUE_CONTAINER, {begin: /:/})\r\n ].concat(ALLOWED_COMMENTS),\r\n illegal: '\\\\S'\r\n };\r\n var ARRAY = {\r\n begin: '\\\\[', end: '\\\\]',\r\n contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents\r\n illegal: '\\\\S'\r\n };\r\n TYPES.push(OBJECT, ARRAY);\r\n ALLOWED_COMMENTS.forEach(function(rule) {\r\n TYPES.push(rule)\r\n })\r\n return {\r\n contains: TYPES,\r\n keywords: LITERALS,\r\n illegal: '\\\\S'\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: /^julia>/,\r\n relevance: 10,\r\n starts: {\r\n // end the highlighting if we are on a new line and the line does not have at\r\n // least six spaces in the beginning\r\n end: /^(?![ ]{6})/,\r\n subLanguage: 'julia'\r\n },\r\n // jldoctest Markdown blocks are used in the Julia manual and package docs indicate\r\n // code snippets that should be verified when the documentation is built. They can be\r\n // either REPL-like or script-like, but are usually REPL-like and therefore we apply\r\n // julia-repl highlighting to them. More information can be found in Documenter's\r\n // manual: https://juliadocs.github.io/Documenter.jl/latest/man/doctests.html\r\n aliases: ['jldoctest']\r\n }\r\n ]\r\n }\r\n};","module.exports = function(hljs) {\r\n // Since there are numerous special names in Julia, it is too much trouble\r\n // to maintain them by hand. Hence these names (i.e. keywords, literals and\r\n // built-ins) are automatically generated from Julia v0.6 itself through\r\n // the following scripts for each.\r\n\r\n var KEYWORDS = {\r\n // # keyword generator, multi-word keywords handled manually below\r\n // foreach(println, [\"in\", \"isa\", \"where\"])\r\n // for kw in Base.REPLCompletions.complete_keyword(\"\")\r\n // if !(contains(kw, \" \") || kw == \"struct\")\r\n // println(kw)\r\n // end\r\n // end\r\n keyword:\r\n 'in isa where ' +\r\n 'baremodule begin break catch ccall const continue do else elseif end export false finally for function ' +\r\n 'global if import importall let local macro module quote return true try using while ' +\r\n // legacy, to be deprecated in the next release\r\n 'type immutable abstract bitstype typealias ',\r\n\r\n // # literal generator\r\n // println(\"true\")\r\n // println(\"false\")\r\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\r\n // try\r\n // v = eval(Symbol(name))\r\n // if !(v isa Function || v isa Type || v isa TypeVar || v isa Module || v isa Colon)\r\n // println(name)\r\n // end\r\n // end\r\n // end\r\n literal:\r\n 'true false ' +\r\n 'ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort ' +\r\n 'NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway ' +\r\n 'RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im ' +\r\n 'nothing pi γ π φ ',\r\n\r\n // # built_in generator:\r\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\r\n // try\r\n // v = eval(Symbol(name))\r\n // if v isa Type || v isa TypeVar\r\n // println(name)\r\n // end\r\n // end\r\n // end\r\n built_in:\r\n 'ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet ' +\r\n 'AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat ' +\r\n 'AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal '+\r\n 'BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException ' +\r\n 'CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager ' +\r\n 'Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ' +\r\n 'ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t ' +\r\n 'Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict ' +\r\n 'DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ' +\r\n 'ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function ' +\r\n 'Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear ' +\r\n 'IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException ' +\r\n 'InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix ' +\r\n 'MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict ' +\r\n 'OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe ' +\r\n 'PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ' +\r\n 'ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode ' +\r\n 'RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed ' +\r\n 'SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange ' +\r\n 'StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal ' +\r\n 'Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry ' +\r\n 'TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError ' +\r\n 'UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector ' +\r\n 'VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool '\r\n };\r\n\r\n // ref: http://julia.readthedocs.org/en/latest/manual/variables/#allowed-variable-names\r\n var VARIABLE_NAME_RE = '[A-Za-z_\\\\u00A1-\\\\uFFFF][A-Za-z_0-9\\\\u00A1-\\\\uFFFF]*';\r\n\r\n // placeholder for recursive self-reference\r\n var DEFAULT = {\r\n lexemes: VARIABLE_NAME_RE, keywords: KEYWORDS, illegal: /<\\//\r\n };\r\n\r\n // ref: http://julia.readthedocs.org/en/latest/manual/integers-and-floating-point-numbers/\r\n var NUMBER = {\r\n className: 'number',\r\n // supported numeric literals:\r\n // * binary literal (e.g. 0x10)\r\n // * octal literal (e.g. 0o76543210)\r\n // * hexadecimal literal (e.g. 0xfedcba876543210)\r\n // * hexadecimal floating point literal (e.g. 0x1p0, 0x1.2p2)\r\n // * decimal literal (e.g. 9876543210, 100_000_000)\r\n // * floating pointe literal (e.g. 1.2, 1.2f, .2, 1., 1.2e10, 1.2e-10)\r\n begin: /(\\b0x[\\d_]*(\\.[\\d_]*)?|0x\\.\\d[\\d_]*)p[-+]?\\d+|\\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\\b\\d[\\d_]*(\\.[\\d_]*)?|\\.\\d[\\d_]*)([eEfF][-+]?\\d+)?/,\r\n relevance: 0\r\n };\r\n\r\n var CHAR = {\r\n className: 'string',\r\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\r\n };\r\n\r\n var INTERPOLATION = {\r\n className: 'subst',\r\n begin: /\\$\\(/, end: /\\)/,\r\n keywords: KEYWORDS\r\n };\r\n\r\n var INTERPOLATED_VARIABLE = {\r\n className: 'variable',\r\n begin: '\\\\$' + VARIABLE_NAME_RE\r\n };\r\n\r\n // TODO: neatly escape normal code in string literal\r\n var STRING = {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\r\n variants: [\r\n { begin: /\\w*\"\"\"/, end: /\"\"\"\\w*/, relevance: 10 },\r\n { begin: /\\w*\"/, end: /\"\\w*/ }\r\n ]\r\n };\r\n\r\n var COMMAND = {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\r\n begin: '`', end: '`'\r\n };\r\n\r\n var MACROCALL = {\r\n className: 'meta',\r\n begin: '@' + VARIABLE_NAME_RE\r\n };\r\n\r\n var COMMENT = {\r\n className: 'comment',\r\n variants: [\r\n { begin: '#=', end: '=#', relevance: 10 },\r\n { begin: '#', end: '$' }\r\n ]\r\n };\r\n\r\n DEFAULT.contains = [\r\n NUMBER,\r\n CHAR,\r\n STRING,\r\n COMMAND,\r\n MACROCALL,\r\n COMMENT,\r\n hljs.HASH_COMMENT_MODE,\r\n {\r\n className: 'keyword',\r\n begin:\r\n '\\\\b(((abstract|primitive)\\\\s+)type|(mutable\\\\s+)?struct)\\\\b'\r\n },\r\n {begin: /<:/} // relevance booster\r\n ];\r\n INTERPOLATION.contains = DEFAULT.contains;\r\n\r\n return DEFAULT;\r\n};","module.exports = function(hljs) {\r\n var KEYWORDS = {\r\n keyword:\r\n 'abstract as val var vararg get set class object open private protected public noinline ' +\r\n 'crossinline dynamic final enum if else do while for when throw try catch finally ' +\r\n 'import package is in fun override companion reified inline lateinit init ' +\r\n 'interface annotation data sealed internal infix operator out by constructor super ' +\r\n 'tailrec where const inner suspend typealias external expect actual ' +\r\n // to be deleted soon\r\n 'trait volatile transient native default',\r\n built_in:\r\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\r\n literal:\r\n 'true false null'\r\n };\r\n var KEYWORDS_WITH_LABEL = {\r\n className: 'keyword',\r\n begin: /\\b(break|continue|return|this)\\b/,\r\n starts: {\r\n contains: [\r\n {\r\n className: 'symbol',\r\n begin: /@\\w+/\r\n }\r\n ]\r\n }\r\n };\r\n var LABEL = {\r\n className: 'symbol', begin: hljs.UNDERSCORE_IDENT_RE + '@'\r\n };\r\n\r\n // for string templates\r\n var SUBST = {\r\n className: 'subst',\r\n begin: '\\\\${', end: '}', contains: [hljs.C_NUMBER_MODE]\r\n };\r\n var VARIABLE = {\r\n className: 'variable', begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE\r\n };\r\n var STRING = {\r\n className: 'string',\r\n variants: [\r\n {\r\n begin: '\"\"\"', end: '\"\"\"(?=[^\"])',\r\n contains: [VARIABLE, SUBST]\r\n },\r\n // Can't use built-in modes easily, as we want to use STRING in the meta\r\n // context as 'meta-string' and there's no syntax to remove explicitly set\r\n // classNames in built-in modes.\r\n {\r\n begin: '\\'', end: '\\'',\r\n illegal: /\\n/,\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n {\r\n begin: '\"', end: '\"',\r\n illegal: /\\n/,\r\n contains: [hljs.BACKSLASH_ESCAPE, VARIABLE, SUBST]\r\n }\r\n ]\r\n };\r\n SUBST.contains.push(STRING)\r\n\r\n var ANNOTATION_USE_SITE = {\r\n className: 'meta', begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\r\n };\r\n var ANNOTATION = {\r\n className: 'meta', begin: '@' + hljs.UNDERSCORE_IDENT_RE,\r\n contains: [\r\n {\r\n begin: /\\(/, end: /\\)/,\r\n contains: [\r\n hljs.inherit(STRING, {className: 'meta-string'})\r\n ]\r\n }\r\n ]\r\n };\r\n\r\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\r\n // According to the doc above, the number mode of kotlin is the same as java 8,\r\n // so the code below is copied from java.js\r\n var KOTLIN_NUMBER_RE = '\\\\b' +\r\n '(' +\r\n '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...\r\n '|' +\r\n '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...\r\n '|' +\r\n '(' +\r\n '([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?' +\r\n '|' +\r\n '\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)' +\r\n ')' +\r\n '([eE][-+]?\\\\d+)?' + // octal, decimal, float\r\n ')' +\r\n '[lLfF]?';\r\n var KOTLIN_NUMBER_MODE = {\r\n className: 'number',\r\n begin: KOTLIN_NUMBER_RE,\r\n relevance: 0\r\n };\r\n var KOTLIN_NESTED_COMMENT = hljs.COMMENT(\r\n '/\\\\*', '\\\\*/',\r\n { contains: [ hljs.C_BLOCK_COMMENT_MODE ] }\r\n );\r\n var KOTLIN_PAREN_TYPE = {\r\n variants: [\r\n\t { className: 'type',\r\n\t begin: hljs.UNDERSCORE_IDENT_RE\r\n\t },\r\n\t { begin: /\\(/, end: /\\)/,\r\n\t contains: [] //defined later\r\n\t }\r\n\t]\r\n };\r\n var KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE;\r\n KOTLIN_PAREN_TYPE2.variants[1].contains = [ KOTLIN_PAREN_TYPE ];\r\n KOTLIN_PAREN_TYPE.variants[1].contains = [ KOTLIN_PAREN_TYPE2 ];\r\n\r\n return {\r\n aliases: ['kt'],\r\n keywords: KEYWORDS,\r\n contains : [\r\n hljs.COMMENT(\r\n '/\\\\*\\\\*',\r\n '\\\\*/',\r\n {\r\n relevance : 0,\r\n contains : [{\r\n className : 'doctag',\r\n begin : '@[A-Za-z]+'\r\n }]\r\n }\r\n ),\r\n hljs.C_LINE_COMMENT_MODE,\r\n KOTLIN_NESTED_COMMENT,\r\n KEYWORDS_WITH_LABEL,\r\n LABEL,\r\n ANNOTATION_USE_SITE,\r\n ANNOTATION,\r\n {\r\n className: 'function',\r\n beginKeywords: 'fun', end: '[(]|$',\r\n returnBegin: true,\r\n excludeEnd: true,\r\n keywords: KEYWORDS,\r\n illegal: /fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=/,\r\n relevance: 5,\r\n contains: [\r\n {\r\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\r\n relevance: 0,\r\n contains: [hljs.UNDERSCORE_TITLE_MODE]\r\n },\r\n {\r\n className: 'type',\r\n begin: //, keywords: 'reified',\r\n relevance: 0\r\n },\r\n {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n endsParent: true,\r\n keywords: KEYWORDS,\r\n relevance: 0,\r\n contains: [\r\n {\r\n begin: /:/, end: /[=,\\/]/, endsWithParent: true,\r\n contains: [\r\n KOTLIN_PAREN_TYPE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n KOTLIN_NESTED_COMMENT\r\n ],\r\n relevance: 0\r\n },\r\n hljs.C_LINE_COMMENT_MODE,\r\n KOTLIN_NESTED_COMMENT,\r\n ANNOTATION_USE_SITE,\r\n ANNOTATION,\r\n STRING,\r\n hljs.C_NUMBER_MODE\r\n ]\r\n },\r\n KOTLIN_NESTED_COMMENT\r\n ]\r\n },\r\n {\r\n className: 'class',\r\n beginKeywords: 'class interface trait', end: /[:\\{(]|$/, // remove 'trait' when removed from KEYWORDS\r\n excludeEnd: true,\r\n illegal: 'extends implements',\r\n contains: [\r\n {beginKeywords: 'public protected internal private constructor'},\r\n hljs.UNDERSCORE_TITLE_MODE,\r\n {\r\n className: 'type',\r\n begin: //, excludeBegin: true, excludeEnd: true,\r\n relevance: 0\r\n },\r\n {\r\n className: 'type',\r\n begin: /[,:]\\s*/, end: /[<\\(,]|$/, excludeBegin: true, returnEnd: true\r\n },\r\n ANNOTATION_USE_SITE,\r\n ANNOTATION\r\n ]\r\n },\r\n STRING,\r\n {\r\n className: 'meta',\r\n begin: \"^#!/usr/bin/env\", end: '$',\r\n illegal: '\\n'\r\n },\r\n KOTLIN_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var LASSO_IDENT_RE = '[a-zA-Z_][\\\\w.]*';\r\n var LASSO_ANGLE_RE = '<\\\\?(lasso(script)?|=)';\r\n var LASSO_CLOSE_RE = '\\\\]|\\\\?>';\r\n var LASSO_KEYWORDS = {\r\n literal:\r\n 'true false none minimal full all void and or not ' +\r\n 'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',\r\n built_in:\r\n 'array date decimal duration integer map pair string tag xml null ' +\r\n 'boolean bytes keyword list locale queue set stack staticarray ' +\r\n 'local var variable global data self inherited currentcapture givenblock',\r\n keyword:\r\n 'cache database_names database_schemanames database_tablenames ' +\r\n 'define_tag define_type email_batch encode_set html_comment handle ' +\r\n 'handle_error header if inline iterate ljax_target link ' +\r\n 'link_currentaction link_currentgroup link_currentrecord link_detail ' +\r\n 'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' +\r\n 'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' +\r\n 'loop namespace_using output_none portal private protect records ' +\r\n 'referer referrer repeating resultset rows search_args ' +\r\n 'search_arguments select sort_args sort_arguments thread_atomic ' +\r\n 'value_list while abort case else fail_if fail_ifnot fail if_empty ' +\r\n 'if_false if_null if_true loop_abort loop_continue loop_count params ' +\r\n 'params_up return return_value run_children soap_definetag ' +\r\n 'soap_lastrequest soap_lastresponse tag_name ascending average by ' +\r\n 'define descending do equals frozen group handle_failure import in ' +\r\n 'into join let match max min on order parent protected provide public ' +\r\n 'require returnhome skip split_thread sum take thread to trait type ' +\r\n 'where with yield yieldhome'\r\n };\r\n var HTML_COMMENT = hljs.COMMENT(\r\n '',\r\n {\r\n relevance: 0\r\n }\r\n );\r\n var LASSO_NOPROCESS = {\r\n className: 'meta',\r\n begin: '\\\\[noprocess\\\\]',\r\n starts: {\r\n end: '\\\\[/noprocess\\\\]',\r\n returnEnd: true,\r\n contains: [HTML_COMMENT]\r\n }\r\n };\r\n var LASSO_START = {\r\n className: 'meta',\r\n begin: '\\\\[/noprocess|' + LASSO_ANGLE_RE\r\n };\r\n var LASSO_DATAMEMBER = {\r\n className: 'symbol',\r\n begin: '\\'' + LASSO_IDENT_RE + '\\''\r\n };\r\n var LASSO_CODE = [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\\\b'}),\r\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\r\n {\r\n className: 'string',\r\n begin: '`', end: '`'\r\n },\r\n { // variables\r\n variants: [\r\n {\r\n begin: '[#$]' + LASSO_IDENT_RE\r\n },\r\n {\r\n begin: '#', end: '\\\\d+',\r\n illegal: '\\\\W'\r\n }\r\n ]\r\n },\r\n {\r\n className: 'type',\r\n begin: '::\\\\s*', end: LASSO_IDENT_RE,\r\n illegal: '\\\\W'\r\n },\r\n {\r\n className: 'params',\r\n variants: [\r\n {\r\n begin: '-(?!infinity)' + LASSO_IDENT_RE,\r\n relevance: 0\r\n },\r\n {\r\n begin: '(\\\\.\\\\.\\\\.)'\r\n }\r\n ]\r\n },\r\n {\r\n begin: /(->|\\.)\\s*/,\r\n relevance: 0,\r\n contains: [LASSO_DATAMEMBER]\r\n },\r\n {\r\n className: 'class',\r\n beginKeywords: 'define',\r\n returnEnd: true, end: '\\\\(|=>',\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)'})\r\n ]\r\n }\r\n ];\r\n return {\r\n aliases: ['ls', 'lassoscript'],\r\n case_insensitive: true,\r\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\r\n keywords: LASSO_KEYWORDS,\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: LASSO_CLOSE_RE,\r\n relevance: 0,\r\n starts: { // markup\r\n end: '\\\\[|' + LASSO_ANGLE_RE,\r\n returnEnd: true,\r\n relevance: 0,\r\n contains: [HTML_COMMENT]\r\n }\r\n },\r\n LASSO_NOPROCESS,\r\n LASSO_START,\r\n {\r\n className: 'meta',\r\n begin: '\\\\[no_square_brackets',\r\n starts: {\r\n end: '\\\\[/no_square_brackets\\\\]', // not implemented in the language\r\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\r\n keywords: LASSO_KEYWORDS,\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: LASSO_CLOSE_RE,\r\n relevance: 0,\r\n starts: {\r\n end: '\\\\[noprocess\\\\]|' + LASSO_ANGLE_RE,\r\n returnEnd: true,\r\n contains: [HTML_COMMENT]\r\n }\r\n },\r\n LASSO_NOPROCESS,\r\n LASSO_START\r\n ].concat(LASSO_CODE)\r\n }\r\n },\r\n {\r\n className: 'meta',\r\n begin: '\\\\[',\r\n relevance: 0\r\n },\r\n {\r\n className: 'meta',\r\n begin: '^#!', end:'lasso9$',\r\n relevance: 10\r\n }\r\n ].concat(LASSO_CODE)\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n contains: [\r\n {\r\n className: 'attribute',\r\n begin: '^dn', end: ': ', excludeEnd: true,\r\n starts: {end: '$', relevance: 0},\r\n relevance: 10\r\n },\r\n {\r\n className: 'attribute',\r\n begin: '^\\\\w', end: ': ', excludeEnd: true,\r\n starts: {end: '$', relevance: 0}\r\n },\r\n {\r\n className: 'literal',\r\n begin: '^-', end: '$'\r\n },\r\n hljs.HASH_COMMENT_MODE\r\n ]\r\n };\r\n};","module.exports = function (hljs) {\r\n return {\r\n contains: [\r\n {\r\n className: 'function',\r\n begin: '#+' + '[A-Za-z_0-9]*' + '\\\\(',\r\n end:' {',\r\n returnBegin: true,\r\n excludeEnd: true,\r\n contains : [\r\n {\r\n className: 'keyword',\r\n begin: '#+'\r\n },\r\n {\r\n className: 'title',\r\n begin: '[A-Za-z_][A-Za-z_0-9]*'\r\n },\r\n {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)',\r\n endsParent: true,\r\n contains: [\r\n {\r\n className: 'string',\r\n begin: '\"',\r\n end: '\"'\r\n },\r\n {\r\n className: 'variable',\r\n begin: '[A-Za-z_][A-Za-z_0-9]*'\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var IDENT_RE = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\r\n var INTERP_IDENT_RE = '(' + IDENT_RE + '|@{' + IDENT_RE + '})';\r\n\r\n /* Generic Modes */\r\n\r\n var RULES = [], VALUE = []; // forward def. for recursive modes\r\n\r\n var STRING_MODE = function(c) { return {\r\n // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\r\n className: 'string', begin: '~?' + c + '.*?' + c\r\n };};\r\n\r\n var IDENT_MODE = function(name, begin, relevance) { return {\r\n className: name, begin: begin, relevance: relevance\r\n };};\r\n\r\n var PARENS_MODE = {\r\n // used only to properly balance nested parens inside mixin call, def. arg list\r\n begin: '\\\\(', end: '\\\\)', contains: VALUE, relevance: 0\r\n };\r\n\r\n // generic Less highlighter (used almost everywhere except selectors):\r\n VALUE.push(\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n STRING_MODE(\"'\"),\r\n STRING_MODE('\"'),\r\n hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\r\n {\r\n begin: '(url|data-uri)\\\\(',\r\n starts: {className: 'string', end: '[\\\\)\\\\n]', excludeEnd: true}\r\n },\r\n IDENT_MODE('number', '#[0-9A-Fa-f]+\\\\b'),\r\n PARENS_MODE,\r\n IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\r\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'),\r\n IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\r\n { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\r\n className: 'attribute', begin: IDENT_RE + '\\\\s*:', end: ':', returnBegin: true, excludeEnd: true\r\n },\r\n {\r\n className: 'meta',\r\n begin: '!important'\r\n }\r\n );\r\n\r\n var VALUE_WITH_RULESETS = VALUE.concat({\r\n begin: '{', end: '}', contains: RULES\r\n });\r\n\r\n var MIXIN_GUARD_MODE = {\r\n beginKeywords: 'when', endsWithParent: true,\r\n contains: [{beginKeywords: 'and not'}].concat(VALUE) // using this form to override VALUE’s 'function' match\r\n };\r\n\r\n /* Rule-Level Modes */\r\n\r\n var RULE_MODE = {\r\n begin: INTERP_IDENT_RE + '\\\\s*:', returnBegin: true, end: '[;}]',\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'attribute',\r\n begin: INTERP_IDENT_RE, end: ':', excludeEnd: true,\r\n starts: {\r\n endsWithParent: true, illegal: '[<=$]',\r\n relevance: 0,\r\n contains: VALUE\r\n }\r\n }\r\n ]\r\n };\r\n\r\n var AT_RULE_MODE = {\r\n className: 'keyword',\r\n begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\r\n starts: {end: '[;{}]', returnEnd: true, contains: VALUE, relevance: 0}\r\n };\r\n\r\n // variable definitions and calls\r\n var VAR_RULE_MODE = {\r\n className: 'variable',\r\n variants: [\r\n // using more strict pattern for higher relevance to increase chances of Less detection.\r\n // this is *the only* Less specific statement used in most of the sources, so...\r\n // (we’ll still often loose to the css-parser unless there's '//' comment,\r\n // simply because 1 variable just can't beat 99 properties :)\r\n {begin: '@' + IDENT_RE + '\\\\s*:', relevance: 15},\r\n {begin: '@' + IDENT_RE}\r\n ],\r\n starts: {end: '[;}]', returnEnd: true, contains: VALUE_WITH_RULESETS}\r\n };\r\n\r\n var SELECTOR_MODE = {\r\n // first parse unambiguous selectors (i.e. those not starting with tag)\r\n // then fall into the scary lookahead-discriminator variant.\r\n // this mode also handles mixin definitions and calls\r\n variants: [{\r\n begin: '[\\\\.#:&\\\\[>]', end: '[;{}]' // mixin calls end with ';'\r\n }, {\r\n begin: INTERP_IDENT_RE, end: '{'\r\n }],\r\n returnBegin: true,\r\n returnEnd: true,\r\n illegal: '[<=\\'$\"]',\r\n relevance: 0,\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n MIXIN_GUARD_MODE,\r\n IDENT_MODE('keyword', 'all\\\\b'),\r\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'), // otherwise it’s identified as tag\r\n IDENT_MODE('selector-tag', INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes \"tags\"\r\n IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\r\n IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\r\n IDENT_MODE('selector-tag', '&', 0),\r\n {className: 'selector-attr', begin: '\\\\[', end: '\\\\]'},\r\n {className: 'selector-pseudo', begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},\r\n {begin: '\\\\(', end: '\\\\)', contains: VALUE_WITH_RULESETS}, // argument list of parametric mixins\r\n {begin: '!important'} // eat !important after mixin call or it will be colored as tag\r\n ]\r\n };\r\n\r\n RULES.push(\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n AT_RULE_MODE,\r\n VAR_RULE_MODE,\r\n RULE_MODE,\r\n SELECTOR_MODE\r\n );\r\n\r\n return {\r\n case_insensitive: true,\r\n illegal: '[=>\\'/<($\"]',\r\n contains: RULES\r\n };\r\n};","module.exports = function(hljs) {\r\n var LISP_IDENT_RE = '[a-zA-Z_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*';\r\n var MEC_RE = '\\\\|[^]*?\\\\|';\r\n var LISP_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|\\\\-)?\\\\d+)?';\r\n var SHEBANG = {\r\n className: 'meta',\r\n begin: '^#!', end: '$'\r\n };\r\n var LITERAL = {\r\n className: 'literal',\r\n begin: '\\\\b(t{1}|nil)\\\\b'\r\n };\r\n var NUMBER = {\r\n className: 'number',\r\n variants: [\r\n {begin: LISP_SIMPLE_NUMBER_RE, relevance: 0},\r\n {begin: '#(b|B)[0-1]+(/[0-1]+)?'},\r\n {begin: '#(o|O)[0-7]+(/[0-7]+)?'},\r\n {begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?'},\r\n {begin: '#(c|C)\\\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\\\)'}\r\n ]\r\n };\r\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\r\n var COMMENT = hljs.COMMENT(\r\n ';', '$',\r\n {\r\n relevance: 0\r\n }\r\n );\r\n var VARIABLE = {\r\n begin: '\\\\*', end: '\\\\*'\r\n };\r\n var KEYWORD = {\r\n className: 'symbol',\r\n begin: '[:&]' + LISP_IDENT_RE\r\n };\r\n var IDENT = {\r\n begin: LISP_IDENT_RE,\r\n relevance: 0\r\n };\r\n var MEC = {\r\n begin: MEC_RE\r\n };\r\n var QUOTED_LIST = {\r\n begin: '\\\\(', end: '\\\\)',\r\n contains: ['self', LITERAL, STRING, NUMBER, IDENT]\r\n };\r\n var QUOTED = {\r\n contains: [NUMBER, STRING, VARIABLE, KEYWORD, QUOTED_LIST, IDENT],\r\n variants: [\r\n {\r\n begin: '[\\'`]\\\\(', end: '\\\\)'\r\n },\r\n {\r\n begin: '\\\\(quote ', end: '\\\\)',\r\n keywords: {name: 'quote'}\r\n },\r\n {\r\n begin: '\\'' + MEC_RE\r\n }\r\n ]\r\n };\r\n var QUOTED_ATOM = {\r\n variants: [\r\n {begin: '\\'' + LISP_IDENT_RE},\r\n {begin: '#\\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*'}\r\n ]\r\n };\r\n var LIST = {\r\n begin: '\\\\(\\\\s*', end: '\\\\)'\r\n };\r\n var BODY = {\r\n endsWithParent: true,\r\n relevance: 0\r\n };\r\n LIST.contains = [\r\n {\r\n className: 'name',\r\n variants: [\r\n {begin: LISP_IDENT_RE},\r\n {begin: MEC_RE}\r\n ]\r\n },\r\n BODY\r\n ];\r\n BODY.contains = [QUOTED, QUOTED_ATOM, LIST, LITERAL, NUMBER, STRING, COMMENT, VARIABLE, KEYWORD, MEC, IDENT];\r\n\r\n return {\r\n illegal: /\\S/,\r\n contains: [\r\n NUMBER,\r\n SHEBANG,\r\n LITERAL,\r\n STRING,\r\n COMMENT,\r\n QUOTED,\r\n QUOTED_ATOM,\r\n LIST,\r\n IDENT\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var VARIABLE = {\r\n className: 'variable',\r\n variants: [\r\n {begin: '\\\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\\\[.+\\\\])?(?:\\\\s*?)'},\r\n {begin: '\\\\$_[A-Z]+'}\r\n ],\r\n relevance: 0\r\n };\r\n var COMMENT_MODES = [\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.HASH_COMMENT_MODE,\r\n hljs.COMMENT('--', '$'),\r\n hljs.COMMENT('[^:]//', '$')\r\n ];\r\n var TITLE1 = hljs.inherit(hljs.TITLE_MODE, {\r\n variants: [\r\n {begin: '\\\\b_*rig[A-Z]+[A-Za-z0-9_\\\\-]*'},\r\n {begin: '\\\\b_[a-z0-9\\\\-]+'}\r\n ]\r\n });\r\n var TITLE2 = hljs.inherit(hljs.TITLE_MODE, {begin: '\\\\b([A-Za-z0-9_\\\\-]+)\\\\b'});\r\n return {\r\n case_insensitive: false,\r\n keywords: {\r\n keyword:\r\n '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' +\r\n 'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' +\r\n 'after byte bytes english the until http forever descending using line real8 with seventh ' +\r\n 'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' +\r\n 'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' +\r\n 'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' +\r\n 'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' +\r\n 'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' +\r\n 'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' +\r\n 'first ftp integer abbreviated abbr abbrev private case while if ' +\r\n 'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' +\r\n 'contains ends with begins the keys of keys',\r\n literal:\r\n 'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' +\r\n 'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' +\r\n 'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' +\r\n 'quote empty one true return cr linefeed right backslash null seven tab three two ' +\r\n 'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' +\r\n 'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK',\r\n built_in:\r\n 'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' +\r\n 'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' +\r\n 'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' +\r\n 'constantNames cos date dateFormat decompress difference directories ' +\r\n 'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' +\r\n 'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' +\r\n 'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' +\r\n 'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' +\r\n 'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec ' +\r\n 'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' +\r\n 'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' +\r\n 'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' +\r\n 'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' +\r\n 'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' +\r\n 'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' +\r\n 'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' +\r\n 'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' +\r\n 'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' +\r\n 'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' +\r\n 'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' +\r\n 'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' +\r\n 'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase ' +\r\n 'revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute ' +\r\n 'revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces ' +\r\n 'revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode ' +\r\n 'revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling ' +\r\n 'revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error ' +\r\n 'revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute ' +\r\n 'revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort ' +\r\n 'revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree ' +\r\n 'revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance ' +\r\n 'sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound ' +\r\n 'stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper ' +\r\n 'transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames ' +\r\n 'variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet ' +\r\n 'xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process ' +\r\n 'combine constant convert create new alias folder directory decrypt delete variable word line folder ' +\r\n 'directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile ' +\r\n 'libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver ' +\r\n 'libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime ' +\r\n 'libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename ' +\r\n 'replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase ' +\r\n 'revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees ' +\r\n 'revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord ' +\r\n 'revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase ' +\r\n 'revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD ' +\r\n 'revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost ' +\r\n 'revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData ' +\r\n 'revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel ' +\r\n 'revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback ' +\r\n 'revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop ' +\r\n 'subtract symmetric union unload vectorDotProduct wait write'\r\n },\r\n contains: [\r\n VARIABLE,\r\n {\r\n className: 'keyword',\r\n begin: '\\\\bend\\\\sif\\\\b'\r\n },\r\n {\r\n className: 'function',\r\n beginKeywords: 'function', end: '$',\r\n contains: [\r\n VARIABLE,\r\n TITLE2,\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.BINARY_NUMBER_MODE,\r\n hljs.C_NUMBER_MODE,\r\n TITLE1\r\n ]\r\n },\r\n {\r\n className: 'function',\r\n begin: '\\\\bend\\\\s+', end: '$',\r\n keywords: 'end',\r\n contains: [\r\n TITLE2,\r\n TITLE1\r\n ],\r\n relevance: 0\r\n },\r\n {\r\n beginKeywords: 'command on', end: '$',\r\n contains: [\r\n VARIABLE,\r\n TITLE2,\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.BINARY_NUMBER_MODE,\r\n hljs.C_NUMBER_MODE,\r\n TITLE1\r\n ]\r\n },\r\n {\r\n className: 'meta',\r\n variants: [\r\n {\r\n begin: '<\\\\?(rev|lc|livecode)',\r\n relevance: 10\r\n },\r\n { begin: '<\\\\?' },\r\n { begin: '\\\\?>' }\r\n ]\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.BINARY_NUMBER_MODE,\r\n hljs.C_NUMBER_MODE,\r\n TITLE1\r\n ].concat(COMMENT_MODES),\r\n illegal: ';$|^\\\\[|^=|&|{'\r\n };\r\n};","module.exports = function(hljs) {\r\n var KEYWORDS = {\r\n keyword:\r\n // JS keywords\r\n 'in if for while finally new do return else break catch instanceof throw try this ' +\r\n 'switch continue typeof delete debugger case default function var with ' +\r\n // LiveScript keywords\r\n 'then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super ' +\r\n 'case default function var void const let enum export import native list map ' +\r\n '__hasProp __extends __slice __bind __indexOf',\r\n literal:\r\n // JS literals\r\n 'true false null undefined ' +\r\n // LiveScript literals\r\n 'yes no on off it that void',\r\n built_in:\r\n 'npm require console print module global window document'\r\n };\r\n var JS_IDENT_RE = '[A-Za-z$_](?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*';\r\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\r\n var SUBST = {\r\n className: 'subst',\r\n begin: /#\\{/, end: /}/,\r\n keywords: KEYWORDS\r\n };\r\n var SUBST_SIMPLE = {\r\n className: 'subst',\r\n begin: /#[A-Za-z$_]/, end: /(?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,\r\n keywords: KEYWORDS\r\n };\r\n var EXPRESSIONS = [\r\n hljs.BINARY_NUMBER_MODE,\r\n {\r\n className: 'number',\r\n begin: '(\\\\b0[xX][a-fA-F0-9_]+)|(\\\\b\\\\d(\\\\d|_\\\\d)*(\\\\.(\\\\d(\\\\d|_\\\\d)*)?)?(_*[eE]([-+]\\\\d(_\\\\d|\\\\d)*)?)?[_a-z]*)',\r\n relevance: 0,\r\n starts: {end: '(\\\\s*/)?', relevance: 0} // a number tries to eat the following slash to prevent treating it as a regexp\r\n },\r\n {\r\n className: 'string',\r\n variants: [\r\n {\r\n begin: /'''/, end: /'''/,\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n {\r\n begin: /'/, end: /'/,\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n {\r\n begin: /\"\"\"/, end: /\"\"\"/,\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\r\n },\r\n {\r\n begin: /\"/, end: /\"/,\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\r\n },\r\n {\r\n begin: /\\\\/, end: /(\\s|$)/,\r\n excludeEnd: true\r\n }\r\n ]\r\n },\r\n {\r\n className: 'regexp',\r\n variants: [\r\n {\r\n begin: '//', end: '//[gim]*',\r\n contains: [SUBST, hljs.HASH_COMMENT_MODE]\r\n },\r\n {\r\n // regex can't start with space to parse x / 2 / 3 as two divisions\r\n // regex can't start with *, and it supports an \"illegal\" in the main mode\r\n begin: /\\/(?![ *])(\\\\.|[^\\\\\\n])*?\\/[gim]*(?=\\W)/\r\n }\r\n ]\r\n },\r\n {\r\n begin: '@' + JS_IDENT_RE\r\n },\r\n {\r\n begin: '``', end: '``',\r\n excludeBegin: true, excludeEnd: true,\r\n subLanguage: 'javascript'\r\n }\r\n ];\r\n SUBST.contains = EXPRESSIONS;\r\n\r\n var PARAMS = {\r\n className: 'params',\r\n begin: '\\\\(', returnBegin: true,\r\n /* We need another contained nameless mode to not have every nested\r\n pair of parens to be called \"params\" */\r\n contains: [\r\n {\r\n begin: /\\(/, end: /\\)/,\r\n keywords: KEYWORDS,\r\n contains: ['self'].concat(EXPRESSIONS)\r\n }\r\n ]\r\n };\r\n\r\n var SYMBOLS = {\r\n begin: '(#=>|=>|\\\\|>>|-?->|\\\\!->)'\r\n };\r\n\r\n return {\r\n aliases: ['ls'],\r\n keywords: KEYWORDS,\r\n illegal: /\\/\\*/,\r\n contains: EXPRESSIONS.concat([\r\n hljs.COMMENT('\\\\/\\\\*', '\\\\*\\\\/'),\r\n hljs.HASH_COMMENT_MODE,\r\n SYMBOLS, // relevance booster\r\n {\r\n className: 'function',\r\n contains: [TITLE, PARAMS],\r\n returnBegin: true,\r\n variants: [\r\n {\r\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B\\\\->\\\\*?', end: '\\\\->\\\\*?'\r\n },\r\n {\r\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?!?(\\\\(.*\\\\))?\\\\s*\\\\B[-~]{1,2}>\\\\*?', end: '[-~]{1,2}>\\\\*?'\r\n },\r\n {\r\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B!?[-~]{1,2}>\\\\*?', end: '!?[-~]{1,2}>\\\\*?'\r\n }\r\n ]\r\n },\r\n {\r\n className: 'class',\r\n beginKeywords: 'class',\r\n end: '$',\r\n illegal: /[:=\"\\[\\]]/,\r\n contains: [\r\n {\r\n beginKeywords: 'extends',\r\n endsWithParent: true,\r\n illegal: /[:=\"\\[\\]]/,\r\n contains: [TITLE]\r\n },\r\n TITLE\r\n ]\r\n },\r\n {\r\n begin: JS_IDENT_RE + ':', end: ':',\r\n returnBegin: true, returnEnd: true,\r\n relevance: 0\r\n }\r\n ])\r\n };\r\n};","module.exports = function(hljs) {\r\n var identifier = '([-a-zA-Z$._][\\\\w\\\\-$.]*)';\r\n return {\r\n //lexemes: '[.%]?' + hljs.IDENT_RE,\r\n keywords:\r\n 'begin end true false declare define global ' +\r\n 'constant private linker_private internal ' +\r\n 'available_externally linkonce linkonce_odr weak ' +\r\n 'weak_odr appending dllimport dllexport common ' +\r\n 'default hidden protected extern_weak external ' +\r\n 'thread_local zeroinitializer undef null to tail ' +\r\n 'target triple datalayout volatile nuw nsw nnan ' +\r\n 'ninf nsz arcp fast exact inbounds align ' +\r\n 'addrspace section alias module asm sideeffect ' +\r\n 'gc dbg linker_private_weak attributes blockaddress ' +\r\n 'initialexec localdynamic localexec prefix unnamed_addr ' +\r\n 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc ' +\r\n 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ' +\r\n 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func ' +\r\n 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc ' +\r\n 'cc c signext zeroext inreg sret nounwind ' +\r\n 'noreturn noalias nocapture byval nest readnone ' +\r\n 'readonly inlinehint noinline alwaysinline optsize ssp ' +\r\n 'sspreq noredzone noimplicitfloat naked builtin cold ' +\r\n 'nobuiltin noduplicate nonlazybind optnone returns_twice ' +\r\n 'sanitize_address sanitize_memory sanitize_thread sspstrong ' +\r\n 'uwtable returned type opaque eq ne slt sgt ' +\r\n 'sle sge ult ugt ule uge oeq one olt ogt ' +\r\n 'ole oge ord uno ueq une x acq_rel acquire ' +\r\n 'alignstack atomic catch cleanup filter inteldialect ' +\r\n 'max min monotonic nand personality release seq_cst ' +\r\n 'singlethread umax umin unordered xchg add fadd ' +\r\n 'sub fsub mul fmul udiv sdiv fdiv urem srem ' +\r\n 'frem shl lshr ashr and or xor icmp fcmp ' +\r\n 'phi call trunc zext sext fptrunc fpext uitofp ' +\r\n 'sitofp fptoui fptosi inttoptr ptrtoint bitcast ' +\r\n 'addrspacecast select va_arg ret br switch invoke ' +\r\n 'unwind unreachable indirectbr landingpad resume ' +\r\n 'malloc alloca free load store getelementptr ' +\r\n 'extractelement insertelement shufflevector getresult ' +\r\n 'extractvalue insertvalue atomicrmw cmpxchg fence ' +\r\n 'argmemonly double',\r\n contains: [\r\n {\r\n className: 'keyword',\r\n begin: 'i\\\\d+'\r\n },\r\n hljs.COMMENT(\r\n ';', '\\\\n', {relevance: 0}\r\n ),\r\n // Double quote string\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'string',\r\n variants: [\r\n // Double-quoted string\r\n { begin: '\"', end: '[^\\\\\\\\]\"' },\r\n ],\r\n relevance: 0\r\n },\r\n {\r\n className: 'title',\r\n variants: [\r\n { begin: '@' + identifier },\r\n { begin: '@\\\\d+' },\r\n { begin: '!' + identifier },\r\n { begin: '!\\\\d+' + identifier }\r\n ]\r\n },\r\n {\r\n className: 'symbol',\r\n variants: [\r\n { begin: '%' + identifier },\r\n { begin: '%\\\\d+' },\r\n { begin: '#\\\\d+' },\r\n ]\r\n },\r\n {\r\n className: 'number',\r\n variants: [\r\n { begin: '0[xX][a-fA-F0-9]+' },\r\n { begin: '-?\\\\d+(?:[.]\\\\d+)?(?:[eE][-+]?\\\\d+(?:[.]\\\\d+)?)?' }\r\n ],\r\n relevance: 0\r\n },\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n\r\n var LSL_STRING_ESCAPE_CHARS = {\r\n className: 'subst',\r\n begin: /\\\\[tn\"\\\\]/\r\n };\r\n\r\n var LSL_STRINGS = {\r\n className: 'string',\r\n begin: '\"',\r\n end: '\"',\r\n contains: [\r\n LSL_STRING_ESCAPE_CHARS\r\n ]\r\n };\r\n\r\n var LSL_NUMBERS = {\r\n className: 'number',\r\n begin: hljs.C_NUMBER_RE\r\n };\r\n\r\n var LSL_CONSTANTS = {\r\n className: 'literal',\r\n variants: [\r\n {\r\n begin: '\\\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\\\b'\r\n },\r\n {\r\n begin: '\\\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(?:ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(?:_TAG)?|CREATOR|ATTACHED_(?:POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALLOW_UNSIT|ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(?:INVALID_(?:AGENT|LINK_OBJECT)|NO(?:T_EXPERIENCE|_(?:ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\\\b'\r\n },\r\n {\r\n begin: '\\\\b(?:FALSE|TRUE)\\\\b'\r\n },\r\n {\r\n begin: '\\\\b(?:ZERO_ROTATION)\\\\b'\r\n },\r\n {\r\n begin: '\\\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\\\b'\r\n },\r\n {\r\n begin: '\\\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\\\b'\r\n }\r\n ]\r\n };\r\n\r\n var LSL_FUNCTIONS = {\r\n className: 'built_in',\r\n begin: '\\\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|SitOnLink|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\\\b'\r\n };\r\n\r\n return {\r\n illegal: ':',\r\n contains: [\r\n LSL_STRINGS,\r\n {\r\n className: 'comment',\r\n variants: [\r\n hljs.COMMENT('//', '$'),\r\n hljs.COMMENT('/\\\\*', '\\\\*/')\r\n ],\r\n relevance: 0\r\n },\r\n LSL_NUMBERS,\r\n {\r\n className: 'section',\r\n variants: [\r\n {\r\n begin: '\\\\b(?:state|default)\\\\b'\r\n },\r\n {\r\n begin: '\\\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\\\b'\r\n }\r\n ]\r\n },\r\n LSL_FUNCTIONS,\r\n LSL_CONSTANTS,\r\n {\r\n className: 'type',\r\n begin: '\\\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\\\b'\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\r\n var CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\r\n var LONG_BRACKETS = {\r\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\r\n contains: ['self']\r\n };\r\n var COMMENTS = [\r\n hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\r\n hljs.COMMENT(\r\n '--' + OPENING_LONG_BRACKET,\r\n CLOSING_LONG_BRACKET,\r\n {\r\n contains: [LONG_BRACKETS],\r\n relevance: 10\r\n }\r\n )\r\n ];\r\n return {\r\n lexemes: hljs.UNDERSCORE_IDENT_RE,\r\n keywords: {\r\n literal: \"true false nil\",\r\n keyword: \"and break do else elseif end for goto if in local not or repeat return then until while\",\r\n built_in:\r\n //Metatags and globals:\r\n '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len ' +\r\n '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert ' +\r\n //Standard methods and properties:\r\n 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring' +\r\n 'module next pairs pcall print rawequal rawget rawset require select setfenv' +\r\n 'setmetatable tonumber tostring type unpack xpcall arg self' +\r\n //Library methods and properties (one line per library):\r\n 'coroutine resume yield status wrap create running debug getupvalue ' +\r\n 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv ' +\r\n 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile ' +\r\n 'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan ' +\r\n 'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall ' +\r\n 'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower ' +\r\n 'table setn insert getn foreachi maxn foreach concat sort remove'\r\n },\r\n contains: COMMENTS.concat([\r\n {\r\n className: 'function',\r\n beginKeywords: 'function', end: '\\\\)',\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\r\n {\r\n className: 'params',\r\n begin: '\\\\(', endsWithParent: true,\r\n contains: COMMENTS\r\n }\r\n ].concat(COMMENTS)\r\n },\r\n hljs.C_NUMBER_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'string',\r\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\r\n contains: [LONG_BRACKETS],\r\n relevance: 5\r\n }\r\n ])\r\n };\r\n};","module.exports = function(hljs) {\r\n /* Variables: simple (eg $(var)) and special (eg $@) */\r\n var VARIABLE = {\r\n className: 'variable',\r\n variants: [\r\n {\r\n begin: '\\\\$\\\\(' + hljs.UNDERSCORE_IDENT_RE + '\\\\)',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n },\r\n {\r\n begin: /\\$[@%',\r\n subLanguage: 'xml',\r\n relevance: 0\r\n },\r\n // lists (indicators only)\r\n {\r\n className: 'bullet',\r\n begin: '^\\\\s*([*+-]|(\\\\d+\\\\.))\\\\s+'\r\n },\r\n // strong segments\r\n {\r\n className: 'strong',\r\n begin: '[*_]{2}.+?[*_]{2}'\r\n },\r\n // emphasis segments\r\n {\r\n className: 'emphasis',\r\n variants: [\r\n { begin: '\\\\*.+?\\\\*' },\r\n { begin: '_.+?_'\r\n , relevance: 0\r\n }\r\n ]\r\n },\r\n // blockquotes\r\n {\r\n className: 'quote',\r\n begin: '^>\\\\s+', end: '$'\r\n },\r\n // code snippets\r\n {\r\n className: 'code',\r\n variants: [\r\n {\r\n begin: '^```\\\\w*\\\\s*$', end: '^```[ ]*$'\r\n },\r\n {\r\n begin: '`.+?`'\r\n },\r\n {\r\n begin: '^( {4}|\\\\t)', end: '$',\r\n relevance: 0\r\n }\r\n ]\r\n },\r\n // horizontal rules\r\n {\r\n begin: '^[-\\\\*]{3,}', end: '$'\r\n },\r\n // using links - title and link\r\n {\r\n begin: '\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]',\r\n returnBegin: true,\r\n contains: [\r\n {\r\n className: 'string',\r\n begin: '\\\\[', end: '\\\\]',\r\n excludeBegin: true,\r\n returnEnd: true,\r\n relevance: 0\r\n },\r\n {\r\n className: 'link',\r\n begin: '\\\\]\\\\(', end: '\\\\)',\r\n excludeBegin: true, excludeEnd: true\r\n },\r\n {\r\n className: 'symbol',\r\n begin: '\\\\]\\\\[', end: '\\\\]',\r\n excludeBegin: true, excludeEnd: true\r\n }\r\n ],\r\n relevance: 10\r\n },\r\n {\r\n begin: /^\\[[^\\n]+\\]:/,\r\n returnBegin: true,\r\n contains: [\r\n {\r\n className: 'symbol',\r\n begin: /\\[/, end: /\\]/,\r\n excludeBegin: true, excludeEnd: true\r\n },\r\n {\r\n className: 'link',\r\n begin: /:\\s*/, end: /$/,\r\n excludeBegin: true\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['mma', 'wl'],\r\n lexemes: '(\\\\$|\\\\b)' + hljs.IDENT_RE + '\\\\b',\r\n //\r\n // The list of \"keywords\" (System` symbols) was determined by evaluating the following Wolfram Language code in Mathematica 12.0:\r\n //\r\n // StringRiffle[\r\n // \"'\" <> StringRiffle[#, \" \"] <> \"'\" & /@\r\n // Values[GroupBy[\r\n // Select[Names[\"System`*\"],\r\n // StringStartsQ[#, CharacterRange[\"A\", \"Z\"] | \"$\"] &],\r\n // First[Characters[#]] &]], \" +\\n\"]\r\n //\r\n keywords: 'AASTriangle AbelianGroup Abort AbortKernels AbortProtect AbortScheduledTask Above Abs AbsArg AbsArgPlot Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AcceptanceThreshold AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Activate Active ActiveClassification ActiveClassificationObject ActiveItem ActivePrediction ActivePredictionObject ActiveStyle AcyclicGraphQ AddOnHelpPath AddSides AddTo AddToSearchIndex AddUsers AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AdministrativeDivisionData AffineHalfSpace AffineSpace AffineStateSpaceModel AffineTransform After AggregatedEntityClass AggregationLayer AircraftData AirportData AirPressureData AirTemperatureData AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowAdultContent AllowedCloudExtraParameters AllowedCloudParameterExtensions AllowedDimensions AllowedFrequencyRange AllowedHeads AllowGroupClose AllowIncomplete AllowInlineCells AllowKernelInitialization AllowLooseGrammar AllowReverseGroupClose AllowScriptLevelChange AllTrue Alphabet AlphabeticOrder AlphabeticSort AlphaChannel AlternateImage AlternatingFactorial AlternatingGroup AlternativeHypothesis Alternatives AltitudeMethod AmbientLight AmbiguityFunction AmbiguityList Analytic AnatomyData AnatomyForm AnatomyPlot3D AnatomySkinStyle AnatomyStyling AnchoredSearch And AndersonDarlingTest AngerJ AngleBisector AngleBracket AnglePath AnglePath3D AngleVector AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning AnimationRunTime AnimationTimeIndex Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotate Annotation AnnotationDelete AnnotationNames AnnotationRules AnnotationValue Annuity AnnuityDue Annulus AnomalyDetection AnomalyDetectorFunction Anonymous Antialiasing AntihermitianMatrixQ Antisymmetric AntisymmetricMatrixQ Antonyms AnyOrder AnySubset AnyTrue Apart ApartSquareFree APIFunction Appearance AppearanceElements AppearanceRules AppellF1 Append AppendCheck AppendLayer AppendTo ApplicationIdentificationKey Apply ApplySides ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcCurvature ARCHProcess ArcLength ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Area Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess Around AroundReplace ARProcess Array ArrayComponents ArrayDepth ArrayFilter ArrayFlatten ArrayMesh ArrayPad ArrayPlot ArrayQ ArrayResample ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads ASATriangle Ask AskAppend AskConfirm AskDisplay AskedQ AskedValue AskFunction AskState AskTemplateDisplay AspectRatio AspectRatioFixed Assert AssociateTo Association AssociationFormat AssociationMap AssociationQ AssociationThread AssumeDeterministic Assuming Assumptions AstronomicalData AsymptoticDSolveValue AsymptoticEqual AsymptoticEquivalent AsymptoticGreater AsymptoticGreaterEqual AsymptoticIntegrate AsymptoticLess AsymptoticLessEqual AsymptoticOutputTracker AsymptoticRSolveValue AsymptoticSolve AsymptoticSum Asynchronous AsynchronousTaskObject AsynchronousTasks Atom AtomCoordinates AtomCount AtomDiagramCoordinates AtomList AtomQ AttentionLayer Attributes Audio AudioAmplify AudioAnnotate AudioAnnotationLookup AudioBlockMap AudioCapture AudioChannelAssignment AudioChannelCombine AudioChannelMix AudioChannels AudioChannelSeparate AudioData AudioDelay AudioDelete AudioDevice AudioDistance AudioFade AudioFrequencyShift AudioGenerator AudioIdentify AudioInputDevice AudioInsert AudioIntervals AudioJoin AudioLabel AudioLength AudioLocalMeasurements AudioLooping AudioLoudness AudioMeasurements AudioNormalize AudioOutputDevice AudioOverlay AudioPad AudioPan AudioPartition AudioPause AudioPitchShift AudioPlay AudioPlot AudioQ AudioRecord AudioReplace AudioResample AudioReverb AudioSampleRate AudioSpectralMap AudioSpectralTransformation AudioSplit AudioStop AudioStream AudioStreams AudioTimeStretch AudioTrim AudioType AugmentedPolyhedron AugmentedSymmetricPolynomial Authenticate Authentication AuthenticationDialog AutoAction Autocomplete AutocompletionFunction AutoCopy AutocorrelationTest AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutoQuoteCharacters AutoRefreshed AutoRemove AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords AutoSubmitting Axes AxesEdge AxesLabel AxesOrigin AxesStyle AxiomaticTheory Axis' +\r\n 'BabyMonsterGroupB Back Background BackgroundAppearance BackgroundTasksSettings Backslash Backsubstitution Backward Ball Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarcodeImage BarcodeRecognize BaringhausHenzeTest BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseDecode BaseEncode BaseForm Baseline BaselinePosition BaseStyle BasicRecurrentLayer BatchNormalizationLayer BatchSize BatesDistribution BattleLemarieWavelet BayesianMaximization BayesianMaximizationObject BayesianMinimization BayesianMinimizationObject Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized Between BetweennessCentrality BeveledPolyhedron BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryDeserialize BinaryDistance BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinarySerialize BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BiquadraticFilterModel BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor BiweightLocation BiweightMidvariance Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockchainAddressData BlockchainBase BlockchainBlockData BlockchainContractValue BlockchainData BlockchainGet BlockchainKeyEncode BlockchainPut BlockchainTokenData BlockchainTransaction BlockchainTransactionData BlockchainTransactionSign BlockchainTransactionSubmit BlockMap BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bond BondCount BondList BondQ Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms BooleanQ BooleanRegion Booleans BooleanStrings BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryDiscretizeGraphics BoundaryDiscretizeRegion BoundaryMesh BoundaryMeshRegion BoundaryMeshRegionQ BoundaryStyle BoundedRegionQ BoundingRegion Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxObject BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break BridgeData BrightnessEqualize BroadcastStationData Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurve3DBoxOptions BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BSplineSurface3DBoxOptions BubbleChart BubbleChart3D BubbleScale BubbleSizes BuildingData BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteArray ByteArrayFormat ByteArrayQ ByteArrayToString ByteCount ByteOrdering' +\r\n 'C CachedValue CacheGraphics CachePersistence CalendarConvert CalendarData CalendarType Callout CalloutMarker CalloutStyle CallPacket CanberraDistance Cancel CancelButton CandlestickChart CanonicalGraph CanonicalizePolygon CanonicalizePolyhedron CanonicalName CanonicalWarpingCorrespondence CanonicalWarpingDistance CantorMesh CantorStaircase Cap CapForm CapitalDifferentialD Capitalize CapsuleShape CaptureRunning CardinalBSplineBasis CarlemanLinearize CarmichaelLambda CaseOrdering Cases CaseSensitive Cashflow Casoratian Catalan CatalanNumber Catch Catenate CatenateLayer CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling CelestialSystem Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEvaluationLanguage CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellLabelStyle CellLabelTemplate CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterArray CenterDot CentralFeature CentralMoment CentralMomentGeneratingFunction Cepstrogram CepstrogramArray CepstrumArray CForm ChampernowneNumber ChangeOptions ChannelBase ChannelBrokerAction ChannelDatabin ChannelHistoryLength ChannelListen ChannelListener ChannelListeners ChannelListenerWait ChannelObject ChannelPreSendFunction ChannelReceiverFunction ChannelSend ChannelSubscribers ChanVeseBinarize Character CharacterCounts CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterName CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop ChromaticityPlot ChromaticityPlot3D ChromaticPolynomial Circle CircleBox CircleDot CircleMinus CirclePlus CirclePoints CircleThrough CircleTimes CirculantGraph CircularOrthogonalMatrixDistribution CircularQuaternionMatrixDistribution CircularRealMatrixDistribution CircularSymplecticMatrixDistribution CircularUnitaryMatrixDistribution Circumsphere CityData ClassifierFunction ClassifierInformation ClassifierMeasurements ClassifierMeasurementsObject Classify ClassPriors Clear ClearAll ClearAttributes ClearCookies ClearPermissions ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipPlanesStyle ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent CloudAccountData CloudBase CloudConnect CloudDeploy CloudDirectory CloudDisconnect CloudEvaluate CloudExport CloudExpression CloudExpressions CloudFunction CloudGet CloudImport CloudLoggingData CloudObject CloudObjectInformation CloudObjectInformationData CloudObjectNameFormat CloudObjects CloudObjectURLType CloudPublish CloudPut CloudRenderingMethod CloudSave CloudShare CloudSubmit CloudSymbol CloudUnshare ClusterClassify ClusterDissimilarityFunction ClusteringComponents ClusteringTree CMYKColor Coarse CodeAssistOptions Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorBalance ColorCombine ColorConvert ColorCoverage ColorData ColorDataFunction ColorDetect ColorDistance ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQ ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorsNear ColorSpace ColorToneMapping Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CombinedEntityClass CombinerFunction CometData CommonDefaultFormatTypes Commonest CommonestFilter CommonName CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompanyData CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledCodeFunction CompiledFunction CompilerOptions Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComplexListPlot ComplexPlot ComplexPlot3D ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries CompositeQ Composition CompoundElement CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData ComputeUncertainty Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath ConformAudio ConformImages Congruent ConicHullRegion ConicHullRegion3DBox ConicHullRegionBox ConicOptimization Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphComponents ConnectedGraphQ ConnectedMeshComponents ConnectedMoleculeComponents ConnectedMoleculeQ ConnectionSettings ConnectLibraryCallbackFunction ConnectSystemModelComponents ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray ConstantArrayLayer ConstantImage ConstantPlusLayer ConstantRegionQ Constants ConstantTimesLayer ConstellationData ConstrainedMax ConstrainedMin Construct Containing ContainsAll ContainsAny ContainsExactly ContainsNone ContainsOnly ContentFieldOptions ContentLocationFunction ContentObject ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTask ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean ContrastiveLossLayer Control ControlActive ControlAlignment ControlGroupContentsBox ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket ConvexHullMesh ConvexPolygonQ ConvexPolyhedronQ ConvolutionLayer Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CookieFunction Cookies CoordinateBoundingBox CoordinateBoundingBoxArray CoordinateBounds CoordinateBoundsArray CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDatabin CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CountDistinct CountDistinctBy CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Counts CountsBy Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateCellID CreateChannel CreateCloudExpression CreateDatabin CreateDataSystemModel CreateDialog CreateDirectory CreateDocument CreateFile CreateIntermediateDirectories CreateManagedLibraryExpression CreateNotebook CreatePalette CreatePalettePacket CreatePermissionsGroup CreateScheduledTask CreateSearchIndex CreateSystemModel CreateTemporary CreateUUID CreateWindow CriterionFunction CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossEntropyLossLayer CrossingCount CrossingDetect CrossingPolygon CrossMatrix Csc Csch CTCLossLayer Cube CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrencyConvert CurrentDate CurrentImage CurrentlySpeakingPacket CurrentNotebookImage CurrentScreenImage CurrentValue Curry CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecomposition' +\r\n 'D DagumDistribution DamData DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DatabaseConnect DatabaseDisconnect DatabaseReference Databin DatabinAdd DatabinRemove Databins DatabinUpload DataCompression DataDistribution DataRange DataReversed Dataset Date DateBounds Dated DateDelimiters DateDifference DatedUnit DateFormat DateFunction DateHistogram DateList DateListLogPlot DateListPlot DateListStepPlot DateObject DateObjectQ DateOverlapsQ DatePattern DatePlus DateRange DateReduction DateString DateTicksFormat DateValue DateWithinQ DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayHemisphere DaylightQ DayMatchQ DayName DayNightTerminator DayPlus DayRange DayRound DeBruijnGraph DeBruijnSequence Debug DebugTag Decapitalize Decimal DecimalForm DeclareKnownSymbols DeclarePackage Decompose DeconvolutionLayer Decrement Decrypt DecryptFile DedekindEta DeepSpaceProbeData Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultPrintPrecision DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValue DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod DefineResourceFunction Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic DEigensystem DEigenvalues Deinitialization Del DelaunayMesh Delayed Deletable Delete DeleteAnomalies DeleteBorderComponents DeleteCases DeleteChannel DeleteCloudExpression DeleteContents DeleteDirectory DeleteDuplicates DeleteDuplicatesBy DeleteFile DeleteMissing DeleteObject DeletePermissionsKey DeleteSearchIndex DeleteSmallComponents DeleteStopwords DeleteWithContents DeletionWarning DelimitedArray DelimitedSequence Delimiter DelimiterFlashTime DelimiterMatching Delimiters DeliveryFunction Dendrogram Denominator DensityGraphics DensityHistogram DensityPlot DensityPlot3D DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DerivedKey DescriptorStateSpace DesignMatrix DestroyAfterEvaluation Det DeviceClose DeviceConfigure DeviceExecute DeviceExecuteAsynchronous DeviceObject DeviceOpen DeviceOpenQ DeviceRead DeviceReadBuffer DeviceReadLatest DeviceReadList DeviceReadTimeSeries Devices DeviceStreams DeviceWrite DeviceWriteBuffer DGaussianWavelet DiacriticalPositioning Diagonal DiagonalizableMatrixQ DiagonalMatrix DiagonalMatrixQ Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DictionaryWordQ DifferenceDelta DifferenceOrder DifferenceQuotient DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitalSignature DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralAngle DihedralGroup Dilation DimensionalCombinations DimensionalMeshComponents DimensionReduce DimensionReducerFunction DimensionReduction Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletBeta DirichletCharacter DirichletCondition DirichletConvolve DirichletDistribution DirichletEta DirichletL DirichletLambda DirichletTransform DirichletWindow DisableConsolePrintPacket DisableFormatting DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLimit DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscreteMaxLimit DiscreteMinLimit DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform DiscretizeGraphics DiscretizeRegion Discriminant DisjointQ Disjunction Disk DiskBox DiskMatrix DiskSegment Dispatch DispatchQ DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceMatrix DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers DivideSides Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentGenerator DocumentGeneratorInformation DocumentGeneratorInformationData DocumentGenerators DocumentNotebook DocumentWeightingRules Dodecahedron DomainRegistrationInformation DominantColors DOSTextFormat Dot DotDashed DotEqual DotLayer DotPlusLayer Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DropoutLayer DSolve DSolveValue Dt DualLinearProgramming DualPolyhedron DualSystemsModel DumpGet DumpSave DuplicateFreeQ Duration Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicGeoGraphics DynamicImage DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptions' +\r\n 'E EarthImpactData EarthquakeData EccentricityCentrality Echo EchoFunction EclipseType EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeContract EdgeCost EdgeCount EdgeCoverQ EdgeCycleMatrix EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight EdgeWeightedGraphQ Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData ElementwiseLayer ElidedForms Eliminate EliminationOrder Ellipsoid EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmbedCode EmbeddedHTML EmbeddedService EmbeddingLayer EmbeddingObject EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EmptyRegion EnableConsolePrintPacket Enabled Encode Encrypt EncryptedObject EncryptFile End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfBuffer EndOfFile EndOfLine EndOfString EndPackage EngineEnvironment EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entity EntityClass EntityClassList EntityCopies EntityFunction EntityGroup EntityInstance EntityList EntityPrefetch EntityProperties EntityProperty EntityPropertyClass EntityRegister EntityStore EntityStores EntityTypeName EntityUnregister EntityValue Entropy EntropyFilter Environment Epilog EpilogFunction Equal EqualColumns EqualRows EqualTilde EqualTo EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EscapeRadius EstimatedBackground EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerAngles EulerCharacteristic EulerE EulerGamma EulerianGraphQ EulerMatrix EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluateScheduledTask EvaluationBox EvaluationCell EvaluationCompletionAction EvaluationData EvaluationElements EvaluationEnvironment EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels EventSeries ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludedLines ExcludedPhysicalQuantities ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog ExoplanetData Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi ExpirationDate Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportByteArray ExportForm ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpressionUUID ExpToTrig ExtendedEntityClass ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalBundle ExternalCall ExternalDataCharacterEncoding ExternalEvaluate ExternalFunction ExternalFunctionName ExternalObject ExternalOptions ExternalSessionObject ExternalSessions ExternalTypeSignature ExternalValue Extract ExtractArchive ExtractLayer ExtremeValueDistribution' +\r\n 'FaceForm FaceGrids FaceGridsStyle FacialFeatures Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail Failure FailureAction FailureDistribution FailureQ False FareySequence FARIMAProcess FeatureDistance FeatureExtract FeatureExtraction FeatureExtractor FeatureExtractorFunction FeatureNames FeatureNearest FeatureSpacePlot FeatureSpacePlot3D FeatureTypes FEDisableConsolePrintPacket FeedbackLinearize FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket FetalGrowthData Fibonacci Fibonorial FieldCompletionFunction FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileConvert FileDate FileExistsQ FileExtension FileFormat FileHandler FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameForms FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileSize FileSystemMap FileSystemScan FileTemplate FileTemplateApply FileType FilledCurve FilledCurveBox FilledCurveBoxOptions Filling FillingStyle FillingTransform FilteredEntityClass FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindAnomalies FindArgMax FindArgMin FindChannels FindClique FindClusters FindCookies FindCurvePath FindCycle FindDevices FindDistribution FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEdgeIndependentPaths FindEquationalProof FindEulerianCycle FindExternalEvaluators FindFaces FindFile FindFit FindFormula FindFundamentalCycles FindGeneratingFunction FindGeoLocation FindGeometricConjectures FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindHamiltonianPath FindHiddenMarkovStates FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMatchingColor FindMaximum FindMaximumFlow FindMaxValue FindMeshDefects FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindMoleculeSubstructure FindPath FindPeaks FindPermutation FindPostmanTour FindProcessParameters FindRepeat FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindSpanningTree FindSystemModelEquilibrium FindTextualAnswer FindThreshold FindTransientRepeat FindVertexCover FindVertexCut FindVertexIndependentPaths Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstCase FirstPassageTimeDistribution FirstPosition FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FitRegularization FittedModel FixedOrder FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlattenLayer FlatTopWindow FlipView Floor FlowPolynomial FlushPrintOutputPacket Fold FoldList FoldPair FoldPairList FollowRedirects Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FormControl FormFunction FormLayoutFunction FormObject FormPage FormTheme FormulaData FormulaLookup FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalGaussianNoiseProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameRate FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrenetSerretSystem FrequencySamplingFilterKernel FresnelC FresnelF FresnelG FresnelS Friday FrobeniusNumber FrobeniusSolve FromAbsoluteTime FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS FromEntity FromJulianDate FromLetterNumber FromPolarCoordinates FromRomanNumeral FromSphericalCoordinates FromUnixTime Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullInformationOutputRegulator FullOptions FullRegion FullSimplify Function FunctionCompile FunctionCompileExport FunctionCompileExportByteArray FunctionCompileExportLibrary FunctionCompileExportString FunctionDomain FunctionExpand FunctionInterpolation FunctionPeriod FunctionRange FunctionSpace FussellVeselyImportance' +\r\n 'GaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins GalaxyData GalleryView Gamma GammaDistribution GammaRegularized GapPenalty GARCHProcess GatedRecurrentLayer Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianOrthogonalMatrixDistribution GaussianSymplecticMatrixDistribution GaussianUnitaryMatrixDistribution GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateAsymmetricKeyPair GenerateConditions GeneratedCell GeneratedDocumentBinding GenerateDerivedKey GenerateDigitalSignature GenerateDocument GeneratedParameters GeneratedQuantityMagnitudes GenerateHTTPResponse GenerateSecuredAuthenticationKey GenerateSymmetricKey GeneratingFunction GeneratorDescription GeneratorHistoryLength GeneratorOutputType Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeoAntipode GeoArea GeoArraySize GeoBackground GeoBoundingBox GeoBounds GeoBoundsRegion GeoBubbleChart GeoCenter GeoCircle GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDisk GeoDisplacement GeoDistance GeoDistanceList GeoElevationData GeoEntities GeoGraphics GeogravityModelData GeoGridDirectionDifference GeoGridLines GeoGridLinesStyle GeoGridPosition GeoGridRange GeoGridRangePadding GeoGridUnitArea GeoGridUnitDistance GeoGridVector GeoGroup GeoHemisphere GeoHemisphereBoundary GeoHistogram GeoIdentify GeoImage GeoLabels GeoLength GeoListPlot GeoLocation GeologicalPeriodData GeomagneticModelData GeoMarker GeometricAssertion GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricScene GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoModel GeoNearest GeoPath GeoPosition GeoPositionENU GeoPositionXYZ GeoProjection GeoProjectionData GeoRange GeoRangePadding GeoRegionValuePlot GeoResolution GeoScaleBar GeoServer GeoSmoothHistogram GeoStreamPlot GeoStyling GeoStylingImageFunction GeoVariant GeoVector GeoVectorENU GeoVectorPlot GeoVectorXYZ GeoVisibleRegion GeoVisibleRegionBoundary GeoWithinQ GeoZoomLevel GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenAngle GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter GrammarApply GrammarRules GrammarToken Graph Graph3D GraphAssortativity GraphAutomorphismGroup GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel Greater GreaterEqual GreaterEqualLess GreaterEqualThan GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterThan GreaterTilde Green GreenFunction Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupBy GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators Groupings GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain GroupTogetherGrouping GroupTogetherNestedGrouping GrowCutComponents Gudermannian GuidedFilter GumbelDistribution' +\r\n 'HaarWavelet HadamardMatrix HalfLine HalfNormalDistribution HalfPlane HalfSpace HamiltonianGraphQ HammingDistance HammingWindow HandlerFunctions HandlerFunctionsKeys HankelH1 HankelH2 HankelMatrix HankelTransform HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash Haversine HazardFunction Head HeadCompose HeaderLines Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings Here HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenMarkovProcess HiddenSurface Highlighted HighlightGraph HighlightImage HighlightMesh HighpassFilter HigmanSimsGroupHS HilbertCurve HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HistoricalPeriodData HitMissTransform HITSCentrality HjorthDistribution HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HostLookup HotellingTSquareDistribution HoytDistribution HTMLSave HTTPErrorResponse HTTPRedirect HTTPRequest HTTPRequestData HTTPResponse Hue HumanGrowthData HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyperplane Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestData' +\r\n 'I IconData Iconize IconizedObject IconRules Icosahedron Identity IdentityMatrix If IgnoreCase IgnoreDiacritics IgnorePunctuation IgnoreSpellCheck IgnoringInactive Im Image Image3D Image3DProjection Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageApplyIndexed ImageAspectRatio ImageAssemble ImageAugmentationLayer ImageBoundingBoxes ImageCache ImageCacheValid ImageCapture ImageCaptureFunction ImageCases ImageChannels ImageClip ImageCollage ImageColorSpace ImageCompose ImageContainsQ ImageContents ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDisplacements ImageDistance ImageEffect ImageExposureCombine ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageFocusCombine ImageForestingComponents ImageFormattingWidth ImageForwardTransformation ImageGraphics ImageHistogram ImageIdentify ImageInstanceQ ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarker ImageMarkers ImageMeasurements ImageMesh ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImagePosition ImagePreviewFunction ImagePyramid ImagePyramidApply ImageQ ImageRangeCache ImageRecolor ImageReflect ImageRegion ImageResize ImageResolution ImageRestyle ImageRotate ImageRotated ImageSaliencyFilter ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions ImagingDevice ImplicitRegion Implies Import ImportAutoReplacements ImportByteArray ImportOptions ImportString ImprovementImportance In Inactivate Inactive IncidenceGraph IncidenceList IncidenceMatrix IncludeAromaticBonds IncludeConstantBasis IncludeDefinitions IncludeDirectories IncludeFileExtension IncludeGeneratorTasks IncludeHydrogens IncludeInflections IncludeMetaInformation IncludePods IncludeQuantities IncludeRelatedTables IncludeSingularTerm IncludeWindowTimes Increment IndefiniteMatrixQ Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentPhysicalQuantity IndependentUnit IndependentUnitDimension IndependentVertexSetQ Indeterminate IndeterminateThreshold IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers InfiniteLine InfinitePlane Infinity Infix InflationAdjust InflationMethod Information InformationData InformationDataGrid Inherited InheritScope InhomogeneousPoissonProcess InitialEvaluationHistory Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InitializationObjects InitializationValue Initialize InitialSeeding InlineCounterAssignments InlineCounterIncrements InlineRules Inner InnerPolygon InnerPolyhedron Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionFunction InsertionPointObject InsertLinebreaks InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Insphere Install InstallService InstanceNormalizationLayer InString Integer IntegerDigits IntegerExponent IntegerLength IntegerName IntegerPart IntegerPartitions IntegerQ IntegerReverse Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction Interpreter InterpretTemplate InterquartileRange Interrupt InterruptSettings IntersectingQ Intersection Interval IntervalIntersection IntervalMarkers IntervalMarkersStyle IntervalMemberQ IntervalSlider IntervalUnion Into Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHankelTransform InverseHaversine InverseImagePyramid InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InverseMellinTransform InversePermutation InverseRadon InverseRadonTransform InverseSeries InverseShortTimeFourier InverseSpectrogram InverseSurvivalFunction InverseTransformedRegion InverseWaveletTransform InverseWeierstrassP InverseWishartMatrixDistribution InverseZTransform Invisible InvisibleApplication InvisibleTimes IPAddress IrreduciblePolynomialQ IslandData IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemAspectRatio ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcess' +\r\n 'JaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join JoinAcross Joined JoinedCurve JoinedCurveBox JoinedCurveBoxOptions JoinForm JordanDecomposition JordanModelDecomposition JulianDate JuliaSetBoettcher JuliaSetIterationCount JuliaSetPlot JuliaSetPoints' +\r\n 'K KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KEdgeConnectedComponents KEdgeConnectedGraphQ KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelFunction KernelMixtureDistribution Kernels Ket Key KeyCollisionFunction KeyComplement KeyDrop KeyDropFrom KeyExistsQ KeyFreeQ KeyIntersection KeyMap KeyMemberQ KeypointStrength Keys KeySelect KeySort KeySortBy KeyTake KeyUnion KeyValueMap KeyValuePattern Khinchin KillProcess KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnapsackSolve KnightTourGraph KnotData KnownUnitQ KochCurve KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter KVertexConnectedComponents KVertexConnectedGraphQ' +\r\n 'LABColor Label Labeled LabeledSlider LabelingFunction LabelingSize LabelStyle LabelVisibility LaguerreL LakeData LambdaComponents LambertW LaminaData LanczosWindow LandauDistribution Language LanguageCategory LanguageData LanguageIdentify LanguageOptions LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCHColor LCM LeaderSize LeafCount LeapYearQ LearnDistribution LearnedDistribution LearningRate LearningRateMultipliers LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessEqualThan LessFullEqual LessGreater LessLess LessSlantEqual LessThan LessTilde LetterCharacter LetterCounts LetterNumber LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryDataType LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox Line3DBoxOptions LinearFilter LinearFractionalOptimization LinearFractionalTransform LinearGradientImage LinearizingTransformationData LinearLayer LinearModelFit LinearOffsetFunction LinearOptimization LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBoxOptions LineBreak LinebreakAdjustments LineBreakChart LinebreakSemicolonWeighting LineBreakWithin LineColor LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRankCentrality LinkRead LinkReadHeld LinkReadyQ Links LinkService LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot ListDensityPlot3D Listen ListFormat ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListSliceContourPlot3D ListSliceDensityPlot3D ListSliceVectorPlot3D ListStepPlot ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalAdaptiveBinarize LocalCache LocalClusteringCoefficient LocalizeDefinitions LocalizeVariables LocalObject LocalObjects LocalResponseNormalizationLayer LocalSubmit LocalSymbol LocalTime LocalTimeZone LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogisticSigmoid LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongestOrderedSequence LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow LongShortTermMemoryLayer Lookup Loopback LoopFreeGraphQ LossFunction LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowerTriangularMatrixQ LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LunarEclipse LUVColor LyapunovSolve LyonsGroupLy' +\r\n 'MachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MailAddressValidation MailExecute MailFolder MailItem MailReceiverFunction MailResponseFunction MailSearch MailServerConnect MailServerConnection MailSettings MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules ManagedLibraryExpressionID ManagedLibraryExpressionQ MandelbrotSetBoettcher MandelbrotSetDistance MandelbrotSetIterationCount MandelbrotSetMemberQ MandelbrotSetPlot MangoldtLambda ManhattanDistance Manipulate Manipulator MannedSpaceMissionData MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarchenkoPasturDistribution MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicalFunctionData MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixNormalDistribution MatrixPlot MatrixPower MatrixPropertyDistribution MatrixQ MatrixRank MatrixTDistribution Max MaxBend MaxCellMeasure MaxColorDistance MaxDetect MaxDuration MaxExtraBandwidths MaxExtraConditions MaxFeatureDisplacement MaxFeatures MaxFilter MaximalBy Maximize MaxItems MaxIterations MaxLimit MaxMemoryUsed MaxMixtureKernels MaxOverlapFraction MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxTrainingRounds MaxValue MaxwellDistribution MaxWordGap McLaughlinGroupMcL Mean MeanAbsoluteLossLayer MeanAround MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter MeanSquaredLossLayer Median MedianDeviation MedianFilter MedicalTestData Medium MeijerG MeijerGReduce MeixnerDistribution MellinConvolve MellinTransform MemberQ MemoryAvailable MemoryConstrained MemoryConstraint MemoryInUse MengerMesh Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuList MenuPacket MenuSortingValue MenuStyle MenuView Merge MergeDifferences MergingFunction MersennePrimeExponent MersennePrimeExponentQ Mesh MeshCellCentroid MeshCellCount MeshCellHighlight MeshCellIndex MeshCellLabel MeshCellMarker MeshCellMeasure MeshCellQuality MeshCells MeshCellShapeFunction MeshCellStyle MeshCoordinates MeshFunctions MeshPrimitives MeshQualityGoal MeshRange MeshRefinementFunction MeshRegion MeshRegionQ MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageObject MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation MeteorShowerData Method MethodOptions MexicanHatWavelet MeyerWavelet Midpoint Min MinColorDistance MinDetect MineralData MinFilter MinimalBy MinimalPolynomial MinimalStateSpaceModel Minimize MinimumTimeIncrement MinIntervalSize MinkowskiQuestionMark MinLimit MinMax MinorPlanetData Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingBehavior MissingDataMethod MissingDataRules MissingQ MissingString MissingStyle MissingValuePattern MittagLefflerE MixedFractionParts MixedGraphQ MixedMagnitude MixedRadix MixedRadixQuantity MixedUnit MixtureDistribution Mod Modal Mode Modular ModularInverse ModularLambda Module Modulus MoebiusMu Molecule MoleculeContainsQ MoleculeEquivalentQ MoleculeGraph MoleculeModify MoleculePattern MoleculePlot MoleculePlot3D MoleculeProperty MoleculeQ MoleculeValue Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction MomentOfInertia Monday Monitor MonomialList MonomialOrder MonsterGroupM MoonPhase MoonPosition MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform MortalityData Most MountainData MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovieData MovingAverage MovingMap MovingMedian MoyalDistribution Multicolumn MultiedgeStyle MultigraphQ MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity MultiplySides Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistribution' +\r\n 'N NakagamiDistribution NameQ Names NamespaceBox NamespaceBoxOptions Nand NArgMax NArgMin NBernoulliB NBodySimulation NBodySimulationData NCache NDEigensystem NDEigenvalues NDSolve NDSolveValue Nearest NearestFunction NearestNeighborGraph NearestTo NebulaData NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeDefiniteMatrixQ NegativeIntegers NegativeMultinomialDistribution NegativeRationals NegativeReals NegativeSemidefiniteMatrixQ NeighborhoodData NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestGraph NestList NestWhile NestWhileList NetAppend NetBidirectionalOperator NetChain NetDecoder NetDelete NetDrop NetEncoder NetEvaluationMode NetExtract NetFlatten NetFoldOperator NetGraph NetInformation NetInitialize NetInsert NetInsertSharedArrays NetJoin NetMapOperator NetMapThreadOperator NetMeasurements NetModel NetNestOperator NetPairEmbeddingOperator NetPort NetPortGradient NetPrepend NetRename NetReplace NetReplacePart NetSharedArray NetStateObject NetTake NetTrain NetTrainResultsObject NetworkPacketCapture NetworkPacketRecording NetworkPacketRecordingDuring NetworkPacketTrace NeumannValue NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextCell NextDate NextPrime NextScheduledTaskTime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NightHemisphere NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants NondimensionalizationTransform None NoneTrue NonlinearModelFit NonlinearStateSpaceModel NonlocalMeansFilter NonNegative NonNegativeIntegers NonNegativeRationals NonNegativeReals NonPositive NonPositiveIntegers NonPositiveRationals NonPositiveReals Nor NorlundB Norm Normal NormalDistribution NormalGrouping NormalizationLayer Normalize Normalized NormalizedSquaredEuclideanDistance NormalMatrixQ NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookImport NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookTemplate NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde Nothing NotHumpDownHump NotHumpEqual NotificationFunction NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar Now NoWhitespace NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms NuclearExplosionData NuclearReactorData Null NullRecords NullSpace NullWords Number NumberCompose NumberDecompose NumberExpand NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberLinePlot NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumeratorDenominator NumericalOrder NumericalSort NumericArray NumericArrayQ NumericArrayType NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlot' +\r\n 'O ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OceanData Octahedron OddQ Off Offset OLEData On ONanGroupON Once OneIdentity Opacity OpacityFunction OpacityFunctionScaling Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionalElement OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering OrderingBy OrderingLayer Orderless OrderlessPatternSequence OrnsteinUhlenbeckProcess Orthogonalize OrthogonalMatrixQ Out Outer OuterPolygon OuterPolyhedron OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OverwriteTarget OwenT OwnValues' +\r\n 'Package PackingMethod PaddedForm Padding PaddingLayer PaddingSize PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageTheme PageWidth Pagination PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath PalindromeQ Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo Parallelepiped ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds Parallelogram ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParametricRegion ParentBox ParentCell ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParentNotebook ParetoDistribution ParetoPickandsDistribution ParkData Part PartBehavior PartialCorrelationFunction PartialD ParticleAcceleratorData ParticleData Partition PartitionGranularity PartitionsP PartitionsQ PartLayer PartOfSpeech PartProtection ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteAutoQuoteCharacters PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PeakDetect PeanoCurve PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PercentForm PerfectNumber PerfectNumberQ PerformanceGoal Perimeter PeriodicBoundaryCondition PeriodicInterpolation Periodogram PeriodogramArray Permanent Permissions PermissionsGroup PermissionsGroupMemberQ PermissionsGroups PermissionsKey PermissionsKeys PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PerpendicularBisector PersistenceLocation PersistenceTime PersistentObject PersistentObjects PersistentValue PersonData PERTDistribution PetersenGraph PhaseMargins PhaseRange PhysicalSystemData Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest PingTime Pink PitchRecognize Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarAngle PlanarGraph PlanarGraphQ PlanckRadiationLaw PlaneCurveData PlanetaryMoonData PlanetData PlantData Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLabels PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangeClipPlanesStyle PlotRangePadding PlotRegion PlotStyle PlotTheme Pluralize Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox Point3DBoxOptions PointBox PointBoxOptions PointFigureChart PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonalNumber PolygonAngle PolygonBox PolygonBoxOptions PolygonCoordinates PolygonDecomposition PolygonHoleScale PolygonIntersections PolygonScale Polyhedron PolyhedronAngle PolyhedronCoordinates PolyhedronData PolyhedronDecomposition PolyhedronGenus PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PoolingLayer PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position PositionIndex Positive PositiveDefiniteMatrixQ PositiveIntegers PositiveRationals PositiveReals PositiveSemidefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerRange PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement Predict PredictionRoot PredictorFunction PredictorInformation PredictorMeasurements PredictorMeasurementsObject PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependLayer PrependTo PreprocessingRules PreserveColor PreserveImageOptions Previous PreviousCell PreviousDate PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitivePolynomialQ PrimitiveRoot PrimitiveRootList PrincipalComponents PrincipalValue Print PrintableASCIIQ PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment Printout3D Printout3DPreviewer PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateKey PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessConnection ProcessDirectory ProcessEnvironment Processes ProcessEstimator ProcessInformation ProcessObject ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessStatus ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm ProofObject Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse PsychrometricPropertyData PublicKey PublisherID PulsarData PunctuationCharacter Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptions' +\r\n 'QBinomial QFactorial QGamma QHypergeometricPFQ QnDispersion QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ QuadraticOptimization Quantile QuantilePlot Quantity QuantityArray QuantityDistribution QuantityForm QuantityMagnitude QuantityQ QuantityUnit QuantityVariable QuantityVariableCanonicalUnit QuantityVariableDimensions QuantityVariableIdentifier QuantityVariablePhysicalQuantity Quartics QuartileDeviation Quartiles QuartileSkewness Query QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainder' +\r\n 'RadialGradientImage RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RadonTransform RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Ramp Random RandomChoice RandomColor RandomComplex RandomEntity RandomFunction RandomGeoPosition RandomGraph RandomImage RandomInstance RandomInteger RandomPermutation RandomPoint RandomPolygon RandomPolyhedron RandomPrime RandomReal RandomSample RandomSeed RandomSeeding RandomVariate RandomWalkProcess RandomWord Range RangeFilter RangeSpecification RankedMax RankedMin RarerProbability Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadByteArray ReadLine ReadList ReadProtected ReadString Real RealAbs RealBlockDiagonalForm RealDigits RealExponent Reals RealSign Reap RecognitionPrior RecognitionThreshold Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RectangularRepeatingElement RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate Region RegionBinarize RegionBoundary RegionBounds RegionCentroid RegionDifference RegionDimension RegionDisjoint RegionDistance RegionDistanceFunction RegionEmbeddingDimension RegionEqual RegionFunction RegionImage RegionIntersection RegionMeasure RegionMember RegionMemberFunction RegionMoment RegionNearest RegionNearestFunction RegionPlot RegionPlot3D RegionProduct RegionQ RegionResize RegionSize RegionSymmetricDifference RegionUnion RegionWithin RegisterExternalEvaluator RegularExpression Regularization RegularlySampledQ RegularPolygon ReIm ReImLabels ReImPlot ReImStyle Reinstall RelationalDatabase RelationGraph Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot RemoteAuthorizationCaching RemoteConnect RemoteConnectionObject RemoteFile RemoteRun RemoteRunProcess Remove RemoveAlphaChannel RemoveAsynchronousTask RemoveAudioStream RemoveBackground RemoveChannelListener RemoveChannelSubscribers Removed RemoveDiacritics RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RemoveUsers RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart RepairMesh Repeated RepeatedNull RepeatedString RepeatedTiming RepeatingElement Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated ReplicateLayer RequiredPhysicalQuantities Resampling ResamplingAlgorithmData ResamplingMethod Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask ReshapeLayer Residue ResizeLayer Resolve ResourceAcquire ResourceData ResourceFunction ResourceObject ResourceRegister ResourceRemove ResourceSearch ResourceSubmissionObject ResourceSubmit ResourceSystemBase ResourceUpdate ResponseForm Rest RestartInterval Restricted Resultant ResumePacket Return ReturnEntersInput ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnReceiptFunction ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseSort ReverseSortBy ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ RiemannXi Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightComposition RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity RollPitchYawAngles RollPitchYawMatrix RomanNumeral Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RSolveValue RudinShapiro RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulePlot RulerUnits Run RunProcess RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilarity' +\r\n 'SameQ SameTest SampledEntityClass SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SASTriangle SatelliteData SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveConnection SaveDefinitions SavitzkyGolayMatrix SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTask ScheduledTaskActiveQ ScheduledTaskInformation ScheduledTaskInformationData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScientificNotationThreshold ScorerGi ScorerGiPrime ScorerHi ScorerHiPrime ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptForm ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition SearchAdjustment SearchIndexObject SearchIndices SearchQueryString SearchResultObject Sec Sech SechDistribution SecondOrderConeOptimization SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SecuredAuthenticationKey SecuredAuthenticationKeys SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook SelectFirst Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemanticImport SemanticImportString SemanticInterpretation SemialgebraicComponentInstances SemidefiniteOptimization SendMail SendMessage Sequence SequenceAlignment SequenceAttentionLayer SequenceCases SequenceCount SequenceFold SequenceFoldList SequenceForm SequenceHold SequenceLastLayer SequenceMostLayer SequencePosition SequencePredict SequencePredictorFunction SequenceReplace SequenceRestLayer SequenceReverseLayer SequenceSplit Series SeriesCoefficient SeriesData ServiceConnect ServiceDisconnect ServiceExecute ServiceObject ServiceRequest ServiceResponse ServiceSubmit SessionSubmit SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetCloudDirectory SetCookies SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPermissions SetPrecision SetProperty SetSecuredAuthenticationKey SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemModel SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetUsers SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share SharingList Sharpen ShearingMatrix ShearingTransform ShellRegion ShenCastanMatrix ShiftedGompertzDistribution ShiftRegisterSequence Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortTimeFourier ShortTimeFourierData ShortUpArrow Show ShowAutoConvert ShowAutoSpellCheck ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowCodeAssist ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiderealTime SiegelTheta SiegelTukeyTest SierpinskiCurve SierpinskiMesh Sign Signature SignedRankTest SignedRegionDistance SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ SimplePolygonQ SimplePolyhedronQ Simplex Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution SkinStyle Skip SliceContourPlot3D SliceDensityPlot3D SliceDistribution SliceVectorPlot3D Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDecomposition SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SnDispersion Snippet SnubPolyhedron SocialMediaData Socket SocketConnect SocketListen SocketListener SocketObject SocketOpen SocketReadMessage SocketReadyQ Sockets SocketWaitAll SocketWaitNext SoftmaxLayer SokalSneathDissimilarity SolarEclipse SolarSystemFeatureData SolidAngle SolidData SolidRegionQ Solve SolveAlways SolveDelayed Sort SortBy SortedBy SortedEntityClass Sound SoundAndGraphics SoundNote SoundVolume SourceLink Sow Space SpaceCurveData SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution SpatialMedian SpatialTransformationLayer Speak SpeakTextPacket SpearmanRankTest SpearmanRho SpeciesData SpecificityGoal SpectralLineData Spectrogram SpectrogramArray Specularity SpeechRecognize SpeechSynthesize SpellingCorrection SpellingCorrectionList SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SpherePoints SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SphericalShell SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquareMatrixQ SquareRepeatingElement SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave SSSTriangle StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackedDateListPlot StackedListPlot StackInhibit StadiumShape StandardAtmosphereData StandardDeviation StandardDeviationFilter StandardForm Standardize Standardized StandardOceanData StandbyDistribution Star StarClusterData StarData StarGraph StartAsynchronousTask StartExternalSession StartingStepSize StartOfLine StartOfString StartProcess StartScheduledTask StartupSound StartWebSession StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StateTransformationLinearize StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StereochemistryElements StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StoppingPowerData StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamMarkers StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringContainsQ StringCount StringDelete StringDrop StringEndsQ StringExpression StringExtract StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPadLeft StringPadRight StringPart StringPartition StringPosition StringQ StringRepeat StringReplace StringReplaceList StringReplacePart StringReverse StringRiffle StringRotateLeft StringRotateRight StringSkeleton StringSplit StringStartsQ StringTake StringTemplate StringToByteArray StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleData StyleDefinitions StyleForm StyleHints StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subdivide Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subsequences Subset SubsetEqual SubsetMap SubsetQ Subsets SubStar SubstitutionSystem Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubtractSides SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde Success SuchThat Sum SumConvergence SummationLayer Sunday SunPosition Sunrise Sunset SuperDagger SuperMinus SupernovaData SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceArea SurfaceColor SurfaceData SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricKey SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Synonyms Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SynthesizeMissingValues SystemDialogInput SystemException SystemGet SystemHelpPath SystemInformation SystemInformationData SystemInstall SystemModel SystemModeler SystemModelExamples SystemModelLinearize SystemModelParametricSimulate SystemModelPlot SystemModelProgressReporting SystemModelReliability SystemModels SystemModelSimulate SystemModelSimulateSensitivity SystemModelSimulationData SystemOpen SystemOptions SystemProcessData SystemProcesses SystemsConnectionsModel SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelLinearity SystemsModelMerge SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemsModelVectorRelativeOrders SystemStub SystemTest' +\r\n 'Tab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TableViewBoxBackground TableViewBoxOptions TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeDrop TakeLargest TakeLargestBy TakeList TakeSmallest TakeSmallestBy TakeWhile Tally Tan Tanh TargetDevice TargetFunctions TargetSystem TargetUnits TaskAbort TaskExecute TaskObject TaskRemove TaskResume Tasks TaskSuspend TaskWait TautologyQ TelegraphProcess TemplateApply TemplateArgBox TemplateBox TemplateBoxOptions TemplateEvaluate TemplateExpression TemplateIf TemplateObject TemplateSequence TemplateSlot TemplateSlotSequence TemplateUnevaluated TemplateVerbatim TemplateWith TemporalData TemporalRegularity Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge TestID TestReport TestReportObject TestResultObject Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCases TextCell TextClipboardType TextContents TextData TextElement TextForm TextGrid TextJustification TextLine TextPacket TextParagraph TextPosition TextRecognize TextSearch TextSearchReport TextSentences TextString TextStructure TextStyle TextTranslation Texture TextureCoordinateFunction TextureCoordinateScaling TextWords Therefore ThermodynamicData ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreadingLayer ThreeJSymbol Threshold Through Throw ThueMorse Thumbnail Thursday Ticks TicksStyle TideData Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint TimeDirection TimeFormat TimeGoal TimelinePlot TimeObject TimeObjectQ Times TimesBy TimeSeries TimeSeriesAggregate TimeSeriesForecast TimeSeriesInsert TimeSeriesInvertibility TimeSeriesMap TimeSeriesMapThread TimeSeriesModel TimeSeriesModelFit TimeSeriesResample TimeSeriesRescale TimeSeriesShift TimeSeriesThread TimeSeriesWindow TimeUsed TimeValue TimeWarpingCorrespondence TimeWarpingDistance TimeZone TimeZoneConvert TimeZoneOffset Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate Today ToDiscreteTimeModel ToEntity ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase Tomorrow ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform ToPolarCoordinates TopologicalSort ToRadicals ToRules ToSphericalCoordinates ToString Total TotalHeight TotalLayer TotalVariationFilter TotalWidth TouchPosition TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TrackingFunction TracyWidomDistribution TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TrainingProgressCheckpointing TrainingProgressFunction TrainingProgressMeasurements TrainingProgressReporting TrainingStoppingCriterion TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationClass TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField TransformedProcess TransformedRegion TransitionDirection TransitionDuration TransitionEffect TransitiveClosureGraph TransitiveReductionGraph Translate TranslationOptions TranslationTransform Transliterate Transparent TransparentColor Transpose TransposeLayer TrapSelection TravelDirections TravelDirectionsData TravelDistance TravelDistanceList TravelMethod TravelTime TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle Triangle TriangleCenter TriangleConstruct TriangleMeasurement TriangleWave TriangularDistribution TriangulateMesh Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean TrimmedVariance TropicalStormData True TrueQ TruncatedDistribution TruncatedPolyhedron TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBoxOptions TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow TunnelData Tuples TuranGraph TuringMachine TuttePolynomial TwoWayRule Typed TypeSpecifier' +\r\n 'UnateQ Uncompress UnconstrainedParameters Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UnderseaFeatureData UndirectedEdge UndirectedGraph UndirectedGraphQ UndoOptions UndoTrackedVariables Unequal UnequalTo Unevaluated UniformDistribution UniformGraphDistribution UniformPolyhedron UniformSumDistribution Uninstall Union UnionPlus Unique UnitaryMatrixQ UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitSystem UnitTriangle UnitVector UnitVectorLayer UnityDimensions UniverseModelData UniversityData UnixTime Unprotect UnregisterExternalEvaluator UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpdateSearchIndex UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize UpperTriangularMatrixQ Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpTo UpValues URL URLBuild URLDecode URLDispatcher URLDownload URLDownloadSubmit URLEncode URLExecute URLExpand URLFetch URLFetchAsynchronous URLParse URLQueryDecode URLQueryEncode URLRead URLResponseTime URLSave URLSaveAsynchronous URLShorten URLSubmit UseGraphicsRange UserDefinedWavelet Using UsingFrontEnd UtilityFunction' +\r\n 'V2Get ValenceErrorHandling ValidationLength ValidationSet Value ValueBox ValueBoxOptions ValueDimensions ValueForm ValuePreprocessingFunction ValueQ Values ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorAround VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorGreater VectorGreaterEqual VectorLess VectorLessEqual VectorMarkers VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerificationTest VerifyConvergence VerifyDerivedKey VerifyDigitalSignature VerifyInterpretation VerifySecurityCertificates VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexContract VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight VertexWeightedGraphQ Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewProjection ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoiceStyleData VoigtDistribution VolcanoData Volume VonMisesDistribution VoronoiMesh' +\r\n 'WaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WarpingCorrespondence WarpingDistance WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeatherForecastData WebAudioSearch WebElementObject WeberE WebExecute WebImage WebImageSearch WebSearch WebSessionObject WebSessions WebWindowObject Wedge Wednesday WeibullDistribution WeierstrassE1 WeierstrassE2 WeierstrassE3 WeierstrassEta1 WeierstrassEta2 WeierstrassEta3 WeierstrassHalfPeriods WeierstrassHalfPeriodW1 WeierstrassHalfPeriodW2 WeierstrassHalfPeriodW3 WeierstrassInvariantG2 WeierstrassInvariantG3 WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White WhiteNoiseProcess WhitePoint Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WikipediaData WikipediaSearch WilksW WilksWTest WindDirectionData WindingCount WindingPolygon WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowPersistentStyles WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth WindSpeedData WindVectorData WinsorizedMean WinsorizedVariance WishartMatrixDistribution With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult WolframLanguageData Word WordBoundary WordCharacter WordCloud WordCount WordCounts WordData WordDefinition WordFrequency WordFrequencyData WordList WordOrientation WordSearch WordSelectionFunction WordSeparators WordSpacings WordStem WordTranslation WorkingPrecision WrapAround Write WriteLine WriteString Wronskian' +\r\n 'XMLElement XMLObject XMLTemplate Xnor Xor XYZColor' +\r\n 'Yellow Yesterday YuleDissimilarity' +\r\n 'ZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZIPCodeData ZipfDistribution ZoomCenter ZoomFactor ZTest ZTransform' +\r\n '$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AllowExternalChannelFunctions $AssertFunction $Assumptions $AsynchronousTask $AudioInputDevices $AudioOutputDevices $BaseDirectory $BatchInput $BatchOutput $BlockchainBase $BoxForms $ByteOrdering $CacheBaseDirectory $Canceled $ChannelBase $CharacterEncoding $CharacterEncodings $CloudBase $CloudConnected $CloudCreditsAvailable $CloudEvaluation $CloudExpressionBase $CloudObjectNameFormat $CloudObjectURLType $CloudRootDirectory $CloudSymbolBase $CloudUserID $CloudUserUUID $CloudVersion $CloudVersionNumber $CloudWolframEngineVersionNumber $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $Cookies $CookieStore $CreationDate $CurrentLink $CurrentTask $CurrentWebSession $DateStringFormat $DefaultAudioInputDevice $DefaultAudioOutputDevice $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultLocalBase $DefaultMailbox $DefaultNetworkInterface $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $EmbedCodeEnvironments $EmbeddableServices $EntityStores $Epilog $EvaluationCloudBase $EvaluationCloudObject $EvaluationEnvironment $ExportFormats $Failed $FinancialDataSource $FontFamilies $FormatType $FrontEnd $FrontEndSession $GeoEntityTypes $GeoLocation $GeoLocationCity $GeoLocationCountry $GeoLocationPrecision $GeoLocationSource $HistoryLength $HomeDirectory $HTMLExportRules $HTTPCookies $HTTPRequest $IgnoreEOF $ImageFormattingWidth $ImagingDevice $ImagingDevices $ImportFormats $IncomingMailSettings $InitialDirectory $Initialization $InitializationContexts $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $InterpreterTypes $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $LocalBase $LocalSymbolBase $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $MobilePhone $ModuleNumber $NetworkConnected $NetworkInterfaces $NetworkLicense $NewMessage $NewSymbol $Notebooks $NoValue $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $Permissions $PermissionsGroupBase $PersistenceBase $PersistencePath $PipeSupported $PlotTheme $Post $Pre $PreferencesDirectory $PreInitialization $PrePrint $PreRead $PrintForms $PrintLiteral $Printout3DPreviewer $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $PublisherID $RandomState $RecursionLimit $RegisteredDeviceClasses $RegisteredUserName $ReleaseNumber $RequesterAddress $RequesterWolframID $RequesterWolframUUID $ResourceSystemBase $RootDirectory $ScheduledTask $ScriptCommandLine $ScriptInputString $SecuredAuthenticationKeyTokens $ServiceCreditsAvailable $Services $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SourceLink $SSHAuthentication $SummaryBoxDataSizeLimit $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemMemory $SystemShell $SystemTimeZone $SystemWordLength $TemplatePath $TemporaryDirectory $TemporaryPrefix $TestFileName $TextStyle $TimedOut $TimeUnit $TimeZone $TimeZoneEntity $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $UnitSystem $Urgent $UserAddOnsDirectory $UserAgentLanguages $UserAgentMachine $UserAgentName $UserAgentOperatingSystem $UserAgentString $UserAgentVersion $UserBaseDirectory $UserDocumentsDirectory $Username $UserName $UserURLBase $Version $VersionNumber $VoiceStyles $WolframID $WolframUUID',\r\n contains: [\r\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)', {contains: ['self']}),\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = /*\r\n Formal syntax is not published, helpful link:\r\n https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf\r\n*/\r\nfunction(hljs) {\r\n\r\n var TRANSPOSE_RE = '(\\'|\\\\.\\')+';\r\n var TRANSPOSE = {\r\n relevance: 0,\r\n contains: [\r\n { begin: TRANSPOSE_RE }\r\n ]\r\n };\r\n\r\n return {\r\n keywords: {\r\n keyword:\r\n 'break case catch classdef continue else elseif end enumerated events for function ' +\r\n 'global if methods otherwise parfor persistent properties return spmd switch try while',\r\n built_in:\r\n 'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' +\r\n 'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' +\r\n 'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' +\r\n 'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' +\r\n 'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' +\r\n 'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' +\r\n 'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' +\r\n 'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' +\r\n 'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' +\r\n 'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' +\r\n 'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' +\r\n 'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan ' +\r\n 'isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal ' +\r\n 'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table ' +\r\n 'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun ' +\r\n 'legend intersect ismember procrustes hold num2cell '\r\n },\r\n illegal: '(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',\r\n contains: [\r\n {\r\n className: 'function',\r\n beginKeywords: 'function', end: '$',\r\n contains: [\r\n hljs.UNDERSCORE_TITLE_MODE,\r\n {\r\n className: 'params',\r\n variants: [\r\n {begin: '\\\\(', end: '\\\\)'},\r\n {begin: '\\\\[', end: '\\\\]'}\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n className: 'built_in',\r\n begin: /true|false/,\r\n relevance: 0,\r\n starts: TRANSPOSE\r\n },\r\n {\r\n begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE,\r\n relevance: 0\r\n },\r\n {\r\n className: 'number',\r\n begin: hljs.C_NUMBER_RE,\r\n relevance: 0,\r\n starts: TRANSPOSE\r\n },\r\n {\r\n className: 'string',\r\n begin: '\\'', end: '\\'',\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n {begin: '\\'\\''}]\r\n },\r\n {\r\n begin: /\\]|}|\\)/,\r\n relevance: 0,\r\n starts: TRANSPOSE\r\n },\r\n {\r\n className: 'string',\r\n begin: '\"', end: '\"',\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n {begin: '\"\"'}\r\n ],\r\n starts: TRANSPOSE\r\n },\r\n hljs.COMMENT('^\\\\s*\\\\%\\\\{\\\\s*$', '^\\\\s*\\\\%\\\\}\\\\s*$'),\r\n hljs.COMMENT('\\\\%', '$')\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var KEYWORDS = 'if then else elseif for thru do while unless step in and or not';\r\n var LITERALS = 'true false unknown inf minf ind und %e %i %pi %phi %gamma';\r\n var BUILTIN_FUNCTIONS =\r\n ' abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate'\r\n + ' addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix'\r\n + ' adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type'\r\n + ' alias allroots alphacharp alphanumericp amortization %and annuity_fv'\r\n + ' annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2'\r\n + ' applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply'\r\n + ' arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger'\r\n + ' asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order'\r\n + ' asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method'\r\n + ' av average_degree backtrace bars barsplot barsplot_description base64 base64_decode'\r\n + ' bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx'\r\n + ' bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify'\r\n + ' bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized'\r\n + ' bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp'\r\n + ' bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition'\r\n + ' block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description'\r\n + ' break bug_report build_info|10 buildq build_sample burn cabs canform canten'\r\n + ' cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli'\r\n + ' cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform'\r\n + ' cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel'\r\n + ' cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial'\r\n + ' cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson'\r\n + ' cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay'\r\n + ' ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic'\r\n + ' cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2'\r\n + ' charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps'\r\n + ' chinese cholesky christof chromatic_index chromatic_number cint circulant_graph'\r\n + ' clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph'\r\n + ' clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse'\r\n + ' collectterms columnop columnspace columnswap columnvector combination combine'\r\n + ' comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph'\r\n + ' complete_graph complex_number_p components compose_functions concan concat'\r\n + ' conjugate conmetderiv connected_components connect_vertices cons constant'\r\n + ' constantp constituent constvalue cont2part content continuous_freq contortion'\r\n + ' contour_plot contract contract_edge contragrad contrib_ode convert coord'\r\n + ' copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1'\r\n + ' covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline'\r\n + ' ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph'\r\n + ' cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate'\r\n + ' declare declare_constvalue declare_dimensions declare_fundamental_dimensions'\r\n + ' declare_fundamental_units declare_qty declare_translated declare_unit_conversion'\r\n + ' declare_units declare_weights decsym defcon define define_alt_display define_variable'\r\n + ' defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten'\r\n + ' delta demo demoivre denom depends derivdegree derivlist describe desolve'\r\n + ' determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag'\r\n + ' diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export'\r\n + ' dimacs_import dimension dimensionless dimensions dimensions_as_list direct'\r\n + ' directory discrete_freq disjoin disjointp disolate disp dispcon dispform'\r\n + ' dispfun dispJordan display disprule dispterms distrib divide divisors divsum'\r\n + ' dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart'\r\n + ' draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring'\r\n + ' edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth'\r\n + ' einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome'\r\n + ' ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using'\r\n + ' ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi'\r\n + ' ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp'\r\n + ' equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors'\r\n + ' euler ev eval_string evenp every evolution evolution2d evundiff example exp'\r\n + ' expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci'\r\n + ' expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li'\r\n + ' expintegral_shi expintegral_si explicit explose exponentialize express expt'\r\n + ' exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum'\r\n + ' factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements'\r\n + ' fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge'\r\n + ' file_search file_type fillarray findde find_root find_root_abs find_root_error'\r\n + ' find_root_rel first fix flatten flength float floatnump floor flower_snark'\r\n + ' flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran'\r\n + ' fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp'\r\n + ' foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s'\r\n + ' from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp'\r\n + ' fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units'\r\n + ' fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized'\r\n + ' gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide'\r\n + ' gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym'\r\n + ' geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean'\r\n + ' geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string'\r\n + ' get_pixel get_plot_option get_tex_environment get_tex_environment_default'\r\n + ' get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close'\r\n + ' gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum'\r\n + ' gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import'\r\n + ' graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery'\r\n + ' graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph'\r\n + ' grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path'\r\n + ' hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite'\r\n + ' hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description'\r\n + ' hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph'\r\n + ' icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy'\r\n + ' ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart'\r\n + ' imetric implicit implicit_derivative implicit_plot indexed_tensor indices'\r\n + ' induced_subgraph inferencep inference_result infix info_display init_atensor'\r\n + ' init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions'\r\n + ' integrate intersect intersection intervalp intopois intosum invariant1 invariant2'\r\n + ' inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc'\r\n + ' inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns'\r\n + ' inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint'\r\n + ' invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph'\r\n + ' is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate'\r\n + ' isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph'\r\n + ' items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc'\r\n + ' jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd'\r\n + ' jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill'\r\n + ' killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis'\r\n + ' kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform'\r\n + ' kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete'\r\n + ' kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace'\r\n + ' kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2'\r\n + ' kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson'\r\n + ' kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange'\r\n + ' laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp'\r\n + ' lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length'\r\n + ' let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit'\r\n + ' Lindstedt linear linearinterpol linear_program linear_regression line_graph'\r\n + ' linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials'\r\n + ' listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry'\r\n + ' log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst'\r\n + ' lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact'\r\n + ' lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub'\r\n + ' lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma'\r\n + ' make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country'\r\n + ' make_polygon make_random_state make_rgb_picture makeset make_string_input_stream'\r\n + ' make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom'\r\n + ' maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display'\r\n + ' mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker'\r\n + ' max max_clique max_degree max_flow maximize_lp max_independent_set max_matching'\r\n + ' maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform'\r\n + ' mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete'\r\n + ' mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic'\r\n + ' mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t'\r\n + ' mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull'\r\n + ' median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree'\r\n + ' min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor'\r\n + ' minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton'\r\n + ' mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions'\r\n + ' multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff'\r\n + ' multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary'\r\n + ' natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext'\r\n + ' newdet new_graph newline newton new_variable next_prime nicedummies niceindices'\r\n + ' ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp'\r\n + ' nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst'\r\n + ' nthroot nullity nullspace num numbered_boundaries numberp number_to_octets'\r\n + ' num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai'\r\n + ' nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin'\r\n + ' oid_to_octets op opena opena_binary openr openr_binary openw openw_binary'\r\n + ' operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless'\r\n + ' orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap'\r\n + ' out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface'\r\n + ' parg parGosper parse_string parse_timedate part part2cont partfrac partition'\r\n + ' partition_set partpol path_digraph path_graph pathname_directory pathname_name'\r\n + ' pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform'\r\n + ' pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete'\r\n + ' pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal'\r\n + ' pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal'\r\n + ' pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t'\r\n + ' pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph'\r\n + ' petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding'\r\n + ' playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff'\r\n + ' poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar'\r\n + ' polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion'\r\n + ' poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal'\r\n + ' poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal'\r\n + ' poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation'\r\n + ' poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm'\r\n + ' poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form'\r\n + ' poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part'\r\n + ' poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension'\r\n + ' poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod'\r\n + ' powerseries powerset prefix prev_prime primep primes principal_components'\r\n + ' print printf printfile print_graph printpois printprops prodrac product properties'\r\n + ' propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct'\r\n + ' puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp'\r\n + ' quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile'\r\n + ' quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2'\r\n + ' quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f'\r\n + ' quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel'\r\n + ' quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal'\r\n + ' quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t'\r\n + ' quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t'\r\n + ' quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan'\r\n + ' radius random random_bernoulli random_beta random_binomial random_bipartite_graph'\r\n + ' random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform'\r\n + ' random_exp random_f random_gamma random_general_finite_discrete random_geometric'\r\n + ' random_graph random_graph1 random_gumbel random_hypergeometric random_laplace'\r\n + ' random_logistic random_lognormal random_negative_binomial random_network'\r\n + ' random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto'\r\n + ' random_permutation random_poisson random_rayleigh random_regular_graph random_student_t'\r\n + ' random_tournament random_tree random_weibull range rank rat ratcoef ratdenom'\r\n + ' ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump'\r\n + ' ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array'\r\n + ' read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline'\r\n + ' read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate'\r\n + ' realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar'\r\n + ' rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus'\r\n + ' rem remainder remarray rembox remcomps remcon remcoord remfun remfunction'\r\n + ' remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions'\r\n + ' remove_fundamental_units remove_plot_option remove_vertex rempart remrule'\r\n + ' remsym remvalue rename rename_file reset reset_displays residue resolvante'\r\n + ' resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein'\r\n + ' resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer'\r\n + ' rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann'\r\n + ' rinvariant risch rk rmdir rncombine romberg room rootscontract round row'\r\n + ' rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i'\r\n + ' scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description'\r\n + ' scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second'\r\n + ' sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight'\r\n + ' setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state'\r\n + ' set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications'\r\n + ' set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path'\r\n + ' show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform'\r\n + ' simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert'\r\n + ' sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial'\r\n + ' skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp'\r\n + ' skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric'\r\n + ' skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic'\r\n + ' skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t'\r\n + ' skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t'\r\n + ' skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph'\r\n + ' smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve'\r\n + ' solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export'\r\n + ' sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1'\r\n + ' spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition'\r\n + ' sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus'\r\n + ' ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot'\r\n + ' starplot_description status std std1 std_bernoulli std_beta std_binomial'\r\n + ' std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma'\r\n + ' std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace'\r\n + ' std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t'\r\n + ' std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull'\r\n + ' stemplot stirling stirling1 stirling2 strim striml strimr string stringout'\r\n + ' stringp strong_components struve_h struve_l sublis sublist sublist_indices'\r\n + ' submatrix subsample subset subsetp subst substinpart subst_parallel substpart'\r\n + ' substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext'\r\n + ' symbolp symmdifference symmetricp system take_channel take_inference tan'\r\n + ' tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract'\r\n + ' tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference'\r\n + ' test_normality test_proportion test_proportions_difference test_rank_sum'\r\n + ' test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display'\r\n + ' texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter'\r\n + ' toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep'\r\n + ' totalfourier totient tpartpol trace tracematrix trace_options transform_sample'\r\n + ' translate translate_file transpose treefale tree_reduce treillis treinat'\r\n + ' triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate'\r\n + ' truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph'\r\n + ' truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget'\r\n + ' ultraspherical underlying_graph undiff union unique uniteigenvectors unitp'\r\n + ' units unit_step unitvector unorder unsum untellrat untimer'\r\n + ' untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli'\r\n + ' var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform'\r\n + ' var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel'\r\n + ' var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial'\r\n + ' var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson'\r\n + ' var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp'\r\n + ' verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance'\r\n + ' vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle'\r\n + ' vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j'\r\n + ' wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian'\r\n + ' xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta'\r\n + ' zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors'\r\n + ' zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table'\r\n + ' absboxchar activecontexts adapt_depth additive adim aform algebraic'\r\n + ' algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic'\r\n + ' animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar'\r\n + ' asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top'\r\n + ' azimuth background background_color backsubst berlefact bernstein_explicit'\r\n + ' besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest'\r\n + ' border boundaries_array box boxchar breakup %c capping cauchysum cbrange'\r\n + ' cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics'\r\n + ' colorbox columns commutative complex cone context contexts contour contour_levels'\r\n + ' cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp'\r\n + ' cube current_let_rule_package cylinder data_file_name debugmode decreasing'\r\n + ' default_let_rule_package delay dependencies derivabbrev derivsubst detout'\r\n + ' diagmetric diff dim dimensions dispflag display2d|10 display_format_internal'\r\n + ' distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor'\r\n + ' doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules'\r\n + ' dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart'\r\n + ' edge_color edge_coloring edge_partition edge_type edge_width %edispflag'\r\n + ' elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer'\r\n + ' epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type'\r\n + ' %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand'\r\n + ' expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine'\r\n + ' factlim factorflag factorial_expand factors_only fb feature features'\r\n + ' file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10'\r\n + ' file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color'\r\n + ' fill_density filled_func fixed_vertices flipflag float2bf font font_size'\r\n + ' fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim'\r\n + ' gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command'\r\n + ' gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command'\r\n + ' gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command'\r\n + ' gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble'\r\n + ' gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args'\r\n + ' Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both'\r\n + ' head_length head_type height hypergeometric_representation %iargs ibase'\r\n + ' icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form'\r\n + ' ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval'\r\n + ' infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued'\r\n + ' integrate_use_rootsof integration_constant integration_constant_counter interpolate_color'\r\n + ' intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr'\r\n + ' julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment'\r\n + ' label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max'\r\n + ' leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear'\r\n + ' linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params'\r\n + ' linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname'\r\n + ' loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx'\r\n + ' logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros'\r\n + ' mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult'\r\n + ' matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10'\r\n + ' maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint'\r\n + ' maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp'\r\n + ' mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver'\r\n + ' modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag'\r\n + ' newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc'\r\n + ' noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np'\r\n + ' npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties'\r\n + ' opsubst optimprefix optionset orientation origin orthopoly_returns_intervals'\r\n + ' outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution'\r\n + ' %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart'\r\n + ' png_file pochhammer_max_index points pointsize point_size points_joined point_type'\r\n + ' poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm'\r\n + ' poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list'\r\n + ' poly_secondary_elimination_order poly_top_reduction_only posfun position'\r\n + ' powerdisp pred prederror primep_number_of_tests product_use_gamma program'\r\n + ' programmode promote_float_to_bigfloat prompt proportional_axes props psexpand'\r\n + ' ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof'\r\n + ' ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann'\r\n + ' ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw'\r\n + ' refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs'\r\n + ' rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy'\r\n + ' same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck'\r\n + ' setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width'\r\n + ' show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type'\r\n + ' show_vertices show_weight simp simplified_output simplify_products simpproduct'\r\n + ' simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn'\r\n + ' solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag'\r\n + ' stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda'\r\n + ' subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric'\r\n + ' tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials'\r\n + ' tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch'\r\n + ' tr track transcompile transform transform_xy translate_fast_arrays transparent'\r\n + ' transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex'\r\n + ' tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign'\r\n + ' trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars'\r\n + ' tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode'\r\n + ' tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes'\r\n + ' ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble'\r\n + ' usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition'\r\n + ' vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface'\r\n + ' wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel'\r\n + ' xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate'\r\n + ' xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel'\r\n + ' xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width'\r\n + ' ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis'\r\n + ' ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis'\r\n + ' yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob'\r\n + ' zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest';\r\n var SYMBOLS = '_ __ %|0 %%|0';\r\n\r\n return {\r\n lexemes: '[A-Za-z_%][0-9A-Za-z_%]*',\r\n keywords: {\r\n keyword: KEYWORDS,\r\n literal: LITERALS,\r\n built_in: BUILTIN_FUNCTIONS,\r\n symbol: SYMBOLS,\r\n },\r\n contains: [\r\n {\r\n className: 'comment',\r\n begin: '/\\\\*',\r\n end: '\\\\*/',\r\n contains: ['self']\r\n },\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'number',\r\n relevance: 0,\r\n variants: [\r\n {\r\n // float number w/ exponent\r\n // hmm, I wonder if we ought to include other exponent markers?\r\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Ee][-+]?\\\\d+\\\\b',\r\n },\r\n {\r\n // bigfloat number\r\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Bb][-+]?\\\\d+\\\\b',\r\n relevance: 10\r\n },\r\n {\r\n // float number w/out exponent\r\n // Doesn't seem to recognize floats which start with '.'\r\n begin: '\\\\b(\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)\\\\b',\r\n },\r\n {\r\n // integer in base up to 36\r\n // Doesn't seem to recognize integers which end with '.'\r\n begin: '\\\\b(\\\\d+|0[0-9A-Za-z]+)\\\\.?\\\\b',\r\n }\r\n ]\r\n }\r\n ],\r\n illegal: /@/\r\n }\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords:\r\n 'int float string vector matrix if else switch case default while do for in break ' +\r\n 'continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic ' +\r\n 'addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey ' +\r\n 'affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve ' +\r\n 'alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor ' +\r\n 'animDisplay animView annotate appendStringArray applicationName applyAttrPreset ' +\r\n 'applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx ' +\r\n 'artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu ' +\r\n 'artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand ' +\r\n 'assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface ' +\r\n 'attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu ' +\r\n 'attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp ' +\r\n 'attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery ' +\r\n 'autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults ' +\r\n 'bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership ' +\r\n 'bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType ' +\r\n 'boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu ' +\r\n 'buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge ' +\r\n 'cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch ' +\r\n 'catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox ' +\r\n 'character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp ' +\r\n 'checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip ' +\r\n 'clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore ' +\r\n 'closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter ' +\r\n 'cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color ' +\r\n 'colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp ' +\r\n 'colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem ' +\r\n 'componentEditor compositingInterop computePolysetVolume condition cone confirmDialog ' +\r\n 'connectAttr connectControl connectDynamic connectJoint connectionInfo constrain ' +\r\n 'constrainValue constructionHistory container containsMultibyte contextInfo control ' +\r\n 'convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation ' +\r\n 'convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache ' +\r\n 'cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel ' +\r\n 'cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver ' +\r\n 'cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor ' +\r\n 'createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer ' +\r\n 'createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse ' +\r\n 'currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx ' +\r\n 'curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface ' +\r\n 'curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox ' +\r\n 'defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete ' +\r\n 'deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes ' +\r\n 'delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo ' +\r\n 'dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable ' +\r\n 'disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected ' +\r\n 'displayColor displayCull displayLevelOfDetail displayPref displayRGBColor ' +\r\n 'displaySmoothness displayStats displayString displaySurface distanceDimContext ' +\r\n 'distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct ' +\r\n 'doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator ' +\r\n 'duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression ' +\r\n 'dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor ' +\r\n 'dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers ' +\r\n 'editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor ' +\r\n 'editorTemplate effector emit emitter enableDevice encodeString endString endsWith env ' +\r\n 'equivalent equivalentTol erf error eval evalDeferred evalEcho event ' +\r\n 'exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp ' +\r\n 'expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof ' +\r\n 'fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo ' +\r\n 'filetest filletCurve filter filterCurve filterExpand filterStudioImport ' +\r\n 'findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster ' +\r\n 'finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar ' +\r\n 'floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo ' +\r\n 'fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint ' +\r\n 'frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss ' +\r\n 'geometryConstraint getApplicationVersionAsFloat getAttr getClassification ' +\r\n 'getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes ' +\r\n 'getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender ' +\r\n 'glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl ' +\r\n 'gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid ' +\r\n 'gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap ' +\r\n 'HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor ' +\r\n 'HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached ' +\r\n 'HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel ' +\r\n 'headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey ' +\r\n 'hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender ' +\r\n 'hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox ' +\r\n 'iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ' +\r\n 'ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ' +\r\n 'ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform ' +\r\n 'insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance ' +\r\n 'instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp ' +\r\n 'interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf ' +\r\n 'isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect ' +\r\n 'itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx ' +\r\n 'jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner ' +\r\n 'keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx ' +\r\n 'keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx ' +\r\n 'keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx ' +\r\n 'keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor ' +\r\n 'layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList ' +\r\n 'lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep ' +\r\n 'listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory ' +\r\n 'listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation ' +\r\n 'listNodeTypes listPanelCategories listRelatives listSets listTransforms ' +\r\n 'listUnselected listerEditor loadFluid loadNewShelf loadPlugin ' +\r\n 'loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log ' +\r\n 'longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive ' +\r\n 'makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext ' +\r\n 'manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx ' +\r\n 'manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout ' +\r\n 'menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp ' +\r\n 'mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move ' +\r\n 'moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute ' +\r\n 'nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast ' +\r\n 'nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint ' +\r\n 'normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect ' +\r\n 'nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref ' +\r\n 'nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType ' +\r\n 'objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface ' +\r\n 'offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit ' +\r\n 'orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier ' +\r\n 'paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration ' +\r\n 'panelHistory paramDimContext paramDimension paramLocator parent parentConstraint ' +\r\n 'particle particleExists particleInstancer particleRenderInfo partition pasteKey ' +\r\n 'pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture ' +\r\n 'pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo ' +\r\n 'pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult ' +\r\n 'pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend ' +\r\n 'polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal ' +\r\n 'polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge ' +\r\n 'polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge ' +\r\n 'polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet ' +\r\n 'polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet ' +\r\n 'polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection ' +\r\n 'polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge ' +\r\n 'polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet ' +\r\n 'polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix ' +\r\n 'polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut ' +\r\n 'polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet ' +\r\n 'polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge ' +\r\n 'polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex ' +\r\n 'polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection ' +\r\n 'polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection ' +\r\n 'polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint ' +\r\n 'polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate ' +\r\n 'polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge ' +\r\n 'polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing ' +\r\n 'polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet ' +\r\n 'polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace ' +\r\n 'popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer ' +\r\n 'projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx ' +\r\n 'propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd ' +\r\n 'python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection ' +\r\n 'radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl ' +\r\n 'readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference ' +\r\n 'referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE ' +\r\n 'registerPluginResource rehash reloadImage removeJoint removeMultiInstance ' +\r\n 'removePanelCategory rename renameAttr renameSelectionList renameUI render ' +\r\n 'renderGlobalsNode renderInfo renderLayerButton renderLayerParent ' +\r\n 'renderLayerPostProcess renderLayerUnparent renderManip renderPartition ' +\r\n 'renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor ' +\r\n 'renderWindowSelectContext renderer reorder reorderDeformers requires reroot ' +\r\n 'resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget ' +\r\n 'reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx ' +\r\n 'rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout ' +\r\n 'runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage ' +\r\n 'saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale ' +\r\n 'scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor ' +\r\n 'sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable ' +\r\n 'scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt ' +\r\n 'searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey ' +\r\n 'selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType ' +\r\n 'selectedNodes selectionConnection separator setAttr setAttrEnumResource ' +\r\n 'setAttrMapping setAttrNiceNameResource setConstraintRestPosition ' +\r\n 'setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr ' +\r\n 'setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe ' +\r\n 'setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag ' +\r\n 'setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject ' +\r\n 'setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets ' +\r\n 'shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare ' +\r\n 'shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField ' +\r\n 'shortNameOf showHelp showHidden showManipCtx showSelectionInTitle ' +\r\n 'showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface ' +\r\n 'size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep ' +\r\n 'snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound ' +\r\n 'soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort ' +\r\n 'spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString ' +\r\n 'startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp ' +\r\n 'stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex ' +\r\n 'stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex ' +\r\n 'stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString ' +\r\n 'stringToStringArray strip stripPrefixFromName stroke subdAutoProjection ' +\r\n 'subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV ' +\r\n 'subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror ' +\r\n 'subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease ' +\r\n 'subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring ' +\r\n 'surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton ' +\r\n 'symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext ' +\r\n 'texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext ' +\r\n 'texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text ' +\r\n 'textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList ' +\r\n 'textToShelf textureDisplacePlane textureHairColor texturePlacementContext ' +\r\n 'textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath ' +\r\n 'toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower ' +\r\n 'toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper ' +\r\n 'trace track trackCtx transferAttributes transformCompare transformLimits translator ' +\r\n 'trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence ' +\r\n 'twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit ' +\r\n 'unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink ' +\r\n 'uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane ' +\r\n 'viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex ' +\r\n 'waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire ' +\r\n 'wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform',\r\n illegal: ''},\r\n {begin: '<=', relevance: 0},\r\n {begin: '=>', relevance: 0},\r\n {begin: '/\\\\\\\\'},\r\n {begin: '\\\\\\\\/'}\r\n ]\r\n };\r\n\r\n var HEAD_BODY_CONJUNCTION = {\r\n className: 'built_in',\r\n variants: [\r\n {begin: ':-\\\\|-->'},\r\n {begin: '=', relevance: 0}\r\n ]\r\n };\r\n\r\n return {\r\n aliases: ['m', 'moo'],\r\n keywords: KEYWORDS,\r\n contains: [\r\n IMPLICATION,\r\n HEAD_BODY_CONJUNCTION,\r\n COMMENT,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n NUMCODE,\r\n hljs.NUMBER_MODE,\r\n ATOM,\r\n STRING,\r\n {begin: /:-/}, // relevance booster\r\n {begin: /\\.$/} // relevance booster\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n //local labels: %?[FB]?[AT]?\\d{1,2}\\w+\r\n return {\r\n case_insensitive: true,\r\n aliases: ['mips'],\r\n lexemes: '\\\\.?' + hljs.IDENT_RE,\r\n keywords: {\r\n meta:\r\n //GNU preprocs\r\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ',\r\n built_in:\r\n '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' + // integer registers\r\n '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' + // integer registers\r\n 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' + // integer register aliases\r\n 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' + // integer register aliases\r\n 'k0 k1 gp sp fp ra ' + // integer register aliases\r\n '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' + // floating-point registers\r\n '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' + // floating-point registers\r\n 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' + // Coprocessor 0 registers\r\n 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' + // Coprocessor 0 registers\r\n 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' + // Coprocessor 0 registers\r\n 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers\r\n },\r\n contains: [\r\n {\r\n className: 'keyword',\r\n begin: '\\\\b('+ //mnemonics\r\n // 32-bit integer instructions\r\n 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' +\r\n 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|' +\r\n 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' +\r\n 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' +\r\n 'srlv?|subu?|sw[lr]?|xori?|wsbh|' +\r\n // floating-point instructions\r\n 'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|' +\r\n 'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|' +\r\n '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|' +\r\n 'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|' +\r\n 'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|' +\r\n 'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|' +\r\n 'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|' +\r\n 'swx?c1|' +\r\n // system control instructions\r\n 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' +\r\n 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|' +\r\n 'tlti?u?|tnei?|wait|wrpgpr'+\r\n ')',\r\n end: '\\\\s'\r\n },\r\n // lines ending with ; or # aren't really comments, probably auto-detect fail\r\n hljs.COMMENT('[;#](?!\\s*$)', '$'),\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'string',\r\n begin: '\\'',\r\n end: '[^\\\\\\\\]\\'',\r\n relevance: 0\r\n },\r\n {\r\n className: 'title',\r\n begin: '\\\\|', end: '\\\\|',\r\n illegal: '\\\\n',\r\n relevance: 0\r\n },\r\n {\r\n className: 'number',\r\n variants: [\r\n {begin: '0x[0-9a-f]+'}, //hex\r\n {begin: '\\\\b-?\\\\d+'} //bare number\r\n ],\r\n relevance: 0\r\n },\r\n {\r\n className: 'symbol',\r\n variants: [\r\n {begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'}, //GNU MIPS syntax\r\n {begin: '^\\\\s*[0-9]+:'}, // numbered local labels\r\n {begin: '[0-9]+[bf]' } // number local label reference (backwards, forwards)\r\n ],\r\n relevance: 0\r\n }\r\n ],\r\n illegal: '\\/'\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords:\r\n 'environ vocabularies notations constructors definitions ' +\r\n 'registrations theorems schemes requirements begin end definition ' +\r\n 'registration cluster existence pred func defpred deffunc theorem ' +\r\n 'proof let take assume then thus hence ex for st holds consider ' +\r\n 'reconsider such that and in provided of as from be being by means ' +\r\n 'equals implies iff redefine define now not or attr is mode ' +\r\n 'suppose per cases set thesis contradiction scheme reserve struct ' +\r\n 'correctness compatibility coherence symmetry assymetry ' +\r\n 'reflexivity irreflexivity connectedness uniqueness commutativity ' +\r\n 'idempotence involutiveness projectivity',\r\n contains: [\r\n hljs.COMMENT('::', '$')\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n subLanguage: 'xml',\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: '^__(END|DATA)__$'\r\n },\r\n // mojolicious line\r\n {\r\n begin: \"^\\\\s*%{1,2}={0,2}\", end: '$',\r\n subLanguage: 'perl'\r\n },\r\n // mojolicious block\r\n {\r\n begin: \"<%{1,2}={0,2}\",\r\n end: \"={0,1}%>\",\r\n subLanguage: 'perl',\r\n excludeBegin: true,\r\n excludeEnd: true\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var NUMBER = {\r\n className: 'number', relevance: 0,\r\n variants: [\r\n {\r\n begin: '[$][a-fA-F0-9]+'\r\n },\r\n hljs.NUMBER_MODE\r\n ]\r\n };\r\n\r\n return {\r\n case_insensitive: true,\r\n keywords: {\r\n keyword: 'public private property continue exit extern new try catch ' +\r\n 'eachin not abstract final select case default const local global field ' +\r\n 'end if then else elseif endif while wend repeat until forever for ' +\r\n 'to step next return module inline throw import',\r\n\r\n built_in: 'DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil ' +\r\n 'Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI',\r\n\r\n literal: 'true false null and or shl shr mod'\r\n },\r\n illegal: /\\/\\*/,\r\n contains: [\r\n hljs.COMMENT('#rem', '#end'),\r\n hljs.COMMENT(\r\n \"'\",\r\n '$',\r\n {\r\n relevance: 0\r\n }\r\n ),\r\n {\r\n className: 'function',\r\n beginKeywords: 'function method', end: '[(=:]|$',\r\n illegal: /\\n/,\r\n contains: [\r\n hljs.UNDERSCORE_TITLE_MODE\r\n ]\r\n },\r\n {\r\n className: 'class',\r\n beginKeywords: 'class interface', end: '$',\r\n contains: [\r\n {\r\n beginKeywords: 'extends implements'\r\n },\r\n hljs.UNDERSCORE_TITLE_MODE\r\n ]\r\n },\r\n {\r\n className: 'built_in',\r\n begin: '\\\\b(self|super)\\\\b'\r\n },\r\n {\r\n className: 'meta',\r\n begin: '\\\\s*#', end: '$',\r\n keywords: {'meta-keyword': 'if else elseif endif end then'}\r\n },\r\n {\r\n className: 'meta',\r\n begin: '^\\\\s*strict\\\\b'\r\n },\r\n {\r\n beginKeywords: 'alias', end: '=',\r\n contains: [hljs.UNDERSCORE_TITLE_MODE]\r\n },\r\n hljs.QUOTE_STRING_MODE,\r\n NUMBER\r\n ]\r\n }\r\n};","module.exports = function(hljs) {\r\n var KEYWORDS = {\r\n keyword:\r\n // Moonscript keywords\r\n 'if then not for in while do return else elseif break continue switch and or ' +\r\n 'unless when class extends super local import export from using',\r\n literal:\r\n 'true false nil',\r\n built_in:\r\n '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +\r\n 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +\r\n 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +\r\n 'io math os package string table'\r\n };\r\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\r\n var SUBST = {\r\n className: 'subst',\r\n begin: /#\\{/, end: /}/,\r\n keywords: KEYWORDS\r\n };\r\n var EXPRESSIONS = [\r\n hljs.inherit(hljs.C_NUMBER_MODE,\r\n {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\r\n {\r\n className: 'string',\r\n variants: [\r\n {\r\n begin: /'/, end: /'/,\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n {\r\n begin: /\"/, end: /\"/,\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\r\n }\r\n ]\r\n },\r\n {\r\n className: 'built_in',\r\n begin: '@__' + hljs.IDENT_RE\r\n },\r\n {\r\n begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript\r\n },\r\n {\r\n begin: hljs.IDENT_RE + '\\\\\\\\' + hljs.IDENT_RE // inst\\method\r\n }\r\n ];\r\n SUBST.contains = EXPRESSIONS;\r\n\r\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\r\n var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\r\n var PARAMS = {\r\n className: 'params',\r\n begin: '\\\\([^\\\\(]', returnBegin: true,\r\n /* We need another contained nameless mode to not have every nested\r\n pair of parens to be called \"params\" */\r\n contains: [{\r\n begin: /\\(/, end: /\\)/,\r\n keywords: KEYWORDS,\r\n contains: ['self'].concat(EXPRESSIONS)\r\n }]\r\n };\r\n\r\n return {\r\n aliases: ['moon'],\r\n keywords: KEYWORDS,\r\n illegal: /\\/\\*/,\r\n contains: EXPRESSIONS.concat([\r\n hljs.COMMENT('--', '$'),\r\n {\r\n className: 'function', // function: -> =>\r\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\r\n returnBegin: true,\r\n contains: [TITLE, PARAMS]\r\n },\r\n {\r\n begin: /[\\(,:=]\\s*/, // anonymous function start\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'function',\r\n begin: PARAMS_RE, end: '[-=]>',\r\n returnBegin: true,\r\n contains: [PARAMS]\r\n }\r\n ]\r\n },\r\n {\r\n className: 'class',\r\n beginKeywords: 'class',\r\n end: '$',\r\n illegal: /[:=\"\\[\\]]/,\r\n contains: [\r\n {\r\n beginKeywords: 'extends',\r\n endsWithParent: true,\r\n illegal: /[:=\"\\[\\]]/,\r\n contains: [TITLE]\r\n },\r\n TITLE\r\n ]\r\n },\r\n {\r\n className: 'name', // table\r\n begin: JS_IDENT_RE + ':', end: ':',\r\n returnBegin: true, returnEnd: true,\r\n relevance: 0\r\n }\r\n ])\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n case_insensitive: true,\r\n contains: [\r\n {\r\n beginKeywords:\r\n 'build create index delete drop explain infer|10 insert merge prepare select update upsert|10',\r\n end: /;/, endsWithParent: true,\r\n keywords: {\r\n // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html\r\n keyword:\r\n 'all alter analyze and any array as asc begin between binary boolean break bucket build by call ' +\r\n 'case cast cluster collate collection commit connect continue correlate cover create database ' +\r\n 'dataset datastore declare decrement delete derived desc describe distinct do drop each element ' +\r\n 'else end every except exclude execute exists explain fetch first flatten for force from ' +\r\n 'function grant group gsi having if ignore ilike in include increment index infer inline inner ' +\r\n 'insert intersect into is join key keys keyspace known last left let letting like limit lsm map ' +\r\n 'mapping matched materialized merge minus namespace nest not number object offset on ' +\r\n 'option or order outer over parse partition password path pool prepare primary private privilege ' +\r\n 'procedure public raw realm reduce rename return returning revoke right role rollback satisfies ' +\r\n 'schema select self semi set show some start statistics string system then to transaction trigger ' +\r\n 'truncate under union unique unknown unnest unset update upsert use user using validate value ' +\r\n 'valued values via view when where while with within work xor',\r\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html\r\n literal:\r\n 'true false null missing|5',\r\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html\r\n built_in:\r\n 'array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length ' +\r\n 'array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace ' +\r\n 'array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull ' +\r\n 'missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis ' +\r\n 'date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str ' +\r\n 'duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str ' +\r\n 'str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode ' +\r\n 'base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random ' +\r\n 'round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values ' +\r\n 'object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position ' +\r\n 'regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper ' +\r\n 'isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring'\r\n },\r\n contains: [\r\n {\r\n className: 'string',\r\n begin: '\\'', end: '\\'',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n relevance: 0\r\n },\r\n {\r\n className: 'string',\r\n begin: '\"', end: '\"',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n relevance: 0\r\n },\r\n {\r\n className: 'symbol',\r\n begin: '`', end: '`',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n relevance: 2\r\n },\r\n hljs.C_NUMBER_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n },\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var VAR = {\r\n className: 'variable',\r\n variants: [\r\n {begin: /\\$\\d+/},\r\n {begin: /\\$\\{/, end: /}/},\r\n {begin: '[\\\\$\\\\@]' + hljs.UNDERSCORE_IDENT_RE}\r\n ]\r\n };\r\n var DEFAULT = {\r\n endsWithParent: true,\r\n lexemes: '[a-z/_]+',\r\n keywords: {\r\n literal:\r\n 'on off yes no true false none blocked debug info notice warn error crit ' +\r\n 'select break last permanent redirect kqueue rtsig epoll poll /dev/poll'\r\n },\r\n relevance: 0,\r\n illegal: '=>',\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\r\n variants: [\r\n {begin: /\"/, end: /\"/},\r\n {begin: /'/, end: /'/}\r\n ]\r\n },\r\n // this swallows entire URLs to avoid detecting numbers within\r\n {\r\n begin: '([a-z]+):/', end: '\\\\s', endsWithParent: true, excludeEnd: true,\r\n contains: [VAR]\r\n },\r\n {\r\n className: 'regexp',\r\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\r\n variants: [\r\n {begin: \"\\\\s\\\\^\", end: \"\\\\s|{|;\", returnEnd: true},\r\n // regexp locations (~, ~*)\r\n {begin: \"~\\\\*?\\\\s+\", end: \"\\\\s|{|;\", returnEnd: true},\r\n // *.example.com\r\n {begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\"},\r\n // sub.example.*\r\n {begin: \"([a-z\\\\-]+\\\\.)+\\\\*\"}\r\n ]\r\n },\r\n // IP\r\n {\r\n className: 'number',\r\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\r\n },\r\n // units\r\n {\r\n className: 'number',\r\n begin: '\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b',\r\n relevance: 0\r\n },\r\n VAR\r\n ]\r\n };\r\n\r\n return {\r\n aliases: ['nginxconf'],\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n {\r\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s+{', returnBegin: true,\r\n end: '{',\r\n contains: [\r\n {\r\n className: 'section',\r\n begin: hljs.UNDERSCORE_IDENT_RE\r\n }\r\n ],\r\n relevance: 0\r\n },\r\n {\r\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s', end: ';|{', returnBegin: true,\r\n contains: [\r\n {\r\n className: 'attribute',\r\n begin: hljs.UNDERSCORE_IDENT_RE,\r\n starts: DEFAULT\r\n }\r\n ],\r\n relevance: 0\r\n }\r\n ],\r\n illegal: '[^\\\\s\\\\}]'\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['nim'],\r\n keywords: {\r\n keyword:\r\n 'addr and as asm bind block break case cast const continue converter ' +\r\n 'discard distinct div do elif else end enum except export finally ' +\r\n 'for from generic if import in include interface is isnot iterator ' +\r\n 'let macro method mixin mod nil not notin object of or out proc ptr ' +\r\n 'raise ref return shl shr static template try tuple type using var ' +\r\n 'when while with without xor yield',\r\n literal:\r\n 'shared guarded stdin stdout stderr result true false',\r\n built_in:\r\n 'int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float ' +\r\n 'float32 float64 bool char string cstring pointer expr stmt void ' +\r\n 'auto any range array openarray varargs seq set clong culong cchar ' +\r\n 'cschar cshort cint csize clonglong cfloat cdouble clongdouble ' +\r\n 'cuchar cushort cuint culonglong cstringarray semistatic'\r\n },\r\n contains: [ {\r\n className: 'meta', // Actually pragma\r\n begin: /{\\./,\r\n end: /\\.}/,\r\n relevance: 10\r\n }, {\r\n className: 'string',\r\n begin: /[a-zA-Z]\\w*\"/,\r\n end: /\"/,\r\n contains: [{begin: /\"\"/}]\r\n }, {\r\n className: 'string',\r\n begin: /([a-zA-Z]\\w*)?\"\"\"/,\r\n end: /\"\"\"/\r\n },\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'type',\r\n begin: /\\b[A-Z]\\w+\\b/,\r\n relevance: 0\r\n }, {\r\n className: 'number',\r\n relevance: 0,\r\n variants: [\r\n {begin: /\\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},\r\n {begin: /\\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},\r\n {begin: /\\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},\r\n {begin: /\\b(\\d[_\\d]*)('?[iIuUfF](8|16|32|64))?/}\r\n ]\r\n },\r\n hljs.HASH_COMMENT_MODE\r\n ]\r\n }\r\n};","module.exports = function(hljs) {\r\n var NIX_KEYWORDS = {\r\n keyword:\r\n 'rec with let in inherit assert if else then',\r\n literal:\r\n 'true false or and null',\r\n built_in:\r\n 'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +\r\n 'toString derivation'\r\n };\r\n var ANTIQUOTE = {\r\n className: 'subst',\r\n begin: /\\$\\{/,\r\n end: /}/,\r\n keywords: NIX_KEYWORDS\r\n };\r\n var ATTRS = {\r\n begin: /[a-zA-Z0-9-_]+(\\s*=)/, returnBegin: true,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'attr',\r\n begin: /\\S+/\r\n }\r\n ]\r\n };\r\n var STRING = {\r\n className: 'string',\r\n contains: [ANTIQUOTE],\r\n variants: [\r\n {begin: \"''\", end: \"''\"},\r\n {begin: '\"', end: '\"'}\r\n ]\r\n };\r\n var EXPRESSIONS = [\r\n hljs.NUMBER_MODE,\r\n hljs.HASH_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n STRING,\r\n ATTRS\r\n ];\r\n ANTIQUOTE.contains = EXPRESSIONS;\r\n return {\r\n aliases: [\"nixos\"],\r\n keywords: NIX_KEYWORDS,\r\n contains: EXPRESSIONS\r\n };\r\n};","module.exports = function(hljs) {\r\n var CONSTANTS = {\r\n className: 'variable',\r\n begin: /\\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/\r\n };\r\n\r\n var DEFINES = {\r\n // ${defines}\r\n className: 'variable',\r\n begin: /\\$+{[\\w\\.:-]+}/\r\n };\r\n\r\n var VARIABLES = {\r\n // $variables\r\n className: 'variable',\r\n begin: /\\$+\\w+/,\r\n illegal: /\\(\\){}/\r\n };\r\n\r\n var LANGUAGES = {\r\n // $(language_strings)\r\n className: 'variable',\r\n begin: /\\$+\\([\\w\\^\\.:-]+\\)/\r\n };\r\n\r\n var PARAMETERS = {\r\n // command parameters\r\n className: 'params',\r\n begin: '(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)'\r\n };\r\n\r\n var COMPILER = {\r\n // !compiler_flags\r\n className: 'keyword',\r\n begin: /\\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/\r\n };\r\n\r\n var METACHARS = {\r\n // $\\n, $\\r, $\\t, $$\r\n className: 'meta',\r\n begin: /\\$(\\\\[nrt]|\\$)/\r\n };\r\n\r\n var PLUGINS = {\r\n // plug::ins\r\n className: 'class',\r\n begin: /\\w+\\:\\:\\w+/\r\n };\r\n\r\n var STRING = {\r\n className: 'string',\r\n variants: [\r\n {\r\n begin: '\"', end: '\"'\r\n },\r\n {\r\n begin: '\\'', end: '\\''\r\n },\r\n {\r\n begin: '`', end: '`'\r\n }\r\n ],\r\n illegal: /\\n/,\r\n contains: [\r\n METACHARS,\r\n CONSTANTS,\r\n DEFINES,\r\n VARIABLES,\r\n LANGUAGES\r\n ]\r\n };\r\n\r\n return {\r\n case_insensitive: false,\r\n keywords: {\r\n keyword:\r\n 'Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle',\r\n literal:\r\n 'admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib'\r\n },\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.COMMENT(\r\n ';',\r\n '$',\r\n {\r\n relevance: 0\r\n }\r\n ),\r\n {\r\n className: 'function',\r\n beginKeywords: 'Function PageEx Section SectionGroup', end: '$'\r\n },\r\n STRING,\r\n COMPILER,\r\n DEFINES,\r\n VARIABLES,\r\n LANGUAGES,\r\n PARAMETERS,\r\n PLUGINS,\r\n hljs.NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var API_CLASS = {\r\n className: 'built_in',\r\n begin: '\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+',\r\n };\r\n var OBJC_KEYWORDS = {\r\n keyword:\r\n 'int float while char export sizeof typedef const struct for union ' +\r\n 'unsigned long volatile static bool mutable if do return goto void ' +\r\n 'enum else break extern asm case short default double register explicit ' +\r\n 'signed typename this switch continue wchar_t inline readonly assign ' +\r\n 'readwrite self @synchronized id typeof ' +\r\n 'nonatomic super unichar IBOutlet IBAction strong weak copy ' +\r\n 'in out inout bycopy byref oneway __strong __weak __block __autoreleasing ' +\r\n '@private @protected @public @try @property @end @throw @catch @finally ' +\r\n '@autoreleasepool @synthesize @dynamic @selector @optional @required ' +\r\n '@encode @package @import @defs @compatibility_alias ' +\r\n '__bridge __bridge_transfer __bridge_retained __bridge_retain ' +\r\n '__covariant __contravariant __kindof ' +\r\n '_Nonnull _Nullable _Null_unspecified ' +\r\n '__FUNCTION__ __PRETTY_FUNCTION__ __attribute__ ' +\r\n 'getter setter retain unsafe_unretained ' +\r\n 'nonnull nullable null_unspecified null_resettable class instancetype ' +\r\n 'NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER ' +\r\n 'NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED ' +\r\n 'NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE ' +\r\n 'NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END ' +\r\n 'NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW ' +\r\n 'NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN',\r\n literal:\r\n 'false true FALSE TRUE nil YES NO NULL',\r\n built_in:\r\n 'BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once'\r\n };\r\n var LEXEMES = /[a-zA-Z@][a-zA-Z0-9_]*/;\r\n var CLASS_KEYWORDS = '@interface @class @protocol @implementation';\r\n return {\r\n aliases: ['mm', 'objc', 'obj-c'],\r\n keywords: OBJC_KEYWORDS,\r\n lexemes: LEXEMES,\r\n illegal: '/, end: /$/,\r\n illegal: '\\\\n',\r\n },\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n },\r\n {\r\n className: 'class',\r\n begin: '(' + CLASS_KEYWORDS.split(' ').join('|') + ')\\\\b', end: '({|$)', excludeEnd: true,\r\n keywords: CLASS_KEYWORDS, lexemes: LEXEMES,\r\n contains: [\r\n hljs.UNDERSCORE_TITLE_MODE\r\n ]\r\n },\r\n {\r\n begin: '\\\\.'+hljs.UNDERSCORE_IDENT_RE,\r\n relevance: 0\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n /* missing support for heredoc-like string (OCaml 4.0.2+) */\r\n return {\r\n aliases: ['ml'],\r\n keywords: {\r\n keyword:\r\n 'and as assert asr begin class constraint do done downto else end ' +\r\n 'exception external for fun function functor if in include ' +\r\n 'inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method ' +\r\n 'mod module mutable new object of open! open or private rec sig struct ' +\r\n 'then to try type val! val virtual when while with ' +\r\n /* camlp4 */\r\n 'parser value',\r\n built_in:\r\n /* built-in types */\r\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit ' +\r\n /* (some) types in Pervasives */\r\n 'in_channel out_channel ref',\r\n literal:\r\n 'true false'\r\n },\r\n illegal: /\\/\\/|>>/,\r\n lexemes: '[a-z_]\\\\w*!?',\r\n contains: [\r\n {\r\n className: 'literal',\r\n begin: '\\\\[(\\\\|\\\\|)?\\\\]|\\\\(\\\\)',\r\n relevance: 0\r\n },\r\n hljs.COMMENT(\r\n '\\\\(\\\\*',\r\n '\\\\*\\\\)',\r\n {\r\n contains: ['self']\r\n }\r\n ),\r\n { /* type variable */\r\n className: 'symbol',\r\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\r\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\r\n },\r\n { /* polymorphic variant */\r\n className: 'type',\r\n begin: '`[A-Z][\\\\w\\']*'\r\n },\r\n { /* module or constructor */\r\n className: 'type',\r\n begin: '\\\\b[A-Z][\\\\w\\']*',\r\n relevance: 0\r\n },\r\n { /* don't color identifiers, but safely catch all identifiers with '*/\r\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*', relevance: 0\r\n },\r\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\r\n {\r\n className: 'number',\r\n begin:\r\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\r\n '0[oO][0-7_]+[Lln]?|' +\r\n '0[bB][01_]+[Lln]?|' +\r\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\r\n relevance: 0\r\n },\r\n {\r\n begin: /[-=]>/ // relevance booster\r\n }\r\n ]\r\n }\r\n};","module.exports = function(hljs) {\r\n\tvar SPECIAL_VARS = {\r\n\t\tclassName: 'keyword',\r\n\t\tbegin: '\\\\$(f[asn]|t|vp[rtd]|children)'\r\n\t},\r\n\tLITERALS = {\r\n\t\tclassName: 'literal',\r\n\t\tbegin: 'false|true|PI|undef'\r\n\t},\r\n\tNUMBERS = {\r\n\t\tclassName: 'number',\r\n\t\tbegin: '\\\\b\\\\d+(\\\\.\\\\d+)?(e-?\\\\d+)?', //adds 1e5, 1e-10\r\n\t\trelevance: 0\r\n\t},\r\n\tSTRING = hljs.inherit(hljs.QUOTE_STRING_MODE,{illegal: null}),\r\n\tPREPRO = {\r\n\t\tclassName: 'meta',\r\n\t\tkeywords: {'meta-keyword': 'include use'},\r\n\t\tbegin: 'include|use <',\r\n\t\tend: '>'\r\n\t},\r\n\tPARAMS = {\r\n\t\tclassName: 'params',\r\n\t\tbegin: '\\\\(', end: '\\\\)',\r\n\t\tcontains: ['self', NUMBERS, STRING, SPECIAL_VARS, LITERALS]\r\n\t},\r\n\tMODIFIERS = {\r\n\t\tbegin: '[*!#%]',\r\n\t\trelevance: 0\r\n\t},\r\n\tFUNCTIONS = {\r\n\t\tclassName: 'function',\r\n\t\tbeginKeywords: 'module function',\r\n\t\tend: '\\\\=|\\\\{',\r\n\t\tcontains: [PARAMS, hljs.UNDERSCORE_TITLE_MODE]\r\n\t};\r\n\r\n\treturn {\r\n\t\taliases: ['scad'],\r\n\t\tkeywords: {\r\n\t\t\tkeyword: 'function module include use for intersection_for if else \\\\%',\r\n\t\t\tliteral: 'false true PI undef',\r\n\t\t\tbuilt_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign'\r\n\t\t},\r\n\t\tcontains: [\r\n\t\t\thljs.C_LINE_COMMENT_MODE,\r\n\t\t\thljs.C_BLOCK_COMMENT_MODE,\r\n\t\t\tNUMBERS,\r\n\t\t\tPREPRO,\r\n\t\t\tSTRING,\r\n\t\t\tSPECIAL_VARS,\r\n\t\t\tMODIFIERS,\r\n\t\t\tFUNCTIONS\r\n\t\t]\r\n\t}\r\n};","module.exports = function(hljs) {\r\n var OXYGENE_KEYWORDS = 'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue '+\r\n 'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false '+\r\n 'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited '+\r\n 'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of '+\r\n 'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly '+\r\n 'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple '+\r\n 'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal '+\r\n 'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained';\r\n var CURLY_COMMENT = hljs.COMMENT(\r\n '{',\r\n '}',\r\n {\r\n relevance: 0\r\n }\r\n );\r\n var PAREN_COMMENT = hljs.COMMENT(\r\n '\\\\(\\\\*',\r\n '\\\\*\\\\)',\r\n {\r\n relevance: 10\r\n }\r\n );\r\n var STRING = {\r\n className: 'string',\r\n begin: '\\'', end: '\\'',\r\n contains: [{begin: '\\'\\''}]\r\n };\r\n var CHAR_STRING = {\r\n className: 'string', begin: '(#\\\\d+)+'\r\n };\r\n var FUNCTION = {\r\n className: 'function',\r\n beginKeywords: 'function constructor destructor procedure method', end: '[:;]',\r\n keywords: 'function constructor|10 destructor|10 procedure|10 method|10',\r\n contains: [\r\n hljs.TITLE_MODE,\r\n {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)',\r\n keywords: OXYGENE_KEYWORDS,\r\n contains: [STRING, CHAR_STRING]\r\n },\r\n CURLY_COMMENT, PAREN_COMMENT\r\n ]\r\n };\r\n return {\r\n case_insensitive: true,\r\n lexemes: /\\.?\\w+/,\r\n keywords: OXYGENE_KEYWORDS,\r\n illegal: '(\"|\\\\$[G-Zg-z]|\\\\/\\\\*||->)',\r\n contains: [\r\n CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\r\n STRING, CHAR_STRING,\r\n hljs.NUMBER_MODE,\r\n FUNCTION,\r\n {\r\n className: 'class',\r\n begin: '=\\\\bclass\\\\b', end: 'end;',\r\n keywords: OXYGENE_KEYWORDS,\r\n contains: [\r\n STRING, CHAR_STRING,\r\n CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\r\n FUNCTION\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var CURLY_SUBCOMMENT = hljs.COMMENT(\r\n '{',\r\n '}',\r\n {\r\n contains: ['self']\r\n }\r\n );\r\n return {\r\n subLanguage: 'xml', relevance: 0,\r\n contains: [\r\n hljs.COMMENT('^#', '$'),\r\n hljs.COMMENT(\r\n '\\\\^rem{',\r\n '}',\r\n {\r\n relevance: 10,\r\n contains: [\r\n CURLY_SUBCOMMENT\r\n ]\r\n }\r\n ),\r\n {\r\n className: 'meta',\r\n begin: '^@(?:BASE|USE|CLASS|OPTIONS)$',\r\n relevance: 10\r\n },\r\n {\r\n className: 'title',\r\n begin: '@[\\\\w\\\\-]+\\\\[[\\\\w^;\\\\-]*\\\\](?:\\\\[[\\\\w^;\\\\-]*\\\\])?(?:.*)$'\r\n },\r\n {\r\n className: 'variable',\r\n begin: '\\\\$\\\\{?[\\\\w\\\\-\\\\.\\\\:]+\\\\}?'\r\n },\r\n {\r\n className: 'keyword',\r\n begin: '\\\\^[\\\\w\\\\-\\\\.\\\\:]+'\r\n },\r\n {\r\n className: 'number',\r\n begin: '\\\\^#[0-9a-fA-F]+'\r\n },\r\n hljs.C_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var PERL_KEYWORDS = 'getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ' +\r\n 'ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime ' +\r\n 'readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq' +\r\n 'fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent ' +\r\n 'shutdown dump chomp connect getsockname die socketpair close flock exists index shmget' +\r\n 'sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr ' +\r\n 'unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 ' +\r\n 'getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline ' +\r\n 'endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand ' +\r\n 'mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink ' +\r\n 'getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr ' +\r\n 'untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link ' +\r\n 'getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller ' +\r\n 'lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and ' +\r\n 'sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 ' +\r\n 'chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach ' +\r\n 'tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir' +\r\n 'ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe ' +\r\n 'atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when';\r\n var SUBST = {\r\n className: 'subst',\r\n begin: '[$@]\\\\{', end: '\\\\}',\r\n keywords: PERL_KEYWORDS\r\n };\r\n var METHOD = {\r\n begin: '->{', end: '}'\r\n // contains defined later\r\n };\r\n var VAR = {\r\n variants: [\r\n {begin: /\\$\\d/},\r\n {begin: /[\\$%@](\\^\\w\\b|#\\w+(::\\w+)*|{\\w+}|\\w+(::\\w*)*)/},\r\n {begin: /[\\$%@][^\\s\\w{]/, relevance: 0}\r\n ]\r\n };\r\n var STRING_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST, VAR];\r\n var PERL_DEFAULT_CONTAINS = [\r\n VAR,\r\n hljs.HASH_COMMENT_MODE,\r\n hljs.COMMENT(\r\n '^\\\\=\\\\w',\r\n '\\\\=cut',\r\n {\r\n endsWithParent: true\r\n }\r\n ),\r\n METHOD,\r\n {\r\n className: 'string',\r\n contains: STRING_CONTAINS,\r\n variants: [\r\n {\r\n begin: 'q[qwxr]?\\\\s*\\\\(', end: '\\\\)',\r\n relevance: 5\r\n },\r\n {\r\n begin: 'q[qwxr]?\\\\s*\\\\[', end: '\\\\]',\r\n relevance: 5\r\n },\r\n {\r\n begin: 'q[qwxr]?\\\\s*\\\\{', end: '\\\\}',\r\n relevance: 5\r\n },\r\n {\r\n begin: 'q[qwxr]?\\\\s*\\\\|', end: '\\\\|',\r\n relevance: 5\r\n },\r\n {\r\n begin: 'q[qwxr]?\\\\s*\\\\<', end: '\\\\>',\r\n relevance: 5\r\n },\r\n {\r\n begin: 'qw\\\\s+q', end: 'q',\r\n relevance: 5\r\n },\r\n {\r\n begin: '\\'', end: '\\'',\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n {\r\n begin: '\"', end: '\"'\r\n },\r\n {\r\n begin: '`', end: '`',\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n {\r\n begin: '{\\\\w+}',\r\n contains: [],\r\n relevance: 0\r\n },\r\n {\r\n begin: '\\-?\\\\w+\\\\s*\\\\=\\\\>',\r\n contains: [],\r\n relevance: 0\r\n }\r\n ]\r\n },\r\n {\r\n className: 'number',\r\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\r\n relevance: 0\r\n },\r\n { // regexp container\r\n begin: '(\\\\/\\\\/|' + hljs.RE_STARTERS_RE + '|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',\r\n keywords: 'split return print reverse grep',\r\n relevance: 0,\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n {\r\n className: 'regexp',\r\n begin: '(s|tr|y)/(\\\\\\\\.|[^/])*/(\\\\\\\\.|[^/])*/[a-z]*',\r\n relevance: 10\r\n },\r\n {\r\n className: 'regexp',\r\n begin: '(m|qr)?/', end: '/[a-z]*',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n relevance: 0 // allows empty \"//\" which is a common comment delimiter in other languages\r\n }\r\n ]\r\n },\r\n {\r\n className: 'function',\r\n beginKeywords: 'sub', end: '(\\\\s*\\\\(.*?\\\\))?[;{]', excludeEnd: true,\r\n relevance: 5,\r\n contains: [hljs.TITLE_MODE]\r\n },\r\n {\r\n begin: '-\\\\w\\\\b',\r\n relevance: 0\r\n },\r\n {\r\n begin: \"^__DATA__$\",\r\n end: \"^__END__$\",\r\n subLanguage: 'mojolicious',\r\n contains: [\r\n {\r\n begin: \"^@@.*\",\r\n end: \"$\",\r\n className: \"comment\"\r\n }\r\n ]\r\n }\r\n ];\r\n SUBST.contains = PERL_DEFAULT_CONTAINS;\r\n METHOD.contains = PERL_DEFAULT_CONTAINS;\r\n\r\n return {\r\n aliases: ['pl', 'pm'],\r\n lexemes: /[\\w\\.]+/,\r\n keywords: PERL_KEYWORDS,\r\n contains: PERL_DEFAULT_CONTAINS\r\n };\r\n};","module.exports = function(hljs) {\r\n var MACRO = {\r\n className: 'variable',\r\n begin: /\\$[\\w\\d#@][\\w\\d_]*/\r\n };\r\n var TABLE = {\r\n className: 'variable',\r\n begin: /<(?!\\/)/, end: />/\r\n };\r\n var QUOTE_STRING = {\r\n className: 'string',\r\n begin: /\"/, end: /\"/\r\n };\r\n\r\n return {\r\n aliases: ['pf.conf'],\r\n lexemes: /[a-z0-9_<>-]+/,\r\n keywords: {\r\n built_in: /* block match pass are \"actions\" in pf.conf(5), the rest are\r\n * lexically similar top-level commands.\r\n */\r\n 'block match pass load anchor|5 antispoof|10 set table',\r\n keyword:\r\n 'in out log quick on rdomain inet inet6 proto from port os to route' +\r\n 'allow-opts divert-packet divert-reply divert-to flags group icmp-type' +\r\n 'icmp6-type label once probability recieved-on rtable prio queue' +\r\n 'tos tag tagged user keep fragment for os drop' +\r\n 'af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin' +\r\n 'source-hash static-port' +\r\n 'dup-to reply-to route-to' +\r\n 'parent bandwidth default min max qlimit' +\r\n 'block-policy debug fingerprints hostid limit loginterface optimization' +\r\n 'reassemble ruleset-optimization basic none profile skip state-defaults' +\r\n 'state-policy timeout' +\r\n 'const counters persist' +\r\n 'no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy' +\r\n 'source-track global rule max-src-nodes max-src-states max-src-conn' +\r\n 'max-src-conn-rate overload flush' +\r\n 'scrub|5 max-mss min-ttl no-df|10 random-id',\r\n literal:\r\n 'all any no-route self urpf-failed egress|5 unknown'\r\n },\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n hljs.NUMBER_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n MACRO,\r\n TABLE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var COMMENT_MODE = hljs.COMMENT('--', '$');\r\n var UNQUOTED_IDENT = '[a-zA-Z_][a-zA-Z_0-9$]*';\r\n var DOLLAR_STRING = '\\\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\\\$';\r\n var LABEL = '<<\\\\s*' + UNQUOTED_IDENT + '\\\\s*>>';\r\n\r\n var SQL_KW =\r\n // https://www.postgresql.org/docs/11/static/sql-keywords-appendix.html\r\n // https://www.postgresql.org/docs/11/static/sql-commands.html\r\n // SQL commands (starting words)\r\n 'ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE ' +\r\n 'DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY ' +\r\n 'PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW ' +\r\n 'START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES ' +\r\n // SQL commands (others)\r\n 'AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN ' +\r\n 'WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS ' +\r\n 'FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM ' +\r\n 'TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS ' +\r\n 'METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION ' +\r\n 'INDEX PROCEDURE ASSERTION ' +\r\n // additional reserved key words\r\n 'ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK ' +\r\n 'COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS ' +\r\n 'DEFERRABLE RANGE ' +\r\n 'DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ' +\r\n 'ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT ' +\r\n 'NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY ' +\r\n 'REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN ' +\r\n 'TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH ' +\r\n // some of non-reserved (which are used in clauses or as PL/pgSQL keyword)\r\n 'BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN ' +\r\n 'BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT ' +\r\n 'TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN ' +\r\n 'EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH ' +\r\n 'REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ' +\r\n 'ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED ' +\r\n 'INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 ' +\r\n 'INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ' +\r\n 'ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES ' +\r\n 'RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS ' +\r\n 'UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF ' +\r\n // some parameters of VACUUM/ANALYZE/EXPLAIN\r\n 'FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING ' +\r\n //\r\n 'RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED ' +\r\n 'OF NOTHING NONE EXCLUDE ATTRIBUTE ' +\r\n // from GRANT (not keywords actually)\r\n 'USAGE ROUTINES ' +\r\n // actually literals, but look better this way (due to IS TRUE, IS FALSE, ISNULL etc)\r\n 'TRUE FALSE NAN INFINITY ';\r\n\r\n var ROLE_ATTRS = // only those not in keywrods already\r\n 'SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT ' +\r\n 'LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ';\r\n\r\n var PLPGSQL_KW =\r\n 'ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS ' +\r\n 'STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT ' +\r\n 'OPEN ';\r\n\r\n var TYPES =\r\n // https://www.postgresql.org/docs/11/static/datatype.html\r\n 'BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR ' +\r\n 'CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 ' +\r\n 'MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 ' +\r\n 'SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 ' +\r\n 'TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR ' +\r\n 'INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ' +\r\n // pseudotypes\r\n 'ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL ' +\r\n 'RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR ' +\r\n // spec. type\r\n 'NAME ' +\r\n // OID-types\r\n 'OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 ' +\r\n 'REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ';// +\r\n // some types from standard extensions\r\n 'HSTORE|10 LO LTREE|10 ';\r\n\r\n var TYPES_RE =\r\n TYPES.trim()\r\n .split(' ')\r\n .map( function(val) { return val.split('|')[0]; } )\r\n .join('|');\r\n\r\n var SQL_BI =\r\n 'CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP ' +\r\n 'CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC ';\r\n\r\n var PLPGSQL_BI =\r\n 'FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 ' +\r\n 'TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ' +\r\n // get diagnostics\r\n 'ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME ' +\r\n 'PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 ' +\r\n 'PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 ';\r\n\r\n var PLPGSQL_EXCEPTIONS =\r\n // exceptions https://www.postgresql.org/docs/current/static/errcodes-appendix.html\r\n 'SQLSTATE SQLERRM|10 ' +\r\n 'SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING ' +\r\n 'NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED ' +\r\n 'STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED ' +\r\n 'SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE ' +\r\n 'SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION ' +\r\n 'TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED ' +\r\n 'INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR ' +\r\n 'INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION ' +\r\n 'STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION ' +\r\n 'DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW ' +\r\n 'DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW ' +\r\n 'INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION ' +\r\n 'INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION ' +\r\n 'INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST ' +\r\n 'INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE ' +\r\n 'NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE ' +\r\n 'INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE ' +\r\n 'INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT ' +\r\n 'INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH ' +\r\n 'NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE ' +\r\n 'SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION ' +\r\n 'SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING ' +\r\n 'FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION ' +\r\n 'BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT ' +\r\n 'INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION ' +\r\n 'INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION ' +\r\n 'UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE ' +\r\n 'INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE ' +\r\n 'HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ' +\r\n 'INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ' +\r\n 'NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION ' +\r\n 'SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION ' +\r\n 'IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME ' +\r\n 'TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD ' +\r\n 'DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST ' +\r\n 'INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT ' +\r\n 'MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED ' +\r\n 'READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION ' +\r\n 'CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED ' +\r\n 'PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED ' +\r\n 'EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED ' +\r\n 'TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED ' +\r\n 'SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME ' +\r\n 'INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION ' +\r\n 'SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED ' +\r\n 'SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE ' +\r\n 'GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME ' +\r\n 'NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH ' +\r\n 'INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN ' +\r\n 'UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT ' +\r\n 'DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION ' +\r\n 'DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS ' +\r\n 'DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS ' +\r\n 'INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION ' +\r\n 'INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION ' +\r\n 'INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION ' +\r\n 'INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL ' +\r\n 'OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED ' +\r\n 'STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE ' +\r\n 'OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION ' +\r\n 'QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED ' +\r\n 'SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR ' +\r\n 'LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED ' +\r\n 'FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION ' +\r\n 'FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER ' +\r\n 'FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS ' +\r\n 'FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX ' +\r\n 'FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH ' +\r\n 'FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES ' +\r\n 'FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE ' +\r\n 'FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION ' +\r\n 'FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR ' +\r\n 'RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED ' +\r\n 'INDEX_CORRUPTED ';\r\n\r\n var FUNCTIONS =\r\n // https://www.postgresql.org/docs/11/static/functions-aggregate.html\r\n 'ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG ' +\r\n 'JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG ' +\r\n 'CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE ' +\r\n 'REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP ' +\r\n 'PERCENTILE_CONT PERCENTILE_DISC ' +\r\n // https://www.postgresql.org/docs/11/static/functions-window.html\r\n 'ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE ' +\r\n // https://www.postgresql.org/docs/11/static/functions-comparison.html\r\n 'NUM_NONNULLS NUM_NULLS ' +\r\n // https://www.postgresql.org/docs/11/static/functions-math.html\r\n 'ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT ' +\r\n 'TRUNC WIDTH_BUCKET ' +\r\n 'RANDOM SETSEED ' +\r\n 'ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND ' +\r\n // https://www.postgresql.org/docs/11/static/functions-string.html\r\n 'BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ' +\r\n 'ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP' +\r\n 'LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 ' +\r\n 'QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY ' +\r\n 'REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR ' +\r\n 'TO_ASCII TO_HEX TRANSLATE ' +\r\n // https://www.postgresql.org/docs/11/static/functions-binarystring.html\r\n 'OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE ' +\r\n // https://www.postgresql.org/docs/11/static/functions-formatting.html\r\n 'TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP ' +\r\n // https://www.postgresql.org/docs/11/static/functions-datetime.html\r\n 'AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL ' +\r\n 'MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 ' +\r\n 'TIMEOFDAY TRANSACTION_TIMESTAMP|10 ' +\r\n // https://www.postgresql.org/docs/11/static/functions-enum.html\r\n 'ENUM_FIRST ENUM_LAST ENUM_RANGE ' +\r\n // https://www.postgresql.org/docs/11/static/functions-geometry.html\r\n 'AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH ' +\r\n 'BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ' +\r\n // https://www.postgresql.org/docs/11/static/functions-net.html\r\n 'ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY' +\r\n 'INET_MERGE MACADDR8_SET7BIT ' +\r\n // https://www.postgresql.org/docs/11/static/functions-textsearch.html\r\n 'ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY ' +\r\n 'QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE ' +\r\n 'TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY ' +\r\n 'TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN ' +\r\n // https://www.postgresql.org/docs/11/static/functions-xml.html\r\n 'XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT ' +\r\n 'XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT ' +\r\n 'XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES ' +\r\n 'TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA ' +\r\n 'QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA ' +\r\n 'CURSOR_TO_XML CURSOR_TO_XMLSCHEMA ' +\r\n 'SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA ' +\r\n 'DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA ' +\r\n 'XMLATTRIBUTES ' +\r\n // https://www.postgresql.org/docs/11/static/functions-json.html\r\n 'TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT ' +\r\n 'JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH ' +\r\n 'JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH ' +\r\n 'JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET ' +\r\n 'JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT ' +\r\n 'JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET ' +\r\n 'JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY ' +\r\n // https://www.postgresql.org/docs/11/static/functions-sequence.html\r\n 'CURRVAL LASTVAL NEXTVAL SETVAL ' +\r\n // https://www.postgresql.org/docs/11/static/functions-conditional.html\r\n 'COALESCE NULLIF GREATEST LEAST ' +\r\n // https://www.postgresql.org/docs/11/static/functions-array.html\r\n 'ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ' +\r\n 'ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY ' +\r\n 'STRING_TO_ARRAY UNNEST ' +\r\n // https://www.postgresql.org/docs/11/static/functions-range.html\r\n 'ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE ' +\r\n // https://www.postgresql.org/docs/11/static/functions-srf.html\r\n 'GENERATE_SERIES GENERATE_SUBSCRIPTS ' +\r\n // https://www.postgresql.org/docs/11/static/functions-info.html\r\n 'CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT ' +\r\n 'INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE ' +\r\n 'TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE ' +\r\n 'COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION ' +\r\n 'TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX ' +\r\n 'TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS ' +\r\n // https://www.postgresql.org/docs/11/static/functions-admin.html\r\n 'CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE ' +\r\n 'GIN_CLEAN_PENDING_LIST ' +\r\n // https://www.postgresql.org/docs/11/static/functions-trigger.html\r\n 'SUPPRESS_REDUNDANT_UPDATES_TRIGGER ' +\r\n // ihttps://www.postgresql.org/docs/devel/static/lo-funcs.html\r\n 'LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE ' +\r\n //\r\n 'GROUPING CAST ';\r\n\r\n var FUNCTIONS_RE =\r\n FUNCTIONS.trim()\r\n .split(' ')\r\n .map( function(val) { return val.split('|')[0]; } )\r\n .join('|');\r\n\r\n return {\r\n aliases: ['postgres','postgresql'],\r\n case_insensitive: true,\r\n keywords: {\r\n keyword:\r\n SQL_KW + PLPGSQL_KW + ROLE_ATTRS,\r\n built_in:\r\n SQL_BI + PLPGSQL_BI + PLPGSQL_EXCEPTIONS,\r\n },\r\n // Forbid some cunstructs from other languages to improve autodetect. In fact\r\n // \"[a-z]:\" is legal (as part of array slice), but improbabal.\r\n illegal: /:==|\\W\\s*\\(\\*|(^|\\s)\\$[a-z]|{{|[a-z]:\\s*$|\\.\\.\\.|TO:|DO:/,\r\n contains: [\r\n // special handling of some words, which are reserved only in some contexts\r\n {\r\n className: 'keyword',\r\n variants: [\r\n { begin: /\\bTEXT\\s*SEARCH\\b/ },\r\n { begin: /\\b(PRIMARY|FOREIGN|FOR(\\s+NO)?)\\s+KEY\\b/ },\r\n { begin: /\\bPARALLEL\\s+(UNSAFE|RESTRICTED|SAFE)\\b/ },\r\n { begin: /\\bSTORAGE\\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\\b/ },\r\n { begin: /\\bMATCH\\s+(FULL|PARTIAL|SIMPLE)\\b/ },\r\n { begin: /\\bNULLS\\s+(FIRST|LAST)\\b/ },\r\n { begin: /\\bEVENT\\s+TRIGGER\\b/ },\r\n { begin: /\\b(MAPPING|OR)\\s+REPLACE\\b/ },\r\n { begin: /\\b(FROM|TO)\\s+(PROGRAM|STDIN|STDOUT)\\b/ },\r\n { begin: /\\b(SHARE|EXCLUSIVE)\\s+MODE\\b/ },\r\n { begin: /\\b(LEFT|RIGHT)\\s+(OUTER\\s+)?JOIN\\b/ },\r\n { begin: /\\b(FETCH|MOVE)\\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\\b/ },\r\n { begin: /\\bPRESERVE\\s+ROWS\\b/ },\r\n { begin: /\\bDISCARD\\s+PLANS\\b/ },\r\n { begin: /\\bREFERENCING\\s+(OLD|NEW)\\b/ },\r\n { begin: /\\bSKIP\\s+LOCKED\\b/ },\r\n { begin: /\\bGROUPING\\s+SETS\\b/ },\r\n { begin: /\\b(BINARY|INSENSITIVE|SCROLL|NO\\s+SCROLL)\\s+(CURSOR|FOR)\\b/ },\r\n { begin: /\\b(WITH|WITHOUT)\\s+HOLD\\b/ },\r\n { begin: /\\bWITH\\s+(CASCADED|LOCAL)\\s+CHECK\\s+OPTION\\b/ },\r\n { begin: /\\bEXCLUDE\\s+(TIES|NO\\s+OTHERS)\\b/ },\r\n { begin: /\\bFORMAT\\s+(TEXT|XML|JSON|YAML)\\b/ },\r\n { begin: /\\bSET\\s+((SESSION|LOCAL)\\s+)?NAMES\\b/ },\r\n { begin: /\\bIS\\s+(NOT\\s+)?UNKNOWN\\b/ },\r\n { begin: /\\bSECURITY\\s+LABEL\\b/ },\r\n { begin: /\\bSTANDALONE\\s+(YES|NO|NO\\s+VALUE)\\b/ },\r\n { begin: /\\bWITH\\s+(NO\\s+)?DATA\\b/ },\r\n { begin: /\\b(FOREIGN|SET)\\s+DATA\\b/ },\r\n { begin: /\\bSET\\s+(CATALOG|CONSTRAINTS)\\b/ },\r\n { begin: /\\b(WITH|FOR)\\s+ORDINALITY\\b/ },\r\n { begin: /\\bIS\\s+(NOT\\s+)?DOCUMENT\\b/ },\r\n { begin: /\\bXML\\s+OPTION\\s+(DOCUMENT|CONTENT)\\b/ },\r\n { begin: /\\b(STRIP|PRESERVE)\\s+WHITESPACE\\b/ },\r\n { begin: /\\bNO\\s+(ACTION|MAXVALUE|MINVALUE)\\b/ },\r\n { begin: /\\bPARTITION\\s+BY\\s+(RANGE|LIST|HASH)\\b/ },\r\n { begin: /\\bAT\\s+TIME\\s+ZONE\\b/ },\r\n { begin: /\\bGRANTED\\s+BY\\b/ },\r\n { begin: /\\bRETURN\\s+(QUERY|NEXT)\\b/ },\r\n { begin: /\\b(ATTACH|DETACH)\\s+PARTITION\\b/ },\r\n { begin: /\\bFORCE\\s+ROW\\s+LEVEL\\s+SECURITY\\b/ },\r\n { begin: /\\b(INCLUDING|EXCLUDING)\\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\\b/ },\r\n { begin: /\\bAS\\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\\b/ }\r\n ]\r\n },\r\n // functions named as keywords, followed by '('\r\n {\r\n begin: /\\b(FORMAT|FAMILY|VERSION)\\s*\\(/,\r\n //keywords: { built_in: 'FORMAT FAMILY VERSION' }\r\n },\r\n // INCLUDE ( ... ) in index_parameters in CREATE TABLE\r\n {\r\n begin: /\\bINCLUDE\\s*\\(/,\r\n keywords: 'INCLUDE'\r\n },\r\n // not highlight RANGE if not in frame_clause (not 100% correct, but seems satisfactory)\r\n {\r\n begin: /\\bRANGE(?!\\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/\r\n },\r\n // disable highlighting in commands CREATE AGGREGATE/COLLATION/DATABASE/OPERTOR/TEXT SEARCH .../TYPE\r\n // and in PL/pgSQL RAISE ... USING\r\n {\r\n begin: /\\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\\s*=/\r\n },\r\n // PG_smth; HAS_some_PRIVILEGE\r\n {\r\n //className: 'built_in',\r\n begin: /\\b(PG_\\w+?|HAS_[A-Z_]+_PRIVILEGE)\\b/,\r\n relevance: 10\r\n },\r\n // extract\r\n {\r\n begin: /\\bEXTRACT\\s*\\(/,\r\n end: /\\bFROM\\b/,\r\n returnEnd: true,\r\n keywords: {\r\n //built_in: 'EXTRACT',\r\n type: 'CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS ' +\r\n 'MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR ' +\r\n 'TIMEZONE_MINUTE WEEK YEAR'\r\n }\r\n },\r\n // xmlelement, xmlpi - special NAME\r\n {\r\n begin: /\\b(XMLELEMENT|XMLPI)\\s*\\(\\s*NAME/,\r\n keywords: {\r\n //built_in: 'XMLELEMENT XMLPI',\r\n keyword: 'NAME'\r\n }\r\n },\r\n // xmlparse, xmlserialize\r\n {\r\n begin: /\\b(XMLPARSE|XMLSERIALIZE)\\s*\\(\\s*(DOCUMENT|CONTENT)/,\r\n keywords: {\r\n //built_in: 'XMLPARSE XMLSERIALIZE',\r\n keyword: 'DOCUMENT CONTENT'\r\n }\r\n },\r\n // Sequences. We actually skip everything between CACHE|INCREMENT|MAXVALUE|MINVALUE and\r\n // nearest following numeric constant. Without with trick we find a lot of \"keywords\"\r\n // in 'avrasm' autodetection test...\r\n {\r\n beginKeywords: 'CACHE INCREMENT MAXVALUE MINVALUE',\r\n end: hljs.C_NUMBER_RE,\r\n returnEnd: true,\r\n keywords: 'BY CACHE INCREMENT MAXVALUE MINVALUE'\r\n },\r\n // WITH|WITHOUT TIME ZONE as part of datatype\r\n {\r\n className: 'type',\r\n begin: /\\b(WITH|WITHOUT)\\s+TIME\\s+ZONE\\b/\r\n },\r\n // INTERVAL optional fields\r\n {\r\n className: 'type',\r\n begin: /\\bINTERVAL\\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\\s+TO\\s+(MONTH|HOUR|MINUTE|SECOND))?\\b/\r\n },\r\n // Pseudo-types which allowed only as return type\r\n {\r\n begin: /\\bRETURNS\\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\\b/,\r\n keywords: {\r\n keyword: 'RETURNS',\r\n type: 'LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER'\r\n }\r\n },\r\n // Known functions - only when followed by '('\r\n {\r\n begin: '\\\\b(' + FUNCTIONS_RE + ')\\\\s*\\\\('\r\n //keywords: { built_in: FUNCTIONS }\r\n },\r\n // Types\r\n {\r\n begin: '\\\\.(' + TYPES_RE + ')\\\\b' // prevent highlight as type, say, 'oid' in 'pgclass.oid'\r\n },\r\n {\r\n begin: '\\\\b(' + TYPES_RE + ')\\\\s+PATH\\\\b', // in XMLTABLE\r\n keywords: {\r\n keyword: 'PATH', // hopefully no one would use PATH type in XMLTABLE...\r\n type: TYPES.replace('PATH ','')\r\n }\r\n },\r\n {\r\n className: 'type',\r\n begin: '\\\\b(' + TYPES_RE + ')\\\\b'\r\n },\r\n // Strings, see https://www.postgresql.org/docs/11/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS\r\n {\r\n className: 'string',\r\n begin: '\\'', end: '\\'',\r\n contains: [{begin: '\\'\\''}]\r\n },\r\n {\r\n className: 'string',\r\n begin: '(e|E|u&|U&)\\'', end: '\\'',\r\n contains: [{begin: '\\\\\\\\.'}],\r\n relevance: 10\r\n },\r\n {\r\n begin: DOLLAR_STRING,\r\n endSameAsBegin: true,\r\n contains: [\r\n {\r\n // actually we want them all except SQL; listed are those with known implementations\r\n // and XML + JSON just in case\r\n subLanguage: ['pgsql','perl','python','tcl','r','lua','java','php','ruby','bash','scheme','xml','json'],\r\n endsWithParent: true\r\n }\r\n ]\r\n },\r\n // identifiers in quotes\r\n {\r\n begin: '\"', end: '\"',\r\n contains: [{begin: '\"\"'}]\r\n },\r\n // numbers\r\n hljs.C_NUMBER_MODE,\r\n // comments\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n COMMENT_MODE,\r\n // PL/pgSQL staff\r\n // %ROWTYPE, %TYPE, $n\r\n {\r\n className: 'meta',\r\n variants: [\r\n {begin: '%(ROW)?TYPE', relevance: 10}, // %TYPE, %ROWTYPE\r\n {begin: '\\\\$\\\\d+'}, // $n\r\n {begin: '^#\\\\w', end: '$'} // #compiler option\r\n ]\r\n },\r\n // <>\r\n {\r\n className: 'symbol',\r\n begin: LABEL,\r\n relevance: 10\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var VARIABLE = {\r\n begin: '\\\\$+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*'\r\n };\r\n var PREPROCESSOR = {\r\n className: 'meta', begin: /<\\?(php)?|\\?>/\r\n };\r\n var STRING = {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE, PREPROCESSOR],\r\n variants: [\r\n {\r\n begin: 'b\"', end: '\"'\r\n },\r\n {\r\n begin: 'b\\'', end: '\\''\r\n },\r\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\r\n ]\r\n };\r\n var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\r\n return {\r\n aliases: ['php', 'php3', 'php4', 'php5', 'php6', 'php7'],\r\n case_insensitive: true,\r\n keywords:\r\n 'and include_once list abstract global private echo interface as static endswitch ' +\r\n 'array null if endwhile or const for endforeach self var while isset public ' +\r\n 'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\r\n 'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\r\n 'catch __METHOD__ case exception default die require __FUNCTION__ ' +\r\n 'enddeclare final try switch continue endfor endif declare unset true false ' +\r\n 'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\r\n 'yield finally',\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n hljs.COMMENT('//', '$', {contains: [PREPROCESSOR]}),\r\n hljs.COMMENT(\r\n '/\\\\*',\r\n '\\\\*/',\r\n {\r\n contains: [\r\n {\r\n className: 'doctag',\r\n begin: '@[A-Za-z]+'\r\n }\r\n ]\r\n }\r\n ),\r\n hljs.COMMENT(\r\n '__halt_compiler.+?;',\r\n false,\r\n {\r\n endsWithParent: true,\r\n keywords: '__halt_compiler',\r\n lexemes: hljs.UNDERSCORE_IDENT_RE\r\n }\r\n ),\r\n {\r\n className: 'string',\r\n begin: /<<<['\"]?\\w+['\"]?$/, end: /^\\w+;?$/,\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n {\r\n className: 'subst',\r\n variants: [\r\n {begin: /\\$\\w+/},\r\n {begin: /\\{\\$/, end: /\\}/}\r\n ]\r\n }\r\n ]\r\n },\r\n PREPROCESSOR,\r\n {\r\n className: 'keyword', begin: /\\$this\\b/\r\n },\r\n VARIABLE,\r\n {\r\n // swallow composed identifiers to avoid parsing them as keywords\r\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\r\n },\r\n {\r\n className: 'function',\r\n beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\r\n illegal: '\\\\$|\\\\[|%',\r\n contains: [\r\n hljs.UNDERSCORE_TITLE_MODE,\r\n {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)',\r\n contains: [\r\n 'self',\r\n VARIABLE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n STRING,\r\n NUMBER\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n className: 'class',\r\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\r\n illegal: /[:\\(\\$\"]/,\r\n contains: [\r\n {beginKeywords: 'extends implements'},\r\n hljs.UNDERSCORE_TITLE_MODE\r\n ]\r\n },\r\n {\r\n beginKeywords: 'namespace', end: ';',\r\n illegal: /[\\.']/,\r\n contains: [hljs.UNDERSCORE_TITLE_MODE]\r\n },\r\n {\r\n beginKeywords: 'use', end: ';',\r\n contains: [hljs.UNDERSCORE_TITLE_MODE]\r\n },\r\n {\r\n begin: '=>' // No markup, just a relevance booster\r\n },\r\n STRING,\r\n NUMBER\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n disableAutodetect: true\r\n };\r\n};","module.exports = function(hljs) {\r\n var KEYWORDS = {\r\n keyword:\r\n 'actor addressof and as be break class compile_error compile_intrinsic ' +\r\n 'consume continue delegate digestof do else elseif embed end error ' +\r\n 'for fun if ifdef in interface is isnt lambda let match new not object ' +\r\n 'or primitive recover repeat return struct then trait try type until ' +\r\n 'use var where while with xor',\r\n meta:\r\n 'iso val tag trn box ref',\r\n literal:\r\n 'this false true'\r\n };\r\n\r\n var TRIPLE_QUOTE_STRING_MODE = {\r\n className: 'string',\r\n begin: '\"\"\"', end: '\"\"\"',\r\n relevance: 10\r\n };\r\n\r\n var QUOTE_STRING_MODE = {\r\n className: 'string',\r\n begin: '\"', end: '\"',\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n };\r\n\r\n var SINGLE_QUOTE_CHAR_MODE = {\r\n className: 'string',\r\n begin: '\\'', end: '\\'',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n relevance: 0\r\n };\r\n\r\n var TYPE_NAME = {\r\n className: 'type',\r\n begin: '\\\\b_?[A-Z][\\\\w]*',\r\n relevance: 0\r\n };\r\n\r\n var PRIMED_NAME = {\r\n begin: hljs.IDENT_RE + '\\'', relevance: 0\r\n };\r\n\r\n var NUMBER_MODE = {\r\n className: 'number',\r\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9]+|\\\\b0[bB][01]+|(\\\\b\\\\d+(_\\\\d+)?(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)',\r\n relevance: 0\r\n };\r\n\r\n /**\r\n * The `FUNCTION` and `CLASS` modes were intentionally removed to simplify\r\n * highlighting and fix cases like\r\n * ```\r\n * interface Iterator[A: A]\r\n * fun has_next(): Bool\r\n * fun next(): A?\r\n * ```\r\n * where it is valid to have a function head without a body\r\n */\r\n\r\n return {\r\n keywords: KEYWORDS,\r\n contains: [\r\n TYPE_NAME,\r\n TRIPLE_QUOTE_STRING_MODE,\r\n QUOTE_STRING_MODE,\r\n SINGLE_QUOTE_CHAR_MODE,\r\n PRIMED_NAME,\r\n NUMBER_MODE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs){\r\n\r\n var TYPES =\r\n [\"string\", \"char\", \"byte\", \"int\", \"long\", \"bool\", \"decimal\", \"single\",\r\n \"double\", \"DateTime\", \"xml\", \"array\", \"hashtable\", \"void\"];\r\n\r\n // https://msdn.microsoft.com/en-us/library/ms714428(v=vs.85).aspx\r\n var VALID_VERBS =\r\n 'Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|' +\r\n 'Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|' +\r\n 'Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|' +\r\n 'Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|' +\r\n 'ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|' +\r\n 'Limit|Merge|New|Out|Publish|Restore|Save|Sync|Unpublish|Update|' +\r\n 'Approve|Assert|Complete|Confirm|Deny|Disable|Enable|Install|Invoke|Register|' +\r\n 'Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|' +\r\n 'Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|' +\r\n 'Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|' +\r\n 'Unprotect|Use|ForEach|Sort|Tee|Where';\r\n\r\n var COMPARISON_OPERATORS =\r\n '-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|' +\r\n '-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|' +\r\n '-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|' +\r\n '-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|' +\r\n '-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|' +\r\n '-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|' +\r\n '-split|-wildcard|-xor';\r\n\r\n var KEYWORDS = {\r\n keyword: 'if else foreach return do while until elseif begin for trap data dynamicparam ' +\r\n 'end break throw param continue finally in switch exit filter try process catch ' +\r\n 'hidden static parameter'\r\n // TODO: 'validate[A-Z]+' can't work in keywords\r\n };\r\n\r\n var TITLE_NAME_RE = /\\w[\\w\\d]*((-)[\\w\\d]+)*/;\r\n\r\n var BACKTICK_ESCAPE = {\r\n begin: '`[\\\\s\\\\S]',\r\n relevance: 0\r\n };\r\n\r\n var VAR = {\r\n className: 'variable',\r\n variants: [\r\n { begin: /\\$\\B/ },\r\n { className: 'keyword', begin: /\\$this/ },\r\n { begin: /\\$[\\w\\d][\\w\\d_:]*/ }\r\n ]\r\n };\r\n\r\n var LITERAL = {\r\n className: 'literal',\r\n begin: /\\$(null|true|false)\\b/\r\n };\r\n\r\n var QUOTE_STRING = {\r\n className: \"string\",\r\n variants: [{ begin: /\"/, end: /\"/ }, { begin: /@\"/, end: /^\"@/ }],\r\n contains: [\r\n BACKTICK_ESCAPE,\r\n VAR,\r\n {\r\n className: 'variable',\r\n begin: /\\$[A-z]/, end: /[^A-z]/\r\n }\r\n ]\r\n };\r\n\r\n var APOS_STRING = {\r\n className: 'string',\r\n variants: [\r\n { begin: /'/, end: /'/ },\r\n { begin: /@'/, end: /^'@/ }\r\n ]\r\n };\r\n\r\n var PS_HELPTAGS = {\r\n className: \"doctag\",\r\n variants: [\r\n /* no paramater help tags */\r\n {\r\n begin: /\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/\r\n },\r\n /* one parameter help tags */\r\n { begin: /\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/ }\r\n ]\r\n };\r\n\r\n var PS_COMMENT = hljs.inherit(\r\n hljs.COMMENT(null, null),\r\n {\r\n variants: [\r\n /* single-line comment */\r\n { begin: /#/, end: /$/ },\r\n /* multi-line comment */\r\n { begin: /<#/, end: /#>/ }\r\n ],\r\n contains: [PS_HELPTAGS]\r\n }\r\n );\r\n\r\n var CMDLETS = {\r\n className: 'built_in',\r\n variants: [\r\n { begin: '('.concat(VALID_VERBS, ')+(-)[\\\\w\\\\d]+') }\r\n ]\r\n };\r\n\r\n var PS_CLASS = {\r\n className: 'class',\r\n beginKeywords: 'class enum', end: /\\s*[{]/, excludeEnd: true,\r\n relevance: 0,\r\n contains: [hljs.TITLE_MODE]\r\n };\r\n\r\n var PS_FUNCTION = {\r\n className: 'function',\r\n begin: /function\\s+/, end: /\\s*\\{|$/,\r\n excludeEnd: true,\r\n returnBegin: true,\r\n relevance: 0,\r\n contains: [\r\n { begin: \"function\", relevance: 0, className: \"keyword\" },\r\n { className: \"title\",\r\n begin: TITLE_NAME_RE, relevance:0 },\r\n { begin: /\\(/, end: /\\)/, className: \"params\",\r\n relevance: 0,\r\n contains: [VAR] }\r\n // CMDLETS\r\n ]\r\n };\r\n\r\n // Using statment, plus type, plus assembly name.\r\n var PS_USING = {\r\n begin: /using\\s/, end: /$/,\r\n returnBegin: true,\r\n contains: [\r\n QUOTE_STRING,\r\n APOS_STRING,\r\n { className: 'keyword', begin: /(using|assembly|command|module|namespace|type)/ }\r\n ]\r\n };\r\n\r\n // Comperison operators & function named parameters.\r\n var PS_ARGUMENTS = {\r\n variants: [\r\n // PS literals are pretty verbose so it's a good idea to accent them a bit.\r\n { className: 'operator', begin: '('.concat(COMPARISON_OPERATORS, ')\\\\b') },\r\n { className: 'literal', begin: /(-)[\\w\\d]+/, relevance:0 }\r\n ]\r\n };\r\n\r\n var STATIC_MEMBER = {\r\n className: 'selector-tag',\r\n begin: /::\\w+\\b/, end: /$/,\r\n returnBegin: true,\r\n contains: [\r\n { className: 'attribute', begin: /\\w+/, endsParent: true }\r\n ]\r\n };\r\n\r\n var HASH_SIGNS = {\r\n className: 'selector-tag',\r\n begin: /\\@\\B/,\r\n relevance: 0\r\n };\r\n\r\n var PS_NEW_OBJECT_TYPE = {\r\n className: 'built_in',\r\n begin: /New-Object\\s+\\w/, end: /$/,\r\n returnBegin: true,\r\n contains: [\r\n { begin: /New-Object\\s+/, relevance: 0 },\r\n { className: 'meta', begin: /([\\w\\.])+/, endsParent: true }\r\n ]\r\n };\r\n\r\n // It's a very general rule so I'll narrow it a bit with some strict boundaries\r\n // to avoid any possible false-positive collisions!\r\n var PS_METHODS = {\r\n className: 'function',\r\n begin: /\\[.*\\]\\s*[\\w]+[ ]??\\(/, end: /$/,\r\n returnBegin: true,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'keyword', begin: '('.concat(\r\n KEYWORDS.keyword.toString().replace(/\\s/g, '|'\r\n ), ')\\\\b'),\r\n endsParent: true,\r\n relevance: 0\r\n },\r\n hljs.inherit(hljs.TITLE_MODE, { endsParent: true })\r\n ]\r\n };\r\n\r\n var GENTLEMANS_SET = [\r\n // STATIC_MEMBER,\r\n PS_METHODS,\r\n PS_COMMENT,\r\n BACKTICK_ESCAPE,\r\n hljs.NUMBER_MODE,\r\n QUOTE_STRING,\r\n APOS_STRING,\r\n // PS_NEW_OBJECT_TYPE,\r\n CMDLETS,\r\n VAR,\r\n LITERAL,\r\n HASH_SIGNS\r\n ];\r\n\r\n var PS_TYPE = {\r\n begin: /\\[/, end: /\\]/,\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n relevance: 0,\r\n contains: [].concat(\r\n 'self',\r\n GENTLEMANS_SET,\r\n { begin: \"(\" + TYPES.join(\"|\") + \")\", className: \"built_in\", relevance:0 },\r\n { className: 'type', begin: /[\\.\\w\\d]+/, relevance: 0 }\r\n )\r\n };\r\n\r\n PS_METHODS.contains.unshift(PS_TYPE)\r\n\r\n return {\r\n aliases: [\"ps\", \"ps1\"],\r\n lexemes: /-?[A-z\\.\\-]+/,\r\n case_insensitive: true,\r\n keywords: KEYWORDS,\r\n contains: GENTLEMANS_SET.concat(\r\n PS_CLASS,\r\n PS_FUNCTION,\r\n PS_USING,\r\n PS_ARGUMENTS,\r\n PS_TYPE\r\n )\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords: {\r\n keyword: 'BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color ' +\r\n 'double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject ' +\r\n 'Object StringDict StringList Table TableRow XML ' +\r\n // Java keywords\r\n 'false synchronized int abstract float private char boolean static null if const ' +\r\n 'for true while long throw strictfp finally protected import native final return void ' +\r\n 'enum else break transient new catch instanceof byte super volatile case assert short ' +\r\n 'package default double public try this switch continue throws protected public private',\r\n literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI',\r\n title: 'setup draw',\r\n built_in: 'displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key ' +\r\n 'keyCode pixels focused frameCount frameRate height width ' +\r\n 'size createGraphics beginDraw createShape loadShape PShape arc ellipse line point ' +\r\n 'quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint ' +\r\n 'curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex ' +\r\n 'endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap ' +\r\n 'strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased ' +\r\n 'mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour ' +\r\n 'millis minute month second year background clear colorMode fill noFill noStroke stroke alpha ' +\r\n 'blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY ' +\r\n 'screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ' +\r\n 'ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle ' +\r\n 'pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf ' +\r\n 'nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset ' +\r\n 'box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings ' +\r\n 'loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput ' +\r\n 'createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings ' +\r\n 'saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale ' +\r\n 'shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal ' +\r\n 'pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap ' +\r\n 'blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont ' +\r\n 'loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil ' +\r\n 'constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees ' +\r\n 'radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed'\r\n },\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n contains: [\r\n hljs.C_NUMBER_MODE,\r\n {\r\n begin: '[a-zA-Z_][\\\\da-zA-Z_]+\\\\.[\\\\da-zA-Z_]{1,3}', end: ':',\r\n excludeEnd: true\r\n },\r\n {\r\n begin: '(ncalls|tottime|cumtime)', end: '$',\r\n keywords: 'ncalls tottime|10 cumtime|10 filename',\r\n relevance: 10\r\n },\r\n {\r\n begin: 'function calls', end: '$',\r\n contains: [hljs.C_NUMBER_MODE],\r\n relevance: 10\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'string',\r\n begin: '\\\\(', end: '\\\\)$',\r\n excludeBegin: true, excludeEnd: true,\r\n relevance: 0\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n\r\n var ATOM = {\r\n\r\n begin: /[a-z][A-Za-z0-9_]*/,\r\n relevance: 0\r\n };\r\n\r\n var VAR = {\r\n\r\n className: 'symbol',\r\n variants: [\r\n {begin: /[A-Z][a-zA-Z0-9_]*/},\r\n {begin: /_[A-Za-z0-9_]*/},\r\n ],\r\n relevance: 0\r\n };\r\n\r\n var PARENTED = {\r\n\r\n begin: /\\(/,\r\n end: /\\)/,\r\n relevance: 0\r\n };\r\n\r\n var LIST = {\r\n\r\n begin: /\\[/,\r\n end: /\\]/\r\n };\r\n\r\n var LINE_COMMENT = {\r\n\r\n className: 'comment',\r\n begin: /%/, end: /$/,\r\n contains: [hljs.PHRASAL_WORDS_MODE]\r\n };\r\n\r\n var BACKTICK_STRING = {\r\n\r\n className: 'string',\r\n begin: /`/, end: /`/,\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n };\r\n\r\n var CHAR_CODE = {\r\n\r\n className: 'string', // 0'a etc.\r\n begin: /0\\'(\\\\\\'|.)/\r\n };\r\n\r\n var SPACE_CODE = {\r\n\r\n className: 'string',\r\n begin: /0\\'\\\\s/ // 0'\\s\r\n };\r\n\r\n var PRED_OP = { // relevance booster\r\n begin: /:-/\r\n };\r\n\r\n var inner = [\r\n\r\n ATOM,\r\n VAR,\r\n PARENTED,\r\n PRED_OP,\r\n LIST,\r\n LINE_COMMENT,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n BACKTICK_STRING,\r\n CHAR_CODE,\r\n SPACE_CODE,\r\n hljs.C_NUMBER_MODE\r\n ];\r\n\r\n PARENTED.contains = inner;\r\n LIST.contains = inner;\r\n\r\n return {\r\n contains: inner.concat([\r\n {begin: /\\.$/} // relevance booster\r\n ])\r\n };\r\n};","module.exports = function(hljs) {\r\n\r\n // whitespaces: space, tab, formfeed\r\n var WS0 = '[ \\\\t\\\\f]*';\r\n var WS1 = '[ \\\\t\\\\f]+';\r\n // delimiter\r\n var DELIM = '(' + WS0+'[:=]'+WS0+ '|' + WS1 + ')';\r\n var KEY_ALPHANUM = '([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\r\n var KEY_OTHER = '([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\r\n\r\n var DELIM_AND_VALUE = {\r\n // skip DELIM\r\n end: DELIM,\r\n relevance: 0,\r\n starts: {\r\n // value: everything until end of line (again, taking into account backslashes)\r\n className: 'string',\r\n end: /$/,\r\n relevance: 0,\r\n contains: [\r\n { begin: '\\\\\\\\\\\\n' }\r\n ]\r\n }\r\n };\r\n\r\n return {\r\n case_insensitive: true,\r\n illegal: /\\S/,\r\n contains: [\r\n hljs.COMMENT('^\\\\s*[!#]', '$'),\r\n // key: everything until whitespace or = or : (taking into account backslashes)\r\n // case of a \"normal\" key\r\n {\r\n begin: KEY_ALPHANUM + DELIM,\r\n returnBegin: true,\r\n contains: [\r\n {\r\n className: 'attr',\r\n begin: KEY_ALPHANUM,\r\n endsParent: true,\r\n relevance: 0\r\n }\r\n ],\r\n starts: DELIM_AND_VALUE\r\n },\r\n // case of key containing non-alphanumeric chars => relevance = 0\r\n {\r\n begin: KEY_OTHER + DELIM,\r\n returnBegin: true,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: KEY_OTHER,\r\n endsParent: true,\r\n relevance: 0\r\n }\r\n ],\r\n starts: DELIM_AND_VALUE\r\n },\r\n // case of an empty key\r\n {\r\n className: 'attr',\r\n relevance: 0,\r\n begin: KEY_OTHER + WS0 + '$'\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords: {\r\n keyword: 'package import option optional required repeated group oneof',\r\n built_in: 'double float int32 int64 uint32 uint64 sint32 sint64 ' +\r\n 'fixed32 fixed64 sfixed32 sfixed64 bool string bytes',\r\n literal: 'true false'\r\n },\r\n contains: [\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.NUMBER_MODE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n {\r\n className: 'class',\r\n beginKeywords: 'message enum service', end: /\\{/,\r\n illegal: /\\n/,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {\r\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\r\n })\r\n ]\r\n },\r\n {\r\n className: 'function',\r\n beginKeywords: 'rpc',\r\n end: /;/, excludeEnd: true,\r\n keywords: 'rpc returns'\r\n },\r\n {\r\n begin: /^\\s*[A-Z_]+/,\r\n end: /\\s*=/, excludeEnd: true\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n\r\n var PUPPET_KEYWORDS = {\r\n keyword:\r\n /* language keywords */\r\n 'and case default else elsif false if in import enherits node or true undef unless main settings $string ',\r\n literal:\r\n /* metaparameters */\r\n 'alias audit before loglevel noop require subscribe tag ' +\r\n /* normal attributes */\r\n 'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' +\r\n 'en_address ip_address realname command environment hour monute month monthday special target weekday '+\r\n 'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' +\r\n 'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' +\r\n 'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid '+\r\n 'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' +\r\n 'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' +\r\n 'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' +\r\n 'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' +\r\n 'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' +\r\n 'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' +\r\n 'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' +\r\n 'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' +\r\n 'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' +\r\n 'sslverify mounted',\r\n built_in:\r\n /* core facts */\r\n 'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' +\r\n 'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces '+\r\n 'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' +\r\n 'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' +\r\n 'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' +\r\n 'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease '+\r\n 'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion '+\r\n 'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced '+\r\n 'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime '+\r\n 'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version'\r\n };\r\n\r\n var COMMENT = hljs.COMMENT('#', '$');\r\n\r\n var IDENT_RE = '([A-Za-z_]|::)(\\\\w|::)*';\r\n\r\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE});\r\n\r\n var VARIABLE = {className: 'variable', begin: '\\\\$' + IDENT_RE};\r\n\r\n var STRING = {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE, VARIABLE],\r\n variants: [\r\n {begin: /'/, end: /'/},\r\n {begin: /\"/, end: /\"/}\r\n ]\r\n };\r\n\r\n return {\r\n aliases: ['pp'],\r\n contains: [\r\n COMMENT,\r\n VARIABLE,\r\n STRING,\r\n {\r\n beginKeywords: 'class', end: '\\\\{|;',\r\n illegal: /=/,\r\n contains: [TITLE, COMMENT]\r\n },\r\n {\r\n beginKeywords: 'define', end: /\\{/,\r\n contains: [\r\n {\r\n className: 'section', begin: hljs.IDENT_RE, endsParent: true\r\n }\r\n ]\r\n },\r\n {\r\n begin: hljs.IDENT_RE + '\\\\s+\\\\{', returnBegin: true,\r\n end: /\\S/,\r\n contains: [\r\n {\r\n className: 'keyword',\r\n begin: hljs.IDENT_RE\r\n },\r\n {\r\n begin: /\\{/, end: /\\}/,\r\n keywords: PUPPET_KEYWORDS,\r\n relevance: 0,\r\n contains: [\r\n STRING,\r\n COMMENT,\r\n {\r\n begin:'[a-zA-Z_]+\\\\s*=>',\r\n returnBegin: true, end: '=>',\r\n contains: [\r\n {\r\n className: 'attr',\r\n begin: hljs.IDENT_RE,\r\n }\r\n ]\r\n },\r\n {\r\n className: 'number',\r\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\r\n relevance: 0\r\n },\r\n VARIABLE\r\n ]\r\n }\r\n ],\r\n relevance: 0\r\n }\r\n ]\r\n }\r\n};","module.exports = // Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000;\r\n\r\nfunction(hljs) {\r\n var STRINGS = { // PB IDE color: #0080FF (Azure Radiance)\r\n className: 'string',\r\n begin: '(~)?\"', end: '\"',\r\n illegal: '\\\\n'\r\n };\r\n var CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink)\r\n // \"#\" + a letter or underscore + letters, digits or underscores + (optional) \"$\"\r\n className: 'symbol',\r\n begin: '#[a-zA-Z_]\\\\w*\\\\$?'\r\n };\r\n\r\n return {\r\n aliases: ['pb', 'pbi'],\r\n keywords: // PB IDE color: #006666 (Blue Stone) + Bold\r\n // Keywords from all version of PureBASIC 5.00 upward ...\r\n 'Align And Array As Break CallDebugger Case CompilerCase CompilerDefault ' +\r\n 'CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError ' +\r\n 'CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug ' +\r\n 'DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default ' +\r\n 'Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' +\r\n 'EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration ' +\r\n 'EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect ' +\r\n 'EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends ' +\r\n 'FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC ' +\r\n 'IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount ' +\r\n 'Map Module NewList NewMap Next Not Or Procedure ProcedureC ' +\r\n 'ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim ' +\r\n 'Read Repeat Restore Return Runtime Select Shared Static Step Structure ' +\r\n 'StructureUnion Swap Threaded To UndefineMacro Until Until UnuseModule ' +\r\n 'UseModule Wend While With XIncludeFile XOr',\r\n contains: [\r\n // COMMENTS | PB IDE color: #00AAAA (Persian Green)\r\n hljs.COMMENT(';', '$', {relevance: 0}),\r\n\r\n { // PROCEDURES DEFINITIONS\r\n className: 'function',\r\n begin: '\\\\b(Procedure|Declare)(C|CDLL|DLL)?\\\\b',\r\n end: '\\\\(',\r\n excludeEnd: true,\r\n returnBegin: true,\r\n contains: [\r\n { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold\r\n className: 'keyword',\r\n begin: '(Procedure|Declare)(C|CDLL|DLL)?',\r\n excludeEnd: true\r\n },\r\n { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black)\r\n className: 'type',\r\n begin: '\\\\.\\\\w*'\r\n // end: ' ',\r\n },\r\n hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone)\r\n ]\r\n },\r\n STRINGS,\r\n CONSTANTS\r\n ]\r\n };\r\n}\r\n\r\n/* ==============================================================================\r\n CHANGELOG\r\n ==============================================================================\r\n - v.1.2 (2017-05-12)\r\n -- BUG-FIX: Some keywords were accidentally joyned together. Now fixed.\r\n - v.1.1 (2017-04-30)\r\n -- Updated to PureBASIC 5.60.\r\n -- Keywords list now built by extracting them from the PureBASIC SDK's\r\n \"SyntaxHilighting.dll\" (from each PureBASIC version). Tokens from each\r\n version are added to the list, and renamed or removed tokens are kept\r\n for the sake of covering all versions of the language from PureBASIC\r\n v5.00 upward. (NOTE: currently, there are no renamed or deprecated\r\n tokens in the keywords list). For more info, see:\r\n -- http://www.purebasic.fr/english/viewtopic.php?&p=506269\r\n -- https://github.com/tajmone/purebasic-archives/tree/master/syntax-highlighting/guidelines\r\n - v.1.0 (April 2016)\r\n -- First release\r\n -- Keywords list taken and adapted from GuShH's (Gustavo Julio Fiorenza)\r\n PureBasic language file for GeSHi:\r\n -- https://github.com/easybook/geshi/blob/master/geshi/purebasic.php\r\n*/;","module.exports = function(hljs) {\r\n var KEYWORDS = {\r\n keyword:\r\n 'and elif is global as in if from raise for except finally print import pass return ' +\r\n 'exec else break not with class assert yield try while continue del or def lambda ' +\r\n 'async await nonlocal|10',\r\n built_in:\r\n 'Ellipsis NotImplemented',\r\n literal: 'False None True'\r\n };\r\n var PROMPT = {\r\n className: 'meta', begin: /^(>>>|\\.\\.\\.) /\r\n };\r\n var SUBST = {\r\n className: 'subst',\r\n begin: /\\{/, end: /\\}/,\r\n keywords: KEYWORDS,\r\n illegal: /#/\r\n };\r\n var LITERAL_BRACKET = {\r\n begin: /\\{\\{/,\r\n relevance: 0\r\n };\r\n var STRING = {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n variants: [\r\n {\r\n begin: /(u|b)?r?'''/, end: /'''/,\r\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT],\r\n relevance: 10\r\n },\r\n {\r\n begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\r\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT],\r\n relevance: 10\r\n },\r\n {\r\n begin: /(fr|rf|f)'''/, end: /'''/,\r\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT, LITERAL_BRACKET, SUBST]\r\n },\r\n {\r\n begin: /(fr|rf|f)\"\"\"/, end: /\"\"\"/,\r\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT, LITERAL_BRACKET, SUBST]\r\n },\r\n {\r\n begin: /(u|r|ur)'/, end: /'/,\r\n relevance: 10\r\n },\r\n {\r\n begin: /(u|r|ur)\"/, end: /\"/,\r\n relevance: 10\r\n },\r\n {\r\n begin: /(b|br)'/, end: /'/\r\n },\r\n {\r\n begin: /(b|br)\"/, end: /\"/\r\n },\r\n {\r\n begin: /(fr|rf|f)'/, end: /'/,\r\n contains: [hljs.BACKSLASH_ESCAPE, LITERAL_BRACKET, SUBST]\r\n },\r\n {\r\n begin: /(fr|rf|f)\"/, end: /\"/,\r\n contains: [hljs.BACKSLASH_ESCAPE, LITERAL_BRACKET, SUBST]\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE\r\n ]\r\n };\r\n var NUMBER = {\r\n className: 'number', relevance: 0,\r\n variants: [\r\n {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},\r\n {begin: '\\\\b(0o[0-7]+)[lLjJ]?'},\r\n {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}\r\n ]\r\n };\r\n var PARAMS = {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n contains: ['self', PROMPT, NUMBER, STRING, hljs.HASH_COMMENT_MODE]\r\n };\r\n SUBST.contains = [STRING, NUMBER, PROMPT];\r\n return {\r\n aliases: ['py', 'gyp', 'ipython'],\r\n keywords: KEYWORDS,\r\n illegal: /(<\\/|->|\\?)|=>/,\r\n contains: [\r\n PROMPT,\r\n NUMBER,\r\n // eat \"if\" prior to string so that it won't accidentally be\r\n // labeled as an f-string as in:\r\n { beginKeywords: \"if\", relevance: 0 },\r\n STRING,\r\n hljs.HASH_COMMENT_MODE,\r\n {\r\n variants: [\r\n {className: 'function', beginKeywords: 'def'},\r\n {className: 'class', beginKeywords: 'class'}\r\n ],\r\n end: /:/,\r\n illegal: /[${=;\\n,]/,\r\n contains: [\r\n hljs.UNDERSCORE_TITLE_MODE,\r\n PARAMS,\r\n {\r\n begin: /->/, endsWithParent: true,\r\n keywords: 'None'\r\n }\r\n ]\r\n },\r\n {\r\n className: 'meta',\r\n begin: /^[\\t ]*@/, end: /$/\r\n },\r\n {\r\n begin: /\\b(print|exec)\\(/ // don’t highlight keywords-turned-functions in Python 3\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var Q_KEYWORDS = {\r\n keyword:\r\n 'do while select delete by update from',\r\n literal:\r\n '0b 1b',\r\n built_in:\r\n 'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum',\r\n type:\r\n '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid'\r\n };\r\n return {\r\n aliases:['k', 'kdb'],\r\n keywords: Q_KEYWORDS,\r\n lexemes: /(`?)[A-Za-z0-9_]+\\b/,\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var KEYWORDS = {\r\n keyword:\r\n 'in of on if for while finally var new function do return void else break catch ' +\r\n 'instanceof with throw case default try this switch continue typeof delete ' +\r\n 'let yield const export super debugger as async await import',\r\n literal:\r\n 'true false null undefined NaN Infinity',\r\n built_in:\r\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\r\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\r\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\r\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\r\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\r\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\r\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\r\n 'Behavior bool color coordinate date double enumeration font geocircle georectangle ' +\r\n 'geoshape int list matrix4x4 parent point quaternion real rect ' +\r\n 'size string url variant vector2d vector3d vector4d' +\r\n 'Promise'\r\n };\r\n\r\n var QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\\\._]*';\r\n\r\n // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line.\r\n // Use property class.\r\n var PROPERTY = {\r\n className: 'keyword',\r\n begin: '\\\\bproperty\\\\b',\r\n starts: {\r\n className: 'string',\r\n end: '(:|=|;|,|//|/\\\\*|$)',\r\n returnEnd: true\r\n }\r\n };\r\n\r\n // Isolate signal statements. Ends at a ) a comment or end of line.\r\n // Use property class.\r\n var SIGNAL = {\r\n className: 'keyword',\r\n begin: '\\\\bsignal\\\\b',\r\n starts: {\r\n className: 'string',\r\n end: '(\\\\(|:|=|;|,|//|/\\\\*|$)',\r\n returnEnd: true\r\n }\r\n };\r\n\r\n // id: is special in QML. When we see id: we want to mark the id: as attribute and\r\n // emphasize the token following.\r\n var ID_ID = {\r\n className: 'attribute',\r\n begin: '\\\\bid\\\\s*:',\r\n starts: {\r\n className: 'string',\r\n end: QML_IDENT_RE,\r\n returnEnd: false\r\n }\r\n };\r\n\r\n // Find QML object attribute. An attribute is a QML identifier followed by :.\r\n // Unfortunately it's hard to know where it ends, as it may contain scalars,\r\n // objects, object definitions, or javascript. The true end is either when the parent\r\n // ends or the next attribute is detected.\r\n var QML_ATTRIBUTE = {\r\n begin: QML_IDENT_RE + '\\\\s*:',\r\n returnBegin: true,\r\n contains: [\r\n {\r\n className: 'attribute',\r\n begin: QML_IDENT_RE,\r\n end: '\\\\s*:',\r\n excludeEnd: true,\r\n relevance: 0\r\n }\r\n ],\r\n relevance: 0\r\n };\r\n\r\n // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }.\r\n // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {.\r\n var QML_OBJECT = {\r\n begin: QML_IDENT_RE + '\\\\s*{', end: '{',\r\n returnBegin: true,\r\n relevance: 0,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: QML_IDENT_RE})\r\n ]\r\n };\r\n\r\n return {\r\n aliases: ['qt'],\r\n case_insensitive: false,\r\n keywords: KEYWORDS,\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: /^\\s*['\"]use (strict|asm)['\"]/\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n { // template string\r\n className: 'string',\r\n begin: '`', end: '`',\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n {\r\n className: 'subst',\r\n begin: '\\\\$\\\\{', end: '\\\\}'\r\n }\r\n ]\r\n },\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {\r\n className: 'number',\r\n variants: [\r\n { begin: '\\\\b(0[bB][01]+)' },\r\n { begin: '\\\\b(0[oO][0-7]+)' },\r\n { begin: hljs.C_NUMBER_RE }\r\n ],\r\n relevance: 0\r\n },\r\n { // \"value\" container\r\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\r\n keywords: 'return throw case',\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.REGEXP_MODE,\r\n { // E4X / JSX\r\n begin: /\\s*[);\\]]/,\r\n relevance: 0,\r\n subLanguage: 'xml'\r\n }\r\n ],\r\n relevance: 0\r\n },\r\n SIGNAL,\r\n PROPERTY,\r\n {\r\n className: 'function',\r\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\r\n {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n }\r\n ],\r\n illegal: /\\[|%/\r\n },\r\n {\r\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\r\n },\r\n ID_ID,\r\n QML_ATTRIBUTE,\r\n QML_OBJECT\r\n ],\r\n illegal: /#/\r\n };\r\n};","module.exports = function(hljs) {\r\n var IDENT_RE = '([a-zA-Z]|\\\\.[a-zA-Z.])[a-zA-Z0-9._]*';\r\n\r\n return {\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n {\r\n begin: IDENT_RE,\r\n lexemes: IDENT_RE,\r\n keywords: {\r\n keyword:\r\n 'function if in break next repeat else for return switch while try tryCatch ' +\r\n 'stop warning require library attach detach source setMethod setGeneric ' +\r\n 'setGroupGeneric setClass ...',\r\n literal:\r\n 'NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 ' +\r\n 'NA_complex_|10'\r\n },\r\n relevance: 0\r\n },\r\n {\r\n // hex value\r\n className: 'number',\r\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\r\n relevance: 0\r\n },\r\n {\r\n // explicit integer\r\n className: 'number',\r\n begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\r\n relevance: 0\r\n },\r\n {\r\n // number with trailing decimal\r\n className: 'number',\r\n begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\r\n relevance: 0\r\n },\r\n {\r\n // number\r\n className: 'number',\r\n begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\r\n relevance: 0\r\n },\r\n {\r\n // number with leading decimal\r\n className: 'number',\r\n begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\r\n relevance: 0\r\n },\r\n\r\n {\r\n // escaped identifier\r\n begin: '`',\r\n end: '`',\r\n relevance: 0\r\n },\r\n\r\n {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n variants: [\r\n {begin: '\"', end: '\"'},\r\n {begin: \"'\", end: \"'\"}\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n function orReValues(ops){\r\n return ops\r\n .map(function(op) {\r\n return op\r\n .split('')\r\n .map(function(char) {\r\n return '\\\\' + char;\r\n })\r\n .join('');\r\n })\r\n .join('|');\r\n }\r\n\r\n var RE_IDENT = '~?[a-z$_][0-9a-zA-Z$_]*';\r\n var RE_MODULE_IDENT = '`?[A-Z$_][0-9a-zA-Z$_]*';\r\n\r\n var RE_PARAM_TYPEPARAM = '\\'?[a-z$_][0-9a-z$_]*';\r\n var RE_PARAM_TYPE = '\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*(' + RE_PARAM_TYPEPARAM + '\\s*(,' + RE_PARAM_TYPEPARAM + ')*)?\\s*\\))?';\r\n var RE_PARAM = RE_IDENT + '(' + RE_PARAM_TYPE + ')?(' + RE_PARAM_TYPE + ')?';\r\n var RE_OPERATOR = \"(\" + orReValues(['||', '&&', '++', '**', '+.', '*', '/', '*.', '/.', '...', '|>']) + \"|==|===)\";\r\n var RE_OPERATOR_SPACED = \"\\\\s+\" + RE_OPERATOR + \"\\\\s+\";\r\n\r\n var KEYWORDS = {\r\n keyword:\r\n 'and as asr assert begin class constraint do done downto else end exception external' +\r\n 'for fun function functor if in include inherit initializer' +\r\n 'land lazy let lor lsl lsr lxor match method mod module mutable new nonrec' +\r\n 'object of open or private rec sig struct then to try type val virtual when while with',\r\n built_in:\r\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ',\r\n literal:\r\n 'true false'\r\n };\r\n\r\n var RE_NUMBER = '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\r\n '0[oO][0-7_]+[Lln]?|' +\r\n '0[bB][01_]+[Lln]?|' +\r\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)';\r\n\r\n var NUMBER_MODE = {\r\n className: 'number',\r\n relevance: 0,\r\n variants: [\r\n {\r\n begin: RE_NUMBER\r\n },\r\n {\r\n begin: '\\\\(\\\\-' + RE_NUMBER + '\\\\)'\r\n }\r\n ]\r\n };\r\n\r\n var OPERATOR_MODE = {\r\n className: 'operator',\r\n relevance: 0,\r\n begin: RE_OPERATOR\r\n };\r\n var LIST_CONTENTS_MODES = [\r\n {\r\n className: 'identifier',\r\n relevance: 0,\r\n begin: RE_IDENT\r\n },\r\n OPERATOR_MODE,\r\n NUMBER_MODE\r\n ];\r\n\r\n var MODULE_ACCESS_CONTENTS = [\r\n hljs.QUOTE_STRING_MODE,\r\n OPERATOR_MODE,\r\n {\r\n className: 'module',\r\n begin: \"\\\\b\" + RE_MODULE_IDENT, returnBegin: true,\r\n end: \"\\.\",\r\n contains: [\r\n {\r\n className: 'identifier',\r\n begin: RE_MODULE_IDENT,\r\n relevance: 0\r\n }\r\n ]\r\n }\r\n ];\r\n\r\n var PARAMS_CONTENTS = [\r\n {\r\n className: 'module',\r\n begin: \"\\\\b\" + RE_MODULE_IDENT, returnBegin: true,\r\n end: \"\\.\",\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'identifier',\r\n begin: RE_MODULE_IDENT,\r\n relevance: 0\r\n }\r\n ]\r\n }\r\n ];\r\n\r\n var PARAMS_MODE = {\r\n begin: RE_IDENT,\r\n end: '(,|\\\\n|\\\\))',\r\n relevance: 0,\r\n contains: [\r\n OPERATOR_MODE,\r\n {\r\n className: 'typing',\r\n begin: ':',\r\n end: '(,|\\\\n)',\r\n returnBegin: true,\r\n relevance: 0,\r\n contains: PARAMS_CONTENTS\r\n }\r\n ]\r\n };\r\n\r\n var FUNCTION_BLOCK_MODE = {\r\n className: 'function',\r\n relevance: 0,\r\n keywords: KEYWORDS,\r\n variants: [\r\n {\r\n begin: '\\\\s(\\\\(\\\\.?.*?\\\\)|' + RE_IDENT + ')\\\\s*=>',\r\n end: '\\\\s*=>',\r\n returnBegin: true,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'params',\r\n variants: [\r\n {\r\n begin: RE_IDENT\r\n },\r\n {\r\n begin: RE_PARAM\r\n },\r\n {\r\n begin: /\\(\\s*\\)/,\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n begin: '\\\\s\\\\(\\\\.?[^;\\\\|]*\\\\)\\\\s*=>',\r\n end: '\\\\s=>',\r\n returnBegin: true,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'params',\r\n relevance: 0,\r\n variants: [\r\n PARAMS_MODE\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n begin: '\\\\(\\\\.\\\\s' + RE_IDENT + '\\\\)\\\\s*=>'\r\n }\r\n ]\r\n };\r\n MODULE_ACCESS_CONTENTS.push(FUNCTION_BLOCK_MODE);\r\n\r\n var CONSTRUCTOR_MODE = {\r\n className: 'constructor',\r\n begin: RE_MODULE_IDENT + '\\\\(',\r\n end: '\\\\)',\r\n illegal: '\\\\n',\r\n keywords: KEYWORDS,\r\n contains: [\r\n hljs.QUOTE_STRING_MODE,\r\n OPERATOR_MODE,\r\n {\r\n className: 'params',\r\n begin: '\\\\b' + RE_IDENT\r\n }\r\n ]\r\n };\r\n\r\n var PATTERN_MATCH_BLOCK_MODE = {\r\n className: 'pattern-match',\r\n begin: '\\\\|',\r\n returnBegin: true,\r\n keywords: KEYWORDS,\r\n end: '=>',\r\n relevance: 0,\r\n contains: [\r\n CONSTRUCTOR_MODE,\r\n OPERATOR_MODE,\r\n {\r\n relevance: 0,\r\n className: 'constructor',\r\n begin: RE_MODULE_IDENT\r\n }\r\n ]\r\n };\r\n\r\n var MODULE_ACCESS_MODE = {\r\n className: 'module-access',\r\n keywords: KEYWORDS,\r\n returnBegin: true,\r\n variants: [\r\n {\r\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\" + RE_IDENT\r\n },\r\n {\r\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\\\\(\",\r\n end: \"\\\\)\",\r\n returnBegin: true,\r\n contains: [\r\n FUNCTION_BLOCK_MODE,\r\n {\r\n begin: '\\\\(',\r\n end: '\\\\)',\r\n skip: true\r\n }\r\n ].concat(MODULE_ACCESS_CONTENTS)\r\n },\r\n {\r\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+{\",\r\n end: \"}\"\r\n }\r\n ],\r\n contains: MODULE_ACCESS_CONTENTS\r\n };\r\n\r\n PARAMS_CONTENTS.push(MODULE_ACCESS_MODE);\r\n\r\n return {\r\n aliases: ['re'],\r\n keywords: KEYWORDS,\r\n illegal: '(:\\\\-|:=|\\\\${|\\\\+=)',\r\n contains: [\r\n hljs.COMMENT('/\\\\*', '\\\\*/', { illegal: '^(\\\\#,\\\\/\\\\/)' }),\r\n {\r\n className: 'character',\r\n begin: '\\'(\\\\\\\\[^\\']+|[^\\'])\\'',\r\n illegal: '\\\\n',\r\n relevance: 0\r\n },\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'literal',\r\n begin: '\\\\(\\\\)',\r\n relevance: 0\r\n },\r\n {\r\n className: 'literal',\r\n begin: '\\\\[\\\\|',\r\n end: '\\\\|\\\\]',\r\n relevance: 0,\r\n contains: LIST_CONTENTS_MODES\r\n },\r\n {\r\n className: 'literal',\r\n begin: '\\\\[',\r\n end: '\\\\]',\r\n relevance: 0,\r\n contains: LIST_CONTENTS_MODES\r\n },\r\n CONSTRUCTOR_MODE,\r\n {\r\n className: 'operator',\r\n begin: RE_OPERATOR_SPACED,\r\n illegal: '\\\\-\\\\->',\r\n relevance: 0\r\n },\r\n NUMBER_MODE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n PATTERN_MATCH_BLOCK_MODE,\r\n FUNCTION_BLOCK_MODE,\r\n {\r\n className: 'module-def',\r\n begin: \"\\\\bmodule\\\\s+\" + RE_IDENT + \"\\\\s+\" + RE_MODULE_IDENT + \"\\\\s+=\\\\s+{\",\r\n end: \"}\",\r\n returnBegin: true,\r\n keywords: KEYWORDS,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'module',\r\n relevance: 0,\r\n begin: RE_MODULE_IDENT\r\n },\r\n {\r\n begin: '{',\r\n end: '}',\r\n skip: true\r\n }\r\n ].concat(MODULE_ACCESS_CONTENTS)\r\n },\r\n MODULE_ACCESS_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords:\r\n 'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis ' +\r\n 'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone ' +\r\n 'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail ' +\r\n 'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format ' +\r\n 'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry ' +\r\n 'Hider Hyperboloid Identity Illuminate Imager Interior LightSource ' +\r\n 'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte ' +\r\n 'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option ' +\r\n 'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples ' +\r\n 'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection ' +\r\n 'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ' +\r\n 'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere ' +\r\n 'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd ' +\r\n 'TransformPoints Translate TrimCurve WorldBegin WorldEnd',\r\n illegal: '> + - * /';\r\n // ToDo: var TYPES = 'num number bool boolean str string ip ip6-prefix id time array';\r\n // ToDo: The following tokens serve as delimiters in the grammar: () [] {} : ; $ /\r\n\r\n var VAR_PREFIX = 'global local set for foreach';\r\n\r\n var VAR = {\r\n className: 'variable',\r\n variants: [\r\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\r\n {begin: /\\$\\{(.*?)}/}\r\n ]\r\n };\r\n\r\n var QUOTE_STRING = {\r\n className: 'string',\r\n begin: /\"/, end: /\"/,\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n VAR,\r\n {\r\n className: 'variable',\r\n begin: /\\$\\(/, end: /\\)/,\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n }\r\n ]\r\n };\r\n\r\n var APOS_STRING = {\r\n className: 'string',\r\n begin: /'/, end: /'/\r\n };\r\n\r\n var IPADDR = '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b';\r\n var IPADDR_wBITMASK = IPADDR+'/(3[0-2]|[1-2][0-9]|\\\\d)';\r\n //////////////////////////////////////////////////////////////////////\r\n return {\r\n aliases: ['routeros', 'mikrotik'],\r\n case_insensitive: true,\r\n lexemes: /:?[\\w-]+/,\r\n keywords: {\r\n literal: LITERALS,\r\n keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :'),\r\n },\r\n contains: [\r\n { // недопустимые конструкции\r\n variants: [\r\n { begin: /^@/, end: /$/, }, // dns\r\n { begin: /\\/\\*/, end: /\\*\\//, }, // -- comment\r\n { begin: /%%/, end: /$/, }, // -- comment\r\n { begin: /^'/, end: /$/, }, // Monkey one line comment\r\n { begin: /^\\s*\\/[\\w-]+=/, end: /$/, }, // jboss-cli\r\n { begin: /\\/\\//, end: /$/, }, // Stan comment\r\n { begin: /^\\[\\\\]$/, }, // F# class declaration?\r\n { begin: /<\\//, end: />/, }, // HTML tags\r\n { begin: /^facet /, end: /\\}/, }, // roboconf - лютый костыль )))\r\n { begin: '^1\\\\.\\\\.(\\\\d+)$', end: /$/, }, // tap\r\n ],\r\n illegal: /./,\r\n },\r\n hljs.COMMENT('^#', '$'),\r\n QUOTE_STRING,\r\n APOS_STRING,\r\n VAR,\r\n { // attribute=value\r\n begin: /[\\w-]+\\=([^\\s\\{\\}\\[\\]\\(\\)]+)/,\r\n relevance: 0,\r\n returnBegin: true,\r\n contains: [\r\n {\r\n className: 'attribute',\r\n begin: /[^=]+/\r\n },\r\n {\r\n begin: /=/,\r\n endsWithParent: true,\r\n relevance: 0,\r\n contains: [\r\n QUOTE_STRING,\r\n APOS_STRING,\r\n VAR,\r\n {\r\n className: 'literal',\r\n begin: '\\\\b(' + LITERALS.split(' ').join('|') + ')\\\\b',\r\n },\r\n /*{\r\n // IPv4 addresses and subnets\r\n className: 'number',\r\n variants: [\r\n {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24\r\n {begin: IPADDR+'-'+IPADDR}, // 192.168.0.1-192.168.0.3\r\n {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1\r\n ]\r\n }, // */\r\n /*{\r\n // MAC addresses and DHCP Client IDs\r\n className: 'number',\r\n begin: /\\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\\b/,\r\n }, //*/\r\n {\r\n // Не форматировать не классифицированные значения. Необходимо для исключения подсветки значений как built_in.\r\n // className: 'number',\r\n begin: /(\"[^\"]*\"|[^\\s\\{\\}\\[\\]]+)/,\r\n }, //*/\r\n ]\r\n } //*/\r\n ]\r\n },//*/\r\n {\r\n // HEX values\r\n className: 'number',\r\n begin: /\\*[0-9a-fA-F]+/,\r\n }, //*/\r\n\r\n {\r\n begin: '\\\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\\\s\\[\\(]|\\])',\r\n returnBegin: true,\r\n contains: [\r\n {\r\n className: 'builtin-name', //'function',\r\n begin: /\\w+/,\r\n },\r\n ],\r\n },\r\n\r\n {\r\n className: 'built_in',\r\n variants: [\r\n {begin: '(\\\\.\\\\./|/|\\\\s)((' + OBJECTS.split(' ').join('|') + ');?\\\\s)+',relevance: 10,},\r\n {begin: /\\.\\./,},\r\n ],\r\n },//*/\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords: {\r\n keyword:\r\n 'float color point normal vector matrix while for if do return else break extern continue',\r\n built_in:\r\n 'abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise ' +\r\n 'clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp ' +\r\n 'faceforward filterstep floor format fresnel incident length lightsource log match ' +\r\n 'max min mod noise normalize ntransform opposite option phong pnoise pow printf ' +\r\n 'ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp ' +\r\n 'setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan ' +\r\n 'texture textureinfo trace transform vtransform xcomp ycomp zcomp'\r\n },\r\n illegal: '>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\r\n var RUBY_KEYWORDS = {\r\n keyword:\r\n 'and then defined module in return redo if BEGIN retry end for self when ' +\r\n 'next until do begin unless END rescue else break undef not super class case ' +\r\n 'require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor',\r\n literal:\r\n 'true false nil'\r\n };\r\n var YARDOCTAG = {\r\n className: 'doctag',\r\n begin: '@[A-Za-z]+'\r\n };\r\n var IRB_OBJECT = {\r\n begin: '#<', end: '>'\r\n };\r\n var COMMENT_MODES = [\r\n hljs.COMMENT(\r\n '#',\r\n '$',\r\n {\r\n contains: [YARDOCTAG]\r\n }\r\n ),\r\n hljs.COMMENT(\r\n '^\\\\=begin',\r\n '^\\\\=end',\r\n {\r\n contains: [YARDOCTAG],\r\n relevance: 10\r\n }\r\n ),\r\n hljs.COMMENT('^__END__', '\\\\n$')\r\n ];\r\n var SUBST = {\r\n className: 'subst',\r\n begin: '#\\\\{', end: '}',\r\n keywords: RUBY_KEYWORDS\r\n };\r\n var STRING = {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\r\n variants: [\r\n {begin: /'/, end: /'/},\r\n {begin: /\"/, end: /\"/},\r\n {begin: /`/, end: /`/},\r\n {begin: '%[qQwWx]?\\\\(', end: '\\\\)'},\r\n {begin: '%[qQwWx]?\\\\[', end: '\\\\]'},\r\n {begin: '%[qQwWx]?{', end: '}'},\r\n {begin: '%[qQwWx]?<', end: '>'},\r\n {begin: '%[qQwWx]?/', end: '/'},\r\n {begin: '%[qQwWx]?%', end: '%'},\r\n {begin: '%[qQwWx]?-', end: '-'},\r\n {begin: '%[qQwWx]?\\\\|', end: '\\\\|'},\r\n {\r\n // \\B in the beginning suppresses recognition of ?-sequences where ?\r\n // is the last character of a preceding identifier, as in: `func?4`\r\n begin: /\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b/\r\n },\r\n { // heredocs\r\n begin: /<<[-~]?'?(\\w+)(?:.|\\n)*?\\n\\s*\\1\\b/,\r\n returnBegin: true,\r\n contains: [\r\n { begin: /<<[-~]?'?/ },\r\n { begin: /\\w+/,\r\n endSameAsBegin: true,\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n var PARAMS = {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)', endsParent: true,\r\n keywords: RUBY_KEYWORDS\r\n };\r\n\r\n var RUBY_DEFAULT_CONTAINS = [\r\n STRING,\r\n IRB_OBJECT,\r\n {\r\n className: 'class',\r\n beginKeywords: 'class module', end: '$|;',\r\n illegal: /=/,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\r\n {\r\n begin: '<\\\\s*',\r\n contains: [{\r\n begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE\r\n }]\r\n }\r\n ].concat(COMMENT_MODES)\r\n },\r\n {\r\n className: 'function',\r\n beginKeywords: 'def', end: '$|;',\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: RUBY_METHOD_RE}),\r\n PARAMS\r\n ].concat(COMMENT_MODES)\r\n },\r\n {\r\n // swallow namespace qualifiers before symbols\r\n begin: hljs.IDENT_RE + '::'\r\n },\r\n {\r\n className: 'symbol',\r\n begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\r\n relevance: 0\r\n },\r\n {\r\n className: 'symbol',\r\n begin: ':(?!\\\\s)',\r\n contains: [STRING, {begin: RUBY_METHOD_RE}],\r\n relevance: 0\r\n },\r\n {\r\n className: 'number',\r\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\r\n relevance: 0\r\n },\r\n {\r\n begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))' // variables\r\n },\r\n {\r\n className: 'params',\r\n begin: /\\|/, end: /\\|/,\r\n keywords: RUBY_KEYWORDS\r\n },\r\n { // regexp container\r\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\r\n keywords: 'unless',\r\n contains: [\r\n IRB_OBJECT,\r\n {\r\n className: 'regexp',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\r\n illegal: /\\n/,\r\n variants: [\r\n {begin: '/', end: '/[a-z]*'},\r\n {begin: '%r{', end: '}[a-z]*'},\r\n {begin: '%r\\\\(', end: '\\\\)[a-z]*'},\r\n {begin: '%r!', end: '![a-z]*'},\r\n {begin: '%r\\\\[', end: '\\\\][a-z]*'}\r\n ]\r\n }\r\n ].concat(COMMENT_MODES),\r\n relevance: 0\r\n }\r\n ].concat(COMMENT_MODES);\r\n\r\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\r\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\r\n\r\n var SIMPLE_PROMPT = \"[>?]>\";\r\n var DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>\";\r\n var RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>\";\r\n\r\n var IRB_DEFAULT = [\r\n {\r\n begin: /^\\s*=>/,\r\n starts: {\r\n end: '$', contains: RUBY_DEFAULT_CONTAINS\r\n }\r\n },\r\n {\r\n className: 'meta',\r\n begin: '^('+SIMPLE_PROMPT+\"|\"+DEFAULT_PROMPT+'|'+RVM_PROMPT+')',\r\n starts: {\r\n end: '$', contains: RUBY_DEFAULT_CONTAINS\r\n }\r\n }\r\n ];\r\n\r\n return {\r\n aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],\r\n keywords: RUBY_KEYWORDS,\r\n illegal: /\\/\\*/,\r\n contains: COMMENT_MODES.concat(IRB_DEFAULT).concat(RUBY_DEFAULT_CONTAINS)\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords: {\r\n keyword: 'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' +\r\n 'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' +\r\n 'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' +\r\n 'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' +\r\n 'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' +\r\n 'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' +\r\n 'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' +\r\n 'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' +\r\n 'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' +\r\n 'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' +\r\n 'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' +\r\n 'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' +\r\n 'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' +\r\n 'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' +\r\n 'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' +\r\n 'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' +\r\n 'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' +\r\n 'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' +\r\n 'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' +\r\n 'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' +\r\n 'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' +\r\n 'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' +\r\n 'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' +\r\n 'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' +\r\n 'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' +\r\n 'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' +\r\n 'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' +\r\n 'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' +\r\n 'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' +\r\n 'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' +\r\n 'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' +\r\n 'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' +\r\n 'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' +\r\n 'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' +\r\n 'NUMDAYS READ_DATE STAGING',\r\n built_in: 'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' +\r\n 'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' +\r\n 'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' +\r\n 'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' +\r\n 'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME'\r\n },\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE,\r\n {\r\n className: 'literal',\r\n variants: [\r\n {begin: '#\\\\s+[a-zA-Z\\\\ \\\\.]*', relevance: 0}, // looks like #-comment\r\n {begin: '#[a-zA-Z\\\\ \\\\.]+'}\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var NUM_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\r\n var KEYWORDS =\r\n 'abstract as async await become box break const continue crate do dyn ' +\r\n 'else enum extern false final fn for if impl in let loop macro match mod ' +\r\n 'move mut override priv pub ref return self Self static struct super ' +\r\n 'trait true try type typeof unsafe unsized use virtual where while yield';\r\n var BUILTINS =\r\n // functions\r\n 'drop ' +\r\n // types\r\n 'i8 i16 i32 i64 i128 isize ' +\r\n 'u8 u16 u32 u64 u128 usize ' +\r\n 'f32 f64 ' +\r\n 'str char bool ' +\r\n 'Box Option Result String Vec ' +\r\n // traits\r\n 'Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug ' +\r\n 'PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator ' +\r\n 'Extend IntoIterator DoubleEndedIterator ExactSizeIterator ' +\r\n 'SliceConcatExt ToString ' +\r\n // macros\r\n 'assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! ' +\r\n 'debug_assert! debug_assert_eq! env! panic! file! format! format_args! ' +\r\n 'include_bin! include_str! line! local_data_key! module_path! ' +\r\n 'option_env! print! println! select! stringify! try! unimplemented! ' +\r\n 'unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!';\r\n return {\r\n aliases: ['rs'],\r\n keywords: {\r\n keyword:\r\n KEYWORDS,\r\n literal:\r\n 'true false Some None Ok Err',\r\n built_in:\r\n BUILTINS\r\n },\r\n lexemes: hljs.IDENT_RE + '!?',\r\n illegal: ''\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n\r\n // Data step and PROC SQL statements\r\n var SAS_KEYWORDS = ''+\r\n 'do if then else end until while '+\r\n ''+\r\n 'abort array attrib by call cards cards4 catname continue '+\r\n 'datalines datalines4 delete delim delimiter display dm drop '+\r\n 'endsas error file filename footnote format goto in infile '+\r\n 'informat input keep label leave length libname link list '+\r\n 'lostcard merge missing modify options output out page put '+\r\n 'redirect remove rename replace retain return select set skip '+\r\n 'startsas stop title update waitsas where window x systask '+\r\n ''+\r\n 'add and alter as cascade check create delete describe '+\r\n 'distinct drop foreign from group having index insert into in '+\r\n 'key like message modify msgtype not null on or order primary '+\r\n 'references reset restrict select set table unique update '+\r\n 'validate view where';\r\n\r\n // Built-in SAS functions\r\n var SAS_FUN = ''+\r\n 'abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|'+\r\n 'betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|'+\r\n 'cexist|cinv|close|cnonct|collate|compbl|compound|'+\r\n 'compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|'+\r\n 'daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|'+\r\n 'datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|'+\r\n 'depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|'+\r\n 'digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|'+\r\n 'dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|'+\r\n 'fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|'+\r\n 'filename|fileref|finfo|finv|fipname|fipnamel|'+\r\n 'fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|'+\r\n 'fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|'+\r\n 'fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|'+\r\n 'hms|hosthelp|hour|ibessel|index|indexc|indexw|input|'+\r\n 'inputc|inputn|int|intck|intnx|intrr|irr|jbessel|'+\r\n 'juldate|kurtosis|lag|lbound|left|length|lgamma|'+\r\n 'libname|libref|log|log10|log2|logpdf|logpmf|logsdf|'+\r\n 'lowcase|max|mdy|mean|min|minute|mod|month|mopen|'+\r\n 'mort|n|netpv|nmiss|normal|note|npv|open|ordinal|'+\r\n 'pathname|pdf|peek|peekc|pmf|point|poisson|poke|'+\r\n 'probbeta|probbnml|probchi|probf|probgam|probhypr|'+\r\n 'probit|probnegb|probnorm|probt|put|putc|putn|qtr|'+\r\n 'quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|'+\r\n 'ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|'+\r\n 'rewind|right|round|saving|scan|sdf|second|sign|'+\r\n 'sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|'+\r\n 'stfips|stname|stnamel|substr|sum|symget|sysget|'+\r\n 'sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|'+\r\n 'tinv|tnonct|today|translate|tranwrd|trigamma|'+\r\n 'trim|trimn|trunc|uniform|upcase|uss|var|varfmt|'+\r\n 'varinfmt|varlabel|varlen|varname|varnum|varray|'+\r\n 'varrayx|vartype|verify|vformat|vformatd|vformatdx|'+\r\n 'vformatn|vformatnx|vformatw|vformatwx|vformatx|'+\r\n 'vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|'+\r\n 'vinformatn|vinformatnx|vinformatw|vinformatwx|'+\r\n 'vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|'+\r\n 'vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|'+\r\n 'zipnamel|zipstate';\r\n\r\n // Built-in macro functions\r\n var SAS_MACRO_FUN = 'bquote|nrbquote|cmpres|qcmpres|compstor|'+\r\n 'datatyp|display|do|else|end|eval|global|goto|'+\r\n 'if|index|input|keydef|label|left|length|let|'+\r\n 'local|lowcase|macro|mend|nrbquote|nrquote|'+\r\n 'nrstr|put|qcmpres|qleft|qlowcase|qscan|'+\r\n 'qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|'+\r\n 'substr|superq|syscall|sysevalf|sysexec|sysfunc|'+\r\n 'sysget|syslput|sysprod|sysrc|sysrput|then|to|'+\r\n 'trim|unquote|until|upcase|verify|while|window';\r\n\r\n return {\r\n aliases: ['sas', 'SAS'],\r\n case_insensitive: true, // SAS is case-insensitive\r\n keywords: {\r\n literal:\r\n 'null missing _all_ _automatic_ _character_ _infile_ '+\r\n '_n_ _name_ _null_ _numeric_ _user_ _webout_',\r\n meta:\r\n SAS_KEYWORDS\r\n },\r\n contains: [\r\n {\r\n // Distinct highlight for proc , data, run, quit\r\n className: 'keyword',\r\n begin: /^\\s*(proc [\\w\\d_]+|data|run|quit)[\\s\\;]/\r\n },\r\n {\r\n // Macro variables\r\n className: 'variable',\r\n begin: /\\&[a-zA-Z_\\&][a-zA-Z0-9_]*\\.?/\r\n },\r\n {\r\n // Special emphasis for datalines|cards\r\n className: 'emphasis',\r\n begin: /^\\s*datalines|cards.*;/,\r\n end: /^\\s*;\\s*$/\r\n },\r\n { // Built-in macro variables take precedence\r\n className: 'built_in',\r\n begin: '%(' + SAS_MACRO_FUN + ')'\r\n },\r\n {\r\n // User-defined macro functions highlighted after\r\n className: 'name',\r\n begin: /%[a-zA-Z_][a-zA-Z_0-9]*/\r\n },\r\n {\r\n className: 'meta',\r\n begin: '[^%](' + SAS_FUN + ')[\\(]'\r\n },\r\n {\r\n className: 'string',\r\n variants: [\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE\r\n ]\r\n },\r\n hljs.COMMENT('\\\\*', ';'),\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n\r\n var ANNOTATION = { className: 'meta', begin: '@[A-Za-z]+' };\r\n\r\n // used in strings for escaping/interpolation/substitution\r\n var SUBST = {\r\n className: 'subst',\r\n variants: [\r\n {begin: '\\\\$[A-Za-z0-9_]+'},\r\n {begin: '\\\\${', end: '}'}\r\n ]\r\n };\r\n\r\n var STRING = {\r\n className: 'string',\r\n variants: [\r\n {\r\n begin: '\"', end: '\"',\r\n illegal: '\\\\n',\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n {\r\n begin: '\"\"\"', end: '\"\"\"',\r\n relevance: 10\r\n },\r\n {\r\n begin: '[a-z]+\"', end: '\"',\r\n illegal: '\\\\n',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\r\n },\r\n {\r\n className: 'string',\r\n begin: '[a-z]+\"\"\"', end: '\"\"\"',\r\n contains: [SUBST],\r\n relevance: 10\r\n }\r\n ]\r\n\r\n };\r\n\r\n var SYMBOL = {\r\n className: 'symbol',\r\n begin: '\\'\\\\w[\\\\w\\\\d_]*(?!\\')'\r\n };\r\n\r\n var TYPE = {\r\n className: 'type',\r\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\r\n relevance: 0\r\n };\r\n\r\n var NAME = {\r\n className: 'title',\r\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/,\r\n relevance: 0\r\n };\r\n\r\n var CLASS = {\r\n className: 'class',\r\n beginKeywords: 'class object trait type',\r\n end: /[:={\\[\\n;]/,\r\n excludeEnd: true,\r\n contains: [\r\n {\r\n beginKeywords: 'extends with',\r\n relevance: 10\r\n },\r\n {\r\n begin: /\\[/,\r\n end: /\\]/,\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n relevance: 0,\r\n contains: [TYPE]\r\n },\r\n {\r\n className: 'params',\r\n begin: /\\(/,\r\n end: /\\)/,\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n relevance: 0,\r\n contains: [TYPE]\r\n },\r\n NAME\r\n ]\r\n };\r\n\r\n var METHOD = {\r\n className: 'function',\r\n beginKeywords: 'def',\r\n end: /[:={\\[(\\n;]/,\r\n excludeEnd: true,\r\n contains: [NAME]\r\n };\r\n\r\n return {\r\n keywords: {\r\n literal: 'true false null',\r\n keyword: 'type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit'\r\n },\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n STRING,\r\n SYMBOL,\r\n TYPE,\r\n METHOD,\r\n CLASS,\r\n hljs.C_NUMBER_MODE,\r\n ANNOTATION\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var SCHEME_IDENT_RE = '[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\",\\'`;#|\\\\\\\\\\\\s]+';\r\n var SCHEME_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+([./]\\\\d+)?';\r\n var SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';\r\n var BUILTINS = {\r\n 'builtin-name':\r\n 'case-lambda call/cc class define-class exit-handler field import ' +\r\n 'inherit init-field interface let*-values let-values let/ec mixin ' +\r\n 'opt-lambda override protect provide public rename require ' +\r\n 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +\r\n 'when with-syntax and begin call-with-current-continuation ' +\r\n 'call-with-input-file call-with-output-file case cond define ' +\r\n 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +\r\n 'let-syntax letrec letrec-syntax map or syntax-rules \\' * + , ,@ - ... / ' +\r\n '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +\r\n 'boolean? caar cadr call-with-input-file call-with-output-file ' +\r\n 'call-with-values car cdddar cddddr cdr ceiling char->integer ' +\r\n 'char-alphabetic? char-ci<=? char-ci=? char-ci>? ' +\r\n 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +\r\n 'char-upper-case? char-whitespace? char<=? char=? char>? ' +\r\n 'char? close-input-port close-output-port complex? cons cos ' +\r\n 'current-input-port current-output-port denominator display eof-object? ' +\r\n 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +\r\n 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +\r\n 'integer? interaction-environment lcm length list list->string ' +\r\n 'list->vector list-ref list-tail list? load log magnitude make-polar ' +\r\n 'make-rectangular make-string make-vector max member memq memv min ' +\r\n 'modulo negative? newline not null-environment null? number->string ' +\r\n 'number? numerator odd? open-input-file open-output-file output-port? ' +\r\n 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +\r\n 'rational? rationalize read read-char real-part real? remainder reverse ' +\r\n 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +\r\n 'string->list string->number string->symbol string-append string-ci<=? ' +\r\n 'string-ci=? string-ci>? string-copy ' +\r\n 'string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? ' +\r\n 'tan transcript-off transcript-on truncate values vector ' +\r\n 'vector->list vector-fill! vector-length vector-ref vector-set! ' +\r\n 'with-input-from-file with-output-to-file write write-char zero?'\r\n };\r\n\r\n var SHEBANG = {\r\n className: 'meta',\r\n begin: '^#!',\r\n end: '$'\r\n };\r\n\r\n var LITERAL = {\r\n className: 'literal',\r\n begin: '(#t|#f|#\\\\\\\\' + SCHEME_IDENT_RE + '|#\\\\\\\\.)'\r\n };\r\n\r\n var NUMBER = {\r\n className: 'number',\r\n variants: [\r\n { begin: SCHEME_SIMPLE_NUMBER_RE, relevance: 0 },\r\n { begin: SCHEME_COMPLEX_NUMBER_RE, relevance: 0 },\r\n { begin: '#b[0-1]+(/[0-1]+)?' },\r\n { begin: '#o[0-7]+(/[0-7]+)?' },\r\n { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' }\r\n ]\r\n };\r\n\r\n var STRING = hljs.QUOTE_STRING_MODE;\r\n\r\n var REGULAR_EXPRESSION = {\r\n className: 'regexp',\r\n begin: '#[pr]x\"',\r\n end: '[^\\\\\\\\]\"'\r\n };\r\n\r\n var COMMENT_MODES = [\r\n hljs.COMMENT(\r\n ';',\r\n '$',\r\n {\r\n relevance: 0\r\n }\r\n ),\r\n hljs.COMMENT('#\\\\|', '\\\\|#')\r\n ];\r\n\r\n var IDENT = {\r\n begin: SCHEME_IDENT_RE,\r\n relevance: 0\r\n };\r\n\r\n var QUOTED_IDENT = {\r\n className: 'symbol',\r\n begin: '\\'' + SCHEME_IDENT_RE\r\n };\r\n\r\n var BODY = {\r\n endsWithParent: true,\r\n relevance: 0\r\n };\r\n\r\n var QUOTED_LIST = {\r\n variants: [\r\n { begin: /'/ },\r\n { begin: '`' }\r\n ],\r\n contains: [\r\n {\r\n begin: '\\\\(', end: '\\\\)',\r\n contains: ['self', LITERAL, STRING, NUMBER, IDENT, QUOTED_IDENT]\r\n }\r\n ]\r\n };\r\n\r\n var NAME = {\r\n className: 'name',\r\n begin: SCHEME_IDENT_RE,\r\n lexemes: SCHEME_IDENT_RE,\r\n keywords: BUILTINS\r\n };\r\n\r\n var LAMBDA = {\r\n begin: /lambda/, endsWithParent: true, returnBegin: true,\r\n contains: [\r\n NAME,\r\n {\r\n begin: /\\(/, end: /\\)/, endsParent: true,\r\n contains: [IDENT],\r\n }\r\n ]\r\n };\r\n\r\n var LIST = {\r\n variants: [\r\n { begin: '\\\\(', end: '\\\\)' },\r\n { begin: '\\\\[', end: '\\\\]' }\r\n ],\r\n contains: [LAMBDA, NAME, BODY]\r\n };\r\n\r\n BODY.contains = [LITERAL, NUMBER, STRING, IDENT, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES);\r\n\r\n return {\r\n illegal: /\\S/,\r\n contains: [SHEBANG, NUMBER, STRING, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES)\r\n };\r\n};","module.exports = function(hljs) {\r\n\r\n var COMMON_CONTAINS = [\r\n hljs.C_NUMBER_MODE,\r\n {\r\n className: 'string',\r\n begin: '\\'|\\\"', end: '\\'|\\\"',\r\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\r\n }\r\n ];\r\n\r\n return {\r\n aliases: ['sci'],\r\n lexemes: /%?\\w+/,\r\n keywords: {\r\n keyword: 'abort break case clear catch continue do elseif else endfunction end for function '+\r\n 'global if pause return resume select try then while',\r\n literal:\r\n '%f %F %t %T %pi %eps %inf %nan %e %i %z %s',\r\n built_in: // Scilab has more than 2000 functions. Just list the most commons\r\n 'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error '+\r\n 'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty '+\r\n 'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log '+\r\n 'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real '+\r\n 'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan '+\r\n 'type typename warning zeros matrix'\r\n },\r\n illegal: '(\"|#|/\\\\*|\\\\s+/\\\\w+)',\r\n contains: [\r\n {\r\n className: 'function',\r\n beginKeywords: 'function', end: '$',\r\n contains: [\r\n hljs.UNDERSCORE_TITLE_MODE,\r\n {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)'\r\n }\r\n ]\r\n },\r\n {\r\n begin: '[a-zA-Z_][a-zA-Z_0-9]*(\\'+[\\\\.\\']*|[\\\\.\\']+)', end: '',\r\n relevance: 0\r\n },\r\n {\r\n begin: '\\\\[', end: '\\\\]\\'*[\\\\.\\']*',\r\n relevance: 0,\r\n contains: COMMON_CONTAINS\r\n },\r\n hljs.COMMENT('//', '$')\r\n ].concat(COMMON_CONTAINS)\r\n };\r\n};","module.exports = function(hljs) {\r\n var AT_IDENTIFIER = '@[a-z-]+' // @font-face\r\n var AT_MODIFIERS = \"and or not only\"\r\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\r\n var VARIABLE = {\r\n className: 'variable',\r\n begin: '(\\\\$' + IDENT_RE + ')\\\\b'\r\n };\r\n var HEXCOLOR = {\r\n className: 'number', begin: '#[0-9A-Fa-f]+'\r\n };\r\n var DEF_INTERNALS = {\r\n className: 'attribute',\r\n begin: '[A-Z\\\\_\\\\.\\\\-]+', end: ':',\r\n excludeEnd: true,\r\n illegal: '[^\\\\s]',\r\n starts: {\r\n endsWithParent: true, excludeEnd: true,\r\n contains: [\r\n HEXCOLOR,\r\n hljs.CSS_NUMBER_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {\r\n className: 'meta', begin: '!important'\r\n }\r\n ]\r\n }\r\n };\r\n return {\r\n case_insensitive: true,\r\n illegal: '[=/|\\']',\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {\r\n className: 'selector-id', begin: '\\\\#[A-Za-z0-9_-]+',\r\n relevance: 0\r\n },\r\n {\r\n className: 'selector-class', begin: '\\\\.[A-Za-z0-9_-]+',\r\n relevance: 0\r\n },\r\n {\r\n className: 'selector-attr', begin: '\\\\[', end: '\\\\]',\r\n illegal: '$'\r\n },\r\n {\r\n className: 'selector-tag', // begin: IDENT_RE, end: '[,|\\\\s]'\r\n begin: '\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b',\r\n relevance: 0\r\n },\r\n {\r\n className: 'selector-pseudo',\r\n begin: ':(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)'\r\n },\r\n {\r\n className: 'selector-pseudo',\r\n begin: '::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)'\r\n },\r\n VARIABLE,\r\n {\r\n className: 'attribute',\r\n begin: '\\\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b',\r\n illegal: '[^\\\\s]'\r\n },\r\n {\r\n begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b'\r\n },\r\n {\r\n begin: ':', end: ';',\r\n contains: [\r\n VARIABLE,\r\n HEXCOLOR,\r\n hljs.CSS_NUMBER_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n {\r\n className: 'meta', begin: '!important'\r\n }\r\n ]\r\n },\r\n // matching these here allows us to treat them more like regular CSS\r\n // rules so everything between the {} gets regular rule highlighting,\r\n // which is what we want for page and font-face\r\n {\r\n begin: '@(page|font-face)',\r\n lexemes: AT_IDENTIFIER,\r\n keywords: '@page @font-face'\r\n },\r\n {\r\n begin: '@', end: '[{;]',\r\n returnBegin: true,\r\n keywords: AT_MODIFIERS,\r\n contains: [\r\n {\r\n begin: AT_IDENTIFIER,\r\n className: \"keyword\"\r\n },\r\n VARIABLE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n HEXCOLOR,\r\n hljs.CSS_NUMBER_MODE,\r\n // {\r\n // begin: '\\\\s[A-Za-z0-9_.-]+',\r\n // relevance: 0\r\n // }\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['console'],\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: '^\\\\s{0,3}[/\\\\w\\\\d\\\\[\\\\]()@-]*[>%$#]',\r\n starts: {\r\n end: '$', subLanguage: 'bash'\r\n }\r\n }\r\n ]\r\n }\r\n};","module.exports = function(hljs) {\r\n var smali_instr_low_prio = ['add', 'and', 'cmp', 'cmpg', 'cmpl', 'const', 'div', 'double', 'float', 'goto', 'if', 'int', 'long', 'move', 'mul', 'neg', 'new', 'nop', 'not', 'or', 'rem', 'return', 'shl', 'shr', 'sput', 'sub', 'throw', 'ushr', 'xor'];\r\n var smali_instr_high_prio = ['aget', 'aput', 'array', 'check', 'execute', 'fill', 'filled', 'goto/16', 'goto/32', 'iget', 'instance', 'invoke', 'iput', 'monitor', 'packed', 'sget', 'sparse'];\r\n var smali_keywords = ['transient', 'constructor', 'abstract', 'final', 'synthetic', 'public', 'private', 'protected', 'static', 'bridge', 'system'];\r\n return {\r\n aliases: ['smali'],\r\n contains: [\r\n {\r\n className: 'string',\r\n begin: '\"', end: '\"',\r\n relevance: 0\r\n },\r\n hljs.COMMENT(\r\n '#',\r\n '$',\r\n {\r\n relevance: 0\r\n }\r\n ),\r\n {\r\n className: 'keyword',\r\n variants: [\r\n {begin: '\\\\s*\\\\.end\\\\s[a-zA-Z0-9]*'},\r\n {begin: '^[ ]*\\\\.[a-zA-Z]*', relevance: 0},\r\n {begin: '\\\\s:[a-zA-Z_0-9]*', relevance: 0},\r\n {begin: '\\\\s(' + smali_keywords.join('|') + ')'}\r\n ]\r\n },\r\n {\r\n className: 'built_in',\r\n variants : [\r\n {\r\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')\\\\s'\r\n },\r\n {\r\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)+\\\\s',\r\n relevance: 10\r\n },\r\n {\r\n begin: '\\\\s('+smali_instr_high_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)*\\\\s',\r\n relevance: 10\r\n },\r\n ]\r\n },\r\n {\r\n className: 'class',\r\n begin: 'L[^\\(;:\\n]*;',\r\n relevance: 0\r\n },\r\n {\r\n begin: '[vp][0-9]+',\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';\r\n var CHAR = {\r\n className: 'string',\r\n begin: '\\\\$.{1}'\r\n };\r\n var SYMBOL = {\r\n className: 'symbol',\r\n begin: '#' + hljs.UNDERSCORE_IDENT_RE\r\n };\r\n return {\r\n aliases: ['st'],\r\n keywords: 'self super nil true false thisContext', // only 6\r\n contains: [\r\n hljs.COMMENT('\"', '\"'),\r\n hljs.APOS_STRING_MODE,\r\n {\r\n className: 'type',\r\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\r\n relevance: 0\r\n },\r\n {\r\n begin: VAR_IDENT_RE + ':',\r\n relevance: 0\r\n },\r\n hljs.C_NUMBER_MODE,\r\n SYMBOL,\r\n CHAR,\r\n {\r\n // This looks more complicated than needed to avoid combinatorial\r\n // explosion under V8. It effectively means `| var1 var2 ... |` with\r\n // whitespace adjacent to `|` being optional.\r\n begin: '\\\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\\\|',\r\n returnBegin: true, end: /\\|/,\r\n illegal: /\\S/,\r\n contains: [{begin: '(\\\\|[ ]*)?' + VAR_IDENT_RE}]\r\n },\r\n {\r\n begin: '\\\\#\\\\(', end: '\\\\)',\r\n contains: [\r\n hljs.APOS_STRING_MODE,\r\n CHAR,\r\n hljs.C_NUMBER_MODE,\r\n SYMBOL\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['ml'],\r\n keywords: {\r\n keyword:\r\n /* according to Definition of Standard ML 97 */\r\n 'abstype and andalso as case datatype do else end eqtype ' +\r\n 'exception fn fun functor handle if in include infix infixr ' +\r\n 'let local nonfix of op open orelse raise rec sharing sig ' +\r\n 'signature struct structure then type val with withtype where while',\r\n built_in:\r\n /* built-in types according to basis library */\r\n 'array bool char exn int list option order real ref string substring vector unit word',\r\n literal:\r\n 'true false NONE SOME LESS EQUAL GREATER nil'\r\n },\r\n illegal: /\\/\\/|>>/,\r\n lexemes: '[a-z_]\\\\w*!?',\r\n contains: [\r\n {\r\n className: 'literal',\r\n begin: /\\[(\\|\\|)?\\]|\\(\\)/,\r\n relevance: 0\r\n },\r\n hljs.COMMENT(\r\n '\\\\(\\\\*',\r\n '\\\\*\\\\)',\r\n {\r\n contains: ['self']\r\n }\r\n ),\r\n { /* type variable */\r\n className: 'symbol',\r\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\r\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\r\n },\r\n { /* polymorphic variant */\r\n className: 'type',\r\n begin: '`[A-Z][\\\\w\\']*'\r\n },\r\n { /* module or constructor */\r\n className: 'type',\r\n begin: '\\\\b[A-Z][\\\\w\\']*',\r\n relevance: 0\r\n },\r\n { /* don't color identifiers, but safely catch all identifiers with '*/\r\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*'\r\n },\r\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\r\n {\r\n className: 'number',\r\n begin:\r\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\r\n '0[oO][0-7_]+[Lln]?|' +\r\n '0[bB][01_]+[Lln]?|' +\r\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\r\n relevance: 0\r\n },\r\n {\r\n begin: /[-=]>/ // relevance booster\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n // In SQF, a variable start with _\r\n var VARIABLE = {\r\n className: 'variable',\r\n begin: /\\b_+[a-zA-Z_]\\w*/\r\n };\r\n\r\n // In SQF, a function should fit myTag_fnc_myFunction pattern\r\n // https://community.bistudio.com/wiki/Functions_Library_(Arma_3)#Adding_a_Function\r\n var FUNCTION = {\r\n className: 'title',\r\n begin: /[a-zA-Z][a-zA-Z0-9]+_fnc_\\w*/\r\n };\r\n\r\n // In SQF strings, quotes matching the start are escaped by adding a consecutive.\r\n // Example of single escaped quotes: \" \"\" \" and ' '' '.\r\n var STRINGS = {\r\n className: 'string',\r\n variants: [\r\n {\r\n begin: '\"',\r\n end: '\"',\r\n contains: [{begin: '\"\"', relevance: 0}]\r\n },\r\n {\r\n begin: '\\'',\r\n end: '\\'',\r\n contains: [{begin: '\\'\\'', relevance: 0}]\r\n }\r\n ]\r\n };\r\n\r\n // list of keywords from:\r\n // https://community.bistudio.com/wiki/PreProcessor_Commands\r\n var PREPROCESSOR = {\r\n className: 'meta',\r\n begin: /#\\s*[a-z]+\\b/, end: /$/,\r\n keywords: {\r\n 'meta-keyword':\r\n 'define undef ifdef ifndef else endif include'\r\n },\r\n contains: [\r\n {\r\n begin: /\\\\\\n/, relevance: 0\r\n },\r\n hljs.inherit(STRINGS, {className: 'meta-string'}),\r\n {\r\n className: 'meta-string',\r\n begin: /<[^\\n>]*>/, end: /$/,\r\n illegal: '\\\\n',\r\n },\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n };\r\n\r\n return {\r\n aliases: ['sqf'],\r\n case_insensitive: true,\r\n keywords: {\r\n keyword:\r\n 'case catch default do else exit exitWith for forEach from if ' +\r\n 'private switch then throw to try waitUntil while with',\r\n built_in:\r\n 'abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames ' +\r\n 'actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey ' +\r\n 'add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo ' +\r\n 'addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea ' +\r\n 'addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler ' +\r\n 'addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo ' +\r\n 'addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats ' +\r\n 'addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal ' +\r\n 'addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler ' +\r\n 'addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem ' +\r\n 'addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem ' +\r\n 'addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest ' +\r\n 'addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem ' +\r\n 'addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD ' +\r\n 'airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls ' +\r\n 'allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines ' +\r\n 'allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage ' +\r\n 'allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects ' +\r\n 'allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay ' +\r\n 'animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase ' +\r\n 'animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert ' +\r\n 'assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret ' +\r\n 'assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems ' +\r\n 'assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam ' +\r\n 'assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject ' +\r\n 'attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines ' +\r\n 'backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter ' +\r\n 'breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode ' +\r\n 'call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams ' +\r\n 'camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView ' +\r\n 'campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive ' +\r\n 'camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget ' +\r\n 'camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos ' +\r\n 'camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest ' +\r\n 'cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend ' +\r\n 'canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked ' +\r\n 'cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className ' +\r\n 'clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons ' +\r\n 'clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal ' +\r\n 'clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool ' +\r\n 'clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory ' +\r\n 'collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow ' +\r\n 'commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop ' +\r\n 'commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal ' +\r\n 'completedFSM composeText configClasses configFile configHierarchy configName configProperties ' +\r\n 'configSourceAddonList configSourceMod configSourceModList confirmSensorTarget ' +\r\n 'connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count ' +\r\n 'countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity ' +\r\n 'createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject ' +\r\n 'createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker ' +\r\n 'createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay ' +\r\n 'createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam ' +\r\n 'createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ' +\r\n 'ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ' +\r\n 'ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ' +\r\n 'ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ' +\r\n 'ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ' +\r\n 'ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ' +\r\n 'ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ' +\r\n 'ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ' +\r\n 'ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ' +\r\n 'ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ' +\r\n 'ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ' +\r\n 'ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ' +\r\n 'ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ' +\r\n 'ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ' +\r\n 'ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ' +\r\n 'ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ' +\r\n 'ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ' +\r\n 'ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ' +\r\n 'ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ' +\r\n 'ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera ' +\r\n 'curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea ' +\r\n 'curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected ' +\r\n 'curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine ' +\r\n 'currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle ' +\r\n 'currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint ' +\r\n 'currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget ' +\r\n 'customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime ' +\r\n 'deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter ' +\r\n 'deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity ' +\r\n 'deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus ' +\r\n 'deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines ' +\r\n 'diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts ' +\r\n 'diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance ' +\r\n 'diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad ' +\r\n 'diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits ' +\r\n 'diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner ' +\r\n 'difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI ' +\r\n 'disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators ' +\r\n 'disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment ' +\r\n 'disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent ' +\r\n 'displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam ' +\r\n 'distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow ' +\r\n 'doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse ' +\r\n 'drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle ' +\r\n 'drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef ' +\r\n 'dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject ' +\r\n 'editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature ' +\r\n 'enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD ' +\r\n 'enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot ' +\r\n 'enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem ' +\r\n 'enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights ' +\r\n 'enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload ' +\r\n 'enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation ' +\r\n 'enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability ' +\r\n 'enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly ' +\r\n 'endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities ' +\r\n 'environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack ' +\r\n 'everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages ' +\r\n 'eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission ' +\r\n 'fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition ' +\r\n 'findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget ' +\r\n 'firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight ' +\r\n 'flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture ' +\r\n 'forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange ' +\r\n 'forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation ' +\r\n 'formationDirection formationLeader formationMembers formationPosition formationTask formatText ' +\r\n 'formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData ' +\r\n 'get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity ' +\r\n 'get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible ' +\r\n 'get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers ' +\r\n 'getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision ' +\r\n 'getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA ' +\r\n 'getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining ' +\r\n 'getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState ' +\r\n 'getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad ' +\r\n 'getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual ' +\r\n 'getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode ' +\r\n 'getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture ' +\r\n 'getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom ' +\r\n 'getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos ' +\r\n 'getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs ' +\r\n 'getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber ' +\r\n 'getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy ' +\r\n 'getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs ' +\r\n 'getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget ' +\r\n 'getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual ' +\r\n 'getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir ' +\r\n 'getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents ' +\r\n 'getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue ' +\r\n 'getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout ' +\r\n 'getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo ' +\r\n 'getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio ' +\r\n 'goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId ' +\r\n 'groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems ' +\r\n 'handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups ' +\r\n 'hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup ' +\r\n 'hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC ' +\r\n 'hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups ' +\r\n 'importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel ' +\r\n 'infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom ' +\r\n 'initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN ' +\r\n 'is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest ' +\r\n 'isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated ' +\r\n 'isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray ' +\r\n 'isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader ' +\r\n 'isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn ' +\r\n 'isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection ' +\r\n 'isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad ' +\r\n 'isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons ' +\r\n 'isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText ' +\r\n 'isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext ' +\r\n 'isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking ' +\r\n 'isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent ' +\r\n 'joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact ' +\r\n 'kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language ' +\r\n 'laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture ' +\r\n 'lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture ' +\r\n 'lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight ' +\r\n 'lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected ' +\r\n 'lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip ' +\r\n 'lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit ' +\r\n 'leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore ' +\r\n 'leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits ' +\r\n 'libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed ' +\r\n 'linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith ' +\r\n 'linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn ' +\r\n 'lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow ' +\r\n 'lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData ' +\r\n 'lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs ' +\r\n 'loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform ' +\r\n 'loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked ' +\r\n 'lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork ' +\r\n 'logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo ' +\r\n 'magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack ' +\r\n 'magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd ' +\r\n 'mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam ' +\r\n 'markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText ' +\r\n 'markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete ' +\r\n 'menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData ' +\r\n 'menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL ' +\r\n 'menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName ' +\r\n 'missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual ' +\r\n 'modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move ' +\r\n 'move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret ' +\r\n 'moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound ' +\r\n 'nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing ' +\r\n 'nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads ' +\r\n 'nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex ' +\r\n 'nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId ' +\r\n 'objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch ' +\r\n 'onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter ' +\r\n 'onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected ' +\r\n 'onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch ' +\r\n 'openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast ' +\r\n 'overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace ' +\r\n 'particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW ' +\r\n 'playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide ' +\r\n 'playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission ' +\r\n 'playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ' +\r\n 'ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ' +\r\n 'ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound ' +\r\n 'preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon ' +\r\n 'primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName ' +\r\n 'profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition ' +\r\n 'publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool ' +\r\n 'queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate ' +\r\n 'radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random ' +\r\n 'rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl ' +\r\n 'remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler ' +\r\n 'remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems ' +\r\n 'removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas ' +\r\n 'removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems ' +\r\n 'removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers ' +\r\n 'removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons ' +\r\n 'removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea ' +\r\n 'removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks ' +\r\n 'removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem ' +\r\n 'removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest ' +\r\n 'removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret ' +\r\n 'removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler ' +\r\n 'removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem ' +\r\n 'removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon ' +\r\n 'removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret ' +\r\n 'reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources ' +\r\n 'respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt ' +\r\n 'roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ' +\r\n 'ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ' +\r\n 'ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW ' +\r\n 'safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity ' +\r\n 'saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D ' +\r\n 'scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState ' +\r\n 'secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces ' +\r\n 'selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition ' +\r\n 'selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted ' +\r\n 'selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult ' +\r\n 'sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime ' +\r\n 'set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer ' +\r\n 'set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes ' +\r\n 'set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD ' +\r\n 'setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef ' +\r\n 'setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour ' +\r\n 'setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams ' +\r\n 'setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation ' +\r\n 'setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType ' +\r\n 'setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef ' +\r\n 'setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination ' +\r\n 'setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval ' +\r\n 'setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope ' +\r\n 'setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType ' +\r\n 'setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation ' +\r\n 'setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo ' +\r\n 'setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId ' +\r\n 'setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage ' +\r\n 'setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader ' +\r\n 'setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight ' +\r\n 'setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare ' +\r\n 'setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush ' +\r\n 'setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal ' +\r\n 'setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize ' +\r\n 'setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass ' +\r\n 'setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound ' +\r\n 'setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture ' +\r\n 'setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining ' +\r\n 'setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom ' +\r\n 'setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect ' +\r\n 'setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW ' +\r\n 'setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain ' +\r\n 'setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance ' +\r\n 'setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData ' +\r\n 'setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType ' +\r\n 'setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech ' +\r\n 'setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits ' +\r\n 'setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText ' +\r\n 'setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap ' +\r\n 'setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText ' +\r\n 'setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos ' +\r\n 'setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat ' +\r\n 'setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp ' +\r\n 'setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId ' +\r\n 'setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets ' +\r\n 'setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName ' +\r\n 'setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance ' +\r\n 'setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode ' +\r\n 'setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation ' +\r\n 'setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName ' +\r\n 'setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout ' +\r\n 'setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce ' +\r\n 'setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu ' +\r\n 'showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer ' +\r\n 'shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap ' +\r\n 'shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio ' +\r\n 'showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side ' +\r\n 'sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity ' +\r\n 'simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime ' +\r\n 'sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed ' +\r\n 'slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode ' +\r\n 'splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str ' +\r\n 'sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth ' +\r\n 'switchableUnits switchAction switchCamera switchGesture switchLight switchMove ' +\r\n 'synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd ' +\r\n 'synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan ' +\r\n 'targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren ' +\r\n 'taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent ' +\r\n 'taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType ' +\r\n 'terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat ' +\r\n 'tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower ' +\r\n 'toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle ' +\r\n 'triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText ' +\r\n 'triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear ' +\r\n 'tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture ' +\r\n 'tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled ' +\r\n 'tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled ' +\r\n 'tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText ' +\r\n 'tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator ' +\r\n 'unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems ' +\r\n 'uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos ' +\r\n 'unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement ' +\r\n 'unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent ' +\r\n 'useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff ' +\r\n 'vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo ' +\r\n 'vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply ' +\r\n 'vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle ' +\r\n 'vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition ' +\r\n 'vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature ' +\r\n 'vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap ' +\r\n 'visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject ' +\r\n 'waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour ' +\r\n 'waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour ' +\r\n 'waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName ' +\r\n 'waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed ' +\r\n 'waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible ' +\r\n 'weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered ' +\r\n 'weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ',\r\n literal:\r\n 'blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak ' +\r\n 'locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic ' +\r\n 'sideUnknown taskNull teamMemberNull true west',\r\n },\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.NUMBER_MODE,\r\n VARIABLE,\r\n FUNCTION,\r\n STRINGS,\r\n PREPROCESSOR\r\n ],\r\n illegal: /#|^\\$ /\r\n };\r\n};","module.exports = function(hljs) {\r\n var COMMENT_MODE = hljs.COMMENT('--', '$');\r\n return {\r\n case_insensitive: true,\r\n illegal: /[<>{}*]/,\r\n contains: [\r\n {\r\n beginKeywords:\r\n 'begin end start commit rollback savepoint lock alter create drop rename call ' +\r\n 'delete do handler insert load replace select truncate update set show pragma grant ' +\r\n 'merge describe use explain help declare prepare execute deallocate release ' +\r\n 'unlock purge reset change stop analyze cache flush optimize repair kill ' +\r\n 'install uninstall checksum restore check backup revoke comment values with',\r\n end: /;/, endsWithParent: true,\r\n lexemes: /[\\w\\.]+/,\r\n keywords: {\r\n keyword:\r\n 'as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add ' +\r\n 'addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias ' +\r\n 'all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply ' +\r\n 'archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan ' +\r\n 'atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid ' +\r\n 'authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile ' +\r\n 'before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float ' +\r\n 'binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound ' +\r\n 'bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel ' +\r\n 'capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base ' +\r\n 'char_length character_length characters characterset charindex charset charsetform charsetid check ' +\r\n 'checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close ' +\r\n 'cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation ' +\r\n 'collect colu colum column column_value columns columns_updated comment commit compact compatibility ' +\r\n 'compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn ' +\r\n 'connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection ' +\r\n 'consider consistent constant constraint constraints constructor container content contents context ' +\r\n 'contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost ' +\r\n 'count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation ' +\r\n 'critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user ' +\r\n 'cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add ' +\r\n 'date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts ' +\r\n 'day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate ' +\r\n 'declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults ' +\r\n 'deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank ' +\r\n 'depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor ' +\r\n 'deterministic diagnostics difference dimension direct_load directory disable disable_all ' +\r\n 'disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div ' +\r\n 'do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable ' +\r\n 'editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt ' +\r\n 'end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors ' +\r\n 'escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding ' +\r\n 'execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external ' +\r\n 'external_1 external_2 externally extract failed failed_login_attempts failover failure far fast ' +\r\n 'feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final ' +\r\n 'finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign ' +\r\n 'form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ' +\r\n 'ftp full function general generated get get_format get_lock getdate getutcdate global global_name ' +\r\n 'globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups ' +\r\n 'gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex ' +\r\n 'hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified ' +\r\n 'identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment ' +\r\n 'index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile ' +\r\n 'initial initialized initially initrans inmemory inner innodb input insert install instance instantiable ' +\r\n 'instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat ' +\r\n 'is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists ' +\r\n 'keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase ' +\r\n 'lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit ' +\r\n 'lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate ' +\r\n 'locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call ' +\r\n 'logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime ' +\r\n 'managed management manual map mapping mask master master_pos_wait match matched materialized max ' +\r\n 'maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans ' +\r\n 'md5 measures median medium member memcompress memory merge microsecond mid migration min minextents ' +\r\n 'minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month ' +\r\n 'months mount move movement multiset mutex name name_const names nan national native natural nav nchar ' +\r\n 'nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile ' +\r\n 'nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile ' +\r\n 'nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder ' +\r\n 'nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck ' +\r\n 'noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe ' +\r\n 'nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ' +\r\n 'ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old ' +\r\n 'on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date ' +\r\n 'oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary ' +\r\n 'out outer outfile outline output over overflow overriding package pad parallel parallel_enable ' +\r\n 'parameters parent parse partial partition partitions pascal passing password password_grace_time ' +\r\n 'password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex ' +\r\n 'pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc ' +\r\n 'performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin ' +\r\n 'policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction ' +\r\n 'prediction_cost prediction_details prediction_probability prediction_set prepare present preserve ' +\r\n 'prior priority private private_sga privileges procedural procedure procedure_analyze processlist ' +\r\n 'profiles project prompt protection public publishingservername purge quarter query quick quiesce quota ' +\r\n 'quotename radians raise rand range rank raw read reads readsize rebuild record records ' +\r\n 'recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh ' +\r\n 'regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy ' +\r\n 'reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename ' +\r\n 'repair repeat replace replicate replication required reset resetlogs resize resource respect restore ' +\r\n 'restricted result result_cache resumable resume retention return returning returns reuse reverse revoke ' +\r\n 'right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows ' +\r\n 'rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll ' +\r\n 'sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select ' +\r\n 'self semi sequence sequential serializable server servererror session session_user sessions_per_user set ' +\r\n 'sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor ' +\r\n 'si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin ' +\r\n 'size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex ' +\r\n 'source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows ' +\r\n 'sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone ' +\r\n 'standby start starting startup statement static statistics stats_binomial_test stats_crosstab ' +\r\n 'stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep ' +\r\n 'stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev ' +\r\n 'stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate ' +\r\n 'subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum ' +\r\n 'suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate ' +\r\n 'sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo ' +\r\n 'template temporary terminated tertiary_weights test than then thread through tier ties time time_format ' +\r\n 'time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr ' +\r\n 'timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking ' +\r\n 'transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate ' +\r\n 'try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress ' +\r\n 'under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot ' +\r\n 'unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert ' +\r\n 'url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date ' +\r\n 'utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var ' +\r\n 'var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray ' +\r\n 'verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear ' +\r\n 'wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped ' +\r\n 'xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces ' +\r\n 'xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek',\r\n literal:\r\n 'true false null unknown',\r\n built_in:\r\n 'array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number ' +\r\n 'numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void'\r\n },\r\n contains: [\r\n {\r\n className: 'string',\r\n begin: '\\'', end: '\\'',\r\n contains: [{begin: '\\'\\''}]\r\n },\r\n {\r\n className: 'string',\r\n begin: '\"', end: '\"',\r\n contains: [{begin: '\"\"'}]\r\n },\r\n {\r\n className: 'string',\r\n begin: '`', end: '`'\r\n },\r\n hljs.C_NUMBER_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n COMMENT_MODE,\r\n hljs.HASH_COMMENT_MODE\r\n ]\r\n },\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n COMMENT_MODE,\r\n hljs.HASH_COMMENT_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n // variable names cannot conflict with block identifiers\r\n var BLOCKS = [\r\n 'functions',\r\n 'model',\r\n 'data',\r\n 'parameters',\r\n 'quantities',\r\n 'transformed',\r\n 'generated'\r\n ];\r\n var STATEMENTS = [\r\n 'for',\r\n 'in',\r\n 'if',\r\n 'else',\r\n 'while',\r\n 'break',\r\n 'continue',\r\n 'return'\r\n ];\r\n var SPECIAL_FUNCTIONS = [\r\n 'print',\r\n 'reject',\r\n 'increment_log_prob|10',\r\n 'integrate_ode|10',\r\n 'integrate_ode_rk45|10',\r\n 'integrate_ode_bdf|10',\r\n 'algebra_solver'\r\n ];\r\n var VAR_TYPES = [\r\n 'int',\r\n 'real',\r\n 'vector',\r\n 'ordered',\r\n 'positive_ordered',\r\n 'simplex',\r\n 'unit_vector',\r\n 'row_vector',\r\n 'matrix',\r\n 'cholesky_factor_corr|10',\r\n 'cholesky_factor_cov|10',\r\n 'corr_matrix|10',\r\n 'cov_matrix|10',\r\n 'void'\r\n ];\r\n var FUNCTIONS = [\r\n 'Phi', 'Phi_approx', 'abs', 'acos', 'acosh', 'algebra_solver', 'append_array',\r\n 'append_col', 'append_row', 'asin', 'asinh', 'atan', 'atan2', 'atanh',\r\n 'bernoulli_cdf', 'bernoulli_lccdf', 'bernoulli_lcdf', 'bernoulli_logit_lpmf',\r\n 'bernoulli_logit_rng', 'bernoulli_lpmf', 'bernoulli_rng', 'bessel_first_kind',\r\n 'bessel_second_kind', 'beta_binomial_cdf', 'beta_binomial_lccdf',\r\n 'beta_binomial_lcdf', 'beta_binomial_lpmf', 'beta_binomial_rng', 'beta_cdf',\r\n 'beta_lccdf', 'beta_lcdf', 'beta_lpdf', 'beta_rng', 'binary_log_loss',\r\n 'binomial_cdf', 'binomial_coefficient_log', 'binomial_lccdf', 'binomial_lcdf',\r\n 'binomial_logit_lpmf', 'binomial_lpmf', 'binomial_rng', 'block',\r\n 'categorical_logit_lpmf', 'categorical_logit_rng', 'categorical_lpmf',\r\n 'categorical_rng', 'cauchy_cdf', 'cauchy_lccdf', 'cauchy_lcdf', 'cauchy_lpdf',\r\n 'cauchy_rng', 'cbrt', 'ceil', 'chi_square_cdf', 'chi_square_lccdf',\r\n 'chi_square_lcdf', 'chi_square_lpdf', 'chi_square_rng', 'cholesky_decompose',\r\n 'choose', 'col', 'cols', 'columns_dot_product', 'columns_dot_self', 'cos',\r\n 'cosh', 'cov_exp_quad', 'crossprod', 'csr_extract_u', 'csr_extract_v',\r\n 'csr_extract_w', 'csr_matrix_times_vector', 'csr_to_dense_matrix',\r\n 'cumulative_sum', 'determinant', 'diag_matrix', 'diag_post_multiply',\r\n 'diag_pre_multiply', 'diagonal', 'digamma', 'dims', 'dirichlet_lpdf',\r\n 'dirichlet_rng', 'distance', 'dot_product', 'dot_self',\r\n 'double_exponential_cdf', 'double_exponential_lccdf', 'double_exponential_lcdf',\r\n 'double_exponential_lpdf', 'double_exponential_rng', 'e', 'eigenvalues_sym',\r\n 'eigenvectors_sym', 'erf', 'erfc', 'exp', 'exp2', 'exp_mod_normal_cdf',\r\n 'exp_mod_normal_lccdf', 'exp_mod_normal_lcdf', 'exp_mod_normal_lpdf',\r\n 'exp_mod_normal_rng', 'expm1', 'exponential_cdf', 'exponential_lccdf',\r\n 'exponential_lcdf', 'exponential_lpdf', 'exponential_rng', 'fabs',\r\n 'falling_factorial', 'fdim', 'floor', 'fma', 'fmax', 'fmin', 'fmod',\r\n 'frechet_cdf', 'frechet_lccdf', 'frechet_lcdf', 'frechet_lpdf', 'frechet_rng',\r\n 'gamma_cdf', 'gamma_lccdf', 'gamma_lcdf', 'gamma_lpdf', 'gamma_p', 'gamma_q',\r\n 'gamma_rng', 'gaussian_dlm_obs_lpdf', 'get_lp', 'gumbel_cdf', 'gumbel_lccdf',\r\n 'gumbel_lcdf', 'gumbel_lpdf', 'gumbel_rng', 'head', 'hypergeometric_lpmf',\r\n 'hypergeometric_rng', 'hypot', 'inc_beta', 'int_step', 'integrate_ode',\r\n 'integrate_ode_bdf', 'integrate_ode_rk45', 'inv', 'inv_Phi',\r\n 'inv_chi_square_cdf', 'inv_chi_square_lccdf', 'inv_chi_square_lcdf',\r\n 'inv_chi_square_lpdf', 'inv_chi_square_rng', 'inv_cloglog', 'inv_gamma_cdf',\r\n 'inv_gamma_lccdf', 'inv_gamma_lcdf', 'inv_gamma_lpdf', 'inv_gamma_rng',\r\n 'inv_logit', 'inv_sqrt', 'inv_square', 'inv_wishart_lpdf', 'inv_wishart_rng',\r\n 'inverse', 'inverse_spd', 'is_inf', 'is_nan', 'lbeta', 'lchoose', 'lgamma',\r\n 'lkj_corr_cholesky_lpdf', 'lkj_corr_cholesky_rng', 'lkj_corr_lpdf',\r\n 'lkj_corr_rng', 'lmgamma', 'lmultiply', 'log', 'log10', 'log1m', 'log1m_exp',\r\n 'log1m_inv_logit', 'log1p', 'log1p_exp', 'log2', 'log_determinant',\r\n 'log_diff_exp', 'log_falling_factorial', 'log_inv_logit', 'log_mix',\r\n 'log_rising_factorial', 'log_softmax', 'log_sum_exp', 'logistic_cdf',\r\n 'logistic_lccdf', 'logistic_lcdf', 'logistic_lpdf', 'logistic_rng', 'logit',\r\n 'lognormal_cdf', 'lognormal_lccdf', 'lognormal_lcdf', 'lognormal_lpdf',\r\n 'lognormal_rng', 'machine_precision', 'matrix_exp', 'max', 'mdivide_left_spd',\r\n 'mdivide_left_tri_low', 'mdivide_right_spd', 'mdivide_right_tri_low', 'mean',\r\n 'min', 'modified_bessel_first_kind', 'modified_bessel_second_kind',\r\n 'multi_gp_cholesky_lpdf', 'multi_gp_lpdf', 'multi_normal_cholesky_lpdf',\r\n 'multi_normal_cholesky_rng', 'multi_normal_lpdf', 'multi_normal_prec_lpdf',\r\n 'multi_normal_rng', 'multi_student_t_lpdf', 'multi_student_t_rng',\r\n 'multinomial_lpmf', 'multinomial_rng', 'multiply_log',\r\n 'multiply_lower_tri_self_transpose', 'neg_binomial_2_cdf',\r\n 'neg_binomial_2_lccdf', 'neg_binomial_2_lcdf', 'neg_binomial_2_log_lpmf',\r\n 'neg_binomial_2_log_rng', 'neg_binomial_2_lpmf', 'neg_binomial_2_rng',\r\n 'neg_binomial_cdf', 'neg_binomial_lccdf', 'neg_binomial_lcdf',\r\n 'neg_binomial_lpmf', 'neg_binomial_rng', 'negative_infinity', 'normal_cdf',\r\n 'normal_lccdf', 'normal_lcdf', 'normal_lpdf', 'normal_rng', 'not_a_number',\r\n 'num_elements', 'ordered_logistic_lpmf', 'ordered_logistic_rng', 'owens_t',\r\n 'pareto_cdf', 'pareto_lccdf', 'pareto_lcdf', 'pareto_lpdf', 'pareto_rng',\r\n 'pareto_type_2_cdf', 'pareto_type_2_lccdf', 'pareto_type_2_lcdf',\r\n 'pareto_type_2_lpdf', 'pareto_type_2_rng', 'pi', 'poisson_cdf', 'poisson_lccdf',\r\n 'poisson_lcdf', 'poisson_log_lpmf', 'poisson_log_rng', 'poisson_lpmf',\r\n 'poisson_rng', 'positive_infinity', 'pow', 'print', 'prod', 'qr_Q', 'qr_R',\r\n 'quad_form', 'quad_form_diag', 'quad_form_sym', 'rank', 'rayleigh_cdf',\r\n 'rayleigh_lccdf', 'rayleigh_lcdf', 'rayleigh_lpdf', 'rayleigh_rng', 'reject',\r\n 'rep_array', 'rep_matrix', 'rep_row_vector', 'rep_vector', 'rising_factorial',\r\n 'round', 'row', 'rows', 'rows_dot_product', 'rows_dot_self',\r\n 'scaled_inv_chi_square_cdf', 'scaled_inv_chi_square_lccdf',\r\n 'scaled_inv_chi_square_lcdf', 'scaled_inv_chi_square_lpdf',\r\n 'scaled_inv_chi_square_rng', 'sd', 'segment', 'sin', 'singular_values', 'sinh',\r\n 'size', 'skew_normal_cdf', 'skew_normal_lccdf', 'skew_normal_lcdf',\r\n 'skew_normal_lpdf', 'skew_normal_rng', 'softmax', 'sort_asc', 'sort_desc',\r\n 'sort_indices_asc', 'sort_indices_desc', 'sqrt', 'sqrt2', 'square',\r\n 'squared_distance', 'step', 'student_t_cdf', 'student_t_lccdf',\r\n 'student_t_lcdf', 'student_t_lpdf', 'student_t_rng', 'sub_col', 'sub_row',\r\n 'sum', 'tail', 'tan', 'tanh', 'target', 'tcrossprod', 'tgamma', 'to_array_1d',\r\n 'to_array_2d', 'to_matrix', 'to_row_vector', 'to_vector', 'trace',\r\n 'trace_gen_quad_form', 'trace_quad_form', 'trigamma', 'trunc', 'uniform_cdf',\r\n 'uniform_lccdf', 'uniform_lcdf', 'uniform_lpdf', 'uniform_rng', 'variance',\r\n 'von_mises_lpdf', 'von_mises_rng', 'weibull_cdf', 'weibull_lccdf',\r\n 'weibull_lcdf', 'weibull_lpdf', 'weibull_rng', 'wiener_lpdf', 'wishart_lpdf',\r\n 'wishart_rng'\r\n ];\r\n var DISTRIBUTIONS = [\r\n 'bernoulli', 'bernoulli_logit', 'beta', 'beta_binomial', 'binomial',\r\n 'binomial_logit', 'categorical', 'categorical_logit', 'cauchy', 'chi_square',\r\n 'dirichlet', 'double_exponential', 'exp_mod_normal', 'exponential', 'frechet',\r\n 'gamma', 'gaussian_dlm_obs', 'gumbel', 'hypergeometric', 'inv_chi_square',\r\n 'inv_gamma', 'inv_wishart', 'lkj_corr', 'lkj_corr_cholesky', 'logistic',\r\n 'lognormal', 'multi_gp', 'multi_gp_cholesky', 'multi_normal',\r\n 'multi_normal_cholesky', 'multi_normal_prec', 'multi_student_t', 'multinomial',\r\n 'neg_binomial', 'neg_binomial_2', 'neg_binomial_2_log', 'normal',\r\n 'ordered_logistic', 'pareto', 'pareto_type_2', 'poisson', 'poisson_log',\r\n 'rayleigh', 'scaled_inv_chi_square', 'skew_normal', 'student_t', 'uniform',\r\n 'von_mises', 'weibull', 'wiener', 'wishart'\r\n ];\r\n\r\n return {\r\n aliases: ['stanfuncs'],\r\n keywords: {\r\n 'title': BLOCKS.join(' '),\r\n 'keyword': STATEMENTS.concat(VAR_TYPES).concat(SPECIAL_FUNCTIONS).join(' '),\r\n 'built_in': FUNCTIONS.join(' ')\r\n },\r\n lexemes: hljs.IDENT_RE,\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.COMMENT(\r\n /#/,\r\n /$/,\r\n {\r\n relevance: 0,\r\n keywords: {\r\n 'meta-keyword': 'include'\r\n }\r\n }\r\n ),\r\n hljs.COMMENT(\r\n /\\/\\*/,\r\n /\\*\\//,\r\n {\r\n relevance: 0,\r\n // highlight doc strings mentioned in Stan reference\r\n contains: [\r\n {\r\n className: 'doctag',\r\n begin: /@(return|param)/\r\n }\r\n ]\r\n }\r\n ),\r\n {\r\n // hack: in range constraints, lower must follow \"<\"\r\n begin: /<\\s*lower\\s*=/,\r\n keywords: 'lower'\r\n },\r\n {\r\n // hack: in range constraints, upper must follow either , or <\r\n // or \r\n begin: /[<,]*upper\\s*=/,\r\n keywords: 'upper'\r\n },\r\n {\r\n className: 'keyword',\r\n begin: /\\btarget\\s*\\+=/,\r\n relevance: 10\r\n },\r\n {\r\n begin: '~\\\\s*(' + hljs.IDENT_RE + ')\\\\s*\\\\(',\r\n keywords: DISTRIBUTIONS.join(' ')\r\n },\r\n {\r\n className: 'number',\r\n variants: [\r\n {\r\n begin: /\\b\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?/\r\n },\r\n {\r\n begin: /\\.\\d+(?:[eE][+-]?\\d+)?\\b/\r\n }\r\n ],\r\n relevance: 0\r\n },\r\n {\r\n className: 'string',\r\n begin: '\"',\r\n end: '\"',\r\n relevance: 0\r\n }\r\n ]\r\n }\r\n};","module.exports = /*\r\n This is a fork and modification of Drew McDonald's file (https://github.com/drewmcdonald/stata-highlighting). I have also included a list of builtin commands from https://bugs.kde.org/show_bug.cgi?id=135646.\r\n*/\r\n\r\nfunction(hljs) {\r\n return {\r\n aliases: ['do', 'ado'],\r\n case_insensitive: true,\r\n keywords: 'if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5',\r\n contains: [\r\n {\r\n className: 'symbol',\r\n begin: /`[a-zA-Z0-9_]+'/\r\n },\r\n {\r\n className: 'variable',\r\n begin: /\\$\\{?[a-zA-Z0-9_]+\\}?/\r\n },\r\n {\r\n className: 'string',\r\n variants: [\r\n {begin: '`\"[^\\r\\n]*?\"\\''},\r\n {begin: '\"[^\\r\\n\"]*\"'}\r\n ]\r\n },\r\n\r\n {\r\n className: 'built_in',\r\n variants: [\r\n {\r\n begin: '\\\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\\\()'\r\n }\r\n ]\r\n },\r\n\r\n hljs.COMMENT('^[ \\t]*\\\\*.*$', false),\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\r\n var STEP21_KEYWORDS = {\r\n keyword: 'HEADER ENDSEC DATA'\r\n };\r\n var STEP21_START = {\r\n className: 'meta',\r\n begin: 'ISO-10303-21;',\r\n relevance: 10\r\n };\r\n var STEP21_CLOSE = {\r\n className: 'meta',\r\n begin: 'END-ISO-10303-21;',\r\n relevance: 10\r\n };\r\n\r\n return {\r\n aliases: ['p21', 'step', 'stp'],\r\n case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.\r\n lexemes: STEP21_IDENT_RE,\r\n keywords: STEP21_KEYWORDS,\r\n contains: [\r\n STEP21_START,\r\n STEP21_CLOSE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.COMMENT('/\\\\*\\\\*!', '\\\\*/'),\r\n hljs.C_NUMBER_MODE,\r\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\r\n {\r\n className: 'string',\r\n begin: \"'\", end: \"'\"\r\n },\r\n {\r\n className: 'symbol',\r\n variants: [\r\n {\r\n begin: '#', end: '\\\\d+',\r\n illegal: '\\\\W'\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n\r\n var VARIABLE = {\r\n className: 'variable',\r\n begin: '\\\\$' + hljs.IDENT_RE\r\n };\r\n\r\n var HEX_COLOR = {\r\n className: 'number',\r\n begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\r\n };\r\n\r\n var AT_KEYWORDS = [\r\n 'charset',\r\n 'css',\r\n 'debug',\r\n 'extend',\r\n 'font-face',\r\n 'for',\r\n 'import',\r\n 'include',\r\n 'media',\r\n 'mixin',\r\n 'page',\r\n 'warn',\r\n 'while'\r\n ];\r\n\r\n var PSEUDO_SELECTORS = [\r\n 'after',\r\n 'before',\r\n 'first-letter',\r\n 'first-line',\r\n 'active',\r\n 'first-child',\r\n 'focus',\r\n 'hover',\r\n 'lang',\r\n 'link',\r\n 'visited'\r\n ];\r\n\r\n var TAGS = [\r\n 'a',\r\n 'abbr',\r\n 'address',\r\n 'article',\r\n 'aside',\r\n 'audio',\r\n 'b',\r\n 'blockquote',\r\n 'body',\r\n 'button',\r\n 'canvas',\r\n 'caption',\r\n 'cite',\r\n 'code',\r\n 'dd',\r\n 'del',\r\n 'details',\r\n 'dfn',\r\n 'div',\r\n 'dl',\r\n 'dt',\r\n 'em',\r\n 'fieldset',\r\n 'figcaption',\r\n 'figure',\r\n 'footer',\r\n 'form',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'header',\r\n 'hgroup',\r\n 'html',\r\n 'i',\r\n 'iframe',\r\n 'img',\r\n 'input',\r\n 'ins',\r\n 'kbd',\r\n 'label',\r\n 'legend',\r\n 'li',\r\n 'mark',\r\n 'menu',\r\n 'nav',\r\n 'object',\r\n 'ol',\r\n 'p',\r\n 'q',\r\n 'quote',\r\n 'samp',\r\n 'section',\r\n 'span',\r\n 'strong',\r\n 'summary',\r\n 'sup',\r\n 'table',\r\n 'tbody',\r\n 'td',\r\n 'textarea',\r\n 'tfoot',\r\n 'th',\r\n 'thead',\r\n 'time',\r\n 'tr',\r\n 'ul',\r\n 'var',\r\n 'video'\r\n ];\r\n\r\n var LOOKAHEAD_TAG_END = '(?=[\\\\.\\\\s\\\\n\\\\[\\\\:,])';\r\n\r\n var ATTRIBUTES = [\r\n 'align-content',\r\n 'align-items',\r\n 'align-self',\r\n 'animation',\r\n 'animation-delay',\r\n 'animation-direction',\r\n 'animation-duration',\r\n 'animation-fill-mode',\r\n 'animation-iteration-count',\r\n 'animation-name',\r\n 'animation-play-state',\r\n 'animation-timing-function',\r\n 'auto',\r\n 'backface-visibility',\r\n 'background',\r\n 'background-attachment',\r\n 'background-clip',\r\n 'background-color',\r\n 'background-image',\r\n 'background-origin',\r\n 'background-position',\r\n 'background-repeat',\r\n 'background-size',\r\n 'border',\r\n 'border-bottom',\r\n 'border-bottom-color',\r\n 'border-bottom-left-radius',\r\n 'border-bottom-right-radius',\r\n 'border-bottom-style',\r\n 'border-bottom-width',\r\n 'border-collapse',\r\n 'border-color',\r\n 'border-image',\r\n 'border-image-outset',\r\n 'border-image-repeat',\r\n 'border-image-slice',\r\n 'border-image-source',\r\n 'border-image-width',\r\n 'border-left',\r\n 'border-left-color',\r\n 'border-left-style',\r\n 'border-left-width',\r\n 'border-radius',\r\n 'border-right',\r\n 'border-right-color',\r\n 'border-right-style',\r\n 'border-right-width',\r\n 'border-spacing',\r\n 'border-style',\r\n 'border-top',\r\n 'border-top-color',\r\n 'border-top-left-radius',\r\n 'border-top-right-radius',\r\n 'border-top-style',\r\n 'border-top-width',\r\n 'border-width',\r\n 'bottom',\r\n 'box-decoration-break',\r\n 'box-shadow',\r\n 'box-sizing',\r\n 'break-after',\r\n 'break-before',\r\n 'break-inside',\r\n 'caption-side',\r\n 'clear',\r\n 'clip',\r\n 'clip-path',\r\n 'color',\r\n 'column-count',\r\n 'column-fill',\r\n 'column-gap',\r\n 'column-rule',\r\n 'column-rule-color',\r\n 'column-rule-style',\r\n 'column-rule-width',\r\n 'column-span',\r\n 'column-width',\r\n 'columns',\r\n 'content',\r\n 'counter-increment',\r\n 'counter-reset',\r\n 'cursor',\r\n 'direction',\r\n 'display',\r\n 'empty-cells',\r\n 'filter',\r\n 'flex',\r\n 'flex-basis',\r\n 'flex-direction',\r\n 'flex-flow',\r\n 'flex-grow',\r\n 'flex-shrink',\r\n 'flex-wrap',\r\n 'float',\r\n 'font',\r\n 'font-family',\r\n 'font-feature-settings',\r\n 'font-kerning',\r\n 'font-language-override',\r\n 'font-size',\r\n 'font-size-adjust',\r\n 'font-stretch',\r\n 'font-style',\r\n 'font-variant',\r\n 'font-variant-ligatures',\r\n 'font-weight',\r\n 'height',\r\n 'hyphens',\r\n 'icon',\r\n 'image-orientation',\r\n 'image-rendering',\r\n 'image-resolution',\r\n 'ime-mode',\r\n 'inherit',\r\n 'initial',\r\n 'justify-content',\r\n 'left',\r\n 'letter-spacing',\r\n 'line-height',\r\n 'list-style',\r\n 'list-style-image',\r\n 'list-style-position',\r\n 'list-style-type',\r\n 'margin',\r\n 'margin-bottom',\r\n 'margin-left',\r\n 'margin-right',\r\n 'margin-top',\r\n 'marks',\r\n 'mask',\r\n 'max-height',\r\n 'max-width',\r\n 'min-height',\r\n 'min-width',\r\n 'nav-down',\r\n 'nav-index',\r\n 'nav-left',\r\n 'nav-right',\r\n 'nav-up',\r\n 'none',\r\n 'normal',\r\n 'object-fit',\r\n 'object-position',\r\n 'opacity',\r\n 'order',\r\n 'orphans',\r\n 'outline',\r\n 'outline-color',\r\n 'outline-offset',\r\n 'outline-style',\r\n 'outline-width',\r\n 'overflow',\r\n 'overflow-wrap',\r\n 'overflow-x',\r\n 'overflow-y',\r\n 'padding',\r\n 'padding-bottom',\r\n 'padding-left',\r\n 'padding-right',\r\n 'padding-top',\r\n 'page-break-after',\r\n 'page-break-before',\r\n 'page-break-inside',\r\n 'perspective',\r\n 'perspective-origin',\r\n 'pointer-events',\r\n 'position',\r\n 'quotes',\r\n 'resize',\r\n 'right',\r\n 'tab-size',\r\n 'table-layout',\r\n 'text-align',\r\n 'text-align-last',\r\n 'text-decoration',\r\n 'text-decoration-color',\r\n 'text-decoration-line',\r\n 'text-decoration-style',\r\n 'text-indent',\r\n 'text-overflow',\r\n 'text-rendering',\r\n 'text-shadow',\r\n 'text-transform',\r\n 'text-underline-position',\r\n 'top',\r\n 'transform',\r\n 'transform-origin',\r\n 'transform-style',\r\n 'transition',\r\n 'transition-delay',\r\n 'transition-duration',\r\n 'transition-property',\r\n 'transition-timing-function',\r\n 'unicode-bidi',\r\n 'vertical-align',\r\n 'visibility',\r\n 'white-space',\r\n 'widows',\r\n 'width',\r\n 'word-break',\r\n 'word-spacing',\r\n 'word-wrap',\r\n 'z-index'\r\n ];\r\n\r\n // illegals\r\n var ILLEGAL = [\r\n '\\\\?',\r\n '(\\\\bReturn\\\\b)', // monkey\r\n '(\\\\bEnd\\\\b)', // monkey\r\n '(\\\\bend\\\\b)', // vbscript\r\n '(\\\\bdef\\\\b)', // gradle\r\n ';', // a whole lot of languages\r\n '#\\\\s', // markdown\r\n '\\\\*\\\\s', // markdown\r\n '===\\\\s', // markdown\r\n '\\\\|',\r\n '%', // prolog\r\n ];\r\n\r\n return {\r\n aliases: ['styl'],\r\n case_insensitive: false,\r\n keywords: 'if else for in',\r\n illegal: '(' + ILLEGAL.join('|') + ')',\r\n contains: [\r\n\r\n // strings\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n\r\n // comments\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n\r\n // hex colors\r\n HEX_COLOR,\r\n\r\n // class tag\r\n {\r\n begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END,\r\n className: 'selector-class'\r\n },\r\n\r\n // id tag\r\n {\r\n begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END,\r\n className: 'selector-id'\r\n },\r\n\r\n // tags\r\n {\r\n begin: '\\\\b(' + TAGS.join('|') + ')' + LOOKAHEAD_TAG_END,\r\n className: 'selector-tag'\r\n },\r\n\r\n // psuedo selectors\r\n {\r\n begin: '&?:?:\\\\b(' + PSEUDO_SELECTORS.join('|') + ')' + LOOKAHEAD_TAG_END\r\n },\r\n\r\n // @ keywords\r\n {\r\n begin: '\\@(' + AT_KEYWORDS.join('|') + ')\\\\b'\r\n },\r\n\r\n // variables\r\n VARIABLE,\r\n\r\n // dimension\r\n hljs.CSS_NUMBER_MODE,\r\n\r\n // number\r\n hljs.NUMBER_MODE,\r\n\r\n // functions\r\n // - only from beginning of line + whitespace\r\n {\r\n className: 'function',\r\n begin: '^[a-zA-Z][a-zA-Z0-9_\\-]*\\\\(.*\\\\)',\r\n illegal: '[\\\\n]',\r\n returnBegin: true,\r\n contains: [\r\n {className: 'title', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_\\-]*'},\r\n {\r\n className: 'params',\r\n begin: /\\(/,\r\n end: /\\)/,\r\n contains: [\r\n HEX_COLOR,\r\n VARIABLE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.CSS_NUMBER_MODE,\r\n hljs.NUMBER_MODE,\r\n hljs.QUOTE_STRING_MODE\r\n ]\r\n }\r\n ]\r\n },\r\n\r\n // attributes\r\n // - only from beginning of line + whitespace\r\n // - must have whitespace after it\r\n {\r\n className: 'attribute',\r\n begin: '\\\\b(' + ATTRIBUTES.reverse().join('|') + ')\\\\b',\r\n starts: {\r\n // value container\r\n end: /;|$/,\r\n contains: [\r\n HEX_COLOR,\r\n VARIABLE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.CSS_NUMBER_MODE,\r\n hljs.NUMBER_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ],\r\n illegal: /\\./,\r\n relevance: 0\r\n }\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var DETAILS = {\r\n className: 'string',\r\n begin: '\\\\[\\n(multipart)?', end: '\\\\]\\n'\r\n };\r\n var TIME = {\r\n className: 'string',\r\n begin: '\\\\d{4}-\\\\d{2}-\\\\d{2}(\\\\s+)\\\\d{2}:\\\\d{2}:\\\\d{2}\\.\\\\d+Z'\r\n };\r\n var PROGRESSVALUE = {\r\n className: 'string',\r\n begin: '(\\\\+|-)\\\\d+'\r\n };\r\n var KEYWORDS = {\r\n className: 'keyword',\r\n relevance: 10,\r\n variants: [\r\n { begin: '^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\\\s+(test)?' },\r\n { begin: '^progress(:?)(\\\\s+)?(pop|push)?' },\r\n { begin: '^tags:' },\r\n { begin: '^time:' }\r\n ],\r\n };\r\n return {\r\n case_insensitive: true,\r\n contains: [\r\n DETAILS,\r\n TIME,\r\n PROGRESSVALUE,\r\n KEYWORDS\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var SWIFT_KEYWORDS = {\r\n keyword: '#available #colorLiteral #column #else #elseif #endif #file ' +\r\n '#fileLiteral #function #if #imageLiteral #line #selector #sourceLocation ' +\r\n '_ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype ' +\r\n 'associativity break case catch class continue convenience default defer deinit didSet do ' +\r\n 'dynamic dynamicType else enum extension fallthrough false fileprivate final for func ' +\r\n 'get guard if import in indirect infix init inout internal is lazy left let ' +\r\n 'mutating nil none nonmutating open operator optional override postfix precedence ' +\r\n 'prefix private protocol Protocol public repeat required rethrows return ' +\r\n 'right self Self set static struct subscript super switch throw throws true ' +\r\n 'try try! try? Type typealias unowned var weak where while willSet',\r\n literal: 'true false nil',\r\n built_in: 'abs advance alignof alignofValue anyGenerator assert assertionFailure ' +\r\n 'bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC ' +\r\n 'bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros ' +\r\n 'debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords ' +\r\n 'enumerate equal fatalError filter find getBridgedObjectiveCType getVaList ' +\r\n 'indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC ' +\r\n 'isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare ' +\r\n 'map max maxElement min minElement numericCast overlaps partition posix ' +\r\n 'precondition preconditionFailure print println quickSort readLine reduce reflect ' +\r\n 'reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split ' +\r\n 'startsWith stride strideof strideofValue swap toString transcode ' +\r\n 'underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap ' +\r\n 'unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer ' +\r\n 'withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers ' +\r\n 'withUnsafePointer withUnsafePointers withVaList zip'\r\n };\r\n\r\n var TYPE = {\r\n className: 'type',\r\n begin: '\\\\b[A-Z][\\\\w\\u00C0-\\u02B8\\']*',\r\n relevance: 0\r\n };\r\n // slightly more special to swift\r\n var OPTIONAL_USING_TYPE = {\r\n className: 'type',\r\n begin: '\\\\b[A-Z][\\\\w\\u00C0-\\u02B8\\']*[!?]'\r\n }\r\n var BLOCK_COMMENT = hljs.COMMENT(\r\n '/\\\\*',\r\n '\\\\*/',\r\n {\r\n contains: ['self']\r\n }\r\n );\r\n var SUBST = {\r\n className: 'subst',\r\n begin: /\\\\\\(/, end: '\\\\)',\r\n keywords: SWIFT_KEYWORDS,\r\n contains: [] // assigned later\r\n };\r\n var STRING = {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\r\n variants: [\r\n {begin: /\"\"\"/, end: /\"\"\"/},\r\n {begin: /\"/, end: /\"/},\r\n ]\r\n };\r\n var NUMBERS = {\r\n className: 'number',\r\n begin: '\\\\b([\\\\d_]+(\\\\.[\\\\deE_]+)?|0x[a-fA-F0-9_]+(\\\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\\\b',\r\n relevance: 0\r\n };\r\n SUBST.contains = [NUMBERS];\r\n\r\n return {\r\n keywords: SWIFT_KEYWORDS,\r\n contains: [\r\n STRING,\r\n hljs.C_LINE_COMMENT_MODE,\r\n BLOCK_COMMENT,\r\n OPTIONAL_USING_TYPE,\r\n TYPE,\r\n NUMBERS,\r\n {\r\n className: 'function',\r\n beginKeywords: 'func', end: '{', excludeEnd: true,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {\r\n begin: /[A-Za-z$_][0-9A-Za-z$_]*/\r\n }),\r\n {\r\n begin: //\r\n },\r\n {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/, endsParent: true,\r\n keywords: SWIFT_KEYWORDS,\r\n contains: [\r\n 'self',\r\n NUMBERS,\r\n STRING,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {begin: ':'} // relevance booster\r\n ],\r\n illegal: /[\"']/\r\n }\r\n ],\r\n illegal: /\\[|%/\r\n },\r\n {\r\n className: 'class',\r\n beginKeywords: 'struct protocol class extension enum',\r\n keywords: SWIFT_KEYWORDS,\r\n end: '\\\\{',\r\n excludeEnd: true,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][\\u00C0-\\u02B80-9A-Za-z$_]*/})\r\n ]\r\n },\r\n {\r\n className: 'meta', // @attributes\r\n begin: '(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|' +\r\n '@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|' +\r\n '@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|' +\r\n '@infix|@prefix|@postfix|@autoclosure|@testable|@available|' +\r\n '@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|' +\r\n '@propertyWrapper)'\r\n\r\n },\r\n {\r\n beginKeywords: 'import', end: /$/,\r\n contains: [hljs.C_LINE_COMMENT_MODE, BLOCK_COMMENT]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n\r\n var COMMENT = {\r\n className: 'comment',\r\n begin: /\\$noop\\(/,\r\n end: /\\)/,\r\n contains: [{\r\n begin: /\\(/,\r\n end: /\\)/,\r\n contains: ['self', {\r\n begin: /\\\\./\r\n }]\r\n }],\r\n relevance: 10\r\n };\r\n\r\n var FUNCTION = {\r\n className: 'keyword',\r\n begin: /\\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,\r\n end: /\\(/,\r\n excludeEnd: true\r\n };\r\n\r\n var VARIABLE = {\r\n className: 'variable',\r\n begin: /%[_a-zA-Z0-9:]*/,\r\n end: '%'\r\n };\r\n\r\n var ESCAPE_SEQUENCE = {\r\n className: 'symbol',\r\n begin: /\\\\./\r\n };\r\n\r\n return {\r\n contains: [\r\n COMMENT,\r\n FUNCTION,\r\n VARIABLE,\r\n ESCAPE_SEQUENCE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n case_insensitive: true,\r\n contains: [\r\n hljs.HASH_COMMENT_MODE,\r\n // version of format and total amount of testcases\r\n {\r\n className: 'meta',\r\n variants: [\r\n { begin: '^TAP version (\\\\d+)$' },\r\n { begin: '^1\\\\.\\\\.(\\\\d+)$' }\r\n ],\r\n },\r\n // YAML block\r\n {\r\n begin: '(\\s+)?---$', end: '\\\\.\\\\.\\\\.$',\r\n subLanguage: 'yaml',\r\n relevance: 0\r\n },\r\n\t // testcase number\r\n {\r\n className: 'number',\r\n begin: ' (\\\\d+) '\r\n },\r\n\t // testcase status and description\r\n {\r\n className: 'symbol',\r\n variants: [\r\n { begin: '^ok' },\r\n { begin: '^not ok' }\r\n ],\r\n },\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['tk'],\r\n keywords: 'after append apply array auto_execok auto_import auto_load auto_mkindex ' +\r\n 'auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock ' +\r\n 'close concat continue dde dict encoding eof error eval exec exit expr fblocked ' +\r\n 'fconfigure fcopy file fileevent filename flush for foreach format gets glob global ' +\r\n 'history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list ' +\r\n 'llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 '+\r\n 'mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex '+\r\n 'platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename '+\r\n 'return safe scan seek set socket source split string subst switch tcl_endOfWord '+\r\n 'tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter '+\r\n 'tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update '+\r\n 'uplevel upvar variable vwait while',\r\n contains: [\r\n hljs.COMMENT(';[ \\\\t]*#', '$'),\r\n hljs.COMMENT('^[ \\\\t]*#', '$'),\r\n {\r\n beginKeywords: 'proc',\r\n end: '[\\\\{]',\r\n excludeEnd: true,\r\n contains: [\r\n {\r\n className: 'title',\r\n begin: '[ \\\\t\\\\n\\\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\r\n end: '[ \\\\t\\\\n\\\\r]',\r\n endsWithParent: true,\r\n excludeEnd: true\r\n }\r\n ]\r\n },\r\n {\r\n excludeEnd: true,\r\n variants: [\r\n {\r\n begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\\\(([a-zA-Z0-9_])*\\\\)',\r\n end: '[^a-zA-Z0-9_\\\\}\\\\$]'\r\n },\r\n {\r\n begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\r\n end: '(\\\\))?[^a-zA-Z0-9_\\\\}\\\\$]'\r\n }\r\n ]\r\n },\r\n {\r\n className: 'string',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n variants: [\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\r\n ]\r\n },\r\n {\r\n className: 'number',\r\n variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\r\n }\r\n ]\r\n }\r\n};","module.exports = function(hljs) {\r\n var COMMAND = {\r\n className: 'tag',\r\n begin: /\\\\/,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'name',\r\n variants: [\r\n {begin: /[a-zA-Z\\u0430-\\u044f\\u0410-\\u042f]+[*]?/},\r\n {begin: /[^a-zA-Z\\u0430-\\u044f\\u0410-\\u042f0-9]/}\r\n ],\r\n starts: {\r\n endsWithParent: true,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'string', // because it looks like attributes in HTML tags\r\n variants: [\r\n {begin: /\\[/, end: /\\]/},\r\n {begin: /\\{/, end: /\\}/}\r\n ]\r\n },\r\n {\r\n begin: /\\s*=\\s*/, endsWithParent: true,\r\n relevance: 0,\r\n contains: [\r\n {\r\n className: 'number',\r\n begin: /-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n };\r\n\r\n return {\r\n contains: [\r\n COMMAND,\r\n {\r\n className: 'formula',\r\n contains: [COMMAND],\r\n relevance: 0,\r\n variants: [\r\n {begin: /\\$\\$/, end: /\\$\\$/},\r\n {begin: /\\$/, end: /\\$/}\r\n ]\r\n },\r\n hljs.COMMENT(\r\n '%',\r\n '$',\r\n {\r\n relevance: 0\r\n }\r\n )\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var BUILT_IN_TYPES = 'bool byte i16 i32 i64 double string binary';\r\n return {\r\n keywords: {\r\n keyword:\r\n 'namespace const typedef struct enum service exception void oneway set list map required optional',\r\n built_in:\r\n BUILT_IN_TYPES,\r\n literal:\r\n 'true false'\r\n },\r\n contains: [\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.NUMBER_MODE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {\r\n className: 'class',\r\n beginKeywords: 'struct enum service exception', end: /\\{/,\r\n illegal: /\\n/,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {\r\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\r\n })\r\n ]\r\n },\r\n {\r\n begin: '\\\\b(set|list|map)\\\\s*<', end: '>',\r\n keywords: BUILT_IN_TYPES,\r\n contains: ['self']\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var TPID = {\r\n className: 'number',\r\n begin: '[1-9][0-9]*', /* no leading zeros */\r\n relevance: 0\r\n };\r\n var TPLABEL = {\r\n className: 'symbol',\r\n begin: ':[^\\\\]]+'\r\n };\r\n var TPDATA = {\r\n className: 'built_in',\r\n begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|' +\r\n 'TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\\\[', end: '\\\\]',\r\n contains: [\r\n 'self',\r\n TPID,\r\n TPLABEL\r\n ]\r\n };\r\n var TPIO = {\r\n className: 'built_in',\r\n begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\\\[', end: '\\\\]',\r\n contains: [\r\n 'self',\r\n TPID,\r\n hljs.QUOTE_STRING_MODE, /* for pos section at bottom */\r\n TPLABEL\r\n ]\r\n };\r\n\r\n return {\r\n keywords: {\r\n keyword:\r\n 'ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB ' +\r\n 'DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC ' +\r\n 'IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE ' +\r\n 'PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET ' +\r\n 'Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN ' +\r\n 'SUBSTR FINDSTR VOFFSET PROG ATTR MN POS',\r\n literal:\r\n 'ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET'\r\n },\r\n contains: [\r\n TPDATA,\r\n TPIO,\r\n {\r\n className: 'keyword',\r\n begin: '/(PROG|ATTR|MN|POS|END)\\\\b'\r\n },\r\n {\r\n /* this is for cases like ,CALL */\r\n className: 'keyword',\r\n begin: '(CALL|RUN|POINT_LOGIC|LBL)\\\\b'\r\n },\r\n {\r\n /* this is for cases like CNT100 where the default lexemes do not\r\n * separate the keyword and the number */\r\n className: 'keyword',\r\n begin: '\\\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)'\r\n },\r\n {\r\n /* to catch numbers that do not have a word boundary on the left */\r\n className: 'number',\r\n begin: '\\\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\\\b',\r\n relevance: 0\r\n },\r\n hljs.COMMENT('//', '[;$]'),\r\n hljs.COMMENT('!', '[;$]'),\r\n hljs.COMMENT('--eg:', '$'),\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'string',\r\n begin: '\\'', end: '\\''\r\n },\r\n hljs.C_NUMBER_MODE,\r\n {\r\n className: 'variable',\r\n begin: '\\\\$[A-Za-z0-9_]+'\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var PARAMS = {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)'\r\n };\r\n\r\n var FUNCTION_NAMES = 'attribute block constant cycle date dump include ' +\r\n 'max min parent random range source template_from_string';\r\n\r\n var FUNCTIONS = {\r\n beginKeywords: FUNCTION_NAMES,\r\n keywords: {name: FUNCTION_NAMES},\r\n relevance: 0,\r\n contains: [\r\n PARAMS\r\n ]\r\n };\r\n\r\n var FILTER = {\r\n begin: /\\|[A-Za-z_]+:?/,\r\n keywords:\r\n 'abs batch capitalize column convert_encoding date date_modify default ' +\r\n 'escape filter first format inky_to_html inline_css join json_encode keys last ' +\r\n 'length lower map markdown merge nl2br number_format raw reduce replace ' +\r\n 'reverse round slice sort spaceless split striptags title trim upper url_encode',\r\n contains: [\r\n FUNCTIONS\r\n ]\r\n };\r\n\r\n var TAGS = 'apply autoescape block deprecated do embed extends filter flush for from ' +\r\n 'if import include macro sandbox set use verbatim with';\r\n\r\n TAGS = TAGS + ' ' + TAGS.split(' ').map(function(t){return 'end' + t}).join(' ');\r\n\r\n return {\r\n aliases: ['craftcms'],\r\n case_insensitive: true,\r\n subLanguage: 'xml',\r\n contains: [\r\n hljs.COMMENT(/\\{#/, /#}/),\r\n {\r\n className: 'template-tag',\r\n begin: /\\{%/, end: /%}/,\r\n contains: [\r\n {\r\n className: 'name',\r\n begin: /\\w+/,\r\n keywords: TAGS,\r\n starts: {\r\n endsWithParent: true,\r\n contains: [FILTER, FUNCTIONS],\r\n relevance: 0\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n className: 'template-variable',\r\n begin: /\\{\\{/, end: /}}/,\r\n contains: ['self', FILTER, FUNCTIONS]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\r\n var KEYWORDS = {\r\n keyword:\r\n 'in if for while finally var new function do return void else break catch ' +\r\n 'instanceof with throw case default try this switch continue typeof delete ' +\r\n 'let yield const class public private protected get set super ' +\r\n 'static implements enum export import declare type namespace abstract ' +\r\n 'as from extends async await',\r\n literal:\r\n 'true false null undefined NaN Infinity',\r\n built_in:\r\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\r\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\r\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\r\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\r\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\r\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\r\n 'module console window document any number boolean string void Promise'\r\n };\r\n\r\n var DECORATOR = {\r\n className: 'meta',\r\n begin: '@' + JS_IDENT_RE,\r\n };\r\n\r\n var ARGS =\r\n {\r\n begin: '\\\\(',\r\n end: /\\)/,\r\n keywords: KEYWORDS,\r\n contains: [\r\n 'self',\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.APOS_STRING_MODE,\r\n hljs.NUMBER_MODE\r\n ]\r\n };\r\n\r\n var PARAMS = {\r\n className: 'params',\r\n begin: /\\(/, end: /\\)/,\r\n excludeBegin: true,\r\n excludeEnd: true,\r\n keywords: KEYWORDS,\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n DECORATOR,\r\n ARGS\r\n ]\r\n };\r\n var NUMBER = {\r\n className: 'number',\r\n variants: [\r\n { begin: '\\\\b(0[bB][01]+)n?' },\r\n { begin: '\\\\b(0[oO][0-7]+)n?' },\r\n { begin: hljs.C_NUMBER_RE + 'n?' }\r\n ],\r\n relevance: 0\r\n };\r\n var SUBST = {\r\n className: 'subst',\r\n begin: '\\\\$\\\\{', end: '\\\\}',\r\n keywords: KEYWORDS,\r\n contains: [] // defined later\r\n };\r\n var HTML_TEMPLATE = {\r\n begin: 'html`', end: '',\r\n starts: {\r\n end: '`', returnEnd: false,\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n SUBST\r\n ],\r\n subLanguage: 'xml',\r\n }\r\n };\r\n var CSS_TEMPLATE = {\r\n begin: 'css`', end: '',\r\n starts: {\r\n end: '`', returnEnd: false,\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n SUBST\r\n ],\r\n subLanguage: 'css',\r\n }\r\n };\r\n var TEMPLATE_STRING = {\r\n className: 'string',\r\n begin: '`', end: '`',\r\n contains: [\r\n hljs.BACKSLASH_ESCAPE,\r\n SUBST\r\n ]\r\n };\r\n SUBST.contains = [\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n HTML_TEMPLATE,\r\n CSS_TEMPLATE,\r\n TEMPLATE_STRING,\r\n NUMBER,\r\n hljs.REGEXP_MODE\r\n ];\r\n\r\n\r\n\r\n return {\r\n aliases: ['ts'],\r\n keywords: KEYWORDS,\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: /^\\s*['\"]use strict['\"]/\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n HTML_TEMPLATE,\r\n CSS_TEMPLATE,\r\n TEMPLATE_STRING,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n NUMBER,\r\n { // \"value\" container\r\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\r\n keywords: 'return throw case',\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.REGEXP_MODE,\r\n {\r\n className: 'function',\r\n begin: '(\\\\(.*?\\\\)|' + hljs.IDENT_RE + ')\\\\s*=>', returnBegin: true,\r\n end: '\\\\s*=>',\r\n contains: [\r\n {\r\n className: 'params',\r\n variants: [\r\n {\r\n begin: hljs.IDENT_RE\r\n },\r\n {\r\n begin: /\\(\\s*\\)/,\r\n },\r\n {\r\n begin: /\\(/, end: /\\)/,\r\n excludeBegin: true, excludeEnd: true,\r\n keywords: KEYWORDS,\r\n contains: [\r\n 'self',\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ],\r\n relevance: 0\r\n },\r\n {\r\n className: 'function',\r\n beginKeywords: 'function', end: /[\\{;]/, excludeEnd: true,\r\n keywords: KEYWORDS,\r\n contains: [\r\n 'self',\r\n hljs.inherit(hljs.TITLE_MODE, { begin: JS_IDENT_RE }),\r\n PARAMS\r\n ],\r\n illegal: /%/,\r\n relevance: 0 // () => {} is more typical in TypeScript\r\n },\r\n {\r\n beginKeywords: 'constructor', end: /[\\{;]/, excludeEnd: true,\r\n contains: [\r\n 'self',\r\n PARAMS\r\n ]\r\n },\r\n { // prevent references like module.id from being higlighted as module definitions\r\n begin: /module\\./,\r\n keywords: { built_in: 'module' },\r\n relevance: 0\r\n },\r\n {\r\n beginKeywords: 'module', end: /\\{/, excludeEnd: true\r\n },\r\n {\r\n beginKeywords: 'interface', end: /\\{/, excludeEnd: true,\r\n keywords: 'interface extends'\r\n },\r\n {\r\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\r\n },\r\n {\r\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\r\n },\r\n DECORATOR,\r\n ARGS\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n keywords: {\r\n keyword:\r\n // Value types\r\n 'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' +\r\n 'uint16 uint32 uint64 float double bool struct enum string void ' +\r\n // Reference types\r\n 'weak unowned owned ' +\r\n // Modifiers\r\n 'async signal static abstract interface override virtual delegate ' +\r\n // Control Structures\r\n 'if while do for foreach else switch case break default return try catch ' +\r\n // Visibility\r\n 'public private protected internal ' +\r\n // Other\r\n 'using new this get set const stdout stdin stderr var',\r\n built_in:\r\n 'DBus GLib CCode Gee Object Gtk Posix',\r\n literal:\r\n 'false true null'\r\n },\r\n contains: [\r\n {\r\n className: 'class',\r\n beginKeywords: 'class interface namespace', end: '{', excludeEnd: true,\r\n illegal: '[^,:\\\\n\\\\s\\\\.]',\r\n contains: [\r\n hljs.UNDERSCORE_TITLE_MODE\r\n ]\r\n },\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n {\r\n className: 'string',\r\n begin: '\"\"\"', end: '\"\"\"',\r\n relevance: 5\r\n },\r\n hljs.APOS_STRING_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n hljs.C_NUMBER_MODE,\r\n {\r\n className: 'meta',\r\n begin: '^#', end: '$',\r\n relevance: 2\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['vb'],\r\n case_insensitive: true,\r\n keywords: {\r\n keyword:\r\n 'addhandler addressof alias and andalso aggregate ansi as async assembly auto await binary by byref byval ' + /* a-b */\r\n 'call case catch class compare const continue custom declare default delegate dim distinct do ' + /* c-d */\r\n 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' + /* e-f */\r\n 'get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue iterator ' + /* g-i */\r\n 'join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass ' + /* j-m */\r\n 'nameof namespace narrowing new next not notinheritable notoverridable ' + /* n */\r\n 'of off on operator option optional or order orelse overloads overridable overrides ' + /* o */\r\n 'paramarray partial preserve private property protected public ' + /* p */\r\n 'raiseevent readonly redim rem removehandler resume return ' + /* r */\r\n 'select set shadows shared skip static step stop structure strict sub synclock ' + /* s */\r\n 'take text then throw to try unicode until using when where while widening with withevents writeonly xor yield', /* t-y */\r\n built_in:\r\n 'boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype ' + /* b-c */\r\n 'date decimal directcast double gettype getxmlnamespace iif integer long object ' + /* d-o */\r\n 'sbyte short single string trycast typeof uinteger ulong ushort', /* s-u */\r\n literal:\r\n 'true false nothing'\r\n },\r\n illegal: '//|{|}|endif|gosub|variant|wend|^\\\\$ ', /* reserved deprecated keywords */\r\n contains: [\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\r\n hljs.COMMENT(\r\n '\\'',\r\n '$',\r\n {\r\n returnBegin: true,\r\n contains: [\r\n {\r\n className: 'doctag',\r\n begin: '\\'\\'\\'|',\r\n contains: [hljs.PHRASAL_WORDS_MODE]\r\n },\r\n {\r\n className: 'doctag',\r\n begin: '',\r\n contains: [hljs.PHRASAL_WORDS_MODE]\r\n }\r\n ]\r\n }\r\n ),\r\n hljs.C_NUMBER_MODE,\r\n {\r\n className: 'meta',\r\n begin: '#', end: '$',\r\n keywords: {'meta-keyword': 'if else elseif end region externalsource'}\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n subLanguage: 'xml',\r\n contains: [\r\n {\r\n begin: '<%', end: '%>',\r\n subLanguage: 'vbscript'\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n aliases: ['vbs'],\r\n case_insensitive: true,\r\n keywords: {\r\n keyword:\r\n 'call class const dim do loop erase execute executeglobal exit for each next function ' +\r\n 'if then else on error option explicit new private property let get public randomize ' +\r\n 'redim rem select case set stop sub while wend with end to elseif is or xor and not ' +\r\n 'class_initialize class_terminate default preserve in me byval byref step resume goto',\r\n built_in:\r\n 'lcase month vartype instrrev ubound setlocale getobject rgb getref string ' +\r\n 'weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency ' +\r\n 'conversions csng timevalue second year space abs clng timeserial fixs len asc ' +\r\n 'isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate ' +\r\n 'instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex ' +\r\n 'chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim ' +\r\n 'strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion ' +\r\n 'scriptengine split scriptengineminorversion cint sin datepart ltrim sqr ' +\r\n 'scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw ' +\r\n 'chrw regexp server response request cstr err',\r\n literal:\r\n 'true false null nothing empty'\r\n },\r\n illegal: '//',\r\n contains: [\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\r\n hljs.COMMENT(\r\n /'/,\r\n /$/,\r\n {\r\n relevance: 0\r\n }\r\n ),\r\n hljs.C_NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var SV_KEYWORDS = {\r\n keyword:\r\n 'accept_on alias always always_comb always_ff always_latch and assert assign ' +\r\n 'assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 ' +\r\n 'byte case casex casez cell chandle checker class clocking cmos config const ' +\r\n 'constraint context continue cover covergroup coverpoint cross deassign default ' +\r\n 'defparam design disable dist do edge else end endcase endchecker endclass ' +\r\n 'endclocking endconfig endfunction endgenerate endgroup endinterface endmodule ' +\r\n 'endpackage endprimitive endprogram endproperty endspecify endsequence endtable ' +\r\n 'endtask enum event eventually expect export extends extern final first_match for ' +\r\n 'force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 ' +\r\n 'if iff ifnone ignore_bins illegal_bins implements implies import incdir include ' +\r\n 'initial inout input inside instance int integer interconnect interface intersect ' +\r\n 'join join_any join_none large let liblist library local localparam logic longint ' +\r\n 'macromodule matches medium modport module nand negedge nettype new nexttime nmos ' +\r\n 'nor noshowcancelled not notif0 notif1 or output package packed parameter pmos ' +\r\n 'posedge primitive priority program property protected pull0 pull1 pulldown pullup ' +\r\n 'pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos ' +\r\n 'real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran ' +\r\n 'rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared ' +\r\n 'sequence shortint shortreal showcancelled signed small soft solve specify specparam ' +\r\n 'static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on ' +\r\n 'sync_reject_on table tagged task this throughout time timeprecision timeunit tran ' +\r\n 'tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 ' +\r\n 'unsigned until until_with untyped use uwire var vectored virtual void wait wait_order ' +\r\n 'wand weak weak0 weak1 while wildcard wire with within wor xnor xor',\r\n literal:\r\n 'null',\r\n built_in:\r\n '$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale ' +\r\n '$bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat ' +\r\n '$realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson ' +\r\n '$assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff ' +\r\n '$assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk ' +\r\n '$fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control ' +\r\n '$coverage_get $coverage_save $set_coverage_db_name $rose $stable $past ' +\r\n '$rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display ' +\r\n '$coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename ' +\r\n '$unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow ' +\r\n '$floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning ' +\r\n '$dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh ' +\r\n '$tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random ' +\r\n '$dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson ' +\r\n '$dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array ' +\r\n '$async$nand$array $async$or$array $async$nor$array $sync$and$array ' +\r\n '$sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf ' +\r\n '$async$and$plane $async$nand$plane $async$or$plane $async$nor$plane ' +\r\n '$sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system ' +\r\n '$display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo ' +\r\n '$write $readmemb $readmemh $writememh $value$plusargs ' +\r\n '$dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit ' +\r\n '$writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb ' +\r\n '$dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall ' +\r\n '$dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo ' +\r\n '$fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh ' +\r\n '$swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb ' +\r\n '$fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat ' +\r\n '$sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror'\r\n };\r\n return {\r\n aliases: ['v', 'sv', 'svh'],\r\n case_insensitive: false,\r\n keywords: SV_KEYWORDS, lexemes: /[\\w\\$]+/,\r\n contains: [\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'number',\r\n contains: [hljs.BACKSLASH_ESCAPE],\r\n variants: [\r\n {begin: '\\\\b((\\\\d+\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\r\n {begin: '\\\\B((\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\r\n {begin: '\\\\b([0-9_])+', relevance: 0}\r\n ]\r\n },\r\n /* parameters to instances */\r\n {\r\n className: 'variable',\r\n variants: [\r\n {begin: '#\\\\((?!parameter).+\\\\)'},\r\n {begin: '\\\\.\\\\w+', relevance: 0},\r\n ]\r\n },\r\n {\r\n className: 'meta',\r\n begin: '`', end: '$',\r\n keywords: {'meta-keyword': 'define __FILE__ ' +\r\n '__LINE__ begin_keywords celldefine default_nettype define ' +\r\n 'else elsif end_keywords endcelldefine endif ifdef ifndef ' +\r\n 'include line nounconnected_drive pragma resetall timescale ' +\r\n 'unconnected_drive undef undefineall'},\r\n relevance: 0\r\n }\r\n ]\r\n }; // return\r\n};","module.exports = function(hljs) {\r\n // Regular expression for VHDL numeric literals.\r\n\r\n // Decimal literal:\r\n var INTEGER_RE = '\\\\d(_|\\\\d)*';\r\n var EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\r\n var DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\r\n // Based literal:\r\n var BASED_INTEGER_RE = '\\\\w+';\r\n var BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\r\n\r\n var NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\r\n\r\n return {\r\n case_insensitive: true,\r\n keywords: {\r\n keyword:\r\n 'abs access after alias all and architecture array assert assume assume_guarantee attribute ' +\r\n 'begin block body buffer bus case component configuration constant context cover disconnect ' +\r\n 'downto default else elsif end entity exit fairness file for force function generate ' +\r\n 'generic group guarded if impure in inertial inout is label library linkage literal ' +\r\n 'loop map mod nand new next nor not null of on open or others out package parameter port ' +\r\n 'postponed procedure process property protected pure range record register reject ' +\r\n 'release rem report restrict restrict_guarantee return rol ror select sequence ' +\r\n 'severity shared signal sla sll sra srl strong subtype then to transport type ' +\r\n 'unaffected units until use variable view vmode vprop vunit wait when while with xnor xor',\r\n built_in:\r\n 'boolean bit character ' +\r\n 'integer time delay_length natural positive ' +\r\n 'string bit_vector file_open_kind file_open_status ' +\r\n 'std_logic std_logic_vector unsigned signed boolean_vector integer_vector ' +\r\n 'std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed ' +\r\n 'real_vector time_vector',\r\n literal:\r\n 'false true note warning error failure ' + // severity_level\r\n 'line text side width' // textio\r\n },\r\n illegal: '{',\r\n contains: [\r\n hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting.\r\n hljs.COMMENT('--', '$'),\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'number',\r\n begin: NUMBER_RE,\r\n relevance: 0\r\n },\r\n {\r\n className: 'string',\r\n begin: '\\'(U|X|0|1|Z|W|L|H|-)\\'',\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n },\r\n {\r\n className: 'symbol',\r\n begin: '\\'[A-Za-z](_?[A-Za-z0-9])*',\r\n contains: [hljs.BACKSLASH_ESCAPE]\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n lexemes: /[!#@\\w]+/,\r\n keywords: {\r\n keyword:\r\n // express version except: ! & * < = > !! # @ @@\r\n 'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope '+\r\n 'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc '+\r\n 'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 '+\r\n 'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor '+\r\n 'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew '+\r\n 'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ '+\r\n // full version\r\n 'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload '+\r\n 'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap '+\r\n 'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor '+\r\n 'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap '+\r\n 'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview '+\r\n 'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap '+\r\n 'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext '+\r\n 'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding '+\r\n 'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace '+\r\n 'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious '+'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew '+\r\n 'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank',\r\n built_in: //built in func\r\n 'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv ' +\r\n 'complete_check add getwinposx getqflist getwinposy screencol ' +\r\n 'clearmatches empty extend getcmdpos mzeval garbagecollect setreg ' +\r\n 'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable ' +\r\n 'shiftwidth max sinh isdirectory synID system inputrestore winline ' +\r\n 'atan visualmode inputlist tabpagewinnr round getregtype mapcheck ' +\r\n 'hasmapto histdel argidx findfile sha256 exists toupper getcmdline ' +\r\n 'taglist string getmatches bufnr strftime winwidth bufexists ' +\r\n 'strtrans tabpagebuflist setcmdpos remote_read printf setloclist ' +\r\n 'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval ' +\r\n 'resolve libcallnr foldclosedend reverse filter has_key bufname ' +\r\n 'str2float strlen setline getcharmod setbufvar index searchpos ' +\r\n 'shellescape undofile foldclosed setqflist buflisted strchars str2nr ' +\r\n 'virtcol floor remove undotree remote_expr winheight gettabwinvar ' +\r\n 'reltime cursor tabpagenr finddir localtime acos getloclist search ' +\r\n 'tanh matchend rename gettabvar strdisplaywidth type abs py3eval ' +\r\n 'setwinvar tolower wildmenumode log10 spellsuggest bufloaded ' +\r\n 'synconcealed nextnonblank server2client complete settabwinvar ' +\r\n 'executable input wincol setmatches getftype hlID inputsave ' +\r\n 'searchpair or screenrow line settabvar histadd deepcopy strpart ' +\r\n 'remote_peek and eval getftime submatch screenchar winsaveview ' +\r\n 'matchadd mkdir screenattr getfontname libcall reltimestr getfsize ' +\r\n 'winnr invert pow getbufline byte2line soundfold repeat fnameescape ' +\r\n 'tagfiles sin strwidth spellbadword trunc maparg log lispindent ' +\r\n 'hostname setpos globpath remote_foreground getchar synIDattr ' +\r\n 'fnamemodify cscope_connection stridx winbufnr indent min ' +\r\n 'complete_add nr2char searchpairpos inputdialog values matchlist ' +\r\n 'items hlexists strridx browsedir expand fmod pathshorten line2byte ' +\r\n 'argc count getwinvar glob foldtextresult getreg foreground cosh ' +\r\n 'matchdelete has char2nr simplify histget searchdecl iconv ' +\r\n 'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos ' +\r\n 'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar ' +\r\n 'islocked escape eventhandler remote_send serverlist winrestview ' +\r\n 'synstack pyeval prevnonblank readfile cindent filereadable changenr ' +\r\n 'exp'\r\n },\r\n illegal: /;/,\r\n contains: [\r\n hljs.NUMBER_MODE,\r\n {\r\n className: 'string',\r\n begin: '\\'', end: '\\'',\r\n illegal: '\\\\n'\r\n },\r\n\r\n /*\r\n A double quote can start either a string or a line comment. Strings are\r\n ended before the end of a line by another double quote and can contain\r\n escaped double-quotes and post-escaped line breaks.\r\n\r\n Also, any double quote at the beginning of a line is a comment but we\r\n don't handle that properly at the moment: any double quote inside will\r\n turn them into a string. Handling it properly will require a smarter\r\n parser.\r\n */\r\n {\r\n className: 'string',\r\n begin: /\"(\\\\\"|\\n\\\\|[^\"\\n])*\"/\r\n },\r\n hljs.COMMENT('\"', '$'),\r\n\r\n {\r\n className: 'variable',\r\n begin: /[bwtglsav]:[\\w\\d_]*/\r\n },\r\n {\r\n className: 'function',\r\n beginKeywords: 'function function!', end: '$',\r\n relevance: 0,\r\n contains: [\r\n hljs.TITLE_MODE,\r\n {\r\n className: 'params',\r\n begin: '\\\\(', end: '\\\\)'\r\n }\r\n ]\r\n },\r\n {\r\n className: 'symbol',\r\n begin: /<[\\w-]+>/\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n return {\r\n case_insensitive: true,\r\n lexemes: '[.%]?' + hljs.IDENT_RE,\r\n keywords: {\r\n keyword:\r\n 'lock rep repe repz repne repnz xaquire xrelease bnd nobnd ' +\r\n 'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63',\r\n built_in:\r\n // Instruction pointer\r\n 'ip eip rip ' +\r\n // 8-bit registers\r\n 'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ' +\r\n // 16-bit registers\r\n 'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w ' +\r\n // 32-bit registers\r\n 'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d ' +\r\n // 64-bit registers\r\n 'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 ' +\r\n // Segment registers\r\n 'cs ds es fs gs ss ' +\r\n // Floating point stack registers\r\n 'st st0 st1 st2 st3 st4 st5 st6 st7 ' +\r\n // MMX Registers\r\n 'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 ' +\r\n // SSE registers\r\n 'xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 ' +\r\n 'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ' +\r\n // AVX registers\r\n 'ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ' +\r\n 'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 ' +\r\n // AVX-512F registers\r\n 'zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 ' +\r\n 'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 ' +\r\n // AVX-512F mask registers\r\n 'k0 k1 k2 k3 k4 k5 k6 k7 ' +\r\n // Bound (MPX) register\r\n 'bnd0 bnd1 bnd2 bnd3 ' +\r\n // Special register\r\n 'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 ' +\r\n // NASM altreg package\r\n 'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b ' +\r\n 'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d ' +\r\n 'r0h r1h r2h r3h ' +\r\n 'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l ' +\r\n\r\n 'db dw dd dq dt ddq do dy dz ' +\r\n 'resb resw resd resq rest resdq reso resy resz ' +\r\n 'incbin equ times ' +\r\n 'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr',\r\n\r\n meta:\r\n '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif ' +\r\n '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep ' +\r\n '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment ' +\r\n '.nolist ' +\r\n '__FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ ' +\r\n '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend ' +\r\n 'align alignb sectalign daz nodaz up down zero default option assume public ' +\r\n\r\n 'bits use16 use32 use64 default section segment absolute extern global common cpu float ' +\r\n '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ ' +\r\n '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ ' +\r\n '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e ' +\r\n 'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__'\r\n },\r\n contains: [\r\n hljs.COMMENT(\r\n ';',\r\n '$',\r\n {\r\n relevance: 0\r\n }\r\n ),\r\n {\r\n className: 'number',\r\n variants: [\r\n // Float number and x87 BCD\r\n {\r\n begin: '\\\\b(?:([0-9][0-9_]*)?\\\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|' +\r\n '(0[Xx])?[0-9][0-9_]*\\\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\\\b',\r\n relevance: 0\r\n },\r\n\r\n // Hex number in $\r\n { begin: '\\\\$[0-9][0-9A-Fa-f]*', relevance: 0 },\r\n\r\n // Number in H,D,T,Q,O,B,Y suffix\r\n { begin: '\\\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\\\b' },\r\n\r\n // Number in X,D,T,Q,O,B,Y prefix\r\n { begin: '\\\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\\\b'}\r\n ]\r\n },\r\n // Double quote string\r\n hljs.QUOTE_STRING_MODE,\r\n {\r\n className: 'string',\r\n variants: [\r\n // Single-quoted string\r\n { begin: '\\'', end: '[^\\\\\\\\]\\'' },\r\n // Backquoted string\r\n { begin: '`', end: '[^\\\\\\\\]`' }\r\n ],\r\n relevance: 0\r\n },\r\n {\r\n className: 'symbol',\r\n variants: [\r\n // Global label and local label\r\n { begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)' },\r\n // Macro-local label\r\n { begin: '^\\\\s*%%[A-Za-z0-9_$#@~.?]*:' }\r\n ],\r\n relevance: 0\r\n },\r\n // Macro parameter\r\n {\r\n className: 'subst',\r\n begin: '%[0-9]+',\r\n relevance: 0\r\n },\r\n // Macro parameter\r\n {\r\n className: 'subst',\r\n begin: '%!\\S+',\r\n relevance: 0\r\n },\r\n {\r\n className: 'meta',\r\n begin: /^\\s*\\.[\\w_-]+/\r\n }\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var BUILTIN_MODULES =\r\n 'ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo ' +\r\n 'StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts';\r\n\r\n var XL_KEYWORDS = {\r\n keyword:\r\n 'if then else do while until for loop import with is as where when by data constant ' +\r\n 'integer real text name boolean symbol infix prefix postfix block tree',\r\n literal:\r\n 'true false nil',\r\n built_in:\r\n 'in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin ' +\r\n 'acos atan exp expm1 log log2 log10 log1p pi at text_length text_range ' +\r\n 'text_find text_replace contains page slide basic_slide title_slide ' +\r\n 'title subtitle fade_in fade_out fade_at clear_color color line_color ' +\r\n 'line_width texture_wrap texture_transform texture scale_?x scale_?y ' +\r\n 'scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y ' +\r\n 'rotate_?z? rectangle circle ellipse sphere path line_to move_to ' +\r\n 'quad_to curve_to theme background contents locally time mouse_?x ' +\r\n 'mouse_?y mouse_buttons ' +\r\n BUILTIN_MODULES\r\n };\r\n\r\n var DOUBLE_QUOTE_TEXT = {\r\n className: 'string',\r\n begin: '\"', end: '\"', illegal: '\\\\n'\r\n };\r\n var SINGLE_QUOTE_TEXT = {\r\n className: 'string',\r\n begin: '\\'', end: '\\'', illegal: '\\\\n'\r\n };\r\n var LONG_TEXT = {\r\n className: 'string',\r\n begin: '<<', end: '>>'\r\n };\r\n var BASED_NUMBER = {\r\n className: 'number',\r\n begin: '[0-9]+#[0-9A-Z_]+(\\\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?'\r\n };\r\n var IMPORT = {\r\n beginKeywords: 'import', end: '$',\r\n keywords: XL_KEYWORDS,\r\n contains: [DOUBLE_QUOTE_TEXT]\r\n };\r\n var FUNCTION_DEFINITION = {\r\n className: 'function',\r\n begin: /[a-z][^\\n]*->/, returnBegin: true, end: /->/,\r\n contains: [\r\n hljs.inherit(hljs.TITLE_MODE, {starts: {\r\n endsWithParent: true,\r\n keywords: XL_KEYWORDS\r\n }})\r\n ]\r\n };\r\n return {\r\n aliases: ['tao'],\r\n lexemes: /[a-zA-Z][a-zA-Z0-9_?]*/,\r\n keywords: XL_KEYWORDS,\r\n contains: [\r\n hljs.C_LINE_COMMENT_MODE,\r\n hljs.C_BLOCK_COMMENT_MODE,\r\n DOUBLE_QUOTE_TEXT,\r\n SINGLE_QUOTE_TEXT,\r\n LONG_TEXT,\r\n FUNCTION_DEFINITION,\r\n IMPORT,\r\n BASED_NUMBER,\r\n hljs.NUMBER_MODE\r\n ]\r\n };\r\n};","module.exports = function(hljs) {\r\n var XML_IDENT_RE = '[A-Za-z0-9\\\\._:-]+';\r\n var XML_ENTITIES = {\r\n className: 'symbol',\r\n begin: '&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;'\r\n };\r\n var XML_META_KEYWORDS = {\r\n\t begin: '\\\\s',\r\n\t contains:[\r\n\t {\r\n\t className: 'meta-keyword',\r\n\t begin: '#?[a-z_][a-z1-9_-]+',\r\n\t illegal: '\\\\n',\r\n }\r\n\t ]\r\n };\r\n var XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {begin: '\\\\(', end: '\\\\)'});\r\n var APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, {className: 'meta-string'});\r\n var QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'});\r\n var TAG_INTERNALS = {\r\n endsWithParent: true,\r\n illegal: /`]+/}\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n return {\r\n aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist', 'wsf', 'svg'],\r\n case_insensitive: true,\r\n contains: [\r\n {\r\n className: 'meta',\r\n begin: '',\r\n relevance: 10,\r\n contains: [\r\n\t\t\t\t XML_META_KEYWORDS,\r\n\t\t\t\t QUOTE_META_STRING_MODE,\r\n\t\t\t\t APOS_META_STRING_MODE,\r\n\t\t\t\t\tXML_META_PAR_KEYWORDS,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t begin: '\\\\[', end: '\\\\]',\r\n\t\t\t\t\t contains:[\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t className: 'meta',\r\n\t\t\t\t\t begin: '',\r\n\t\t\t\t\t contains: [\r\n\t\t\t\t\t XML_META_KEYWORDS,\r\n\t\t\t\t\t XML_META_PAR_KEYWORDS,\r\n\t\t\t\t\t QUOTE_META_STRING_MODE,\r\n\t\t\t\t\t APOS_META_STRING_MODE\r\n\t\t\t\t\t\t ]\r\n\t\t\t }\r\n\t\t\t\t\t ]\r\n\t\t\t\t }\r\n\t\t\t\t]\r\n },\r\n hljs.COMMENT(\r\n '',\r\n {\r\n relevance: 10\r\n }\r\n ),\r\n {\r\n begin: '<\\\\!\\\\[CDATA\\\\[', end: '\\\\]\\\\]>',\r\n relevance: 10\r\n },\r\n XML_ENTITIES,\r\n {\r\n className: 'meta',\r\n begin: /<\\?xml/, end: /\\?>/, relevance: 10\r\n },\r\n {\r\n begin: /<\\?(php)?/, end: /\\?>/,\r\n subLanguage: 'php',\r\n contains: [\r\n // We don't want the php closing tag ?> to close the PHP block when\r\n // inside any of the following blocks:\r\n {begin: '/\\\\*', end: '\\\\*/', skip: true},\r\n {begin: 'b\"', end: '\"', skip: true},\r\n {begin: 'b\\'', end: '\\'', skip: true},\r\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null, className: null, contains: null, skip: true}),\r\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null, className: null, contains: null, skip: true})\r\n ]\r\n },\r\n {\r\n className: 'tag',\r\n /*\r\n The lookahead pattern (?=...) ensures that 'begin' only matches\r\n ')', end: '>',\r\n keywords: {name: 'style'},\r\n contains: [TAG_INTERNALS],\r\n starts: {\r\n end: '', returnEnd: true,\r\n subLanguage: ['css', 'xml']\r\n }\r\n },\r\n {\r\n className: 'tag',\r\n // See the comment in the ', returnEnd: true, + subLanguage: ['css', 'xml'] + } + }, + { + className: 'tag', + // See the comment in the ', returnEnd: true,\n subLanguage: ['css', 'xml']\n }\n },\n {\n className: 'tag',\n // See the comment in the